/* Rêve Blanc Atelier — composants front (s'appuie sur les tokens du thème, avec replis). */
.rb-app, .rb-pform, .rb-toast {
	--rb-ink: var(--ink, #0a0a0a);
	--rb-paper: var(--paper, #fff);
	--rb-ivory: var(--ivory, #f5f3ef);
	--rb-mute: var(--mute, #77736d);
	--rb-line: var(--line, rgba(10, 10, 10, .14));
	--rb-err: var(--err, #9b1c1c);
	--rb-ok: var(--ok, #1f6f43);
	--rb-serif: var(--serif, Georgia, serif);
	--rb-ease: var(--ease, cubic-bezier(.77, 0, .175, 1));
}
.rb-app { padding-bottom: 6vh; }
.rb-app *, .rb-pform * { box-sizing: border-box; }
.rb-app [hidden], .rb-pform [hidden] { display: none !important; }
.rb-app a { text-decoration: none; }
.rb-app [tabindex="-1"]:focus { outline: none; }
.rb-eyebrow { margin: 0 0 10px; font-size: 11px; letter-spacing: .3em; text-transform: uppercase; color: var(--rb-mute); }
.rb-h2 { font-family: var(--rb-serif); font-weight: 400; font-size: clamp(30px, 3.4vw, 52px); line-height: 1.05; margin: 0 0 32px; outline: none; }
.rb-h3 { font-size: 11px; letter-spacing: .26em; text-transform: uppercase; font-weight: 400; margin: 0 0 16px; }
.rb-lead { font-size: 17px; color: var(--rb-mute); max-width: 56ch; }
.rb-note { padding: 14px 18px; border: 1px solid var(--rb-line); background: var(--rb-ivory); font-size: 14px; }
.rb-warn { color: var(--rb-err); font-size: 13px; margin: 6px 0 0; }
.rb-msg { min-height: 1.4em; margin: 12px 0; font-size: 14px; }
.rb-msg.is-error { color: var(--rb-err); }
.rb-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; }
.rb-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }

/* Champs */
.rb-field { margin: 0 0 22px; display: flex; flex-direction: column; gap: 6px; }
.rb-field > label, .rb-label { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--rb-mute); }
.rb-field.is-invalid input, .rb-field.is-invalid select { border-bottom-color: var(--rb-err); }
.rb-inline { flex-direction: row; align-items: center; justify-content: space-between; }
.rb-inline select { width: auto; min-width: 80px; }
.rb-grid { display: grid; grid-template-columns: 1fr 1fr; column-gap: 28px; }
.rb-span-2 { grid-column: 1 / -1; }
.rb-check { display: flex; gap: 12px; align-items: flex-start; font-size: 14px; text-transform: none; letter-spacing: 0; cursor: pointer; margin: 8px 0 20px; }
.rb-check input { width: 18px; height: 18px; accent-color: var(--rb-ink); margin-top: 2px; flex-shrink: 0; }
.rb-check.is-invalid { color: var(--rb-err); }
.rb-check a { text-decoration: underline; text-underline-offset: 3px; }

/* Boutons en chargement */
.btn.is-loading { position: relative; color: transparent !important; pointer-events: none; }
.btn.is-loading::after { content: ""; position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 1px solid currentColor; border-color: var(--rb-paper, #fff) transparent var(--rb-paper, #fff) transparent; border-radius: 50%; animation: rb-spin .8s linear infinite; }
.btn--ghost.is-loading::after { border-color: var(--rb-ink) transparent var(--rb-ink) transparent; }
@keyframes rb-spin { to { transform: rotate(360deg); } }
.rb-spinner { display: inline-block; width: 28px; height: 28px; border: 1px solid var(--rb-ink); border-right-color: transparent; border-radius: 50%; animation: rb-spin .9s linear infinite; }

/* ---------------------------------------------------------------- Produit */
.rb-pform { margin-top: 8px; }
.rb-tabs { position: relative; display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--rb-ink); margin-bottom: 28px; isolation: isolate; }
.rb-tabs button { padding: 14px; font-size: 11px; letter-spacing: .26em; text-transform: uppercase; transition: color .5s var(--rb-ease); }
.rb-tabs button[aria-selected="true"] { color: var(--rb-paper); }
.rb-tabs__ink { position: absolute; inset: 0 auto 0 0; width: 50%; background: var(--rb-ink); z-index: -1; transition: transform .6s var(--rb-ease); }
.rb-pform[data-mode="rental"] .rb-tabs__ink { transform: translateX(100%); }
.rb-price { margin: 0 0 6px; font-family: var(--rb-serif); font-size: 40px; font-weight: 400; line-height: 1; }
.rb-price small { font-family: inherit; font-size: 16px; color: var(--rb-mute); font-style: italic; }
.rb-meta { margin: 0 0 22px; font-size: 13px; color: var(--rb-mute); }
.rb-paylater { min-height: 20px; margin: 8px 0 18px; }
.rb-window { margin: 12px 0 0; font-size: 14px; min-height: 2.8em; }
.rb-window strong { font-weight: 400; text-transform: capitalize; }
.rb-sizes { border: 0; padding: 0; }
.rb-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.rb-chip { position: relative; cursor: pointer; }
.rb-chip input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.rb-chip span { display: grid; place-items: center; min-width: 52px; height: 44px; padding: 0 12px; border: 1px solid var(--rb-line); font-size: 13px; transition: background .3s, color .3s, border-color .3s; }
.rb-chip:hover span { border-color: var(--rb-ink); }
.rb-chip input:checked + span { background: var(--rb-ink); color: var(--rb-paper); border-color: var(--rb-ink); }
.rb-chip input:focus-visible + span { outline: 1px solid var(--rb-ink); outline-offset: 3px; }
.rb-submit { margin-top: 6px; }
.rb-alt { display: inline-block; margin-top: 18px; font-size: 13px; }

/* ------------------------------------------------------------- Calendrier */
.rb-cal { border: 1px solid var(--rb-line); padding: 16px; background: var(--rb-paper); user-select: none; }
.rb-cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.rb-cal__title { margin: 0; font-family: var(--rb-serif); font-size: 22px; text-transform: capitalize; }
.rb-cal__nav { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid transparent; border-radius: 50%; transition: border-color .3s; }
.rb-cal__nav:hover:not(:disabled) { border-color: var(--rb-ink); }
.rb-cal__nav:disabled { opacity: .2; cursor: default; }
.rb-cal__dows, .rb-cal__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.rb-cal__dows span { text-align: center; font-size: 10px; letter-spacing: .2em; color: var(--rb-mute); padding: 6px 0; }
.rb-cal__grid { transition: opacity .25s; }
.rb-cal__grid.is-loading { opacity: .35; }
.rb-cal__grid.is-next { animation: rb-cal-next .5s var(--rb-ease); }
.rb-cal__grid.is-prev { animation: rb-cal-prev .5s var(--rb-ease); }
@keyframes rb-cal-next { from { opacity: 0; transform: translateX(18px); } }
@keyframes rb-cal-prev { from { opacity: 0; transform: translateX(-18px); } }
.rb-cal__day { position: relative; aspect-ratio: 1; display: grid; place-items: center; font-size: 14px; border: 1px solid transparent; transition: background .25s, color .25s, border-color .25s; }
.rb-cal__day.is-ok:hover { border-color: var(--rb-ink); }
.rb-cal__day.is-off { color: rgba(10, 10, 10, .22); cursor: default; }
.rb-cal__day.is-booked { color: rgba(10, 10, 10, .32); cursor: not-allowed; text-decoration: line-through; }
.rb-cal__day.is-today::after { content: ""; position: absolute; bottom: 6px; width: 4px; height: 4px; border-radius: 50%; background: currentColor; }
.rb-cal__day.is-selected { background: var(--rb-ink); color: var(--rb-paper); }
.rb-cal--lg .rb-cal__day { font-size: 16px; }
.rb-cal__legend { display: flex; gap: 20px; margin: 12px 0 0; font-size: 11px; letter-spacing: .12em; color: var(--rb-mute); }
.rb-cal__legend span::before { content: ""; display: inline-block; width: 10px; height: 10px; margin-right: 8px; border: 1px solid var(--rb-ink); vertical-align: -1px; }
.rb-cal__legend .booked::before { border-color: var(--rb-line); background: linear-gradient(135deg, transparent 45%, var(--rb-mute) 46%, var(--rb-mute) 54%, transparent 55%); }

/* ---------------------------------------------------------------- Toast */
.rb-toast { position: fixed; left: 50%; bottom: 28px; z-index: 500; display: flex; align-items: center; gap: 20px; padding: 16px 22px; background: var(--rb-ink); color: var(--rb-paper); font-size: 14px; transform: translate(-50%, 140%); transition: transform .7s var(--rb-ease); max-width: calc(100vw - 32px); }
.rb-toast.is-visible { transform: translate(-50%, 0); }
.rb-toast a { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; border-bottom: 1px solid currentColor; white-space: nowrap; }
[data-cart-count].is-bump { animation: rb-bump .6s var(--rb-ease, ease); }
@keyframes rb-bump { 40% { transform: scale(1.5); } }

/* ---------------------------------------------------------------- Panier */
.rb-cart, .rb-checkout { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 5vw; align-items: start; }
.rb-line { display: grid; grid-template-columns: 96px 1fr auto auto 32px; gap: 24px; align-items: center; padding: 24px 0; border-top: 1px solid var(--rb-line); transition: opacity .35s, transform .35s; }
.rb-line:last-child { border-bottom: 1px solid var(--rb-line); }
.rb-line.is-removing { opacity: 0; transform: translateX(-20px); }
.rb-line.is-invalid { opacity: .6; }
.rb-line__img { display: block; width: 96px; aspect-ratio: 3 / 4; background: #fff; overflow: hidden; }
.rb-line__img img { width: 100%; height: 100%; object-fit: cover; }
.rb-line__title { margin: 0 0 6px; font-family: var(--rb-serif); font-size: 26px; font-weight: 400; line-height: 1.1; }
.rb-line__meta { margin: 0; font-size: 13px; color: var(--rb-mute); }
.rb-line__qty select { width: 64px; }
.rb-line__price { margin: 0; font-size: 16px; white-space: nowrap; }
.rb-line__remove { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; transition: background .3s, color .3s; }
.rb-line__remove:hover { background: var(--rb-ink); color: var(--rb-paper); }
.rb-summary { padding: 32px; background: var(--rb-ivory); }
.rb-summary--sticky { position: sticky; top: calc(var(--header-h, 84px) + 24px); }
.rb-summary__title { margin: 0 0 24px; font-family: var(--rb-serif); font-size: 30px; font-weight: 400; }
.rb-totals { margin: 0 0 20px; }
.rb-totals > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--rb-line); font-size: 14px; }
.rb-totals dt, .rb-totals dd { margin: 0; }
.rb-totals__muted { color: var(--rb-mute); font-size: 13px !important; }
.rb-totals__grand { font-size: 18px !important; border-bottom: 0 !important; padding-top: 16px !important; }
.rb-totals__grand dd { font-family: var(--rb-serif); font-size: 28px; line-height: 1; }
.rb-reassure { list-style: none; margin: 24px 0 0; padding: 0; font-size: 12px; color: var(--rb-mute); }
.rb-reassure li { padding: 6px 0 6px 20px; position: relative; }
.rb-reassure li::before { content: "✦"; position: absolute; left: 0; font-size: 9px; top: 9px; }
.rb-empty { padding: 4vh 0 10vh; }
.rb-empty__title { font-family: var(--rb-serif); font-size: clamp(32px, 4vw, 56px); margin: 0 0 12px; }

/* ------------------------------------------------------------- Paiement */
.rb-fs { border: 0; padding: 0 0 40px; margin: 0 0 40px; border-bottom: 1px solid var(--rb-line); min-width: 0; }
.rb-fs:last-child { border-bottom: 0; }
.rb-fs__legend { display: flex; align-items: baseline; gap: 14px; padding: 0; margin-bottom: 28px; font-family: var(--rb-serif); font-size: 32px; font-weight: 400; }
.rb-fs__legend span { font-family: var(--sans, sans-serif); font-size: 11px; letter-spacing: .24em; color: var(--rb-mute); }
.rb-options { display: grid; gap: 10px; margin-bottom: 24px; }
.rb-option { display: grid; grid-template-columns: 20px 1fr auto; gap: 14px; align-items: center; padding: 18px 20px; border: 1px solid var(--rb-line); cursor: pointer; text-transform: none; letter-spacing: 0; font-size: 15px; transition: border-color .3s; }
.rb-option:has(input:checked) { border-color: var(--rb-ink); }
.rb-option input { accent-color: var(--rb-ink); width: 18px; height: 18px; }
.rb-option strong { display: block; font-weight: 400; }
.rb-option small { color: var(--rb-mute); font-size: 13px; }
.rb-option em { font-style: normal; font-size: 13px; }
.rb-pay__title { font-size: 11px; letter-spacing: .26em; text-transform: uppercase; color: var(--rb-mute); margin: 12px 0 14px; }
.rb-express { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.rb-express__slot { min-height: 48px; }
.rb-express__slot--4x .rb-paylater { margin: 6px 0 0; }
.rb-express__slot gpay-button, .rb-express__slot .gpay-card-info-container-fill { width: 100%; }
.rb-applepay { display: block; width: 100%; height: 48px; -webkit-appearance: -apple-pay-button; -apple-pay-button-type: pay; -apple-pay-button-style: black; cursor: pointer; border-radius: 4px; }
.rb-divider { display: flex; align-items: center; gap: 16px; margin: 28px 0 18px; font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--rb-mute); }
.rb-divider::before, .rb-divider::after { content: ""; flex: 1; height: 1px; background: var(--rb-line); }
.rb-card__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; margin-bottom: 8px; }
.rb-card__field { min-height: 64px; }
.rb-embed { margin-top: 8px; }
.rb-embed__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding-bottom: 12px; margin-bottom: 14px; border-bottom: 1px solid var(--rb-line, rgba(0,0,0,.12)); }
.rb-embed__title { margin: 0; font-family: var(--serif, Georgia, serif); font-size: 20px; }
.rb-embed__title small { font-family: var(--sans, sans-serif); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--rb-mute); margin-left: 8px; }
.rb-embed__frame { min-height: 420px; border-radius: 12px; overflow: hidden; background: #fff; }
.rb-checkout.is-paying .rb-checkout__form > .rb-fs:not(:last-of-type) { opacity: .45; pointer-events: none; filter: grayscale(1); transition: opacity .4s; }
.rb-secure { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 12px; color: var(--rb-mute); margin: 14px 0 0; }
.rb-mini { list-style: none; margin: 0 0 20px; padding: 0; }
.rb-mini li { display: grid; grid-template-columns: 56px 1fr auto; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--rb-line); }
.rb-mini img { width: 56px; height: 74px; object-fit: cover; background: var(--rb-paper); }
.rb-mini strong { display: block; font-weight: 400; font-size: 15px; }
.rb-mini small { color: var(--rb-mute); font-size: 12px; }
.rb-mini em { font-style: normal; font-size: 14px; white-space: nowrap; }
.rb-back { font-size: 13px; }
.rb-processing { position: fixed; inset: 0; z-index: 600; display: grid; place-items: center; background: rgba(255, 255, 255, .88); backdrop-filter: blur(6px); }
.rb-processing[hidden] { display: none; }
.rb-processing__box { text-align: center; }
.rb-processing__box p { margin: 18px 0 0; font-family: var(--rb-serif); font-size: 24px; }

/* ------------------------------------------------------------------ Suivi */
.rb-track__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; padding-bottom: 28px; border-bottom: 1px solid var(--rb-line); margin-bottom: 56px; }
.rb-track__number { margin: 0; font-family: var(--rb-serif); font-weight: 400; font-size: clamp(40px, 5vw, 72px); line-height: 1; letter-spacing: .02em; }
.rb-track__date { margin: 0; color: var(--rb-mute); }
.rb-banner { padding: 16px 20px; margin: 0 0 40px; border: 1px solid var(--rb-ink); }
.rb-banner--cancelled { border-color: var(--rb-err); color: var(--rb-err); }

.rb-timeline { --n: 4; position: relative; list-style: none; margin: 0 0 72px; padding: 0; display: grid; grid-template-columns: repeat(var(--n), 1fr); }
.rb-timeline::before, .rb-timeline::after { content: ""; position: absolute; top: 19px; left: calc(100% / var(--n) / 2); right: calc(100% / var(--n) / 2); height: 1px; background: var(--rb-line); }
.rb-timeline::after { background: var(--rb-ink); transform-origin: left; transform: scaleX(var(--progress, 0)); animation: rb-progress 1.6s var(--rb-ease) both .3s; }
@keyframes rb-progress { from { transform: scaleX(0); } }
.rb-timeline__step { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 0 10px; animation: rb-rise .9s var(--rb-ease) both; animation-delay: calc(var(--i) * 120ms + .2s); }
@keyframes rb-rise { from { opacity: 0; transform: translateY(16px); } }
.rb-timeline__dot { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--rb-line); background: var(--rb-paper); font-size: 13px; color: var(--rb-mute); margin-bottom: 18px; transition: all .4s; }
.is-done .rb-timeline__dot { background: var(--rb-ink); border-color: var(--rb-ink); color: var(--rb-paper); }
.is-current .rb-timeline__dot { border-color: var(--rb-ink); color: var(--rb-ink); box-shadow: 0 0 0 6px var(--rb-paper), 0 0 0 7px var(--rb-ink); animation: rb-pulse 2.4s ease-in-out infinite; }
@keyframes rb-pulse { 50% { box-shadow: 0 0 0 10px var(--rb-paper), 0 0 0 11px rgba(10, 10, 10, .25); } }
.rb-timeline__label { font-family: var(--rb-serif); font-size: 24px; line-height: 1.1; }
.is-todo .rb-timeline__label { color: var(--rb-mute); }
.rb-timeline__desc { font-size: 13px; color: var(--rb-mute); margin-top: 6px; max-width: 22ch; }
.rb-timeline__date { margin-top: 10px; font-size: 11px; letter-spacing: .16em; text-transform: uppercase; }
.rb-track__grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 32px; }
.rb-card-box { padding: 32px; border: 1px solid var(--rb-line); }
.rb-dl { margin: 0 0 24px; }
.rb-dl > div { display: flex; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid var(--rb-line); font-size: 14px; }
.rb-dl dt { color: var(--rb-mute); }
.rb-dl dd { margin: 0; text-align: right; }
.rb-notes { list-style: none; margin: 0; padding: 0; }
.rb-notes li { padding: 12px 0; border-bottom: 1px solid var(--rb-line); }
.rb-notes time { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--rb-mute); }
.rb-notes p { margin: 4px 0 0; font-size: 14px; }
.rb-track__help { margin-top: 40px; font-size: 14px; color: var(--rb-mute); }
.rb-track__intro { max-width: 640px; }
.rb-track__form { margin-top: 32px; }

/* ------------------------------------------------------------ Rendez-vous */
.rb-appt { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 5vw; align-items: start; }
/* Récapitulatif : lecture seule, clair (pas un bloc noir qui ressemble à un formulaire). */
.rb-appt__aside { position: sticky; top: calc(var(--header-h, 84px) + 24px); padding: 28px; background: var(--rb-ivory); border: 1px solid var(--rb-line); color: var(--rb-ink); cursor: default; }
.rb-recap__head { display: flex; flex-direction: column; gap: 6px; margin: 0 0 18px; }
.rb-recap__head .rb-eyebrow { margin: 0; color: var(--rb-ink); }
.rb-recap__head small { font-size: 12.5px; color: var(--rb-mute); }
.rb-recap { list-style: none; margin: 0 0 22px; padding: 0; border-top: 1px dashed var(--rb-line); }
.rb-recap li { display: grid; grid-template-columns: 26px auto 1fr; align-items: baseline; gap: 10px; padding: 13px 0; border-bottom: 1px dashed var(--rb-line); font-size: 14px; }
.rb-recap__n { font-size: 10px; letter-spacing: .14em; color: var(--rb-mute); }
.rb-recap__k { color: var(--rb-mute); }
.rb-recap__v { text-align: right; font-style: italic; color: var(--rb-mute); opacity: .75; }
.rb-recap li.is-set .rb-recap__v { font-style: normal; color: var(--rb-ink); opacity: 1; animation: rb-rise .6s var(--rb-ease) both; }
.rb-recap li.is-set .rb-recap__n { font-size: 0; }
.rb-recap li.is-set .rb-recap__n::before { content: ""; display: inline-block; width: 16px; height: 16px; border-radius: 50%; background: var(--rb-ink) no-repeat center / 10px url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E"); vertical-align: -3px; animation: rb-pop .45s var(--rb-ease) both; }
@keyframes rb-pop { from { transform: scale(.3); opacity: 0; } }
.rb-aside-note { display: flex; gap: 10px; align-items: flex-start; margin: 0; font-size: 13px; color: var(--rb-mute); }
.rb-aside-note svg { flex-shrink: 0; margin-top: 2px; }
.rb-stepper { list-style: none; display: flex; gap: 6px; margin: 0 0 48px; padding: 0; counter-reset: s; }
.rb-stepper li { flex: 1; padding-top: 14px; border-top: 1px solid var(--rb-line); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--rb-mute); position: relative; }
.rb-stepper li span { margin-right: 8px; }
.rb-stepper li::before { content: ""; position: absolute; top: -1px; left: 0; right: 0; height: 1px; background: var(--rb-ink); transform: scaleX(0); transform-origin: left; transition: transform .8s var(--rb-ease); }
.rb-stepper li.is-active, .rb-stepper li.is-done { color: var(--rb-ink); }
.rb-stepper li.is-active::before, .rb-stepper li.is-done::before { transform: scaleX(1); }
.rb-step.is-active { animation: rb-rise .7s var(--rb-ease) both; }
.rb-types { display: grid; gap: 0; border-top: 1px solid var(--rb-line); }
.rb-type { display: grid; grid-template-columns: 1fr auto 24px; align-items: center; gap: 24px; padding: 26px 8px; border-bottom: 1px solid var(--rb-line); text-align: left; transition: padding .5s var(--rb-ease), background .4s, color .4s; }
.rb-type__name { font-family: var(--rb-serif); font-size: clamp(24px, 2.6vw, 36px); line-height: 1.1; }
.rb-type__dur { font-size: 12px; letter-spacing: .16em; color: var(--rb-mute); }
.rb-type__arrow { opacity: 0; transform: translateX(-10px); transition: all .5s var(--rb-ease); }
.rb-type:hover, .rb-type.is-selected { padding-left: 24px; background: var(--rb-ink); color: var(--rb-paper); }
.rb-type:hover .rb-type__dur, .rb-type.is-selected .rb-type__dur { color: rgba(255, 255, 255, .7); }
.rb-type:hover .rb-type__arrow, .rb-type.is-selected .rb-type__arrow { opacity: 1; transform: none; }
.rb-back-step { margin-top: 24px; font-size: 13px; background: none; }
.rb-slots { min-height: 80px; }
.rb-slots__group { margin-bottom: 24px; }
.rb-slots__label { font-size: 11px; letter-spacing: .24em; text-transform: uppercase; color: var(--rb-mute); margin: 0 0 12px; }
.rb-slots__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
.rb-slot { padding: 14px 0; border: 1px solid var(--rb-line); font-size: 15px; transition: background .3s, color .3s, border-color .3s; }
.rb-slot:hover, .rb-slot:focus-visible { background: var(--rb-ink); color: var(--rb-paper); border-color: var(--rb-ink); }
.rb-done { text-align: left; }
.rb-done__check { display: inline-block; margin-bottom: 24px; }
.rb-done__check path { stroke-dasharray: 40; stroke-dashoffset: 40; animation: rb-draw .9s .3s var(--rb-ease) forwards; }
.rb-done__check circle { stroke-dasharray: 160; stroke-dashoffset: 160; animation: rb-draw 1.2s var(--rb-ease) forwards; }
@keyframes rb-draw { to { stroke-dashoffset: 0; } }

/* ------------------------------------------------ Livraison · Point Relais */
.rb-cart__main { min-width: 0; }
.rb-ship { margin-top: 48px; }
.rb-checkout .rb-ship { margin: 0 0 24px; }
.rb-ship__title { margin: 0 0 20px; font-family: var(--rb-serif); font-size: 30px; font-weight: 400; }
.rb-ship .rb-options { margin-bottom: 14px; }
.rb-ship .rb-option { grid-template-columns: 20px 24px 1fr auto; }
.rb-option__ico { display: grid; place-items: center; color: var(--rb-mute); transition: color .3s; }
.rb-option:has(input:checked) .rb-option__ico { color: var(--rb-ink); }
.rb-ship__note { margin: 12px 0 0; padding: 12px 16px; border-left: 1px solid var(--rb-ink); background: var(--rb-ivory); font-size: 13px; color: var(--rb-mute); }
.rb-relay { padding: 22px; border: 1px solid var(--rb-ink); animation: rb-rise .6s var(--rb-ease) both; }
.rb-relay__chosen { display: grid; grid-template-columns: 40px 1fr auto; gap: 14px; align-items: center; }
.rb-relay__pin { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--rb-ink); color: var(--rb-paper); }
.rb-relay__eyebrow { margin: 0 0 2px; font-size: 10px; letter-spacing: .24em; text-transform: uppercase; color: var(--rb-mute); }
.rb-relay__chosen strong { display: block; font-weight: 400; font-family: var(--rb-serif); font-size: 22px; line-height: 1.15; }
.rb-relay__chosen span { font-size: 13px; color: var(--rb-mute); }
.rb-relay__change { font-size: 13px; background: none; }
.rb-relay__chosen:not([hidden]) + .rb-relay__finder:not([hidden]) { margin-top: 22px; padding-top: 22px; border-top: 1px solid var(--rb-line); }
.rb-relay__intro { margin: 0 0 14px; font-size: 14px; }
.rb-relay__search { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: stretch; }
.rb-relay__search:not(:has(select)) { grid-template-columns: 1fr auto; }
.rb-relay__search input, .rb-relay__search select { min-height: 48px; }
.rb-relay__search .btn { white-space: nowrap; }
.rb-relay .rb-msg { margin: 10px 0 0; font-size: 13px; color: var(--rb-mute); }
.rb-relay .rb-msg.is-error { color: var(--rb-err); }
.rb-relay__results { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 16px; margin-top: 14px; }
.rb-relay__list { list-style: none; margin: 0; padding: 0; max-height: 380px; overflow-y: auto; overscroll-behavior: contain; border-top: 1px solid var(--rb-line); scrollbar-width: thin; }
.rb-relay__item { border-bottom: 1px solid var(--rb-line); transition: background .3s; }
.rb-relay__item.is-active { background: var(--rb-ivory); }
.rb-relay__pick { display: grid; grid-template-columns: 26px 1fr; gap: 12px; width: 100%; padding: 14px 10px; text-align: left; background: none; }
.rb-relay__n { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--rb-ink); font-size: 11px; transition: background .3s, color .3s; }
.rb-relay__item.is-active .rb-relay__n { background: var(--rb-ink); color: var(--rb-paper); }
.rb-relay__info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rb-relay__info strong { font-weight: 400; font-size: 15px; }
.rb-relay__info span { font-size: 13px; }
.rb-relay__info small { font-size: 12px; color: var(--rb-mute); }
.rb-relay__more { padding: 0 10px 16px 48px; }
.rb-relay__hours { margin: 0 0 14px; font-size: 12px; }
.rb-relay__hours > div { display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; border-bottom: 1px dashed var(--rb-line); }
.rb-relay__hours dt { color: var(--rb-mute); }
.rb-relay__hours dd { margin: 0; text-align: right; }
.rb-map { position: relative; height: 380px; overflow: hidden; background: #e9e7e3; cursor: grab; touch-action: none; user-select: none; isolation: isolate; }
.rb-map.is-dragging { cursor: grabbing; }
.rb-map__layer { position: absolute; inset: 0; will-change: transform; }
.rb-map__tiles { filter: grayscale(1) contrast(1.06) brightness(1.03); }
.rb-map__tiles img { position: absolute; width: 256px; height: 256px; max-width: none; pointer-events: none; }
.rb-map__pin { position: absolute; z-index: 1; display: grid; place-items: center; width: 28px; height: 28px; margin: -36px 0 0 -14px; padding: 0; border-radius: 50%; background: var(--rb-paper); border: 1px solid var(--rb-ink); color: var(--rb-ink); font-size: 11px; font-variant-numeric: tabular-nums; line-height: 1; box-shadow: 0 3px 10px rgba(0, 0, 0, .18); transform-origin: 50% 130%; transition: background .3s, color .3s, transform .3s var(--rb-ease); }
.rb-map__pin::after { content: ""; position: absolute; left: 50%; top: 100%; width: 1px; height: 8px; background: var(--rb-ink); }
.rb-map__pin.is-active, .rb-map__pin:hover { z-index: 2; background: var(--rb-ink); color: var(--rb-paper); transform: scale(1.18); }
.rb-map__zoom { position: absolute; right: 10px; top: 10px; z-index: 3; display: grid; background: var(--rb-paper); border: 1px solid var(--rb-ink); }
.rb-map__zoom button { width: 34px; height: 34px; font-size: 18px; line-height: 1; }
.rb-map__zoom button + button { border-top: 1px solid var(--rb-line); }
.rb-map__attr { position: absolute; right: 0; bottom: 0; z-index: 3; padding: 2px 6px; background: rgba(255, 255, 255, .85); font-size: 10px; color: var(--rb-mute); }

/* Fiche produit : délais de livraison */
.rb-delivery { list-style: none; margin: 22px 0 0; padding: 0; border-top: 1px solid var(--rb-line); }
.rb-delivery li { display: grid; grid-template-columns: 22px 1fr; gap: 14px; align-items: start; padding: 14px 0; border-bottom: 1px solid var(--rb-line); }
.rb-delivery svg { margin-top: 1px; }
.rb-delivery strong { display: block; font-weight: 500; font-size: 13px; }
.rb-delivery small { display: block; margin-top: 2px; font-size: 13px; color: var(--rb-mute); }

/* ------------------------------------------------------------- Responsive */
@media (max-width: 1000px) {
	.rb-cart, .rb-checkout, .rb-appt { grid-template-columns: 1fr; }
	.rb-summary--sticky, .rb-appt__aside { position: static; }
	/* Mobile : bandeau compact, affiché seulement après un premier choix. */
	.rb-appt__aside { order: -1; padding: 12px 16px; margin-bottom: 4px; }
	.rb-appt__aside[data-empty] { display: none; }
	.rb-recap__head { margin: 0 0 6px; }
	.rb-recap__head small, .rb-appt__aside .rb-aside-note, .rb-recap__n { display: none; }
	.rb-recap { display: flex; flex-wrap: wrap; gap: 4px 18px; margin: 0; border: 0; }
	.rb-recap li { display: flex; gap: 6px; padding: 0; border: 0; font-size: 13.5px; }
	.rb-recap li:not(.is-set) { display: none; }
	.rb-recap__k::after { content: " :"; }
	.rb-track__grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
	.rb-grid, .rb-card__fields, .rb-express { grid-template-columns: 1fr; }
	.rb-line { grid-template-columns: 72px 1fr 32px; gap: 14px; }
	.rb-line__img { width: 72px; }
	.rb-line__qty, .rb-line__price { grid-column: 2; }
	.rb-line__remove { grid-row: 1; grid-column: 3; }
	.rb-line__title { font-size: 22px; }
	.rb-summary { padding: 22px; }
	.rb-timeline { grid-template-columns: 1fr; gap: 0; }
	.rb-timeline::before, .rb-timeline::after { top: 20px; bottom: 20px; left: 19px; right: auto; width: 1px; height: auto; }
	.rb-timeline::after { transform-origin: top; transform: scaleY(var(--progress, 0)); animation-name: rb-progress-v; }
	.rb-timeline__step { display: grid; grid-template-columns: 40px 1fr; column-gap: 18px; text-align: left; align-items: start; padding: 0 0 28px; }
	.rb-timeline__dot { grid-row: span 3; margin: 0; }
	.rb-timeline__desc { max-width: none; }
	.rb-track__head { flex-direction: column; align-items: flex-start; }
	.rb-stepper li { font-size: 0; }
	.rb-stepper li span { font-size: 11px; }
	.rb-type { grid-template-columns: 1fr auto; }
	.rb-type__arrow { display: none; }
	.rb-relay { padding: 16px; }
	.rb-relay__results { grid-template-columns: 1fr; }
	.rb-relay__map { order: -1; height: 240px; }
	.rb-relay__list { max-height: 340px; }
	.rb-relay__search { grid-template-columns: 1fr auto; }
	.rb-relay__search select { grid-column: 1 / -1; }
	.rb-relay__chosen { grid-template-columns: 40px 1fr; }
	.rb-relay__change { grid-column: 2; justify-self: start; }
	.rb-ship .rb-option { grid-template-columns: 20px 1fr auto; padding: 16px; }
	.rb-ship .rb-option__ico { display: none; }
}
@keyframes rb-progress-v { from { transform: scaleY(0); } }
@media (prefers-reduced-motion: reduce) {
	.rb-app *, .rb-toast { animation: none !important; transition: none !important; }
}

/* ---------------------------------------------- Harmonie « dentelle » des boutons */
/* Même motif que les boutons du thème (rosace de pétales) : discret au survol, révélé sur
   les états sélectionnés noirs. Variables --lace-* définies par le thème (repli : aucun motif). */
.rb-chip span, .rb-slot, .rb-type, .rb-cal__day { background-repeat: no-repeat; background-position: center; background-size: 0%; transition: background-color .4s, background-size .9s var(--rb-ease), color .4s, border-color .4s, padding .5s var(--rb-ease); }
.rb-chip:hover span { background-image: var(--lace-kf, none); background-size: 230%; }
.rb-chip input:checked + span, .rb-slot:hover, .rb-slot:focus-visible, .rb-cal__day.is-selected { background-image: var(--lace-wf, none); background-size: 250%; }
.rb-type:hover, .rb-type.is-selected { background-image: var(--lace-wf, none); background-size: auto 340%; background-position: 92% 50%; }
.rb-tabs__ink { background-image: var(--lace-wf, none); background-repeat: no-repeat; background-position: center; background-size: 140%; }

/* Pages légales */
.rb-legal { max-width: 820px; font-size: 15px; line-height: 1.7; }
.rb-legal h2 { margin: 40px 0 12px; font-family: var(--serif, Georgia, serif); font-weight: 400; font-size: 26px; }
.rb-legal ul { padding-left: 1.2em; }
.rb-legal a { text-decoration: underline; text-underline-offset: 3px; }
.rb-legal__table { width: 100%; border-collapse: collapse; margin: 12px 0 18px; font-size: 13.5px; }
.rb-legal__table th, .rb-legal__table td { text-align: left; vertical-align: top; padding: 10px 12px; border-bottom: 1px solid rgba(10,10,10,.14); }
.rb-legal__date { margin-top: 48px; color: #77736d; font-size: 13px; }
.rb-hint { margin: -10px 0 18px; font-size: 12.5px; color: #77736d; }
.rb-hint a { text-decoration: underline; }
@media (max-width: 640px) { .rb-legal__table thead { display: none; } .rb-legal__table td { display: block; padding: 4px 0; border: 0; } .rb-legal__table tr { display: block; padding: 10px 0; border-bottom: 1px solid rgba(10,10,10,.14); } }
