/* =====================================================================
   AETHER Studio — site.css
   Dark, restrained, luminous. Cyan + mint accents, violet only as a
   faint secondary light in the hero.
   ===================================================================== */

@font-face{font-family:"Sora";src:url("../fonts/sora-latin-ext.woff2") format("woff2-variations");font-weight:100 800;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Sora";src:url("../fonts/sora-latin.woff2") format("woff2-variations");font-weight:100 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";src:url("../fonts/inter-latin-ext.woff2") format("woff2-variations");font-weight:100 900;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";src:url("../fonts/inter-latin.woff2") format("woff2-variations");font-weight:100 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jetbrains-mono-latin-ext.woff2") format("woff2-variations");font-weight:100 800;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jetbrains-mono-latin.woff2") format("woff2-variations");font-weight:100 800;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --bg:#080A0E;
  --bg-2:#111720;
  --bg-3:#171F29;
  --line:rgba(241,243,245,.08);
  --line-2:rgba(241,243,245,.14);
  --text:#F1F3F5;
  --muted:#929BA8;
  --dim:#5E6774;
  --cyan:#39DDE6;
  --mint:#76EAC8;
  --violet:#936BFF;
  --cyan-08:rgba(57,221,230,.08);
  --cyan-16:rgba(57,221,230,.16);
  --cyan-32:rgba(57,221,230,.32);

  --f-display:"Sora",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-body:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --gutter:clamp(20px,4vw,56px);
  --max:1440px;
  --nav-h:68px;
  --r:6px;
  --ease:cubic-bezier(.2,.7,.1,1);
  --ease-io:cubic-bezier(.76,0,.24,1);
  --section:clamp(96px,13vw,200px);
  color-scheme:dark;
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 16px)}
body{margin:0;background:var(--bg);color:var(--text);font:400 1rem/1.65 var(--f-body);font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;text-rendering:optimizeLegibility}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
::selection{background:rgba(57,221,230,.28);color:#fff}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:2px}
[hidden]{display:none!important}
.nw{white-space:nowrap}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:16px;top:-60px;z-index:1000;background:var(--cyan);color:var(--bg);padding:10px 14px;border-radius:4px;font-weight:600;transition:top .2s}
.skip:focus{top:12px}

/* ---------- layout ---------- */
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-block:var(--section);position:relative}
.grid12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(16px,2vw,32px)}

/* ---------- type ---------- */
.mono{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:500}
.label{display:flex;align-items:center;gap:14px;color:var(--muted)}
.label .idx{color:var(--cyan)}
.label::after{content:"";flex:1;height:1px;background:var(--line);max-width:120px}
.h-display{font-family:var(--f-display);font-weight:600;font-size:clamp(2.9rem,8.2vw,9.25rem);line-height:.92;letter-spacing:-.048em}
.h2{font-family:var(--f-display);font-weight:600;font-size:clamp(2.2rem,5.2vw,5.25rem);line-height:.98;letter-spacing:-.04em;text-wrap:balance}
.h3{font-family:var(--f-display);font-weight:500;font-size:clamp(1.45rem,2.3vw,2.1rem);line-height:1.08;letter-spacing:-.03em}
.lead{font-size:clamp(1.06rem,1.25vw,1.25rem);line-height:1.6;color:var(--muted);max-width:40ch;text-wrap:pretty}
.muted{color:var(--muted)}
.accent{color:var(--cyan)}
.sec-head{display:grid;gap:clamp(20px,3vw,32px);margin-bottom:clamp(48px,7vw,96px)}
.sec-head .row{display:grid;grid-template-columns:1fr;gap:24px;align-items:end}
@media(min-width:960px){.sec-head .row{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}}

/* ---------- buttons ---------- */
.btn{--bh:52px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:12px;height:var(--bh);padding:0 22px;border-radius:4px;font:600 .94rem/1 var(--f-body);letter-spacing:-.005em;white-space:nowrap;isolation:isolate;overflow:hidden;transition:transform .5s var(--ease),background-color .3s,color .3s,border-color .3s}
.btn .arr{display:inline-block;transition:transform .45s var(--ease)}
.btn:hover .arr{transform:translateX(4px)}
.btn-primary{background:var(--cyan);color:#041014}
.btn-primary::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);transform:translateX(-120%);transition:transform .9s var(--ease)}
.btn-primary:hover::before{transform:translateX(120%)}
.btn-primary:hover{background:#5BE6EE}
.btn-ghost{border:1px solid var(--line-2);color:var(--text)}
.btn-ghost:hover{border-color:var(--cyan-32);background:var(--cyan-08)}
.btn-sm{--bh:40px;padding:0 16px;font-size:.86rem}
.link-arrow{display:inline-flex;align-items:center;gap:10px;font-weight:500;color:var(--text);border-bottom:1px solid var(--line-2);padding-bottom:6px;transition:border-color .3s,color .3s}
.link-arrow:hover{border-color:var(--cyan);color:var(--cyan)}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto;z-index:100;height:var(--nav-h);transition:transform .5s var(--ease),background-color .4s,border-color .4s;border-bottom:1px solid transparent}
.nav.is-solid{background:rgba(8,10,14,.78);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);border-color:var(--line)}
.nav.is-hidden{transform:translateY(-100%)}
.nav .wrap{height:100%;display:flex;align-items:center;gap:24px}
.brand{display:inline-flex;align-items:baseline;gap:8px;color:var(--text)}
.brand svg{height:18px;width:auto}
.brand .sub{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.nav-links{display:none;margin-inline:auto;gap:4px}
.nav-links a{position:relative;padding:8px 12px;font-size:.88rem;color:var(--muted);transition:color .25s}
.nav-links a:hover,.nav-links a[aria-current="true"]{color:var(--text)}
.nav-links a::after{content:"";position:absolute;left:12px;right:12px;bottom:2px;height:1px;background:var(--cyan);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease)}
.nav-links a:hover::after,.nav-links a[aria-current="true"]::after{transform:scaleX(1)}
.nav-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.lang-switch{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--line-2);border-radius:4px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;color:var(--muted);transition:color .25s,border-color .25s}
.lang-switch b{color:var(--text);font-weight:500}
.lang-switch:hover{color:var(--text);border-color:var(--cyan-32)}
.nav .btn{display:none}
.burger{width:44px;height:40px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:4px}
.burger span{display:block;width:18px;height:1.5px;background:var(--text);position:relative;transition:transform .4s var(--ease)}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--text);transition:transform .4s var(--ease),top .4s var(--ease)}
.burger span::before{top:-6px}.burger span::after{top:6px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.burger[aria-expanded="true"] span::after{top:0;transform:rotate(-45deg)}
@media(min-width:1180px){.nav-links{display:flex}.burger{display:none}.nav-right{margin-left:0}.nav .btn{display:inline-flex}}
@media(min-width:720px) and (max-width:1179px){.nav .btn{display:inline-flex}}

.menu{position:fixed;inset:0;z-index:90;background:rgba(8,10,14,.97);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:calc(var(--nav-h) + 24px) var(--gutter) 32px;display:flex;flex-direction:column;opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility 0s .4s}
.menu.is-open{opacity:1;visibility:visible;transition:opacity .4s var(--ease)}
.menu ol{display:grid;gap:2px;counter-reset:m}
.menu li{counter-increment:m}
.menu a.big{display:flex;align-items:baseline;gap:16px;padding:10px 0;font-family:var(--f-display);font-weight:500;font-size:clamp(2rem,8vw,3.2rem);letter-spacing:-.04em;line-height:1.05;border-bottom:1px solid var(--line)}
.menu a.big::before{content:"0" counter(m);font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;color:var(--cyan)}
.menu .foot{margin-top:auto;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding-top:24px}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;padding-top:calc(var(--nav-h) + clamp(40px,7vh,96px));overflow:hidden;isolation:isolate}
.hero-bg{position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero-bg .dots{position:absolute;inset:-2px;background-image:radial-gradient(rgba(241,243,245,.16) 1px,transparent 1.4px);background-size:28px 28px;-webkit-mask-image:radial-gradient(560px circle at var(--mx,70%) var(--my,40%),#000 0%,rgba(0,0,0,.35) 45%,transparent 75%);mask-image:radial-gradient(560px circle at var(--mx,70%) var(--my,40%),#000 0%,rgba(0,0,0,.35) 45%,transparent 75%);transition:-webkit-mask-position .2s}
.hero-bg .glow{position:absolute;width:62vmax;height:62vmax;right:-18vmax;top:-22vmax;border-radius:50%;background:radial-gradient(closest-side,rgba(57,221,230,.16),rgba(118,234,200,.06) 45%,transparent 70%);filter:blur(10px);animation:drift 18s ease-in-out infinite alternate}
.hero-bg .glow.v{width:44vmax;height:44vmax;left:-20vmax;right:auto;top:auto;bottom:-26vmax;background:radial-gradient(closest-side,rgba(147,107,255,.10),transparent 70%);animation-duration:24s}
.hero-bg .rule{position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--line-2) 20%,var(--line-2) 80%,transparent)}
@keyframes drift{to{transform:translate3d(-6vmax,5vmax,0) scale(1.08)}}
.hero-main{flex:1;display:grid;gap:clamp(40px,6vw,64px);align-items:center}
@media(min-width:1080px){.hero-main{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}}
.hero .eyebrow{display:inline-flex;align-items:center;gap:12px;color:var(--muted);margin-bottom:clamp(24px,3vw,36px)}
.hero .eyebrow i{width:28px;height:1px;background:var(--cyan)}
.hero h1{font-family:var(--f-display);font-weight:600;font-size:clamp(2.6rem,6.3vw,7rem);line-height:.92;letter-spacing:-.05em}
.hero h1 .ln{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.hero h1 .ln>span{display:inline-block}
.hero h1 .ln.alt{color:var(--muted);font-weight:500;font-size:.48em;letter-spacing:-.035em;margin-top:.45em}
.hero h1 .ln.alt em{font-style:normal;color:var(--mint)}
.hero .lead{margin-top:clamp(24px,3vw,36px);max-width:48ch}
.hero .ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(28px,3.4vw,44px)}
.hero-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 24px;padding-block:28px;margin-top:clamp(48px,7vh,96px);border-top:1px solid var(--line)}
@media(min-width:900px){.hero-meta{grid-template-columns:repeat(4,minmax(0,1fr))}}
.hero-meta div{display:grid;gap:6px;color:var(--muted)}
.hero-meta b{font-weight:500;color:var(--text);font-family:var(--f-body);font-size:.9rem;letter-spacing:0;text-transform:none}
.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 0 rgba(118,234,200,.6);animation:pulse 2.4s infinite;margin-right:8px;vertical-align:1px}
@keyframes pulse{70%{box-shadow:0 0 0 8px rgba(118,234,200,0)}100%{box-shadow:0 0 0 0 rgba(118,234,200,0)}}

/* browser frame (hero + work + case studies) */
.frame{position:relative;border-radius:8px;background:var(--bg-2);border:1px solid var(--line-2);box-shadow:0 40px 120px -40px rgba(0,0,0,.8),0 0 0 1px rgba(0,0,0,.4);overflow:hidden}
.frame-bar{display:flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-bottom:1px solid var(--line);background:rgba(23,31,41,.8)}
.frame-bar i{width:8px;height:8px;border-radius:50%;background:rgba(241,243,245,.14)}
.frame-bar .url{margin-left:10px;flex:1;height:20px;border-radius:3px;background:rgba(8,10,14,.6);display:flex;align-items:center;padding:0 10px;font-family:var(--f-mono);font-size:.62rem;color:var(--dim);letter-spacing:.04em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.frame-view{position:relative;aspect-ratio:16/10;overflow:hidden;background:#0c1017}
.frame-view img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center}
.hero-frame{position:relative}
.hero-frame .frame{transform:perspective(1600px) rotateY(-7deg) rotateX(2deg);transform-origin:left center;transition:transform 1.2s var(--ease)}
.hero-frame:hover .frame{transform:perspective(1600px) rotateY(-3deg) rotateX(1deg)}
.hero-frame .frame::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--a,0deg),transparent 0 70%,var(--cyan) 80%,var(--mint) 86%,transparent 92%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:edge 7s linear infinite;pointer-events:none;opacity:.9}
@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes edge{to{--a:360deg}}
.hero-frame .slides img{opacity:0;transform:scale(1.04);transition:opacity 1.1s var(--ease),transform 6s linear}
.hero-frame .slides img.on{opacity:1;transform:scale(1)}
.hero-frame figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:16px;color:var(--dim)}
.hero-frame figcaption b{color:var(--muted);font-weight:500}
.hero-frame .halo{position:absolute;inset:10% -6% -8% 8%;z-index:-1;background:radial-gradient(closest-side,rgba(57,221,230,.18),transparent 70%);filter:blur(30px)}
@media(max-width:1079px){.hero-frame .frame{transform:none}.hero-frame:hover .frame{transform:none}}

/* ---------- services ---------- */
.svc-groups{display:grid;gap:clamp(56px,6vw,0px)}
@media(min-width:1080px){.svc-groups{grid-template-columns:1fr 1fr;column-gap:clamp(32px,4vw,72px)}}
.svc-group h3{display:flex;justify-content:space-between;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--line-2);color:var(--muted)}
.svc-group h3 .tag{color:var(--mint)}
.svc-group:first-child h3 .tag{color:var(--cyan)}
.svc{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr);gap:4px 16px;padding:clamp(28px,3vw,40px) 0;border-bottom:1px solid var(--line);isolation:isolate}
.svc::before{content:"";position:absolute;inset:0 -16px;z-index:-1;border-radius:6px;background:linear-gradient(90deg,var(--cyan-08),transparent 70%);opacity:0;transition:opacity .5s var(--ease)}
.svc:hover::before{opacity:1}
.svc .n{font-family:var(--f-mono);font-size:.74rem;color:var(--dim);padding-top:.7em;transition:color .3s}
.svc:hover .n{color:var(--cyan)}
.svc h4{font-family:var(--f-display);font-weight:500;font-size:clamp(1.6rem,2.6vw,2.4rem);letter-spacing:-.035em;line-height:1.05;transition:transform .5s var(--ease)}
.svc:hover h4{transform:translateX(6px)}
.svc p{grid-column:2;color:var(--muted);max-width:52ch;margin-top:12px}
.svc ul{grid-column:2;display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.svc li{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line-2);border-radius:3px;padding:6px 9px}
.svc-group.fix .svc::before{background:linear-gradient(90deg,rgba(118,234,200,.07),transparent 70%)}
.svc-group.fix .svc:hover .n{color:var(--mint)}

/* ---------- work ---------- */
.work-list{display:grid;gap:clamp(88px,10vw,160px)}
.case-card{display:grid;gap:clamp(24px,3vw,48px);align-items:center}
@media(min-width:1080px){
  .case-card{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
  .case-card.flip{grid-template-columns:minmax(0,1fr) minmax(0,1.7fr)}
  .case-card.flip .case-media{order:2}
}
.case-media{position:relative;display:block}
.case-media .frame{transition:transform .9s var(--ease),border-color .4s}
.case-media:hover .frame{transform:translateY(-6px);border-color:var(--cyan-32)}
.case-media .frame-view img{transition:transform 1.4s var(--ease)}
.case-media:hover .frame-view img{transform:scale(1.025)}
.case-media .phone{position:absolute;right:-2%;bottom:-10%;width:22%;min-width:96px;border-radius:16px;border:1px solid var(--line-2);background:#000;padding:5px;box-shadow:0 30px 60px -20px rgba(0,0,0,.9);transition:transform .9s var(--ease)}
.case-card.flip .case-media .phone{right:auto;left:-2%}
.case-media .phone img{border-radius:11px;aspect-ratio:9/19.5;object-fit:cover;object-position:top;width:100%}
.case-media:hover .phone{transform:translateY(-14px)}
.case-info{display:grid;gap:18px;align-content:start}
.case-info .top{display:flex;align-items:center;gap:12px;color:var(--muted)}
.case-info .top .idx{color:var(--cyan)}
.case-info h3{font-family:var(--f-display);font-weight:600;font-size:clamp(2rem,3.6vw,3.4rem);letter-spacing:-.045em;line-height:1}
.case-info p{color:var(--muted);max-width:44ch}
.badge{display:inline-flex;align-items:center;gap:8px;width:fit-content;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan);border:1px solid var(--cyan-32);background:var(--cyan-08);border-radius:3px;padding:6px 9px}
.badge::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pills span{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-2);border-radius:3px;padding:6px 9px}
.case-links{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center;margin-top:6px}
.work-note{margin-top:clamp(72px,8vw,120px);display:flex;gap:14px;align-items:flex-start;padding:20px 22px;border:1px solid var(--line);border-left:2px solid var(--cyan);border-radius:4px;background:rgba(17,23,32,.5);color:var(--muted);font-size:.92rem;max-width:860px}

/* ---------- industries ---------- */
.ind{display:grid;gap:12px}
.ind-card{position:relative;min-height:440px;border-radius:6px;overflow:hidden;isolation:isolate;border:1px solid var(--line);display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(22px,2.4vw,32px);outline:none}
.ind-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;filter:grayscale(.55) contrast(1.05) brightness(.6);transform:scale(1.04);transition:transform 1.4s var(--ease),filter .8s var(--ease)}
.ind-card::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,10,14,.15) 0%,rgba(8,10,14,.55) 45%,rgba(8,10,14,.96) 100%)}
.ind-card::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 40%,rgba(57,221,230,.12));opacity:0;transition:opacity .6s}
.ind-card .n{position:absolute;top:clamp(22px,2.4vw,32px);left:clamp(22px,2.4vw,32px);color:var(--muted)}
.ind-card h3{font-family:var(--f-display);font-weight:600;font-size:clamp(1.8rem,2.6vw,2.5rem);letter-spacing:-.04em;line-height:1}
.ind-card p{color:#C6CCD4;margin-top:12px;max-width:36ch;font-size:.95rem}
.ind-card ul{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.ind-card li{font-size:.78rem;color:var(--text);background:rgba(241,243,245,.07);border:1px solid var(--line-2);border-radius:3px;padding:5px 9px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ind-card:hover img,.ind-card:focus-within img,.ind-card:focus img{transform:scale(1);filter:grayscale(0) contrast(1.05) brightness(.7)}
.ind-card:hover::after,.ind-card:focus::after{opacity:1}
@media(min-width:1080px){
  .ind{display:flex;height:620px;gap:12px}
  .ind-card{flex:1 1 0;min-height:0;transition:flex-grow .9s var(--ease)}
  .ind-card .more{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .8s var(--ease),opacity .6s}
  .ind-card .more>div{overflow:hidden}
  .ind-card:hover,.ind-card:focus,.ind-card:focus-within{flex-grow:2.3}
  .ind-card:hover .more,.ind-card:focus .more,.ind-card:focus-within .more{grid-template-rows:1fr;opacity:1}
  .ind:not(:hover):not(:focus-within) .ind-card:first-child{flex-grow:2.3}
  .ind:not(:hover):not(:focus-within) .ind-card:first-child .more{grid-template-rows:1fr;opacity:1}
}
.ind-note{margin-top:28px;color:var(--muted);display:flex;gap:12px;align-items:center}
.ind-note::before{content:"";width:24px;height:1px;background:var(--mint)}

/* ---------- pricing ---------- */
.price-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}
.price-table th,.price-table td{text-align:left;vertical-align:top;padding:16px 18px;border-bottom:1px solid var(--line);font-weight:400;transition:background-color .35s}
.price-table thead th{vertical-align:bottom;padding-top:28px;padding-bottom:24px;border-bottom:1px solid var(--line-2)}
.price-table tbody th{color:var(--muted);font-size:.86rem;width:19%}
.price-table td{font-size:.92rem;color:#D6DBE1}
.price-table td.dash{color:var(--dim)}
.price-table td.yes{color:var(--mint)}
.price-table .col-premium{background:linear-gradient(180deg,rgba(57,221,230,.07),rgba(57,221,230,.03))}
.price-table thead .col-premium{position:relative;border-top:2px solid var(--cyan);border-radius:6px 6px 0 0}
.price-table tfoot td{border-bottom:0;padding-top:24px;padding-bottom:28px}
.price-table tfoot .col-premium{border-radius:0 0 6px 6px}
.price-table .is-hot{background-color:rgba(241,243,245,.025)}
.price-table .col-premium.is-hot{background-color:rgba(57,221,230,.05)}
.plan-head{display:grid;gap:10px}
.plan-head .n{color:var(--dim)}
.plan-head .name{font-family:var(--f-display);font-weight:500;font-size:1.25rem;letter-spacing:-.02em}
.plan-head .rec{position:absolute;top:-13px;left:18px;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;background:var(--cyan);color:#041014;padding:5px 8px;border-radius:3px}
.price{display:flex;align-items:baseline;gap:8px;margin-top:6px}
.price .amt{font-family:var(--f-display);font-weight:600;font-size:clamp(2.4rem,3.6vw,3.4rem);letter-spacing:-.05em;line-height:1}
.price .cur{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.1em;color:var(--muted)}
.price .amt.word{font-size:clamp(2rem,3vw,2.8rem);color:var(--text)}
.plan-head .tag{color:var(--muted);font-size:.86rem;line-height:1.5;min-height:3em}
.plan-head .fixed{color:var(--mint)}
.price-table .btn{width:100%}
.price-desk{display:none}
@media(min-width:1000px){.price-desk{display:block}.price-mob{display:none}}
.price-mob .tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:4px;border:1px solid var(--line-2);border-radius:6px;margin-bottom:20px}
.price-mob .tabs button{height:44px;border-radius:4px;font-size:.8rem;color:var(--muted);position:relative}
.price-mob .tabs button[aria-selected="true"]{background:var(--bg-3);color:var(--text)}
.price-mob .tabs button.prem::after{content:"";position:absolute;top:8px;right:8px;width:5px;height:5px;border-radius:50%;background:var(--cyan)}
.plan-card{position:relative;border:1px solid var(--line-2);border-radius:6px;padding:28px 22px;background:var(--bg-2)}
.plan-card.prem{border-color:var(--cyan-32);background:linear-gradient(180deg,rgba(57,221,230,.08),var(--bg-2) 40%)}
.plan-card .rec{position:absolute;top:-12px;left:22px}
.plan-card dl{margin-top:24px;display:grid}
.plan-card dl div{display:grid;grid-template-columns:42% 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line);font-size:.9rem}
.plan-card dt{color:var(--muted)}
.plan-card .btn{width:100%;margin-top:22px}
.price-extra{display:grid;gap:clamp(24px,3vw,40px);margin-top:clamp(40px,5vw,72px)}
@media(min-width:900px){.price-extra{grid-template-columns:1fr 1fr 1fr}}
.price-extra>div{border-top:1px solid var(--line-2);padding-top:22px}
.price-extra h3{font-family:var(--f-display);font-weight:500;font-size:1.15rem;letter-spacing:-.02em;margin-bottom:12px}
.price-extra p,.price-extra li{color:var(--muted);font-size:.92rem}
.price-extra ul{display:grid;gap:8px}
.price-extra li{display:flex;gap:10px}
.price-extra li::before{content:"→";color:var(--dim)}
.price-extra .chips{display:flex;flex-wrap:wrap;gap:6px}
.price-extra .chips li{border:1px solid var(--line-2);border-radius:3px;padding:5px 9px;font-size:.8rem}
.price-extra .chips li::before{content:none}

/* ---------- process ---------- */
.proc{position:relative}
.proc-track{display:grid;gap:0;counter-reset:s}
.step{position:relative;display:grid;grid-template-columns:56px 1fr;gap:6px 18px;padding:26px 0;border-top:1px solid var(--line)}
.step .n{font-family:var(--f-display);font-weight:600;font-size:1.6rem;letter-spacing:-.04em;color:var(--dim);line-height:1}
.step h3{font-family:var(--f-display);font-weight:500;font-size:1.35rem;letter-spacing:-.025em}
.step p{grid-column:2;color:var(--muted);font-size:.95rem;max-width:42ch}
.step.optional .n,.step.optional h3{color:var(--muted)}
.step.optional{border-top-style:dashed}
@media(min-width:1080px){
  .proc.is-pinned{height:calc(100vh + 1600px)}
  .proc.is-pinned .proc-sticky{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
  .proc-track{display:flex;gap:16px;will-change:transform}
  .step{flex:0 0 340px;display:flex;flex-direction:column;gap:14px;padding:30px 28px 34px;border:1px solid var(--line);border-radius:6px;background:rgba(17,23,32,.55);min-height:300px}
  .step .n{font-size:3.4rem;padding-bottom:40px}
  .step h3{margin-top:auto}
  .step p{min-height:4.95em}
  .step.on .n{color:var(--cyan)}
  .step.optional{border-style:dashed}
  .step.optional.on .n{color:var(--mint)}
  .proc-progress{height:1px;background:var(--line-2);margin-top:40px;position:relative}
  .proc-progress i{position:absolute;inset:0 auto 0 0;width:var(--p,0%);background:linear-gradient(90deg,var(--cyan),var(--mint))}
}
@media(max-width:1079px){.proc-progress{display:none}}

/* ---------- about ---------- */
.about{display:grid;gap:clamp(40px,5vw,80px)}
@media(min-width:1080px){.about{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}}
.about .txt{display:grid;gap:20px}
.about .txt p{color:#C6CCD4;font-size:clamp(1.02rem,1.15vw,1.15rem);max-width:58ch}
.about .txt p:first-child{color:var(--text);font-size:clamp(1.2rem,1.6vw,1.5rem);line-height:1.5;font-family:var(--f-display);letter-spacing:-.015em}
.facts{display:grid;margin-top:12px}
.facts div{display:grid;grid-template-columns:140px 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--line)}
.facts dt{color:var(--dim)}
.facts dd{color:var(--text)}
.disc{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.disc li{font-family:var(--f-display);font-size:clamp(1.1rem,1.6vw,1.4rem);letter-spacing:-.02em;padding:8px 16px;border:1px solid var(--line-2);border-radius:999px;color:var(--muted);transition:color .3s,border-color .3s}
.disc li:hover{color:var(--text);border-color:var(--cyan-32)}

/* ---------- faq ---------- */
.faq{display:grid;gap:clamp(40px,5vw,80px)}
@media(min-width:1080px){.faq{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:24px;align-items:center;padding:24px 0;font-family:var(--f-display);font-weight:500;font-size:clamp(1.05rem,1.4vw,1.3rem);letter-spacing:-.02em;transition:color .25s}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--cyan)}
.faq summary .pm{flex:0 0 28px;height:28px;border:1px solid var(--line-2);border-radius:50%;position:relative;transition:transform .45s var(--ease),border-color .3s}
.faq summary .pm::before,.faq summary .pm::after{content:"";position:absolute;left:50%;top:50%;width:10px;height:1.5px;background:currentColor;transform:translate(-50%,-50%)}
.faq summary .pm::after{transform:translate(-50%,-50%) rotate(90deg);transition:transform .45s var(--ease)}
.faq details[open] summary .pm{border-color:var(--cyan);color:var(--cyan)}
.faq details[open] summary .pm::after{transform:translate(-50%,-50%) rotate(0)}
.faq .a{padding:0 48px 26px 0;color:var(--muted);max-width:64ch}

/* ---------- contact / form ---------- */
.contact{display:grid;gap:clamp(40px,5vw,72px)}
@media(min-width:1080px){.contact{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start}}
.contact .aside{display:grid;gap:12px;margin-top:32px}
.contact .aside li{display:flex;gap:12px;color:var(--muted)}
.contact .aside li::before{content:"";flex:0 0 6px;height:6px;margin-top:.62em;border-radius:50%;background:var(--mint)}
.mail-alt{margin-top:40px;padding-top:24px;border-top:1px solid var(--line);display:grid;gap:8px}
.mail-alt a{font-family:var(--f-display);font-size:clamp(1.15rem,1.6vw,1.45rem);letter-spacing:-.02em;width:fit-content;border-bottom:1px solid var(--line-2);transition:border-color .3s,color .3s}
.mail-alt a:hover{color:var(--cyan);border-color:var(--cyan)}

.inq{position:relative;border:1px solid var(--line-2);border-radius:8px;background:linear-gradient(180deg,rgba(23,31,41,.75),rgba(17,23,32,.75));padding:clamp(22px,3vw,40px);box-shadow:0 40px 100px -50px rgba(0,0,0,.9)}
.inq::before{content:"";position:absolute;left:24px;right:24px;top:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),var(--mint),transparent);opacity:.7}
.progress{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:clamp(28px,3vw,40px)}
.progress li{display:grid;gap:10px;color:var(--dim);transition:color .3s}
.progress li .bar{height:2px;background:var(--line-2);border-radius:2px;overflow:hidden;position:relative}
.progress li .bar::after{content:"";position:absolute;inset:0;background:var(--cyan);transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.progress li.done .bar::after{background:var(--mint);transform:scaleX(1)}
.progress li.cur .bar::after{transform:scaleX(1)}
.progress li.cur{color:var(--text)}
.progress li.done{color:var(--muted)}
.progress .lbl{display:flex;gap:8px;font-size:.62rem}
.progress .lbl span:last-child{display:none}
@media(min-width:620px){.progress .lbl span:last-child{display:inline}}
.fstep{border:0;margin:0;padding:0;min-width:0}
.fstep[hidden]{display:none}
.fstep.enter{animation:stepIn .55s var(--ease) both}
@keyframes stepIn{from{opacity:0;transform:translateY(14px)}}
.fstep legend{padding:0;font-family:var(--f-display);font-weight:500;font-size:clamp(1.5rem,2.4vw,2.1rem);letter-spacing:-.035em;margin-bottom:26px;outline:none}
.fstep legend small{display:block;font-family:var(--f-mono);font-size:.66rem;letter-spacing:.12em;color:var(--cyan);text-transform:uppercase;margin-bottom:10px;font-weight:500}
.fgrid{display:grid;gap:22px}
@media(min-width:720px){.fgrid.two{grid-template-columns:1fr 1fr}.fgrid .full{grid-column:1/-1}}
.field{display:grid;gap:8px;min-width:0}
.field>label,.field>.flabel{font-size:.86rem;color:#C6CCD4;font-weight:500}
.field .opt{color:var(--dim);font-weight:400;font-size:.8rem}
.input{width:100%;height:52px;padding:0 16px;border-radius:4px;border:1px solid var(--line-2);background:rgba(8,10,14,.55);color:var(--text);font-size:1rem;transition:border-color .25s,box-shadow .25s,background-color .25s}
textarea.input{height:auto;min-height:150px;padding:14px 16px;resize:vertical;line-height:1.55}
.input::placeholder{color:var(--dim)}
.input:hover{border-color:rgba(241,243,245,.22)}
.input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(57,221,230,.15);background:rgba(8,10,14,.8)}
input[type="date"].input{color-scheme:dark}
.field.invalid .input{border-color:#FF7A7A;box-shadow:0 0 0 3px rgba(255,122,122,.12)}
.err{display:none;align-items:center;gap:8px;font-size:.82rem;color:#FF9C9C}
.err::before{content:"!";display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:rgba(255,122,122,.18);font-size:.66rem;font-weight:700}
.field.invalid .err{display:flex}
.chips{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0;min-width:0}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;gap:8px;min-height:42px;padding:0 14px;border-radius:4px;border:1px solid var(--line-2);background:rgba(8,10,14,.45);font-size:.88rem;color:#C6CCD4;transition:border-color .25s,background-color .25s,color .25s;pointer-events:none}
.chip span::before{content:"";width:8px;height:8px;border-radius:50%;border:1px solid var(--dim);transition:background-color .25s,border-color .25s}
.chip input:hover+span{border-color:rgba(241,243,245,.24);color:var(--text)}
.chip input:checked+span{border-color:var(--cyan);background:var(--cyan-08);color:var(--text)}
.chip input:checked+span::before{background:var(--cyan);border-color:var(--cyan);box-shadow:0 0 10px rgba(57,221,230,.6)}
.chip input:focus-visible+span{outline:2px solid var(--cyan);outline-offset:2px}
.field.invalid .chip span{border-color:rgba(255,122,122,.45)}
.fnav{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:clamp(28px,3vw,40px);padding-top:24px;border-top:1px solid var(--line)}
.fnav .back{display:inline-flex;align-items:center;gap:8px;color:var(--muted);height:44px;font-size:.92rem}
.fnav .back:hover{color:var(--text)}
.fnav .count{color:var(--dim)}
.summary{display:grid;border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-bottom:22px}
.summary div{display:grid;grid-template-columns:minmax(110px,34%) 1fr auto;gap:12px;align-items:start;padding:12px 16px;border-top:1px solid var(--line);font-size:.9rem}
.summary div:first-child{border-top:0}
.summary dt{color:var(--muted)}
.summary dd{color:var(--text);word-break:break-word;white-space:pre-line}
.summary button{font-size:.78rem;color:var(--cyan)}
.notice{font-size:.84rem;color:var(--muted);line-height:1.6;padding:14px 16px;background:rgba(8,10,14,.4);border-radius:4px;border:1px solid var(--line)}
.notice a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line-2);text-underline-offset:3px}
.consent{display:flex;gap:12px;align-items:flex-start;margin-top:18px;cursor:pointer;font-size:.92rem;color:#C6CCD4}
.consent input{appearance:none;-webkit-appearance:none;flex:0 0 20px;height:20px;margin:1px 0 0;border:1px solid var(--line-2);border-radius:3px;background:rgba(8,10,14,.6);display:grid;place-items:center;cursor:pointer;transition:background-color .2s,border-color .2s}
.consent input::after{content:"";width:10px;height:6px;border:2px solid #041014;border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px);opacity:0}
.consent input:checked{background:var(--cyan);border-color:var(--cyan)}
.consent input:checked::after{opacity:1}
.field.invalid .consent input{border-color:#FF7A7A}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.result{text-align:left}
.result[hidden]{display:none}
.result .icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(118,234,200,.45);background:rgba(118,234,200,.08);color:var(--mint);margin-bottom:24px}
.result.fail .icon{border-color:rgba(255,122,122,.45);background:rgba(255,122,122,.08);color:#FF9C9C}
.result h3{font-family:var(--f-display);font-weight:500;font-size:clamp(1.6rem,2.6vw,2.2rem);letter-spacing:-.035em;outline:none}
.result p{color:var(--muted);margin-top:12px;max-width:54ch}
.result ol{counter-reset:r;display:grid;gap:12px;margin:26px 0 30px}
.result ol li{counter-increment:r;display:grid;grid-template-columns:36px 1fr;color:#C6CCD4}
.result ol li::before{content:"0" counter(r);font-family:var(--f-mono);font-size:.72rem;color:var(--mint);padding-top:.3em}
.result .row{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}
.btn[disabled]{opacity:.6;cursor:progress}
.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(4,16,20,.3);border-top-color:#041014;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- footer ---------- */
.footer{position:relative;border-top:1px solid var(--line);padding-top:clamp(72px,9vw,140px);overflow:hidden}
.footer .cta-row{display:grid;gap:28px;align-items:end;padding-bottom:clamp(56px,7vw,96px)}
@media(min-width:900px){.footer .cta-row{grid-template-columns:1fr auto}}
.footer .cta-row h2{max-width:14ch}
.fcols{display:grid;gap:36px;grid-template-columns:1fr 1fr;padding-block:40px;border-top:1px solid var(--line)}
@media(min-width:900px){.fcols{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.fcols h3{color:var(--dim);margin-bottom:16px}
.fcols li{margin-bottom:8px}
.fcols a{color:var(--muted);transition:color .25s}
.fcols a:hover{color:var(--text)}
.fcols .tag{color:var(--muted);max-width:30ch;font-size:.92rem}
.wordmark-xl{display:block;width:100%;height:auto;margin-top:16px;opacity:.95}
.wordmark-xl text{font-family:var(--f-display);font-weight:600;letter-spacing:-.05em}
.fbottom{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:space-between;padding-block:24px 32px;color:var(--dim);font-size:.82rem;border-top:1px solid var(--line)}
.fbottom a:hover{color:var(--text)}

/* ---------- case study page ---------- */
.cs-hero{padding-top:calc(var(--nav-h) + clamp(48px,7vw,96px))}
.cs-back{display:inline-flex;gap:10px;align-items:center;color:var(--muted);margin-bottom:clamp(32px,4vw,56px)}
.cs-back:hover{color:var(--text)}
.cs-title{display:grid;gap:20px}
.cs-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 24px;margin-top:clamp(36px,4vw,56px);padding-top:24px;border-top:1px solid var(--line)}
@media(min-width:900px){.cs-meta{grid-template-columns:repeat(4,minmax(0,1fr))}}
.cs-meta div{display:grid;gap:6px}
.cs-meta dt{color:var(--dim)}
.cs-meta dd{color:var(--text);font-size:.95rem}
.cs-stage{margin-top:clamp(48px,6vw,88px);position:relative}
.cs-stage .phone{position:absolute;right:3%;bottom:-8%;width:19%;min-width:110px;border-radius:18px;border:1px solid var(--line-2);background:#000;padding:6px;box-shadow:0 40px 80px -24px rgba(0,0,0,.95)}
.cs-stage .phone img{border-radius:12px;aspect-ratio:9/19.5;object-fit:cover;object-position:top;width:100%}
.vtabs{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--line-2);border-radius:6px;margin-top:28px}
.vtabs button{height:40px;padding:0 16px;border-radius:4px;font-size:.88rem;color:var(--muted)}
.vtabs button[aria-selected="true"]{background:var(--bg-3);color:var(--text);box-shadow:inset 0 0 0 1px var(--cyan-32)}
.vdesc{color:var(--muted);margin-top:14px;max-width:60ch}
.cs-body{display:grid;gap:clamp(48px,6vw,96px)}
@media(min-width:1080px){.cs-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.cs-list{display:grid}
.cs-list li{display:grid;grid-template-columns:40px 1fr;padding:16px 0;border-top:1px solid var(--line);color:#C6CCD4}
.cs-list li::before{content:counter(l,decimal-leading-zero);counter-increment:l;font-family:var(--f-mono);font-size:.7rem;color:var(--cyan);padding-top:.35em}
.cs-list{counter-reset:l}
.cs-list.mint li::before{color:var(--mint)}
.swatches{display:flex;gap:0;border-radius:6px;overflow:hidden;border:1px solid var(--line-2);height:120px}
.swatches div{flex:1;display:flex;align-items:flex-end;padding:10px;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.06em}
.typespec{display:grid;gap:10px;margin-top:20px}
.typespec div{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid var(--line)}
.typespec span{color:var(--muted)}
.cs-shots{display:grid;gap:16px}
@media(min-width:900px){.cs-shots{grid-template-columns:1fr 1fr}}
.disclaimer{display:flex;gap:16px;padding:22px 24px;border:1px solid var(--cyan-32);background:var(--cyan-08);border-radius:6px}
.disclaimer b{display:block;color:var(--text);margin-bottom:6px;font-weight:600}
.disclaimer p{color:#C6CCD4;font-size:.92rem}
.next-proj{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-block:clamp(40px,5vw,72px);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.next-proj .h2{transition:color .3s}
.next-proj:hover .h2{color:var(--cyan)}

/* ---------- legal ---------- */
.legal{padding-top:calc(var(--nav-h) + clamp(48px,7vw,96px));padding-bottom:var(--section)}
.legal .wrap{max-width:860px}
.legal h1{font-family:var(--f-display);font-weight:600;font-size:clamp(2.4rem,5vw,4.2rem);letter-spacing:-.045em;line-height:1}
.legal .upd{color:var(--dim);margin-top:18px}
.legal h2{font-family:var(--f-display);font-weight:500;font-size:1.3rem;letter-spacing:-.02em;margin:48px 0 14px}
.legal p{color:#C6CCD4;margin-bottom:14px;max-width:70ch}
.legal a{color:var(--cyan)}

/* ---------- 404 ---------- */
.nf{min-height:100svh;display:grid;place-items:center;text-align:center;padding:var(--gutter)}
.nf .code{font-family:var(--f-display);font-weight:600;font-size:clamp(6rem,22vw,16rem);letter-spacing:-.06em;line-height:.85;background:linear-gradient(180deg,var(--text),rgba(241,243,245,.15));-webkit-background-clip:text;background-clip:text;color:transparent}
.nf .cols{display:grid;gap:28px;margin-top:40px}
@media(min-width:760px){.nf .cols{grid-template-columns:1fr 1fr;gap:56px;text-align:left}}
.nf h1,.nf h2{font-family:var(--f-display);font-weight:500;font-size:1.4rem;letter-spacing:-.02em}
.nf p{color:var(--muted);margin:8px 0 16px}

/* ---------- reveal ---------- */
.js [data-reveal]{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:var(--d,0s)}
.js [data-reveal].in{opacity:1;transform:none}
.js .hero h1 .ln>span{transform:translateY(105%);transition:transform 1.2s var(--ease);transition-delay:var(--d,0s)}
.js .hero.ready h1 .ln>span{transform:none}
.js .hero [data-fade]{opacity:0;transform:translateY(16px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0s)}
.js .hero.ready [data-fade]{opacity:1;transform:none}

/* page transition veil */
.veil{position:fixed;inset:0;z-index:999;background:var(--bg);pointer-events:none;opacity:0;transition:opacity .45s var(--ease)}
.veil.on{opacity:1}
.js body.entering .veil{opacity:1}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .js [data-reveal],.js .hero [data-fade]{opacity:1;transform:none}
  .js .hero h1 .ln>span{transform:none}
  .hero-frame .frame::after{display:none}
}
@media(max-width:600px){
  .price-table{display:none}
  .facts div{grid-template-columns:110px 1fr}
  .summary div{grid-template-columns:1fr auto}
  .summary dt{grid-column:1/-1}
}
