/* ============================================================================
   WALLIS AUTO DETAIL — single-file studio site
   Architecture, motion and grid follow the Lumora spec exactly.
   Palette, imagery and copy are Wallis.
   2026 "warm glass" pass: ivory ground, Fraunces display, frosted-glass
   chrome with a scroll-tracked edge highlight (see site.js #glass-shine).
   ========================================================================== */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&display=swap');

/* ---------- reset ---------- */
*{ box-sizing:border-box; margin:0; padding:0 }
html{ font-size:16px; -webkit-font-smoothing:antialiased }
/* Native date/time controls — datetime-local especially, on iOS Safari —
   carry an intrinsic min-content width that can push past width:100% on a
   flex or grid parent (flex/grid items default to min-width:auto). This
   makes every form control actually respect its box instead of overflowing
   it, whatever container it's dropped into. */
input, select, textarea{ min-width:0; max-width:100% }
input[type="datetime-local"], input[type="date"], input[type="time"],
input[type="month"], input[type="week"]{ width:100% }
body{ background-color:var(--ground,#F4F0E7); color:#eef3f3; font-family:'Onest',sans-serif; overflow-x:hidden;
  background-image:
    radial-gradient(150% 60% at 50% -10%, rgba(255,251,243,.6), rgba(255,251,243,0) 62%),
    radial-gradient(130% 50% at 50% 114%, rgba(120,90,50,.06), rgba(120,90,50,0) 58%);
  background-attachment:fixed; background-repeat:no-repeat }
@media (max-width:640px){ body{ background-attachment:scroll } }
a{ color:inherit; text-decoration:none }
button{ font:inherit; color:inherit; background:none; border:none; cursor:pointer }
ul{ list-style:none }
img{ display:block }
.sr-only{ position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0 }
:focus-visible{ outline:2px solid #8A6E2F; outline-offset:2px }
@media (prefers-reduced-motion: reduce){ *{ animation:none !important; transition:none !important } }

/* ---------- adaptive rem grid ---------- */
@media (max-width:1920px){ html{ font-size:0.833333vw } }
@media (max-width:1440px){ html{ font-size:1.111111vw } }
@media (max-width:1024px){ html{ font-size:1.5625vw } }
@media (max-width:640px){  html{ font-size:4.444444vw } }

/* ---------- tokens (Direction B — cooler, glass-forward, dark) ---------- */
:root{
  /* the whole site is dark now — let native chrome (select popups, the
     datetime-local picker, scrollbars) render dark too instead of the
     mismatched light default. */
  color-scheme: dark;
  --ground:#0f1417;                         /* deep cool near-black page */
  --background:#161f23; --foreground:#eef3f3;
  --ink:#f3f8f8; --muted:#9fb0b3; --subtle:#6f8286;
  --line:#2b3a3f; --surface:#182226; --surface-2:#1f2c31;
  /* Wallis gold — brightened so it holds on the dark ground. */
  --accent:#e0be6d; --accent-bright:#e6c579; --accent-lt:#f0d89a;
  --accent-from:#e6c579; --accent-to:#b98f3f;
  --radius-pill:9999px; --radius-card:1.75rem; --radius-card-sm:1.15rem; --radius-control:0.9rem;
  --text-watermark:13rem; --container-shell:88rem;
  --font-display:'Fraunces','Georgia','Times New Roman',serif;
  /* frosted glass chrome — panels sit ABOVE the dark ground */
  --glass-bg:linear-gradient(150deg,rgba(255,255,255,.13),rgba(255,255,255,.035));
  --glass-fallback:rgba(38,50,55,.62);
  --glass-brd:rgba(255,255,255,.16);
  --glass-shadow:0 26px 60px rgba(0,0,0,.5), 0 4px 14px rgba(0,0,0,.34);
}
.shell{ max-width:88rem; margin-inline:auto }

/* ---------- display type ---------- */
h1,h2,h3,h4,.stmt h2,.center-head h2,.card h3,.srow h3,.panel h2,.fcta h2,
#services h2,.sec h2,#modal h2,.split h3,.panels h3,.hero h1{
  font-family:var(--font-display); font-weight:500; letter-spacing:-.015em }

/* ---------- frosted glass ---------- */
.glass{ position:relative; isolation:isolate;
  background-color:var(--glass-fallback); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(16px) saturate(1.7); backdrop-filter:blur(16px) saturate(1.7);
  border:1px solid var(--glass-brd); box-shadow:var(--glass-shadow);
  border-radius:var(--radius-card-sm) }
.glass::after{ content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  z-index:0; padding:1.5px;
  background:conic-gradient(from var(--edge,90deg),
    rgba(255,255,255,0) 0deg, #fff 38deg, rgba(255,255,255,.18) 100deg,
    rgba(130,205,255,.32) 150deg, rgba(255,255,255,0) 205deg,
    rgba(255,255,255,.55) 312deg, rgba(255,255,255,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  filter:drop-shadow(0 0 4px rgba(255,255,255,.4)) }
.glass > *{ position:relative; z-index:1 }
@media (prefers-reduced-motion:reduce){ .glass::after{ --edge:120deg } }

/* ---------- skip link ---------- */
.skip{ position:fixed; left:1rem; top:1rem; z-index:60; border-radius:.875rem;
  background:#0a0a0a; padding:.5rem 1rem; font-size:.875rem; color:#fff;
  transform:translateY(-200%); transition:transform .2s }
.skip:focus{ transform:none }

/* ---------- reveal primitives ---------- */
.rv{ opacity:0; transform:translateY(var(--rv-y,20px)) scale(var(--rv-s,1));
  transition:opacity .8s cubic-bezier(.16,1,.3,1), transform .8s cubic-bezier(.16,1,.3,1) }
.rv.in{ opacity:1; transform:none }
.line{ display:block; overflow:hidden }
.line>span{ display:block; transform:translateY(102%); opacity:0;
  transition:transform .9s cubic-bezier(.215,.61,.355,1), opacity .9s cubic-bezier(.215,.61,.355,1) }
.line.in>span{ transform:none; opacity:1 }
.wr{ display:inline-block; transform:translateY(24px); opacity:0;
  transition:transform .7s cubic-bezier(.165,.84,.44,1), opacity .7s cubic-bezier(.165,.84,.44,1) }
.wr.in{ transform:none; opacity:1 }

/* ---------- shared components ---------- */
.pill{ display:inline-block }
.pill>span{ display:inline-flex; align-items:center; gap:.75rem; border-radius:9999px;
  font-size:.875rem; font-weight:500; transition:transform .35s cubic-bezier(.2,.8,.2,1) }
.pill:hover>span{ transform:scale(1.04) }
.pill.dark>span{ background:#0a0a0a; color:#fff }
.pill.light>span{ background-color:rgba(255,252,245,.8); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(10px) saturate(1.5); backdrop-filter:blur(10px) saturate(1.5);
  border:1px solid var(--glass-brd); box-shadow:0 6px 16px rgba(74,48,18,.12); color:#eef3f3 }
.pill.outline>span{ border:1px solid rgba(28,23,16,.28); background:transparent; color:#eef3f3 }
.pill.arw>span{ padding:.375rem .375rem .375rem 1.5rem }
.pill.noarw>span{ padding:.875rem 1.75rem }
.pill .badge{ width:2.25rem; height:2.25rem; display:grid; place-items:center;
  border-radius:9999px; font-size:1rem; flex:0 0 auto }
.pill.dark .badge{ background:var(--surface); color:#0a0a0a }
.pill.light .badge,.pill.outline .badge{ background:#0a0a0a; color:#fff }
.pill .badge svg{ transition:transform .35s cubic-bezier(.2,.8,.2,1) }
.pill.a-right:hover .badge svg{ transform:translate(3px,0) }
.pill.a-up:hover .badge svg{ transform:translate(2px,-2px) }

.eyebrow{ display:inline-flex; align-items:center; gap:.5rem; font-size:.875rem; font-weight:500;
  color:rgba(233,239,240,.7) }
.eyebrow::before{ content:""; width:.375rem; height:.375rem; border-radius:9999px; background:rgba(233,239,240,.5) }
.eyebrow.light{ color:rgba(255,255,255,.7) }
.eyebrow.light::before{ background:rgba(255,255,255,.6) }
.eyebrow.boxed{ border:1px solid var(--line); border-radius:9999px; padding:.375rem 1rem }

.chip{ display:inline-flex; border:1px solid rgba(255,255,255,.25); color:#fff;
  border-radius:9999px; padding:.5rem 1rem; font-size:.875rem }

.alink{ display:inline-flex }
.alink>span{ display:inline-block; opacity:.65; transition:transform .35s cubic-bezier(.2,.8,.2,1), opacity .35s }
.alink:hover>span{ transform:translateX(4px); opacity:1 }
.alink.sm>span{ opacity:.7 }
.alink.sm:hover>span{ transform:translateX(3px); opacity:1 }

/* ============================ LOADER ============================ */
#loader{ position:fixed; inset:0; z-index:120; display:flex; flex-direction:column;
  align-items:center; justify-content:center; gap:2rem; background:#0a0a0a; color:#fff;
  border-radius:0 0 2rem 2rem; transform:translateY(0); }
#loader.out{ transform:translateY(-100%); transition:transform .75s cubic-bezier(.22,1,.36,1) }
#loader .mid{ display:flex; flex-direction:column; align-items:center; gap:1.25rem; text-align:center;
  transition:opacity .6s ease, transform .6s ease }
#loader.out .mid{ opacity:0; transform:translateY(-12px) }
#loader .brand{ display:flex; align-items:center; gap:.5rem; font-weight:600; font-size:1.5rem }
#loader .brand img.brand-mark{ height:4rem; width:auto; display:block }
#loader .tag{ max-width:26ch; font-size:.875rem; color:rgba(255,255,255,.55) }
#loader .prog{ width:min(22rem,72vw); display:flex; flex-direction:column; gap:.75rem }
#loader .track{ height:1px; background:rgba(255,255,255,.15) }
#loader .fill{ height:100%; width:0%; background:var(--accent-bright); transition:width .1s ease-out }
#loader .row{ display:flex; justify-content:space-between; font-size:.75rem; font-weight:500;
  text-transform:uppercase; letter-spacing:.05em; color:rgba(255,255,255,.45) }
#loader .num{ font-variant-numeric:tabular-nums; color:rgba(255,255,255,.8) }
@media (min-width:640px){ #loader .brand{ font-size:1.875rem } }

/* ============================ HEADER ============================ */
#header{ position:absolute; inset-inline:0; top:0; z-index:50;
  opacity:0; transform:translateY(-14px);
  transition:opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1) }
#header.in{ opacity:1; transform:none }
#header .bar{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1.25rem }
.brandbtn>span{ display:flex; align-items:center; gap:.5rem; font-size:1.125rem; font-weight:600;
  letter-spacing:-.01em; transition:transform .35s cubic-bezier(.2,.8,.2,1) }
.brandbtn:hover>span{ transform:scale(1.04) }
.brandbtn img.brand-mark{ height:4rem; width:auto; display:block }
.brandbtn .sub{ font-size:.6rem; font-weight:500; letter-spacing:.22em; text-transform:uppercase;
  color:rgba(233,239,240,.45); margin-left:.15rem }
#header nav.main{ display:none }
#header nav.main ul{ display:flex; gap:2rem; font-size:.875rem; font-weight:500 }
#header nav.main button>span{ display:inline-block; opacity:.8; transition:transform .35s cubic-bezier(.2,.8,.2,1), opacity .35s }
#header nav.main button:hover>span{ transform:translateY(-2px); opacity:1 }
#header .caret{ font-size:.75rem; opacity:.6 }
#header .right{ display:flex; align-items:center; gap:.75rem }
.clock{ display:none; align-items:center; border:1px solid var(--glass-brd);
  background-color:var(--glass-fallback); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(12px) saturate(1.6); backdrop-filter:blur(12px) saturate(1.6);
  box-shadow:var(--glass-shadow); border-radius:.9rem;
  padding:.5rem .75rem; gap:.75rem; font-size:.75rem; color:rgba(28,23,16,.72) }
.clock .lbl{ color:rgba(233,239,240,.45) }
.clock .t{ min-width:3.5rem; font-variant-numeric:tabular-nums; font-weight:500; color:#eef3f3 }
.clock .sep{ color:rgba(233,239,240,.3) }
.clock .d{ font-weight:500 }
#menuBtn{ border:1px solid var(--glass-brd); background-color:var(--glass-fallback);
  background-image:var(--glass-bg); box-shadow:var(--glass-shadow);
  -webkit-backdrop-filter:blur(12px) saturate(1.6); backdrop-filter:blur(12px) saturate(1.6);
  border-radius:.9rem; transition:background-color .3s }
#menuBtn:hover{ background-color:rgba(255,253,247,.95) }
#menuBtn>span{ display:inline-flex; align-items:center; gap:.5rem; padding:.5rem 1rem; font-size:.75rem;
  font-weight:500; text-transform:uppercase; letter-spacing:.05em;
  transition:transform .35s cubic-bezier(.2,.8,.2,1) }
#menuBtn:hover>span{ transform:scale(1.05) }
#menuBtn svg{ font-size:.875rem }
#menuBtn .word{ display:none }
@media (min-width:640px){ #header .bar{ padding:1.5rem 2rem } #menuBtn .word{ display:inline } }
@media (min-width:768px){ .clock{ display:flex } }
@media (min-width:1024px){ #header nav.main{ display:flex } }

/* ============================ HERO ============================ */
#home{ position:relative; isolation:isolate; overflow:hidden;
  border-radius:0 0 2rem 2rem; background:#c9c9c9 }
#liquid{ position:absolute; inset:0; z-index:0 }
#liquid img,#liquid video,#liquid canvas{ position:absolute; inset:0; width:100%; height:100% }
#liquid img,#liquid video{ object-fit:cover }
#liquid canvas{ pointer-events:none }
.vignette{ position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(to bottom, rgba(10,10,10,.55), rgba(10,10,10,.15), rgba(10,10,10,.72)) }
/* Below the desktop grid breakpoint #home's height tracks its stacked text
   content, which runs well past the viewport — cover-fit was stretching the
   video/vignette to match that full height instead of the screen, so almost
   the whole frame was cropped away. Pin both layers to the viewport height. */
@media (max-width:1023px){
  #liquid,.vignette{ inset:auto; top:0; left:0; right:0; height:100svh }
}
#heroMark{ pointer-events:none; position:absolute; inset-inline:0; bottom:7rem; z-index:1;
  text-align:center; user-select:none; font-weight:700; line-height:1;
  font-size:var(--text-watermark); color:rgba(255,255,255,.16);
  opacity:0; transform:translateY(20px); transition:opacity 1s ease, transform 1s cubic-bezier(.22,1,.36,1) }
#heroMark.in{ opacity:1; transform:none }
.hero-grid{ position:relative; z-index:20; display:flex; flex-direction:column; gap:2rem;
  padding:7rem 1.25rem 5rem }
.hero-l{ display:flex; flex-direction:column; gap:1.75rem }
.hero h1{ max-width:16ch; font-size:2.25rem; font-weight:600; line-height:.98; letter-spacing:-.02em;
  color:#fff; text-shadow:0 18px 50px rgba(0,0,0,.6) }
.hero .lede{ max-width:46ch; font-size:.95rem; color:rgba(255,255,255,.8) }
.hero .eyebrow{ color:rgba(255,255,255,.8) } .hero .eyebrow::before{ background:rgba(255,255,255,.6) }
.rating{ display:flex; align-items:center; gap:.75rem }
.rating .stars{ color:var(--accent-bright); display:inline-flex; gap:.1rem; font-size:1rem }
.rating .txt{ font-size:.875rem; font-weight:500; color:rgba(255,255,255,.8) }
.hero-cta{ display:flex; flex-wrap:wrap; gap:.75rem }
.hero .pill.outline>span{ border-color:rgba(255,255,255,.5); color:#fff }
.hero .pill.outline .badge{ background:var(--surface); color:#0a0a0a }
.hero-r{ display:flex; flex-direction:column; align-items:flex-start; gap:2rem }
.hcard{ position:relative; isolation:isolate; width:100%; max-width:24rem; border-radius:1.25rem;
  background-color:var(--glass-fallback); background-image:var(--glass-bg); padding:.5rem;
  border:1px solid var(--glass-brd); box-shadow:var(--glass-shadow);
  -webkit-backdrop-filter:blur(16px) saturate(1.7); backdrop-filter:blur(16px) saturate(1.7) }
.hcard::after{ content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:0;
  padding:1.5px; background:conic-gradient(from var(--edge,90deg),
    rgba(255,255,255,0) 0deg,#fff 38deg,rgba(255,255,255,.18) 100deg,rgba(130,205,255,.3) 150deg,
    rgba(255,255,255,0) 205deg,rgba(255,255,255,.55) 312deg,rgba(255,255,255,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude }
.hcard > *{ position:relative; z-index:1 }
.hcard .inner{ display:flex; gap:.5rem; cursor:pointer; border-radius:.875rem }
.hcard .tile{ aspect-ratio:1; width:6rem; display:grid; place-items:center; border-radius:.875rem;
  background:#0a0a0a center/cover no-repeat; font-size:1.875rem; color:var(--accent-bright); flex:0 0 auto;
  overflow:hidden; transition:background-image .3s }
.hcard .tile img.brand-mark{ height:4rem; width:auto; display:block; transition:opacity .3s }
.hcard .tile.has-img img.brand-mark{ opacity:0 }
.hcard .panel{ flex:1; border-radius:.875rem; background:rgba(246,241,231,.66); padding:.75rem;
  color:#eef3f3; display:flex; flex-direction:column; justify-content:space-between; min-width:0 }
.hcard .slot{ position:relative; min-height:4.1rem }
.hcard .item{ position:absolute; inset:0; transition:transform .45s cubic-bezier(.2,.8,.2,1), opacity .45s }
.hcard .cap{ font-size:.65rem; font-weight:500; text-transform:uppercase; letter-spacing:.05em; color:rgba(233,239,240,.45) }
.hcard .ttl{ max-width:9rem; font-size:.875rem; font-weight:500; line-height:1.35 }
.hcard .go-hint{ display:inline-flex; gap:.3rem; margin-top:.35rem; font-size:.7rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.05em; color:var(--accent) }
.hcard .inner:hover .go-hint em{ transform:translateX(2px) }
.hcard .go-hint em{ transition:transform .25s }
.hcard .foot{ display:flex; align-items:center; justify-content:space-between; margin-top:.5rem }
.hcard .dots{ display:flex; gap:.25rem }
.hcard .dot{ height:.25rem; border-radius:9999px; width:.375rem; background:rgba(233,239,240,.2); transition:all .3s }
.hcard .dot.on{ width:1rem; background:rgba(233,239,240,.7) }
.hcard .navs{ display:flex; gap:.25rem }
.hcard .navs button{ width:1.75rem; height:1.75rem; display:grid; place-items:center; border-radius:9999px;
  background:var(--surface); color:rgba(233,239,240,.7); box-shadow:0 0 0 1px var(--line); transition:color .2s }
.hcard .navs button:hover{ color:#eef3f3 }
.partners{ width:100%; max-width:24rem }
.partners .lbl{ margin-bottom:.75rem; font-size:.75rem; font-weight:500; color:rgba(255,255,255,.6) }
.partners ul{ display:grid; grid-template-columns:repeat(2,1fr); column-gap:1rem; row-gap:.75rem }
.partners li>span{ display:flex; align-items:center; gap:.375rem; font-size:.75rem; color:rgba(255,255,255,.75);
  opacity:.85; transition:transform .35s cubic-bezier(.2,.8,.2,1), opacity .35s }
.partners li:hover>span{ transform:translateY(-2px); opacity:1 }
.partners svg{ font-size:.875rem; color:rgba(255,255,255,.5) }
.statusbar{ display:flex; align-items:center; justify-content:space-between; gap:.75rem;
  border-top:1px solid rgba(255,255,255,.18); padding:1.25rem; font-size:.75rem; font-weight:500;
  text-transform:uppercase; letter-spacing:.025em; color:rgba(255,255,255,.7);
  position:relative; z-index:20; opacity:0; transition:opacity .8s ease }
.statusbar.in{ opacity:1 }
.statusbar .mid{ display:none }
@media (min-width:640px){
  .hero-grid{ padding-inline:2rem } .statusbar{ padding-inline:2rem } .statusbar .mid{ display:block }
  .hero h1{ font-size:3rem } .partners ul{ grid-template-columns:repeat(4,1fr) }
}
@media (min-width:768px){ .hero h1{ font-size:3.75rem } }
@media (min-width:1024px){
  .hero-grid{ display:grid; min-height:100lvh; grid-template-columns:repeat(12,1fr);
    gap:2.5rem; padding:9rem 2rem 7rem; align-content:center }
  .hero-l{ grid-column:span 7 } .hero-r{ grid-column:span 5; align-items:flex-end }
  .hcard,.partners{ max-width:19rem } .partners .lbl{ text-align:right }
}

/* ============================ ABOUT ============================ */
#about{ background:var(--surface) }
#about .grid{ display:grid; grid-template-columns:1fr; align-items:center; gap:3rem; padding:5rem 1.25rem }
.globe-wrap{ position:relative; min-height:14rem }
.globe-bg{ position:absolute; left:-1rem; top:50%; transform:translateY(-50%);
  font-size:12rem; color:rgba(233,239,240,.08) }
.globe-note{ position:relative; margin-top:auto; display:flex; align-items:center; gap:.75rem;
  font-size:.875rem; color:rgba(233,239,240,.7) }
.globe-note svg{ font-size:1.5rem; color:#eef3f3; flex:0 0 auto }
.globe-note span{ max-width:16rem }
.stmt{ display:flex; flex-direction:column; gap:2.5rem }
.stmt h2{ font-size:1.5rem; font-weight:500; line-height:1.35; letter-spacing:-.01em }
.stmt .dim{ color:var(--muted) }
.stmt .foot{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between;
  gap:1.5rem; border-top:1px solid var(--line); padding-top:1.5rem }
.socials{ display:flex; gap:.5rem; margin-top:.5rem }
.socials a{ width:2.25rem; height:2.25rem; display:grid; place-items:center; border-radius:9999px; font-size:.875rem }
.socials svg{ transition:transform .35s cubic-bezier(.2,.8,.2,1) }
.socials a:hover svg{ transform:scale(1.18) }
.socials .s1{ background:var(--accent); color:#fff }
.socials .s2{ background:var(--surface); color:rgba(233,239,240,.7) }
@media (min-width:640px){ #about .grid{ padding-inline:2rem } .stmt h2{ font-size:1.875rem } .globe-bg{ font-size:16rem } }
@media (min-width:1024px){
  #about .grid{ grid-template-columns:1fr 1fr; padding-block:7rem }
  .globe-wrap{ min-height:20rem; display:flex; flex-direction:column }
  .globe-bg{ left:-1.5rem; font-size:20rem }
}

/* ============================ BAND ============================ */
.band{ background:var(--surface) }
.band ul{ display:flex; flex-direction:column; gap:.75rem; padding:2.5rem 1.25rem }
.band li{ flex:1 }
.band .tile{ display:grid; place-items:center; height:6rem; border-radius:9999px;
  font-size:1.875rem; font-weight:500; transition:transform .4s cubic-bezier(.2,.8,.2,1) }
.band .tile:hover{ transform:scale(1.03) }
.band .t-light{ background:var(--surface); color:#eef3f3 }
.band .t-accent{ background:linear-gradient(to bottom right,var(--accent-from),var(--accent-to)); color:#fff }
.band .t-dark{ background:#0a0a0a; color:#fff }
.band .t-ghost{ background:rgba(241,240,238,.6); color:rgba(233,239,240,.35) }
@media (min-width:640px){
  .band ul{ flex-direction:row; gap:1rem; padding-inline:2rem }
  .band .tile{ height:10rem; font-size:2.25rem }
  .band .t-dark svg{ font-size:3rem }
}

/* ============================ WORK ============================ */
#works{ background:var(--surface) }
#works .wrap{ padding:2.5rem 1.25rem 5rem }
.center-head{ display:flex; flex-direction:column; align-items:center; gap:1.25rem; text-align:center;
  margin-bottom:3rem }
.center-head h2{ font-size:2.25rem; font-weight:600; letter-spacing:-.02em; width:fit-content }
.cards{ display:grid; grid-template-columns:1fr; gap:1.5rem }
.card{ position:relative; min-height:22rem; overflow:hidden; border-radius:2rem; background:#0a0a0a;
  padding:1.5rem; color:#fff; box-shadow:0 0 0 1px rgba(255,255,255,.05); display:block;
  transition:transform .45s cubic-bezier(.2,.8,.2,1) }
.card:hover{ transform:translateY(-8px) scale(1.012) }
.card .bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.5;
  transition:transform 1.2s cubic-bezier(.2,.8,.2,1), opacity .6s }
.card:hover .bg{ transform:scale(1.06); opacity:.62 }
.card .veil{ position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,10,10,.55) 0%, rgba(10,10,10,.25) 35%, rgba(10,10,10,.92) 100%) }
.card .meta{ position:relative; display:flex; justify-content:space-between; align-items:flex-start;
  font-size:.75rem; text-transform:uppercase; letter-spacing:.025em; color:rgba(255,255,255,.65) }
.card .arw{ width:2.75rem; height:2.75rem; display:grid; place-items:center; border-radius:9999px;
  background:rgba(255,255,255,.1); color:#fff; box-shadow:0 0 0 1px rgba(255,255,255,.15);
  transition:transform .4s cubic-bezier(.2,.8,.2,1); flex:0 0 auto }
.card:hover .arw{ transform:rotate(45deg) scale(1.08) }
.card .btm{ position:absolute; inset-inline:1.5rem; bottom:1.5rem }
.card h3{ font-size:1.5rem; font-weight:500; letter-spacing:-.01em }
.card p{ margin-top:.5rem; max-width:28rem; font-size:.875rem; color:rgba(255,255,255,.7) }
.card .tags{ margin-top:1.25rem; display:flex; flex-wrap:wrap; gap:.5rem }
@media (min-width:640px){
  #works .wrap{ padding-inline:2rem } .center-head h2{ font-size:3rem }
  .card{ min-height:26rem; padding:2rem } .card .btm{ inset-inline:2rem; bottom:2rem }
  .card h3{ font-size:1.875rem }
}
@media (min-width:768px){ .cards{ grid-template-columns:repeat(2,1fr) } }
@media (min-width:1024px){ #works .wrap{ padding-bottom:7rem } }

/* ============================ SERVICES ============================ */
#services{ background:var(--surface) }
#services .wrap{ padding:5rem 1.25rem }
#services h2{ margin:1.25rem 0 3rem; max-width:16ch; font-size:2.25rem; font-weight:600; letter-spacing:-.02em }
.srow{ border-top:1px solid var(--line) }
.srow:first-child{ border-top:0 }
.srow a{ display:flex; align-items:center; gap:1rem; border-radius:1.25rem; padding:1.5rem;
  background:rgba(241,240,238,0);
  transition:background-color .5s cubic-bezier(.2,.8,.2,1), padding .5s cubic-bezier(.2,.8,.2,1) }
.srow a:hover{ background:rgba(241,240,238,1); padding-left:2rem; padding-right:1.25rem }
.srow .n{ width:1.75rem; font-size:.875rem; font-weight:500; color:rgba(233,239,240,.4); flex:0 0 auto }
.srow h3{ flex:1; font-size:1.5rem; font-weight:500; letter-spacing:-.01em }
.srow p{ display:none; max-width:20rem; font-size:.875rem; color:rgba(233,239,240,.55) }
.srow .go{ width:2.5rem; height:2.5rem; display:grid; place-items:center; border-radius:9999px;
  background:#0a0a0a; color:#fff; flex:0 0 auto; transition:transform .4s cubic-bezier(.2,.8,.2,1) }
.srow a:hover .go{ transform:translateX(5px) }
@media (min-width:640px){
  #services .wrap{ padding-inline:2rem } #services h2{ margin-bottom:3.5rem; font-size:3rem }
  .srow a{ gap:1.5rem; padding-block:2rem } .srow .n{ width:2.5rem }
  .srow h3{ font-size:1.875rem } .srow .go{ width:3rem; height:3rem }
}
@media (min-width:768px){ .srow h3{ font-size:2.25rem } }
@media (min-width:1024px){ #services .wrap{ padding-block:7rem } .srow p{ display:block } }

/* ============================ TRUST PANEL ============================ */
.trust{ background:var(--surface) }
.trust .wrap{ padding:0 1.25rem 5rem }
.panel{ border-radius:2rem; background:#0a0a0a; padding:3rem 1.5rem; color:#fff }
.panel h2{ margin-top:1rem; max-width:22ch; font-size:1.875rem; font-weight:500; letter-spacing:-.01em }
.badges{ margin-top:3.5rem; display:grid; grid-template-columns:repeat(2,1fr); column-gap:2rem; row-gap:2.5rem }
.badges strong{ display:block; font-size:1.25rem; font-weight:600; letter-spacing:-.01em; color:var(--accent-lt) }
.badges span{ display:block; margin-top:.75rem; font-size:.875rem; color:rgba(255,255,255,.55) }
.quotes{ margin-top:3.5rem; display:grid; grid-template-columns:1fr; gap:2rem;
  border-top:1px solid rgba(255,255,255,.1); padding-top:3rem }
.quotes blockquote{ font-size:.95rem; line-height:1.7; color:rgba(255,255,255,.8) }
.quotes figcaption{ margin-top:1rem; font-size:.75rem; text-transform:uppercase; letter-spacing:.14em;
  color:var(--accent-bright) }
@media (min-width:640px){ .trust .wrap{ padding-inline:2rem } .panel{ padding:4rem 2rem } .panel h2{ font-size:2.25rem } }
@media (min-width:768px){ .panel{ padding-inline:4rem } .quotes{ grid-template-columns:1fr 1fr; gap:3rem } }
@media (min-width:1024px){ .trust .wrap{ padding-bottom:7rem } .badges{ grid-template-columns:repeat(4,1fr) } }

/* ============================ FOOTER ============================ */
footer{ position:relative; overflow:hidden; border-radius:2rem 2rem 0 0; background:#0a0a0a; color:#fff }
footer .wrap{ position:relative; z-index:10; padding:5rem 1.25rem 2.5rem }
.fcta{ display:flex; flex-direction:column; gap:2rem; border-bottom:1px solid rgba(255,255,255,.1);
  padding-bottom:4rem }
.fcta h2{ max-width:16ch; font-size:2.25rem; font-weight:600; letter-spacing:-.02em }
.fcols{ display:grid; grid-template-columns:1fr; gap:3rem; padding-block:4rem }
.fcols h3{ font-size:.75rem; text-transform:uppercase; letter-spacing:.025em; color:rgba(255,255,255,.4) }
.fcols ul{ margin-top:1rem; display:flex; flex-direction:column; gap:.6rem; font-size:.875rem }
.fbrand .nm{ display:flex; align-items:center; gap:.5rem; font-size:1.125rem; font-weight:600 }
.fbrand img.brand-mark{ height:4rem; width:auto; display:block }
.fbrand p{ margin-top:1rem; max-width:22rem; font-size:.875rem; color:rgba(255,255,255,.55) }
.fbrand .tel{ display:inline-block; margin-top:1.25rem; font-size:1.5rem; font-weight:600;
  color:var(--accent-lt) }
.legal{ display:flex; flex-direction:column; align-items:center; justify-content:space-between; gap:1rem;
  border-top:1px solid rgba(255,255,255,.1); padding-top:2rem; font-size:.75rem; color:rgba(255,255,255,.45) }
.legal .r{ display:flex; gap:1.5rem }
.legal .ver{ opacity:.6; font-variant-numeric:tabular-nums }
#footMark{ position:absolute; inset-inline:0; bottom:-1.5rem; z-index:0; text-align:center;
  pointer-events:none; user-select:none; font-weight:700; line-height:1;
  font-size:var(--text-watermark); color:rgba(255,255,255,.05) }
@media (min-width:640px){
  footer .wrap{ padding-inline:2rem } .fcta h2{ font-size:3rem }
  .legal{ flex-direction:row }
}
@media (min-width:768px){ .fcols{ grid-template-columns:repeat(2,1fr) } .fcta h2{ font-size:3.75rem } }
@media (min-width:1024px){
  footer .wrap{ padding-top:6rem }
  .fcta{ flex-direction:row; align-items:flex-end; justify-content:space-between }
  .fcols{ grid-template-columns:repeat(4,1fr) }
}

/* ============================ NAV OVERLAY ============================ */
#nav{ position:fixed; inset:0; z-index:115; display:none; flex-direction:column;
  background:#0a0a0a; color:#fff; opacity:0; transition:opacity .5s cubic-bezier(.22,1,.36,1) }
#nav.show{ display:flex } #nav.on{ opacity:1 }
#nav .top{ display:flex; align-items:center; justify-content:space-between; padding:1.25rem }
#nav .bnd{ display:flex; align-items:center; gap:.5rem; font-size:1.125rem; font-weight:600 }
#nav .bnd img.brand-mark{ height:4rem; width:auto; display:block }
#closeNav{ display:inline-flex; align-items:center; gap:.5rem; border:1px solid rgba(255,255,255,.15);
  border-radius:.875rem; padding:.5rem 1rem; font-size:.75rem; font-weight:500; text-transform:uppercase;
  letter-spacing:.05em; color:rgba(255,255,255,.7); transition:border-color .3s, color .3s }
#closeNav:hover{ border-color:rgba(255,255,255,.4); color:#fff }
#nav .mid{ flex:1; min-height:0; display:flex; flex-direction:column; justify-content:center;
  overflow-y:auto; -webkit-overflow-scrolling:touch; padding-block:.5rem }
#nav ul{ display:flex; flex-direction:column; gap:.25rem }
#nav .item{ display:flex; gap:1rem; width:100%; padding-block:.5rem; text-align:left;
  font-size:2.25rem; font-weight:600; letter-spacing:-.02em;
  transform:translateY(1rem); opacity:0; transition:all .5s ease-out }
#nav.on .item{ transform:none; opacity:1 }
#nav .item .ix{ font-size:1rem; font-weight:400; color:rgba(255,255,255,.3); transition:color .3s }
#nav .item .lb{ color:rgba(255,255,255,.7); transition:color .3s }
#nav .item:hover .ix{ color:var(--accent-bright) }
#nav .item:hover .lb{ color:#fff }
#nav button.item{ background:none; border:0; font-family:inherit; cursor:pointer; align-items:center }
#nav .chev{ margin-left:auto; font-size:1.1rem; color:rgba(255,255,255,.4); transition:transform .3s ease }
#nav .hasKids.open .chev{ transform:rotate(180deg) }
#nav .kids{ display:none; flex-direction:column; gap:0; padding:.15rem 0 .5rem 3rem }
#nav .hasKids.open .kids{ display:flex }
#nav .kids a{ display:block; padding-block:.4rem; font-size:1.05rem; font-weight:500;
  color:rgba(255,255,255,.55); transition:color .2s }
#nav .kids a:hover{ color:#fff }
#nav .btm{ display:flex; flex-direction:column; gap:.75rem; border-top:1px solid rgba(255,255,255,.1);
  padding:1.5rem 1.25rem; font-size:.75rem; text-transform:uppercase; letter-spacing:.025em;
  color:rgba(255,255,255,.45) }
#nav .btm button{ color:rgba(255,255,255,.7); transition:color .3s }
#nav .btm button:hover{ color:#fff; text-decoration:underline }
@media (min-width:640px){
  #nav .top{ padding:1.5rem 2rem } #nav .item{ font-size:3.75rem }
  #nav .kids{ padding-left:4.75rem } #nav .kids a{ font-size:1.5rem }
  #nav .btm{ flex-direction:row; justify-content:space-between; padding-inline:2rem }
}

/* ============================ MODAL ============================ */
#modal{ position:fixed; inset:0; z-index:110; display:none; align-items:flex-end; justify-content:center;
  padding:1rem; background:rgba(233,239,240,.35); backdrop-filter:blur(16px); opacity:0; transition:opacity .4s }
#modal.show{ display:flex } #modal.on{ opacity:1 }
#modal .pnl{ position:relative; width:100%; max-width:32rem; overflow:hidden; border-radius:1.5rem;
  background-color:#FBF5EA; background-image:linear-gradient(160deg,#FFFDF8,#FAF3E5);
  padding:1.5rem; border:1px solid var(--glass-brd);
  box-shadow:0 30px 60px -12px rgba(40,26,8,.4), inset 0 1px 0 rgba(255,255,255,.9);
  transform:translateY(28px); transition:transform .5s cubic-bezier(.22,1,.36,1) }
#modal.on .pnl{ transform:none }
#closeModal{ position:absolute; right:1rem; top:1rem; width:2.25rem; height:2.25rem; display:grid;
  place-items:center; border-radius:9999px; background:var(--surface); color:rgba(233,239,240,.6); transition:.2s }
#closeModal:hover{ background:var(--surface-2); color:#eef3f3 }
#modal .head{ margin-bottom:1.5rem; display:flex; flex-direction:column; gap:.375rem }
#modal .kick{ display:inline-flex; align-items:center; gap:.5rem; font-size:.875rem; font-weight:500;
  color:rgba(233,239,240,.6) }
#modal .kick::before{ content:""; width:.375rem; height:.375rem; border-radius:9999px; background:var(--accent) }
#modal h2{ font-size:1.5rem; font-weight:600; letter-spacing:-.01em }
#modal form{ display:flex; flex-direction:column; gap:1rem }
#modal label{ display:flex; flex-direction:column; gap:.4rem }
#modal .cap{ font-size:.75rem; font-weight:500; text-transform:uppercase; letter-spacing:.025em; color:rgba(233,239,240,.5) }
#modal input,#modal select,#modal textarea{ width:100%; border:1px solid var(--line);
  background:rgba(241,240,238,.5); border-radius:.875rem; padding:.75rem 1rem; font-size:.875rem;
  font-family:inherit; outline:none; transition:.2s }
#modal textarea{ resize:none }
#modal input:focus,#modal select:focus,#modal textarea:focus{ border-color:rgba(233,239,240,.3); background:var(--surface) }
#modal .err{ font-size:.75rem; color:#b4402f }
#modal .btm{ margin-top:.5rem; display:flex; align-items:center; justify-content:space-between; gap:1rem }
#modal .note{ font-size:.75rem; color:rgba(233,239,240,.45) }
#modal .done{ display:none; flex-direction:column; align-items:center; text-align:center;
  padding-block:2rem; gap:1rem }
#modal .done .mark{ width:3.5rem; height:3.5rem; display:grid; place-items:center; border-radius:9999px;
  background:#0a0a0a; color:var(--accent-bright); font-size:1.5rem }
#modal .done p{ max-width:34ch; font-size:.875rem; color:rgba(233,239,240,.6) }
#modal .setup{ margin-top:1rem; border:1px dashed rgba(138,110,47,.5); border-radius:.875rem;
  padding:.75rem .9rem; font-size:.72rem; line-height:1.5; color:rgba(233,239,240,.55) }
#modal .setup code{ font-family:ui-monospace,Menlo,monospace; color:var(--accent) }
@media (min-width:640px){ #modal{ align-items:center } #modal .pnl{ padding:2rem } #modal h2{ font-size:1.875rem } }

/* ============================ SHARED SECTION BITS ============================ */
.sec{ background:transparent }
.sec .wrap{ padding:5rem 1.25rem }
.sec h2.big{ margin:1.25rem 0 1.5rem; max-width:18ch; font-size:2.25rem; font-weight:600; letter-spacing:-.02em }
.sec .lede{ max-width:62ch; font-size:1rem; color:rgba(233,239,240,.6) }
.dark-sec{ background:#0a0a0a; color:#fff; border-radius:2rem; overflow:hidden }
.dark-sec .lede{ color:rgba(255,255,255,.78) }
.dark-sec .eyebrow{ color:rgba(255,255,255,.7) } .dark-sec .eyebrow::before{ background:rgba(255,255,255,.6) }
@media (min-width:640px){ .sec .wrap{ padding-inline:2rem } .sec h2.big{ font-size:3rem } }
@media (min-width:1024px){ .sec .wrap{ padding-block:7rem } }

/* wide cinematic plate */
/* margin-block only — a shorthand here would reset .shell's margin-inline:auto
   and drop the hero image hard against the left edge on wide screens. */
.plate{ position:relative; margin-block:2.5rem; border-radius:2rem; overflow:hidden; background:#0a0a0a }
.plate img,.plate video{ width:100%; aspect-ratio:21/9; object-fit:cover; display:block }
.plate video{ position:absolute; inset:0; height:100%; opacity:0; transition:opacity .8s ease }
.plate video.on{ opacity:1 }
.plate figcaption{ position:absolute; left:0; right:0; bottom:0; padding:1.5rem; z-index:2;
  font-size:.75rem; text-transform:uppercase; letter-spacing:.16em; color:var(--accent-lt);
  background:linear-gradient(180deg,transparent,rgba(10,10,10,.85)) }
@media (max-width:640px){ .plate img,.plate video{ aspect-ratio:16/10 } }

/* numbered lists */
.steps{ counter-reset:s; display:grid; gap:1px; background:rgba(255,255,255,.12);
  border-radius:1.25rem; overflow:hidden; margin-top:2.5rem }
.steps li{ counter-increment:s; background:#0a0a0a; padding:1.5rem 1.5rem 1.5rem 4.25rem; position:relative }
.steps li::before{ content:"0" counter(s); position:absolute; left:1.5rem; top:1.6rem;
  font-size:.75rem; letter-spacing:.1em; color:var(--accent-bright) }
/* These sit on a #0a0a0a card. h4 declared no colour, so it inherited the
   page's #111 and the headings were effectively invisible. */
.steps h4{ font-size:1.05rem; font-weight:600; margin-bottom:.4rem; color:#fff }
.steps p{ font-size:.9rem; color:rgba(255,255,255,.78) }
.proc{ counter-reset:pp; display:grid; gap:2rem; margin-top:3rem;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)) }
.proc li{ counter-increment:pp; padding-top:1.25rem; border-top:2px solid var(--accent) }
.proc li::before{ content:"Step " counter(pp); display:block; font-size:.7rem; letter-spacing:.2em;
  text-transform:uppercase; color:var(--accent); margin-bottom:.65rem }
.proc h4{ font-size:1.15rem; font-weight:600; margin-bottom:.45rem }
.proc p{ font-size:.9rem; color:rgba(233,239,240,.6) }
.dark-sec .proc li{ border-top-color:var(--accent-bright) }
.dark-sec .proc li::before{ color:var(--accent-bright) }
.dark-sec .proc p{ color:rgba(255,255,255,.78) }

/* split */
.split{ display:grid; gap:2.5rem; grid-template-columns:1fr; align-items:center; margin-top:2.5rem }
.split p{ font-size:.95rem; color:rgba(233,239,240,.6) }
.split p+p{ margin-top:1rem }
.dark-sec .split p{ color:rgba(255,255,255,.78) }
.split h3{ font-size:1.5rem; font-weight:600; letter-spacing:-.01em; margin-bottom:.9rem }
.split figure{ border-radius:1.25rem; overflow:hidden; background:#15171b }
.split figure img{ width:100%; aspect-ratio:16/10; object-fit:cover }
@media (min-width:900px){ .split{ grid-template-columns:1fr 1fr } }

/* before / after compare */
.cmp{ position:relative }
.cmp .stage{ position:relative; overflow:hidden; border-radius:1.25rem; aspect-ratio:4/3;
  background:#15171b; cursor:ew-resize; touch-action:pan-y }
.cmp .stage img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover }
.cmp .aft{ position:absolute; inset:0; width:50%; overflow:hidden }
.cmp .aft img{ width:auto; min-width:100%; }
.cmp .hdl{ position:absolute; top:0; bottom:0; left:50%; width:2px; background:var(--accent-bright);
  box-shadow:0 0 22px rgba(201,162,75,.7); pointer-events:none }
.cmp .grip{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:2.5rem; height:2.5rem;
  border-radius:9999px; border:1px solid var(--accent-bright); background:rgba(10,10,10,.8);
  display:grid; place-items:center; color:var(--accent-bright); font-size:.8rem }
.cmp .tag{ position:absolute; bottom:.75rem; font-size:.6rem; letter-spacing:.18em; text-transform:uppercase;
  background:rgba(10,10,10,.7); color:var(--accent-lt); padding:.3rem .55rem; border-radius:2px; pointer-events:none }
.cmp .tag.l{ left:.75rem } .cmp .tag.r{ right:.75rem }
.cmp input[type=range]{ width:100%; margin-top:.9rem; -webkit-appearance:none; appearance:none; background:transparent; cursor:pointer }
.cmp input[type=range]::-webkit-slider-runnable-track{ height:2px; background:rgba(201,162,75,.4) }
.cmp input[type=range]::-moz-range-track{ height:2px; background:rgba(201,162,75,.4) }
.cmp input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:18px; height:18px; border-radius:50%;
  background:var(--accent-bright); border:2px solid #0a0a0a; margin-top:-8px }
.cmp input[type=range]::-moz-range-thumb{ width:18px; height:18px; border-radius:50%;
  background:var(--accent-bright); border:2px solid #0a0a0a }

/* ppf film svg */
.film{ border-radius:1.25rem; padding:1.25rem; background:#0f1216 }
.film svg{ width:100%; height:auto }
.film .pct{ margin-top:.6rem; font-size:.7rem; letter-spacing:.2em; text-transform:uppercase; color:var(--accent-bright) }
.checks{ display:grid; gap:.6rem; margin:1.25rem 0 }
.checks li{ position:relative; padding-left:1.6rem; font-size:.92rem; color:rgba(233,239,240,.6) }
.dark-sec .checks li{ color:rgba(255,255,255,.8) }
.checks li::before{ content:""; position:absolute; left:0; top:.55em; width:8px; height:8px;
  border-right:1.5px solid var(--accent-bright); border-bottom:1.5px solid var(--accent-bright);
  transform:rotate(45deg) translateY(-3px) }
.fine{ font-size:.8rem; color:rgba(233,239,240,.45); margin-top:1rem; line-height:1.55 }
.dark-sec .fine{ color:rgba(255,255,255,.62) }

/* panels (marine / rv) */
.panels{ display:grid; gap:1.5rem; grid-template-columns:1fr; margin-top:2.5rem }
.panels article{ border-radius:1.5rem; overflow:hidden; background:var(--surface) }
.panels img{ width:100%; aspect-ratio:16/10; object-fit:cover }
.panels .bd{ padding:1.5rem }
.panels h3{ font-size:1.35rem; font-weight:600; margin-bottom:.5rem }
.panels p{ font-size:.9rem; color:rgba(233,239,240,.6) }
@media (min-width:768px){ .panels{ grid-template-columns:1fr 1fr } }

/* plans */
.plans{ display:grid; gap:1.5rem; grid-template-columns:1fr; margin-top:2.5rem }
.plans article{ border:1px solid var(--line); border-radius:1.5rem; padding:2rem; display:flex;
  flex-direction:column; gap:.9rem; align-items:flex-start }
.plans h3{ font-size:1.35rem; font-weight:600 }
.plans p{ font-size:.9rem; color:rgba(233,239,240,.6) }
.plans .pill{ margin-top:auto }
@media (min-width:768px){ .plans{ grid-template-columns:1fr 1fr } }

/* gallery */
.chips{ display:flex; flex-wrap:wrap; gap:.5rem; margin:2rem 0 }
.chips button{ font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; padding:.6rem 1rem;
  border-radius:9999px; border:1px solid var(--line); color:rgba(233,239,240,.55); transition:.25s }
.chips button:hover{ color:#eef3f3; border-color:var(--accent) }
.chips button.on{ background:#0a0a0a; border-color:#0a0a0a; color:#fff }
.shots{ display:grid; gap:.9rem; grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr)) }
.shots li[hidden]{ display:none }
.shots button{ display:block; width:100%; border-radius:1rem; overflow:hidden; background:#15171b; position:relative; cursor:zoom-in }
.shots img{ width:100%; aspect-ratio:4/3; object-fit:cover; transition:transform .6s cubic-bezier(.2,.8,.2,1) }
.shots button:hover img{ transform:scale(1.06) }
#lb{ position:fixed; inset:0; z-index:118; display:none; align-items:center; justify-content:center;
  gap:1rem; padding:clamp(1rem,4vw,3rem); background:rgba(6,7,9,.96); backdrop-filter:blur(6px) }
#lb.show{ display:flex }
#lb img{ max-height:80svh; max-width:100%; width:auto; border-radius:1rem }
#lb figcaption{ margin-top:.9rem; font-size:.85rem; color:rgba(255,255,255,.6); text-align:center }
#lb .nv,#lb .cl{ width:3rem; height:3rem; border-radius:9999px; border:1px solid rgba(255,255,255,.25);
  color:#fff; display:grid; place-items:center; font-size:1.4rem; flex:0 0 auto; transition:.2s }
#lb .nv:hover,#lb .cl:hover{ background:rgba(255,255,255,.12) }
#lb .cl{ position:absolute; top:1rem; right:1rem }
@media (max-width:640px){ #lb .nv{ position:absolute; bottom:1.2rem } #lb .nv.p{ left:24% } #lb .nv.n{ right:24% } }

/* contact */
#contact .grid{ display:grid; gap:3rem; grid-template-columns:1fr; align-items:start }
#contact .tel{ display:inline-block; margin:1.25rem 0; font-size:2.25rem; font-weight:700;
  letter-spacing:-.02em; color:var(--accent) }
#contact dl{ display:grid; gap:1rem; margin-top:1rem }
#contact dt{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--accent); margin-bottom:.3rem }
#contact dd{ margin:0; font-size:.92rem; color:rgba(233,239,240,.6) }
@media (min-width:900px){ #contact .grid{ grid-template-columns:1fr 1fr } }


/* ppf gloss demo */
.film{ cursor:crosshair }
.film svg{ display:block }
#lightBare,#lightFilm,#lightCore{ transition:cx .10s linear, cy .10s linear }
#lblBare,#lblFilm{ transition:opacity .5s ease; font-weight:600 }
.film .pct #fHint{ color:rgba(255,255,255,.35); text-transform:none; letter-spacing:.06em }
@media (prefers-reduced-motion:reduce){ #lightBare,#lightFilm,#lightCore{ transition:none } }

/* ============================ MULTI-PAGE ADDITIONS ============================ */
#header{ position:sticky; top:0; background:rgba(244,240,231,.7);
  -webkit-backdrop-filter:blur(16px) saturate(1.6); backdrop-filter:blur(16px) saturate(1.6);
  border-bottom:1px solid transparent; transition:background-color .3s, border-color .3s }
#header.stuck{ background:rgba(250,244,231,.92); border-bottom-color:var(--glass-brd) }
#header nav.main ul{ align-items:center }
#header nav.main a{ font-size:.85rem; font-weight:500; color:rgba(233,239,240,.65); transition:color .2s;
  display:inline-flex; align-items:center; gap:.25rem; padding:.4rem 0 }
#header nav.main a:hover,#header nav.main a.cur{ color:#eef3f3 }
#header nav.main a.cur{ box-shadow:inset 0 -1px 0 var(--accent) }
.hasSub{ position:relative }
.sub{ position:absolute; left:-1rem; top:100%; min-width:15rem; padding:.65rem 0;
  background:var(--surface); border:1px solid var(--line); border-radius:.875rem;
  box-shadow:0 20px 50px -24px rgba(0,0,0,.35); opacity:0; visibility:hidden;
  transform:translateY(6px); transition:.22s ease; z-index:20 }
.hasSub:hover .sub,.hasSub:focus-within .sub{ opacity:1; visibility:visible; transform:none }
.sub a{ display:block !important; padding:.55rem 1rem !important; font-size:.85rem }
.sub a:hover{ background:var(--surface) }
.hdr-tel{ display:none; flex-direction:column; gap:0; text-decoration:none }
.hdr-tel .lbl{ font-size:.6rem; letter-spacing:.16em; text-transform:uppercase; color:rgba(233,239,240,.45) }
.hdr-tel .t{ font-weight:600; font-size:.95rem; color:#eef3f3 }
.hdr-book{ display:none }
.hdr-acct{ display:inline-flex; align-items:center; gap:.4rem; text-decoration:none;
  font-size:.75rem; font-weight:500; text-transform:uppercase; letter-spacing:.05em;
  color:var(--ink); padding:.5rem .8rem; border:1px solid var(--glass-brd);
  background-color:var(--glass-fallback); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(12px) saturate(1.6); backdrop-filter:blur(12px) saturate(1.6);
  box-shadow:var(--glass-shadow); border-radius:.9rem;
  transition:background-color .3s, transform .35s cubic-bezier(.2,.8,.2,1) }
.hdr-acct:hover{ transform:scale(1.04) }
.hdr-acct svg{ font-size:.95rem; opacity:.7 }
/* mobile: icon only, sized to sit beside the menu button */
@media (max-width:767px){
  .hdr-acct{ padding:.5rem .55rem }
  .hdr-acct > span{ display:none }
  .hdr-acct svg{ font-size:1.05rem; opacity:.85 }
}
@media (min-width:768px){ .hdr-tel{ display:flex } }
@media (min-width:1024px){ .hdr-book{ display:inline-block } }

.crumbs{ display:flex; flex-wrap:wrap; gap:.5rem; align-items:center;
  padding:1.25rem; font-size:.75rem; color:rgba(233,239,240,.45) }
.crumbs a{ color:rgba(233,239,240,.6) } .crumbs a:hover{ color:var(--accent); text-decoration:underline }
.crumbs em{ font-style:normal; opacity:.4 }
@media (min-width:640px){ .crumbs{ padding-inline:2rem } }

.phero{ padding:2rem 1.25rem 3rem }
.phero.narrow .shell{ max-width:52rem }
.phero h1{ font-size:2.25rem; font-weight:700; letter-spacing:-.03em; line-height:1.02; margin:.75rem 0 1.25rem }
.phero .lede{ max-width:60ch; font-size:1.05rem; color:rgba(233,239,240,.6) }
.phero .hero-cta{ margin-top:1.75rem }
@media (min-width:640px){ .phero{ padding-inline:2rem } .phero h1{ font-size:3.25rem } }
@media (min-width:1024px){ .phero h1{ font-size:4rem } }

.prose .blk{ max-width:68ch; margin-bottom:2.25rem }
.prose h2{ font-size:1.6rem; font-weight:600; letter-spacing:-.015em; margin-bottom:.7rem }
.prose h3{ font-size:1.3rem; font-weight:600; letter-spacing:-.01em; margin-bottom:.6rem }
.prose p{ color:rgba(233,239,240,.62); font-size:1rem; line-height:1.72 }
.prose strong{ color:#eef3f3; font-weight:600 }
.narrow-wrap{ max-width:56rem }

.prices{ display:grid; gap:1.25rem; grid-template-columns:1fr; margin:2.5rem 0 1rem }
@media (min-width:700px){ .prices{ grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr)) } }
.pcard{ border:1px solid var(--line); border-radius:1.25rem; padding:1.75rem; display:flex;
  flex-direction:column; gap:.6rem; align-items:flex-start; background:var(--surface) }
.pcard h3{ font-size:1.15rem; font-weight:600 }
.pcard .amt{ font-size:1.9rem; font-weight:700; letter-spacing:-.02em; color:var(--accent) }
.pcard .amt em{ font-style:normal; font-size:.9rem; font-weight:500; color:rgba(233,239,240,.5) }
.pcard p{ font-size:.9rem; color:rgba(233,239,240,.6) }
.pcard .pill{ margin-top:auto; padding-top:.5rem }
.quoteonly{ margin-top:1.5rem; padding:1.25rem 1.5rem; border-left:3px solid var(--accent);
  background:var(--surface); border-radius:0 .875rem .875rem 0; font-size:.95rem; color:rgba(233,239,240,.7) }
.caveat{ border-left:3px solid var(--line); padding-left:1rem }

.rel-h{ font-size:1.4rem; font-weight:600; letter-spacing:-.015em; margin-bottom:1.5rem }
.rcards{ display:grid; gap:1.25rem; grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr)) }
.rcard{ position:relative; display:block; min-height:15rem; border-radius:1.5rem; overflow:hidden;
  background:#0a0a0a; transition:transform .45s cubic-bezier(.2,.8,.2,1) }
.rcard.tall{ min-height:19rem }
.rcard:hover{ transform:translateY(-6px) }
.rcard img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.55;
  transition:transform 1s cubic-bezier(.2,.8,.2,1), opacity .5s }
.rcard:hover img{ transform:scale(1.06); opacity:.68 }
.rcard .veil{ position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(10,10,10,.25),rgba(10,10,10,.9)) }
.rc-b{ position:absolute; left:1.35rem; right:1.35rem; bottom:1.25rem; z-index:2;
  display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; color:#fff }
.rc-b strong{ font-size:1.2rem; font-weight:600; letter-spacing:-.01em; flex:1 }
.rc-b em{ font-style:normal; width:2rem; height:2rem; display:grid; place-items:center;
  border-radius:9999px; background:rgba(255,255,255,.14); font-size:.85rem;
  transition:transform .4s cubic-bezier(.2,.8,.2,1) }
.rcard:hover .rc-b em{ transform:rotate(45deg) }
.rc-d{ flex-basis:100%; font-size:.82rem; color:rgba(255,255,255,.6); line-height:1.5 }

.acards{ display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr)) }
.acard{ border:1px solid var(--line); border-radius:1.25rem; padding:1.5rem; display:flex;
  flex-direction:column; gap:.4rem; transition:.25s; position:relative }
.acard:hover{ border-color:var(--accent); background:var(--surface) }
.acard strong{ font-size:1.15rem; font-weight:600; padding-right:2.5rem }
.acard span{ font-size:.85rem; color:rgba(233,239,240,.55); line-height:1.5 }
.acard em{ position:absolute; right:1.25rem; top:1.35rem; font-style:normal; color:var(--accent);
  transition:transform .35s cubic-bezier(.2,.8,.2,1) }
.acard:hover em{ transform:translate(2px,-2px) }

.arealinks{ display:flex; flex-wrap:wrap; gap:.6rem }
.arealinks a{ border:1px solid var(--line); border-radius:9999px; padding:.6rem 1.1rem;
  font-size:.85rem; color:rgba(233,239,240,.65); transition:.22s }
.arealinks a:hover{ border-color:var(--accent); color:#eef3f3; background:var(--surface) }
.arealinks.big a{ font-size:.95rem; padding:.75rem 1.35rem }
.areastrip{ font-size:.95rem; color:rgba(233,239,240,.6); line-height:1.9 }
.areastrip a{ color:var(--accent); text-decoration:underline; text-underline-offset:3px }
.big-checks li{ font-size:1rem; padding-left:1.8rem; margin-bottom:.55rem }

.faqsec{ background:var(--surface) }
.faqs{ margin-top:2rem; border-top:1px solid var(--line); max-width:64rem }
.faq{ border-bottom:1px solid var(--line) }
.faq summary{ cursor:pointer; list-style:none; padding:1.35rem 2.5rem 1.35rem 0; position:relative;
  font-size:1.05rem; font-weight:600; letter-spacing:-.01em }
.faq summary::-webkit-details-marker{ display:none }
.faq summary::after{ content:"+"; position:absolute; right:.5rem; top:1.2rem; font-size:1.4rem;
  font-weight:400; color:var(--accent); transition:transform .25s }
.faq[open] summary::after{ transform:rotate(45deg) }
.faq div{ padding:0 2.5rem 1.5rem 0 }
.faq p{ color:rgba(233,239,240,.62); line-height:1.72 }

.ctaband{ background:#0a0a0a; color:#fff; padding:clamp(3rem,7vw,5rem) 1.25rem }
.ctaband h2{ font-size:2rem; font-weight:700; letter-spacing:-.025em }
.ctaband p{ margin-top:.75rem; color:rgba(255,255,255,.6); max-width:48ch }
.ctaband .row{ display:flex; flex-wrap:wrap; gap:.75rem; margin-top:2rem }
.pill.outline-l>span{ border:1px solid rgba(255,255,255,.35); color:#fff; padding:.875rem 1.75rem;
  border-radius:9999px; display:inline-flex; align-items:center }
.pill.outline-l:hover>span{ border-color:#fff; background:rgba(255,255,255,.08) }
@media (min-width:640px){ .ctaband{ padding-inline:2rem } .ctaband h2{ font-size:2.6rem } }

.calcsec{ background:var(--surface) }
.calc{ display:grid; gap:1.5rem; grid-template-columns:1fr; margin-top:2.5rem;
  border:1px solid var(--line); border-radius:1.5rem; background:var(--surface); padding:1.75rem }
.calc-in{ display:grid; gap:1rem }
.calc label{ display:flex; flex-direction:column; gap:.4rem }
/* Same trap as the wizard: display:flex above outranks the UA rule for the
   hidden attribute, so conditional fields showed no matter what the JS set. */
.calc [hidden]{ display:none !important }
.calc label.calc-check{ flex-direction:row; align-items:flex-start; gap:.6rem; font-size:.9rem;
  color:rgba(233,239,240,.75); line-height:1.5; cursor:pointer }
.calc label.calc-check input{ width:1.05rem; height:1.05rem; margin-top:.12rem; flex:0 0 auto; accent-color:var(--accent) }
.calc .cap{ font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:rgba(233,239,240,.5); font-weight:500 }
.calc select{ width:100%; border:1px solid var(--line); background:var(--surface);
  border-radius:.875rem; padding:.8rem 1rem; font-size:.95rem; font-family:inherit; color:#eef3f3 }
.calc-out{ border-left:0; border-top:1px solid var(--line); padding-top:1.5rem }
.calc-amt{ font-size:2.6rem; font-weight:700; letter-spacing:-.03em; color:var(--accent); margin:.35rem 0 .4rem }
.calc-desc{ font-size:.92rem; color:rgba(233,239,240,.75); line-height:1.55; margin:0 0 1rem; max-width:40ch }
.calc-desc:empty{ display:none }
.calc-note{ font-size:.88rem; color:rgba(233,239,240,.55); max-width:34ch; line-height:1.6 }
.calc .row{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.5rem }
@media (min-width:860px){
  .calc{ grid-template-columns:1.1fr 1fr; padding:2.25rem }
  .calc-out{ border-top:0; border-left:1px solid var(--line); padding:0 0 0 2.25rem }
}

/* ============================ BOOKING WIZARD ============================ */
.wiz{ margin-top:2rem; border:1px solid var(--line); border-radius:1.5rem; background:var(--surface);
  padding:1.5rem; position:relative; overflow:hidden }
@media (min-width:720px){ .wiz{ padding:2.25rem } }

.wiz-steps{ display:flex; gap:.5rem; margin-bottom:1.75rem; font-size:.7rem; font-weight:500;
  letter-spacing:.1em; text-transform:uppercase; color:rgba(233,239,240,.4) }
.wiz-steps li{ display:flex; align-items:center; gap:.5rem }
.wiz-steps li::after{ content:''; width:1.25rem; height:1px; background:var(--line) }
.wiz-steps li:last-child::after{ display:none }
.wiz-steps li.on{ color:var(--accent) }
.wiz-steps li.done{ color:rgba(233,239,240,.6) }
.wiz-steps b{ display:inline-grid; place-items:center; width:1.35rem; height:1.35rem; border-radius:9999px;
  border:1px solid currentColor; font-size:.72rem; font-weight:600 }
.wiz-steps li.on b{ background:var(--accent); border-color:var(--accent); color:#14100b }
.wiz-steps li.done b{ background:rgba(233,239,240,.6); border-color:transparent; color:#fff }

.wiz-panel[hidden]{ display:none }
.wiz-panel h2{ font-size:1.4rem; font-weight:600; letter-spacing:-.01em; margin-bottom:.4rem }
.wiz-panel .wiz-sub{ font-size:.9rem; color:rgba(233,239,240,.55); max-width:46ch; margin-bottom:1.5rem; line-height:1.6 }

/* step 1 — category cards */
.wiz-cats{ display:grid; gap:.9rem; grid-template-columns:1fr 1fr }
@media (min-width:720px){ .wiz-cats{ grid-template-columns:1fr 1fr 1fr 1fr } }
.wiz-cat{ position:relative; display:flex; flex-direction:column; align-items:flex-start; gap:.55rem;
  text-align:left; border:1px solid rgba(255,255,255,.16); border-radius:1.125rem; padding:1rem 2.4rem 1rem 1rem;
  background:var(--surface-2); transition:border-color .2s, background .2s, transform .2s }
.wiz-cat:hover{ border-color:var(--subtle) }
.wiz-cat svg{ width:1.75rem; height:1.75rem; color:var(--accent-bright) }
.wiz-cat.on{ border-color:var(--accent); background:var(--surface-2); box-shadow:inset 0 0 0 1px var(--accent) }
.wiz-cat strong{ font-size:.95rem; font-weight:600 }
.wiz-cat span{ font-size:.76rem; color:rgba(233,239,240,.7); line-height:1.4 }
/* Tick sits in its own gutter on the right — it used to be absolutely
   positioned with no containing block and landed on top of the icon. */
.wiz-cat .tick{ position:absolute; top:.85rem; right:.85rem; width:1.05rem; height:1.05rem;
  display:grid; place-items:center; opacity:0; transform:scale(.6);
  transition:opacity .18s ease, transform .18s cubic-bezier(.2,.9,.3,1.4) }
.wiz-cat .tick svg{ width:100%; height:100% }
.wiz-cat.on .tick{ opacity:1; transform:none; color:var(--accent) }

/* morph loader */
.wiz-load{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.5rem;
  min-height:16rem; padding:2rem 0 }
.wiz-morph{ position:relative; width:5rem; height:5rem }
.wiz-morph svg{ position:absolute; inset:0; width:100%; height:100%; color:var(--accent);
  opacity:0; transform:scale(.8) rotate(-8deg); transition:opacity .6s ease, transform .6s ease }
.wiz-morph svg.on{ opacity:1; transform:none }
.wiz-load p{ font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(233,239,240,.4) }
.wiz-load .bar{ width:min(16rem,60vw); height:2px; background:var(--line); overflow:hidden; border-radius:2px }
.wiz-load .bar i{ display:block; height:100%; width:40%; background:var(--accent);
  animation:wizslide 1.1s ease-in-out infinite }
@keyframes wizslide{ 0%{ transform:translateX(-100%) } 100%{ transform:translateX(350%) } }
@media (prefers-reduced-motion:reduce){
  .wiz-morph svg{ opacity:1; transform:none; position:static; width:1.75rem; height:1.75rem; display:inline-block }
  .wiz-morph{ width:auto; height:auto; display:flex; gap:.75rem }
  .wiz-load .bar i{ animation:none; width:100% }
}

/* step 3 — customize fieldsets */
.wiz-fs{ border:1px solid var(--line); border-radius:1.125rem; padding:1.1rem; margin-bottom:1rem }
.wiz-fs > legend, .wiz-fs > .fs-h{ font-size:.9rem; font-weight:600; padding:0 .35rem; margin-left:-.35rem;
  display:flex; align-items:center; gap:.5rem }
.wiz-fs svg{ width:1.1rem; height:1.1rem; color:var(--accent) }
.wiz-grid{ display:grid; gap:.85rem; margin-top:.9rem }
@media (min-width:640px){ .wiz-grid{ grid-template-columns:1fr 1fr } }
.wiz label{ display:flex; flex-direction:column; gap:.35rem; font-size:.8rem }
/* display:flex above outranks the UA rule for [hidden], which is why every
   conditional field used to render regardless of what the wizard set. */
.wiz [hidden]{ display:none !important }
.wiz label.wiz-check{ flex-direction:row; align-items:flex-start; gap:.55rem; font-size:.85rem;
  color:rgba(233,239,240,.75); grid-column:1/-1; cursor:pointer }
.wiz label.wiz-check input{ width:1rem; height:1rem; margin-top:.15rem; flex:0 0 auto; accent-color:var(--accent) }
.wiz-avlist{ display:flex; flex-direction:column; gap:.1rem; margin-top:.9rem; border-top:1px solid var(--line) }
.wiz-avlist .wiz-check{ grid-column:auto; padding:.6rem 0; border-bottom:1px solid var(--line); font-size:.84rem; align-items:center }

/* step 4 — schedule */
.wiz-cal{ border:1px solid var(--line); border-radius:1rem; padding:1rem; background:var(--surface); margin-bottom:1.25rem; overflow:hidden }
.wiz-cal-h{ display:flex; align-items:center; justify-content:space-between; margin-bottom:.75rem }
.wiz-cal-h strong{ font-size:.95rem; font-weight:600 }
.wiz-cal-nav{ width:2rem; height:2rem; display:grid; place-items:center; border:1px solid var(--line);
  border-radius:9999px; background:var(--surface); font-size:1.1rem; line-height:1; color:rgba(233,239,240,.7); cursor:pointer }
.wiz-cal-nav:hover:not([disabled]){ border-color:var(--accent); color:#eef3f3 }
.wiz-cal-nav[disabled]{ opacity:.3; cursor:default }
.wiz-cal-dow{ display:grid; grid-template-columns:repeat(7,1fr); gap:.3rem; margin-bottom:.4rem }
.wiz-cal-dow span{ text-align:center; font-size:.68rem; letter-spacing:.06em; text-transform:uppercase;
  color:rgba(233,239,240,.4); font-weight:600 }
.wiz-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:.3rem }
.wiz-cal-x{ aspect-ratio:1 }
/* Bigger, easier-to-tap day cells — was cramped at .85rem/.25rem gap, especially on mobile. */
.wiz-cal-d{ aspect-ratio:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:.15rem; border:1px solid transparent; border-radius:.7rem; font:inherit; font-size:1rem;
  color:rgba(233,239,240,.35); background:none }
.wiz-cal-d.open{ color:#eef3f3; background:var(--surface); border-color:var(--line); cursor:pointer }
.wiz-cal-d.open:hover{ border-color:var(--accent) }
.wiz-cal-d.open b{ font-weight:600 }
.wiz-cal-d.open i{ font-style:normal; font-size:.66rem; font-weight:700; color:var(--accent); line-height:1 }
.wiz-cal-d.none{ color:rgba(233,239,240,.28) }
.wiz-cal-d.on{ border-color:var(--accent); background:var(--accent); color:#14100b; box-shadow:inset 0 0 0 1px var(--accent) }
.wiz-cal-d.on i{ color:#14100b }
.wiz-slotwrap{ margin-bottom:.25rem }
.wiz-repeat{ margin:1rem 0 }
.wiz-repeat .wiz-grid{ margin-top:.7rem }
.wiz-slotday{ font-size:.8rem; font-weight:600; color:#eef3f3; margin-bottom:.6rem }
.wiz-slots{ display:grid; gap:.5rem; grid-template-columns:repeat(auto-fill,minmax(5rem,1fr)) }
.wiz-slot{ border:1px solid var(--line); border-radius:.7rem; padding:.6rem .3rem; font-size:.82rem;
  background:var(--surface); color:rgba(233,239,240,.75); text-align:center }
.wiz-slot:hover{ border-color:var(--subtle) }
.wiz-slot.on{ border-color:var(--accent); background:var(--accent); color:#14100b; font-weight:600 }

/* step 5 — card */
.wiz-card{ min-height:5rem; margin:.5rem 0 .35rem;
  border:1px solid var(--line); border-radius:.75rem; padding:.9rem; background:var(--surface) }

/* what a service includes, from the printed brochure */
.wiz-includes{ margin:.9rem 0 0; padding:.85rem 1rem; border-radius:.75rem;
  background:var(--surface); border:1px solid var(--line); list-style:none }
.wiz-includes:empty{ display:none }
.wiz-includes li{ position:relative; padding-left:1.1rem; font-size:.8rem; line-height:1.55;
  color:rgba(233,239,240,.68) }
.wiz-includes li + li{ margin-top:.4rem }
.wiz-includes li::before{ content:''; position:absolute; left:0; top:.55em; width:.4rem; height:.4rem;
  border-radius:50%; background:var(--accent); opacity:.55 }

/* a standing caveat inside a fieldset (e.g. aviation condition pricing) */
.wiz-note{ margin-top:.9rem; padding:.7rem .9rem; border-left:3px solid var(--accent);
  border-radius:.25rem; background:rgba(201,162,75,.09);
  font-size:.8rem; line-height:1.55; color:rgba(233,239,240,.75) }

/* ============================ ACCOUNT / MANAGEMENT ============================ */
.acct{ max-width:34rem; margin:1.5rem auto 0; border:1px solid var(--line); border-radius:1.5rem;
  background:var(--surface); padding:1.75rem }
@media (min-width:720px){ .acct{ padding:2.25rem } }
.acct-h{ font-size:1.6rem; font-weight:700; letter-spacing:-.02em; margin-bottom:.5rem }
.acct-sub{ font-size:.92rem; color:rgba(233,239,240,.6); line-height:1.6; margin-bottom:1.5rem }
.acct-sub strong{ color:#eef3f3; font-weight:600 }
.acct-role{ display:inline-block; padding:.1rem .5rem; border-radius:9999px; background:var(--accent);
  color:#fff; font-size:.7rem; font-weight:600; letter-spacing:.06em; text-transform:uppercase }

.acct-modes{ display:inline-flex; gap:.25rem; padding:.25rem; margin-bottom:1rem;
  border:1px solid var(--line); border-radius:9999px; background:var(--surface) }
.acct-mode{ font:inherit; font-size:.82rem; font-weight:600; cursor:pointer; padding:.4rem 1.1rem;
  border:0; border-radius:9999px; background:none; color:rgba(233,239,240,.55) }
/* Direction A left this as a literal near-black on #111 — against the dark
   surface it sits on now, the "active" tab barely read as selected. */
.acct-mode.on{ background:var(--accent); color:#14100b }
.acct-field{ display:flex; flex-direction:column; gap:.35rem; margin-bottom:1.1rem }
/* display:flex above outranks the UA rule for [hidden] (see the .wiz note) — restore it. */
.acct-field[hidden]{ display:none !important }
.acct-check{ display:flex; flex-direction:row; align-items:flex-start; gap:.55rem;
  font-size:.9rem; color:var(--ink); margin-bottom:1.1rem; cursor:pointer }
.acct-check input{ width:1.05rem; height:1.05rem; margin-top:.15rem; flex:0 0 auto; accent-color:var(--accent) }
.acct-check[hidden]{ display:none !important }
.acct-field .cap{ font-size:.64rem; letter-spacing:.16em; text-transform:uppercase;
  color:rgba(233,239,240,.45); font-weight:500 }
.acct-field input, .acct-field select, .acct-field textarea{ width:100%; border:1px solid var(--line);
  background:var(--surface); border-radius:.75rem; padding:.85rem 1rem; font-size:1rem;
  font-family:inherit; color:#eef3f3 }
.acct-field input:focus, .acct-field select:focus, .acct-field textarea:focus{
  border-color:var(--accent); background:var(--surface); outline:none }
/* a full-width text-input treatment looks broken on a colour swatch/file picker */
.acct-field input[type=color]{ width:3.5rem; height:2.75rem; padding:.25rem; cursor:pointer }
.acct-field input[type=file]{ padding:.6rem }
.acct-code{ font-size:1.5rem !important; letter-spacing:.4em; text-align:center;
  font-variant-numeric:tabular-nums }

.acct-nav{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.25rem }
.acct-nav .pill[disabled]{ opacity:.5; pointer-events:none }
/* A transparent "ghost" button next to a solid gold CTA read as the weakest
   thing on the page — give it an actual fill so it reads as a real control. */
.acct-nav .pill.ghost>span{ background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18);
  color:var(--ink); padding:.85rem 1.4rem }

.acct-err{ margin-bottom:1.1rem; padding:.8rem 1rem; border-left:3px solid #b4402f; border-radius:.25rem;
  background:rgba(180,64,47,.07); font-size:.86rem; line-height:1.55; color:#8f3325 }
.acct-fine{ margin-top:1rem; font-size:.78rem; color:rgba(233,239,240,.5); line-height:1.6 }
.acct-preview-banner{ margin-bottom:1.25rem; padding:.8rem 1rem; border-left:3px solid var(--accent);
  border-radius:.25rem; background:rgba(224,190,109,.1); font-size:.86rem; line-height:1.55; color:var(--ink) }

/* VIP — visual perk only for repeat customers (2+ completed jobs), no
   pricing logic anywhere in this. Gold treatment, restrained: a badge, a
   warmer heading, a soft gold edge on the existing card shapes. */
.acct-vip-badge{ display:inline-block; margin-left:.6rem; padding:.15rem .55rem; border-radius:9999px;
  background:linear-gradient(135deg,var(--accent-bright),var(--accent)); color:#14100b;
  font-size:.62rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; vertical-align:middle }
.acct-vip-label{ color:var(--accent-bright) }
.acct-vip .acct-h{ background:linear-gradient(135deg,var(--accent-bright),var(--accent-lt));
  -webkit-background-clip:text; background-clip:text; color:transparent }
.acct-vip .acct-job, .acct-vip .acct-card{ border-color:rgba(224,190,109,.35);
  box-shadow:0 0 0 1px rgba(224,190,109,.12), 0 10px 26px rgba(224,190,109,.07) }
.acct-fine a{ color:var(--accent); text-decoration:underline }
.acct-link{ color:var(--accent); text-decoration:underline; font:inherit; padding:0 }

.acct-switch{ margin-top:1.75rem; padding-top:1.25rem; border-top:1px solid var(--line);
  font-size:.85rem; text-align:center }
.acct-switch a{ color:var(--accent); text-decoration:underline }

.acct-card{ margin-top:1.25rem; padding:1.25rem; border:1px solid var(--line); border-radius:1.125rem;
  background:var(--surface) }
.acct-card h2{ font-size:1rem; font-weight:600; margin-bottom:.4rem }
.acct-card p{ font-size:.86rem; color:rgba(233,239,240,.62); line-height:1.6; margin-bottom:1rem }
.acct-card .pill{ margin-top:.25rem }
.acct-perms{ display:flex; flex-wrap:wrap; gap:.4rem; list-style:none }
.acct-perms li{ font-size:.72rem; font-family:ui-monospace,Menlo,monospace; padding:.25rem .55rem;
  border-radius:.4rem; background:var(--surface); border:1px solid var(--line); color:rgba(233,239,240,.7) }

/* account settings — saved vehicles list, feedback disclosure */
.acct-vlist{ list-style:none; margin:0 0 1rem; display:flex; flex-direction:column; gap:.4rem }
.acct-vlist li{ display:flex; align-items:center; justify-content:space-between; gap:.75rem;
  padding:.55rem .8rem; border:1px solid var(--line); border-radius:.6rem; font-size:.85rem }
.acct-feedback{ margin-top:1.5rem; border-top:1px solid var(--line); padding-top:1.25rem }
.acct-feedback > summary{ cursor:pointer; font-size:.9rem; font-weight:500; color:var(--accent); list-style:none }
.acct-feedback > summary::-webkit-details-marker{ display:none }
.acct-feedback > summary::before{ content:'+ '; }
.acct-feedback[open] > summary::before{ content:'\2013 '; }
.acct-feedback-body{ margin-top:1rem }
.acct-feedback-body textarea{ width:100%; border:1px solid var(--line); background:var(--surface);
  border-radius:.75rem; padding:.85rem 1rem; font-size:.9rem; font-family:inherit; color:#eef3f3; resize:vertical }

/* a text link to a specific job (progress update, etc.) lands here */
.acct-job-hi{ animation:acctJobHi 2.4s ease-out 1 }
@keyframes acctJobHi{ 0%{ box-shadow:0 0 0 3px var(--accent); border-radius:1.125rem } 100%{ box-shadow:0 0 0 0 transparent } }

/* customer portal — job history */
.acct-jh{ font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(233,239,240,.45);
  font-weight:600; margin:1.75rem 0 .6rem }
.acct-job{ border:1px solid var(--line); background:var(--surface); padding:1.1rem 1.25rem; margin-bottom:.7rem }
.acct-job h3{ font-size:1rem; font-weight:600 }
.acct-jmeta{ font-size:.8rem; color:rgba(233,239,240,.55); margin-top:.15rem }
.acct-shots{ margin-top:.9rem; display:grid; grid-template-columns:repeat(auto-fill,minmax(7.5rem,1fr)); gap:.5rem }
.acct-shotlbl{ grid-column:1/-1; font-size:.62rem; letter-spacing:.14em; text-transform:uppercase;
  color:rgba(233,239,240,.4); font-weight:600; margin-top:.3rem }
.acct-shot{ margin:0; overflow:hidden; border:1px solid var(--line) }
.acct-shot img{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; cursor:zoom-in;
  background:var(--surface-2) }

.acct-load{ display:flex; flex-direction:column; align-items:center; gap:1rem; padding:2.5rem 0 }
.acct-load .bar{ width:min(14rem,60vw); height:2px; background:var(--line); overflow:hidden; border-radius:2px }
.acct-load .bar i{ display:block; height:100%; width:40%; background:var(--accent);
  animation:wizslide 1.1s ease-in-out infinite }
.acct-load p{ font-size:.8rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(233,239,240,.4) }

/* a message that had to survive a step change (e.g. a lost slot) */
.wiz-flash{ margin:0 0 1.25rem; border-left:3px solid var(--accent); border-radius:.25rem;
  background:rgba(201,162,75,.1); padding:.8rem 1rem; font-size:.86rem; line-height:1.55; color:#eef3f3 }
.wiz .cap{ font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:rgba(233,239,240,.62); font-weight:500 }
.wiz select, .wiz input[type=text], .wiz input[type=tel], .wiz input[type=email], .wiz input[type=number], .wiz textarea{
  width:100%; border:1px solid var(--line); background:var(--surface); border-radius:.75rem;
  padding:.7rem .85rem; font-size:.9rem; font-family:inherit; color:#eef3f3 }
/* Every <select> on the site sets a light `color` for its own dark trigger
   box, but a dropdown's actual option list renders in the browser's own
   native popup — which keeps that inherited light text color while forcing
   its own background, independent of whatever the trigger looks like. Only
   the wizard's select had a matching option{} override; everywhere else
   (the home estimator, account/staff forms, lead forms, the visualizer)
   quietly rendered near-white text on the popup's white background. One
   sitewide fallback instead of duplicating it per form. */
select option{ background:#182226; color:#eef3f3 }
.wiz textarea{ resize:vertical; min-height:3.5rem }
.wiz select:focus, .wiz input:focus, .wiz textarea:focus{ border-color:var(--accent); background:var(--surface); outline:none }
.wiz .err{ font-size:.74rem; color:#b4402f }

/* running total + summary */
.wiz-total{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:.5rem;
  border-top:1px solid var(--line); margin-top:1.25rem; padding-top:1.25rem }
.wiz-total .amt{ font-size:1.9rem; font-weight:700; letter-spacing:-.03em; color:var(--accent) }
.wiz-total .cap{ font-size:.64rem; letter-spacing:.16em; text-transform:uppercase; color:rgba(233,239,240,.45) }
.wiz-lines{ margin-top:.75rem; font-size:.82rem; color:rgba(233,239,240,.6) }
.wiz-lines div{ display:flex; justify-content:space-between; gap:1rem; padding:.15rem 0 }
.wiz-lines .tot{ font-weight:600; color:#eef3f3; border-top:1px solid var(--line); margin-top:.3rem; padding-top:.4rem }
.wiz-fine{ font-size:.76rem; color:rgba(233,239,240,.5); line-height:1.6; margin-top:1rem }

/* nav */
.wiz-nav{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.75rem }
.wiz-nav .pill.ghost>span{ background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18); color:var(--ink); padding:.85rem 1.4rem }
.wiz-nav .pill[disabled]{ opacity:.4; pointer-events:none }

/* done */
.wiz-done{ text-align:center; padding:1.5rem 0 }
.wiz-done .mark{ width:3.25rem; height:3.25rem; margin:0 auto 1rem; display:grid; place-items:center;
  border-radius:9999px; background:var(--accent); color:#fff }
.wiz-done .mark svg{ width:1.4rem; height:1.4rem }
.wiz-done h2{ font-size:1.4rem; font-weight:600; margin-bottom:.5rem }
.wiz-done p{ max-width:42ch; margin:0 auto 1rem; color:rgba(233,239,240,.6); font-size:.92rem; line-height:1.6 }

/* alt booking routes below the wizard */
.book-alt{ margin-top:2.5rem; border-top:1px solid var(--line); padding-top:1.75rem }
.book-alt > summary{ cursor:pointer; font-size:.9rem; font-weight:500; color:var(--accent); list-style:none }
.book-alt > summary::-webkit-details-marker{ display:none }
.book-alt > summary::before{ content:'+ '; }
.book-alt[open] > summary::before{ content:'– '; }
.book-alt-body{ margin-top:1.5rem }

.embedbox{ border:1px dashed var(--accent); border-radius:1.5rem; padding:2rem; background:var(--surface);
  display:flex; flex-direction:column; gap:.9rem; align-items:flex-start }
.embedbox .cap{ font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--accent); font-weight:600 }
.embedbox p{ color:rgba(233,239,240,.65); max-width:52ch }
.embedbox a[href^="tel"]{ color:var(--accent); text-decoration:underline }

.leadform{ display:grid; gap:1.1rem; max-width:40rem; margin-top:1.5rem }
.leadform label{ display:flex; flex-direction:column; gap:.4rem }
.leadform .cap{ font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:rgba(233,239,240,.5); font-weight:500 }
.leadform input,.leadform select,.leadform textarea{ width:100%; border:1px solid var(--line);
  background:var(--surface); border-radius:.875rem; padding:.85rem 1rem; font-size:.95rem;
  font-family:inherit; color:#eef3f3; outline:none; transition:.2s }
.leadform textarea{ resize:vertical }
.leadform input:focus,.leadform select:focus,.leadform textarea:focus{ border-color:var(--accent); background:var(--surface) }
.leadform .err{ font-size:.78rem; color:#b4402f }
.leadform .btm{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem }
.leadform .note{ font-size:.8rem; color:rgba(233,239,240,.45) }
.leadform .setup{ border:1px dashed rgba(138,110,47,.5); border-radius:.875rem; padding:.75rem .9rem;
  font-size:.72rem; line-height:1.5; color:rgba(233,239,240,.55) }
.leadform .setup code{ font-family:ui-monospace,Menlo,monospace; color:var(--accent) }
.done{ display:none; flex-direction:column; align-items:flex-start; gap:1rem; margin-top:1.5rem }
.done .mark{ width:3.5rem; height:3.5rem; display:grid; place-items:center; border-radius:9999px;
  background:#0a0a0a; color:var(--accent-bright); font-size:1.5rem }
.done .mark img.brand-mark{ height:2.75rem; width:auto; display:block }
.done h2{ font-size:1.5rem; font-weight:600 }
.done p{ max-width:44ch; color:rgba(233,239,240,.6) }
.done a[href^="tel"]{ color:var(--accent); text-decoration:underline }

.bigquote{ border-left:3px solid var(--accent); padding:.25rem 0 .25rem 1.75rem; margin-bottom:2.5rem }
.bigquote blockquote{ font-size:1.1rem; line-height:1.75; color:rgba(233,239,240,.72) }
.bigquote blockquote::before{ content:"\201C" } .bigquote blockquote::after{ content:"\201D" }
.bigquote figcaption{ margin-top:1rem; font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color:var(--accent) }

.bigtel{ display:inline-block; margin:1.25rem 0; font-size:2.4rem; font-weight:700;
  letter-spacing:-.03em; color:var(--accent) }
.bigtel:hover{ color:#eef3f3 }
.facts{ display:grid; gap:1.1rem; margin-top:.5rem; max-width:44rem }
.facts dt{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--accent); margin-bottom:.3rem }
.facts dd{ margin:0; font-size:.95rem; color:rgba(233,239,240,.6) }

.mbar{ position:fixed; left:0; right:0; bottom:0; z-index:90; display:flex; gap:.6rem;
  padding:.7rem .9rem calc(.7rem + env(safe-area-inset-bottom));
  background:rgba(250,244,231,.9); border-top:1px solid var(--glass-brd);
  box-shadow:0 -8px 24px rgba(74,48,18,.1);
  -webkit-backdrop-filter:blur(16px) saturate(1.6); backdrop-filter:blur(16px) saturate(1.6) }
.mbar .pill{ flex:1 } .mbar .pill>span{ width:100%; justify-content:center }
@media (min-width:768px){ .mbar{ display:none } }
@media (max-width:767px){ footer{ padding-bottom:6rem } }

#nav .item{ text-decoration:none }
.hero .rating .txt strong{ color:#fff; font-weight:600 }

/* ---- HOME: header floats over the cinematic hero, as it did originally ---- */
body.home #header{
  position:fixed; background:transparent; backdrop-filter:none; border-bottom-color:transparent;
}
body.home #header.stuck{
  background:rgba(10,10,10,.92); backdrop-filter:blur(14px);
  border-bottom-color:rgba(201,162,75,.25);
}
body.home .brandbtn span{ color:#fff }
body.home .brandbtn .sub{ color:rgba(255,255,255,.55) }
body.home #header nav.main a{ color:rgba(255,255,255,.7) }
body.home #header nav.main a:hover,
body.home #header nav.main a.cur{ color:#fff }
body.home #header nav.main a.cur{ box-shadow:inset 0 -1px 0 var(--accent-bright) }
body.home .hdr-tel .lbl{ color:rgba(255,255,255,.5) }
body.home .hdr-tel .t{ color:#fff }
body.home #menuBtn{ border-color:rgba(255,255,255,.28); background:rgba(255,255,255,.06); color:#fff }
body.home #menuBtn:hover{ background:rgba(255,255,255,.14) }
body.home .hdr-book>span{ background:var(--accent-bright); color:#12100a }
body.home .hdr-acct{ border-color:rgba(255,255,255,.28); background:rgba(255,255,255,.06); color:#fff }
body.home .hdr-acct:hover{ background:rgba(255,255,255,.14) }
/* dropdown stays light so it reads against the photo */
body.home .sub a{ color:rgba(233,239,240,.7) !important }
body.home .sub a:hover{ color:#eef3f3 !important }
/* the hero owns the full viewport again */
body.home #home{ margin-top:0 }

/* ============================ INSIGHTS PAGE ============================ */
.verify{ border:1px solid var(--line); border-radius:1.5rem; padding:1.75rem; background:var(--surface) }
.v-head{ display:flex; flex-wrap:wrap; gap:1rem; align-items:center; justify-content:space-between }
.v-head .cap{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--accent); font-weight:600; margin-bottom:.3rem }
.v-actions{ display:flex; gap:.5rem }
.v-actions .pill>span{ padding:.6rem 1.1rem; font-size:.78rem }
.v-note{ margin-top:1rem; font-size:.88rem; color:rgba(233,239,240,.55); line-height:1.65; max-width:70ch }
.v-stats{ display:grid; gap:.75rem; grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr)); margin:1.5rem 0 }
.v-stat{ border:1px solid var(--line); border-radius:.875rem; padding:1rem; background:var(--surface) }
.v-stat strong{ display:block; font-size:1.6rem; font-weight:700; letter-spacing:-.02em; color:var(--accent) }
.v-stat span{ display:block; margin-top:.2rem; font-size:.72rem; color:rgba(233,239,240,.55); word-break:break-word }
.v-empty{ grid-column:1/-1; background:var(--surface); border-style:dashed }
.v-empty strong{ font-size:1rem; color:#eef3f3 }
.v-log{ max-height:26rem; overflow-y:auto; border:1px solid var(--line); border-radius:.875rem }
.v-log:empty{ display:none }
.v-row{ display:flex; flex-wrap:wrap; gap:.6rem; align-items:baseline; padding:.6rem .9rem;
  border-bottom:1px solid var(--line); font-size:.78rem }
.v-row:last-child{ border-bottom:0 }
.v-row code{ font-family:ui-monospace,Menlo,monospace; color:var(--accent); font-weight:600 }
.v-pg{ color:rgba(233,239,240,.5) }
.v-x{ flex:1; color:rgba(233,239,240,.45) }
.v-x em{ font-style:normal; color:rgba(233,239,240,.35) }
.v-ts{ color:rgba(233,239,240,.35); font-variant-numeric:tabular-nums }

.evlist .ev summary{ display:flex; flex-wrap:wrap; gap:.6rem; align-items:center }
.ev summary code{ font-family:ui-monospace,Menlo,monospace; font-size:.82rem; color:var(--accent); font-weight:600 }
.ev-t{ flex:1; font-weight:500; font-size:.95rem; color:rgba(233,239,240,.7) }
.tier{ font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; font-weight:600;
  padding:.28rem .6rem; border-radius:9999px; white-space:nowrap }
.t-critical{ background:#0a0a0a; color:var(--accent-bright) }
.t-high{ background:var(--accent); color:#14100b }
.t-medium{ background:var(--surface-2); color:rgba(233,239,240,.7) }
.t-low,.t-baseline{ background:var(--surface); color:rgba(233,239,240,.5) }
.ev-what{ font-weight:500; color:#eef3f3 !important; margin-bottom:.7rem }
.ev-fields{ margin-top:1rem; padding:.9rem 1.1rem; background:var(--surface); border-radius:.875rem }
.ev-flabel{ display:block; font-size:.62rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--accent); font-weight:600; margin-bottom:.5rem }
.ev-fields ul{ display:grid; gap:.35rem }
.ev-fields li{ font-size:.82rem; color:rgba(233,239,240,.6); font-family:ui-monospace,Menlo,monospace }

/* ============================ AVIATION QUOTE ============================ */
.avqsec{ background:var(--surface) }
.avq{ margin-top:2.5rem }
.avq-add{ display:grid; gap:1rem; grid-template-columns:1fr; align-items:end;
  background:var(--surface); border:1px solid var(--line); border-radius:1.5rem; padding:1.5rem }
.avq-add .cap{ display:block; font-size:.66rem; letter-spacing:.18em; text-transform:uppercase;
  color:rgba(233,239,240,.5); font-weight:600; margin-bottom:.45rem }
.avq-add input,.avq-add select{ width:100%; border:1px solid var(--line); background:var(--surface);
  border-radius:.875rem; padding:.85rem 1rem; font:inherit; font-size:.95rem; color:#eef3f3; outline:none }
.avq-add input:focus,.avq-add select:focus{ border-color:var(--accent); background:var(--surface) }
.avq-add .pill>span{ width:100%; justify-content:center; padding:.9rem 1.5rem }
@media (min-width:820px){ .avq-add{ grid-template-columns:1fr 1.2fr auto } }
.avq-count{ margin:.75rem .25rem 0; font-size:.78rem; color:rgba(233,239,240,.45) }

.avq-fleet{ display:grid; gap:1.25rem; margin:1.75rem 0 }
.avq-empty{ border:1px dashed var(--line); border-radius:1.25rem; padding:2.5rem 1.5rem;
  text-align:center; color:rgba(233,239,240,.5); font-size:.95rem; background:var(--surface) }
.avq-card{ background:var(--surface); border:1px solid var(--line); border-radius:1.5rem; overflow:hidden }
.avq-card header{ display:flex; align-items:flex-start; justify-content:space-between; gap:1rem;
  padding:1.35rem 1.5rem; border-bottom:1px solid var(--line); background:var(--surface) }
.avq-cat{ font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--accent); font-weight:600 }
.avq-card h3{ margin-top:.3rem; font-size:1.15rem; font-weight:600; letter-spacing:-.01em }
.avq-card h3 span{ display:block; font-size:.9rem; font-weight:400; color:rgba(233,239,240,.55); margin-top:.15rem }
.avq-rm{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(233,239,240,.45);
  border:1px solid var(--line); border-radius:9999px; padding:.4rem .8rem; background:var(--surface); flex:0 0 auto }
.avq-rm:hover{ color:#b4402f; border-color:#e0b5ae }

.avq-svcs{ display:grid }
.avq-svc{ display:grid; grid-template-columns:auto 1fr auto; gap:.75rem 1rem; align-items:center;
  padding:.9rem 1.5rem; border-bottom:1px solid var(--line); cursor:pointer; transition:background-color .18s }
.avq-svc:last-child{ border-bottom:0 }
.avq-svc:hover{ background:var(--surface) }
.avq-svc.on{ background:rgba(138,110,47,.05) }
.avq-svc input{ width:1.15rem; height:1.15rem; accent-color:var(--accent); flex:0 0 auto }
.avq-n{ font-size:.95rem; font-weight:500; min-width:0 }
.avq-n em{ display:block; font-style:normal; font-size:.8rem; font-weight:400;
  color:rgba(233,239,240,.68); margin-top:.15rem }
.avq-h{ font-size:.78rem; color:rgba(233,239,240,.62); font-variant-numeric:tabular-nums;
  grid-column:2; justify-self:start }
.avq-p{ font-size:1rem; font-weight:600; color:var(--accent); text-align:right;
  grid-column:3; grid-row:1/3; display:flex; flex-direction:column; align-items:flex-end; gap:.4rem }
.avq-p em{ display:block; font-style:normal; font-size:.7rem; font-weight:400; color:rgba(233,239,240,.62) }
.avq-quote{ font-size:.84rem; font-weight:500; color:rgba(233,239,240,.72); text-align:right; line-height:1.4 }
.avq-qty{ display:inline-flex; align-items:center; gap:.5rem; border:1px solid var(--line);
  border-radius:9999px; padding:.15rem .35rem; background:var(--surface) }
.avq-qty button{ width:1.5rem; height:1.5rem; border-radius:9999px; font-size:1rem; line-height:1;
  color:var(--accent); background:var(--surface) }
.avq-qty button:hover{ background:var(--surface-2) }
.avq-qty b{ font-size:.85rem; min-width:1.2rem; text-align:center; font-variant-numeric:tabular-nums }
@media (min-width:700px){
  .avq-svc{ grid-template-columns:auto 1fr 8rem auto; }
  .avq-h{ grid-column:3; justify-self:end }
  .avq-p{ grid-column:4; grid-row:1; min-width:8rem }
}
.avq-card footer{ display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1rem 1.5rem; background:var(--surface); font-size:.85rem; color:rgba(233,239,240,.55) }
.avq-sub{ font-weight:700; font-size:1.05rem; color:#eef3f3 }

.avq-total{ display:grid; gap:1.5rem; grid-template-columns:1fr; background:#0a0a0a; color:#fff;
  border-radius:1.5rem; padding:1.75rem }
.avq-total .cap{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent-bright); font-weight:600 }
.avq-amt{ font-size:2.8rem; font-weight:700; letter-spacing:-.03em; margin:.35rem 0 .3rem }
.avq-hrs{ font-size:1.25rem; font-weight:600; margin:.35rem 0 .3rem; color:var(--accent-lt) }
.avq-meta{ font-size:.88rem; color:rgba(255,255,255,.78) }
.avq-notes{ margin-top:.75rem; display:grid; gap:.4rem }
.avq-notes li{ font-size:.82rem; color:rgba(255,255,255,.8); padding-left:1rem; position:relative; line-height:1.55 }
.avq-notes li::before{ content:""; position:absolute; left:0; top:.55em; width:4px; height:4px;
  background:var(--accent-bright); transform:rotate(45deg) }
.avq-actions{ display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.25rem }
.avq-actions .pill.dark>span{ background:var(--accent-bright); color:#12100a }
.avq-actions .pill.outline>span{ border-color:rgba(255,255,255,.35); color:#fff }
.avq-actions .pill[disabled]{ opacity:.4; pointer-events:none }
@media (min-width:820px){ .avq-total{ grid-template-columns:1fr 1.15fr; padding:2.25rem } }

/* quote handed to the booking page */
.avq-carry{ border:1px solid var(--accent); border-radius:1.25rem; padding:1.25rem 1.5rem;
  background:var(--surface); margin-bottom:1.5rem }
.avq-carry .cap{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase;
  color:var(--accent); font-weight:600; margin-bottom:.6rem }
.avq-carry pre{ font-family:ui-monospace,Menlo,monospace; font-size:.8rem; line-height:1.6;
  white-space:pre-wrap; color:rgba(233,239,240,.72); margin:0 }
.avq-hd-r{ display:flex; align-items:center; gap:.5rem; flex:0 0 auto }
.avq-tail{ width:6.5rem; border:1px solid var(--line); border-radius:9999px; padding:.4rem .85rem;
  font:inherit; font-size:.8rem; text-transform:uppercase; letter-spacing:.06em; background:var(--surface); outline:none }
.avq-tail:focus{ border-color:var(--accent) }
.avq-tail::placeholder{ text-transform:none; letter-spacing:0; color:rgba(233,239,240,.35) }

.note-sm{ font-size:.78rem; color:rgba(233,239,240,.45); margin-top:.25rem }

/* ============================ RATE CARD ============================ */
.ptable{ margin-bottom:2.5rem }
.ptable h3,.plist h3,.incl h3{ font-size:1.15rem; font-weight:600; letter-spacing:-.01em; margin-bottom:1rem }
.ptable-scroll{ overflow-x:auto; border:1px solid var(--line); border-radius:1.25rem; background:var(--surface) }
.ptable table{ width:100%; border-collapse:collapse; min-width:32rem }
.ptable th,.ptable td{ padding:.9rem 1.1rem; text-align:right; font-size:.95rem; border-bottom:1px solid var(--line) }
.ptable thead th{ font-size:.68rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--accent); font-weight:600; background:var(--surface) }
.ptable tbody th{ text-align:left; font-weight:500 }
.ptable tbody tr:last-child th,.ptable tbody tr:last-child td{ border-bottom:0 }
.ptable td{ font-variant-numeric:tabular-nums; font-weight:600 }

.prow{ display:grid; gap:1.5rem; grid-template-columns:1fr; margin-bottom:2.5rem }
@media (min-width:900px){ .prow{ grid-template-columns:1.4fr 1fr } }
.plist{ margin-bottom:0 }
.plist ul{ border:1px solid var(--line); border-radius:1.25rem; overflow:hidden; background:var(--surface) }
.plist li{ display:flex; gap:1rem; align-items:baseline; justify-content:space-between;
  padding:.9rem 1.25rem; border-bottom:1px solid var(--line) }
.plist li:last-child{ border-bottom:0 }
.pl-n{ font-size:.95rem; font-weight:500 }
.pl-n em{ display:block; font-style:normal; font-size:.78rem; font-weight:400;
  color:rgba(233,239,240,.5); margin-top:.15rem }
.pl-p{ font-size:.95rem; font-weight:700; color:var(--accent); white-space:nowrap;
  font-variant-numeric:tabular-nums; text-align:right }

.incl{ margin-top:1rem }
.incl-g{ display:grid; gap:1.5rem; grid-template-columns:1fr }
@media (min-width:700px){ .incl-g{ grid-template-columns:1fr 1fr } }
.incl h4{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--accent); font-weight:600; margin-bottom:.75rem }
.incl .checks li{ font-size:.9rem; padding-left:1.5rem }

.guarantee{ margin-top:2.5rem; border:1px solid var(--accent); border-radius:1.5rem;
  padding:1.75rem; background:linear-gradient(180deg, rgba(138,110,47,.06), transparent) }
.guarantee h3{ font-size:1.15rem; font-weight:700; letter-spacing:.02em;
  text-transform:uppercase; color:var(--accent); margin-bottom:.6rem }
.guarantee p{ font-size:1rem; color:rgba(233,239,240,.7); max-width:60ch; line-height:1.7 }

.calc-tax{ font-size:.8rem; color:rgba(233,239,240,.5); margin-top:-.2rem }
.calc-in input{ width:100%; border:1px solid var(--line); background:var(--surface);
  border-radius:.875rem; padding:.8rem 1rem; font:inherit; font-size:.95rem; color:#eef3f3 }
.calc-in input:focus{ border-color:var(--accent); background:var(--surface); outline:none }
.includes{ display:grid; gap:2rem; grid-template-columns:1fr; margin-top:1rem }
@media (min-width:900px){ .includes{ grid-template-columns:1fr 1fr } }
.includes .incl{ border:1px solid var(--line); border-radius:1.25rem; padding:1.5rem; background:var(--surface); margin:0 }
.calc-lines{ display:grid; grid-template-columns:1fr auto; gap:.45rem 1rem; margin:.75rem 0 1rem;
  font-size:.88rem; color:rgba(233,239,240,.6) }
.calc-lines dt{ text-align:left }
.calc-lines dd{ margin:0; text-align:right; font-variant-numeric:tabular-nums; font-weight:500; color:#eef3f3 }
.calc-lines .tot{ padding-top:.55rem; border-top:1px solid var(--line); font-weight:700; color:#eef3f3 }
.calc-lines dd.tot{ color:var(--accent); font-size:1rem }

/* ============================ SITE ASSISTANT ============================ */
.wadchat{ position:fixed; right:1rem; bottom:1rem; z-index:95;
  font-family:'Onest',system-ui,-apple-system,Segoe UI,Roboto,sans-serif }
@media (max-width:767px){ .wadchat{ bottom:calc(4.6rem + env(safe-area-inset-bottom)); right:.75rem } }

.wadchat-fab{ position:relative; display:inline-flex; align-items:center; gap:.5rem; padding:.7rem 1.05rem;
  border:none; border-radius:var(--radius-pill); cursor:pointer;
  background:#14100b; color:#fff; font-size:.9rem; font-weight:600;
  box-shadow:0 10px 30px rgba(0,0,0,.4); transition:transform .25s cubic-bezier(.2,.8,.2,1), background-color .25s }
.wadchat-fab svg{ font-size:1.15rem; color:var(--accent-bright) }
.wadchat-fab:hover{ transform:translateY(-2px) }
.wadchat-fab[data-badge]::after{ content:attr(data-badge); position:absolute; top:-.3rem; right:-.3rem;
  min-width:1.15rem; height:1.15rem; padding:0 .3rem; border-radius:var(--radius-pill);
  background:var(--accent-bright); color:#12100a; font-size:.7rem; font-weight:700;
  display:flex; align-items:center; justify-content:center }
.wadchat.is-open .wadchat-fab{ display:none }

.wadchat-panel{ position:absolute; right:0; bottom:0; width:min(23rem,calc(100vw - 1.5rem));
  height:min(34rem,calc(100vh - 6rem)); display:none; flex-direction:column; overflow:hidden;
  background:var(--background); border:1px solid var(--line); border-radius:1.25rem;
  box-shadow:0 24px 60px rgba(0,0,0,.28) }
.wadchat.is-open .wadchat-panel{ display:flex }
.wadchat-panel[hidden]{ display:none }
@media (max-width:767px){ .wadchat.is-open .wadchat-panel{ position:fixed; right:.6rem; left:.6rem; bottom:.6rem;
  width:auto; height:min(80vh,38rem) } }

.wadchat-head{ display:flex; align-items:center; gap:.6rem; padding:.85rem 1rem;
  background:#14100b; color:#fff }
.wadchat-id{ display:flex; align-items:center; gap:.5rem; font-weight:600; font-size:.92rem }
.wadchat-id svg{ color:var(--accent-bright); font-size:1.1rem }
.wadchat-x{ margin-left:auto; background:transparent; border:none; color:rgba(255,255,255,.7);
  cursor:pointer; padding:.25rem; display:flex }
.wadchat-x:hover{ color:#fff }

.wadchat-log{ flex:1; overflow-y:auto; padding:1rem; display:flex; flex-direction:column; gap:.6rem;
  background:var(--surface) }
.wadchat-msg{ max-width:85%; padding:.6rem .8rem; border-radius:1rem; font-size:.9rem; line-height:1.5;
  white-space:normal; overflow-wrap:anywhere }
.wadchat-msg.bot{ align-self:flex-start; background:var(--background); border:1px solid var(--line);
  border-bottom-left-radius:.3rem; color:var(--foreground) }
.wadchat-msg.me{ align-self:flex-end; background:#14100b; color:#fff; border-bottom-right-radius:.3rem }
.wadchat-msg a{ color:var(--accent); font-weight:600 }
.wadchat-msg.me a{ color:var(--accent-lt) }
.wadchat-msg ul,.wadchat-msg ol{ margin:.4rem 0 .2rem; padding-left:1.1rem }
.wadchat-msg li{ margin:.15rem 0 }

.wadchat-chips{ display:flex; flex-wrap:wrap; gap:.4rem; align-self:flex-start; max-width:100% }
.wadchat-chip{ padding:.4rem .7rem; border:1px solid var(--accent-lt); border-radius:var(--radius-pill);
  background:var(--background); color:var(--accent); font-size:.8rem; font-weight:600; cursor:pointer;
  font-family:inherit; transition:background-color .2s }
.wadchat-chip:hover{ background:var(--accent-lt) }

.wadchat-typing i{ display:inline-block; width:.4rem; height:.4rem; margin:0 .08rem; border-radius:50%;
  background:var(--subtle); animation:wadchatdot 1s infinite ease-in-out }
.wadchat-typing i:nth-child(2){ animation-delay:.15s } .wadchat-typing i:nth-child(3){ animation-delay:.3s }
@keyframes wadchatdot{ 0%,60%,100%{ opacity:.3 } 30%{ opacity:1 } }

.wadchat-form{ display:flex; gap:.5rem; padding:.7rem; background:var(--background); border-top:1px solid var(--line) }
.wadchat-input{ flex:1; padding:.6rem .8rem; border:1px solid var(--line); border-radius:var(--radius-pill);
  font-size:.9rem; font-family:inherit; color:var(--foreground); background:var(--surface) }
.wadchat-input:focus{ outline:2px solid var(--accent-lt); outline-offset:0; border-color:var(--accent) }
.wadchat-send{ flex:none; width:2.4rem; border:none; border-radius:50%; background:#14100b; color:#fff;
  cursor:pointer; display:flex; align-items:center; justify-content:center }
.wadchat-send svg{ color:var(--accent-bright) }
.wadchat-send:hover{ background:var(--accent) }
.wadchat-send:hover svg{ color:#fff }

@media (prefers-reduced-motion:reduce){
  .wadchat-fab,.wadchat-chip{ transition:none } .wadchat-typing i{ animation:none }
}

/* ============================ SOFT CORNERS ============================
   2026 warm-glass pass: the whole site goes gently rounded again. Cards and
   panels take a medium radius, controls a smaller one; genuine pills, dots,
   avatars and circular icon buttons keep their full round. */
.hero,
.hcard, .card, .srow a, .panel,
.dark-sec, .plate,
.split figure, .cmp, .cmp .stage, .film,
.panels article, .plans article,
.pcard, .rcard, .acard,
.faq, .faqs details,
.calc, .calc-in, .calc-out,
#modal .pnl,
.wiz, .wiz-fs, .wiz-total, .wiz-includes, .wiz-flash,
.acct, .acct-card,
.wadchat-panel, .wadchat-log,
.calc-out .calc-lines {
  border-radius: var(--radius-card-sm);
}
.hcard .inner, .hcard .tile, .hcard .panel,
.wiz-cat button, .wiz-day, .wiz-slot, .shots button, #lb img,
.calc .cap, .calc select, .calc-in input,
.field input, .field select, .field textarea,
#modal .setup, #modal input, #modal select, #modal textarea,
.wiz-load .bar, .acct-load .bar, .wiz select, .wiz input, .wiz textarea,
.leadform input, .leadform select, .leadform textarea,
.avq-add input, .avq-add select,
.acct input, .acct-err, .acct-msg, .acct-code input,
.wadchat-head, .wadchat-form, .wadchat-input, .wadchat-msg,
.wadchat-msg.bot, .wadchat-msg.me,
input[type="text"], input[type="tel"], input[type="email"], input[type="number"], textarea, select {
  border-radius: var(--radius-control);
}

/* ======================= MANAGEMENT PORTAL ======================= */
.acct-wide{ max-width:54rem }

/* Full-screen app shell — no marketing chrome, no narrow box */
.mng-body{ background:var(--surface); min-height:100vh }
.mng-head{ display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:.85rem 1.5rem; background:var(--surface); border-bottom:1px solid var(--line);
  position:sticky; top:0; z-index:30 }
.mng-head .brandbtn .sub{ color:var(--accent) }
.mng-head-site{ font-size:.8rem; font-weight:500; color:rgba(233,239,240,.55); text-decoration:none }
.mng-head-site:hover{ color:#eef3f3 }
.mng-app{ max-width:1440px; margin:0 auto; padding:1.5rem 1.5rem 5rem }
.mng-app > .acct-h{ font-size:1.5rem; margin-bottom:1rem }
.mng-app .acct-load{ padding:4rem 0 }
.mng-app .acct-sub, .mng-app .mng-hint, .mng-app .acct-fine, .mng-app > p{ max-width:64ch }
.mng-app .acct-card, .mng-app .mng-card{ max-width:44rem }
@media (max-width:640px){ .mng-head, .mng-app{ padding-left:1rem; padding-right:1rem } }

.mng-top{ display:flex; justify-content:space-between; align-items:center; gap:1rem;
  flex-wrap:wrap; margin-bottom:1rem; font-size:.8rem }
.mng-back{ color:var(--accent); text-decoration:none; font-weight:600 }
.mng-who{ color:rgba(233,239,240,.55); display:flex; align-items:center; gap:.5rem; flex-wrap:wrap }
.mng-out{ border:1px solid var(--line); background:var(--surface); padding:.3rem .7rem;
  font:inherit; font-size:.75rem; cursor:pointer; color:rgba(233,239,240,.65) }
.mng-out:hover{ background:var(--surface-2) }

/* ---------- management: persistent side nav ---------- */
.mng-layout{ display:flex; align-items:flex-start; gap:2rem }
.mng-side{ flex:0 0 12.5rem; display:flex; flex-direction:column; gap:.15rem;
  position:sticky; top:1.5rem; border-right:1px solid var(--line); padding-right:1.25rem }
.mng-side-link{ display:flex; align-items:center; gap:.65rem; padding:.55rem .65rem; border-radius:.6rem;
  color:rgba(233,239,240,.6); text-decoration:none; font-size:.86rem; font-weight:500; transition:.15s }
.mng-side-link svg{ flex:0 0 auto; opacity:.75 }
.mng-side-link:hover{ background:var(--surface); color:#eef3f3 }
/* --accent-bright on --accent-lt is two close warm-gold tones against each
   other — contrast ratio ~1.15:1, effectively unreadable. Dark text reads
   clearly against the light gold instead. */
.mng-side-link.on{ background:var(--accent-lt); color:#14100b; font-weight:650 }
.mng-side-link.on svg{ opacity:1 }
.mng-main{ flex:1; min-width:0 }
@media (max-width:860px){
  .mng-layout{ flex-direction:column; gap:1.25rem }
  .mng-side{ position:static; flex-direction:row; flex-wrap:wrap; gap:.4rem; width:100%;
    border-right:0; border-bottom:1px solid var(--line); padding:0 0 1rem; overflow-x:auto }
  .mng-side-link{ flex:0 0 auto; padding:.4rem .7rem; white-space:nowrap }
  .mng-side-link span{ display:inline }
  .mng-main{ width:100% }
}

/* ---------- management: bookings mini-calendar ---------- */
.mng-cal-split{ display:flex; align-items:flex-start; gap:1.5rem }
.mng-cal-split > *:first-child{ flex:1; min-width:0 }
.mng-minical{ flex:0 0 13.5rem; border:1px solid var(--line); border-radius:.75rem; padding:.85rem; background:var(--surface) }
.mng-minical-head{ font-size:.8rem; font-weight:650; margin-bottom:.5rem; text-align:center }
.mng-minical-dow{ display:grid; grid-template-columns:repeat(7,1fr); margin-bottom:.2rem }
.mng-minical-dow span{ font-size:.6rem; text-align:center; color:rgba(233,239,240,.4) }
.mng-minical-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:.1rem }
.mng-mini-day{ position:relative; aspect-ratio:1; border:0; border-radius:.4rem; background:none; font:inherit;
  font-size:.68rem; color:rgba(233,239,240,.75); cursor:pointer }
.mng-mini-day:hover{ background:var(--surface-2) }
.mng-mini-day.out{ color:rgba(233,239,240,.25) }
.mng-mini-day.today{ font-weight:700; color:var(--accent-bright) }
.mng-mini-day.on{ background:var(--accent); color:#14100b; font-weight:700 }
.mng-mini-day i{ position:absolute; bottom:.15rem; left:50%; transform:translateX(-50%);
  width:.22rem; height:.22rem; border-radius:50%; background:currentColor; opacity:.7 }
@media (max-width:960px){
  .mng-cal-split{ flex-direction:column }
  .mng-minical{ width:13.5rem; align-self:center }
}
.mng-h2{ font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:rgba(233,239,240,.45);
  font-weight:600; margin:1.75rem 0 .6rem }

.mng-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr)); gap:.7rem; margin-top:.5rem }
.mng-tile{ display:flex; flex-direction:column; gap:.15rem; padding:1rem; border:1px solid var(--line);
  background:var(--surface); text-decoration:none; color:#eef3f3; transition:border-color .2s, background-color .2s }
.mng-tile:hover{ border-color:var(--accent); background:var(--surface) }
.mng-tile strong{ font-size:.95rem }
.mng-tile span{ font-size:.78rem; color:rgba(233,239,240,.55) }
/* The default near-white text (tuned for the dark --surface background)
   loses almost all contrast against the light gold .hot background —
   swap to dark text for both the title and the dimmer subtitle line. */
.mng-tile.hot{ border-color:var(--accent); background:var(--accent-lt); color:#14100b }
.mng-tile.hot span{ color:rgba(20,16,11,.65) }

.mng-list{ list-style:none; display:flex; flex-direction:column; gap:.35rem }
.mng-list a{ display:flex; justify-content:space-between; gap:1rem; align-items:baseline;
  padding:.8rem 1rem; border:1px solid var(--line); background:var(--surface); text-decoration:none; color:#eef3f3 }
.mng-list a:hover{ border-color:var(--accent) }
.mng-list strong{ font-size:.92rem; font-weight:600 }
.mng-list span{ font-size:.78rem; color:rgba(233,239,240,.55); text-align:right }
.mng-list em{ color:var(--accent); font-style:normal }

.mng-contact{ margin-top:1rem }
.mng-kv{ display:grid; grid-template-columns:repeat(auto-fit,minmax(11rem,1fr)); gap:.75rem 1.5rem; margin:0 }
.mng-kv dt{ font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(233,239,240,.45); font-weight:600 }
.mng-kv dd{ margin:.15rem 0 0; font-size:.92rem }
.mng-kv dd a{ color:#eef3f3; text-decoration:none; border-bottom:1px solid var(--line) }
.mng-kv dd a:hover{ border-color:var(--accent) }
.mng-contact-note{ margin:.9rem 0 0; padding-top:.9rem; border-top:1px solid var(--line);
  font-size:.85rem; color:rgba(233,239,240,.65); line-height:1.6; white-space:pre-wrap }
.mng-cstats{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:.85rem }
.mng-cstats > div{ flex:1 1 7rem; padding:.7rem .85rem; border:1px solid var(--line); background:var(--surface) }
.mng-cstats b{ display:block; font-size:1.15rem; font-weight:700; line-height:1.15 }
.mng-cstats span{ font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:rgba(233,239,240,.5) }

.mng-implog{ margin-top:1rem; max-height:22rem; overflow-y:auto; border:1px solid var(--line);
  background:var(--surface); padding:.8rem 1rem; font-size:.82rem; line-height:1.7 }
.mng-implog p{ margin:0 }
.mng-implog strong{ font-weight:600 }

.mng-doc-sent{ font-size:.8rem; color:rgba(233,239,240,.55); margin:0 0 .8rem }
.mng-doclist{ list-style:none; margin:.4rem 0 .8rem; padding:0; display:flex; flex-direction:column; gap:.6rem }
.mng-doclist li{ font-size:.9rem }
.mng-doclist li a{ font-weight:600; color:#eef3f3 }
.mng-doclist li span{ display:block; font-size:.8rem; color:rgba(233,239,240,.55); margin-top:.1rem }
.mng-doclist li button.acct-link{ font-size:.78rem; margin-left:.3rem }
.mng-docprev{ margin-top:.6rem; border:1px solid var(--line); border-radius:.6rem; overflow:hidden }
.mng-docprev iframe{ width:100%; height:22rem; border:0; display:block; background:#fff }
.mng-doc .acct-field{ margin-top:.7rem }

.acct-docs{ margin:.9rem 0; padding:.9rem 1rem; border:1px solid var(--glass-brd); background:rgba(255,255,255,.05) }
.acct-docrec{ margin:0 0 .7rem; display:grid; gap:.35rem }
.acct-docrec div{ display:flex; gap:.6rem; font-size:.86rem }
.acct-docrec dt{ color:rgba(233,239,240,.5); min-width:8rem; margin:0 }
.acct-docrec dd{ margin:0 }
.acct-doclist{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.4rem }
.acct-doclist a{ font-weight:600; color:#eef3f3 }

.mng-hint{ font-size:.85rem; color:rgba(233,239,240,.55); padding:.6rem 0; line-height:1.6 }
.mng-sub{ font-size:.75rem; color:rgba(233,239,240,.45) }
.mng-results{ margin-top:1rem }

.mng-card{ margin-top:1.25rem; padding:1.25rem; border:1px solid var(--line); background:var(--surface) }
.mng-card h3{ font-size:.95rem; font-weight:600; margin-bottom:.9rem }
.mng-card textarea{ width:100%; border:1px solid var(--line); background:var(--surface); padding:.8rem 1rem;
  font:inherit; font-size:.95rem; color:#eef3f3; resize:vertical }
.mng-inline{ margin-bottom:0 }
.mng-inline-check{ display:inline-flex !important; margin:0 0 0 .25rem; vertical-align:middle }
.mng-del{ margin-left:auto; border:none; background:none; color:#b4402f; font:inherit; font-size:.82rem;
  text-decoration:underline; cursor:pointer }

.mng-up{ display:flex; gap:1rem; flex-wrap:wrap; align-items:flex-end }
.mng-updrop{ flex:1; min-width:12rem; display:flex; align-items:center; justify-content:center;
  padding:1.1rem; border:1.5px dashed var(--subtle); color:rgba(233,239,240,.55); font-size:.9rem;
  cursor:pointer; text-align:center }
.mng-updrop:hover{ border-color:var(--accent); color:var(--accent) }
.mng-upqueue{ margin-top:.8rem; display:flex; flex-direction:column; gap:.3rem }
.mng-uprow{ font-size:.8rem; color:rgba(233,239,240,.6); padding:.4rem .6rem; background:var(--surface); border:1px solid var(--line) }
.mng-uprow.ok{ color:#2b6a3f; border-color:#bfe0cb }
.mng-uprow.bad{ color:#8f3325; border-color:#e6c3bc }

.mng-draftbar{ display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap;
  background:var(--accent-lt); border-color:var(--accent) }
.mng-draftbar span{ font-size:.85rem; font-weight:500; color:#5c4a1e }

.mng-photos{ display:grid; grid-template-columns:repeat(auto-fill,minmax(9rem,1fr)); gap:.6rem }
.mng-photo{ margin:0; border:1px solid var(--line); background:var(--surface); overflow:hidden }
.mng-photo.draft{ border-color:var(--accent); border-style:dashed }
.mng-photo img{ display:block; width:100%; aspect-ratio:4/3; object-fit:cover; background:var(--surface-2) }
.mng-photo figcaption{ padding:.4rem .5rem; font-size:.7rem; color:rgba(233,239,240,.5);
  display:flex; flex-direction:column; gap:.3rem }
.mng-pact{ display:flex; gap:.4rem }
.mng-pact button{ flex:1; border:1px solid var(--line); background:var(--surface); font:inherit;
  font-size:.68rem; padding:.25rem; cursor:pointer; color:rgba(233,239,240,.7) }
.mng-pact button:hover{ background:var(--surface); border-color:var(--accent) }

.mng-table{ width:100%; border-collapse:collapse; font-size:.85rem; margin-top:.5rem }
.mng-table th{ text-align:left; font-size:.65rem; letter-spacing:.1em; text-transform:uppercase;
  color:rgba(233,239,240,.45); padding:.5rem .6rem; border-bottom:1px solid var(--line) }
.mng-table td{ padding:.7rem .6rem; border-bottom:1px solid var(--line); vertical-align:top }
.mng-table tr.off{ opacity:.5 }
.mng-table em{ color:rgba(233,239,240,.4); font-style:normal; font-size:.75rem }
.mng-role{ border:1px solid var(--line); background:var(--surface); padding:.3rem .5rem; font:inherit; font-size:.8rem }
.mng-toggle{ border:1px solid var(--line); background:var(--surface); padding:.3rem .6rem; font:inherit;
  font-size:.75rem; cursor:pointer; color:rgba(233,239,240,.65) }
.mng-toggle:hover{ background:var(--surface); border-color:var(--accent) }
.mng-visitor-alert{ display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap }
.mng-visitor-alert .mng-hint{ margin-top:.2rem }

.mng-toast{ position:fixed; left:50%; bottom:1.5rem; transform:translate(-50%,1rem); z-index:200;
  background:#14100b; color:#fff; padding:.7rem 1.1rem; font-size:.85rem; box-shadow:0 12px 30px rgba(0,0,0,.25);
  opacity:0; transition:opacity .3s, transform .3s; max-width:90vw }
.mng-toast.in{ opacity:1; transform:translate(-50%,0) }
.mng-toast.bad{ background:#8f3325 }

/* ---- management: site analytics ---- */
.mng-range-row{ display:flex; gap:.4rem; margin:.25rem 0 1.25rem }
.mng-range{ font-size:.78rem; font-weight:500; padding:.4rem .85rem; border:1px solid var(--line);
  border-radius:9999px; color:rgba(233,239,240,.6); text-decoration:none }
.mng-range:hover{ border-color:var(--accent); color:#eef3f3 }
.mng-range.on{ background:#14100b; border-color:#14100b; color:#fff }

.mng-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(7rem,1fr)); gap:.6rem }
.mng-stat{ display:flex; flex-direction:column; gap:.15rem; padding:.9rem 1rem; border:1px solid var(--line);
  background:var(--surface) }
.mng-stat-l{ font-size:.66rem; letter-spacing:.1em; text-transform:uppercase; color:rgba(233,239,240,.45) }
.mng-stat-v{ font-size:1.5rem; font-weight:700; letter-spacing:-.02em; color:#eef3f3; font-variant-numeric:tabular-nums }
.mng-stat-s{ font-size:.7rem; color:rgba(233,239,240,.45) }

.mng-chart{ margin-top:1.5rem }
.mng-chart svg{ width:100%; height:auto; display:block; overflow:visible }
.mng-chart-key{ display:flex; gap:1.2rem; margin-top:.5rem; font-size:.72rem; color:rgba(233,239,240,.55) }
.mng-chart-key span{ display:inline-flex; align-items:center; gap:.35rem }
.mng-chart-key span::before{ content:''; width:.7rem; height:.7rem; border-radius:2px; background:var(--accent) }
.mng-chart-key .k2::before{ opacity:.28 }

.mng-hbars{ display:flex; flex-direction:column; gap:.5rem; margin-top:.4rem }
.mng-hbar{ display:grid; grid-template-columns:minmax(7rem,13rem) 1fr auto; align-items:center; gap:.7rem;
  font-size:.8rem }
@media (max-width:520px){ .mng-hbar{ grid-template-columns:1fr auto; gap:.15rem .6rem }
  .mng-hbar-track{ grid-column:1 / -1; order:3 } }
.mng-hbar-l{ color:rgba(233,239,240,.75); white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.mng-hbar-track{ height:.55rem; background:var(--line); border-radius:9999px; overflow:hidden }
.mng-hbar-track i{ display:block; height:100%; background:var(--accent); border-radius:9999px }
.mng-hbar-v{ font-variant-numeric:tabular-nums; font-weight:600; color:#eef3f3; white-space:nowrap }
.mng-hbar-v em{ font-style:normal; font-weight:400; color:rgba(233,239,240,.45); font-size:.76rem }

.mng-funnel{ display:flex; flex-direction:column; gap:.4rem; margin-top:.4rem }
.mng-funnel-row{ display:grid; grid-template-columns:minmax(8rem,11rem) 1fr auto; align-items:center; gap:.75rem;
  font-size:.82rem }
.mng-funnel-l{ color:rgba(233,239,240,.75) }
.mng-funnel-track{ height:1.1rem; background:var(--surface); border:1px solid var(--line); border-radius:.3rem; overflow:hidden }
.mng-funnel-track i{ display:block; height:100%; background:var(--accent-lt); border-right:2px solid var(--accent) }
.mng-funnel-v{ font-variant-numeric:tabular-nums; font-weight:600; white-space:nowrap }
.mng-funnel-v em{ font-style:normal; font-weight:400; color:var(--accent) }

.mng-two{ display:grid; gap:1.5rem 2rem; grid-template-columns:1fr }
@media (min-width:640px){ .mng-two{ grid-template-columns:1fr 1fr } }

/* traffic-sources / device breakdown — a CSS conic-gradient pie, no library */
.mng-pie-wrap{ display:flex; align-items:center; gap:1.25rem; flex-wrap:wrap }
.mng-pie{ width:6.5rem; height:6.5rem; border-radius:50%; flex:0 0 auto;
  box-shadow:0 0 0 1px var(--glass-brd), 0 6px 20px rgba(0,0,0,.35) }
.mng-pie-legend{ list-style:none; display:flex; flex-direction:column; gap:.4rem; flex:1 1 10rem; min-width:0 }
.mng-pie-legend li{ display:flex; align-items:center; gap:.5rem; font-size:.82rem; color:rgba(233,239,240,.75) }
.mng-pie-legend i{ width:.65rem; height:.65rem; border-radius:50%; flex:0 0 auto }
.mng-pie-legend span{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.mng-pie-legend b{ font-variant-numeric:tabular-nums; font-weight:600; color:#eef3f3 }

.mng-feed{ list-style:none; display:flex; flex-direction:column; gap:.1rem; margin-top:.4rem;
  border-top:1px solid var(--line) }
.mng-feed li{ display:flex; justify-content:space-between; gap:1rem; padding:.55rem 0;
  border-bottom:1px solid var(--line); font-size:.82rem; flex-wrap:wrap }
.mng-feed-w{ color:rgba(233,239,240,.8) } .mng-feed-w strong{ font-weight:600; color:#eef3f3 }
a.mng-feed-w:hover{ color:var(--accent) }
.mng-feed-m{ font-size:.74rem; color:rgba(233,239,240,.45); white-space:nowrap }

/* ---- management: shared mini-button ---- */
.mng-mini{ border:1px solid var(--line); background:var(--surface); border-radius:9999px; padding:.28rem .7rem;
  font:inherit; font-size:.74rem; font-weight:500; color:rgba(233,239,240,.65); cursor:pointer; text-decoration:none }
.mng-mini:hover{ border-color:var(--accent); color:#eef3f3 }
.mng-mini.on{ background:#14100b; border-color:#14100b; color:#fff }

/* ---- management: leads inbox ---- */
.mng-range em{ font-style:normal; opacity:.6; font-size:.9em }
.mng-lead{ border:1px solid var(--line); background:var(--surface); padding:.9rem 1rem; margin-top:.7rem }
.mng-lead-h{ display:flex; align-items:center; gap:.55rem; flex-wrap:wrap }
.mng-lead-h strong{ font-size:.95rem }
.mng-lead-when{ margin-left:auto; font-size:.72rem; color:rgba(233,239,240,.45) }
.mng-lead-k{ font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; font-weight:700;
  padding:.16rem .45rem; border-radius:.25rem; background:rgba(233,239,240,.08); color:rgba(233,239,240,.6) }
.mng-lead-k-ppf_quote{ background:var(--accent-lt); color:#5c4a1e }
.mng-lead-sum{ font-size:.86rem; font-weight:500; margin-top:.4rem }
.mng-lead-msg{ font-size:.82rem; color:rgba(233,239,240,.65); margin-top:.3rem; white-space:pre-wrap;
  border-left:2px solid var(--line); padding-left:.6rem }
.mng-lead-x{ font-size:.74rem; color:rgba(233,239,240,.5); margin-top:.35rem }
.mng-lead-f{ display:flex; align-items:center; gap:.4rem; flex-wrap:wrap; margin-top:.7rem }
.mng-lead-c{ font-size:.78rem; color:rgba(233,239,240,.6); margin-right:auto }
.mng-lead-st{ border:1px solid var(--line); background:var(--surface); font:inherit; font-size:.76rem;
  padding:.25rem .4rem; text-transform:capitalize }

/* ---- management: bookings calendar ---- */
.mng-cal-bar{ display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap;
  margin:.25rem 0 1rem }
.mng-cal-move{ display:flex; align-items:center; gap:.4rem }
.mng-cal-move strong{ font-size:.95rem; margin-left:.4rem }
.mng-cal-views{ display:flex; gap:.3rem }

.mng-cal-mo{ border:1px solid var(--line); border-radius:.5rem; overflow:hidden }
.mng-cal-mo .mng-cal-dow{ display:grid; grid-template-columns:repeat(7,1fr); background:var(--surface);
  border-bottom:1px solid var(--line) }
.mng-cal-mo .mng-cal-dow span{ padding:.4rem; text-align:center; font-size:.62rem; letter-spacing:.06em;
  text-transform:uppercase; font-weight:700; color:rgba(233,239,240,.45) }
.mng-cal-grid{ display:grid; grid-template-columns:repeat(7,1fr) }
/* Bigger month cells — was cramped at 5.5rem, especially with 3 chips + a dot. */
.mng-cal-cell{ min-height:7rem; border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:.35rem; display:flex; flex-direction:column; gap:.15rem; overflow:hidden }
.mng-cal-cell:nth-child(7n){ border-right:0 }
.mng-cal-cell.out{ background:var(--surface) }
.mng-cal-cell.out .mng-cal-daynum{ color:rgba(233,239,240,.3) }
.mng-cal-cell.today{ background:var(--accent-lt) }
.mng-cal-daynum{ align-self:flex-start; border:0; background:none; font:inherit; font-size:.72rem;
  font-weight:600; color:rgba(233,239,240,.6); cursor:pointer; padding:.05rem .25rem; border-radius:.25rem }
.mng-cal-daynum:hover{ background:var(--surface); color:#eef3f3 }
/* White text on --accent (medium gold) is ~1.8:1 contrast, still a fail —
   dark text reads clearly on both this badge and the cell's lighter gold. */
.mng-cal-cell.today .mng-cal-daynum{ background:var(--accent); color:#14100b }
.mng-cal-chip{ display:block; width:100%; text-align:left; border:0; border-radius:.25rem;
  background:#14100b; color:#fff; font:inherit; font-size:.64rem; line-height:1.25; padding:.15rem .3rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer }
.mng-cal-chip b{ color:var(--accent-bright); font-weight:700 }
.mng-cal-more{ font-size:.6rem; color:rgba(233,239,240,.5); padding-left:.3rem }
/* A booking chip's own cancel control, separate from the chip's click
   (which views the customer) — a block already cancels on click and a
   history row isn't a real Square booking, so neither gets one. */
.mng-cal-chip-wrap{ display:flex; align-items:stretch }
.mng-cal-chip-wrap .mng-cal-chip{ border-radius:.25rem 0 0 .25rem }
.mng-cal-chip-wrap:not(:has(.mng-cal-x)) .mng-cal-chip{ border-radius:.25rem }
.mng-cal-x{ flex:none; width:1rem; border:0; border-radius:0 .25rem .25rem 0; background:#14100b;
  color:rgba(255,255,255,.4); font-size:.75rem; line-height:1; cursor:pointer }
.mng-cal-x:hover{ color:#fff; background:#e5484d }
.mng-cal-chip.blocked, .mng-cal-ev.blocked{
  background-color:#14100b;
  background-image:repeating-linear-gradient(135deg, rgba(255,255,255,.05) 0 6px, transparent 6px 12px) }
.mng-cal-chip.blocked b, .mng-cal-ev.blocked b{ color:rgba(255,255,255,.55) }
.mng-cal-chip.history, .mng-cal-ev.history{ opacity:.55; border-style:dashed }

.mng-cal-tw{ display:grid; grid-template-columns:3.2rem 1fr; border:1px solid var(--line); border-radius:.5rem;
  overflow:hidden }
.mng-cal-times{ display:flex; flex-direction:column; padding-top:1.9rem; border-right:1px solid var(--line);
  background:var(--surface) }
.mng-cal-times span{ font-size:.6rem; color:rgba(233,239,240,.45); text-align:right; padding:.15rem .4rem 0 0;
  transform:translateY(-.4rem) }
.mng-cal-cols{ display:grid; grid-auto-flow:column; grid-auto-columns:1fr; overflow-x:auto }
.mng-cal-cols.one{ grid-auto-columns:100% }
.mng-cal-col{ border-right:1px solid var(--line); min-width:0 }
.mng-cal-col:last-child{ border-right:0 }
.mng-cal-colh{ display:block; width:100%; border:0; border-bottom:1px solid var(--line); background:var(--surface);
  font:inherit; font-size:.7rem; font-weight:600; color:rgba(233,239,240,.6); padding:.45rem .3rem; cursor:pointer;
  text-align:center; white-space:nowrap }
.mng-cal-colh.today{ background:var(--accent); color:#14100b }
.mng-cal-colh:hover:not(.today){ color:#eef3f3 }
.mng-cal-canvas{ position:relative;
  background-image:linear-gradient(to bottom, var(--line) 1px, transparent 1px);
  background-repeat:repeat-y }
.mng-cal-empty{ position:absolute; inset:0; display:grid; place-items:center; font-size:.7rem; color:rgba(233,239,240,.3) }
.mng-cal-tip{ font-size:.76rem; color:rgba(233,239,240,.5); margin:-.5rem 0 1rem }
.mng-mini.pri{ background:var(--accent); border-color:var(--accent); color:#14100b; font-weight:600 }
.mng-mini.pri:hover{ background:#14100b; border-color:#14100b; color:#fff }
.can-book .mng-cal-canvas, .can-book .mng-cal-cell{ cursor:pointer }
.can-book .mng-cal-canvas:hover{ background-color:rgba(220,180,37,.05) }
.can-book .mng-cal-cell:hover:not(.out){ background-color:rgba(220,180,37,.06) }
.mng-nb-picked{ display:flex; align-items:center; gap:.6rem; padding:.7rem .9rem; border:1px solid var(--accent);
  background:var(--accent-lt); border-radius:.5rem; font-size:.9rem; margin-bottom:1rem; color:#14100b }
.mng-nb-picked .acct-link{ color:#5c4a1e }
.mng-nb-new{ display:flex; flex-direction:column; gap:.6rem; margin-bottom:1rem }
.mng-nb-pick{ display:flex; flex-direction:column; align-items:flex-start; width:100%; text-align:left;
  border:1px solid var(--line); background:var(--surface); padding:.55rem .8rem; font:inherit; cursor:pointer; border-radius:.4rem }
.mng-nb-pick:hover{ border-color:var(--accent) }
.mng-nb-pick strong{ font-size:.9rem } .mng-nb-pick span{ font-size:.76rem; color:rgba(233,239,240,.5) }
.mng-cal-ev-wrap{ position:absolute; display:flex; align-items:stretch }
.mng-cal-ev{ flex:1; min-width:0; border:1px solid #fff; border-radius:.3rem 0 0 .3rem; background:#14100b; color:#fff;
  font:inherit; font-size:.64rem; line-height:1.2; padding:.15rem .3rem; overflow:hidden; text-align:left;
  cursor:pointer; box-shadow:0 1px 3px rgba(0,0,0,.2) }
.mng-cal-ev-wrap:not(:has(.mng-cal-x)) .mng-cal-ev{ border-radius:.3rem }
.mng-cal-ev-wrap .mng-cal-x{ border:1px solid #fff; border-left:0 }
.mng-cal-ev b{ color:var(--accent-bright); font-weight:700; margin-right:.2rem }
.mng-cal-ev span{ display:block; opacity:.7; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
@media (max-width:560px){
  .mng-cal-cols{ grid-auto-columns:8.5rem }
  .mng-cal-cell{ min-height:5rem }
  .mng-cal-chip{ font-size:.58rem }
}

/* ---- management: bookings list (kept for other views) ---- */
.mng-book{ list-style:none; display:flex; flex-direction:column; gap:.4rem; margin-top:.5rem }
.mng-book li{ display:grid; grid-template-columns:auto 1fr auto; gap:.9rem; align-items:center;
  border:1px solid var(--line); background:var(--surface); padding:.7rem .9rem }
.mng-book-t{ display:flex; flex-direction:column; min-width:4.5rem }
.mng-book-t strong{ font-size:.86rem } .mng-book-t span{ font-size:.74rem; color:rgba(233,239,240,.5) }
.mng-book-b{ display:flex; flex-direction:column; gap:.1rem; min-width:0 }
.mng-book-b strong{ font-size:.9rem }
.mng-book-b span{ font-size:.76rem; color:rgba(233,239,240,.55); overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.mng-book-s{ color:var(--accent) !important; text-transform:capitalize }
.mng-book-a{ display:flex; gap:.35rem; flex-wrap:wrap }
@media (max-width:520px){ .mng-book li{ grid-template-columns:auto 1fr } .mng-book-a{ grid-column:1 / -1 } }

/* ---- management: live service tracker ---- */
.mng-prog-h{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem }
.mng-prog-stage{ font-size:.7rem; letter-spacing:.08em; text-transform:uppercase; font-weight:700;
  color:var(--accent) }
.mng-prog-bar{ height:.5rem; background:var(--line); border-radius:9999px; overflow:hidden; margin:.6rem 0 .4rem }
.mng-prog-bar i{ display:block; height:100%; background:var(--accent); border-radius:9999px; transition:width .3s }
.mng-prog-count{ font-size:.78rem; color:rgba(233,239,240,.55) }
.mng-prog-notify{ display:inline-flex; align-items:center; gap:.35rem; margin-left:.4rem }
.mng-prog-notify input{ accent-color:var(--accent) }
.mng-checklist{ list-style:none; display:flex; flex-direction:column; margin:.7rem 0 0 }
.mng-checklist li{ display:flex; align-items:center; gap:.6rem; padding:.5rem 0; border-top:1px solid var(--line);
  font-size:.86rem }
.mng-checklist li label{ display:flex; align-items:center; gap:.6rem; cursor:pointer; flex:1 }
.mng-checklist li input{ width:1.1rem; height:1.1rem; accent-color:var(--accent); flex:none }
.mng-checklist li.on span{ color:rgba(233,239,240,.45); text-decoration:line-through }
.mng-checklist li em{ font-style:normal; font-size:.72rem; color:rgba(233,239,240,.4) }
.mng-prog-stages{ display:flex; gap:.35rem; flex-wrap:wrap; margin-top:.9rem }

/* ---- customer portal: live progress ---- */
.acct-prog{ margin:.9rem 0; padding:1rem; border:1px solid var(--line); border-radius:.5rem;
  background:var(--surface) }
.acct-prog-in_progress{ border-color:var(--accent) }
.acct-prog-ready{ border-color:#2b6a3f; background:rgba(43,106,63,.06) }
.acct-prog-stage{ font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; font-weight:700;
  color:var(--accent) }
.acct-prog-ready .acct-prog-stage{ color:#2b6a3f }
.acct-prog-bar{ height:.55rem; background:var(--line); border-radius:9999px; overflow:hidden; margin:.55rem 0 }
.acct-prog-bar i{ display:block; height:100%; background:var(--accent); border-radius:9999px }
.acct-prog-ready .acct-prog-bar i{ background:#2b6a3f }
.acct-prog-now{ font-size:.85rem; color:rgba(233,239,240,.7) }
.acct-steps{ list-style:none; display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.7rem }
.acct-steps li{ font-size:.72rem; padding:.2rem .55rem; border-radius:9999px; border:1px solid var(--line);
  color:rgba(233,239,240,.5) }
.acct-steps li.on{ background:var(--accent-lt); border-color:transparent; color:#5c4a1e }
.acct-steps li.on::before{ content:'✓ '; }

/* SMS-consent checkboxes on the lead form and the booking wizard */
.leadform label.form-consent,
.wiz label.wiz-consent{
  flex-direction:row; align-items:flex-start; gap:.6rem; flex-wrap:wrap;
  font-size:.8rem; line-height:1.55; color:rgba(233,239,240,.62); margin:.3rem 0 .2rem }
.leadform label.form-consent input,
.wiz label.wiz-consent input{
  width:1.05rem; height:1.05rem; margin-top:.12rem; flex:0 0 auto; accent-color:var(--accent) }
.leadform label.form-consent > span,
.wiz label.wiz-consent > span{ flex:1; min-width:12rem }
.leadform label.form-consent a,
.wiz label.wiz-consent a{ color:var(--accent); text-decoration:underline }
.leadform label.form-consent .err,
.wiz label.wiz-consent .err{ flex-basis:100%; color:#b4402f; font-size:.78rem; margin-top:.15rem }

/* ============================================================================
   BOOKING CART — the "add another vehicle or service" line-item list, and
   the saved-address block shown when a mobile visit needs travel pricing.
   ========================================================================== */
.wiz-item-rm{ margin-left:auto; background:none; border:0; font:inherit; font-size:.72rem;
  color:rgba(233,239,240,.5); text-decoration:underline; cursor:pointer; padding:0 }
.wiz-item-rm:hover{ color:rgba(233,239,240,.8) }
.wiz-add-picker{ border:1px solid var(--line); border-radius:1.125rem; padding:1.1rem; margin-bottom:1rem }
.wiz-addr-card{ margin-top:.85rem; padding:.85rem 1rem; border:1px solid var(--line);
  border-radius:.9rem; font-size:.85rem; background:var(--surface) }
.wiz-addr-card p{ margin:0 0 .3rem }
.wiz-addr-form{ display:grid; gap:.85rem; margin-top:.9rem }
@media (min-width:640px){ .wiz-addr-form{ grid-template-columns:1fr 1fr } }
.wiz-addr-form button{ grid-column:1/-1; justify-self:start }

/* REVIEW LANDING (/review/) */
.revcta{ text-align:center; padding:1rem 0 .25rem }
.revcta .pill.big>span{ padding:1.1rem 1.1rem 1.1rem 2.25rem; font-size:1.05rem }
.revcta .pill.big .badge{ width:2.75rem; height:2.75rem }
.revcta .fine{ margin-top:1rem }

/* PPF: STEK fashion-film selector (colors pulled from stek-usa.com's own
   theme — deep red, gold — used as this one section's accent so the
   partnership reads distinctly without pulling the rest of the page off
   the site's own black/gold identity). Swatches are CSS gradients keyed
   off --c1/--c2/--c3 custom properties set per finish in stek-films.js,
   not photographs. */
.stek-sec{ background:linear-gradient(160deg,#1c0d0d 0%,#0a0a0a 55%) }
.stek-eyebrow{ color:#DCB425 }
.stek-eyebrow::before{ background:#8E2924 }

.stek-tabs{ display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:1.75rem }
.stek-tab{ font:inherit; cursor:pointer; padding:.5rem 1.1rem; border-radius:9999px; border:1px solid rgba(255,255,255,.18);
  background:transparent; color:rgba(255,255,255,.7); font-size:.8rem; font-weight:500; letter-spacing:.02em }
.stek-tab.on{ background:#8E2924; border-color:#8E2924; color:#fff }
.stek-tab:hover:not(.on){ border-color:rgba(220,180,37,.55); color:#fff }

.stek-layout{ display:grid; gap:1.75rem; grid-template-columns:17rem 1fr; align-items:start }
@media (max-width:768px){ .stek-layout{ grid-template-columns:1fr } }

.stek-stage{ display:flex; align-items:center; gap:1.25rem; background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.1); padding:1.5rem }
.stek-stage-copy h3{ font-size:1.05rem; font-weight:600; margin:0 0 .4rem; color:#fff }
.stek-stage-copy h3 em{ font-style:normal; color:#DCB425; font-weight:500; font-size:.85rem }
.stek-stage-copy p{ font-size:.85rem; line-height:1.6; color:rgba(255,255,255,.68); margin:0 }
.stek-soon-note{ margin-top:.5rem!important; color:#DCB425!important; font-size:.75rem!important }

.stek-grid{ display:grid; gap:1.1rem .9rem; grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr)) }
.stek-swatch{ font:inherit; cursor:pointer; background:transparent; border:none; padding:0; display:flex; flex-direction:column;
  align-items:center; gap:.45rem; color:rgba(255,255,255,.72) }
.stek-swatch .stek-dot{ width:3.25rem; height:3.25rem }
.stek-swatch.on .stek-dot{ box-shadow:inset 0 0 0 2px rgba(220,180,37,.5), 0 0 0 2px #DCB425, 0 6px 14px rgba(0,0,0,.5) }
.stek-swatch.soon{ opacity:.55 }
.stek-lbl{ font-size:.68rem; line-height:1.3; text-align:center }
.stek-lbl em{ display:block; font-style:normal; opacity:.65 }
.stek-soon{ font-size:.6rem; text-transform:uppercase; letter-spacing:.05em; color:#DCB425 }

.stek-dot{ display:block; position:relative; overflow:hidden; border-radius:50%;
  box-shadow:inset 0 0 0 2px rgba(220,180,37,.4), 0 6px 14px rgba(0,0,0,.45) }
.stek-dot::before, .stek-dot::after{ content:""; position:absolute; inset:0;
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-size:cover; mask-size:cover; -webkit-mask-position:center; mask-position:center }
.stek-dot-big{ width:5.5rem; height:5.5rem; flex:0 0 auto }

/* texture recipes, tinted per finish via --c1/--c2/--c3 */
.tex-solid{ background:radial-gradient(circle at 32% 28%, var(--c1), var(--c2) 72%) }
.tex-solid-matte{ background:radial-gradient(circle at 40% 35%, var(--c1), var(--c2) 85%) }
.tex-prism{ background:conic-gradient(from 210deg at 50% 50%, var(--c1), var(--c2), var(--c3), var(--c1)) }
.tex-prism-matte{ background:conic-gradient(from 210deg at 50% 50%, var(--c1), var(--c2), var(--c3), var(--c1)); filter:brightness(.85) saturate(.7) }
.tex-camo{ background:var(--c2) }
.tex-camo::before{ background:var(--c1);
  -webkit-mask-image:url(img/stek/camo-base.png); mask-image:url(img/stek/camo-base.png) }
.tex-camo::after{ background:var(--c3);
  -webkit-mask-image:url(img/stek/camo-accent.png); mask-image:url(img/stek/camo-accent.png) }
.tex-carbon{ background:
    repeating-linear-gradient(45deg, rgba(255,255,255,.06) 0 2px, transparent 2px 6px),
    repeating-linear-gradient(-45deg, rgba(0,0,0,.4) 0 2px, transparent 2px 6px),
    var(--c1) }
.tex-carbon-semi{ background:
    radial-gradient(circle at 35% 30%, rgba(255,255,255,.18), transparent 55%),
    repeating-linear-gradient(45deg, rgba(255,255,255,.07) 0 2px, transparent 2px 6px),
    repeating-linear-gradient(-45deg, rgba(0,0,0,.4) 0 2px, transparent 2px 6px),
    var(--c1) }
.tex-carbon-gloss{ background:
    radial-gradient(circle at 32% 26%, rgba(255,255,255,.4), transparent 45%),
    repeating-linear-gradient(45deg, rgba(255,255,255,.08) 0 2px, transparent 2px 6px),
    repeating-linear-gradient(-45deg, rgba(0,0,0,.45) 0 2px, transparent 2px 6px),
    var(--c1) }
.tex-damascus{ background:var(--c2) }
.tex-damascus::after{ background:var(--c1);
  -webkit-mask-image:url(img/stek/damascus.png); mask-image:url(img/stek/damascus.png) }
.tex-forged{ background:var(--c2) }
.tex-forged::after{ background:var(--c1);
  -webkit-mask-image:url(img/stek/forged.png); mask-image:url(img/stek/forged.png) }
.tex-forged-gloss{ background:
    radial-gradient(circle at 30% 25%, rgba(255,255,255,.35), transparent 55%),
    var(--c2) }
.tex-forged-gloss::after{ background:var(--c1);
  -webkit-mask-image:url(img/stek/forged.png); mask-image:url(img/stek/forged.png) }
.tex-light{ background:linear-gradient(160deg, var(--c1), var(--c2)) }

/* PPF VISUALIZER (/visualizer/) — dark tool section, reuses the .stek-*
   swatch styles above. */
.viz-sec{ background:linear-gradient(160deg,#161013 0%,#0a0a0a 55%); color:#fff }
/* flex/grid display above outranks the UA [hidden] rule — restore it (see .wiz note). */
.viz-sec [hidden]{ display:none !important }
.viz-sec .fine{ color:rgba(255,255,255,.5) }
.viz-wrap{ display:grid; gap:2rem; grid-template-columns:1.4fr 1fr; align-items:start }
@media (max-width:900px){ .viz-wrap{ grid-template-columns:1fr } }
.viz-stage{ position:relative; background:#0c0c0d; border:1px solid rgba(255,255,255,.1); overflow:hidden }
#vizCanvas{ display:block; width:100%; height:auto; touch-action:none; cursor:grab }
#vizCanvas:active{ cursor:grabbing }
.viz-load{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:1rem; background:rgba(12,12,13,.85); color:rgba(255,255,255,.75); font-size:.85rem; text-align:center; padding:2rem }
.viz-load .bar{ width:11rem; height:2px; background:rgba(255,255,255,.12); overflow:hidden }
.viz-load .bar i{ display:block; width:40%; height:100%; background:var(--accent-bright);
  animation:vizbar 1.1s ease-in-out infinite }
@keyframes vizbar{ 0%{ transform:translateX(-120%) } 100%{ transform:translateX(320%) } }
.viz-hint{ position:absolute; left:1rem; bottom:.85rem; margin:0; font-size:.7rem; letter-spacing:.06em;
  text-transform:uppercase; color:rgba(255,255,255,.45) }
.viz-current{ position:absolute; right:1rem; top:.85rem; margin:0; font-size:.78rem; font-weight:500;
  color:var(--accent-lt); text-align:right; max-width:60% }

.viz-panel{ display:flex; flex-direction:column; gap:1.75rem }
.viz-block{ display:flex; flex-direction:column }
.viz-h{ font-size:.72rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase;
  color:rgba(255,255,255,.55); margin:0 0 .9rem }
.viz-bodies{ display:flex; flex-wrap:wrap; gap:.5rem }
.viz-body{ font:inherit; cursor:pointer; padding:.55rem 1rem; border:1px solid rgba(255,255,255,.18);
  background:transparent; color:rgba(255,255,255,.72); font-size:.8rem; font-weight:500 }
.viz-body.on{ background:#8E2924; border-color:#8E2924; color:#fff }
.viz-body:hover:not(.on){ border-color:rgba(220,180,37,.55); color:#fff }
.viz-panel .stek-grid{ grid-template-columns:repeat(auto-fill,minmax(4rem,1fr)) }
.viz-panel .stek-tabs{ margin-bottom:1.1rem }

/* PPF VISUALIZER — vehicle picker (Phase 2) */
.viz-vehicle{ display:grid; grid-template-columns:1fr 1fr; gap:.75rem }
.viz-field{ display:flex; flex-direction:column; gap:.3rem; font-size:.7rem; letter-spacing:.06em;
  text-transform:uppercase; color:rgba(255,255,255,.55) }
.viz-field-wide{ grid-column:1 / -1 }
.viz-field select{ font:inherit; font-size:.85rem; letter-spacing:normal; text-transform:none;
  color:#fff; background:#141013; border:1px solid rgba(255,255,255,.2); padding:.55rem .7rem }
.viz-field select:disabled{ opacity:.5 }
.viz-note{ font-size:.76rem; line-height:1.5; color:var(--accent-lt); margin:.9rem 0 0 }
.viz-bodies-wrap{ margin-top:1rem }
.viz-bodies-wrap summary{ font-size:.75rem; color:rgba(255,255,255,.55); cursor:pointer; letter-spacing:.02em }
.viz-bodies-wrap[open] summary{ margin-bottom:.75rem }

/* PPF VISUALIZER — send-to-Wallis form (Phase 3) */
.viz-form{ display:flex; flex-direction:column; gap:.85rem; position:relative }
.viz-form input[type=text],.viz-form input[type=tel],.viz-form input[type=email]{
  font:inherit; font-size:.9rem; color:#fff; background:#141013;
  border:1px solid rgba(255,255,255,.2); padding:.6rem .75rem; width:100% }
.viz-form input:focus{ outline:2px solid var(--accent-bright); outline-offset:1px }
.viz-consent{ display:flex; gap:.6rem; align-items:flex-start; font-size:.74rem; line-height:1.5;
  color:rgba(255,255,255,.62) }
.viz-consent input{ margin-top:.15rem; flex:0 0 auto }
.viz-consent a{ color:var(--accent-lt); text-decoration:underline }
.viz-form #vqSend{ align-self:flex-start; margin-top:.25rem }
.viz-form-msg{ font-size:.82rem; line-height:1.5; margin:0 }
.viz-form-msg.good{ color:#68bd8d }
.viz-form-msg.bad{ color:#e08a72 }

/* PPF VISUALIZER — scene + base-colour pickers */
.viz-scenes{ display:flex; flex-wrap:wrap; gap:.4rem }
.viz-chip{ font:inherit; font-size:.78rem; font-weight:500; cursor:pointer; padding:.42rem .8rem;
  border:1px solid rgba(255,255,255,.18); background:transparent; color:rgba(255,255,255,.72) }
.viz-chip:hover:not(.on){ border-color:rgba(220,180,37,.55); color:#fff }
.viz-chip.on{ background:#8E2924; border-color:#8E2924; color:#fff }
.viz-head{ display:flex; flex-wrap:wrap; align-items:center; gap:.6rem; margin-top:1.1rem }
.viz-head-lbl{ font-size:.7rem; letter-spacing:.06em; text-transform:uppercase; color:rgba(255,255,255,.55) }
.viz-head-opts{ display:flex; gap:.4rem }
.viz-bases{ display:flex; flex-wrap:wrap; align-items:center; gap:.5rem; margin-top:.7rem }
.viz-base{ width:1.9rem; height:1.9rem; padding:0; cursor:pointer; border:1px solid rgba(255,255,255,.28) }
.viz-base:hover{ border-color:rgba(255,255,255,.6) }
.viz-base.on{ border-color:#fff; box-shadow:0 0 0 2px var(--accent-bright) }
.viz-base-custom{ display:inline-flex; align-items:center; gap:.4rem; font-size:.72rem; letter-spacing:.04em;
  text-transform:uppercase; color:rgba(255,255,255,.5) }
.viz-base-custom input[type=color]{ width:1.9rem; height:1.9rem; padding:0; cursor:pointer;
  border:1px solid rgba(255,255,255,.28); background:transparent }

/* ============================ MOBILE POLISH ============================ */
/* Chat launcher: a wide "Ask us" pill sits over page copy on small screens.
   Shrink it to a circular icon there so it stops covering text. */
@media (max-width:767px){
  .wadchat-fab{ padding:0; width:3rem; height:3rem; justify-content:center; border-radius:9999px }
  .wadchat-fab > span{ display:none }
  .wadchat-fab svg{ font-size:1.35rem }
}

/* Booking stepper: "Service / Details / Confirm" ran off the right edge on
   narrow phones. Let it wrap, and tighten it below 400px. */
.wiz-steps{ flex-wrap:wrap; row-gap:.55rem }
@media (max-width:400px){
  .wiz-steps{ gap:.4rem; font-size:.62rem; letter-spacing:.04em }
  .wiz-steps li::after{ width:.55rem }
  .wiz-steps b{ width:1.2rem; height:1.2rem }
}

/* Hero + footer: the giant "WALLIS" watermark is wider than a phone screen
   at its fixed 13rem size, so it just gets clipped by the hero's/footer's
   overflow:hidden — cut off rather than hidden. Same call as the hero mark:
   it only reads as texture on the wide layout anyway. */
@media (max-width:900px){ #heroMark, #footMark{ display:none } }
.partners li>span{ color:rgba(255,255,255,.88); text-shadow:0 1px 8px rgba(0,0,0,.5) }
.partners .lbl{ color:rgba(255,255,255,.72) }

/* Trim the dead band between a page hero and the first working block on
   the single-column tool pages (book, gallery, visualizer). */
@media (max-width:719px){
  .phero + .sec > .wrap,
  .phero + .sec > .narrow-wrap{ padding-top:2rem }
  .wiz{ margin-top:1rem }
}

/* ============================================================================
   DIRECTION B — cooler, glass-forward (dark)
   The site runs on a deep cool ground. Every "card on the page" is lifted to
   a frosted panel so grids keep their shape; gold is the one warm accent;
   headlines stay Fraunces. Bulk text colours were flipped to light by the
   token pass — this block handles surfaces, chrome and the exceptions.
   ========================================================================== */

/* --- the ground itself + ambient light --- */
body{
  background-image:
    radial-gradient(150% 60% at 50% -10%, rgba(64,116,126,.34), rgba(64,116,126,0) 60%),
    radial-gradient(130% 50% at 50% 114%, rgba(230,197,121,.10), rgba(230,197,121,0) 58%);
}
::selection{ background:rgba(230,197,121,.28) }

/* --- dark blocks: lift solid dark sections to a raised glass panel so they
   separate from the ground; keep image-backed cards dark but ringed --- */
.panel, .dark-sec, .ctaband{
  background:var(--surface); border:1px solid var(--glass-brd);
  box-shadow:0 22px 50px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.06) }
.card, .rcard, .plate{ background:#161d22; border:1px solid rgba(255,255,255,.14);
  box-shadow:0 16px 38px rgba(0,0,0,.42) }
.card:hover, .rcard:hover{ border-color:rgba(255,255,255,.24) }
.split figure{ background:#12181c }
.card, .panel, .dark-sec, .plate{ border-radius:1.6rem }
.wadchat-msg.me{ background:var(--accent); color:#14100b }
footer{ background:#0b0f12; border-radius:2rem 2rem 0 0;
  border-top:1px solid rgba(230,197,121,.22); box-shadow:0 -18px 44px rgba(0,0,0,.5) }
#modal{ background:rgba(4,8,10,.62) }
.wiz-steps li.done b{ background:var(--accent); border-color:transparent; color:#14100b }

/* --- full-bleed section fills drop out so the ground carries through --- */
#about, .band, #works, #services, .trust{ background:transparent }

/* --- frosted glass: the big tool cards + every card grid --- */
.wiz, .calc, .acct,
.pcard, .acard, .plans article, .panels article,
.verify, .v-empty, .avq-add, .avq-card, .avq-empty, .ptable-scroll, .plist ul,
.includes .incl, .band .t-light, .faqs details{
  position:relative; isolation:isolate;
  background-color:var(--glass-fallback); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(16px) saturate(1.5); backdrop-filter:blur(16px) saturate(1.5);
  border:1px solid var(--glass-brd); box-shadow:var(--glass-shadow) }
.avq-card header{ background:rgba(255,255,255,.05); border:0; border-bottom:1px solid var(--glass-brd) }
.avq-svc:hover, .avq-svc.on{ background:rgba(230,197,121,.08) }
.panels article, .band .t-light{ color:var(--ink) }
.faqs details{ border-radius:var(--radius-card-sm); padding:0 1.25rem; margin-bottom:.6rem }
.faq{ border-bottom:none }

/* --- the travelling rim light on the tool cards --- */
.wiz, .calc, .acct{ border-radius:1.6rem }
.wiz::after, .calc::after, .acct::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; z-index:0;
  padding:1.5px; background:conic-gradient(from var(--edge,90deg),
    rgba(255,255,255,0) 0deg,#fff 38deg,rgba(255,255,255,.2) 100deg,rgba(130,205,255,.4) 150deg,
    rgba(255,255,255,0) 205deg,rgba(255,180,220,.35) 262deg,rgba(255,255,255,.7) 315deg,rgba(255,255,255,0) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude }
.wiz > *, .calc > *, .acct > *{ position:relative; z-index:1 }
@media (prefers-reduced-motion:reduce){ .wiz::after,.calc::after,.acct::after{ --edge:120deg } }

/* --- inputs, chips and hover fills sit just above the ground --- */
.wiz-cat.on, .wiz-cal-d.open{ background:rgba(255,255,255,.08); border-color:var(--accent) }
.wiz select:focus, .wiz input:focus, .wiz textarea:focus,
.leadform input:focus, .leadform select:focus, .leadform textarea:focus,
.calc select:focus, .calc-in input:focus, .acct-field input:focus,
.avq-add input:focus, .avq-add select:focus,
#modal input:focus, #modal select:focus, #modal textarea:focus,
.wiz-cal-nav:hover:not([disabled]){ background:rgba(255,255,255,.1) }
.srow a:hover{ background:rgba(255,255,255,.05) }

/* --- chat widget --- */
.wadchat-panel{
  background-color:var(--glass-fallback); background-image:var(--glass-bg);
  -webkit-backdrop-filter:blur(20px) saturate(1.6); backdrop-filter:blur(20px) saturate(1.6);
  border:1px solid var(--glass-brd); box-shadow:0 28px 64px rgba(0,0,0,.5) }
.wadchat-msg.bot{ background:rgba(255,255,255,.06); border:1px solid var(--glass-brd) }

/* --- pills invert: "dark" becomes the bright CTA, "light" a glass chip --- */
.pill.dark>span{ background:var(--accent); color:#14100b }
.pill.dark .badge{ background:#14100b; color:var(--accent) }
.pill.light>span, .hero .pill.light>span{
  background-color:rgba(255,255,255,.08); background-image:none;
  border-color:rgba(255,255,255,.2); color:var(--ink) }
.pill.light .badge, .pill.outline .badge, .hero .pill.outline .badge{ background:var(--ink); color:#10161a }
.pill.outline>span{ border-color:rgba(255,255,255,.4); color:var(--ink) }
.band .t-accent{ background:linear-gradient(to bottom right,var(--accent-from),var(--accent-to)); color:#14100b }
.skip{ background:var(--accent); color:#14100b }

/* --- account + management portal: same dark glass --- */
.acct, .acct-card{ background-color:var(--glass-fallback); background-image:var(--glass-bg);
  border:1px solid var(--glass-brd) }
.mng-body{ background:var(--ground) }
.mng-head{ background:rgba(15,20,23,.72);
  -webkit-backdrop-filter:blur(16px) saturate(1.5); backdrop-filter:blur(16px) saturate(1.5);
  border-bottom:1px solid var(--glass-brd) }
.mng-card, .mng-tile, .mng-cstats > div, .mng-stat, .mng-list a,
.mng-mini, .mng-role, .mng-lead-st, .mng-uprow, .mng-photo, .mng-card textarea,
.mng-implog{ background:rgba(255,255,255,.05); border:1px solid var(--glass-brd) }
.mng-card{ border-radius:var(--radius-card-sm) }
/* the rounded-glass pass above only ever reached .mng-card — every other
   dashboard surface stayed flat-cornered next to it. Finish the rollout. */
.mng-tile, .mng-stat, .mng-cstats > div{ border-radius:var(--radius-card-sm) }
.mng-list a, .mng-role, .mng-photo, .mng-lead-st, .mng-uprow{ border-radius:var(--radius-control) }
.mng-tile:hover, .mng-pact button:hover, .mng-toggle:hover,
.mng-cal-daynum:hover{ background:rgba(255,255,255,.1) }

/* --- Direction B: chrome that still carries A's literal cream values --- */
#loader{ background:#0f1417 }
#home{ background:#10161a }
#header{ background:rgba(15,20,23,.62) !important;
  -webkit-backdrop-filter:blur(16px) saturate(1.5); backdrop-filter:blur(16px) saturate(1.5) }
#header.stuck{ background:rgba(12,16,19,.9) !important; border-bottom-color:var(--glass-brd) }
#menuBtn, .clock{ color:var(--ink) }
.mbar{ background:rgba(12,16,19,.82) !important;
  border-top:1px solid var(--glass-brd); box-shadow:0 -8px 24px rgba(0,0,0,.5) }
#modal .pnl{ background-color:var(--glass-fallback); background-image:var(--glass-bg);
  border:1px solid var(--glass-brd);
  box-shadow:0 30px 70px -12px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.14) }
#closeModal{ background:rgba(255,255,255,.08); color:var(--ink) }
#closeModal:hover{ background:rgba(255,255,255,.16) }
.hcard .panel{ background:rgba(255,255,255,.06); color:var(--ink) }
.hcard .tile{ background:#0b0f12 center/cover no-repeat }
.hcard .navs button:hover{ color:var(--ink) }
.band .t-ghost{ background:rgba(255,255,255,.04); color:rgba(233,239,240,.35) }
#about, #works, #services, .trust, .band{ color:var(--ink) }

/* ============================================================================
   AVAILABILITY DOTS — a shared green/yellow/red indicator used on both the
   staff booking calendar (/manage/#/bookings) and the public booking wizard's
   date picker. Green pulses (plenty open), yellow and red hold still (limited
   / booked solid) so the pulse itself reads as "come get this one".
   ========================================================================== */
.cal-dot{ position:absolute; width:.32rem; height:.32rem; border-radius:50%; pointer-events:none }
.cal-dot.g{ background:#2ecc71; box-shadow:0 0 0 0 rgba(46,204,113,.6); animation:calPulse 1.8s ease-out infinite }
.cal-dot.y{ background:#f2b705 }
.cal-dot.r{ background:#e5484d }
@keyframes calPulse{
  0%   { box-shadow:0 0 0 0 rgba(46,204,113,.55) }
  70%  { box-shadow:0 0 0 .3rem rgba(46,204,113,0) }
  100% { box-shadow:0 0 0 0 rgba(46,204,113,0) }
}
@media (prefers-reduced-motion:reduce){ .cal-dot.g{ animation:none } }

/* wizard date picker — dot sits on the top-right corner of each day cell */
.wiz-cal-d{ position:relative; overflow:hidden }
.wiz-cal-d .cal-dot{ top:.22rem; right:.28rem }

/* staff month view — dot on the day-number chip */
.mng-cal-cell{ position:relative }
.mng-cal-cell .cal-dot{ top:.35rem; right:.35rem }

/* staff week/day column header — dot beside the day label */
.mng-cal-colh{ position:relative }
.mng-cal-colh .cal-dot{ top:.6rem; right:.45rem }

/* staff week/day canvas — soft bands behind the grid showing open gaps
   between appointments, so a free stretch of the day is visible at a
   glance, not just inferred from the absence of a booking chip. */
.mng-cal-free{ position:absolute; left:0; right:0; background:rgba(46,204,113,.08);
  border-top:1px solid rgba(46,204,113,.18); border-bottom:1px solid rgba(46,204,113,.18);
  pointer-events:none; z-index:0 }
.mng-cal-ev-wrap{ z-index:1 }

/* legend above the calendar */
.mng-cal-legend{ display:flex; flex-wrap:wrap; gap:1rem; margin:.6rem 0 .3rem;
  font-size:.74rem; color:rgba(233,239,240,.55) }
.mng-cal-legend span{ display:inline-flex; align-items:center; gap:.4rem }
.mng-cal-legend i{ position:relative; width:.4rem; height:.4rem; border-radius:50%; display:inline-block }
.mng-cal-legend i.g{ background:#2ecc71 } .mng-cal-legend i.y{ background:#f2b705 } .mng-cal-legend i.r{ background:#e5484d }
