/* TK Lounge — shared styles (v5). Tokens are documented in DESIGN-NOTES.md. Plain CSS; edit directly, no build step.
   Near-black base, one accent colour (electric violet). Cyan/amber/green only where they carry meaning. */
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/bricolage.woff2) format("woff2")}
@font-face{font-family:"Geist";font-style:normal;font-weight:400 600;font-display:swap;src:url(fonts/geist.woff2) format("woff2")}
:root{
  --bg:#08070c;--s1:#110f18;--s2:#161228;--bar:#110e1b;--bar-m:#0b0913;--field:#0f0d17;
  --hair:rgba(255,255,255,.07);--hair2:rgba(255,255,255,.12);
  --text:#f5f3fa;--warm:#f4efe8;--muted:#c3bdd0;--dim:#a19ab2;
  --v:#6d4aff;--v-lo:#5a3aef;--v2:#a78bfa;--v3:#5b6cff;
  --cyan:#5ee4ff;--amber:#ffc15a;--green:#5dffb1;--err:#ff9b8a;
  --r:24px;--r-s:14px;--sh:0 1px 0 rgba(255,255,255,.05) inset,0 30px 60px -30px rgba(0,0,0,.85);--glow:0 18px 50px -22px rgba(109,74,255,.7);
  --s-1:8px;--s-2:16px;--s-3:24px;--s-4:32px;--s-5:48px;--s-6:64px;--s-7:96px;
  --wrap:1120px;--gut:clamp(20px,5vw,40px);--hdr:72px;
  --f-d:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;--f-b:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.2,.8,.2,1);
  color-scheme:dark;accent-color:var(--v);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--hdr) + 16px);background:var(--bg);scrollbar-color:#3a3350 var(--bg)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.2s}
body{margin:0;background:radial-gradient(1200px 760px at 8% -12%,rgba(109,74,255,.10),transparent 58%),radial-gradient(1000px 700px at 104% 14%,rgba(91,108,255,.07),transparent 55%),radial-gradient(1100px 900px at 50% 122%,rgba(167,139,250,.05),transparent 62%),var(--bg);color:var(--text);font:400 1.125rem/1.7 var(--f-b);overflow-x:hidden;-webkit-font-smoothing:antialiased}
html.lite body{background:var(--bg)}
img,svg{max-width:100%;height:auto;display:block}
picture{display:contents}
[hidden]{display:none!important}
a{color:var(--v2);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{color:#fff}
h1,h2,h3{font-family:var(--f-d);font-weight:700;line-height:1;letter-spacing:-.03em;margin:0 0 var(--s-2);text-wrap:balance;color:var(--warm)}
p,li{text-wrap:pretty}
[id]{scroll-margin-top:calc(var(--hdr) + 28px)}
h2{font-size:clamp(2.2rem,5.2vw,4rem)}
h3{font-size:clamp(1.25rem,2vw,1.5rem);letter-spacing:-.02em;line-height:1.15}
p{margin:0 0 var(--s-2)}
::selection{background:var(--v);color:#fff}
:focus-visible{outline:2px solid var(--v2);outline-offset:3px;border-radius:10px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-80px;z-index:300;background:#fff;color:#0c0a12;padding:12px 18px;border-radius:999px;font-weight:600;text-decoration:none}
.skip:focus{top:12px}
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.muted{color:var(--muted)}
.ic{width:1.1em;height:1.1em;flex:none}

/* neon sign — logo + 404 only */
.tube{color:#f1edff;text-shadow:0 0 1px #fff,0 0 8px rgba(125,93,255,.95),0 0 22px rgba(125,93,255,.7),0 0 46px rgba(91,108,255,.45)} /* rgb(91,108,255) = --v3 */
.fl{animation:flick 7s linear infinite}
@keyframes flick{0%,86%,88%,91%,100%{opacity:1}87%,90%{opacity:.3}89%{opacity:.8}}
.paused,.paused *{animation-play-state:paused!important}

/* chips & status */
.openb{letter-spacing:0;display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:4px 13px 4px 11px;border-radius:999px;font:500 .9rem/1.3 var(--f-b);white-space:nowrap;background:rgba(255,255,255,.05);border:1px solid var(--hair2);color:var(--muted)}
.openb::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--dim)}
.openb.on{color:#c9ffe5;border-color:rgba(93,255,177,.3)}
.openb.on::before{background:var(--green);box-shadow:0 0 0 3px rgba(93,255,177,.18)}
.grad{color:var(--v2);text-shadow:0 0 24px rgba(167,139,250,.55),0 0 60px rgba(109,74,255,.28)} /* solid accent + soft neon glow echoing the sign; emphasis stays from colour + weight, never a gradient fill */
html.lite .grad{text-shadow:none}
.grain{position:absolute;inset:0;pointer-events:none;background:url(img/grain.png) 0 0/128px 128px;opacity:.06;z-index:1}

/* buttons: one primary per view */
.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:12px 24px;border-radius:999px;font:600 1.02rem/1.1 var(--f-b);text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .15s var(--ease),background-color .2s,border-color .2s,box-shadow .2s,color .2s;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.btn .ic{width:18px;height:18px}
.btn:active{transform:scale(.97)}
.btn-p{background:linear-gradient(180deg,var(--v),var(--v-lo));color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),var(--glow)}
.btn-p:hover{background:linear-gradient(180deg,#6343f7,#5233e6);color:#fff}
.btn-p::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.22) 50%,transparent 70%);transform:translateX(-120%);transition:transform .6s var(--ease)}
@media (hover:hover){.btn-p:hover::after{transform:translateX(120%)}}
.btn:focus-visible{outline:2px solid #fff;outline-offset:3px;box-shadow:0 0 0 6px rgba(125,93,255,.45)}
.btn-g{border-color:var(--hair2);color:var(--text);background:transparent}
.btn-g:hover{border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.05);color:#fff}
.btn-lg{min-height:56px;padding:14px 30px;font-size:1.08rem}
.lnk{display:inline-flex;align-items:center;gap:8px;min-height:48px;color:var(--text);font-weight:500;text-decoration:none}
.lnk .ic{width:18px;height:18px;transition:transform .2s var(--ease)}
.lnk:hover{color:#fff}.lnk:hover .ic{transform:translateX(3px)}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px}

/* header: floating pill on desktop, plain bar on phones */
.hdr{position:sticky;top:0;z-index:50}
.hdr .bar{display:flex;align-items:center;gap:8px;min-height:var(--hdr);padding:0 var(--gut);background:var(--bar-m);border-bottom:1px solid var(--hair2)}
@media (min-width:1001px){
  :root{--hdr:84px}
  .hdr{padding:12px var(--gut);background:var(--bg)}
  .hdr .bar{max-width:var(--wrap);margin:0 auto;min-height:60px;padding:8px 8px 8px 14px;border-radius:999px;border:1px solid var(--hair2);background:var(--bar);box-shadow:0 18px 40px -20px rgba(0,0,0,.9)}
}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);margin-right:auto;min-height:44px}
.brand img{width:36px;height:36px;border-radius:50%;box-shadow:0 0 0 1.5px rgba(125,93,255,.85),0 0 14px rgba(109,74,255,.45)}
.brand b{font:700 1.15rem/1 var(--f-d);letter-spacing:-.02em}
.brand b span{color:var(--v2)}
.nav{display:flex;align-items:center;gap:2px}
.nav a{color:var(--muted);text-decoration:none;font-weight:500;font-size:.96rem;padding:10px 14px;border-radius:999px;min-height:44px;display:inline-flex;align-items:center}
.nav a:hover{color:#fff}
.nav a[aria-current=page]{color:#fff;background:rgba(125,93,255,.18);box-shadow:inset 0 0 0 1px rgba(167,139,250,.35),0 6px 18px -8px rgba(109,74,255,.65)}
.hdr .btn{min-height:44px;padding:10px 20px;font-size:.95rem}
.mnav{display:none}
@media (max-width:1000px){
  .nav{display:none}
  .mnav{display:block}
  .mnav summary{list-style:none;display:flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair2);cursor:pointer;font-weight:500;-webkit-tap-highlight-color:transparent}
  .mnav summary::-webkit-details-marker{display:none}
  .mnav .bars{width:16px;height:10px;position:relative}
  .mnav .bars::before,.mnav .bars::after{content:"";position:absolute;left:0;right:0;height:1.5px;background:currentColor;border-radius:2px;transition:transform .2s}
  .mnav .bars::before{top:1px}.mnav .bars::after{bottom:1px}
  .mnav[open] .bars::before{transform:translateY(3.5px) rotate(45deg)}.mnav[open] .bars::after{transform:translateY(-3.5px) rotate(-45deg)}
  .mnav .panel{position:fixed;left:0;right:0;top:var(--hdr);bottom:0;padding:var(--s-3) var(--gut) var(--s-6);overflow-y:auto;background:var(--bg);border-top:1px solid var(--hair);display:flex;flex-direction:column}
  .mnav .panel>a:not(.btn){display:flex;align-items:center;min-height:64px;font:700 1.9rem/1.1 var(--f-d);letter-spacing:-.03em;color:var(--text);text-decoration:none}
  .mnav .panel>a[aria-current=page]{color:var(--v2)}
  .mnav .panel .btn{margin-top:var(--s-2);width:100%}
  .mnav .panel .btn-p{margin-top:var(--s-4)}
}

/* phone quick-actions bar (the only sticky element besides the header) */
.mbar{display:none}
@media (max-width:760px){
  .mbar{display:flex;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:60;padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom));background:rgba(8,7,12,.97);border-top:1px solid var(--hair)}
  .mbar .btn{flex:1;min-height:50px}
  .mbar .btn-g{flex:0 0 50px;padding:0}
  .ftr.hasbar{padding-bottom:calc(var(--s-4) + 74px)}
  /* the bar is the Book button on phones: none in the header. The hero has its own Book + Events buttons, so the bar tucks away while the hero is on screen (script in index.html) */
  .hdr .hdr-book{display:none}
  .mbar{transition:transform .28s var(--ease)}
  .mbar.mbar-off{transform:translateY(110%);pointer-events:none}
}
@media (max-width:760px) and (prefers-reduced-motion:reduce){.mbar{transition:none}}

/* ---------- home hero: cinematic, photo bleeds off the right edge ---------- */
.hero{position:relative;isolation:isolate;overflow:hidden;min-height:min(92svh,860px);display:flex;align-items:center;padding:var(--s-6) 0}
.hero-media{position:absolute;top:0;right:0;bottom:0;width:60%;z-index:-2}
.hero-media img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
/* the photo fades out through a mask (no painted edge, so no visible seam against the page) */
.hero-media{-webkit-mask-image:linear-gradient(90deg,transparent 4%,#000 55%);mask-image:linear-gradient(90deg,transparent 4%,#000 55%)}
.hero-media::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,var(--bg),rgba(8,7,12,0) 30%),radial-gradient(120% 90% at 70% 40%,transparent 50%,rgba(8,7,12,.6)),linear-gradient(200deg,rgba(91,60,220,.18),transparent 55%)}
/* spotlight: two soft-edged cones from above, crossing like a club light rig (conic ramps instead of a hard clip-path polygon) */
.beam{position:absolute;top:-10%;left:32%;width:46%;height:130%;z-index:-1;pointer-events:none;background:conic-gradient(from 164deg at 50% 0,transparent 0deg,rgba(167,139,250,.15) 12deg,rgba(167,139,250,.2) 16deg,rgba(167,139,250,.15) 20deg,transparent 32deg);-webkit-mask-image:linear-gradient(180deg,#000 10%,transparent 85%);mask-image:linear-gradient(180deg,#000 10%,transparent 85%);transform-origin:50% 0;transform:rotate(14deg);opacity:.9}
.beam2{position:absolute;top:-10%;left:8%;width:40%;height:120%;z-index:-1;pointer-events:none;background:conic-gradient(from 198deg at 50% 0,transparent 0deg,rgba(94,228,255,.22) 10deg,rgba(94,228,255,.3) 14deg,rgba(94,228,255,.22) 18deg,transparent 30deg);-webkit-mask-image:linear-gradient(180deg,#000 8%,transparent 82%);mask-image:linear-gradient(180deg,#000 8%,transparent 82%);transform-origin:50% 0;transform:rotate(-10deg);opacity:.95}
@media (min-width:1000px) and (hover:hover) and (prefers-reduced-motion:no-preference){.beam{animation:beam 16s ease-in-out infinite alternate}.beam2{animation:beam2 21s ease-in-out infinite alternate}}
@keyframes beam{to{transform:rotate(-6deg)}}
@keyframes beam2{to{transform:rotate(4deg)}}
.hero-copy{max-width:740px;position:relative;z-index:2}
.hero h1{font-size:clamp(3.1rem,6.6vw,5.7rem);line-height:.92;letter-spacing:-.03em;margin:var(--s-3) 0;max-width:11ch}
.hero .lede{font-size:clamp(1.12rem,1.5vw,1.3rem);color:var(--muted);max-width:34ch;margin:0 0 var(--s-5)}
.hero-top{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.sign{font:700 clamp(1.5rem,2.4vw,2rem)/1 var(--f-d);letter-spacing:-.01em;display:inline-flex;gap:.28em;margin:0}
@media (max-width:999px){
  .hero{min-height:calc(100svh - var(--hdr));align-items:flex-end;padding:var(--s-6) 0}
  .hero-media{width:100%;-webkit-mask-image:none;mask-image:none}
  .hero-media::after{background:linear-gradient(180deg,rgba(8,7,12,.35),rgba(8,7,12,.05) 30%,rgba(8,7,12,.75) 62%,var(--bg) 92%)}
  .beam{left:10%;width:90%}
  .beam2{display:none}
}
/* phones: hero ends above the sticky Book/Call bar so nothing hides under it */
@media (max-width:760px){.hero{min-height:calc(100svh - var(--hdr) - 74px);padding:var(--s-5) 0 var(--s-4)}.hero h1{margin:var(--s-2) 0}.hero .lede{margin-bottom:var(--s-2)}}
/* landscape phones: short screens get a compact hero */
@media (max-height:500px) and (orientation:landscape){
  .hero{min-height:0;padding:var(--s-5) 0 var(--s-5)}
  .hero h1{font-size:clamp(2.4rem,6vw,3.2rem);margin:var(--s-2) 0}
  .hero .lede{margin-bottom:var(--s-3)}
  .hero-media{width:60%}
  .hero-media::after{background:linear-gradient(90deg,var(--bg),rgba(8,7,12,.4) 40%,rgba(8,7,12,0) 70%)}
}

/* ---------- inner page header: photo band ---------- */
.phero{position:relative;isolation:isolate;overflow:hidden;padding:clamp(80px,12vw,150px) 0 clamp(40px,6vw,72px)}
.phero-bg{position:absolute;inset:0;z-index:-2}
.phero-bg img{width:100%;height:100%;object-fit:cover;opacity:.55}
.phero::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,7,12,.3),rgba(8,7,12,.65) 55%,var(--bg)),radial-gradient(60% 80% at 0% 100%,rgba(109,74,255,.25),transparent 70%),radial-gradient(50% 60% at 100% 0%,rgba(91,108,255,.16),transparent 65%)}
.phero h1{font-size:clamp(2.8rem,7vw,5.4rem);line-height:.93;letter-spacing:-.03em;max-width:14ch;margin-bottom:var(--s-2)}
.phero.plain{padding:clamp(48px,7vw,96px) 0 0}
/* shorter, photo-less bands (Book) need a punchier wash — the tall photo bands' radii read too faint in a short box */
.phero.plain::before{background:linear-gradient(180deg,rgba(8,7,12,.1),rgba(8,7,12,.5) 75%,var(--bg)),radial-gradient(75% 130% at 12% 20%,rgba(109,74,255,.3),transparent 65%),radial-gradient(65% 120% at 100% 0%,rgba(91,108,255,.22),transparent 60%)}
.phero .lede{color:#dcd6e6;max-width:52ch;font-size:clamp(1.08rem,1.5vw,1.22rem);margin:0}
.crumbs{font-size:.95rem;color:var(--muted);margin:0 0 var(--s-2)}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:#fff}
.subnav{display:inline-flex;gap:4px;margin-top:var(--s-3);padding:4px;border-radius:999px;border:1px solid var(--hair2);background:var(--bar)}
.subnav a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;color:var(--muted);text-decoration:none;font-weight:500}
.subnav a:hover{color:#fff}
.subnav a[aria-current=page]{background:#fff;color:#0c0a12}

/* ---------- sections ---------- */
.sec{position:relative;padding:clamp(88px,12vw,160px) 0}
.sec+.sec{padding-top:0}
.sec.tight{padding-top:clamp(32px,5vw,64px)}
.sh{max-width:680px;margin-bottom:clamp(36px,5vw,56px)}
.sh .sub{color:var(--muted);margin:0;max-width:50ch}
.sh-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--s-2) var(--s-4);max-width:none}
.sh-row h2{margin:0}
.split{position:relative;isolation:isolate;display:grid;gap:clamp(32px,6vw,72px);align-items:start;grid-template-columns:1fr}
.split::before{content:"";position:absolute;inset:-40px 0;z-index:-1;pointer-events:none;background:radial-gradient(65% 75% at 18% 8%,rgba(109,74,255,.14),transparent 65%),radial-gradient(55% 65% at 100% 92%,rgba(91,108,255,.09),transparent 60%)}
.split>*{min-width:0}
@media (min-width:900px){.split{grid-template-columns:1fr 1fr}}

/* ---------- rooms & prices: both prices always visible ---------- */
.prices{position:relative;isolation:isolate;overflow:hidden}
.prices .wash{position:absolute;inset:0;z-index:-1}
.prices .wash img{width:100%;height:100%;object-fit:cover;opacity:.7}
.prices .wash::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,var(--bg),rgba(8,7,12,.4) 25%,rgba(8,7,12,.4) 75%,var(--bg))}
.rooms{display:grid;gap:var(--s-2);grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr))}
@media (min-width:1001px){.rooms{align-items:start}.room:nth-child(2){margin-top:-26px}.room:nth-child(3){margin-top:18px}}
.room{--t:94,228,255;position:relative;overflow:hidden;border-radius:var(--r);padding:var(--s-4);border:1px solid transparent;background:radial-gradient(90% 60% at 50% 0%,rgba(var(--t),.14),transparent 70%) padding-box,linear-gradient(var(--s1),var(--s1)) padding-box,linear-gradient(170deg,rgba(var(--t),.55),rgba(255,255,255,.08) 35%,rgba(255,255,255,.04)) border-box;box-shadow:var(--sh);transition:transform .3s var(--ease),box-shadow .3s}
.room::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.07) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s var(--ease);pointer-events:none}
@media (hover:hover){.room:hover::after{transform:translateX(120%)}}
.room.m{--t:167,139,250}.room.l{--t:255,193,90}
.room .top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.room h2,.room h3{margin:0 0 4px;font-size:1.6rem;letter-spacing:-.025em}
.room .cap{margin:0;color:var(--muted);font-size:1rem}
.room .figs{height:34px;width:auto;color:rgb(var(--t));opacity:.9;flex:none;pointer-events:none}
/* the guest-count icon doubles as a shortcut straight to booking that room size */
.figs-lnk{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;padding:10px;margin:-10px;border-radius:14px;transition:background-color .15s,transform .15s}
.figs-lnk:hover,.figs-lnk:focus-visible{background:rgba(var(--t),.16)}
.figs-lnk:active{transform:scale(.92)}
@media (hover:hover){.figs-lnk:hover .figs{opacity:1}}
.rates{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2);margin:var(--s-4) 0 0;padding-top:var(--s-3);border-top:1px solid var(--hair2)}
.rates div{position:relative}
.rates dt{font-size:.95rem;color:var(--muted);margin-bottom:6px;min-height:1.5em}
.rates dd{margin:0;font:700 clamp(2.7rem,5.4vw,3.5rem)/.9 var(--f-d);letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--warm)}
.rates dd small{font:500 .95rem/1 var(--f-b);letter-spacing:0;color:var(--muted);margin-left:3px}
.rates .today dt{color:#fff}
.rates .today dd{color:#fff}
.tag{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--v);color:#fff;font-size:.75rem;font-weight:600;vertical-align:1px}
.rate-note{color:var(--muted);margin:var(--s-3) 0 0}
@media (hover:hover) and (pointer:fine){.room:hover{transform:translateY(-4px);box-shadow:var(--sh),0 34px 70px -28px rgba(var(--t),.45)}}
.rules{list-style:none;margin:var(--s-5) 0 0;padding:0;display:grid;gap:var(--s-2) var(--s-4);grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));color:var(--muted);font-size:1rem}
.rules li{padding-top:var(--s-2);border-top:1px solid var(--hair2)}
.rules strong{display:block;color:var(--warm);font-weight:600;margin-bottom:2px}
.book-row{margin-top:var(--s-5)}
@media (max-width:760px){.book-row{display:none}}

/* ---------- full-bleed photo band ---------- */
.band{position:relative;isolation:isolate;overflow:hidden;min-height:clamp(420px,58vw,640px);display:flex;align-items:flex-end;padding:var(--s-6) 0}
.band-media{position:absolute;inset:-6% 0;z-index:-2}
.band-media img{width:100%;height:100%;object-fit:cover}
.band::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,var(--bg),rgba(8,7,12,.15) 30%,rgba(8,7,12,.2) 55%,rgba(8,7,12,.9) 90%,var(--bg))}
.band+.sec{padding-top:clamp(56px,7vw,96px)}
.band h2{max-width:14ch}
.band p{color:#dcd6e6;max-width:44ch}

/* ---------- photo mosaic ---------- */
.mosaic{display:grid;gap:var(--s-2);grid-template-columns:repeat(2,1fr)}
.mosaic a{display:block;position:relative;border-radius:var(--r);overflow:hidden;aspect-ratio:4/5;background:var(--s1);box-shadow:var(--sh);border:1px solid var(--hair)}
.mosaic a::after{content:"";position:absolute;inset:0;background:linear-gradient(200deg,rgba(109,74,255,.2),transparent 45%);opacity:0;transition:opacity .4s var(--ease)}
@media (hover:hover){.mosaic a:hover::after{opacity:1}}
.mosaic a:first-child{grid-column:span 2;aspect-ratio:16/11}
@media (min-width:760px){.mosaic{grid-template-columns:1.5fr 1fr 1fr}.mosaic a:first-child{grid-column:auto;grid-row:span 2;aspect-ratio:auto}}
.mosaic img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
@media (hover:hover){.mosaic a:hover img{transform:scale(1.04)}}

/* ---------- visit ---------- */
.visit{position:relative;isolation:isolate;display:grid;gap:var(--s-4);align-items:stretch}
.visit::before{content:"";position:absolute;inset:-40px -12px;z-index:-1;pointer-events:none;border-radius:40px;background:radial-gradient(65% 75% at 18% 8%,rgba(109,74,255,.14),transparent 65%),radial-gradient(55% 65% at 100% 92%,rgba(91,108,255,.09),transparent 60%)}
@media (min-width:900px){.visit{grid-template-columns:1fr 1.15fr}}

/* ---------- closing CTA band (footer) ---------- */
.endcap{position:relative;isolation:isolate;overflow:hidden;padding:clamp(96px,14vw,180px) 0;text-align:center}
.endcap-media{position:absolute;inset:0;z-index:-2}
.endcap-media img{width:100%;height:100%;object-fit:cover}
.endcap::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,var(--bg),rgba(8,7,12,.55) 35%,rgba(8,7,12,.7)),radial-gradient(55% 75% at 50% 55%,rgba(109,74,255,.4),transparent 72%),radial-gradient(40% 50% at 50% 100%,rgba(91,108,255,.22),transparent 70%)}
.endcap h2{font-size:clamp(2.7rem,7.4vw,5.6rem);margin:0 auto var(--s-4);max-width:12ch;text-shadow:0 0 40px rgba(109,74,255,.35)}
html.lite .endcap h2{text-shadow:none}
@media (max-width:760px){.band::before{background:linear-gradient(180deg,var(--bg),rgba(8,7,12,.2) 25%,rgba(8,7,12,.82) 60%,var(--bg))}.band{min-height:480px}}

/* ---------- map card ---------- */
.mapcard{display:block;position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--hair2);box-shadow:var(--sh);background:#0e0c15;min-height:300px;height:100%;text-decoration:none;color:var(--text);isolation:isolate}
.mapcard svg.map{position:absolute;inset:0;width:100%;height:100%}
.mapcard .pin{position:absolute;left:50%;top:44%;width:44px;transform:translate(-50%,-100%);color:#c4b5fd;filter:drop-shadow(0 6px 14px rgba(109,74,255,.8))}
.mapcard::before{content:"";position:absolute;left:50%;top:44%;width:220px;height:220px;margin:-110px 0 0 -110px;border-radius:50%;background:radial-gradient(closest-side,rgba(109,74,255,.35),transparent);z-index:1;pointer-events:none}
.mapcard .pin,.mapcard .lbl{z-index:2}
.mapcard .lbl{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:rgba(8,7,12,.94);border-top:1px solid var(--hair2);padding:16px 20px;font-weight:500;font-size:.98rem;transition:background-color .2s}
.mapcard .lbl>span:last-child{color:var(--v2)}
.mapcard:hover .lbl{background:rgba(24,20,36,.96)}

/* ---------- facts list (address / hours / phone …) ---------- */
.info{list-style:none;padding:0;margin:0}
.info li{display:grid;grid-template-columns:120px 1fr;gap:var(--s-2);padding:var(--s-2) 0;border-bottom:1px solid var(--hair)}
.info li:first-child{padding-top:0}
.info li:last-child{border-bottom:0}
.info li>*{min-width:0}
.info small{color:var(--dim);font-size:.95rem}
.info a{color:var(--text);text-decoration:none;overflow-wrap:anywhere}
.info a:hover{color:var(--v2)}
@media (max-width:420px){.info li{grid-template-columns:1fr;gap:2px}}
.hrs{display:inline-flex;flex-direction:column;align-items:flex-start;gap:8px}
.hrs-t{line-height:1.6}
.hrs-h{font-size:1.4rem;margin:var(--s-5) 0 var(--s-1);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.htable{width:100%;border-collapse:collapse}
.htable th,.htable td{padding:10px 0;border-bottom:1px solid var(--hair);text-align:left;font-size:1rem}
.htable td{text-align:right;font-variant-numeric:tabular-nums}
.htable th{font-weight:400;color:var(--muted)}
.htable tr:last-child>*{border-bottom:0}
.htable .cl{color:var(--dim)}
.htable tr.today th,.htable tr.today td{color:#fff;font-weight:600}
.htable tr.today th::after{content:" · today";color:var(--v2);font-weight:500}
.soc{display:flex;flex-wrap:wrap;gap:8px}
.soc a{display:inline-flex;align-items:center;gap:9px;min-height:44px;padding:0 16px;border-radius:999px;border:1px solid var(--hair2);color:var(--text);text-decoration:none;font-weight:500;font-size:.96rem}
.soc a:hover{border-color:rgba(255,255,255,.3);color:#fff}
.soc .ic{width:17px;height:17px}
.soc.icons a{padding:0;width:44px;justify-content:center}
.soc-gap{margin-top:var(--s-5)}

/* ---------- FAQ ---------- */
.faq{max-width:760px}
.faq details{border-bottom:1px solid var(--hair)}
.faq summary{cursor:pointer;list-style:none;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;font-weight:500;font-size:1.1rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;font-size:1.4rem;line-height:1;color:var(--dim);transition:transform .2s var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg);color:var(--v2)}
.faq details>div{padding:0 0 var(--s-3);color:var(--muted);max-width:62ch}
.faq details>div p:last-child{margin:0}

/* ---------- footer ---------- */
.ftr{border-top:1px solid var(--hair);padding:var(--s-6) 0 var(--s-4);font-size:1rem;color:var(--muted)}
.ftr .cols{display:grid;gap:var(--s-4);grid-template-columns:1.2fr 1fr 1fr}
@media (max-width:900px){.ftr .cols{grid-template-columns:1fr 1fr}.ftr .cols>:first-child{grid-column:1/-1}}
@media (max-width:480px){.ftr .cols{grid-template-columns:1fr}}
.ftr h2{font:500 .8rem/1 var(--f-b);letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin-bottom:var(--s-2)}
.ftr ul{list-style:none;padding:0;margin:0 0 var(--s-2)}
.ftr li a{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);text-decoration:none}
.ftr li a:hover,.ftr address a:hover{color:#fff}
.ftr address{font-style:normal;line-height:1.7;margin-top:var(--s-2)}
.ftr address a{color:var(--muted);text-decoration:none}
.ftr .legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:var(--s-5);padding-top:var(--s-3);border-top:1px solid var(--hair);font-size:.92rem;color:var(--dim)}
.ftr .legal a{color:var(--muted);text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
.ftr .legal span{display:inline-flex;align-items:center;min-height:44px}

/* ---------- poster wall / galleries / lightbox ---------- */
.wall{columns:4 220px;column-gap:var(--s-2)}
.pe{break-inside:avoid;display:inline-block;width:100%;margin:0 0 var(--s-3);color:var(--text);text-decoration:none}
.pe .ph{display:block;border-radius:var(--r-s);overflow:hidden;background:var(--s1)}
.pe .ph img{width:100%;height:auto;transition:transform .5s var(--ease)}
@media (hover:hover){.pe:hover .ph img{transform:scale(1.02)}}
.pe .in{display:block;padding:10px 2px 0}
.pe time{font-size:.88rem;color:var(--dim)}
.pe h3{font:500 1rem/1.35 var(--f-b);letter-spacing:0;margin:2px 0 0}
.yr{font-size:clamp(1.4rem,2.6vw,1.8rem);margin:0 0 var(--s-3)}
@media (max-width:560px){.wall{columns:2;column-gap:var(--s-1)}}
.gal{display:grid;gap:var(--s-1);grid-template-columns:repeat(auto-fill,minmax(min(46%,200px),1fr))}
.gal a{display:block;border-radius:10px;overflow:hidden;background:var(--s1);aspect-ratio:3/2}
.gal img{width:100%;height:100%;object-fit:cover}
.album{display:grid;text-decoration:none;color:var(--text);border-radius:var(--r);overflow:hidden;border:1px solid var(--hair)}
@media (min-width:860px){.album{grid-template-columns:1.5fr 1fr}}
.album .cov{aspect-ratio:16/10;background:var(--s1)}
.album .cov img{width:100%;height:100%;object-fit:cover}
.album .in{padding:clamp(24px,4vw,44px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.album h3{font-size:clamp(1.6rem,3vw,2.2rem)}
.album:hover{border-color:var(--hair2);color:var(--text)}
.album .cnt{color:var(--dim);margin:0 0 var(--s-1)}
.lb{position:fixed;inset:0;z-index:200;background:rgba(4,3,8,.97);display:none;align-items:center;justify-content:center;padding:64px 8px}
.lb.on{display:flex}
.lb img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:var(--r-s)}
.lb button{position:absolute;min-width:48px;min-height:48px;border-radius:999px;border:1px solid var(--hair2);background:rgba(20,17,28,.92);color:#fff;font:500 1.3rem/1 var(--f-b);cursor:pointer}
.lb .x{top:12px;right:12px}
.lb .pv{left:10px;top:50%;transform:translateY(-50%)}
.lb .nx{right:10px;top:50%;transform:translateY(-50%)}
.lb .ct{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:var(--muted);font-size:.9rem;margin:0}
.empty{max-width:640px;padding-top:var(--s-4);border-top:1px solid var(--hair2)}
.empty h2{font-size:clamp(1.8rem,3.6vw,2.5rem)}
.empty p{color:var(--muted)}
/* upcoming events (rendered by site.js from data/events.json) */
.ev-list{display:grid;gap:var(--s-3)}
.ev{display:grid;gap:var(--s-3);align-items:start;padding:var(--s-3);border-radius:var(--r);background:var(--s1);border:1px solid var(--hair)}
@media (min-width:700px){.ev{grid-template-columns:220px 1fr}}
.ev img{width:100%;border-radius:var(--r-s)}
.ev time{color:var(--v2);font-weight:500}
.ev h3{margin:6px 0 var(--s-1)}
.ev .in>.btn{margin-top:var(--s-1)}

/* ---------- drink menu ---------- */
.mtabs{position:sticky;top:calc(var(--hdr) + 8px);z-index:10;margin:0 0 var(--s-3)}
.mtabs ul{display:flex;gap:4px;width:max-content;max-width:100%;overflow-x:auto;list-style:none;margin:0;padding:4px;border-radius:999px;background:rgba(12,10,18,.97);border:1px solid var(--hair2);scrollbar-width:none}
.mtabs ul::-webkit-scrollbar{display:none}
.mtabs a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:999px;white-space:nowrap;text-decoration:none;color:var(--muted);font-weight:500;font-size:.96rem}
.mtabs a:hover{color:#fff}
.mtabs a[aria-selected=true]{background:#fff;color:#0c0a12}
.mcat{padding:var(--s-5) 0 0}
.mcat>h2{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:var(--s-3)}
.mgrid{display:grid;gap:var(--s-4) var(--s-6);grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));align-items:start}
.mbox h3{font:500 .82rem/1.2 var(--f-b);letter-spacing:.14em;text-transform:uppercase;color:var(--v2);margin:0 0 var(--s-1)}
.mbox .note{color:var(--dim);font-size:.96rem;margin:0 0 var(--s-1)}
.mi{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 10px;padding:11px 0}
.mi b{font-weight:500;color:var(--warm)}
.mi .ld{flex:1;min-width:24px;border-bottom:1.5px dotted rgba(255,255,255,.22);transform:translateY(-4px)}
.mi .p{font-weight:500;color:#fff;text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.mi .p small{color:var(--dim);font-size:.85rem;margin-right:4px}
.mi .ing{flex-basis:100%;color:var(--dim);font-size:.95rem}
.mwrap{padding-top:var(--s-3);padding-bottom:clamp(64px,9vw,120px)}
.mfoot{margin-top:var(--s-4);font-size:.95rem;color:var(--muted)}
.deal{margin:0 0 var(--s-3);color:var(--muted)}
.deal strong{color:var(--amber);font-weight:600}

/* ---------- booking ---------- */
.bwrap{max-width:720px;min-width:0}
.bgrid{display:grid;gap:var(--s-5);align-items:start}
/* mobile: the price table pays off before the effort of filling seven fields, so it renders first */
@media (max-width:999px){.bside{order:-1}}
@media (min-width:1000px){.bgrid{grid-template-columns:minmax(0,1fr) 340px;gap:var(--s-6)}.bside{position:sticky;top:calc(var(--hdr) + 24px)}}
.bside{border-radius:var(--r);padding:var(--s-3);background:var(--s2);border:1px solid var(--hair2);font-size:1rem;color:var(--muted)}
.bside h2{font-size:1.4rem;margin-bottom:var(--s-2)}
.ptable{width:100%;border-collapse:collapse;margin-bottom:var(--s-3);font-variant-numeric:tabular-nums}
.ptable th,.ptable td{padding:10px 0;border-bottom:1px solid var(--hair);text-align:right;font-weight:400}
.ptable thead th{font-size:.85rem;color:var(--dim);padding-top:0}
.ptable th[scope=row],.ptable thead th:first-child{text-align:left}
.ptable th[scope=row]{color:var(--warm);font-weight:600}
.ptable th small{display:block;font-weight:400;color:var(--dim);font-size:.85rem}
.ptable td{color:var(--text)}
.bnotes{list-style:none;margin:0 0 var(--s-2);padding:0;display:grid;gap:10px}
.bnotes li{padding-left:18px;position:relative}
.bnotes li::before{content:"";position:absolute;left:0;top:.7em;width:6px;height:6px;border-radius:50%;background:var(--v2)}
.bcall{margin:0}
.bcall a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
.bform button[type=submit]{width:100%}

.bform{display:grid;gap:var(--s-3) var(--s-2);grid-template-columns:1fr 1fr}
.bform .full{grid-column:1/-1}
@media (max-width:560px){.bform{grid-template-columns:1fr}}
.bform label{display:block;font-weight:500;font-size:.96rem;margin-bottom:8px}
.bform input,.bform select,.bform textarea{width:100%;min-height:56px;padding:14px 16px;border-radius:var(--r-s);border:1px solid rgba(255,255,255,.36);background:var(--field);color:var(--text);font:400 1.05rem/1.3 var(--f-b);transition:border-color .15s,box-shadow .15s}
.bform textarea{min-height:110px;resize:vertical}
.bform input:focus,.bform select:focus,.bform textarea:focus{border-color:var(--v2);outline:none;box-shadow:0 0 0 4px rgba(125,93,255,.25)}
.bform input[type=date]::-webkit-calendar-picker-indicator,.bform input[type=time]::-webkit-calendar-picker-indicator{filter:invert(46%) sepia(78%) saturate(3000%) hue-rotate(230deg) brightness(1.05);cursor:pointer;opacity:.85}
.hint{font-size:.92rem;color:var(--dim);margin:0}
.fld .hint{margin-top:6px}
.err{margin:8px 0 0;color:var(--err);font-weight:500;font-size:.95rem}
.bform [aria-invalid=true]{border-color:var(--err);box-shadow:0 0 0 4px rgba(255,155,138,.15)}
.hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.formerr{margin:0;padding:12px 16px;border-radius:var(--r-s);border:1px solid rgba(255,155,138,.45);color:#ffd6cf}
.quote{margin:0;color:var(--muted);font-size:1rem}
.consent{margin:0;font-size:.95rem;color:var(--muted)}
.bform button[aria-busy=true]{opacity:.8;cursor:progress}
.bstate{border-radius:var(--r);padding:clamp(24px,4vw,36px);background:var(--s2);border:1px solid var(--hair2)}
.bstate:focus{outline:none}
.bstate:focus-visible{outline:2px solid var(--v2);outline-offset:4px}
.bstate h3{font-size:clamp(1.6rem,3vw,2.2rem)}
.bstate p{color:var(--muted)}
.bstate p strong{color:#fff}
.bstate .code{display:inline-block;font:700 1.15rem/1 var(--f-d);padding:8px 14px;border-radius:var(--r-s);background:#fff;color:#0c0a12}
.done{border-color:rgba(93,255,177,.35)}
.done h3::before{content:"✓ ";color:var(--green)}
.fail{border-color:rgba(255,193,90,.45)}
.bstate .cta-row{margin-top:var(--s-3);gap:10px}

/* ---------- privacy / long text ---------- */
.prose{max-width:680px}
.prose section{margin:0 0 var(--s-5)}
.prose h2{font-size:clamp(1.5rem,3vw,1.9rem);letter-spacing:-.03em}
.prose p,.prose li{color:#d4cee0}
.prose ul{padding-left:20px;display:grid;gap:10px;margin:0 0 var(--s-2)}
.prose strong{color:#fff;font-weight:600}
.upd{margin-top:var(--s-2)}

/* ---------- 404 ---------- */
.nf{text-align:center;padding:clamp(80px,14vw,160px) 0}
.nf .big404{font:700 clamp(6rem,22vw,12rem)/.9 var(--f-d);letter-spacing:-.03em;margin:0 0 var(--s-3)}
.nf h1{font-size:clamp(1.8rem,4vw,2.6rem)}
.nf .cta-row{justify-content:center}
.nf p{color:var(--muted)}

/* ---------- reveal (JS only, subtle) ---------- */
.js .rv{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:calc(var(--i,0)*80ms)}
.js .rv.in{opacity:1;transform:none}

/* ---------- lite mode (touch / low-memory): same look, cheaper ---------- */
html.lite .grain,html.lite .beam,html.lite .beam2{display:none}
html.lite .room::after,html.lite .mosaic a::after{display:none}
html.lite .mapcard::before{display:none}
html.lite .fl{animation:none}
html.lite .tube{text-shadow:0 0 6px rgba(125,93,255,.9),0 0 18px rgba(91,108,255,.4)}
html.lite .btn-p{box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
html.lite.js .rv{transition-duration:.4s}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .rv{opacity:1;transform:none}
  html{scroll-behavior:auto}
}
@media print{.hdr,.mbar,.mnav{display:none}body{background:#fff;color:#000}}
/* ---------- motion helpers (fx.js) ---------- */
/* home headline waits for fx.js to spring it in (no visible-then-hidden flash); shows by itself after 1.2 s if fx.js never runs */
.fxh .hero h1{animation:fxh 0s 1.2s both}
@keyframes fxh{from{opacity:0}to{opacity:1}}
.w{display:inline-block}

.mtabs ul.has-ind{position:relative}
.tab-ind{position:absolute;top:4px;bottom:4px;left:0;border-radius:999px;background:#fff;pointer-events:none}
.mtabs ul.has-ind a{position:relative;z-index:1}
.mtabs ul.has-ind a[aria-selected=true]{background:transparent}

/* hero: the two buttons sit side by side on phones; they only stack on very narrow screens */
@media (max-width:760px){
  .hero .cta-row{flex-wrap:nowrap;gap:10px}
  .hero .cta-row .btn{flex:1 1 0;min-width:0;padding-inline:12px;font-size:.98rem;white-space:nowrap}
}
@media (max-width:349px){.hero .cta-row{flex-wrap:wrap}.hero .cta-row .btn{flex:1 1 100%}}
/* iOS Safari: date inputs ignore width:100% and overflow; empty ones collapse */
.bform .fld{min-width:0}
.bform input[type=date]{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%;text-align:left}
.bform input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.3em}
/* rooms: guest slider + whole-card tap to book */
.gpick{margin:0 0 var(--s-4);padding:18px 20px 14px;border-radius:var(--r);background:var(--s1);border:1px solid var(--hair2)}
.gp-h{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.gp-h label{font-weight:600;font-size:1.05rem}
.gp-h output{color:var(--muted);font-size:1rem}
.gp-h output b{font:700 1.9rem/1 var(--f-d);color:#fff;letter-spacing:-.02em}
.gp-h output span{color:var(--v2)}
.gpick input[type=range]{--p:15.8%;-webkit-appearance:none;appearance:none;display:block;width:100%;height:44px;margin:0;background:transparent;cursor:pointer;touch-action:pan-y}
.gpick input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:99px;background:linear-gradient(90deg,var(--cyan),var(--v2) 50%,#ffc15a) 0/100% 100% no-repeat,rgba(255,255,255,.1);background-size:var(--p) 100%,100% 100%}
.gpick input[type=range]::-moz-range-track{height:10px;border-radius:99px;background:rgba(255,255,255,.1)}
.gpick input[type=range]::-moz-range-progress{height:10px;border-radius:99px;background:linear-gradient(90deg,var(--cyan),var(--v2))}
.gpick input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-10px;border-radius:50%;background:#fff;border:6px solid var(--v);box-shadow:0 0 0 6px rgba(125,93,255,.25),0 6px 18px rgba(0,0,0,.5);transition:transform .15s}
.gpick input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#fff;border:6px solid var(--v);box-shadow:0 0 0 6px rgba(125,93,255,.25)}
.gpick input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}
.gpick input[type=range]:focus-visible{outline:2px solid var(--v2);outline-offset:4px;border-radius:99px}
.gp-s{position:relative;height:1.2em;font-size:.8rem;color:var(--dim)}
.gp-s span{position:absolute;transform:translateX(-50%)}
.gp-s span:nth-child(1){left:15px}.gp-s span:nth-child(2){left:calc(7/19*(100% - 30px) + 15px)}.gp-s span:nth-child(3){left:calc(11/19*(100% - 30px) + 15px)}.gp-s span:nth-child(4){left:calc(100% - 15px)}
.rooms .room{cursor:pointer;transition:transform .3s var(--ease),box-shadow .3s,opacity .3s,filter .3s}
.rooms .room:has(.figs-lnk:focus-visible){outline:2px solid var(--v2);outline-offset:4px}
.rooms .room:active{transform:scale(.98)}
.rooms.has-pick .room:not(.pick){opacity:.5;filter:saturate(.6)}
.rooms .room.pick{box-shadow:var(--sh),0 0 0 2px rgba(var(--t),.75),0 30px 70px -26px rgba(var(--t),.55)}
.room .go{display:inline-flex;margin-top:var(--s-3);padding:10px 16px;border-radius:99px;font-weight:600;font-size:.95rem;background:rgba(var(--t),.14);color:rgb(var(--t));transition:background-color .2s,color .2s}
.room.pick .go{background:rgb(var(--t));color:#0c0a12}
@media (prefers-reduced-motion:reduce){.rooms .room,.room .go{transition:none}}
/* phones: rooms become a swipeable row; the slider glides the matching room into the middle */
@media (max-width:760px){
.rooms{display:flex;position:relative;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;margin:0 calc(-1*var(--gut));padding:10px var(--gut) 26px;scrollbar-width:none;overscroll-behavior-x:contain}
.rooms::-webkit-scrollbar{display:none}
.rooms .room{flex:0 0 84%;scroll-snap-align:center;margin-top:0}
.rooms.has-pick .room:not(.pick){transform:scale(.93);opacity:.45}
.rooms .room.pick:active{transform:scale(.98)}
}
/* rooms panel: "When?" night chips */
.gp-w{margin:18px 0 10px}
.gp-w>span:first-child{font-weight:600;font-size:1.05rem}
.gp-note{color:var(--v2);font-size:.95rem}
.gp-d{display:flex;gap:8px;overflow-x:auto;margin:0 -20px;padding:2px 20px 6px;scroll-snap-type:x proximity;scrollbar-width:none}
.gp-d::-webkit-scrollbar{display:none}
.gp-c{position:relative;flex:none;scroll-snap-align:start;min-height:44px;padding:10px 16px;border-radius:99px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.04);color:var(--text);font:500 .95rem/1.2 var(--f-b);white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center;transition:background-color .15s,border-color .15s,color .15s,transform .15s}
.gp-c:active{transform:scale(.95)}
.gp-c:hover{border-color:var(--v2)}
.gp-c.on{background:var(--v);border-color:var(--v);color:#fff;box-shadow:0 6px 20px -6px rgba(109,74,255,.7)}
.gp-c:focus-visible,.gp-o:focus-within{outline:2px solid var(--v2);outline-offset:3px}
.gp-o span::before{content:"";display:inline-block;width:14px;height:14px;margin:0 8px -2px 0;border:1.6px solid currentColor;border-radius:3px;border-top-width:4px}
.gp-o input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;-webkit-appearance:none;appearance:none}
.gp-o input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}
/* rooms panel: numbered steps that slide in one after another */
.gpick label i,.gpick #gp-wl i,.gp-go i{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:10px;border-radius:50%;background:var(--v);color:#fff;font:700 .8rem/1 var(--f-b);font-style:normal;vertical-align:1px}
.gp-go i{background:#fff;color:var(--v)}
.gp-go{display:flex;justify-content:center;width:100%;margin-top:16px}
.gp-go[hidden],.gp-2[hidden]{display:none}
.gp-in{animation:gp-in .45s var(--ease) both}
@keyframes gp-in{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gp-in{animation:none}}
.gp-c:disabled{opacity:.4;cursor:not-allowed;border-style:dashed}
/* phones: compact picker + cards so steps and a room fit on one screen */
@media (max-width:760px){
.gpick{padding:14px 16px 12px;margin-bottom:14px}
.gp-h{margin-bottom:4px}
.gp-h label,.gp-w>span:first-child{font-size:.98rem}
.gp-h output{font-size:.92rem}
.gp-h output b{font-size:1.5rem}
.gpick label i,.gpick #gp-wl i,.gp-go i{width:21px;height:21px;margin-right:8px;font-size:.72rem}
.gpick input[type=range]{height:36px}
.gp-s{font-size:.72rem}
.gp-w{margin:10px 0 8px}
.gp-d{display:flex;gap:6px;margin:0;padding:0;overflow:visible}
.gp-c{flex:1 1 0;min-width:0;min-height:40px;padding:6px 8px;justify-content:center;text-align:center;white-space:normal;font-size:.88rem;line-height:1.15}
.gp-o span::before{width:12px;height:12px;margin-right:6px}
.gp-go{margin-top:12px;min-height:48px;padding:10px 16px;font-size:1rem}
.rooms{padding-top:6px;padding-bottom:16px}
.rooms .room{padding:18px 18px 16px}
.room h2,.room h3{font-size:1.3rem}
.room .cap{font-size:.9rem}
.room .figs{height:26px}
.rates{margin-top:12px;padding-top:12px;gap:10px}
.rates dt{font-size:.85rem;margin-bottom:4px}
.rates dd{font-size:2.1rem}
.rates .tag{font-size:.75rem}
.room .go{margin-top:12px;padding:8px 14px;font-size:.88rem}
}
@media (max-width:760px){.gp-c{flex:1 1 auto;padding:6px 10px;white-space:nowrap}.gp-c:disabled{white-space:normal}}
/* phones: the page gently settles on the picker when you scroll near it (proximity, so it never traps you) */
@media (max-width:760px){html:has(.gpick){scroll-snap-type:y proximity}.gpick{scroll-snap-align:start}}
/* a soft pulse when a new group size locks in */
.room.lk{animation:lk .35s var(--ease)}
@keyframes lk{40%{scale:1.025}}
@media (prefers-reduced-motion:reduce){.room.lk{animation:none}}
/* phones: house rules as a tight 2x2 grid right under the cards, so picker + room + rules share one screen */
@media (max-width:760px){
.rules{grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:4px;font-size:.76rem;line-height:1.35}
.rules li{padding-top:7px}
.rules strong{font-size:.84rem;margin-bottom:1px}
.rooms .room{padding:16px 16px 14px}
.rates{margin-top:10px;padding-top:10px}
.rates dd{font-size:1.9rem}
.room .go{margin-top:10px;padding:7px 13px}
}
/* phones: step 3 lives in the bottom bar, so the in-panel button is dropped */
@media (max-width:760px){.gp-go{display:none!important}.gp-s{height:1em;margin-top:-2px}.gp-w{margin:8px 0 6px}}
@media (max-width:760px){.gpick{margin-bottom:8px}.rooms{padding-top:4px;padding-bottom:10px}.rules{gap:6px 12px}.rules li{padding-top:6px}.room h2,.room h3{margin-bottom:2px}.rates{margin-top:8px;padding-top:8px}}
/* phones: rules shrink to headline-only chips; card CTA moves to the top-right corner */
@media (max-width:760px){
.rules{gap:6px 10px}
.rules li{padding-top:6px}
.rules li span{display:none}
.rules strong{margin:0}
.room .figs-lnk{display:none}
.room .go{position:absolute;top:14px;right:14px;margin:0;padding:6px 12px;font-size:.82rem}
.rooms .room .top>div{padding-right:120px}
}
/* phones: steps + matching group + rules merged into one card; the group slides in from the side it comes from */
@media (max-width:760px){
.gcombo{border-radius:var(--r);background:var(--s1);border:1px solid var(--hair2);box-shadow:var(--sh);overflow:hidden}
.gcombo .gpick{margin:0;border:0;border-radius:0;background:none;padding-bottom:10px}
.gcombo .rooms{display:grid;margin:0;padding:0 12px;overflow:hidden;scroll-snap-type:none;touch-action:pan-y}
.gcombo .rooms .room{grid-area:1/1;flex:none;width:auto;margin:0;transition:transform .42s var(--ease),opacity .3s,visibility 0s .42s}
.gcombo .rooms.has-pick .room:not(.pick){opacity:0;visibility:hidden;pointer-events:none;filter:none;transform:translateX(60%)}
.gcombo .rooms.has-pick .room:has(~ .room.pick){transform:translateX(-60%)}
.gcombo .rooms .room.pick{transition:transform .42s var(--ease),opacity .3s,visibility 0s}
.gcombo .rules{margin:0;padding:10px 16px 14px}
.gcombo .rules li{border-top-color:var(--hair2)}
}
@media (max-width:760px) and (prefers-reduced-motion:reduce){.gcombo .rooms .room{transition:none}}
/* phones: calmer combined card — flat tinted group strip, one hero price, quiet rules */
@media (max-width:760px){
.gcombo .gp-s{display:none}
.gcombo .gpick input[type=range]{margin-bottom:2px}
.gcombo .rooms{padding:0 16px}
.gcombo .rooms .room{padding:12px 14px;border:0;border-radius:14px;box-shadow:none;background:linear-gradient(135deg,rgba(var(--t),.16),rgba(var(--t),.05))}
.gcombo .rooms .room::after{display:none}
.gcombo .rooms .room.pick{box-shadow:inset 0 0 0 1px rgba(var(--t),.35)}
.gcombo .room .go{display:none}
.gcombo .room .top>div{padding-right:0;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.gcombo .room h3,.gcombo .room h2{font-size:1.1rem;margin:0;color:rgb(var(--t))}
.gcombo .room .cap{font-size:.85rem}
.gcombo .rates{display:flex;align-items:baseline;gap:14px;margin-top:6px;padding-top:0;border-top:0}
.gcombo .rates div{display:flex;flex-direction:column-reverse}
.gcombo .rates dt{font-size:.75rem;margin:2px 0 0;min-height:0}
.gcombo .rates dd{font-size:1.15rem;color:var(--muted)}
.gcombo .rates dd small{font-size:.75rem}
.gcombo .rates .tag{display:none}
.gcombo .rates .today{order:-1}
.gcombo .rates .today dd{font-size:2rem;color:#fff}
.gcombo .rates .today dt{color:rgb(var(--t));font-weight:600}
.gcombo .rules{grid-template-columns:1fr 1fr;gap:4px 12px;padding:12px 18px 14px}
.gcombo .rules li{border:0;padding:0 0 0 12px;position:relative}
.gcombo .rules li::before{content:"";position:absolute;left:0;top:.55em;width:4px;height:4px;border-radius:50%;background:var(--v2)}
.gcombo .rules strong{font-size:.78rem;font-weight:500;color:var(--muted);line-height:1.35}
}
/* calendar sheet: open nights only (Mondays + past days disabled) */
.cal{border:0;padding:0;background:transparent;color:var(--text);width:min(380px,calc(100vw - 24px));max-width:none;margin:auto auto 12px;overflow:visible}
@media (min-width:761px){.cal{margin:auto}}
.cal[open]{animation:cal-in .28s var(--ease)}
@keyframes cal-in{from{opacity:0;transform:translateY(24px)}}
.cal::backdrop{background:rgba(5,4,10,.62);backdrop-filter:blur(3px)}
.cal-in{background:var(--s2);border:1px solid var(--hair2);border-radius:22px;padding:16px 14px 8px;box-shadow:0 30px 80px -20px rgba(0,0,0,.9)}
.cal-h{display:flex;align-items:center;justify-content:space-between;margin:0 2px 10px}
.cal-h b{font:700 1.15rem/1 var(--f-d);letter-spacing:-.01em}
.cal-h button{width:42px;height:42px;border-radius:50%;border:1px solid var(--hair2);background:none;color:var(--text);font-size:1.5rem;line-height:1;cursor:pointer}
.cal-h button:disabled{opacity:.25;cursor:default}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.cal-g i{font-style:normal;font-size:.72rem;font-weight:600;color:var(--dim);padding:4px 0 6px}
.cal-g i:nth-child(2){opacity:.35;text-decoration:line-through}
.cal-g button{aspect-ratio:1;width:100%;border:0;border-radius:50%;background:none;color:var(--text);font:500 1.02rem/1 var(--f-b);cursor:pointer;transition:background-color .12s}
.cal-g button:hover:not(:disabled){background:rgba(255,255,255,.08)}
.cal-g button:disabled{color:rgba(255,255,255,.16);cursor:default}
.cal-g button[aria-current]{box-shadow:inset 0 0 0 1.5px var(--v2)}
.cal-g button.on{background:var(--v);color:#fff;box-shadow:0 6px 18px -6px rgba(109,74,255,.8)}
.cal-g button:focus-visible{outline:2px solid var(--v2);outline-offset:1px}
.cal-f{display:flex;justify-content:space-between;align-items:center;margin-top:6px;padding-left:4px;font-size:.82rem;color:var(--dim)}
.cal-x{background:none;border:0;color:var(--v2);font:600 .95rem var(--f-b);padding:12px;cursor:pointer}
/* booking form: date field is a button that opens the calendar */
.bform .datebtn{display:block;width:100%;min-height:56px;padding:14px 16px;border-radius:var(--r-s);border:1px solid rgba(255,255,255,.36);background:var(--field);color:var(--text);font:400 1.05rem/1.3 var(--f-b);text-align:left;cursor:pointer}
.bform .datebtn.ph{color:var(--dim)}
.bform .datebtn:focus{border-color:var(--v2);outline:none;box-shadow:0 0 0 4px rgba(125,93,255,.25)}
.bform .datebtn[aria-invalid=true]{border-color:rgba(255,155,138,.8)}
.mbar.gp-ready{transform:none!important;pointer-events:auto!important}
/* inline booking: steps 3–4 + confirmation inside the card */
.gpick .rooms{margin:14px 0 4px}
.gpick .room{margin-top:0!important}
.gp-3,.gp-4,.gp-done{margin-top:4px}
.gp-t{display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;padding:2px 2px 6px}
.gp-t::-webkit-scrollbar{display:none}
.gp-t .gp-c{flex:none!important}
.gp-len{display:flex;gap:8px;margin-top:6px}
.gp-len .gp-c{flex:1 1 0}
.gp-none{margin:0;color:var(--muted);font-size:.92rem}
.gp-f{position:relative;display:grid;gap:8px}
.gp-f input,.gp-f textarea{width:100%;min-height:48px;padding:12px 14px;border-radius:var(--r-s);border:1px solid rgba(255,255,255,.28);background:var(--field);color:var(--text);font:400 16px/1.3 var(--f-b)}
.gp-f input:focus,.gp-f textarea:focus{border-color:var(--v2);outline:none;box-shadow:0 0 0 3px rgba(125,93,255,.25)}
.gp-f [aria-invalid=true]{border-color:rgba(255,155,138,.85)}
.gp-f textarea{min-height:80px;margin-top:8px;resize:vertical}
.gp-more summary{cursor:pointer;color:var(--v2);font-size:.9rem;padding:4px 2px;list-style:none}
.gp-more summary::-webkit-details-marker{display:none}
.gp-more summary::before{content:"+ "}
.gp-more[open] summary::before{content:"− "}
.gp-err,.gp-soon{margin:10px 0 0;padding:10px 14px;border-radius:var(--r-s);font-size:.92rem;line-height:1.4}
.gp-err{border:1px solid rgba(255,155,138,.45);color:#ffd6cf}
.gp-soon{border:1px solid rgba(255,193,90,.45);color:#ffe2b0}
.gp-err a,.gp-soon a{color:#fff;font-weight:600}
.gp-send{display:flex;justify-content:center;width:100%;margin-top:12px}
.gp-fine{margin:8px 2px 0;font-size:.8rem;color:var(--dim);line-height:1.4}
.gpick.gp-sent>:not(.gp-done){display:none}
.gp-done{margin:0;padding:4px 2px}
.gp-done:focus{outline:none}
.gp-done h3{margin:0 0 6px;font-size:1.6rem}
.gp-done h3::before{content:"✓";display:inline-grid;place-items:center;width:30px;height:30px;margin-right:10px;border-radius:50%;background:var(--v);color:#fff;font-size:1rem;vertical-align:3px}
.gp-done p{margin:8px 0 0;color:var(--muted);font-size:.95rem;line-height:1.45}
.gp-done p strong{color:#fff}
.gp-done a{color:var(--v2);font-weight:600}
.gp-code{display:inline-block;padding:6px 12px;border-radius:var(--r-s);background:#fff;color:#0c0a12!important;font:700 1rem/1 var(--f-d)}
.gp-sum{color:#fff!important;font-weight:600}
@media (max-width:760px){
.gcombo .gpick .rooms{padding:0;margin:10px 0 2px}
.gcombo .gp-t{margin:0 -16px;padding:2px 16px 6px}
.gcombo .gp-len .gp-c{flex:1 1 0}
}
.gpick .gp-h i{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:10px;border-radius:50%;background:var(--v);color:#fff;font:700 .8rem/1 var(--f-b);font-style:normal;vertical-align:1px}
.gp-t{scroll-padding-inline:16px}
@media (max-width:760px){.gpick .gp-h i{width:21px;height:21px;margin-right:8px;font-size:.72rem}}
/* length stepper: − 2 hrs + */
.gp-len{display:flex!important;align-items:center;gap:10px;margin-top:8px}
.gp-len>span{flex:1;font-size:.92rem;color:var(--muted)}
.gp-st{width:44px;height:44px;flex:none;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.05);color:var(--text);font:500 1.4rem/1 var(--f-b);cursor:pointer;transition:background-color .15s,transform .12s}
.gp-st:active:not(:disabled){transform:scale(.9);background:var(--v)}
.gp-st:disabled{opacity:.3;cursor:default}
.gp-lv{min-width:6.5em;text-align:center;font:700 1.05rem/1.2 var(--f-d)}
.gp-len[hidden]{display:none!important}
/* keep autofilled fields dark (iOS/Chrome paint them light) */
.gp-f input:-webkit-autofill,.gp-f input:-webkit-autofill:hover,.gp-f input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--field) inset;caret-color:var(--text);transition:background-color 9999s}
.gp-mail{display:flex;justify-content:center;width:100%;margin:14px 0 4px}
.gp-mail::before{content:"✉";margin-right:10px;font-size:1.1em}
.gp-ok{color:#b9f6ca!important;font-weight:600}
.gp-done a.gp-mail{color:#fff}
/* menu tabs: solid full-width strip so items don't show through; sections land below it */
.mtabs{top:var(--hdr);margin-left:calc(-1*var(--gut));margin-right:calc(-1*var(--gut));padding:8px var(--gut);background:var(--bg)}
.mcat{scroll-margin-top:calc(var(--hdr) + 84px)}
.mnav[open] ~ * .mbar,body:has(.mnav[open]) .mbar{display:none}
/* hours: days | times rows that never wrap mid-time */
.hrs-t{display:grid;grid-template-columns:auto auto;justify-content:start;column-gap:20px;row-gap:6px;line-height:1.35}
.hrs-t .hr{display:contents}
.hrs-t .hr>span:first-child{color:var(--muted)}
.hrs-t .hr>span:last-child{white-space:nowrap}
/* phones: keep the glow behind the details (not the heading) and even out row spacing */
@media (max-width:760px){
#find-us .sh{margin-bottom:var(--s-3)}
.visit::before{inset:-12px -16px}
.info li{gap:6px;padding:var(--s-2) 0}
.info li>a,.info li>.hrs{font-size:1.05rem}
.hrs{gap:10px}
}
/* menu tabs: the pill glides between tabs with a little spring; active text fades to dark */
.tab-ind{top:4px;bottom:4px;width:0;will-change:transform,width}
.tab-ind.go{transition:transform .42s cubic-bezier(.34,1.32,.5,1),width .42s cubic-bezier(.34,1.32,.5,1)}
.mtabs ul.has-ind a{transition:color .25s}
.mtabs ul.has-ind a[aria-selected=true]{color:#0c0a12}
@media (prefers-reduced-motion:reduce){.tab-ind.go,.mtabs ul.has-ind a{transition:none}}
/* menu tab strip: own the horizontal swipe, fade the edge where more tabs are hiding */
.mtabs ul{touch-action:pan-x;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.mtabs ul.more-r{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}
.mtabs ul.more-l{-webkit-mask-image:linear-gradient(90deg,transparent,#000 40px);mask-image:linear-gradient(90deg,transparent,#000 40px)}
.mtabs ul.more-l.more-r{-webkit-mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent)}
/* phones: tighter, even rhythm in the booking card; rules as one flowing line set under a hairline */
@media (max-width:760px){
.phero+.sec.tight{padding-top:20px}
.gcombo .gp-2,.gcombo .gp-3,.gcombo .gp-4{margin-top:14px}
.gcombo .gp-w{margin:0 0 10px}
.gcombo .gpick{padding-bottom:14px}
.gcombo .rules{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:6px 16px;margin:0 16px;padding:12px 2px 14px;border-top:1px solid var(--hair2)}
.gcombo .rules li{padding-left:11px;white-space:nowrap}
}
.mcat{scroll-margin-top:70px}   /* html already pads by header+16px; this adds the tab strip */
/* guest count always on its own line under "How many of you?" (no jumping as the number changes) */
.gpick>.gp-h:first-child{flex-direction:column;align-items:flex-start;gap:6px}
.mtabs ul{overflow-clip-margin:0}
/* pill being dragged: follows the finger directly, lifts slightly */
.tab-ind.drag{transition:none!important;box-shadow:0 6px 18px -4px rgba(0,0,0,.6),0 0 0 3px rgba(167,139,250,.45);scale:1.04}
/* events Upcoming/Past: sliding pill (shares .tab-ind) */
.subnav{position:relative}
.subnav.has-ind a{position:relative;z-index:1;transition:color .25s}
.subnav.has-ind a[aria-current=page]{background:transparent;color:var(--muted)}
.subnav.has-ind a.lit{color:#0c0a12}
.mnote{font-size:1rem;color:var(--muted);max-width:40ch}
.ptake{margin:0;color:var(--muted);font-size:.95rem}
.ptake a,.mfoot a{color:var(--v2)}

/* desktop spacing (v49): tighter section rhythm, balanced drink-menu columns */
@media (min-width:1001px){
.sec{padding:clamp(72px,8vw,120px) 0}
.sec.tight{padding-top:clamp(32px,4vw,56px)}
.band+.sec{padding-top:clamp(48px,5vw,80px)}
.endcap{padding:clamp(88px,10vw,130px) 0}
#beers .mgrid>.mbox:nth-child(1){grid-column:1;grid-row:1}
#beers .mgrid>.mbox:nth-child(2){grid-column:2;grid-row:1/span 2}
#beers .mgrid>.mbox:nth-child(3){grid-column:1;grid-row:2}
}

/* menu-only site: compact hero, small fine print, tighter rows */
.phero{padding:clamp(36px,6vw,64px) 0 clamp(18px,3vw,28px)}
.phero h1{font-size:clamp(2.3rem,8vw,3.8rem);margin-bottom:var(--s-1)}
.phero .mnote{font-size:.78rem;line-height:1.5;color:var(--dim);max-width:44ch}
.mwrap{padding-top:0}
@media (max-width:760px){
.mtabs{margin-bottom:0}
.mcat{padding-top:28px}
.mcat>h2{font-size:1.7rem;margin-bottom:10px}
.mgrid{gap:18px}
.mbox h3{margin-bottom:2px}
.mbox .note{margin-bottom:2px;font-size:.88rem}
.mi{padding:7px 0}
.mi .ing{font-size:.85rem;line-height:1.35;margin-top:1px}
.mfoot{margin-top:var(--s-3);font-size:.8rem;color:var(--dim)}
}
.phero::before{display:none}

/* menu-only footer: one quiet line, no extra gaps */
.mwrap{padding-bottom:var(--s-4)}
.mfoot{margin-top:var(--s-3);margin-bottom:0}
.ftr{padding:var(--s-3) 0 calc(var(--s-3) + env(safe-area-inset-bottom,0px));font-size:.8rem;color:var(--dim)}
.ftr .legal{border:0;margin:0;padding:0}
.ftr .legal{font-size:inherit}.ftr .legal span{min-height:0}
