/* =========================================================================
   BORZ Tattoo — css/randevu.css · Booking page (body[data-page="randevu"])
   Owner: Agent C. Tokens and shared components come from css/style.css; every class here is rv-*.
   A calm three-step request card (+ a sticky live summary from 1100px), a real calendar,
   reference-photo upload, and a "good to know" section under it.

   01 Hero (studio photo)   05 Step 1 · photos, toggles   09 Nav, errors, send
   02 Layout + card         06 Step 2 · calendar, times   10 Success, closed
   03 Progress + steps      07 Step 3 · contact, review   11 Good to know
   04 Step 1 · choices      08 Live summary               12 No-JS, reduced motion
   ========================================================================= */

/* ===== 01 · Hero ======================================================= */
.rv-hero{position:relative;overflow:clip;padding:calc(var(--header-h) + 10vh) 0 var(--s-8);padding:calc(var(--header-h) + 10svh) 0 var(--s-8)}
.rv-hero__deco{position:absolute;inset:0;z-index:0;pointer-events:none}
.rv-hero__ghost{
  position:absolute;right:-.04em;bottom:-.2em;display:block;
  font:800 clamp(10rem,38vw,40rem)/.8 var(--font-sans);letter-spacing:-.06em;white-space:nowrap;
  color:transparent;-webkit-text-stroke:1px var(--line);user-select:none;
}
.rv-float{position:absolute;overflow:visible}
.rv-float--drop1{width:14px;height:22px;color:var(--brass);right:10vw;top:calc(var(--header-h) + 18px)}
.rv-float--drop2{width:8px;height:13px;color:var(--brass);opacity:.6;right:10vw;top:22%;display:none}
.rv-float--spark1{width:16px;height:16px;color:var(--ash);right:22vw;top:64%;display:none}
.rv-float--spark2{width:11px;height:11px;color:var(--brass);left:58vw;top:calc(var(--header-h) + 8px)}
.rv-hero__badge{position:absolute;right:calc(var(--gutter) + 1vw);top:calc(var(--header-h) + 7vh);display:none}
.rv-hero__grid{position:relative;z-index:1;display:grid;gap:24px}
.rv-hero__title{max-width:12ch}
.rv-hero__foot{display:grid;gap:28px;margin-top:8px}
.rv-hero__lede{max-width:40ch;color:var(--bone)}
.rv-hero__facts{display:flex;flex-wrap:wrap;gap:10px}
.rv-fact{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 18px 0 14px;border-radius:var(--r-pill);border:1px solid var(--line-strong);background:var(--ink-2);font:600 14px/1 var(--font-sans);color:var(--bone);white-space:nowrap}
.rv-fact .icon{width:18px;height:18px;color:var(--brass)}
.rv-hero__cue{display:inline-flex;align-items:center;gap:14px;justify-self:start;min-height:44px;color:var(--ash)}
.rv-hero__needle{position:relative;display:block;width:1px;height:40px;background:var(--line-2)}
.rv-hero__needle::after{content:"";position:absolute;left:-3px;top:0;width:6px;height:6px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--brass);animation:rv-needle-drop 2200ms var(--ease-soft) infinite}
@keyframes rv-needle-drop{0%{translate:0 0;opacity:1}100%{translate:0 34px;opacity:0}}
@media (hover:hover){ .rv-hero__cue:hover{color:var(--bone)} }
@media (min-width:600px){ .rv-float--spark1,.rv-float--drop2{display:block} }
@media (min-width:900px){
  .rv-float--drop1{right:34vw;top:30%}
  .rv-float--spark2{top:14%}
}
@media (min-width:900px){
  .rv-hero{padding-bottom:var(--s-9)}
  .rv-hero__grid{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--col-gap);row-gap:28px}
  .rv-hero__grid > *{grid-column:1 / -1}
  .rv-hero__title{grid-column:1 / 11;max-width:none}
  .rv-hero__foot{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--col-gap);row-gap:20px;align-items:end;margin-top:20px}
  .rv-hero__lede{grid-column:1 / 7}
  .rv-hero__facts{grid-column:7 / 13;justify-content:flex-end}
  .rv-hero__cue{grid-column:1 / 7}
  .rv-hero__badge{display:block}
}

/* — the studio photo (panel: content → randevu → hero → image) —
   phones: under the lede in a wide rounded frame · ≥900: a tall soft arch right of the copy, the rotating
   seal on its shoulder, a slow scroll parallax (core [data-parallax] on the wrapper) and a curtain reveal. */
.rv-hero__photo{position:relative;margin:0;min-width:0}
.rv-hero__plx{position:relative}
.rv-hero__frame{
  position:relative;overflow:hidden;isolation:isolate;aspect-ratio:6 / 5;border-radius:var(--r-xl);background:var(--exhibit);
  box-shadow:0 40px 80px -40px rgba(0,0,0,.9),0 0 0 1px rgba(237,230,216,.09);
}
.rv-hero__frame img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% 42%;-webkit-user-drag:none;user-select:none}
/* a quiet vignette and a darker foot, so the warm photo sinks into the page instead of sitting on it */
.rv-hero__frame::after{
  content:"";position:absolute;inset:0;z-index:2;border-radius:inherit;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(237,230,216,.07),inset 0 0 80px rgba(11,10,9,.4);
  background:linear-gradient(to top,rgba(11,10,9,.5) 0%,rgba(11,10,9,.12) 26%,transparent 42%);
}
.rv-hero__badge-disc{fill:rgba(11,10,9,.74);stroke:rgba(184,146,90,.4);stroke-width:1}
@media (min-width:900px){
  .rv-hero.has-photo{padding-top:calc(var(--header-h) + 6vh);padding-top:calc(var(--header-h) + 6svh)}
  /* copy in columns 1–7, vertically centred against the photo: the empty 1fr rows above and below absorb its height */
  .rv-hero.has-photo .rv-hero__grid{grid-template-rows:minmax(0,1fr) repeat(5,auto) minmax(0,1fr);row-gap:0;align-items:start}
  .rv-hero.has-photo .rv-hero__grid > *{grid-column:1 / 8}
  .rv-hero.has-photo .rv-hero__eyebrow{grid-row:2;margin-bottom:28px}
  .rv-hero.has-photo .rv-hero__title{grid-row:3}
  .rv-hero.has-photo .rv-hero__foot{display:contents}
  .rv-hero.has-photo .rv-hero__lede{grid-column:1 / 7;grid-row:4;margin-top:32px}
  .rv-hero.has-photo .rv-hero__facts{grid-column:1 / 8;grid-row:5;justify-content:flex-start;margin-top:28px}
  .rv-hero.has-photo .rv-hero__cue{grid-column:1 / 7;grid-row:6;margin-top:20px}
  .rv-hero.has-photo .rv-hero__photo{grid-column:8 / 13;grid-row:1 / -1;align-self:center;justify-self:end;width:min(100%, calc(min(66vh, 720px) * .8))}
  @supports (height:1svh){ .rv-hero.has-photo .rv-hero__photo{width:min(100%, calc(min(66svh, 720px) * .8))} }
  .rv-hero.has-photo .rv-hero__frame{aspect-ratio:4 / 5;border-radius:48% 48% var(--r-l) var(--r-l) / 30% 30% var(--r-l) var(--r-l)}
  .rv-hero.has-photo .rv-hero__badge{position:absolute;z-index:3;left:-58px;right:auto;top:13%;width:116px;height:116px}
  .rv-hero.has-photo .rv-hero__badge text{fill:rgba(237,230,216,.82)}
  /* the outline "05" stays a whisper behind the photo instead of drawing lines around its foot */
  .rv-hero.has-photo .rv-hero__ghost{-webkit-text-stroke-color:rgba(237,230,216,.055)}
}
/* H1 local start (R01): steeper rotate + deeper drop than the shared words reveal */
@media (prefers-reduced-motion:no-preference){
  .js:not(.reveal-all) .rv-hero__title[data-reveal="words"]:not(.is-in) .w__i{transform:translate3d(0,120%,0) rotate(8deg)}
  .js .rv-hero__title[data-reveal="words"].is-in:not(.reveal-done) .w__i{transition:transform 1100ms var(--ease-expo) calc(var(--d,0ms) + var(--wi,0) * var(--st-word))}
  /* decorative entrance (JS: .is-armed at init, .is-entered at pagereveal) */
  .js:not(.reveal-all) .rv-hero.is-armed:not(.is-entered) .rv-hero__ghost{clip-path:inset(100% 0 0 0)}
  .js .rv-hero.is-entered .rv-hero__ghost{clip-path:inset(-10% -2% -10% -2%);transition:clip-path 1600ms var(--ease-quart) 200ms}
  .js:not(.reveal-all) .rv-hero.is-armed:not(.is-entered) :is(.rv-float,.rv-hero__badge){opacity:0;scale:.5}
  .js .rv-hero.is-entered :is(.rv-float,.rv-hero__badge){transition:opacity 800ms var(--ease-expo) calc(700ms + var(--fi,0) * 90ms),scale 1000ms var(--ease-back) calc(700ms + var(--fi,0) * 90ms)}
  .js:not(.reveal-all) .rv-hero.is-armed:not(.is-entered) .rv-hero__cue{opacity:0;translate:0 10px}
  .js .rv-hero.is-entered .rv-hero__cue{transition:opacity 600ms var(--ease-out) 1200ms,translate 800ms var(--ease-expo) 1200ms}
}

/* ===== 02 · Layout + card ============================================== */
.rv-booking{position:relative;padding-block:var(--s-6) var(--section-y)}
.rv-booking .rail{min-width:0}
.rv-booking .rail__meta{display:none}
@media (min-width:600px){ .rv-booking .rail__meta{display:block} }
.rv-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-7);align-items:start}
.rv-wizard{position:relative;min-width:0}
/* <900px: the floating buttons step aside while the form is on screen (core [data-hide-floating]) */
.rv-wizard__fabzone{position:absolute;inset:120px 0 0;visibility:hidden;pointer-events:none}
.rv-sum{display:none}
@media (min-width:900px){
  .rv-wizard__fabzone{display:none}
  .rv-layout{max-width:860px;margin-inline:auto}
}
@media (min-width:1100px){
  .rv-layout{grid-template-columns:minmax(0,1fr) minmax(300px,360px);column-gap:clamp(32px,4vw,64px);max-width:none}
  .rv-layout--solo{grid-template-columns:minmax(0,860px);justify-content:center}
  .rv-sum{display:block;position:sticky;top:calc(var(--header-h) + 24px)}
}
.rv-card{
  --pad:clamp(20px,4.6vw,52px);
  position:relative;padding:var(--pad);border-radius:var(--r-xl);
  background:linear-gradient(180deg,var(--ink-2) 0%,rgba(22,19,15,.9) 100%);
  box-shadow:var(--sh-card),0 0 0 1px var(--line);
  container:rv-card / inline-size;
}

/* ===== 03 · Progress + steps =========================================== */
.rv-progress{display:grid;gap:14px;margin-bottom:clamp(28px,4vw,44px)}
.rv-progress__count{margin:0;color:var(--ash)}
.rv-progress__steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none}
.rv-progress__btn{
  display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0;text-align:left;
  color:var(--ash);font:600 14px/1.25 var(--font-sans);transition:color 300ms var(--ease-out);
}
.rv-progress__btn:disabled{cursor:default;color:var(--dim)}
@media (hover:hover){ .rv-progress__btn:not(:disabled):not([aria-current]):hover{color:var(--bone)} }
.rv-progress__no{
  position:relative;display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;
  border:1px solid var(--line-strong);font:600 13px/1 var(--font-sans);color:inherit;
  transition:background-color 300ms var(--ease-out),border-color 300ms var(--ease-out),color 300ms var(--ease-out),box-shadow 400ms var(--ease-out);
}
.rv-progress__no > span{transition:opacity 200ms}
.rv-progress__no .icon{position:absolute;width:14px;height:14px;stroke-width:2.2;opacity:0;transform:scale(.5);transition:opacity 200ms,transform 400ms var(--ease-back)}
.rv-progress__step.is-current .rv-progress__btn{color:var(--bone)}
.rv-progress__step.is-current .rv-progress__no{border-color:var(--brass);color:var(--brass-2);box-shadow:0 0 0 4px rgba(184,146,90,.14)}
.rv-progress__step.is-done:not(.is-current) .rv-progress__no{background:var(--brass);border-color:var(--brass);color:var(--ink)}
.rv-progress__step.is-done:not(.is-current) .rv-progress__no > span{opacity:0}
.rv-progress__step.is-done:not(.is-current) .rv-progress__no .icon{opacity:1;transform:none}
.rv-progress__name{min-width:0}
.rv-progress__bar{position:relative;display:block;height:2px;border-radius:2px;background:var(--line);overflow:hidden}
.rv-progress__fill{position:absolute;inset:0;background:linear-gradient(90deg,var(--brass-deep),var(--brass-2));transform-origin:0 50%;transform:scaleX(.333);transition:transform 800ms var(--ease-expo)}
@container rv-card (max-width:519px){
  .rv-progress__step:not(.is-current) .rv-progress__name{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .rv-progress__steps{display:flex;gap:10px}
  .rv-progress__step.is-current{flex:1;min-width:0}
}
.rv-form{position:relative}
.rv-steps{display:grid}
.rv-step{display:grid;gap:clamp(30px,3.6vw,40px);min-width:0}
.rv-step__title{margin:0;color:var(--bone);border-radius:var(--r-xs);outline-offset:6px}
.rv-step__title:focus:not(:focus-visible){outline:none}
.rv-step__help{margin:-16px 0 0;max-width:58ch;color:var(--ash)}

/* ===== 04 · Step 1 · choices =========================================== */
.rv-group{display:grid;gap:12px;min-width:0;margin:0;padding:0;border:0}
.rv-group > legend{float:left;width:100%;padding:0;margin-bottom:12px}
.rv-group__label{display:block;margin:0;font:600 12px/1.35 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--bone)}
.rv-group__help{margin:-2px 0 0;font-size:var(--fs-small);line-height:1.5;color:var(--ash)}
.rv-optional{margin-left:6px;font-weight:500;letter-spacing:.04em;text-transform:none;color:var(--dim)}
.rv-field{display:grid;gap:10px;min-width:0}
.rv-field__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.rv-count{color:var(--dim);font-variant-numeric:tabular-nums;transition:color 300ms}
.rv-count.is-near{color:var(--brass-2)}

/* selectable cards: style, size, colour */
.rv-option{
  position:relative;display:flex;align-items:center;gap:14px;min-width:0;padding:12px 14px;border-radius:var(--r-m);
  border:1px solid var(--line-strong);background:rgba(11,10,9,.32);cursor:pointer;
  transition:border-color 250ms var(--ease-out),background-color 250ms var(--ease-out),box-shadow 300ms var(--ease-out);
}
@media (hover:hover){ .rv-option:hover{border-color:var(--ash)} }
.rv-option:has(input:checked),.rv-option.is-checked{border-color:var(--brass);background:rgba(184,146,90,.08);box-shadow:inset 0 0 0 1px var(--brass)}
.rv-option:has(input:focus-visible){outline:2px solid var(--brass);outline-offset:3px}
.rv-option__txt{display:grid;gap:2px;min-width:0}
.rv-option__name{font:600 15px/1.25 var(--font-sans);color:var(--bone)}
.rv-option__hint{font-size:13px;line-height:1.4;color:var(--ash)}
.rv-option__tick{
  position:absolute;top:10px;right:10px;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;
  background:var(--brass);color:var(--ink);opacity:0;transform:scale(.5);transition:opacity 200ms,transform 350ms var(--ease-back);
}
.rv-option__tick .icon{width:12px;height:12px;stroke-width:2.6}
.rv-option:has(input:checked) .rv-option__tick,.rv-option.is-checked .rv-option__tick{opacity:1;transform:none}
.rv-group.is-invalid .rv-option:not(:has(input:checked)){border-color:rgba(232,128,111,.55)}

.rv-styles{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
.rv-style{padding:8px 40px 8px 8px}
.rv-style__art{flex:none;width:64px;height:64px;border-radius:var(--r-s);overflow:hidden;background:var(--exhibit)}
.rv-style__art img{width:100%;height:100%;max-width:none;object-fit:cover;object-position:50% 34%;filter:saturate(.85) brightness(.9);transition:transform 1.2s var(--ease-expo),filter 400ms var(--ease-out)}
.rv-style:has(input:checked) .rv-style__art img,.rv-style.is-checked .rv-style__art img{transform:scale(1.08);filter:none}
@media (hover:hover){ .rv-style:hover .rv-style__art img{filter:none} }
.rv-style__art--unsure{display:grid;place-items:center;background:var(--ink-3)}
.rv-style__art--unsure svg{width:34px;height:34px;fill:none;stroke:var(--brass);stroke-width:1.6;stroke-linecap:round}
@container rv-card (min-width:520px){ .rv-styles{grid-template-columns:repeat(2,minmax(0,1fr))} }

.rv-regions{display:grid;gap:16px}
.rv-regions__group{display:grid;gap:8px;min-width:0}
.rv-regions__name{color:var(--dim)}
.rv-pills{display:flex;flex-wrap:wrap;gap:8px}
.rv-pill{cursor:pointer}
.rv-group.is-invalid .rv-pill:not(:has(input:checked)){border-color:rgba(232,128,111,.55)}
@container rv-card (min-width:640px){
  .rv-regions__group{grid-template-columns:120px minmax(0,1fr);align-items:start}
  .rv-regions__name{padding-top:13px}
}

.rv-sizes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.rv-size{flex-direction:column;align-items:flex-start;gap:14px;padding:16px 14px 14px}
.rv-size__glyph{position:relative;display:grid;place-items:center;width:42px;height:42px;border-radius:10px;border:1px dashed var(--line-2)}
.rv-size__glyph span{width:calc(100% * var(--k,.5));height:calc(100% * var(--k,.5));border-radius:5px;background:var(--ash);opacity:.5;transition:background-color 300ms,opacity 300ms}
.rv-size:has(input:checked) .rv-size__glyph span,.rv-size.is-checked .rv-size__glyph span{background:var(--brass);opacity:1}
@container rv-card (min-width:640px){ .rv-sizes{grid-template-columns:repeat(4,minmax(0,1fr))} }

.rv-colors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:460px}
.rv-color{gap:12px;padding:14px}
.rv-color__swatch{flex:none;width:28px;height:28px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(237,230,216,.22)}
.rv-color__swatch--siyah-gri{background:conic-gradient(from 210deg,#0d0d0d,#5d5d5d,#c4c4c4,#2a2a2a,#0d0d0d)}
.rv-color__swatch--renkli{background:conic-gradient(from 200deg,#d2af78,#b8433a,#7a2e5a,#2c6e78,#c9a041,#d2af78)}

.rv-textarea{height:auto;min-height:144px;padding:14px 16px;line-height:1.55;resize:vertical}
.rv-textarea--short{min-height:96px}

/* ===== 05 · Step 1 · photos, toggles =================================== */
.rv-drop{
  position:relative;display:grid;justify-items:center;gap:8px;padding:26px 20px;border-radius:var(--r-l);
  border:1px dashed var(--line-2);background:rgba(11,10,9,.3);text-align:center;
  transition:border-color 250ms var(--ease-out),background-color 250ms var(--ease-out);
}
.rv-drop__icon{width:28px;height:28px;color:var(--brass)}
.rv-drop__text{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:0;color:var(--ash);font-size:var(--fs-small)}
.rv-drop__drag{display:none}
html.fine .rv-drop__drag{display:inline}
.rv-drop__browse{
  display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border-radius:var(--r-pill);border:1px solid var(--line-strong);
  color:var(--bone);font:600 14px/1 var(--font-sans);cursor:pointer;transition:border-color 250ms,background-color 250ms;
}
@media (hover:hover){ .rv-drop__browse:hover{border-color:var(--brass);background:rgba(184,146,90,.08)} }
.rv-drop:has(.rv-drop__input:focus-visible) .rv-drop__browse{outline:2px solid var(--brass);outline-offset:3px}
.rv-drop__types{margin:0;color:var(--dim)}
.rv-drop__input{position:absolute;left:50%;top:50%;width:1px;height:1px;opacity:0}
.rv-drop.is-over{border-color:var(--brass);background:rgba(184,146,90,.09)}
.rv-drop.has-photos{grid-template-columns:auto minmax(0,1fr);justify-items:start;align-items:center;column-gap:14px;padding:14px 18px;text-align:left}
.rv-drop.has-photos .rv-drop__icon{grid-row:1 / span 2}
.rv-drop.has-photos .rv-drop__text{justify-content:flex-start}
.rv-drop.is-full{display:none}
.rv-group.is-invalid .rv-drop{border-color:rgba(232,128,111,.6)}
.rv-thumbs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.rv-thumb{position:relative;aspect-ratio:1 / 1;border-radius:var(--r-m);overflow:hidden;background:var(--ink-3);box-shadow:inset 0 0 0 1px var(--line)}
.rv-thumb img{width:100%;height:100%;max-width:none;object-fit:cover}
.rv-thumb.is-pending::after{content:"";position:absolute;inset:0;margin:auto;width:22px;height:22px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--brass);animation:rv-spin 800ms linear infinite}
@keyframes rv-spin{to{transform:rotate(360deg)}}
.rv-thumb__remove{
  position:absolute;top:6px;right:6px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;
  background:rgba(11,10,9,.72);color:var(--bone);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background-color 200ms;
}
.rv-thumb__remove .icon{width:14px;height:14px}
@media (hover:hover){ .rv-thumb__remove:hover{background:var(--error);color:var(--ink)} }

.rv-toggles{display:grid;gap:10px}
.rv-toggle{
  position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 16px;
  border-radius:var(--r-m);border:1px solid var(--line);cursor:pointer;transition:border-color 250ms,background-color 250ms;
}
@media (hover:hover){ .rv-toggle:hover{border-color:var(--line-2)} }
.rv-toggle__input{position:absolute;width:1px;height:1px;opacity:0}
.rv-toggle__name{display:block;font:600 15px/1.3 var(--font-sans);color:var(--bone)}
.rv-toggle__hint{display:block;margin-top:2px;font-size:13px;line-height:1.4;color:var(--ash)}
.rv-toggle__switch{position:relative;flex:none;width:46px;height:28px;border-radius:999px;background:var(--ink-3);box-shadow:inset 0 0 0 1px var(--line-strong);transition:background-color 300ms var(--ease-out)}
.rv-toggle__switch::after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:var(--ash);transition:transform 350ms var(--ease-back),background-color 300ms}
.rv-toggle:has(input:checked),.rv-toggle.is-checked{border-color:rgba(184,146,90,.55);background:rgba(184,146,90,.06)}
.rv-toggle:has(input:checked) .rv-toggle__switch,.rv-toggle.is-checked .rv-toggle__switch{background:var(--brass)}
.rv-toggle:has(input:checked) .rv-toggle__switch::after,.rv-toggle.is-checked .rv-toggle__switch::after{transform:translateX(18px);background:var(--ink)}
.rv-toggle:has(input:focus-visible){outline:2px solid var(--brass);outline-offset:3px}
@container rv-card (min-width:640px){ .rv-toggles{grid-template-columns:repeat(2,minmax(0,1fr))} }

/* ===== 06 · Step 2 · calendar, times =================================== */
.rv-when{display:grid;gap:20px;min-width:0;outline:none}
.rv-when__links{display:flex;flex-wrap:wrap;gap:10px 24px;font-size:var(--fs-small);color:var(--brass-2)}
@container rv-card (min-width:640px){
  .rv-when{grid-template-columns:minmax(0,340px) minmax(0,1fr);column-gap:32px;align-items:start}
  .rv-when > .rv-err,.rv-when__links,.rv-slotlist{grid-column:1 / -1}
}
.rv-cal{display:grid;gap:8px;padding:12px 12px 10px;border-radius:var(--r-l);border:1px solid var(--line-strong);background:var(--ink-3)}
.rv-when.is-invalid .rv-cal{border-color:var(--error)}
.rv-cal__head{display:grid;grid-template-columns:36px minmax(0,1fr) 36px;align-items:center;gap:8px}
.rv-cal__nav{width:36px;height:36px;min-width:0}
.rv-cal__nav .icon{width:16px;height:16px}
.rv-cal__nav:disabled{opacity:.25;cursor:default}
.rv-cal__month{margin:0;font:italic 400 1.375rem/1.2 var(--font-serif);color:var(--bone);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rv-cal__grid{width:100%;border-collapse:collapse;table-layout:fixed}
.rv-cal__grid th{padding:4px 0 8px;font:600 var(--fs-micro)/1 var(--font-sans);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);text-align:center}
.rv-cal__grid td{padding:2px;text-align:center}
.rv-cal__day{
  position:relative;display:grid;place-items:center;width:100%;max-width:42px;aspect-ratio:1 / 1;margin-inline:auto;border-radius:50%;
  font:500 14px/1 var(--font-sans);color:var(--dim);font-variant-numeric:tabular-nums;cursor:default;
  transition:background-color 200ms var(--ease-out),color 200ms var(--ease-out),box-shadow 200ms var(--ease-out);
}
.rv-cal__day.is-open{color:var(--bone);font-weight:600;background:rgba(184,146,90,.1);box-shadow:inset 0 0 0 1px rgba(184,146,90,.32);cursor:pointer}
@media (hover:hover){ .rv-cal__day.is-open:not(.is-selected):hover{background:rgba(184,146,90,.22)} }
.rv-cal__day.is-selected{background:var(--brass);color:var(--ink);box-shadow:var(--sh-glow)}
.rv-cal__day.is-today::after{content:"";position:absolute;left:50%;bottom:4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--ash)}
.rv-cal__day.is-selected::after{background:var(--ink)}
.rv-cal__day:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
.rv-cal__status{margin:2px 0 4px;color:var(--ash);text-align:center}
.rv-times{display:grid;gap:14px;align-content:start;min-width:0}
.rv-times__list{display:flex;flex-wrap:wrap;gap:10px}
.rv-time{
  display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 22px;border-radius:var(--r-m);
  border:1px solid var(--line-strong);background:rgba(11,10,9,.35);font:600 16px/1 var(--font-sans);color:var(--bone);font-variant-numeric:tabular-nums;
  transition:background-color 250ms,border-color 250ms,color 250ms;
}
.rv-time .icon{width:18px;height:18px;color:var(--brass)}
@media (hover:hover){ .rv-time:not(.is-on):hover{border-color:var(--brass)} }
.rv-time.is-on{border-color:var(--brass);background:var(--brass);color:var(--ink)}
.rv-time.is-on .icon{color:var(--ink)}
.rv-held{display:flex;align-items:center;gap:8px;margin:0;font:italic 400 1.125rem/1.35 var(--font-serif);color:var(--brass-2)}
.rv-held .icon{flex:none;width:16px;height:16px}
.rv-times__hint{margin:0;color:var(--ash)}
.rv-slotlist{display:grid;gap:12px;min-width:0;margin:0;padding:0;border:0}
.rv-slotlist > legend{float:left;width:100%;padding:0;margin-bottom:12px}
.rv-slotlist__items{display:flex;flex-wrap:wrap;gap:8px}
.rv-avail{max-width:620px}
.rv-avail__back{justify-self:start;font-size:var(--fs-small);color:var(--brass-2)}

/* ===== 07 · Step 3 · contact, consent, review ========================== */
.rv-contact{display:grid;gap:18px}
@container rv-card (min-width:560px){
  .rv-contact{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}
  .rv-field--wide{grid-column:1 / -1}
}
.rv-consent{display:grid;gap:14px}
.rv-privacy{border-block:1px solid var(--line)}
.rv-privacy summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;cursor:pointer;list-style:none;font:600 14px/1.3 var(--font-sans);color:var(--bone)}
.rv-privacy summary::-webkit-details-marker{display:none}
.rv-privacy summary:focus-visible{outline-offset:2px;border-radius:var(--r-xs)}
.rv-privacy__icon{position:relative;flex:none;width:28px;height:28px;border-radius:50%;border:1px solid var(--line-strong);transition:transform 500ms var(--ease-expo),background-color 300ms,border-color 300ms}
.rv-privacy__icon::before,.rv-privacy__icon::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:1.5px;margin:-.75px 0 0 -5px;border-radius:2px;background:var(--bone)}
.rv-privacy__icon::after{transform:rotate(90deg)}
.rv-privacy[open] .rv-privacy__icon{transform:rotate(45deg);background:var(--brass);border-color:var(--brass)}
.rv-privacy[open] .rv-privacy__icon::before,.rv-privacy[open] .rv-privacy__icon::after{background:var(--ink)}
.rv-privacy__body p{padding-bottom:16px;font-size:var(--fs-small);line-height:1.6;color:var(--ash)}
.rv-review{display:grid;gap:12px;padding:18px 18px 8px;border-radius:var(--r-l);border:1px solid var(--line);background:rgba(11,10,9,.32)}
@media (min-width:1100px){ .rv-layout:not(.rv-layout--solo) .rv-review{display:none} }

/* ===== 08 · Live summary (aside ≥1100px, review on smaller screens) ==== */
.rv-sum__card{padding:26px 24px 22px;border-radius:var(--r-xl);border:1px solid var(--line);background:linear-gradient(180deg,rgba(22,19,15,.8),rgba(11,10,9,.6))}
.rv-sum__title{margin:0 0 16px;color:var(--brass-2)}
.rv-sum__empty{margin:0;font-size:var(--fs-small);line-height:1.55;color:var(--ash)}
.rv-sum__list{display:grid;margin:0}
.rv-sum__row{display:grid;gap:5px;padding:12px 0;border-top:1px solid var(--line)}
.rv-sum__row:first-child{border-top:0;padding-top:0}
.rv-sum__row dt{font:600 11px/1.3 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}
.rv-sum__row dd{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin:0;font-size:15px;line-height:1.4;color:var(--bone)}
.rv-sum__val{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.rv-sum__row.is-when .rv-sum__val{font:italic 400 1.1875rem/1.3 var(--font-serif)}
.rv-sum__row.is-long .rv-sum__val{font-size:14px;line-height:1.5;color:var(--ash)}
.rv-sum__thumb{flex:none;width:36px;height:36px;border-radius:8px;object-fit:cover}
.rv-sum__held{display:flex;align-items:center;gap:6px;flex-basis:100%;font-size:13px;color:var(--brass-2)}
.rv-sum__held .icon{flex:none;width:14px;height:14px}
.rv-sum__photos{display:flex;flex-wrap:wrap;gap:6px;flex-basis:100%;order:3}
.rv-sum__photos img{width:44px;height:44px;border-radius:8px;object-fit:cover}
.rv-sum__edit{flex:none;margin-left:auto;font-size:13px;color:var(--brass-2)}
.rv-sum__note{display:flex;align-items:flex-start;gap:10px;margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line);color:var(--ash)}
.rv-sum__note .icon{flex:none;width:16px;height:16px;margin-top:.15em;color:var(--brass)}
.rv-sum.is-done .rv-sum__card{opacity:.55;transition:opacity 600ms}
.rv-sum.is-done .rv-sum__edit{display:none}

/* ===== 09 · Nav, errors, send ========================================== */
.rv-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}
.rv-nav .btn{padding-inline:22px}
.rv-nav__back-icon{width:18px;height:18px;transition:translate 450ms var(--ease-expo)}
@media (hover:hover){ .rv-nav__back:hover .rv-nav__back-icon{translate:-4px 0} }
.rv-nav.is-first .rv-nav__back{visibility:hidden}
.rv-nav.is-last .rv-nav__next{display:none}
.rv-err{margin:0}
.rv-errors{margin-bottom:28px;padding:16px 18px;border-radius:var(--r-m);border:1px solid var(--error);background:rgba(232,128,111,.06)}
.rv-errors__title{margin:0;font-weight:600;color:var(--bone)}
.rv-errors__list{display:grid;gap:6px;margin:10px 0 0;padding:0;list-style:none}
.rv-errors__list a{font-size:var(--fs-small);color:var(--error);text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
@media (hover:hover){ .rv-errors__list a:hover{color:var(--bone)} }
.rv-send{display:grid;gap:12px}
.rv-send__note{display:flex;align-items:flex-start;gap:8px;margin:0;color:var(--ash)}
.rv-send__note .icon{flex:none;width:16px;height:16px;margin-top:.15em;color:var(--brass)}
.rv-send__error .link{color:var(--bone);text-decoration:underline;text-underline-offset:.2em}
.rv-submit.is-busy{pointer-events:none;opacity:.85}
.rv-submit.is-busy .btn__icon{animation:rv-spin 900ms linear infinite}

/* ===== 10 · Success, closed ============================================= */
.rv-ok{display:grid;justify-items:center;gap:18px;padding-block:24px 8px;text-align:center}
.rv-ok:focus{outline:none}
.rv-ok__mark{width:104px;height:104px;overflow:visible}
.rv-ok__ring{fill:rgba(184,146,90,.08);stroke:var(--brass);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:0;transform:rotate(-90deg);transform-origin:center;transform-box:fill-box}
.rv-ok__check{fill:none;stroke:var(--brass-2);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0}
.rv-ok__title{max-width:14ch;margin:0}
.rv-ok__ref{display:inline-flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:4px 12px;margin:0;padding:12px 22px;border:1px solid var(--line-strong);border-radius:var(--r-pill);background:var(--ink-3)}
.rv-ok__ref .micro{color:var(--ash)}
.rv-ok__code{font:600 1.25rem/1.2 var(--font-sans);letter-spacing:.14em;color:var(--brass-2);font-variant-numeric:tabular-nums;user-select:all}
.rv-ok__lead{max-width:46ch;margin:0}
.rv-ok__lead > span{display:block;margin-bottom:6px}
.rv-ok__when{color:var(--brass-2);font-weight:600}
.rv-ok__email{display:flex;align-items:center;gap:8px;margin:0;color:var(--ash)}
.rv-ok__email .icon{width:16px;height:16px;color:var(--brass)}
.rv-ok__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px}
.rv-ok__reset{font-size:var(--fs-small);color:var(--ash)}
@media (prefers-reduced-motion:no-preference){
  .rv-ok.is-anim .rv-ok__ring,.rv-ok.is-anim .rv-ok__check{stroke-dashoffset:1}
  .rv-ok.is-anim.is-in .rv-ok__ring{stroke-dashoffset:0;transition:stroke-dashoffset 900ms var(--ease-soft)}
  .rv-ok.is-anim.is-in .rv-ok__check{stroke-dashoffset:0;transition:stroke-dashoffset 500ms var(--ease-soft) 650ms}
  .rv-ok.is-anim :is(.rv-ok__title,[data-ok-item]){opacity:0;translate:0 18px}
  .rv-ok.is-anim.is-in :is(.rv-ok__title,[data-ok-item]){opacity:1;translate:0 0;transition:opacity 700ms var(--ease-out) var(--od,400ms),translate 1000ms var(--ease-expo) var(--od,400ms)}
  .rv-ok > :nth-child(3){--od:480ms}
  .rv-ok > :nth-child(4){--od:560ms}
  .rv-ok > :nth-child(5){--od:640ms}
  .rv-ok > :nth-child(6){--od:720ms}
  .rv-ok > :nth-child(7){--od:800ms}
}
.rv-closed{display:grid;justify-items:start;gap:20px;padding-block:8px}
.rv-closed__msg{display:grid;gap:12px;max-width:52ch;color:var(--ash)}
.rv-closed__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:4px}

/* ===== 11 · Good to know ================================================ */
.rv-info{padding-block:var(--section-y);border-top:1px solid var(--line)}
.rv-info__title{max-width:16ch;margin:0 0 clamp(28px,4vw,52px);text-wrap:balance}
.rv-info__grid{display:grid;gap:28px}
@media (min-width:700px){ .rv-info__grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--col-gap)} }
@media (min-width:1100px){ .rv-info__grid{grid-template-columns:repeat(4,minmax(0,1fr))} .rv-info__grid--3{grid-template-columns:repeat(3,minmax(0,1fr))} }
.rv-info__block{display:grid;align-content:start;gap:10px;padding-top:18px;border-top:1px solid var(--line-2)}
.rv-info__head{display:flex;align-items:baseline;gap:12px;margin:0;font:600 15px/1.3 var(--font-sans);color:var(--bone)}
.rv-info__head .numeral{font-size:1.5rem;color:var(--brass-2)}
.rv-info__block p,.rv-info__list li{margin:0;font-size:var(--fs-small);line-height:1.6;color:var(--ash)}
.rv-info__list{display:grid;gap:4px;margin:0;padding:0;list-style:none}
.rv-info__list li{position:relative;padding-left:18px}
.rv-info__list li::before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--brass)}
.rv-info__foot{display:flex;align-items:center;gap:10px;margin:36px 0 0;color:var(--ash)}
.rv-info__foot .icon{width:18px;height:18px;color:var(--brass)}

/* ===== 12 · No-JS, reduced motion ====================================== */
/* spam trap: off-screen for people, still a normal field for bots */
.rv-hp{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
/* Without the script every step is listed in order and the form posts normally (photos via the native picker,
   start times as a plain list); progress, step nav, calendar and the live summary go away. */
.rv-fallback{display:none;margin-bottom:28px;padding:16px 18px;border-radius:var(--r-m);border:1px solid var(--line-strong);color:var(--ash)}
.rv-fallback .link{color:var(--bone);text-decoration:underline;text-underline-offset:.2em}
.no-js .rv-fallback,.rv-card.is-fallback .rv-fallback{display:block}
.no-js :is(.rv-progress,.rv-nav,.rv-review,.rv-sum,.rv-when__links,[data-when-calendar-btn]),
.rv-card.is-fallback :is(.rv-progress,.rv-nav,.rv-review,.rv-when__links){display:none}
.no-js .rv-step + .rv-step,.rv-card.is-fallback .rv-step + .rv-step{margin-top:48px;padding-top:40px;border-top:1px solid var(--line)}
.rv-drop:not(.is-enhanced) .rv-drop__input{position:static;width:100%;height:auto;opacity:1;color:var(--ash);font-size:var(--fs-small)}
.rv-drop:not(.is-enhanced) :is(.rv-drop__browse,.rv-drop__drag){display:none}
.js:not(.reveal-all) .rv-card:not(.is-ready):not(.is-fallback) .rv-step:not([data-step="1"]){display:none}
@media (prefers-reduced-motion:reduce){
  .rv-hero__needle::after{animation:none;translate:0 16px}
  .rv-progress__fill,.rv-option,.rv-style__art img,.rv-toggle__switch,.rv-toggle__switch::after,.rv-cal__day,.rv-time,.rv-privacy__icon,.rv-progress__no .icon{transition:none!important}
  .rv-thumb.is-pending::after,.rv-submit.is-busy .btn__icon{animation:none}
}
