/* TEMP: x.ai font for design matching. Proprietary; replace before public launch. */
@font-face{font-family:xVf;src:url(assets/fonts/xai/XVF_Variable.woff2) format("woff2");font-weight:200 800;font-display:swap}
@font-face{font-family:"xGeist Mono";src:url(assets/fonts/xai/GeistMono_Variable.woff2) format("woff2");font-weight:100 900;font-display:swap}

/* ---------- tokens ---------- */
:root{
  --bg:#070a08;--ink:#fff;--ink-2:rgba(255,255,255,.88);--ink-3:rgba(255,255,255,.72);--acc:#82e1ce;
  --sans:xVf,system-ui,sans-serif;--mono:"xGeist Mono",ui-monospace,monospace;
  /* motion: one calm curve family */
  --out:cubic-bezier(.16,1,.3,1);--io:cubic-bezier(.65,0,.35,1);
  --t-fast:.25s;--t-mid:.6s;--t-slow:1.2s;--t-settle:1.8s;
  /* layout: one left edge shared with the nav logo (capsule inset 12 + padding 18) */
  --edge:max(30px,calc((100vw - 1232px)/2 + 18px));
  --rim:rgba(255,255,255,.16);--hi:rgba(255,255,255,.24);
  --glass:rgba(24,32,30,.5);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--bg)}
body{background:var(--bg);color:var(--ink);font:400 16px/1.5 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.mk{display:block;width:auto;object-fit:contain}

/* shared mono label (eyebrow, nav, buttons, footer) */
.eyebrow,.links a,.pill,.btn,.sec,.foot,.cx label{font:500 11px/16px var(--mono);letter-spacing:.2em;text-transform:uppercase}

/* ---------- film layer: grade (shade), one fixed grain ---------- */
.shade{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(130% 100% at 50% 45%,rgba(0,0,0,0) 52%,rgba(0,0,0,.42) 100%),
    linear-gradient(180deg,rgba(5,8,7,.42) 0,rgba(5,8,7,0) 20%,rgba(5,8,7,0) 38%,rgba(5,8,7,.5) 72%,rgba(5,8,7,.84) 100%),
    linear-gradient(0deg,rgba(54,32,10,.16),rgba(54,32,10,.16)),
    linear-gradient(0deg,rgba(5,8,7,.2),rgba(5,8,7,.2))}
.grain{position:fixed;inset:-60px;z-index:40;pointer-events:none;background:url(assets/grain-a.png) repeat;background-size:200px;opacity:.1;animation:grain .8s steps(1) infinite}
@keyframes grain{0%{transform:translate3d(0,0,0)}20%{transform:translate3d(-24px,18px,0)}40%{transform:translate3d(20px,-30px,0)}60%{transform:translate3d(-36px,-12px,0)}80%{transform:translate3d(28px,26px,0)}}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;padding-top:12px}
.nav-in{position:relative;isolation:isolate;width:min(1232px,calc(100% - 24px));height:56px;margin:0 auto;padding:0 8px 0 18px;display:flex;align-items:center;gap:8px}
.nav-in::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:9999px;pointer-events:none;
  background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,0) 40%),var(--glass);
  border:1px solid var(--rim);box-shadow:0 14px 44px rgba(0,0,0,.5),inset 0 1px 0 var(--hi);
  opacity:0;transform:translate3d(0,-10px,0) scale(.985);
  transition:opacity .5s var(--out),transform .6s var(--out)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.nav-in::before{-webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%)}}
.is-scrolled .nav-in::before{opacity:1;transform:none}
.logo{display:flex;align-items:center;transition:opacity var(--t-fast) var(--out)}
.logo:hover{opacity:.8}
.logo .mk{height:28px}
.links{display:flex;margin-left:auto}
.links a{position:relative;color:var(--ink-3);padding:10px 14px;transition:color var(--t-fast) var(--out)}
.links a::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .45s var(--out)}
.links a:hover{color:var(--ink)}.links a:hover::after{transform:scaleX(1)}
.pill{position:relative;overflow:hidden;isolation:isolate;cursor:pointer;display:inline-flex;align-items:center;height:38px;padding:0 18px;border:1px solid rgba(255,255,255,.4);border-radius:9999px;background:transparent;color:var(--ink);white-space:nowrap;transition:color .4s var(--out),border-color .4s var(--out)}
.pill::before,.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;transform:scaleY(0);transform-origin:50% 100%;transition:transform .5s var(--out)}
.pill:hover,.btn:hover{color:#0a0d0b}.pill:hover{border-color:#fff}
.pill:hover::before,.btn:hover::before{transform:scaleY(1)}
.pill:active,.btn:active{transform:scale(.98)}

/* ---------- scenes ---------- */
.scene{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--edge) clamp(64px,13vh,140px);background:#0b0f0d}
.bg{position:absolute;inset:0;z-index:0;display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.06);transform-origin:50% 55%}
.js .scene.in .bg{transform:none;transition:transform var(--t-settle) var(--out)}
.copy{position:relative;z-index:3;max-width:760px}

/* type scale: label 11 / lead 16-18 / h2 36-68 / h1 44-96 */
h1,h2{font-weight:400;text-transform:none;text-wrap:balance}
h1{font-size:clamp(44px,6.2vw,96px);line-height:1.02;letter-spacing:-.03em}
h2{font-size:clamp(36px,4.4vw,68px);line-height:1.04;letter-spacing:-.028em}
.eyebrow{display:flex;align-items:center;gap:14px;color:var(--ink-3);margin-bottom:24px}
.eyebrow span{color:var(--ink)}
.eyebrow span::after{content:"";display:inline-block;width:28px;height:1px;margin-left:14px;vertical-align:middle;background:rgba(255,255,255,.5)}
.line{margin-top:24px;max-width:36ch;font-size:clamp(16px,1.2vw,18px);line-height:1.55;color:var(--ink-2);text-wrap:balance}
.sec{display:inline-flex;align-items:center;gap:10px;margin-top:32px;padding-bottom:5px;color:var(--ink-2);border-bottom:1px solid rgba(255,255,255,.4);transition:color var(--t-fast) var(--out),border-color var(--t-fast) var(--out)}
.sec svg,.btn svg{width:14px;height:14px;transition:transform .5s var(--out)}
.sec:hover{color:var(--ink);border-color:var(--ink)}
.sec:hover svg,.btn:hover svg{transform:translate3d(4px,0,0)}
.btn{position:relative;overflow:hidden;isolation:isolate;cursor:pointer;display:inline-flex;align-items:center;gap:14px;height:52px;margin-top:36px;padding:0 26px;border:1px solid rgba(255,255,255,.55);background:rgba(5,8,7,.22);color:var(--ink);transition:color .4s var(--out),border-color .4s var(--out)}
.btn:hover{border-color:#fff}

/* scroll cue: hero only, hides once scrolling starts */
.cue{position:absolute;z-index:3;left:var(--edge);bottom:0;width:1px;height:64px;background:rgba(255,255,255,.2);overflow:hidden;transition:opacity .5s var(--out)}
.cue i{position:absolute;left:0;top:0;width:1px;height:50%;background:#fff;animation:cue 2.8s var(--io) infinite}
@keyframes cue{0%{transform:translate3d(0,-100%,0)}100%{transform:translate3d(0,200%,0)}}
.is-scrolled .cue{opacity:0}

/* reveals: transform + opacity only */
.js .rv{opacity:0;transform:translate3d(0,24px,0)}
.js .in .rv{opacity:1;transform:none;transition:opacity var(--t-slow) var(--out),transform var(--t-slow) var(--out);transition-delay:calc(var(--i,0)*90ms + 450ms)}
.js .in .eyebrow.rv{transition-delay:.1s}
/* headline: masked rise by line */
.ln{display:block;overflow:clip;padding-bottom:.14em;margin-bottom:-.14em}
.ln>span{display:block;transform:translate3d(0,112%,0)}
.js .in .ln>span{transform:none;transition:transform 1.3s var(--out);transition-delay:calc(.15s + var(--l,0)*110ms)}
.js .head:not(.split) .ln{overflow:visible}

/* ---------- closing scene ---------- */
.close{justify-content:center;align-items:center;text-align:center;padding-top:0;padding-bottom:96px}
.close .copy{display:flex;flex-direction:column;align-items:center;max-width:820px}
.close .shade{background:
    radial-gradient(75% 65% at 50% 48%,rgba(5,8,7,.5) 0,rgba(5,8,7,.12) 78%),
    radial-gradient(130% 100% at 50% 45%,rgba(0,0,0,0) 52%,rgba(0,0,0,.42) 100%),
    linear-gradient(180deg,rgba(5,8,7,.4) 0,rgba(5,8,7,0) 24%,rgba(5,8,7,0) 62%,rgba(5,8,7,.78) 100%),
    linear-gradient(0deg,rgba(54,32,10,.14),rgba(54,32,10,.14))}
.close-mk{height:clamp(44px,4.6vw,60px);margin-bottom:36px}
.close h2{font-size:clamp(44px,6.2vw,96px)}
.close .line{max-width:34ch}
.foot{position:absolute;z-index:3;left:var(--edge);right:var(--edge);bottom:0;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:24px 0 28px;border-top:1px solid rgba(255,255,255,.18);color:var(--ink-3)}
.foot nav{display:flex;gap:32px}
.foot a,.foot button{background:none;border:0;padding:0;cursor:pointer;color:var(--ink-2);font:inherit;letter-spacing:inherit;text-transform:inherit;transition:color var(--t-fast) var(--out)}
.foot a:hover,.foot button:hover{color:var(--ink)}

/* ---------- contact sheet (glass) ---------- */
.cx{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}
.cx[hidden]{display:none}
.cx-bd{position:absolute;inset:0;background:rgba(4,7,6,.62);animation:cxfade .5s var(--out)}
.cx-sheet{position:relative;width:min(460px,100%);max-height:calc(100svh - 32px);overflow:auto;padding:36px 32px 32px;border-radius:24px;border:1px solid var(--rim);outline:0;
  background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,0) 40%),rgba(22,30,28,.84);
  box-shadow:0 30px 80px rgba(0,0,0,.6),inset 0 1px 0 var(--hi);animation:cxrise .7s var(--out)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.cx-sheet{background:linear-gradient(160deg,rgba(255,255,255,.1),rgba(255,255,255,0) 40%),rgba(22,30,28,.55);-webkit-backdrop-filter:blur(26px) saturate(160%);backdrop-filter:blur(26px) saturate(160%)}}
@keyframes cxfade{from{opacity:0}}
@keyframes cxrise{from{opacity:0;transform:translate3d(0,18px,0) scale(.98)}}
.cx h2{font-size:30px;line-height:1.1;letter-spacing:-.02em;margin-bottom:24px}
.cx label{display:block;margin:18px 0 8px;color:var(--ink-3)}
.cx input:not(.hp),.cx textarea{width:100%;font:400 16px/24px var(--sans);color:var(--ink);background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.26);border-radius:12px;padding:12px 14px;resize:vertical;transition:border-color var(--t-fast) var(--out),background-color var(--t-fast) var(--out)}
.cx input:not(.hp):hover,.cx textarea:hover{border-color:rgba(255,255,255,.45)}
.cx input:focus,.cx textarea:focus{outline:0;border-color:var(--acc);background:rgba(0,0,0,.4)}
.cx input[aria-invalid=true],.cx textarea[aria-invalid=true]{border-color:#ff9a90}
.cx .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.cx-err{min-height:22px;margin-top:14px;font-size:14px;line-height:22px;color:#ffc2bb}
.cx-send{position:relative;overflow:hidden;isolation:isolate;margin-top:12px;height:48px;padding:0 28px;border:0;border-radius:9999px;background:#fff;color:#0a0d0b;font:500 11px/16px var(--mono);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:opacity var(--t-fast) var(--out),transform var(--t-fast) var(--out)}
.cx-send:hover{opacity:.88}.cx-send:active{transform:scale(.98)}.cx-send[disabled]{opacity:.55;cursor:default}
.cx-x{position:absolute;top:16px;right:16px;width:36px;height:36px;border:0;border-radius:50%;background:rgba(255,255,255,.1);color:var(--ink);font-size:22px;line-height:1;cursor:pointer;transition:background-color var(--t-fast) var(--out)}
.cx-x:hover{background:rgba(255,255,255,.2)}
.cx-ok{padding-top:8px}
.cx-ok .tick{display:block;width:44px;height:44px;margin-bottom:22px;border:1px solid rgba(255,255,255,.4);border-radius:50%;padding:11px;color:var(--acc)}
.cx-ok p{color:var(--ink-2);margin-bottom:20px}
body.cx-open{overflow:hidden}

/* ---------- small screens ---------- */
@media(max-width:860px){.links{display:none}.pill{margin-left:auto}.logo .mk{height:24px}}
@media(max-width:600px){
  .cue{display:none}
  .foot{flex-direction:column-reverse;align-items:flex-start;gap:14px;padding:20px 0 24px}
  .foot nav{gap:22px;flex-wrap:wrap}
  .close{padding-bottom:112px}
  .close-mk{margin-bottom:28px}
}
@media(max-height:700px){.close-mk{height:40px;margin-bottom:22px}.close .btn{margin-top:28px}.close .line{margin-top:18px}}

/* ---------- reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .grain,.cue i{animation:none}
  .js .rv,.ln>span,.bg{opacity:1;transform:none!important;transition:none!important}
  .nav-in::before{transition:opacity .2s linear;transform:none}
  .cx-bd,.cx-sheet{animation:none}
}
@media(prefers-reduced-transparency:reduce){
  .nav-in::before,.cx-sheet{-webkit-backdrop-filter:none;backdrop-filter:none;background:#121714}
}
