/* NEXORIUM — site styles. Built on the Nexorium design system tokens (assets/css/tokens/). */
@import url("tokens/fonts.css");
@import url("tokens/colors.css");
@import url("tokens/typography.css");
@import url("tokens/spacing.css");
@import url("tokens/radius.css");
@import url("tokens/elevation.css");
@import url("tokens/layout.css");
@import url("tokens/motion.css");

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--canvas);color:var(--body);font:var(--body-md-weight) var(--body-md-size)/var(--body-md-lh) var(--font-sans);font-feature-settings:var(--font-feature-sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:var(--ink);text-decoration:none;transition:var(--transition-interactive)}
a:hover{color:var(--primary)}
button{font:inherit;color:inherit}
:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm,6px)}
::selection{background:var(--primary-tint-32);color:var(--ink-strong)}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;top:8px;left:8px;z-index:200;padding:10px 16px;background:var(--canvas-soft);border:1px solid var(--hairline);transform:translateY(-200%)}
.skip:focus{transform:none}

/* ---------- shared typographic roles ---------- */
.eyebrow{font:600 12px/16px var(--font-mono);letter-spacing:2.4px;text-transform:uppercase;color:var(--mute)}
.meta{font:400 12px/16px var(--font-mono);letter-spacing:.4px;color:var(--mute)}
.meta-em{color:var(--body)}
.dot{color:var(--primary)}
.display{font-family:var(--font-sans);font-weight:400;color:var(--ink-strong);letter-spacing:-.03em;line-height:.92;text-wrap:balance}
.h-xl{font-size:clamp(44px,8.4vw,132px)}
.h-lg{font-size:clamp(34px,5vw,72px)}
.h-md{font-size:clamp(26px,2.6vw,40px);line-height:1.06}
.lede{font:400 clamp(16px,1.35vw,20px)/1.6 var(--font-sans);color:var(--body);max-width:52ch;text-wrap:pretty}
.rule{height:0;border-top:1px dashed var(--hairline-dashed);margin:0}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;min-height:var(--touch-min);padding:12px 22px;border-radius:6px;border:1px solid var(--hairline);background:transparent;color:var(--ink);font:600 15px/1 var(--font-sans);cursor:pointer;white-space:nowrap;transition:var(--transition-interactive);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.btn:hover{border-color:var(--hairline-soft);color:var(--ink-strong);background:rgba(255,255,255,.03);box-shadow:inset 0 1px 0 rgba(255,255,255,.035),var(--shadow-hover)}
.btn:active{transform:translateY(1px);box-shadow:inset 0 1px 2px rgba(0,0,0,.3)}
.btn:focus-visible{outline:none;border-color:var(--primary-soft);box-shadow:var(--focus-ring)}
.btn--primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.3)}
.btn--primary:hover{background:var(--primary-deep);border-color:var(--primary-deep);color:var(--on-primary);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 0 12px var(--glow-primary)}
.btn--primary:active{transform:translateY(1px);box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}
.btn--primary:focus-visible{outline:none;border-color:var(--ink-strong);box-shadow:var(--focus-ring)}
.btn--ghost{border-color:rgba(255,255,255,.18);background:transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.btn--ghost:hover{border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),var(--shadow-hover)}
.btn--soft{color:var(--body);box-shadow:none}
.btn--soft:hover{color:var(--ink-strong);background:rgba(255,255,255,.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.btn--sm{padding:11px 12px;font-size:13px;gap:6px;min-height:44px;white-space:nowrap;flex:0 0 auto}
.btn[disabled]{opacity:.45;cursor:default;pointer-events:none;box-shadow:none}
.btn.is-busy{opacity:.7;cursor:progress}
.btn i{width:6px;height:6px;border-radius:9999px;background:currentColor;opacity:.6}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto;z-index:90;height:var(--navbar-h);display:flex;align-items:center;transition:background-color var(--dur-slow) var(--ease-standard),border-color var(--dur-slow) var(--ease-standard)}
.nav__in{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px}
.nav.is-solid{background:var(--surface-glass);border-bottom:1px solid var(--border-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.brand{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.brand img{height:15px;width:auto;flex:none;max-width:none}
.brand span{font:400 12px/1 var(--font-mono);letter-spacing:2px;color:var(--mute)}
.nav__links{display:flex;align-items:center;gap:28px}
.nav__links a{font:500 14px/1 var(--font-sans);color:var(--body)}
.nav__links a:hover{color:var(--ink-strong)}
.nav__right{display:flex;align-items:center;gap:16px}
.burger{display:none;width:44px;height:44px;align-items:center;justify-content:center;background:var(--canvas-soft);border:1px solid var(--hairline);border-radius:8px;cursor:pointer;transition:var(--transition-interactive);box-sizing:border-box}
.burger:hover{border-color:var(--hairline-soft);background:var(--canvas-subtle)}
.burger:active{transform:translateY(1px)}
.burger:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.burger b{display:block;width:16px;height:1px;background:var(--ink);position:relative;transition:transform var(--dur-slow) var(--ease-standard),background-color var(--dur-fast) linear}
.burger b::before,.burger b::after{content:"";position:absolute;left:0;width:16px;height:1px;background:var(--ink);transition:transform var(--dur-slow) var(--ease-standard)}
.burger b::before{top:-5px}.burger b::after{top:5px}
body.menu-open .burger b{background:transparent}
body.menu-open .burger b::before{transform:translateY(5px) rotate(45deg)}
body.menu-open .burger b::after{transform:translateY(-5px) rotate(-45deg)}

/* ---------- mobile menu ---------- */
.menu{
  position:fixed;
  inset:0;
  z-index:85;
  background:var(--canvas);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  padding:calc(var(--navbar-h) + 12px) var(--gutter-mobile) calc(28px + env(safe-area-inset-bottom));
  opacity:0;
  visibility:hidden;
  transition:opacity var(--dur-slow) var(--ease-standard),visibility var(--dur-slow);
  overflow-y:auto;
  box-sizing:border-box;
}
body.menu-open{overflow:hidden}
body.menu-open .menu{opacity:1;visibility:visible}
.menu__in{
  width:100%;
  max-width:540px;
  display:flex;
  flex-direction:column;
  gap:16px;
  margin-inline:auto;
}
.menu__head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  padding-bottom:14px;
  border-bottom:1px solid var(--hairline);
}
.menu__hgroup{display:flex;flex-direction:column;gap:4px}
.menu__hgroup .eyebrow{margin:0}
.menu__h2{margin:0;font:400 clamp(19px,4.8vw,23px)/1.2 var(--font-sans);letter-spacing:-.02em;color:var(--ink-strong)}
.menu__x{
  display:inline-flex;
  align-items:center;
  gap:6px;
  background:var(--canvas-soft);
  border:1px solid var(--hairline);
  border-radius:8px;
  padding:8px 12px;
  font:600 11px/1 var(--font-mono);
  letter-spacing:.5px;
  text-transform:uppercase;
  color:var(--mute);
  cursor:pointer;
  min-height:36px;
  transition:var(--transition-interactive);
}
.menu__x:hover{color:var(--ink-strong);border-color:var(--hairline-soft);background:var(--canvas-subtle)}
.menu__nav{display:flex;flex-direction:column;gap:10px;width:100%}
.menu__card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:14px 16px;
  border-radius:12px;
  background:var(--canvas-soft);
  border:1px solid var(--hairline);
  color:var(--ink);
  text-decoration:none;
  transition:var(--transition-interactive);
  min-height:58px;
  box-sizing:border-box;
  opacity:0;
  transform:translateY(12px);
  transition:opacity 280ms var(--ease-out),transform 280ms var(--ease-out),border-color var(--transition-interactive),background-color var(--transition-interactive);
}
body.menu-open .menu__card{opacity:1;transform:none}
.menu__card:hover{
  border-color:var(--hairline-soft);
  background:var(--canvas-subtle);
  transform:translateY(-1px);
}
.menu__main{display:flex;align-items:center;gap:14px;min-width:0}
.menu__idx{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:32px;
  height:32px;
  border-radius:8px;
  background:var(--canvas);
  border:1px solid var(--hairline);
  font:600 11px/1 var(--font-mono);
  color:var(--mute);
  letter-spacing:.5px;
  flex:none;
}
.menu__text{display:flex;flex-direction:column;gap:2px;min-width:0}
.menu__title{font:500 16px/1.3 var(--font-sans);color:var(--ink-strong);letter-spacing:-.01em}
.menu__desc{font:400 12.5px/1.35 var(--font-sans);color:var(--body)}
.menu__go{
  font:500 15px/1 var(--font-sans);
  color:var(--mute);
  flex:none;
  transition:var(--transition-interactive);
  padding-left:4px;
}
.menu__card:hover .menu__go{color:var(--primary);transform:translateX(3px)}
.menu__foot{display:flex;flex-direction:column;gap:12px;padding-top:14px;border-top:1px solid var(--hairline);width:100%}
.menu__cta{width:100%;min-height:46px;justify-content:center;font-size:15px;border-radius:8px}
.menu__foot #menuMeta{margin:0;text-align:center;font-size:11.5px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;padding-bottom:0}
.hero__bg{position:absolute;inset:0;z-index:0}
.hero__bg canvas,.hero__bg video{width:100%;height:100%;display:block;object-fit:cover;opacity:0;transition:opacity 900ms var(--ease-out)}
.hero__bg.is-ready canvas,.hero__bg.is-ready video{opacity:1}
.hero__veil{position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom,rgba(16,16,16,.55),rgba(16,16,16,.2) 40%,var(--canvas));pointer-events:none}
.hero__in{position:relative;z-index:3;width:100%;max-width:var(--container-max);margin-inline:auto;padding:0 var(--gutter) 0;display:flex;flex-direction:column;gap:36px;flex:1;justify-content:center;padding-top:var(--navbar-h)}
.hero__mark{width:min(46vw,520px)}
.hero h1{margin:0}
.hero h1 .l{display:block;overflow:hidden}
.hero h1 .l>span{display:block;animation:heroUp 900ms var(--ease-out) both}
@keyframes heroUp{from{transform:translateY(105%)}to{transform:none}}
.hero__row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:32px}
.hero__cta{display:flex;gap:12px;flex-wrap:wrap}
.hero__strip{position:relative;z-index:3;border-top:1px solid var(--hairline)}
.hero__strip .nx-container{display:flex;flex-wrap:wrap;gap:8px 32px;justify-content:space-between;padding-block:16px}
.cue{display:flex;align-items:center;gap:10px}
.cue em{display:block;width:1px;height:28px;background:linear-gradient(var(--primary),transparent);font-style:normal}

/* ---------- generic section ---------- */
.band{position:relative;padding-block:clamp(44px,5.5vw,84px);border-top:1px dashed var(--hairline-dashed)}
.band__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:clamp(24px,3vw,44px)}

/* ---------- manifesto (sticky scene) ---------- */
.scene{position:relative;height:135vh}
.scene__stick{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;overflow:hidden;padding-top:calc(var(--navbar-h) + clamp(16px,2.5vh,32px));padding-bottom:clamp(16px,2.5vh,32px)}
#manifestoScene.scene{height:auto;min-height:0}
#manifestoScene .scene__stick{position:static;height:auto;min-height:0;padding-block:0;display:block}
.manifesto #manifesto{margin:0;font:400 clamp(26px,3.6vw,58px)/1.08 var(--font-sans);letter-spacing:-.03em;color:var(--ink-strong);max-width:16ch}
.manifesto #manifesto span{opacity:.16;transition:opacity 180ms linear}
.manifesto #manifesto span.on{opacity:1}
.manifesto .eyebrow{margin:0 0 clamp(10px,1.8vh,18px)}
.manifesto .lede{margin:clamp(14px,2.2vh,24px) 0 0}

/* ---------- services ---------- */
#services{padding-top:clamp(28px,3.5vw,48px);padding-bottom:clamp(22px,2.8vw,36px)}
#services .band__head{margin-bottom:clamp(16px,2vw,28px)}
.svc{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--hairline);padding-top:18px}
.svc__row{position:relative;display:grid;grid-template-columns:52px minmax(200px,1.2fr) minmax(0,1.5fr) auto auto;align-items:center;gap:24px;padding:22px 24px;border:1px solid var(--hairline);border-radius:14px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);cursor:pointer;outline:none;transition:border-color var(--dur-standard) var(--ease-standard),background-color var(--dur-standard) var(--ease-standard),box-shadow var(--dur-standard) var(--ease-standard),transform var(--dur-standard) var(--ease-standard)}
.svc__row:hover,.svc__row:focus-visible{border-color:var(--hairline-soft);background:var(--canvas-subtle);box-shadow:inset 0 1px 0 rgba(255,255,255,0.05),0 8px 24px rgba(0,0,0,0.35);transform:translateY(-1px)}
.svc__row:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.svc__row:active{transform:translateY(0);background:var(--canvas-soft)}
.svc__idx{display:flex;align-items:center}
.svc__idx .meta{margin:0;font-size:12px;letter-spacing:1px;color:var(--ink-soft);padding:3px 8px;border:1px solid var(--hairline);border-radius:6px;background:rgba(255,255,255,0.02);transition:var(--transition-interactive)}
.svc__row:hover .svc__idx .meta{color:var(--primary);border-color:rgba(0,255,136,0.3)}
.svc__main{display:contents}
.svc__head{display:contents}
.svc__title-wrap{display:contents}
.svc__idx-mob{display:none}
.svc__title{margin:0;font:500 clamp(22px,2.2vw,32px)/1.15 var(--font-sans);letter-spacing:-.025em;color:var(--ink-strong);transition:color var(--dur-fast) var(--ease-standard),transform var(--dur-standard) var(--ease-standard)}
.svc__row:hover .svc__title{color:#fff;transform:translateX(4px)}
.svc__desc{margin:0;color:var(--mute);line-height:1.45;font-size:14px;max-width:54ch}
.svc__tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.tag{padding:4px 9px;border:1px solid var(--hairline);border-radius:9999px;font:400 11px/1 var(--font-mono);letter-spacing:.5px;color:var(--mute);white-space:nowrap;background:rgba(255,255,255,.02);transition:var(--transition-interactive)}
.svc__row:hover .tag{border-color:var(--hairline-soft);color:var(--ink-soft);background:rgba(255,255,255,.04)}
.svc__arrow{display:none}
.svc__side{display:flex;align-items:center;justify-content:flex-end}
.svc__arrow-desk{display:flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid transparent;border-radius:9999px;font:500 11px/1 var(--font-mono);letter-spacing:.6px;text-transform:uppercase;color:var(--mute);transition:var(--transition-interactive)}
.svc__arrow-desk svg{transition:transform var(--dur-fast) var(--ease-standard)}
.svc__row:hover .svc__arrow-desk{color:var(--primary);border-color:rgba(0,255,136,0.25);background:rgba(0,255,136,0.06)}
.svc__row:hover .svc__arrow-desk svg{transform:translateX(3px)}
.svc__peek{position:fixed;z-index:60;width:300px;aspect-ratio:4/3;border:1px solid var(--hairline-soft);border-radius:12px;box-shadow:0 20px 48px rgba(0,0,0,0.7);overflow:hidden;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.96);transition:opacity var(--dur-slow) var(--ease-standard),transform var(--dur-slow) var(--ease-standard);background:#0c0d10}
.svc__peek.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.svc__peek img,.svc__peek video{width:100%;height:100%;object-fit:cover;display:block}

/* ---------- media slot ---------- */
.slot{position:relative;background:var(--canvas-soft);border-radius:8px;overflow:hidden;display:flex;align-items:flex-end;padding:14px}
.slot::before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,rgba(184,179,176,.055) 0 1px,transparent 1px 9px);pointer-events:none}
.slot--dashed{border:1px dashed var(--hairline-dashed)}
.slot img,.slot video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.slot__label{position:relative;font:400 11px/14px var(--font-mono);color:var(--mute);letter-spacing:.4px}

/* ---------- work rail ---------- */
.rail{position:relative;border-top:1px dashed var(--hairline-dashed);padding-block:clamp(48px,6vw,84px);overflow:hidden}
.rail__stick{display:flex;flex-direction:column;gap:clamp(20px,2.5vw,36px);width:100%}
.rail__view{overflow:hidden;padding-inline:var(--gutter);width:100%;box-sizing:border-box;cursor:grab;user-select:none;-webkit-user-select:none;touch-action:pan-y;scrollbar-width:none;-ms-overflow-style:none}
.rail__view::-webkit-scrollbar{display:none}
.rail__view.is-dragging{cursor:grabbing}
.rail__view.is-dragging *{cursor:grabbing;pointer-events:none}
.rail__track{display:flex;gap:24px;width:max-content;align-items:stretch;will-change:transform}
.card{flex:0 0 clamp(330px,28vw,390px);overflow:hidden;border:1px solid var(--hairline);border-radius:14px;padding:16px 16px 18px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);display:flex;flex-direction:column;gap:12px;transition:border-color var(--dur-standard) var(--ease-standard),box-shadow var(--dur-standard) var(--ease-standard),background-color var(--dur-standard) var(--ease-standard)}
.card:hover{border-color:var(--hairline-soft);background:var(--canvas-subtle);box-shadow:inset 0 1px 0 rgba(255,255,255,0.05),0 12px 28px rgba(0,0,0,0.45),var(--shadow-hover)}
.card .slot{aspect-ratio:4/3;height:100%;width:100%;padding:0}
.card__vis{position:relative;overflow:hidden;border-radius:10px;border:1px solid rgba(255,255,255,0.06);width:100%;aspect-ratio:4/3;flex:0 0 auto;min-height:220px;max-height:none;background:#0c0d10}
.stamp{position:absolute;left:10px;bottom:10px;padding:4px 9px;border:1px solid var(--hairline);border-radius:9999px;background:rgba(12,14,18,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);letter-spacing:1.2px;text-transform:uppercase;font:500 10px/1 var(--font-mono);color:var(--ink-soft);box-shadow:0 2px 8px rgba(0,0,0,.5);z-index:5}
.card .slot img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform var(--dur-slow) var(--ease-standard)}
.card:hover .slot img{transform:scale(1.03)}
.card h3{margin:0;font:500 clamp(19px,1.5vw,22px)/1.2 var(--font-sans);letter-spacing:-.02em;color:var(--ink-strong);flex:0 0 auto}
.card>p.nx-body-sm{flex:0 0 auto;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--mute);line-height:1.45;font-size:13.5px}
.card__book,.card__meta,.card>p.meta{flex:0 0 auto}
.card__meta{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--hairline);padding-top:10px}
.card__book{width:100%;justify-content:center;border-radius:8px;font-size:13px;font-weight:500;min-height:40px;height:40px}
.card__book:hover{border-color:var(--primary);color:var(--ink-strong)}

/* ---------- booking & calendar ---------- */
#booking{width:100%;max-width:640px;margin:24px auto 0}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal i{display:flex;flex-direction:column;justify-content:space-between;gap:6px;min-height:54px;padding:6px;border:1px solid var(--hairline);border-radius:4px;font-style:normal;overflow:hidden}
.cal .cal__h{min-height:0;border:0;padding:2px 4px;font:500 10px/14px var(--font-mono);letter-spacing:1px;text-transform:uppercase;color:var(--mute)}
.cal b{font:400 10px/12px var(--font-mono);font-weight:400;color:var(--mute)}
.cal em{font:500 9px/12px var(--font-mono);letter-spacing:.5px;text-transform:uppercase;font-style:normal;color:var(--body);overflow:hidden;text-overflow:ellipsis}
.cal .is-off{border-style:dashed;border-color:var(--hairline-dashed)}
.cal .is-empty{border:0;min-height:0}
.cal .is-light em{color:var(--mute)}
.cal .is-mid{background:var(--canvas-soft)}
.cal .is-strong{background:var(--canvas-soft);border-color:var(--hairline-soft)}
.cal .is-strong em,.cal .is-feature em{color:var(--ink-strong)}
.cal .is-feature{border:2px solid var(--primary);padding:5px}
.callegend{display:flex;flex-wrap:wrap;gap:8px 16px}
.callegend span{display:inline-flex;align-items:center;gap:6px}
.callegend i{display:block;width:10px;height:10px;border-radius:2px;border:1px solid var(--hairline)}
.callegend .is-mid,.callegend .is-strong{background:var(--canvas-soft)}
.callegend .is-strong{border-color:var(--hairline-soft)}
.callegend .is-feature{border:2px solid var(--primary)}
.callegend .is-light{border-style:dashed;border-color:var(--hairline-dashed)}
.slot--reserved{align-items:center;justify-content:center;text-align:center}
.slot--reserved .slot__label{line-height:18px}
.panel{border:1px solid var(--hairline);border-radius:14px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);padding:clamp(20px,2.5vw,28px);display:flex;flex-direction:column;gap:16px;margin-top:24px;transition:border-color var(--dur-slow) var(--ease-standard),box-shadow var(--dur-slow) var(--ease-standard)}
.panel__head{display:flex;justify-content:space-between;align-items:center}
.spark{width:100%;height:44px;display:block}

/* ---------- nexus ---------- */
.nexus{position:relative;min-height:clamp(420px,50vh,560px);display:grid;place-items:center}
.nexus canvas{position:absolute;inset:0;width:100%;height:100%}
.nexus__grid{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,4vw,64px);max-width:900px;width:100%}
.node{border:1px solid var(--hairline);border-radius:8px;background:var(--canvas);padding:20px;display:flex;flex-direction:column;gap:8px}
.node b{font:400 22px/1.2 var(--font-sans);letter-spacing:-.02em;color:var(--ink-strong)}
.node p{margin:0;font-size:14px;line-height:20px}

/* ---------- about ---------- */
.about{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(32px,5vw,88px);align-items:end}
.about__eyebrow{margin-bottom:clamp(16px,2vw,22px)}
.about__title{max-width:22ch}
.about__lede{margin-top:clamp(18px,2.5vw,26px)}

/* ---------- future ---------- */
.future{position:relative;overflow:hidden}
.marquee{display:flex;gap:clamp(24px,4vw,64px);white-space:nowrap;will-change:transform;align-items:center}
.marquee span{font:400 clamp(40px,7vw,110px)/1 var(--font-sans);letter-spacing:-.035em;color:var(--ink-strong)}
.marquee em{width:8px;height:8px;background:var(--primary);transform:rotate(45deg);flex:0 0 auto;font-style:normal}
.futuregrid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-top:clamp(24px,3vw,44px)}
.futuregrid div{border:1px solid var(--hairline);border-radius:12px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);padding:clamp(16px,2vw,22px);min-height:136px;display:flex;flex-direction:column;justify-content:space-between;gap:20px;transition:var(--transition-interactive)}
.futuregrid div:hover{border-color:var(--hairline-soft);background:var(--canvas-subtle);box-shadow:inset 0 1px 0 rgba(255,255,255,0.04),var(--shadow-hover)}
.futuregrid div:active{transform:translateY(1px)}
.futuregrid .meta{font:500 11px/1 var(--font-mono);letter-spacing:1px;color:var(--mute);margin:0;transition:var(--transition-interactive)}
.futuregrid div:hover .meta{color:var(--primary);opacity:1}
.futuregrid b{font:400 clamp(15px,1.2vw,17px)/1.35 var(--font-sans);letter-spacing:-.015em;color:var(--ink);margin:0;transition:var(--transition-interactive)}
.futuregrid div:hover b{color:var(--ink-strong)}

/* ---------- cta / contact ---------- */
.cta{text-align:left;padding-block:clamp(48px,6vw,96px);scroll-margin-top:calc(var(--navbar-h) + 20px)}
.cta__card{border:1px solid var(--hairline);border-radius:16px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);padding:clamp(28px,5vw,60px);display:flex;flex-direction:column;gap:clamp(16px,2.5vw,28px);transition:var(--transition-interactive)}
.cta__card:hover{border-color:var(--hairline-soft);background:var(--canvas-subtle);box-shadow:inset 0 1px 0 rgba(255,255,255,0.04),var(--shadow-hover)}
.cta__eyebrow{margin:0}
.cta__title{margin:0;max-width:18ch}
.cta__lede{margin:0;max-width:54ch}
.cta__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.btn--secondary{border-color:var(--hairline);background:rgba(255,255,255,0.02);color:var(--ink-strong);box-shadow:inset 0 1px 0 rgba(255,255,255,0.02)}
.btn--secondary:hover{border-color:var(--hairline-soft);background:rgba(255,255,255,0.05);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,0.04),var(--shadow-hover)}
.foot{border-top:1px solid var(--hairline);padding-block:32px}
.foot__in{display:flex;flex-wrap:wrap;gap:20px 40px;justify-content:space-between;align-items:center}
.foot img{height:14px;width:auto;opacity:.9}
@media (max-width:767px){
  .foot__in{flex-direction:column;align-items:flex-start;gap:14px}
}

/* ---------- social / contact (glassmorphism) ---------- */
.connect{position:relative;padding-block:clamp(48px,6vw,96px);border-top:1px dashed var(--hairline-dashed)}
.connect__head{margin-bottom:clamp(28px,3.5vw,44px);display:flex;flex-direction:column;gap:12px}
.connect__title{margin:0;max-width:18ch;letter-spacing:-.03em}
.connect__lede{margin:0;max-width:54ch}
.connect__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.glass-card{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:24px;padding:clamp(22px,2.5vw,30px);border-radius:16px;background:rgba(20,20,24,0.65);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,0.07);box-shadow:inset 0 1px 0 rgba(255,255,255,0.04),var(--shadow-card);text-decoration:none;color:inherit;transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-standard),background-color var(--dur-base) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard)}
.glass-card:hover{transform:translateY(-3px);background:rgba(26,26,32,0.85);border-color:rgba(0,217,146,0.32);box-shadow:inset 0 1px 0 rgba(255,255,255,0.08),0 16px 36px rgba(0,0,0,0.45),0 0 20px rgba(0,217,146,0.06)}
.glass-card:active{transform:translateY(-1px)}
.glass-card__top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.glass-card__icon{width:42px;height:42px;border-radius:10px;background:rgba(255,255,255,0.035);border:1px solid rgba(255,255,255,0.07);display:grid;place-items:center;color:var(--ink-strong);transition:background-color var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard),color var(--dur-base) var(--ease-standard)}
.glass-card:hover .glass-card__icon{background:rgba(0,217,146,0.08);border-color:rgba(0,217,146,0.25);color:var(--primary)}
.glass-card__top .meta{letter-spacing:1.2px;text-transform:uppercase;color:var(--mute);transition:color var(--dur-base) var(--ease-standard)}
.glass-card:hover .glass-card__top .meta{color:var(--ink)}
.glass-card__body{display:flex;flex-direction:column;gap:10px}
.glass-card__val{margin:0;font:500 clamp(17px,1.35vw,20px)/1.2 var(--font-sans);letter-spacing:-.015em;color:var(--ink-strong)}
.glass-card__action{font:500 13px/1.3 var(--font-sans);color:var(--mute);display:inline-flex;align-items:center;gap:6px;transition:color var(--dur-base) var(--ease-standard)}
.glass-card__arrow{display:inline-block;transition:transform var(--dur-base) var(--ease-out)}
.glass-card:hover .glass-card__action{color:var(--primary)}
.glass-card:hover .glass-card__arrow{transform:translateX(4px)}

@media (max-width:767px){
  .connect__grid{grid-template-columns:1fr;gap:14px}
  .glass-card{padding:20px;gap:20px;border-radius:14px}
}
@media (max-width:479px){
  .connect{padding-block:clamp(36px,5vw,56px)}
  .glass-card__val{font-size:16.5px}
}
@media (prefers-reduced-motion:reduce){
  .glass-card,.glass-card:hover,.glass-card__arrow{transform:none!important}
}




/* ---------- auth overlay ---------- */
/* Same full-screen overlay pattern as the mobile menu: opaque canvas, hairline
   panel, no blur and no gradient. */
.auth{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:calc(var(--navbar-h) + 16px) var(--gutter) 32px;background:rgba(16,16,16,.96);opacity:0;visibility:hidden;transition:opacity var(--dur-slow) var(--ease-standard);overflow-y:auto}
body.auth-open{overflow:hidden}
body.auth-open .auth{opacity:1;visibility:visible}
.auth__panel{position:relative;width:100%;max-width:448px;border:1px solid var(--hairline);border-radius:14px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);padding:clamp(24px,4vw,32px);display:flex;flex-direction:column;gap:16px;transform:translateY(10px);transition:transform var(--dur-slow) var(--ease-out)}
body.auth-open .auth__panel{transform:none}
.auth__close{position:absolute;top:12px;right:12px;width:36px;height:36px;display:grid;place-items:center;background:rgba(255,255,255,.015);border:1px solid transparent;border-radius:8px;color:var(--mute);cursor:pointer;font:400 18px/1 var(--font-sans);transition:var(--transition-interactive)}
.auth__close:hover{color:var(--ink-strong);border-color:var(--hairline-soft);background:rgba(255,255,255,.05)}
.auth__close:active{transform:translateY(1px)}
.auth__close:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.auth__panel h2{margin:0}
.auth__lede{font-size:15px;line-height:1.55;max-width:none;margin:0}
.auth__form{display:flex;flex-direction:column;gap:14px;margin-top:4px}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font:500 13px/1.3 var(--font-sans);color:var(--ink)}
.field__hint{font:400 11px/1 var(--font-mono);color:var(--mute);letter-spacing:.4px}
.field__wrap{position:relative;display:flex}
.field input{flex:1;min-height:var(--touch-min);padding:12px 14px;background:var(--canvas);border:1px solid var(--hairline);border-radius:8px;color:var(--ink-strong);font:400 15px/1.2 var(--font-sans);box-shadow:inset 0 1px 2px rgba(0,0,0,.3);transition:var(--transition-interactive)}
.field input:hover{border-color:var(--hairline-soft)}
.field input:focus{outline:none;border-color:var(--primary-soft);box-shadow:var(--focus-ring),inset 0 1px 2px rgba(0,0,0,.3)}
.field input[aria-invalid="true"]{border-color:rgba(255,85,85,0.96)}
.field input::placeholder{color:var(--mute)}
.field__peek{position:absolute;right:6px;top:50%;transform:translateY(-50%);height:34px;padding:0 12px;background:rgba(255,255,255,.02);border:1px solid var(--hairline);border-radius:6px;color:var(--mute);font:500 11px/1 var(--font-mono);letter-spacing:.6px;text-transform:uppercase;cursor:pointer;transition:var(--transition-interactive)}
.field__peek:hover{color:var(--ink);border-color:var(--hairline-soft);background:rgba(255,255,255,.05)}
.field__peek:active{transform:translateY(calc(-50% + 1px))}
.field__peek:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.field__err{margin:2px 0 0;min-height:0;font:400 12px/16px var(--font-sans);color:rgba(255,85,85,0.96)}
.field__err:empty{display:none}
.auth__msg{margin:2px 0 0;font:400 13px/18px var(--font-sans);color:rgba(255,85,85,0.96)}
.auth__msg:empty{display:none}
.auth__msg.is-ok{color:var(--primary)}
.auth__submit{justify-content:center;width:100%;margin-top:2px}
.auth__submit[disabled]{opacity:.6;cursor:default}
.auth__submit.is-busy span::after{content:"";display:inline-block;width:4px;height:4px;margin-left:8px;border-radius:9999px;background:currentColor;animation:authPulse 900ms steps(3,end) infinite}
@keyframes authPulse{0%{opacity:.25}50%{opacity:1}100%{opacity:.25}}
.auth__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;padding-top:16px;border-top:1px solid var(--hairline)}
.auth__foot .meta{white-space:nowrap}
.auth__link{background:none;border:0;padding:0;color:var(--body);font:500 13px/1.3 var(--font-sans);cursor:pointer;white-space:nowrap;text-decoration:underline;text-decoration-color:var(--hairline-soft);text-underline-offset:3px;transition:var(--transition-interactive)}
.auth__link:hover{color:var(--ink-strong);text-decoration-color:var(--ink-strong)}
.auth__link:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:2px}
.auth__out{background:none;border:0;padding:8px 4px;color:var(--mute);font:400 12px/1 var(--font-mono);letter-spacing:.6px;cursor:pointer;transition:var(--transition-interactive)}
.auth__out:hover{color:var(--ink-strong)}
.auth__out:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:2px}
.auth__social{display:flex;flex-direction:column;width:100%;margin-top:2px}
.auth__google-wrap{position:relative;width:100%;display:flex;justify-content:center;align-items:center;overflow:visible;transition:var(--transition-interactive)}
.auth__google-wrap:hover{transform:translateY(-1px)}
.auth__google-wrap:active{transform:translateY(0)}
.auth__google-slot{width:100%;display:flex;justify-content:center;align-items:center;overflow:visible}
.auth__google-slot>div{margin:0 auto!important;overflow:visible!important}
.auth__google-slot iframe{max-width:none!important;display:block!important}
.auth__divider{position:relative;display:flex;align-items:center;justify-content:center;margin:18px 0 14px}
.auth__divider::before{content:"";position:absolute;inset:0;top:50%;height:1px;background:var(--hairline)}
.auth__divider span{position:relative;background:var(--canvas-soft);padding:0 14px;font:500 11px/1 var(--font-mono);letter-spacing:.8px;text-transform:uppercase;color:var(--mute)}
#authSlot{display:flex;align-items:center;gap:10px}
/* Mobile header auth — visible without opening the menu. */
#authSlotBar{display:none;align-items:center;gap:8px}
@media (max-width:1023px){
  #authSlotBar{display:flex;gap:8px}
  .nav__in{gap:12px;padding-inline:var(--gutter-mobile)}
  .nav__right{gap:8px;flex:0 0 auto}
}
/* Create account moves into the menu overlay once the header gets tight.
   Login stays in the header at every width, including 320px. */
@media (max-width:479px){#authSlotBar #authRegBar{display:none}}
@media (max-width:359px){#authSlotBar .btn--sm{padding:11px 10px}.nav__in{gap:8px}}
#authSlotMobile{display:flex;flex-direction:column;gap:10px}
@media (max-width:1023px){#authSlot{display:none}}
@media (min-width:1024px){#authSlotMobile{display:none}}
@media (max-width:767px){
  .auth{padding:calc(var(--navbar-h) + 8px) 16px 24px;place-items:start center}
  .auth__panel{max-width:none;padding:22px 18px;border-radius:14px;gap:14px}
  .auth__foot{flex-direction:column;align-items:flex-start;gap:12px}
}
@media (prefers-reduced-motion:reduce){
  .rail__stick{position:static;height:auto;padding-block:clamp(48px,7vw,88px)}
  .rail__view{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .auth,.auth__panel{transition:none}
  .auth__submit.is-busy span::after{animation:none}
}

/* ---------- booking ---------- */
.book{position:fixed;inset:0;z-index:130;display:grid;place-items:center;padding:calc(var(--navbar-h) + 16px) var(--gutter) 32px;background:rgba(16,16,16,.96);opacity:0;visibility:hidden;transition:opacity var(--dur-slow) var(--ease-standard);overflow-y:auto}
body.book-open{overflow:hidden}
body.book-open .book{opacity:1;visibility:visible}
.book__panel{position:relative;width:100%;max-width:560px;border:1px solid var(--hairline);border-radius:14px;background:var(--canvas-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,0.03),var(--shadow-card);padding:clamp(22px,3vw,32px);display:flex;flex-direction:column;gap:18px}
.book__panel h2{margin:0}
.book__ctx{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.book__ctx label{white-space:nowrap}
.book__svc{flex:1 1 160px;min-height:42px;padding:9px 12px;background:var(--canvas);border:1px solid var(--hairline);border-radius:8px;color:var(--ink);font:400 14px/1.2 var(--font-sans);cursor:pointer;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--mute) 50%),linear-gradient(135deg,var(--mute) 50%,transparent 50%);background-position:calc(100% - 16px) 18px,calc(100% - 11px) 18px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px;box-shadow:inset 0 1px 2px rgba(0,0,0,.3);transition:var(--transition-interactive)}
.book__svc:hover{border-color:var(--hairline-soft)}
.book__svc:focus{outline:none;border-color:var(--primary-soft);box-shadow:var(--focus-ring),inset 0 1px 2px rgba(0,0,0,.3)}
.book__hint{margin:12px 0 0;color:var(--mute);font-size:12.5px}
.book__month-note{margin:0;color:var(--mute);font-size:12px;letter-spacing:.3px}
.book__sel{margin:14px 0 10px;color:var(--body);font-size:12.5px}
#booking{scroll-margin-top:80px;transition:border-color var(--dur-slow) var(--ease-standard),box-shadow var(--dur-slow) var(--ease-standard)}
#booking.is-cued{border-color:var(--primary);box-shadow:0 0 20px rgba(0,255,136,0.18)}
.book__calhead{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--hairline);padding-top:16px;margin-top:4px}
.book__nav{display:flex;gap:8px}
.book__nav button{width:36px;height:36px;background:rgba(255,255,255,0.02);border:1px solid var(--hairline);border-radius:8px;color:var(--ink);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:var(--transition-interactive);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.book__nav button:hover{border-color:var(--hairline-soft);color:var(--ink-strong);background:rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.035),var(--shadow-hover)}
.book__nav button:active{transform:translateY(1px)}
.book__nav button:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.book__cal{gap:5px}
.book__cal .cal__c{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;aspect-ratio:1;min-height:42px;padding:0;background:rgba(255,255,255,0.015);border:1px solid var(--hairline);border-radius:6px;color:var(--body);font:inherit;cursor:pointer;transition:var(--transition-interactive)}
.book__cal .cal__c b{font:400 13px/1 var(--font-mono)}
.book__cal .cal__c em{font:500 9px/1 var(--font-mono);font-style:normal;color:var(--primary)}
.book__cal .cal__c.is-open:hover{border-color:var(--hairline-soft);color:var(--ink-strong);background:rgba(255,255,255,.05);box-shadow:0 0 12px rgba(0,255,136,0.12)}
.book__cal .cal__c.is-sel{border-color:var(--primary);color:var(--ink-strong);background:var(--primary-tint-08);box-shadow:0 0 12px var(--glow-primary)}
.book__cal .cal__c.is-off{opacity:.28;cursor:not-allowed;border-style:dashed;background:none}
.book__cal .cal__c.is-empty{border:0;cursor:default;background:none}
.book__cal .cal__c:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.book__slots{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.book__slot{min-height:44px;padding:10px 16px;background:var(--canvas);border:1px solid var(--hairline);border-radius:8px;color:var(--ink);font:400 14px/1 var(--font-mono);cursor:pointer;transition:var(--transition-interactive);box-shadow:inset 0 1px 0 rgba(255,255,255,.02)}
.book__slot:hover{border-color:var(--hairline-soft);color:var(--ink-strong);background:rgba(255,255,255,.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.035),var(--shadow-hover)}
.book__slot.is-sel{border-color:var(--primary);color:var(--ink-strong);background:var(--primary-tint-08);box-shadow:0 0 12px var(--glow-primary)}
.book__slot:active{transform:translateY(1px)}
.book__slot:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.book__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--hairline);padding-top:16px}
.book__note{margin:0;font:400 14px/20px var(--font-sans);color:var(--body)}
.book__empty{display:flex;flex-direction:column;gap:10px;align-items:flex-start;border:1px dashed var(--hairline-dashed);border-radius:8px;padding:20px;background:rgba(255,255,255,.01)}
.book__sum{margin:0;display:flex;flex-direction:column;gap:0}
.book__sum div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--hairline);transition:var(--transition-interactive)}
.book__sum div:hover{border-bottom-color:var(--hairline-soft)}
.book__sum dt{margin:0;font:400 12px/16px var(--font-mono);color:var(--mute)}
.book__sum dd{margin:0;font:400 14px/16px var(--font-sans);color:var(--ink-strong);text-align:right}
@media (max-width:767px){
  .book{padding:calc(var(--navbar-h) + 8px) 16px 24px;place-items:start center}
  .book__panel{padding:20px 16px;gap:14px}
  .book__cal{gap:4px}
  .book__cal .cal__c{min-height:42px}
  .book__cal .cal__c b{font-size:12px}
  .book__slot{flex:1 1 calc(50% - 4px);min-width:0;text-align:center}
  .book__ctx{flex-direction:column;align-items:stretch;gap:6px}
  .book__svc{flex:0 0 auto}
  .book__foot .btn{width:100%;justify-content:center}
}

/* ---------- reveal ---------- */
[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out)}
[data-reveal].in{opacity:1;transform:none}

/* ---------- responsive ---------- */
@media (max-width:1023px){
  .nav__links,.nav__right>.btn{display:none}
  .burger{display:flex}
  .svc{gap:10px;padding-top:16px}
  .svc__row{display:grid;grid-template-columns:40px minmax(0,1fr);gap:8px 16px;padding:18px 20px;border-radius:12px}
  .svc__idx{display:flex;align-items:flex-start;padding-top:2px}
  .svc__main{display:flex;flex-direction:column;gap:8px;grid-column:2}
  .svc__head{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .svc__title-wrap{display:flex;align-items:center;gap:10px}
  .svc__idx-mob{display:none}
  .svc__title{font-size:22px;line-height:1.2}
  .svc__row:hover .svc__title{transform:none}
  .svc__desc{font-size:13.5px;line-height:1.45;max-width:54ch}
  .svc__tags{justify-content:flex-start;gap:6px}
  .svc__side{display:none}
  .svc__arrow{display:inline-flex;align-items:center;gap:6px;font:500 11px/1 var(--font-mono);letter-spacing:.6px;text-transform:uppercase;color:var(--mute);padding:4px 8px;border-radius:6px;border:1px solid var(--hairline);background:rgba(255,255,255,0.02);flex-shrink:0}
  .svc__row:active .svc__arrow,.svc__row:hover .svc__arrow{color:var(--primary);border-color:rgba(0,255,136,0.3);background:rgba(0,255,136,0.06)}
  #booking{width:100%;max-width:520px;margin-inline:auto}
  .about{grid-template-columns:1fr;align-items:start;gap:clamp(28px,4vw,40px)}
  .futuregrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:clamp(20px,3vw,32px)}
  .futuregrid div{min-height:112px;padding:16px}
  .nexus{min-height:0;padding-block:0}
  .nexus__grid{grid-template-columns:1fr;gap:12px;max-width:520px}
  .scene{height:120vh}
  .rail__view{padding-inline:var(--gutter-mobile)}
}
@media (min-width:768px) and (max-width:1023px){
  .card{flex:0 0 clamp(320px,42vw,380px)}
  .card__vis{aspect-ratio:4/3;min-height:200px;max-height:none}
}
@media (max-width:767px){
  /* Short copy does not need a full sticky screen plus excessive runway. */
  .scene{height:105vh}
  #intro .scene__stick{justify-content:flex-start;padding-top:calc(var(--navbar-h) + 16px);padding-bottom:12px}
  .rail{padding-block:clamp(36px,5vw,52px)}
  .rail__stick{gap:16px}
  #services{padding-top:18px;padding-bottom:14px}
  #services .band__head{margin-bottom:12px}
  .band{padding-block:clamp(28px,4.5vw,40px)}
  .band__head{margin-bottom:16px}
  .hero__in{gap:20px}
  .hero__mark{width:78vw}
  .svc{gap:8px;padding-top:8px}
  .svc__row{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:12px;min-height:48px}
  .svc__idx{display:none}
  .svc__main{display:flex;flex-direction:column;gap:6px}
  .svc__head{display:flex;align-items:center;justify-content:space-between;gap:10px}
  .svc__title-wrap{display:flex;align-items:center;gap:10px}
  .svc__idx-mob{display:inline-block;font-size:11px;letter-spacing:1px;color:var(--primary);padding:3px 7px;border:1px solid rgba(0,255,136,0.25);border-radius:6px;background:rgba(0,255,136,0.05)}
  .svc__title{font-size:19px;line-height:1.2}
  .svc__desc{font-size:13px;line-height:1.45}
  .svc__tags{gap:5px}
  .tag{padding:3.5px 8px;font-size:10.5px}
  .svc__arrow-txt{display:none}
  .svc__arrow{padding:6px;border-radius:9999px}
  .about{gap:18px}
  .about__eyebrow{margin-bottom:10px}
  .about__lede{margin-top:12px}
  .futuregrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:16px}
  .futuregrid div{padding:12px;min-height:94px;gap:10px;border-radius:10px}
  .futuregrid .meta{font-size:10px}
  .futuregrid b{font-size:13px;line-height:1.3}
  .cta__card{padding:22px 18px;border-radius:14px;gap:14px}
  .cta__actions{flex-direction:column;align-items:stretch;gap:10px}
  .cta__actions .btn{width:100%;justify-content:center}
  #booking{max-width:100%}
  .book{padding:calc(var(--navbar-h) + 8px) 16px 24px;place-items:start center}
  .book__panel{padding:20px 16px;gap:14px;border-radius:12px}
  .book__cal{gap:4px}
  .book__cal .cal__c{min-height:42px;border-radius:5px}
  .book__cal .cal__c b{font-size:12.5px}
  .book__slot{flex:1 1 calc(50% - 4px);min-width:0;text-align:center}
  .book__ctx{flex-direction:column;align-items:stretch;gap:6px}
  .book__svc{flex:0 0 auto;width:100%}
  .book__foot .btn{width:100%;justify-content:center}
  .cal i{min-height:46px}
  .cal em{font-size:8px;letter-spacing:.3px}
  .card{flex:0 0 80vw;max-width:320px;padding:14px;gap:10px;border-radius:14px}
  .card__vis{aspect-ratio:4/3;min-height:160px;max-height:none;border-radius:8px}
  .rail__track{gap:14px}
}
@media (prefers-reduced-motion:reduce){
  .rail__view{overflow-x:auto;-webkit-overflow-scrolling:touch}
  html{scroll-behavior:auto}
  [data-reveal]{opacity:1;transform:none}
  .hero h1 .l>span{animation:none;transform:none}
  .manifesto #manifesto span{opacity:1}
}

/* ================= header + hero polish =================
   Alignment and rhythm only. No colour, type family, logo size, hero
   composition, canvas background, accent or label is changed, and no selector
   used by auth.js or the menu toggle is touched. */

/* ---- desktop: one consistent control height across the header ---- */
.nav__right .btn,.nav__right .btn--sm,#authSlot .btn,#authSlotBar .btn{min-height:38px;padding-block:0;align-items:center}
.nav__in{gap:32px}
.nav__links{gap:26px}
/* The signed-in link stays quieter than the primary CTA beside it. */
#authSlot .btn--ghost{font-weight:500;color:var(--body)}
#authSlot .btn--ghost:hover{color:var(--ink-strong)}
.auth__out{align-self:center}

@media (max-width:1023px){
  /* ---- mobile header: compact, aligned, nothing clipped ---- */
  .nav__in{gap:10px;align-items:center}
  .nav__right{gap:8px;align-items:center}
  #authSlotBar .btn{min-height:38px;padding-inline:13px;font-size:13.5px;border-radius:8px;white-space:nowrap}
  .burger{width:42px;height:42px;border-radius:8px;flex:none}
  .brand img{height:14px}

  /* ---- mobile hero: tighter pairs, air before the actions ---- */
  .hero__in{gap:0;padding-top:calc(var(--navbar-h) + 8px)}
  .hero__mark{margin-bottom:18px}
  .hero h1{margin-bottom:16px}
  .hero__row{gap:20px;align-items:stretch}
  .hero__row .lede{margin:0}
  .hero__cta{gap:10px;width:100%;margin-top:4px}
  .hero__cta .btn{flex:1 1 auto;justify-content:center;min-height:46px}

  /* ---- bottom strip: a deliberate two-up block, not a long stack ---- */
  .hero__strip .nx-container{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;padding-block:14px}
  .hero__strip .cue{grid-column:1 / -1;justify-content:flex-start}
  .hero__strip .cue em{height:20px}
}

@media (max-width:479px){
  .hero__cta .btn{flex:1 1 100%}
  .hero__strip .nx-container{grid-template-columns:1fr;gap:6px}
  .panel{padding:14px 12px;max-width:100%;box-sizing:border-box}
  .book__cal .cal__c{min-height:36px}
  .book__cal .cal__c b{font-size:11px}
  .book__cal .cal__c em{font-size:7.5px}
  .book__nav button{width:30px;height:30px}
}

@media (max-width:359px){
  .brand img{height:13px}
  .burger{width:38px;height:38px}
  .panel{padding:12px 8px}
  .book__cal{gap:2px}
  .book__cal .cal__c{min-height:32px;border-radius:4px}
  .book__cal .cal__c b{font-size:10px}
  .book__cal .cal__c em{display:none}
}

/* ================= narrow phone corrections =================
   Two real defects, fixed at the source rather than patched over.

   1. The strip's items are <p class="meta"> and there is no global paragraph
      reset in this stylesheet, so each one carries the browser default ~1em
      top and bottom margin. In the original flex ROW they sat side by side and
      it never showed. Once they stacked in a single column those margins
      became ~32px of dead space per item on top of the grid gap — the large
      empty separation reported at 360-390px. Zeroing the margin lets gap alone
      control the rhythm.

   2. The desktop CTA was reappearing on mobile (see the display fix above),
      which is what pushed the header past the viewport. */

/* The strip sizes to its content and nothing else. */
.hero__strip p{margin:0}
.hero__strip .nx-container>*{margin:0}

@media (max-width:1023px){
  /* Belt and braces: the desktop CTA stays in the burger menu on mobile, and
     no later rule can revive it. */
  .nav__right>.btn{display:none!important}
  .nav__in{min-width:0}
  .brand{min-width:0}
}

@media (max-width:414px){
  /* One compact block. Four visible items, tight but not cramped. */
  .hero__strip .nx-container{grid-template-columns:1fr;gap:4px;padding-block:12px}
  .hero__strip .meta{font-size:11.5px;line-height:1.45}
  .hero__strip .cue{gap:8px;margin-top:2px}
  .hero__strip .cue em{height:14px}

  /* Give the hero its space back without shrinking the mark. */
  .hero__in{padding-top:calc(var(--navbar-h) + 4px);padding-bottom:4px}
  .hero__mark{margin-bottom:14px}
  .hero h1{margin-bottom:12px}
  .hero__row{gap:16px}

  /* Header: nothing may push past the edge. */
  .nav__in{gap:8px}
  .nav__right{gap:6px}
  #authSlotBar .btn{padding-inline:12px;font-size:13.5px}
}

@media (max-width:359px){
  .hero__strip .nx-container{padding-block:10px}
  .hero__strip .meta{font-size:11px}
  #authSlotBar .btn{padding-inline:10px;font-size:13px}
  .nav__in{gap:6px}
}
