/* ============================================================================
   AMSTERDAM EROTIC MASSAGE — "Red Light on Water"
   black canal water at night · neon red with glow · lamp-warm secondary
   League Gothic (sign) · Mrs Saint Delafield (script) · Hanken Grotesk (body)

   This stylesheet is the whole design for the site: the theme's own templates
   AND every shared template that inherits through templates/<name>. The shared
   set writes --ink, --muted, --faint, --rule, --cloud, --sky-3 and --serif into
   inline styles, so those names are declared below (second block) and bound to
   this palette rather than left to resolve as nothing.

   The first :root block is the one scripts/build.js rewrites from
   cfg.theme.palette / cfg.theme.fonts — keep every token in it, and keep it
   free of nested braces.
   ========================================================================= */

:root{
  /* the water */
  --water:#04070C;
  --water-2:#070C14;
  /* the sign */
  --neon:#FF2646;
  --neon-hot:#FF5D72;
  --neon-core:#FFDFE4;
  --neon-dim:#7C0F22;
  /* the lamp on the sill */
  --lamp:#FFD9A0;
  /* ink and air */
  --white:#EEF3F8;
  --mist:#8C97A6;
  --hair:rgba(238,243,248,.14);
  --hair-soft:rgba(238,243,248,.07);
  --header-bg:rgba(4,7,12,.9);
  --wa:#25D366;
  --wa-dark:#1EA857;
  /* type + measure */
  --serif:"League Gothic","Oswald","Arial Narrow",sans-serif;
  --sans:"Hanken Grotesk","Helvetica Neue",Arial,sans-serif;
  --max:1240px;
  --reading:660px;
}

/* Derived values, kept out of the block above so a palette rewrite cannot
   drop them. --sign is the display face, --script the neon handwriting. */
:root{
  --sign:var(--serif);
  --script:"Mrs Saint Delafield",cursive;
  --fog:rgba(176,198,224,.55);
  --fog-30:rgba(176,198,224,.32);
  --fog-15:rgba(176,198,224,.15);
  --pane:rgba(13,20,30,.55);
  --glow:rgba(255,38,70,.65);
  --glow-soft:rgba(255,38,70,.28);
  --gut:clamp(20px,5vw,72px);
  /* names the shared templates write into inline styles */
  --ink:#EEF3F8;
  --ink-soft:rgba(238,243,248,.78);
  --muted:#8C97A6;
  --faint:rgba(176,198,224,.5);
  --rule:rgba(238,243,248,.14);
  --rule-soft:rgba(238,243,248,.07);
  --cloud:#070C14;
  --sky-1:#070C14;
  --sky-2:#060A11;
  --sky-3:#04070C;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
[id]{scroll-margin-top:96px}

body{
  margin:0;
  background:
    radial-gradient(110% 60% at 50% 118%, rgba(255,38,70,.13), transparent 60%),
    radial-gradient(80% 50% at 88% -8%, rgba(255,217,160,.05), transparent 55%),
    linear-gradient(180deg,#050910 0%, var(--water) 50%, #060A11 100%);
  background-color:var(--water);
  color:var(--white);
  font-family:var(--sans);
  font-weight:300;
  font-size:clamp(14.5px,.4vw + 13px,16.5px);
  line-height:1.72;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
/* nothing may push the page sideways — clip is the safety rail (hidden is
   the fallback where clip is unknown) */
html,body{overflow-x:hidden;overflow-x:clip}
::selection{background:var(--neon);color:#fff}
img,svg{max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
strong,b{font-weight:600;color:var(--white)}
p{margin:0 0 1.1em}

/* ---------- the water behind every page ---------- */
.night{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.night svg{position:absolute;inset:0;width:100%;height:100%}
.sheen{position:absolute;left:-20%;right:-20%;bottom:-30%;height:90%;
  background:
    repeating-linear-gradient(178deg, rgba(255,38,70,.05) 0 2px, transparent 2px 9px),
    radial-gradient(60% 80% at 50% 100%, rgba(255,38,70,.10), transparent 65%);
  filter:blur(3px);mix-blend-mode:screen;
  animation:lap 11s ease-in-out infinite alternate}
@keyframes lap{from{transform:translateY(0) scaleX(1)}to{transform:translateY(-2.2%) scaleX(1.03)}}
.mist{position:absolute;inset:0;
  background:radial-gradient(50% 34% at 30% 40%, rgba(176,198,224,.045), transparent 70%),
             radial-gradient(44% 30% at 74% 66%, rgba(176,198,224,.04), transparent 70%);
  filter:blur(20px);animation:drift 46s ease-in-out infinite alternate}
@keyframes drift{from{transform:translateX(-2%)}to{transform:translateX(3%)}}
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.45;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='130' height='130'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='.05'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

main{position:relative;z-index:2}
section{position:relative;z-index:2;padding:clamp(56px,9vh,120px) var(--gut);overflow:clip}
.inner{max-width:var(--max);margin-inline:auto;position:relative}
.centre{text-align:center}
.no-save{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* shared-template containers */
.wrap,.container{max-width:var(--max);margin:0 auto;padding:0 var(--gut);position:relative}
section .container,section .wrap{padding-left:0;padding-right:0}
.reading{max-width:var(--reading);margin-left:auto;margin-right:auto}
.narrow{max-width:var(--reading);margin-left:auto;margin-right:auto}

/* ---------- type ---------- */
h1,h2,h3,h4,h5{font-family:var(--sign);font-weight:400;margin:0;color:var(--white)}
h1{font-size:clamp(2.6rem,6.5vw,4.8rem);line-height:.96;letter-spacing:.02em;text-transform:uppercase}
h2{font-size:clamp(2.2rem,4.8vw,4.2rem);line-height:.96;letter-spacing:.015em;text-transform:uppercase;margin:0 0 clamp(14px,2vw,24px)}
h3{font-size:clamp(1.25rem,2.1vw,1.7rem);line-height:1.15;letter-spacing:.04em;text-transform:uppercase}
h4{font-size:1.02rem;letter-spacing:.06em;text-transform:uppercase}
h1 em,h2 em,h3 em{font-style:normal;color:var(--neon-hot);text-shadow:0 0 18px var(--glow)}
.scr{font-family:var(--script);text-transform:none;font-size:.72em;color:var(--neon-hot);
  text-shadow:0 0 16px rgba(255,38,70,.7);letter-spacing:0;display:inline-block;transform:translateY(.08em)}

.lede{font-size:clamp(15.5px,1.15vw,18px);line-height:1.75;color:var(--fog);max-width:58ch;margin:0 0 1em}
.lede b{color:var(--white);font-weight:600}
.lede--centre{margin-left:auto;margin-right:auto}
.small{font-size:.83rem;line-height:1.7;color:var(--fog-30)}
.body-lit{font-size:clamp(15.5px,1.2vw,18px);line-height:1.85;color:var(--ink-soft);margin:0}

.label{font-family:var(--sans);font-weight:500;font-size:.64rem;letter-spacing:.42em;
  text-transform:uppercase;color:var(--fog-30);margin:0}
.label-top{margin-bottom:18px}

.tag{display:flex;align-items:center;gap:14px;margin:0 0 clamp(18px,2.6vw,32px);
  font-size:10px;letter-spacing:.5em;text-transform:uppercase;color:var(--fog-30)}
.tag i{font-style:normal;width:26px;height:1px;background:var(--neon);box-shadow:0 0 8px var(--neon);flex:none}

.pre{display:flex;align-items:center;justify-content:center;gap:18px;
  font-size:10.5px;letter-spacing:.6em;text-transform:uppercase;color:var(--fog-30);
  margin:0 0 clamp(16px,2.6vh,26px)}
.pre::before,.pre::after{content:"";height:1px;width:clamp(24px,6vw,90px);background:var(--hair);flex:none}

/* ---------- reveal (gated behind html.js) ---------- */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}
.js .rv-2{transition-delay:.12s}.js .rv-3{transition-delay:.24s}.js .rv-4{transition-delay:.36s}

/* ---------- navigation ---------- */
.nav{position:sticky;top:0;z-index:60;
  background:rgba(4,7,12,.55);
  backdrop-filter:saturate(130%) blur(10px);
  border-bottom:1px solid transparent;
  transition:background .5s ease,border-color .5s ease}
.nav.is-set{background:var(--header-bg);border-bottom-color:var(--hair-soft)}
.nav__in{max-width:var(--max);margin:0 auto;padding:14px var(--gut);
  display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{display:flex;align-items:center;gap:13px;white-space:nowrap;line-height:1}
.brand__scr{font-family:var(--script);font-size:27px;line-height:.8;color:var(--neon-hot);
  text-shadow:0 0 12px var(--glow);transform:translateY(-3px)}
.brand__cap{font-family:var(--sign);font-size:19px;letter-spacing:.14em;text-transform:uppercase;color:var(--white)}
.brand__cap b{color:var(--neon);font-weight:400}
.nav__links{display:flex;align-items:center;gap:clamp(14px,2.2vw,34px)}
.nav__links a{font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--fog);transition:color .3s,text-shadow .3s;white-space:nowrap;padding:6px 0}
.nav__links a:hover,.nav__links a:focus-visible{color:#fff;text-shadow:0 0 14px rgba(255,38,70,.9)}
.nav__cta{display:flex;align-items:center;gap:8px}
.nav__pill{display:inline-flex;align-items:center;gap:8px;
  font-family:var(--sign);font-size:13.5px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--neon-core);padding:9px 18px;border-radius:3px;
  border:1px solid rgba(255,38,70,.55);background:rgba(255,38,70,.08);
  box-shadow:0 0 18px rgba(255,38,70,.22), inset 0 0 14px rgba(255,38,70,.13);
  transition:box-shadow .4s,background .4s;white-space:nowrap}
.nav__pill:hover{background:rgba(255,38,70,.16);box-shadow:0 0 30px rgba(255,38,70,.45), inset 0 0 18px rgba(255,38,70,.22)}
.nav__pill svg{width:13px;height:13px;flex:none;fill:currentColor}

/* ---------- hero — shared shape ---------- */
.hero{padding:clamp(56px,9vh,110px) var(--gut) clamp(48px,7vh,90px);text-align:center}
.hero > *{max-width:var(--max);margin-left:auto;margin-right:auto}
.hero .inner{padding-left:0;padding-right:0}
.hero h1{margin:.25em 0 .3em}
.hero .lede{margin-left:auto;margin-right:auto}
.hero-small{padding-bottom:clamp(30px,4vw,48px)}

/* inherited pages: give the bare <h1> a quiet charge of neon */
.hero > h1{color:var(--neon-core);
  text-shadow:0 0 6px rgba(255,255,255,.4), 0 0 26px rgba(255,38,70,.55), 0 0 70px rgba(255,38,70,.3)}
.hero > h1 em{color:var(--neon-hot)}

/* the profile / service name in lights */
.neon-name{color:var(--neon-core);
  text-shadow:0 0 5px rgba(255,255,255,.5), 0 0 18px var(--neon-hot), 0 0 48px var(--neon), 0 0 110px var(--neon-dim)}

/* ---------- HOME hero — the sign and its reflection ---------- */
.hero--sign{min-height:min(96svh,980px);display:flex;flex-direction:column;justify-content:center;
  padding-top:clamp(70px,11vh,130px);padding-bottom:0}
.hero--sign .inner{width:100%}
.sign-wrap{position:relative;display:block}
.neon-l1{display:block;font-family:var(--sign);text-transform:uppercase;
  font-size:clamp(60px,12.5vw,188px);line-height:.88;letter-spacing:.03em;
  color:var(--neon-core);
  text-shadow:0 0 4px #fff, 0 0 12px var(--neon-hot), 0 0 34px var(--neon), 0 0 80px var(--neon), 0 0 140px var(--neon-dim);
  animation:buzz 7s linear infinite}
.neon-l2{display:block;font-family:var(--sign);text-transform:uppercase;
  font-size:clamp(28px,5vw,74px);line-height:1.05;letter-spacing:.5em;text-indent:.5em;
  color:transparent;-webkit-text-stroke:1px rgba(238,243,248,.75);
  text-shadow:0 0 24px rgba(176,198,224,.25);margin-top:.18em}
.neon-scr{display:block;font-family:var(--script);text-transform:none;
  font-size:clamp(30px,4.4vw,62px);line-height:1;letter-spacing:0;
  color:var(--neon-hot);text-shadow:0 0 14px rgba(255,38,70,.8), 0 0 40px rgba(255,38,70,.5);
  margin-top:.35em}
@keyframes buzz{
  0%,86%,92%,100%{opacity:1}
  87%,89%{opacity:.82}
  88%{opacity:.7}
}
.waterline{position:relative;height:1px;max-width:var(--max);margin:clamp(12px,2.2vh,24px) auto 0;
  background:linear-gradient(90deg, transparent, rgba(255,38,70,.4) 30%, rgba(176,198,224,.3) 50%, rgba(255,38,70,.4) 70%, transparent)}
.reflection{display:block;text-align:center;margin-top:clamp(8px,1.4vh,18px);
  transform:scaleY(-1) skewX(-2deg);
  filter:url(#ripple) blur(2px) brightness(1.1);opacity:.4;pointer-events:none;user-select:none;
  -webkit-mask-image:linear-gradient(0deg,#000 4%, rgba(0,0,0,.5) 40%, transparent 86%);
  mask-image:linear-gradient(0deg,#000 4%, rgba(0,0,0,.5) 40%, transparent 86%)}
.reflection .neon-l1{animation:none;font-size:clamp(54px,11.5vw,172px)}

.hero-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(14px,3.4vw,54px);
  margin-top:clamp(24px,4.5vh,44px)}
.hm{text-align:center}
.hm .n{font-family:var(--sign);font-size:clamp(22px,2.6vw,36px);letter-spacing:.05em;line-height:1;text-transform:uppercase}
.hm .n b{color:var(--neon);font-weight:400;text-shadow:0 0 12px rgba(255,38,70,.7)}
.hm .t{font-size:9.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--fog-30);margin-top:7px}
.hero-cta{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;margin-top:clamp(24px,4vh,40px)}

/* ---------- buttons ---------- */
.cta,.btn-primary,.btn--fill{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--sign);font-size:clamp(15px,1.3vw,19px);letter-spacing:.22em;text-transform:uppercase;
  color:#0A0407;background:linear-gradient(120deg,var(--neon-hot),var(--neon));
  padding:14px 30px;border-radius:3px;border:0;cursor:pointer;
  box-shadow:0 0 26px rgba(255,38,70,.45), 0 12px 40px rgba(0,0,0,.5);
  transition:transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s}
.cta:hover,.btn-primary:hover,.btn--fill:hover{transform:translateY(-2px);
  box-shadow:0 0 48px rgba(255,38,70,.7), 0 16px 50px rgba(0,0,0,.5);color:#0A0407}
.cta--ghost,.btn,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:var(--sign);font-size:clamp(14px,1.2vw,17px);letter-spacing:.2em;text-transform:uppercase;
  color:var(--neon-core);background:rgba(255,38,70,.07);padding:13px 26px;border-radius:3px;
  border:1px solid rgba(255,38,70,.5);cursor:pointer;
  box-shadow:0 0 16px rgba(255,38,70,.18), inset 0 0 12px rgba(255,38,70,.1);
  transition:box-shadow .4s,background .4s}
.cta--ghost:hover,.btn:hover,.btn-ghost:hover{background:rgba(255,38,70,.15);
  box-shadow:0 0 30px rgba(255,38,70,.45), inset 0 0 16px rgba(255,38,70,.2)}
/* declared after the ghost base so "btn btn-primary" resolves to the fill */
.btn-primary,.btn--fill{border:1px solid transparent;color:#0A0407;
  background:linear-gradient(120deg,var(--neon-hot),var(--neon));
  box-shadow:0 0 26px rgba(255,38,70,.45), 0 12px 40px rgba(0,0,0,.5)}
.btn-primary:hover,.btn--fill:hover{color:#0A0407;background:linear-gradient(120deg,var(--neon-hot),var(--neon));
  box-shadow:0 0 48px rgba(255,38,70,.7), 0 16px 50px rgba(0,0,0,.5)}
.btn .dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.8;flex:none}
.ghost{font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;
  color:var(--fog);border-bottom:1px solid var(--hair);padding:8px 2px;
  transition:color .3s,border-color .3s;display:inline-block}
.ghost:hover{color:#fff;border-color:var(--neon)}

/* ---------- nocturne strip ---------- */
.nocturne{border-block:1px solid var(--hair-soft);background:rgba(7,12,20,.4)}
.noct-grid{display:grid;grid-template-columns:auto 1fr;gap:clamp(24px,4.5vw,80px);align-items:center}
.vertical{writing-mode:vertical-rl;font-family:var(--sign);text-transform:uppercase;
  font-size:clamp(20px,2vw,30px);letter-spacing:.5em;color:transparent;
  -webkit-text-stroke:1px rgba(255,38,70,.65);text-shadow:0 0 22px rgba(255,38,70,.3)}
.noct-copy p{margin:0;font-size:clamp(16px,1.35vw,20px);line-height:1.8;color:var(--fog);max-width:62ch}
.noct-copy p b{color:#fff;font-weight:600}
.noct-copy .scr{font-size:1.6em;padding:0 .12em}
.canal-badge{display:flex;flex-direction:column;align-items:center;gap:10px}
.canal-badge svg{width:clamp(120px,12vw,170px);height:auto}
.canal-badge span{font-size:9px;letter-spacing:.4em;text-transform:uppercase;color:var(--fog-30);text-align:center}

/* ---------- windows (roster device) ---------- */
.win-head{display:grid;grid-template-columns:1fr auto;gap:clamp(20px,4vw,60px);align-items:end;
  margin-bottom:clamp(30px,5vh,56px)}
.win-note{max-width:32ch;font-size:12.5px;color:var(--fog-30);text-align:right;
  border-right:2px solid var(--neon);padding-right:16px;line-height:1.7;margin:0}
.win-note b{color:var(--fog);font-weight:600}

.windows{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,30px)}
.window{display:block}
.window:nth-child(4n+2){transform:translateY(clamp(12px,2vw,28px))}
.window:nth-child(4n+4){transform:translateY(clamp(8px,1.4vw,20px))}
.js .window.rv{transform:translateY(22px)}
.js .window.rv.in{transform:none}
.js .window.rv.in:nth-child(4n+2){transform:translateY(clamp(12px,2vw,28px))}
.js .window.rv.in:nth-child(4n+4){transform:translateY(clamp(8px,1.4vw,20px))}
.window figure{margin:0}
.glass{position:relative;aspect-ratio:3/4.3;border-radius:4px 4px 2px 2px;overflow:hidden;
  background:#0A0E15;isolation:isolate;
  box-shadow:inset 0 0 0 1px var(--hair), inset 0 0 50px rgba(255,38,70,.12), 0 18px 44px rgba(0,0,0,.55);
  transition:box-shadow .5s, transform .5s cubic-bezier(.2,.8,.2,1)}
.glass img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;z-index:0;
  filter:saturate(.92) contrast(1.02);transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.glass .lamp{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg, rgba(255,38,70,.14), rgba(124,15,34,.18) 55%, rgba(4,7,12,.55) 100%),
    radial-gradient(90% 60% at 50% 108%, rgba(255,38,70,.38), transparent 70%);
  mix-blend-mode:normal;transition:opacity .6s}
.glass .pane-shine{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(115deg, transparent 42%, rgba(238,243,248,.07) 47%, transparent 53%, transparent 70%, rgba(238,243,248,.045) 76%, transparent 82%)}
.glass .mull{position:absolute;top:0;bottom:0;left:50%;width:1px;background:rgba(4,7,12,.65);z-index:2;pointer-events:none}
.glass .sill{position:absolute;left:0;right:0;bottom:0;height:7px;background:#0A0E15;z-index:3;
  box-shadow:0 -1px 0 var(--hair-soft), 0 -6px 14px rgba(255,38,70,.25);pointer-events:none}
.window:hover .glass{transform:translateY(-6px);
  box-shadow:inset 0 0 0 1px rgba(255,38,70,.5), inset 0 0 60px rgba(255,38,70,.2), 0 26px 60px rgba(0,0,0,.6)}
.window:hover .glass img{transform:scale(1.04)}
.window figcaption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:13px 4px 0}
.window .nm{font-family:var(--sign);font-size:clamp(18px,1.7vw,24px);letter-spacing:.09em;text-transform:uppercase;color:var(--white)}
.window .nm small{font-family:var(--sans);font-size:11px;color:var(--fog-30);letter-spacing:.06em;margin-left:.55em}
.window .st{font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:var(--neon-hot);white-space:nowrap}
.win-foot{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(16px,3vw,32px);margin-top:clamp(40px,6vw,64px)}

/* ---------- the red index (services) ---------- */
.index{margin-top:clamp(22px,3.6vh,40px);border-top:1px solid var(--hair-soft)}
.ix{display:grid;grid-template-columns:auto 1fr auto auto;gap:clamp(14px,3vw,48px);align-items:center;
  padding:clamp(16px,2.6vh,24px) 0;border-bottom:1px solid var(--hair-soft);
  transition:background .4s,padding-left .4s}
.ix:hover{background:linear-gradient(90deg, rgba(255,38,70,.08), transparent 60%);padding-left:clamp(8px,1.2vw,18px)}
.ix .no{font-family:var(--sign);font-size:15px;letter-spacing:.1em;color:var(--neon);
  text-shadow:0 0 10px rgba(255,38,70,.6);width:2.8em}
.ix .nm{font-family:var(--sign);text-transform:uppercase;font-size:clamp(22px,3vw,40px);
  letter-spacing:.04em;line-height:1;color:var(--white);transition:text-shadow .4s}
.ix:hover .nm{text-shadow:0 0 18px rgba(255,38,70,.75)}
.ix .ds{font-size:12px;color:var(--fog-30);max-width:36ch;text-align:right;line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ix .pr{font-family:var(--sign);font-size:14px;letter-spacing:.12em;color:var(--fog);
  border:1px solid var(--hair);border-radius:3px;padding:6px 12px;white-space:nowrap;text-transform:uppercase}
.index-foot{margin:clamp(26px,3.6vw,40px) 0 0;text-align:center}

/* ---------- the fare (rates cards) ---------- */
.fare{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.4vw,32px);margin-top:clamp(26px,4vh,48px)}
.fare-card{position:relative;padding:clamp(24px,3.4vw,44px);border-radius:6px;overflow:hidden;
  background:var(--pane);backdrop-filter:blur(12px);
  box-shadow:inset 0 0 0 1px var(--hair-soft);transition:box-shadow .5s,transform .5s}
.fare-card::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(3px 3px at 18% 22%, rgba(238,243,248,.16) 45%, transparent 50%),
             radial-gradient(2px 2px at 64% 12%, rgba(238,243,248,.13) 45%, transparent 50%),
             radial-gradient(2.5px 2.5px at 84% 46%, rgba(238,243,248,.11) 45%, transparent 50%),
             radial-gradient(2px 2px at 36% 64%, rgba(238,243,248,.10) 45%, transparent 50%),
             radial-gradient(3px 3px at 74% 82%, rgba(238,243,248,.12) 45%, transparent 50%)}
.fare-card:hover{transform:translateY(-4px);box-shadow:inset 0 0 0 1px rgba(255,38,70,.4), 0 22px 50px rgba(0,0,0,.5)}
.fare-card .who{font-size:10px;letter-spacing:.44em;text-transform:uppercase;color:var(--fog-30)}
.fare-card .amt{font-family:var(--sign);font-size:clamp(80px,8.6vw,132px);line-height:1;margin:.06em 0;
  color:var(--neon-core);text-shadow:0 0 26px rgba(255,38,70,.85), 0 0 70px rgba(255,38,70,.5)}
.fare-card .amt sup{font-size:.32em;vertical-align:.9em;letter-spacing:.05em;margin-right:.1em}
.fare-card .amt small{font-family:var(--sans);font-size:13px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--fog-30);text-shadow:none;margin-left:.4em;-webkit-text-stroke:0}
.fare-card.two .amt{color:#fff;-webkit-text-stroke:1px rgba(255,93,114,.9);
  text-shadow:0 0 30px rgba(255,38,70,.6)}
.fare-card p{margin:0;color:var(--fog);font-size:14px;max-width:44ch}
.fare-notes{display:flex;flex-wrap:wrap;gap:clamp(12px,2.8vw,40px);margin-top:clamp(18px,3vh,30px)}
.fare-notes span{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--fog-30);
  display:inline-flex;align-items:center;gap:.7em}
.fare-notes span::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--neon);box-shadow:0 0 8px var(--neon);flex:none}

/* the fare as a list (profile + service pages) */
.fare-list{max-width:680px;margin-top:clamp(24px,3.6vh,42px)}
.frow{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:14px;
  padding:15px 4px;border-bottom:1px solid var(--hair-soft)}
.frow:first-child{border-top:1px solid var(--hair-soft)}
.frow__n{font-family:var(--sign);font-size:clamp(17px,1.6vw,22px);letter-spacing:.05em;text-transform:uppercase}
.frow__n small{display:block;font-family:var(--sans);font-size:.58rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--fog-30);margin-top:4px}
.frow__lead{border-bottom:1px dotted var(--hair);transform:translateY(-5px)}
.frow__p{font-family:var(--sign);font-size:clamp(18px,1.7vw,24px);letter-spacing:.04em;white-space:nowrap;
  color:var(--neon-core);text-shadow:0 0 14px rgba(255,38,70,.45)}
.frow--dual{margin-top:22px;border-top:1px solid var(--hair-soft)}

/* ---------- booking route ---------- */
.route{position:relative;margin-top:clamp(36px,5.5vh,64px)}
.route svg.path{position:absolute;left:0;right:0;top:9px;width:100%;height:60px}
.route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,3vw,52px)}
.stop{position:relative;padding-top:44px}
.stop .pin{position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;
  background:var(--neon);box-shadow:0 0 0 5px rgba(255,38,70,.15), 0 0 18px var(--neon)}
.stop .pin::after{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--neon-core)}
.stop h3{margin:0 0 8px}
.stop p{margin:0;font-size:13.5px;color:var(--fog)}
.stop .tm{display:inline-block;margin-top:12px;font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--fog-30)}
.stop .tm b{color:var(--neon-hot);font-weight:600}
.book-row{margin-top:clamp(32px,5vh,54px);display:flex;flex-wrap:wrap;align-items:center;gap:clamp(16px,3vw,40px)}
.book-row .num{font-family:var(--sign);font-size:clamp(18px,1.8vw,26px);letter-spacing:.14em;color:var(--fog);text-transform:uppercase}
.book-row .num b{color:var(--neon-core);font-weight:400;text-shadow:0 0 14px rgba(255,38,70,.7)}
.age-line{margin:clamp(28px,4vh,44px) 0 0;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--fog-30)}
.age-line b{color:var(--neon-hot);letter-spacing:.26em}

/* ---------- deep band (alternate ground) ---------- */
.band-deep{background:rgba(7,12,20,.45);border-block:1px solid var(--hair-soft)}

/* ---------- duo (editorial pair) ---------- */
.duo{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(26px,5vw,90px);align-items:start}
.duo__l h2{margin-bottom:0}
.side-note{margin:18px 0 0;font-size:12.5px;line-height:1.7;color:var(--fog-30);max-width:34ch;
  border-left:2px solid var(--neon);padding-left:14px}
.duo__r{padding-top:clamp(4px,1vw,12px)}

/* ---------- facts panel (profile particulars) ---------- */
.facts-panel{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(28px,5vw,80px);
  margin-top:clamp(30px,5vw,56px);padding:clamp(20px,3vw,38px) clamp(20px,3vw,42px);
  background:var(--pane);border-radius:6px;box-shadow:inset 0 0 0 1px var(--hair-soft)}
.leaf{min-width:0}
.leaf__row{display:grid;grid-template-columns:1fr auto;gap:16px;align-items:baseline;
  padding:12px 0;border-bottom:1px solid var(--hair-soft)}
.leaf:last-child .leaf__row:last-child,.leaf .leaf__row:last-child{border-bottom:0}
.leaf__k{font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;color:var(--fog-30)}
.leaf__v{font-family:var(--sign);font-size:clamp(15px,1.4vw,19px);letter-spacing:.05em;
  text-align:right;color:var(--white);text-transform:uppercase}
.leaf__v a{color:inherit}

/* ---------- tags ---------- */
.service-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.tag-pill{display:inline-block;border:1px solid var(--hair);border-radius:3px;
  padding:8px 14px;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--fog);
  transition:border-color .35s,color .35s,box-shadow .35s}
a.tag-pill:hover{border-color:rgba(255,38,70,.6);color:var(--neon-core);box-shadow:0 0 14px rgba(255,38,70,.25)}

/* ---------- the craft (service editorial) ---------- */
.craft{max-width:820px;margin-top:clamp(28px,4.4vw,52px)}
.cr{display:grid;grid-template-columns:auto 1fr;gap:clamp(16px,3vw,44px);
  padding:clamp(22px,3.2vw,36px) 0;border-bottom:1px solid var(--hair-soft)}
.cr:first-child{border-top:1px solid var(--hair-soft)}
.cr__no{font-family:var(--sign);font-size:15px;letter-spacing:.1em;color:var(--neon);
  text-shadow:0 0 10px rgba(255,38,70,.6);width:3em;padding-top:4px}
.cr__body h3{margin:0 0 10px}
.cr__body p{margin:0;font-size:clamp(14.5px,1.1vw,16.5px);line-height:1.85;color:var(--ink-soft);max-width:62ch}

/* ---------- related run ---------- */
.related-run{margin:clamp(28px,4vw,44px) 0 0;font-size:13.5px;color:var(--fog-30);max-width:70ch}
.related-run a{color:var(--neon-hot) !important;text-decoration:none !important;border-bottom:1px solid rgba(255,38,70,.4)}
.related-run a:hover{color:#fff !important;border-color:var(--neon)}

/* ---------- faq (details accordion, theme pages) ---------- */
.faq{max-width:720px;margin-top:clamp(28px,4.4vw,48px)}
.faq details{border-bottom:1px solid var(--hair-soft);padding:20px 0}
.faq details:first-of-type{border-top:1px solid var(--hair-soft)}
.faq summary{list-style:none;cursor:pointer;position:relative;padding-right:34px;
  font-family:var(--sign);font-size:clamp(17px,1.7vw,22px);letter-spacing:.05em;
  text-transform:uppercase;line-height:1.3;color:var(--white)}
.faq summary::-webkit-details-marker{display:none}
.sign-x{position:absolute;right:4px;top:50%;width:13px;height:13px;margin-top:-7px;opacity:.8}
.sign-x::before,.sign-x::after{content:"";position:absolute;background:var(--neon);
  box-shadow:0 0 6px rgba(255,38,70,.7);
  transition:transform .5s cubic-bezier(.2,.7,.2,1),opacity .4s}
.sign-x::before{left:0;right:0;top:6px;height:1px}
.sign-x::after{top:0;bottom:0;left:6px;width:1px}
.faq details[open] .sign-x::after{transform:scaleY(0);opacity:0}
.faq__a{margin:14px 0 0;font-size:14.5px;line-height:1.85;color:var(--fog);max-width:60ch}

/* ---------- carousel (profile photographs) ---------- */
.panes-band{padding-top:0}
.carousel{position:relative;max-width:1080px;margin:0 auto}
.carousel-track{display:flex;gap:6px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:4px 0 10px}
.carousel-track::-webkit-scrollbar{display:none}
.carousel-slide{flex:0 0 calc(25% - 4.5px);scroll-snap-align:start}
.glass--pane{aspect-ratio:3/4.15}
.carousel-prev,.carousel-next{position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,38,70,.5);
  background:rgba(4,7,12,.85);color:var(--neon-core);cursor:pointer;
  font-size:20px;line-height:1;font-family:var(--sign);
  box-shadow:0 0 16px rgba(255,38,70,.25);transition:box-shadow .35s,background .35s}
.carousel-prev:hover,.carousel-next:hover{background:rgba(255,38,70,.18);box-shadow:0 0 26px rgba(255,38,70,.5)}
.carousel-prev{left:-6px}
.carousel-next{right:-6px}
.carousel-dots{display:flex;gap:7px;justify-content:center;margin-top:14px}
.carousel-dot{width:5px;height:5px;border-radius:50%;background:var(--hair);display:block;transition:background .3s,box-shadow .3s}
.carousel-dot.active{background:var(--neon);box-shadow:0 0 8px var(--neon)}

/* ============================================================
   SHARED-TEMPLATE FURNITURE — the inherited pages
   ============================================================ */

/* therapist index cards: the same lit windows */
.t-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,30px)}
.t-card{display:block;color:inherit}
.t-card:nth-child(4n+2){transform:translateY(clamp(12px,2vw,28px))}
.t-card:nth-child(4n+4){transform:translateY(clamp(8px,1.4vw,20px))}
.t-card .photo{position:relative;aspect-ratio:3/4.3;border-radius:4px 4px 2px 2px;overflow:hidden;
  background:#0A0E15;isolation:isolate;
  box-shadow:inset 0 0 0 1px var(--hair), inset 0 0 50px rgba(255,38,70,.12), 0 18px 44px rgba(0,0,0,.55);
  transition:box-shadow .5s,transform .5s cubic-bezier(.2,.8,.2,1)}
.t-card .photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
  filter:saturate(.92) contrast(1.02);transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.t-card .photo::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(180deg, rgba(255,38,70,.14), rgba(124,15,34,.18) 55%, rgba(4,7,12,.55) 100%),
    radial-gradient(90% 60% at 50% 108%, rgba(255,38,70,.38), transparent 70%)}
.t-card .photo::after{content:"";position:absolute;left:0;right:0;bottom:0;height:7px;background:#0A0E15;z-index:3;
  box-shadow:0 -1px 0 var(--hair-soft), 0 -6px 14px rgba(255,38,70,.25)}
.t-card:hover .photo{transform:translateY(-6px);
  box-shadow:inset 0 0 0 1px rgba(255,38,70,.5), inset 0 0 60px rgba(255,38,70,.2), 0 26px 60px rgba(0,0,0,.6)}
.t-card:hover .photo img{transform:scale(1.04)}
.t-card .name{font-family:var(--sign);font-size:clamp(18px,1.7vw,24px);letter-spacing:.09em;
  text-transform:uppercase;color:var(--white);margin-top:13px}
.t-card .meta{font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--fog-30);margin-top:5px}

/* service index cards: small lit panes */
.s-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:clamp(16px,2.2vw,28px)}
.s-card{display:block;padding:26px 24px 28px;border-radius:5px;color:inherit;
  background:var(--pane);box-shadow:inset 0 0 0 1px var(--hair-soft);
  transition:box-shadow .45s,transform .45s,background .45s}
.s-card:hover{transform:translateY(-3px);background:rgba(20,12,18,.6);
  box-shadow:inset 0 0 0 1px rgba(255,38,70,.45), inset 0 0 40px rgba(255,38,70,.1), 0 18px 44px rgba(0,0,0,.5)}
.s-card .num{font-family:var(--sign);font-size:.72rem;letter-spacing:.3em;text-transform:uppercase;
  color:var(--neon);text-shadow:0 0 10px rgba(255,38,70,.6)}
.s-card .nm{font-family:var(--sign);font-size:clamp(20px,2vw,27px);letter-spacing:.05em;
  text-transform:uppercase;margin-top:10px;color:var(--white)}
.s-card .ds{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--fog-30);margin-top:8px}

/* long-form prose: journal posts, legal pages, index essays */
.reading h2{margin:1.7em 0 .5em;font-size:clamp(1.6rem,2.8vw,2.4rem)}
.reading h3{margin:1.6em 0 .4em}
.reading h2:first-child,.reading h3:first-child{margin-top:0}
.reading p,.reading li{font-size:15.5px;line-height:1.85;color:var(--ink-soft)}
.reading ul,.reading ol{padding-left:1.15em;margin:0 0 1.2em}
.reading li{margin-bottom:.5em}
.reading li::marker{color:var(--neon)}
.reading a{color:var(--neon-hot)}
.reading a:hover{color:#fff}
.reading blockquote{margin:1.6em 0;padding-left:20px;border-left:1px solid var(--neon);font-style:italic;color:var(--fog)}
.reading .date{color:var(--fog-30)}
.reading table:not([class]){display:block;width:100%;max-width:100%;overflow-x:auto;
  border-collapse:collapse;margin:clamp(22px,3vw,32px) 0;font-size:.95rem}
.reading table:not([class]) th,.reading table:not([class]) td{padding:13px 10px;text-align:left;
  border-bottom:1px solid var(--hair-soft);vertical-align:top}
.reading table:not([class]) th{font-family:var(--sans);font-size:.62rem;letter-spacing:.22em;
  text-transform:uppercase;color:var(--fog-30);font-weight:500}

/* the shared price table, given the fare's manners */
.price-table,.rates-table,.stats-table{width:100%;max-width:640px;margin:clamp(24px,3vw,34px) auto 0;
  border-collapse:collapse;font-size:1rem}
.price-table tr,.rates-table tr,.stats-table tr{border-bottom:1px solid var(--hair-soft)}
.price-table tr:first-child,.rates-table tr:first-child,.stats-table tr:first-child{border-top:1px solid var(--hair-soft)}
.price-table td,.rates-table td,.stats-table td{padding:16px 6px;vertical-align:baseline}
.price-table td:first-child,.rates-table td:first-child,.stats-table td:first-child{
  font-family:var(--sign);font-size:clamp(17px,1.6vw,21px);letter-spacing:.06em;text-transform:uppercase;color:var(--white)}
.price-table td:last-child,.rates-table td:last-child,.stats-table td:last-child{
  font-family:var(--sign);font-size:clamp(18px,1.7vw,23px);text-align:right;letter-spacing:.04em;
  color:var(--neon-core);text-shadow:0 0 14px rgba(255,38,70,.45)}

/* journal list */
.journal-list{margin:clamp(20px,3vw,32px) 0 0;padding:0}
.journal-item{display:block;border-top:1px solid var(--hair-soft);padding:24px 0;color:inherit;
  transition:padding-left .4s,background .4s}
.journal-item:last-child{border-bottom:1px solid var(--hair-soft)}
.journal-item:hover{background:linear-gradient(90deg, rgba(255,38,70,.07), transparent 60%);padding-left:14px}
.journal-item .date{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--neon-hot);margin-bottom:6px}
.journal-item h3{transition:text-shadow .4s}
.journal-item:hover h3{text-shadow:0 0 16px rgba(255,38,70,.6)}
.journal-item .lede{margin:8px 0 0;font-size:14px}

/* forms (booking page) */
.form-row{margin-bottom:26px}
.form-row .label{display:block;margin-bottom:10px}
select,input[type="date"],input[type="text"],input[type="email"],textarea{
  width:100%;padding:14px 16px;border:1px solid var(--hair);border-radius:3px;
  background:var(--pane);font-family:var(--sans);font-size:.95rem;color:var(--white)}
select option{background:var(--water-2);color:var(--white)}
select:focus,input:focus,textarea:focus{outline:2px solid var(--neon);outline-offset:2px}
input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(.8)}

/* tabs (shared profile widget, kept styled in case a page reaches for it) */
.tabs{max-width:880px;margin:0 auto}
.tab-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.tab-btn{border:1px solid var(--hair);background:transparent;color:var(--fog);
  padding:9px 18px;font-family:var(--sans);font-size:.63rem;letter-spacing:.22em;
  text-transform:uppercase;cursor:pointer;border-radius:3px}
.tab-btn.active{background:var(--neon);border-color:var(--neon);color:#0A0407}
.tab-panel{display:none}
.tab-panel.active{display:block}

/* booking banner from the shared set */
.book-banner{background:rgba(7,12,20,.6);border-block:1px solid var(--hair-soft);padding:clamp(34px,5vw,54px) 0}

/* ---------- footer ---------- */
.foot{position:relative;z-index:2;border-top:1px solid var(--hair-soft);
  padding:clamp(56px,8vh,100px) 0 36px;
  background:linear-gradient(180deg, transparent, rgba(255,38,70,.05))}
.foot__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:clamp(24px,3.4vw,56px);align-items:start}
.foot__sign{font-family:var(--sign);text-transform:uppercase;font-size:clamp(26px,3vw,40px);
  line-height:.95;letter-spacing:.03em;margin:0;color:var(--white)}
.foot__sign b{font-weight:400;color:var(--neon-core);text-shadow:0 0 22px rgba(255,38,70,.8)}
.foot__scr{display:block;font-family:var(--script);text-transform:none;font-size:.9em;
  color:var(--neon-hot);text-shadow:0 0 14px rgba(255,38,70,.6);margin-top:.2em;letter-spacing:0}
.foot__blurb{color:var(--fog-30);font-size:13px;max-width:38ch;margin:18px 0 0}
.foot__col h4{font-size:9.5px;letter-spacing:.42em;text-transform:uppercase;color:var(--fog-30);
  margin:0 0 16px;font-weight:400;font-family:var(--sans)}
.foot__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.foot__col a{color:var(--fog);font-size:13.5px;transition:color .3s,text-shadow .3s}
.foot__col a:hover{color:#fff;text-shadow:0 0 12px rgba(255,38,70,.8)}
.foot__note{color:var(--fog-30);font-size:12px;margin:14px 0 0}
.foot__base{margin-top:clamp(40px,6vh,70px);padding-top:20px;border-top:1px solid var(--hair-soft);
  font-size:10.5px;letter-spacing:.14em;color:var(--fog-30);line-height:2}
.foot__base p{margin:0 0 4px}
.foot__age b{color:var(--neon-hot);font-weight:600;letter-spacing:.2em}

/* ---------- age bar ----------
   A slim strip laid over the very top edge, raised by app.js — the markup ships
   with [hidden], so without JavaScript it simply never appears. While it stands
   open the whole page, sticky nav included, is set down by --veil-h. */
:root{--veil-h:52px}
.age-bar,.age-bar[hidden]{display:none}
.age-bar{position:fixed;top:0;left:0;right:0;z-index:90;
  min-height:var(--veil-h);align-items:center;justify-content:center;
  gap:26px;padding:9px var(--gut);
  background:rgba(4,7,12,.97);
  border-bottom:1px solid rgba(255,38,70,.45);
  box-shadow:0 10px 40px rgba(0,0,0,.6)}
body.age-bar-open .age-bar{display:flex}
.age-bar__line{margin:0;font-size:.9rem;line-height:1.55;color:var(--fog)}
.age-bar__yes{flex:none;cursor:pointer;border-radius:3px;
  background:rgba(255,38,70,.1);border:1px solid rgba(255,38,70,.6);
  color:var(--neon-core);font-family:var(--sign);
  font-size:13px;letter-spacing:.2em;text-transform:uppercase;
  padding:8px 18px;
  box-shadow:0 0 14px rgba(255,38,70,.25), inset 0 0 10px rgba(255,38,70,.12);
  transition:background .4s,box-shadow .4s}
.age-bar__yes:hover,.age-bar__yes:focus-visible{background:rgba(255,38,70,.22);
  box-shadow:0 0 26px rgba(255,38,70,.5), inset 0 0 14px rgba(255,38,70,.2)}
body.age-bar-open{padding-top:var(--veil-h)}
body.age-bar-open .nav{top:var(--veil-h)}
body.age-confirmed .age-bar{display:none !important}

/* the no-JavaScript notice: a quiet line in flow, nothing is ever blocked */
.age-note{margin:0;padding:11px var(--gut);text-align:center;position:relative;z-index:2;
  background:var(--water-2);color:var(--fog);
  font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;
  border-bottom:1px solid rgba(255,38,70,.3)}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .windows,.t-grid{grid-template-columns:repeat(2,1fr)}
  .window:nth-child(4n+2),.window:nth-child(4n+4),
  .js .window.rv.in:nth-child(4n+2),.js .window.rv.in:nth-child(4n+4){transform:none}
  .t-card:nth-child(4n+2),.t-card:nth-child(4n+4){transform:none}
  .carousel-slide{flex:0 0 calc(33.333% - 4px)}
}
@media (max-width:940px){
  .nav__links{display:none}
  .noct-grid{grid-template-columns:1fr}
  .vertical{writing-mode:horizontal-tb;letter-spacing:.4em;-webkit-text-stroke-width:.8px}
  .canal-badge{align-items:flex-start}
  .win-head{grid-template-columns:1fr}
  .win-note{text-align:left;border-right:0;border-left:2px solid var(--neon);padding:0 0 0 16px}
  .duo{grid-template-columns:1fr;gap:26px}
  .side-note{max-width:none}
}
@media (max-width:860px){
  :root{--veil-h:96px}
  .age-bar{flex-direction:column;gap:9px;text-align:center;padding:13px var(--gut)}
  .ix{grid-template-columns:auto 1fr auto}
  .ix .ds{display:none}
  .foot__grid{grid-template-columns:repeat(2,1fr)}
  .foot__brand{grid-column:1/-1}
  .facts-panel{grid-template-columns:1fr;gap:0}
  .leaf .leaf__row:last-child{border-bottom:1px solid var(--hair-soft)}
  .leaf:last-child .leaf__row:last-child{border-bottom:0}
  .carousel-slide{flex:0 0 calc(50% - 3px)}
}
@media (max-width:760px){
  [id]{scroll-margin-top:120px}
  .fare{grid-template-columns:1fr}
  .route-grid{grid-template-columns:1fr;gap:30px}
  .route svg.path{display:none}
  .stop{padding-top:0;padding-left:38px}
  .stop .pin{top:4px}
  .cr{grid-template-columns:1fr;gap:8px}
  .cr__no{width:auto;padding-top:0}
  .hero-meta{gap:18px 26px}
}
@media (max-width:620px){
  :root{--veil-h:118px}
  .windows--strip{grid-template-columns:repeat(2,1fr)}
  .neon-l2{letter-spacing:.34em;text-indent:.34em}
  .brand__scr{font-size:22px}
  .brand__cap{font-size:16px}
  .nav__pill{padding:8px 13px;font-size:12px;letter-spacing:.14em}
  .win-foot,.book-row{flex-direction:column;align-items:flex-start}
  .cta,.btn-primary,.btn--fill,.cta--ghost,.btn,.btn-ghost{width:100%;text-align:center}
  .t-grid{gap:14px}
  .windows{gap:14px}
  .frow{grid-template-columns:1fr auto;gap:10px}
  .frow__lead{display:none}
  .carousel-prev{left:0}
  .carousel-next{right:0}
}
@media (max-width:440px){
  .carousel-slide{flex:0 0 100%}
  .hm .n{font-size:20px}
}
@media (max-width:380px){
  :root{--veil-h:138px}
}

/* ---------- mobile dock ----------
   The lamp in the pocket: on phones a fixed bar holds the bottom edge of every
   page — WhatsApp lit like the sign itself, Telegram beside it once the house
   has an account. Desktop never sees it; the age bar docks at the TOP on this
   theme, so the two never meet. */
.mdock{display:none}
@media (max-width:768px){
  :root{--mdock-h:64px}
  .mdock{
    position:fixed;left:0;right:0;bottom:0;z-index:80;
    display:flex;align-items:stretch;gap:9px;
    padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom,0px));
    background:rgba(4,7,12,.96);
    -webkit-backdrop-filter:saturate(130%) blur(10px);backdrop-filter:saturate(130%) blur(10px);
    border-top:1px solid rgba(255,38,70,.5);
    box-shadow:0 -14px 44px rgba(0,0,0,.65), 0 0 26px rgba(255,38,70,.16)}
  .mdock a{
    flex:1 1 0;min-width:0;min-height:44px;
    display:inline-flex;align-items:center;justify-content:center;gap:9px;
    border-radius:3px;white-space:nowrap;
    font-family:var(--sign);font-size:14px;letter-spacing:.18em;text-transform:uppercase}
  .mdock svg{width:15px;height:15px;flex:none;fill:currentColor}
  .mdock__wa{
    color:#0A0407;background:linear-gradient(120deg,var(--neon),var(--neon-hot));
    box-shadow:0 0 22px rgba(255,38,70,.4)}
  .mdock__tg{
    color:var(--neon-core);border:1px solid rgba(255,38,70,.55);
    background:rgba(255,38,70,.08);
    box-shadow:inset 0 0 12px rgba(255,38,70,.12)}
  /* the page and its footer always clear the bar */
  body{padding-bottom:calc(var(--mdock-h) + env(safe-area-inset-bottom,0px))}
}

/* ---------- motion & focus ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .js .rv,.rv{opacity:1;transform:none}
  .sheen,.mist{animation:none}
  .reflection{filter:blur(2px) brightness(1.1)}
  .window:hover .glass img,.t-card:hover .photo img{transform:none}
}
:focus-visible{outline:2px solid var(--neon);outline-offset:4px}
.cta:focus-visible,.btn-primary:focus-visible{outline-color:var(--lamp)}
