/* Glimmer website. Tokens mirror my-video-app/src/renderer/glimmer.css (:root). Square "Box Lab" boxes. */
@font-face{font-family:'Glimmer UI';src:url('/fonts/pixelify-sans-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Glimmer UI';src:url('/fonts/pixelify-sans-latin-700-normal.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Glimmer UI';src:url('/fonts/vt323-latin-400-normal.woff2') format('woff2');unicode-range:U+0030-0039;size-adjust:108%;font-weight:400;font-display:swap}
@font-face{font-family:'Glimmer UI';src:url('/fonts/vt323-latin-400-normal.woff2') format('woff2');unicode-range:U+0030-0039;size-adjust:108%;font-weight:700;font-display:swap}
@font-face{font-family:'Glimmer Display';src:url('/fonts/silkscreen-latin-400-normal.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Glimmer Display';src:url('/fonts/silkscreen-latin-700-normal.woff2') format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:'Glimmer Display';src:url('/fonts/vt323-latin-400-normal.woff2') format('woff2');unicode-range:U+0030-0039;size-adjust:108%;font-weight:400;font-display:swap}
@font-face{font-family:'Glimmer Display';src:url('/fonts/vt323-latin-400-normal.woff2') format('woff2');unicode-range:U+0030-0039;size-adjust:108%;font-weight:700;font-display:swap}

:root{
  --gl-frame:#585d56;--gl-body:#1f1f1e;--gl-void:#0a0a0a;--gl-raised:#343434;--gl-neutral-card:#3e3e3e;
  --gl-track:#5e5e5e;--gl-line:#808080;--gl-text:#fff;--gl-text-muted:#8f8f8f;--gl-focus:#fff;--gl-success:#1fa34a;--gl-purple-dim:#2a2560;--gl-shadow:4px 4px 0 #000;
  --gl-lime:#c4e122;--gl-lime-hot:#a8f300;--gl-lime-dim:#5e7a12;--gl-purple:#6c59f3;--gl-danger:#f80030;
  --gl-cat-rpg:#c0f800;--gl-cat-talking:#b040d8;--gl-cat-horror:#f80030;--gl-cat-fps:#0090f0;
  --font-display:'Glimmer Display',monospace;--font-ui:'Glimmer UI',monospace;
  --t-cap:14px;--t-body:16px;--t-head:20px;--t-title:32px;--t-hero:clamp(30px,4.2vw,56px);
  --s1:4px;--s2:8px;--s3:16px;--s4:24px;--s5:32px;--s6:48px;--s7:96px;
  --wrap:1160px;
  --ease-out:cubic-bezier(0.23,1,0.32,1);--ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --dur-press:140ms;--dur-hover:250ms;--dur-reveal:400ms;
  interpolate-size:allow-keywords;
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:none;font-synthesis:none}
body{background:var(--gl-body);color:var(--gl-text);font:400 var(--t-body)/1.5 var(--font-ui);overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--s4)}
section{padding:var(--s7) 0;position:relative}
.sr{position:absolute;left:-9999px}

/* type roles */
.display{font-family:var(--font-display);text-transform:uppercase;line-height:1.1}
h1{font:400 var(--t-hero)/1.02 var(--font-display);text-transform:uppercase;letter-spacing:-.01em}
h2{font:400 var(--t-title)/1.1 var(--font-display);text-transform:uppercase;margin-bottom:var(--s3)}
h3{font:400 var(--t-head)/1.15 var(--font-display);text-transform:uppercase;margin-bottom:var(--s2)}
.lime{color:var(--gl-lime-hot)}
.eyebrow{font:400 var(--t-body)/1 var(--font-display);text-transform:uppercase;color:var(--gl-lime);margin-bottom:var(--s3);display:inline-block;padding-bottom:var(--s2);border-bottom:2px solid var(--gl-lime-dim)}
.lead{font-size:var(--t-head);color:var(--gl-text-muted);max-width:620px}
.center{text-align:center}.center .lead{margin:0 auto}
.muted{color:var(--gl-text-muted)}

/* buttons: primary lime / ghost */
.btn{display:inline-flex;align-items:center;gap:var(--s2);font:400 var(--t-body)/1 var(--font-display);text-transform:uppercase;text-decoration:none;
  height:48px;padding:0 var(--s4);border:3px solid var(--gl-track);color:var(--gl-text);background:transparent;cursor:pointer;transition:transform var(--dur-press) var(--ease-out),box-shadow var(--dur-press) var(--ease-out),filter var(--dur-press) ease,border-color var(--dur-press) ease}
.btn:hover{border-color:var(--gl-line);filter:brightness(1.1)}
.btn:active{transform:translateY(2px)}
.btn:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid var(--gl-focus);outline-offset:3px}
.btn.primary{height:60px;padding:0 var(--s5);font-size:var(--t-head);background:var(--gl-lime-hot);border-color:var(--gl-lime-hot);color:var(--gl-void);
  filter:drop-shadow(0 0 18px color-mix(in srgb,var(--gl-lime-hot) 35%,transparent));box-shadow:var(--gl-shadow)}
.btn.primary:hover{border-color:var(--gl-text);filter:drop-shadow(0 0 26px color-mix(in srgb,var(--gl-lime-hot) 55%,transparent))}
.btn.primary:active{box-shadow:none;transform:translate(4px,4px)}

/* nav */
nav{position:sticky;top:0;z-index:50;background:var(--gl-body);border-bottom:2px solid var(--gl-frame)}
nav .wrap{display:flex;align-items:center;gap:var(--s4);height:64px}
nav img{height:56px;width:auto}
nav .links{margin-left:auto;display:flex;gap:var(--s4);font:400 var(--t-cap) var(--font-display);text-transform:uppercase}
nav .links{gap:var(--s2)}nav .links a{display:inline-flex;align-items:center;height:40px;padding:0 var(--s3);border:2px solid var(--gl-track);text-decoration:none;color:var(--gl-text)}nav .links a:hover{border-color:var(--gl-line)}
nav .btn{height:40px;font-size:var(--t-cap);padding:0 var(--s3);background:var(--gl-lime-hot);border-color:var(--gl-lime-hot);color:var(--gl-void)}

/* hero */
.hero{padding:var(--s6) 0 var(--s7);background:var(--gl-body);overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:1.05fr 1fr;gap:var(--s5);align-items:center}
.hero p.lead{margin:var(--s4) 0 var(--s5)}
.hero .cta{display:flex;gap:var(--s3);flex-wrap:wrap;align-items:center}
.hero .fine,.midcta .fine,.final .fine{margin-top:var(--s3);font-size:var(--t-cap);color:var(--gl-text-muted)}
.stage{perspective:1400px;position:relative;min-height:440px}
.tilt{transform-style:preserve-3d;transition:transform var(--dur-press) var(--ease-out);will-change:transform}
.window{position:relative;border:4px solid var(--gl-frame);background:var(--gl-void);box-shadow:var(--gl-shadow)}
.window .bar{display:flex;gap:var(--s2);align-items:center;background:var(--gl-frame);height:32px;padding:0 var(--s3);font:400 12px var(--font-display);text-transform:uppercase;color:var(--gl-body)}
.window .bar i{width:10px;height:10px;background:var(--gl-body);display:block}
.window .shot{aspect-ratio:16/9;position:relative;background:url(/assets/preview-background.webp) center/cover;display:grid;place-items:center start;padding-left:var(--s4)}
.window .shot b{font:400 18px var(--font-display);color:var(--gl-lime-hot);text-transform:uppercase;text-align:center;line-height:1.4}
.window .shot small{display:block;color:var(--gl-text-muted);font:400 var(--t-cap) var(--font-ui);text-transform:none}
.tl{padding:var(--s3);display:grid;gap:6px;background:var(--gl-body)}
.tl .row{height:20px;background:var(--gl-void);position:relative;display:flex;gap:4px}
.tl .row span{display:block;height:100%;background:var(--gl-lime-dim)}
.tl .row span.on{background:var(--gl-lime-hot)}
.tl .row.b span{background:var(--gl-track)}
.float{position:absolute;transform-style:preserve-3d}
.float.glimm{right:-40px;bottom:-70px;width:min(230px,42%);transform:translateZ(120px);filter:drop-shadow(8px 10px 0 var(--gl-void));animation:bob 3.6s steps(6) infinite}
.float.chip{padding:var(--s2) var(--s3);background:var(--gl-void);border:3px solid var(--gl-lime);font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-lime-hot);white-space:nowrap}
.float.c1{top:-18px;left:-30px;transform:translateZ(90px)}
.float.c2{top:18%;right:-30px;transform:translateZ(60px);border-color:var(--gl-purple);color:var(--gl-text)}
@keyframes bob{50%{translate:0 -10px}}

/* strip / pain */
.strip{background:var(--gl-void);border-block:2px solid var(--gl-frame);padding:var(--s6) 0}
.versus{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--s4);align-items:stretch}
.versus .card{padding:var(--s4);border:3px solid var(--gl-track);background:var(--gl-body)}
.versus .card.good{border-color:var(--gl-lime);box-shadow:var(--gl-shadow)}
.versus .arrow{align-self:center;font:400 var(--t-title) var(--font-display);color:var(--gl-lime-hot)}
.versus li{list-style:none;padding:var(--s2) 0;border-bottom:2px solid var(--gl-raised)}
.versus li:last-child{border:0}
.versus .bad li::before{content:"x  ";color:var(--gl-danger);font-family:var(--font-display)}
.versus .good li::before{content:"+  ";color:var(--gl-success);font-family:var(--font-display)}

/* numbers */
.nums{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s3);margin-top:var(--s6)}
.num{padding:var(--s4);background:var(--gl-neutral-card);border:3px solid var(--gl-track);text-align:center}
.num strong{display:block;font:400 var(--t-hero)/1.1 var(--font-display);color:var(--gl-lime-hot)}
.num span{color:var(--gl-text-muted);font-size:var(--t-cap)}
.num em{font-style:normal;color:var(--gl-lime);font-size:var(--t-cap)}

/* no-ai */
.noai{background:var(--gl-void);overflow:hidden}
.noai .badge{display:inline-block;color:var(--gl-lime-hot);font:400 var(--t-head) var(--font-display);text-transform:uppercase;padding-bottom:var(--s2);margin-bottom:var(--s4);border-bottom:4px solid var(--gl-lime-dim)}
.noai h2{font-size:var(--t-hero);max-width:860px}
.pipe{perspective:1600px;margin-top:var(--s6);display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3)}
.step{background:var(--gl-body);border:4px solid var(--gl-frame);padding:var(--s4);transition:transform var(--dur-hover) var(--ease-in-out),border-color var(--dur-hover) ease;box-shadow:0 14px 0 var(--gl-void)}
.step:nth-child(1){--ry:12deg}.step:nth-child(2){--ry:4deg}.step:nth-child(3){--ry:-4deg}.step:nth-child(4){--ry:-12deg}
.step:hover{border-color:var(--gl-lime)}
.step .n{font:400 var(--t-title)/1 var(--font-display);color:var(--gl-lime-dim);margin-bottom:var(--s3)}
.step p{color:var(--gl-text-muted)}
.step ul{list-style:none;margin-top:var(--s3);font-size:var(--t-cap);color:var(--gl-text)}
.step li{padding:3px 0}.step li::before{content:"> ";color:var(--gl-lime-dim)}
.score{margin-top:var(--s6);display:grid;grid-template-columns:1.1fr 1fr;gap:var(--s5);align-items:center}
.formula{padding:var(--s4);background:var(--gl-void);border:3px solid var(--gl-lime);font:400 var(--t-head)/1.8 var(--font-display);text-transform:uppercase;box-shadow:var(--gl-shadow)}
.formula small{display:block;font:400 var(--t-cap) var(--font-ui);text-transform:none;color:var(--gl-text-muted);margin-top:var(--s2)}
.perks{display:grid;grid-template-columns:1fr 1fr;gap:var(--s2) var(--s3);list-style:none}
.perks li{padding:var(--s2) 0 var(--s2) 28px;position:relative;font-weight:700}
.perks li::before{content:"";position:absolute;left:0;top:14px;width:12px;height:12px;background:var(--gl-lime-dim)}
.honest{margin-top:var(--s4);font-size:var(--t-cap);color:var(--gl-text-muted);border-left:4px solid var(--gl-lime-dim);padding-left:var(--s3)}

/* features */
.tabs{display:flex;gap:var(--s2);margin:var(--s5) 0 var(--s4);flex-wrap:wrap}
.tabs button{font:400 var(--t-cap) var(--font-display);text-transform:uppercase;height:44px;padding:0 var(--s4);background:transparent;color:var(--gl-text-muted);border:3px solid var(--gl-track);cursor:pointer}
.tabs button[aria-selected=true]{background:var(--gl-purple);border-color:var(--gl-purple);color:var(--gl-text)}
.panel{display:none;grid-template-columns:1fr 1.1fr;gap:var(--s5);align-items:center}
.panel.on{display:grid;animation:pop 180ms var(--ease-out)}
@keyframes pop{from{opacity:0;translate:0 8px}}
.panel ul{list-style:none;margin-top:var(--s3)}
.panel li{padding:var(--s2) 0 var(--s2) 28px;position:relative}
.panel li::before{content:"";position:absolute;left:0;top:14px;width:12px;height:12px;background:var(--gl-lime-dim)}
.mock{perspective:1200px}
.mock .tilt{border:4px solid var(--gl-frame);background:var(--gl-void);padding:var(--s3);box-shadow:-12px 14px 0 var(--gl-void)}
.cap{font:400 var(--t-head)/1.3 var(--font-display);text-transform:uppercase;text-align:center;padding:var(--s5) var(--s3);background:url(/assets/preview-background.webp) center/cover}
.cap span{background:var(--gl-void);padding:2px 8px;display:inline-block;margin:3px}.cap .hl{background:var(--gl-lime-hot);color:var(--gl-void)}
.caplist{display:grid;gap:6px;margin-top:var(--s3);font-size:var(--t-cap)}
.caplist div{padding:var(--s2) var(--s3);background:var(--gl-raised);border:2px solid transparent}
.caplist div.sel{border-color:var(--gl-purple);background:var(--gl-purple-dim)}
.phones{display:flex;gap:var(--s3);justify-content:center;align-items:flex-end}
.phone{width:30%;aspect-ratio:9/16;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-track);position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:var(--s2);font:400 11px/1.3 var(--font-display);text-transform:uppercase}
.phone:nth-child(2){width:36%;border-color:var(--gl-lime);transform:translateZ(40px)}
.phone .hook{background:var(--gl-lime-hot);color:var(--gl-void);padding:4px 6px}
.phone .camb{width:44%;aspect-ratio:1;border:3px solid var(--gl-purple);background:var(--gl-raised);align-self:flex-end}
.phone .bar{height:6px;background:var(--gl-lime-dim)}.phone .bar i{display:block;height:100%;width:60%;background:var(--gl-lime-hot)}

/* presets */
.presets{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s4);margin-top:var(--s6);perspective:1400px}
.preset{--c:var(--gl-lime);position:relative;background:var(--gl-void);overflow:hidden}
.preset::after{content:"";position:absolute;inset:-4px;box-shadow:0 0 22px var(--c);opacity:0;transition:opacity var(--dur-hover) ease;pointer-events:none}
.preset:nth-child(even){--r:2deg}
.preset img,.preset video{width:100%;aspect-ratio:288/384;object-fit:cover}
.preset h3{margin:0;padding:var(--s3);text-align:center;color:var(--c);background:var(--gl-body)}

/* how */
.how{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s4);margin-top:var(--s6);counter-reset:s}
.how > div{padding:var(--s5) var(--s4);border:3px solid var(--gl-track);background:var(--gl-void);position:relative}
.how > div::before{counter-increment:s;content:counter(s);position:absolute;top:-24px;left:var(--s4);width:48px;height:48px;display:grid;place-items:center;background:var(--gl-lime-dim);color:var(--gl-text);font:400 var(--t-head) var(--font-display)}
.how p{color:var(--gl-text-muted)}

/* faq */
.faq{max-width:760px;margin:var(--s6) auto 0}
details{border:3px solid var(--gl-track);background:var(--gl-void);margin-bottom:var(--s3)}
summary{cursor:pointer;padding:var(--s3) var(--s4);font:400 var(--t-body) var(--font-display);text-transform:uppercase;list-style:none;display:flex;justify-content:space-between;gap:var(--s3)}
summary::after{content:"+";color:var(--gl-lime-dim)}details[open] summary::after{content:"-";color:var(--gl-lime-hot)}
details[open]{border-color:var(--gl-lime)}
details p{padding:0 var(--s4) var(--s4);color:var(--gl-text-muted)}
details::details-content{block-size:0;overflow:hidden;transition:block-size var(--dur-hover) var(--ease-out),content-visibility var(--dur-hover) allow-discrete}
details[open]::details-content{block-size:auto}

/* final */
.final{background:var(--gl-void);border-top:2px solid var(--gl-frame);overflow:hidden}
.final .wrap{display:grid;grid-template-columns:1fr 280px;gap:var(--s5);align-items:center}
.say{display:inline-block;padding:var(--s3) var(--s4);border:3px solid var(--gl-lime);background:var(--gl-body);margin:var(--s4) 0;font-size:var(--t-head);position:relative}
.say img{display:inline;width:28px;vertical-align:middle;margin-right:var(--s2)}
footer{padding:var(--s4) 0;background:var(--gl-void);border-top:2px solid var(--gl-frame);color:var(--gl-text-muted);font-size:var(--t-cap)}
footer .wrap{display:flex;justify-content:space-between;gap:var(--s3);flex-wrap:wrap}

/* reveal */
.js .rv{opacity:0;translate:0 56px;scale:.94;filter:blur(8px);transition:opacity .7s var(--ease-out),translate .8s cubic-bezier(.2,.8,.2,1),scale .8s cubic-bezier(.2,.8,.2,1),filter .7s ease-out}
.js .rv.in{opacity:1;translate:none;scale:1;filter:none}

@media (max-width:900px){
  section{padding:var(--s6) 0}
  .hero .wrap,.score,.panel,.final .wrap{grid-template-columns:1fr}
  .stage{min-height:0;margin-top:var(--s4)}
  .window{transform:none}
  .float.c1{left:0}.float.c2{right:0}.float.glimm{right:0}
  .pipe,.presets,.how,.nums{grid-template-columns:1fr 1fr}
  .versus{grid-template-columns:1fr}.versus .arrow{transform:rotate(90deg);justify-self:center}
  .step{transform:none!important}
  .how > div,.how > div:nth-child(n){transform:none!important}
  nav .links{display:none}nav .btn{margin-left:auto}
  .final img.big{max-width:200px}
}
@media (max-width:560px){.pipe,.presets,.how,.nums,.perks{grid-template-columns:1fr}.btn.primary{width:100%;justify-content:center}}
/* hover motion only for a real mouse, and not for reduced motion (touch taps leave a stuck hover) */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
}
@media (hover:hover) and (pointer:fine){.preset:hover::after{opacity:1}}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important}
  .js .rv{opacity:1;translate:none;transition:none}
  .window{transform:none}
  .btn:active,.btn.primary:active,.page .hub li:active{transform:none}
  details::details-content{transition:none}
}

/* round 1 fixes */
ul{padding:0}
.midcta{padding:0 var(--s4) var(--s7)}
.how > div{background:var(--gl-void)}
#how{background:var(--gl-body)}
.num{display:flex;flex-direction:column;justify-content:center;min-height:150px}
/* mobile hardening */
html{overflow-x:hidden}
.wrap>*,.panel>*,.score>*{min-width:0}
@media (max-width:900px){.hero .wrap,.score,.panel,.final .wrap{grid-template-columns:minmax(0,1fr)}.float.chip{font-size:var(--t-cap)}.float.c1{left:0;top:-14px}.float.c2{right:0}}
@media (max-width:560px){.nums{grid-template-columns:1fr 1fr}.num{min-height:120px}.num strong{font-size:var(--t-head)}.stage{margin-right:0}.float.glimm{right:-8px;bottom:-50px;width:36%}.hero{padding-bottom:var(--s7)}.window .shot b{font-size:var(--t-cap)}}

/* round 1 design check */
.chips{display:flex;gap:var(--s2);flex-wrap:wrap;margin-top:var(--s4)}
.chips{gap:var(--s4)}.chips span{font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-text-muted);display:inline-flex;align-items:center;gap:var(--s2)}.chips span::before{content:"";width:8px;height:8px;background:var(--gl-lime-dim)}
.ticker{overflow:hidden;background:var(--gl-lime-hot);color:var(--gl-void);border-block:3px solid var(--gl-void);position:relative;z-index:2}
.ticker .track{display:flex;width:max-content;animation:tick 40s linear infinite}
.ticker span{font:400 var(--t-head) var(--font-display);text-transform:uppercase;padding:var(--s3) var(--s4);white-space:nowrap}
.ticker span::after{content:"";display:inline-block;width:12px;height:12px;background:var(--gl-void);margin-left:var(--s4)}
@keyframes tick{to{transform:translateX(-50%)}}
.why{margin-top:var(--s6);max-width:560px;padding:var(--s4);border:3px solid var(--gl-purple);background:var(--gl-void);box-shadow:var(--gl-shadow)}
.whyhead{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s3)}.whyhead img{width:40px}.whyhead h3{margin:0}
.bars{display:grid;gap:var(--s2);margin-bottom:var(--s3)}
.bars div{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:var(--s3);font-size:var(--t-cap)}
.bars i{display:block;height:14px;background:var(--gl-raised);position:relative}
.bars i::after{content:"";position:absolute;inset:0;width:var(--w);background:var(--gl-lime-hot)}
#features{padding-top:var(--s7)}

.whyrow{display:grid;grid-template-columns:minmax(0,560px) 1fr;gap:var(--s5);align-items:center;margin-top:var(--s6)}
.whyrow .why{margin-top:0}
@media (max-width:900px){.whyrow{grid-template-columns:minmax(0,1fr)}}
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:16px;top:16px;z-index:1000;padding:var(--s2) var(--s3);background:var(--gl-lime-hot);color:var(--gl-void);font-family:var(--font-display)}

/* content pages (all subpages share these; no per-page <style>) */
.page{padding-block:var(--s6)}
.page .crumbs{font-size:var(--t-cap);margin-bottom:var(--s3)}
.page h1{margin-bottom:var(--s4)}
.page h2{margin-top:var(--s6)}
.page p,.page li{max-width:70ch}
.page ul,.page ol{padding-left:1.2em}
.page .cta{display:flex;gap:var(--s3);flex-wrap:wrap;margin-block:var(--s4)}
.page table{border-collapse:collapse;width:100%;margin-block:var(--s4)}
.page th,.page td{border:2px solid var(--gl-frame);padding:var(--s2) var(--s3);text-align:left;vertical-align:top}
.page .tablewrap{overflow-x:auto}
/* hub cards: the whole card is the link, so the box is as clickable as it looks */
.page .hub{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:var(--s4);margin-block:var(--s4)}
.page .hub li{max-width:none}
.page .hub li{position:relative;border:3px solid var(--gl-track);background:var(--gl-void);padding:var(--s3) var(--s4);box-shadow:var(--gl-shadow);transition:border-color var(--dur-press) ease,transform var(--dur-press) var(--ease-out)}
.page .hub li:hover,.page .hub li:focus-within{border-color:var(--gl-lime)}
.page .hub li:active{transform:translateY(2px)}
.page .hub h3{margin:0 0 var(--s2)}
.page .hub a{text-decoration:none}
.page .hub a::after{content:"";position:absolute;inset:0}
.page .hub a:focus-visible{outline:none}
.page .hub li:has(a:focus-visible){outline:3px solid var(--gl-focus);outline-offset:3px}
.page .hub p{margin:0;color:var(--gl-text-muted)}

/* scroll progress bar + mascot parallax (CSS scroll-driven; ignored where unsupported) */
@supports (animation-timeline:scroll()){
  nav::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:4px;background:var(--gl-lime-hot);transform-origin:0 50%;transform:scaleX(0);animation:progress linear both;animation-timeline:scroll(root)}
  @keyframes progress{to{transform:scaleX(1)}}
  .final img.big{animation:drift linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
  @keyframes drift{from{translate:0 60px}to{translate:0 -60px}}
}
@media (prefers-reduced-motion:reduce){nav::after,.final img.big{animation:none!important}}

/* content-page building blocks: steps (.how), stat tiles (.nums), before/after (.versus), tick lists (.perks) */
.page .how{margin-top:var(--s6);padding-bottom:0;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.page .how > div{padding-top:var(--s5)}
.page .how h3{font-size:var(--t-body)}
.page .how p{max-width:none;margin:0}
.page .nums{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-top:var(--s4)}
.page .num strong{font-size:var(--t-title)}
.page .versus{margin-block:var(--s4)}
.page .perks{max-width:none;padding:0;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.page .perks li{max-width:none}
.page .perks li::before{background:var(--gl-success)}
.page th{background:var(--gl-void);color:var(--gl-lime-hot);font:400 var(--t-cap) var(--font-display);text-transform:uppercase}
.page td:first-child{font-weight:700;white-space:nowrap}
.page .formula{margin-block:var(--s4)}
.page .lead{margin-bottom:var(--s4)}
@media (max-width:560px){.page td:first-child{white-space:normal}}

/* hero: the stream (grey) collapses to its highlights (lime), once */
.sieve{display:flex;gap:3px;height:68px;padding:var(--s3);background:var(--gl-body)}
.sieve span{flex:1 1 0;min-width:0;background:var(--gl-track);animation:sift .9s var(--ease-in-out) 1.2s both}
.sieve span.hit{background:var(--gl-lime-hot);animation:none}
@keyframes sift{to{flex-grow:0;opacity:0;margin-right:-3px}}
@media (prefers-reduced-motion:reduce){.sieve span:not(.hit){display:none}}

/* one visual per content page */
.page .demo{max-width:460px;margin-block:var(--s4);border:4px solid var(--gl-frame);background:var(--gl-void);padding:var(--s3)}
.page .demo.wide{max-width:520px}
.page .demo .tl{padding:0}
.page .demo .sieve{padding:0}
.page .demo .cap{font-size:var(--t-body)}

/* more motion: bars fill as they scroll in, cards lift, buttons shine */
@supports (animation-timeline:view()){
  .bars i::after{animation:fillbar linear both;animation-timeline:view();animation-range:entry 10% entry 90%}
  @keyframes fillbar{from{width:0}to{width:var(--w)}}
  .tl .row span{animation:growx linear both;animation-timeline:view();animation-range:entry 0% entry 100%;transform-origin:0 50%}
  @keyframes growx{from{transform:scaleX(0)}to{transform:scaleX(1)}}
}
.btn.primary{position:relative;overflow:hidden}
.btn.primary::after{content:"";position:absolute;top:0;bottom:0;left:-40%;width:30%;background:rgba(255,255,255,.45);transform:skewX(-20deg);transition:left .5s var(--ease-out)}
@media (hover:hover){
  .btn.primary:hover::after{left:120%}
  .num,.page .hub li,.step{transition:transform var(--dur-hover) var(--ease-out),border-color var(--dur-hover) ease}
  .num:hover{transform:translateY(-6px);border-color:var(--gl-lime)}
  .float.chip{animation:bob 3.6s steps(6) infinite}
  .float.c2{animation-delay:-1.8s}
}
@media (prefers-reduced-motion:reduce){.bars i::after,.tl .row span,.btn.primary::after{animation:none!important}}

/* hero: "no AI" badge */
.aibadge{display:inline-flex;align-items:center;gap:var(--s3);margin-bottom:var(--s4);padding:var(--s2) var(--s4) var(--s2) var(--s3);border:3px solid var(--gl-lime-dim);background:var(--gl-void);font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-lime-hot)}
.aibadge svg{image-rendering:pixelated;flex:none}

/* subtitles demo: words light up one by one, style picker, editable line */
.subdemo .cap .w{background:var(--gl-void);padding:2px 8px;display:inline-block;margin:3px;animation:wordhl 3.6s steps(1) infinite;animation-delay:calc(var(--i) * .6s)}
@keyframes wordhl{0%{background:var(--gl-lime-hot);color:var(--gl-void)}16.6%,100%{background:var(--gl-void);color:var(--gl-text)}}
.stylerow{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;margin-top:var(--s3);font-size:var(--t-cap)}
.stylerow b{color:var(--gl-text-muted);font-weight:400;margin-right:var(--s1)}
.stylerow i{font-style:normal;padding:var(--s1) var(--s3);border:2px solid var(--gl-track)}
.stylerow i.sel{background:var(--gl-purple);border-color:var(--gl-purple)}
.caret{display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:text-bottom;background:var(--gl-text);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
/* shorts demo: platform safe zones + loop */
.zones{display:flex;gap:var(--s3);justify-content:center}
.zphone{flex:1;max-width:30%;margin:0}
.zscreen{position:relative;aspect-ratio:9/16;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-track)}
.zscreen i{position:absolute;background:var(--gl-void);border:2px dashed var(--gl-danger)}
.zt{left:0;right:0;top:0;height:var(--t)}.zb{left:0;right:0;bottom:0;height:var(--b)}.zr{right:0;width:var(--r);top:var(--t);bottom:var(--b)}
.zphone figcaption{margin-top:var(--s2);text-align:center;font-size:var(--t-cap)}
.zhint{margin:var(--s3) 0 0;font-size:var(--t-cap);color:var(--gl-text-muted)}
.loopbar{display:flex;align-items:center;gap:var(--s3);margin-top:var(--s3);font-size:var(--t-cap)}
.loopbar b{font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-lime-hot)}
.loopbar .bar{flex:1;height:8px;background:var(--gl-raised)}
.loopbar .bar i{display:block;height:100%;background:var(--gl-lime-hot);animation:loop 3s linear infinite}
@keyframes loop{from{width:0}to{width:100%}}
@media (prefers-reduced-motion:reduce){.subdemo .cap .w,.caret,.loopbar .bar i{animation:none}.loopbar .bar i{width:60%}}

/* feature tabs: icon tiles instead of bullet lists */
.icons{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-block:var(--s4);max-width:420px}
.ico{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding:var(--s4) var(--s3);background:var(--gl-void);border:3px solid var(--gl-track);color:var(--gl-lime-hot);text-align:center;transition:transform var(--dur-hover) var(--ease-out),border-color var(--dur-hover) ease}
.ico span{font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-text)}
@media (hover:hover){.ico:hover{transform:translateY(-6px);border-color:var(--gl-lime)}}

/* animated mini-figures inside the feature tiles */
.fig{position:relative;width:104px;height:64px;display:grid;place-items:center}
.fbars{display:flex;gap:4px}.fbars i{display:block;width:22px;height:22px;background:var(--gl-lime-dim)}
.fbars .a{background:var(--gl-lime-hot);animation:fa 3.2s ease-in-out infinite}.fbars .b,.fbars .c{animation:fb 3.2s ease-in-out infinite}
@keyframes fa{0%,15%{translate:0}45%,70%{translate:52px}100%{translate:0}}
@keyframes fb{0%,15%{translate:0}45%,70%{translate:-26px}100%{translate:0}}
.ftrim{position:relative;width:76px;height:22px;background:var(--gl-lime-dim);animation:ft 3.2s ease-in-out infinite;justify-self:start;margin-left:14px}
.ftrim::after{content:"";position:absolute;right:0;top:-4px;bottom:-4px;width:5px;background:var(--gl-lime-hot)}
@keyframes ft{0%,15%{width:76px}45%,70%{width:40px}100%{width:76px}}
.stay i:not(.keep){animation:fr 3.2s steps(1) infinite;background:var(--gl-track)}.stay i:nth-child(3){animation-delay:.15s}.stay i:nth-child(4){animation-delay:.3s}
.stay .keep{background:var(--gl-lime-hot)}
@keyframes fr{0%,30%{opacity:1}40%,70%{opacity:.15}80%,100%{opacity:1}}
.tr{gap:3px}.tr .t{width:8px;background:var(--gl-lime-hot)}.tr .long{width:44px;background:var(--gl-track)}
.fclick{display:grid;gap:5px;justify-items:center}
.fclick b{width:44px;height:16px;background:var(--gl-lime-hot);animation:fp 3s steps(1) infinite}
@keyframes fp{0%,12%{translate:0 0}14%,22%{translate:0 2px}24%,100%{translate:0 0}}
.fclick u{display:block;transform-origin:0 50%;height:6px;background:var(--gl-track);animation:fl 3s steps(6) infinite}
.fclick u:nth-of-type(1){width:70px}.fclick u:nth-of-type(2){width:56px;animation-delay:.1s}.fclick u:nth-of-type(3){width:62px;animation-delay:.2s}
@keyframes fl{0%,20%{scale:0 1}50%,100%{scale:1 1}}
.fwords{display:flex;gap:5px}.fwords i{display:block;width:20px;height:14px;background:var(--gl-void);border:2px solid var(--gl-track);animation:wordhl 2.4s steps(1) infinite;animation-delay:calc(var(--i) * .6s)}
.fstyles{display:flex;gap:6px}.fstyles i{display:block;width:24px;height:24px;border:3px solid var(--gl-track);animation:fs 3.6s steps(1) infinite;animation-delay:calc(var(--i) * 1.2s - 1.2s)}
@keyframes fs{0%{background:var(--gl-purple);border-color:var(--gl-purple)}33.3%,100%{background:transparent;border-color:var(--gl-track)}}
.ftype{display:flex;gap:4px;align-items:center}.ftype i{display:block;height:10px;width:34px;background:var(--gl-track)}.ftype .fix{width:22px;background:var(--gl-lime-hot)}
.ftype em{width:2px;height:16px;background:var(--gl-text);animation:blink 1s steps(1) infinite}
.fph{position:relative;width:34px;height:60px;border:3px solid var(--gl-track);background:var(--gl-body);overflow:hidden}
.fcam{position:absolute;background:var(--gl-lime-hot);animation:fcm 3s ease-in-out infinite}
@keyframes fcm{0%,40%{top:3px;left:3px;width:22px;height:14px}60%,100%{top:34px;left:14px;width:12px;height:12px}}
.fhook{position:absolute;left:3px;right:3px;top:4px;height:8px;background:var(--gl-lime-hot);animation:fh 3s steps(5) infinite}
@keyframes fh{0%{translate:0 -12px;opacity:0}30%,100%{translate:0;opacity:1}}
.floop{width:70px;height:8px;background:var(--gl-raised)}.floop i{display:block;height:100%;background:var(--gl-lime-hot);animation:loop 2.4s linear infinite}
.zn i{position:absolute;border:2px dashed var(--gl-danger);background:var(--gl-void);animation:fz 2.4s steps(1) infinite}
.zt2{left:0;right:0;top:0;height:7px}.zb2{left:0;right:0;bottom:0;height:12px}.zr2{right:0;width:7px;top:7px;bottom:12px}
@keyframes fz{0%,50%{opacity:1}60%,100%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.fig *{animation:none!important}}

/* ---- background: editor grid + drifting sparkles + sweeping playhead (html[data-bg=ab]) ---- */
html[data-bg]{background:var(--gl-body)}
html[data-bg] body{background:transparent}
html[data-bg] .hero,html[data-bg] #how,html[data-bg] #features,html[data-bg] #faq,html[data-bg] .final,html[data-bg] .strip,html[data-bg] .noai,html[data-bg] #presets{background:transparent}
@keyframes sparkdrift{to{translate:0 -384px}}
@keyframes twinkle{0%{opacity:.5}50%{opacity:.1}}
@keyframes sweep{from{translate:0 0}to{translate:calc(100vw + 4px) 0}}
html[data-bg] body::before,html[data-bg] body::after,html[data-bg]::before,html[data-bg]::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none}
html[data-bg] body::before{background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2232%22 height=%2232%22%3E%3Crect width=%2232%22 height=%221%22 fill=%22%232b2b29%22/%3E%3Crect width=%221%22 height=%2232%22 fill=%22%232b2b29%22/%3E%3C/svg%3E") 0 0/32px 32px,url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%22128%22 height=%22128%22%3E%3Crect width=%22128%22 height=%222%22 fill=%22%233a3d38%22/%3E%3Crect width=%222%22 height=%22128%22 fill=%22%233a3d38%22/%3E%3C/svg%3E") 0 0/128px 128px}
html[data-bg] body::after{background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2248%22 height=%2248%22 shape-rendering=%22crispEdges%22%3E%3Crect x=%226%22 y=%227%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%225%22 y=%228%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%226%22 y=%228%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%227%22 y=%228%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%226%22 y=%229%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2233%22 y=%2225%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2232%22 y=%2226%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2233%22 y=%2226%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2234%22 y=%2226%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2233%22 y=%2227%22 width=%221%22 height=%221%22 fill=%22%235e7a12%22/%3E%3Crect x=%2234%22 y=%2210%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2235%22 y=%2210%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2212%22 y=%2236%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2242%22 y=%2243%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2241%22 y=%2244%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2242%22 y=%2244%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2243%22 y=%2244%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2242%22 y=%2245%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2220%22 y=%2230%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3Crect x=%2226%22 y=%226%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3Crect x=%2244%22 y=%2216%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3Crect x=%223%22 y=%2224%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3Crect x=%2224%22 y=%2242%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3Crect x=%2215%22 y=%2219%22 width=%221%22 height=%221%22 fill=%22%23585d56%22/%3E%3C/svg%3E") 0 0/192px 192px;image-rendering:pixelated;animation:sparkdrift 60s linear infinite}
html[data-bg]::before{width:4px;left:-4px;right:auto;background:var(--gl-lime-dim);animation:sweep 18s linear infinite}
html[data-bg]::after{background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2264%22 height=%2264%22 shape-rendering=%22crispEdges%22%3E%3Crect x=%2214%22 y=%2249%22 width=%221%22 height=%221%22 fill=%22%23a8f300%22/%3E%3Crect x=%2213%22 y=%2250%22 width=%221%22 height=%221%22 fill=%22%23a8f300%22/%3E%3Crect x=%2214%22 y=%2250%22 width=%221%22 height=%221%22 fill=%22%23a8f300%22/%3E%3Crect x=%2215%22 y=%2250%22 width=%221%22 height=%221%22 fill=%22%23a8f300%22/%3E%3Crect x=%2214%22 y=%2251%22 width=%221%22 height=%221%22 fill=%22%23a8f300%22/%3E%3Crect x=%2250%22 y=%2212%22 width=%221%22 height=%221%22 fill=%22%23c4e122%22/%3E%3Crect x=%2252%22 y=%2239%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2251%22 y=%2240%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2252%22 y=%2240%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2253%22 y=%2240%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%2252%22 y=%2241%22 width=%221%22 height=%221%22 fill=%22%236c59f3%22/%3E%3Crect x=%228%22 y=%2210%22 width=%221%22 height=%221%22 fill=%22%23808080%22/%3E%3Crect x=%2230%22 y=%2222%22 width=%221%22 height=%221%22 fill=%22%23808080%22/%3E%3Crect x=%2240%22 y=%2258%22 width=%221%22 height=%221%22 fill=%22%23808080%22/%3E%3Crect x=%2258%22 y=%2228%22 width=%221%22 height=%221%22 fill=%22%23808080%22/%3E%3C/svg%3E") 0 0/256px 256px;image-rendering:pixelated;animation:twinkle 4s steps(2) infinite}
@media (prefers-reduced-motion:reduce){html[data-bg] body::before,html[data-bg] body::after,html[data-bg]::before,html[data-bg]::after{animation:none}}

/* calmer background: sparser, fainter */
html[data-bg] body::before{opacity:.55}
html[data-bg] body::after{background-size:384px 384px;opacity:.5}
html[data-bg]::after{background-size:512px 512px}
html[data-bg]::before{opacity:.6}

/* before/after: a busy pro editor morphs into the Glimmer layout, then four point-by-point rows */
.morph{margin-bottom:var(--s5)}
.mlabel{position:relative;height:28px;font:400 var(--t-head) var(--font-display);text-transform:uppercase;margin-bottom:var(--s3)}
.mlabel span{position:absolute;left:0;top:0}
.m1{color:var(--gl-danger);animation:mlab1 8s infinite steps(1)}
.m2{color:var(--gl-lime-hot);animation:mlab2 8s infinite steps(1)}
@keyframes mlab1{0%,42%{opacity:1}43%,95%{opacity:0}96%,100%{opacity:1}}
@keyframes mlab2{0%,42%{opacity:0}43%,95%{opacity:1}96%,100%{opacity:0}}
.mwin{display:grid;grid-template-areas:"menu menu menu" "bin prev insp" "tl tl tl";border:4px solid var(--gl-frame);background:var(--gl-void);overflow:hidden;height:340px;grid-template-rows:20px 1fr auto;grid-template-columns:96px 1fr 96px;animation:mgrid 8s ease-in-out infinite}
@keyframes mgrid{0%,35%{grid-template-columns:96px 1fr 96px;grid-template-rows:20px 1fr auto}50%,85%{grid-template-columns:0px 1fr 0px;grid-template-rows:0px 1fr auto}100%{grid-template-columns:96px 1fr 96px;grid-template-rows:20px 1fr auto}}
.mmenu{grid-area:menu;display:flex;gap:4px;align-items:center;padding:0 6px;background:var(--gl-frame);overflow:hidden}
.mmenu i{display:block;flex:none;width:30px;height:8px;background:var(--gl-body)}
.mbin{grid-area:bin;display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;align-content:start;background:var(--gl-body);overflow:hidden}
.mbin i{display:block;aspect-ratio:16/10;background:var(--gl-raised)}
.minsp{grid-area:insp;display:grid;gap:8px;padding:8px 6px;align-content:start;background:var(--gl-body);overflow:hidden}
.minsp b{display:block;height:6px;background:var(--gl-track)}
.mmenu,.mbin,.minsp{animation:mfade 8s ease-in-out infinite}
@keyframes mfade{0%,35%{opacity:1}50%,85%{opacity:0}100%{opacity:1}}
.mprev{grid-area:prev;position:relative;display:grid;place-items:center;background:url(/assets/preview-background.webp) center/cover;min-width:0}
.mprev u{width:40px;height:40px;background:var(--gl-lime-hot);clip-path:polygon(20% 10%,20% 90%,90% 50%)}
.mtl{grid-area:tl;display:grid;gap:3px;padding:6px;background:var(--gl-body)}
.mtr{display:flex;gap:3px;height:22px;overflow:hidden;animation:mtr 8s ease-in-out infinite}
.mtr.ex{animation-name:mtrx}
@keyframes mtr{0%,35%{height:12px}50%,85%{height:26px}100%{height:12px}}
@keyframes mtrx{0%,35%{height:12px;opacity:1}50%,85%{height:0;opacity:0}100%{height:12px;opacity:1}}
.mtr i{display:block;background:var(--c);animation:mclr 8s ease-in-out infinite}
@keyframes mclr{0%,35%{background:var(--c)}50%,85%{background:var(--gl-lime-dim)}100%{background:var(--c)}}
.mtr:first-child i:nth-child(3){animation-name:mclr2}
@keyframes mclr2{0%,35%{background:var(--c)}50%,85%{background:var(--gl-lime-hot)}100%{background:var(--c)}}
.brows{display:grid;gap:var(--s3)}
.brow{display:grid;grid-template-columns:1fr auto 1fr;gap:var(--s3);align-items:stretch}
.bside{display:flex;align-items:center;gap:var(--s3);padding:var(--s3);background:var(--gl-body);border:3px solid var(--gl-track)}
.bside.good{border-color:var(--gl-lime)}
.bside span{flex:1}
.bside.bad span{color:var(--gl-text-muted)}
.barrow{align-self:center;font:400 var(--t-title) var(--font-display);color:var(--gl-lime-hot)}
.fig2{flex:none;width:120px;height:56px;display:grid;place-items:center}
.crawl{width:110px;height:10px;background:var(--gl-track);position:relative;overflow:hidden}
.crawl i{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--gl-danger);animation:crawl 8s linear infinite}
@keyframes crawl{to{left:100%}}
.sieve2{display:flex;gap:2px;width:110px;height:28px}
.sieve2 span{flex:1 1 0;min-width:0;background:var(--gl-track);animation:sift 3s var(--ease-in-out) infinite alternate}
.sieve2 span.hit{background:var(--gl-lime-hot);animation:none}
.typed{display:grid;gap:5px;width:110px}
.typed u{display:block;transform-origin:0 50%;height:7px;background:var(--gl-track);animation:typeln 4s steps(8) infinite}
.typed u:nth-child(2){animation-delay:.5s}
.typed u:nth-child(3){animation-delay:1s}
@keyframes typeln{0%{scale:0 1}70%,100%{scale:1 1}}
.crop{width:112px}
.crop .wide{position:relative;aspect-ratio:16/9;background:url(/assets/preview-background.webp) center/cover;border:2px solid var(--gl-track)}
.crop .wide i{position:absolute;top:-2px;bottom:-2px;width:34%;border:2px dashed var(--gl-lime-hot);animation:cropmv 4s ease-in-out infinite alternate}
@keyframes cropmv{from{left:0}to{left:66%}}
.phs{display:flex;gap:6px}
.phs i{display:block;width:26px;height:46px;background:url(/assets/preview-background.webp) center/cover;border:2px solid var(--gl-lime)}
@media (max-width:700px){.brow{grid-template-columns:1fr}.barrow{transform:rotate(90deg);justify-self:center}.mwin{height:260px}.mbin,.minsp{display:none}}
@media (prefers-reduced-motion:reduce){.mwin,.mmenu,.mbin,.minsp,.mtr,.mtr i,.m1,.m2,.crawl i,.sieve2 span,.typed u,.crop .wide i{animation:none!important}.m1{opacity:0}.mmenu,.mbin,.minsp,.mtr.ex{display:none}}

/* streamer section: wider tiles, chapter / thumbnail / marker figures */
.icons.wide{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));max-width:none}
.bside span{align-self:center}
.fchap{position:relative;width:96px;height:10px;background:var(--gl-track)}
.fchap i{position:absolute;left:var(--p);top:-8px;width:4px;height:26px;background:var(--gl-lime-hot);animation:chap 3.6s steps(1) infinite;animation-delay:var(--d)}
.fchap.tw i{background:var(--gl-purple)}
@keyframes chap{0%{opacity:0;scale:1 .2}10%,100%{opacity:1;scale:1 1}}
.fthumb{display:flex;gap:4px}
.fthumb i{display:block;width:20px;height:34px;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-track);animation:fthumb 4s steps(1) infinite}
.fthumb i:nth-child(2){animation-delay:1s}.fthumb i:nth-child(3){animation-delay:2s}.fthumb i:nth-child(4){animation-delay:3s}
@keyframes fthumb{0%{border-color:var(--gl-lime-hot)}25%,100%{border-color:var(--gl-track)}}
.fphs{display:flex;gap:6px}
.fphs .fph{width:26px;height:46px}
@media (prefers-reduced-motion:reduce){.fchap i,.fthumb i{animation:none!important}}

/* how + no-ai: every point is a small moving picture */
.gfig{display:grid;place-items:center;height:88px;margin-bottom:var(--s3);position:relative}
.gfig i,.gfig u,.gfig b{display:block;text-decoration:none}
.gdrop .box{width:84px;height:48px;border:3px dashed var(--gl-lime-dim);margin-top:30px}
.gdrop .file{position:absolute;width:28px;height:20px;background:var(--gl-lime-hot);top:0;animation:fall 3s var(--ease-in-out) infinite}
@keyframes fall{0%{translate:0 -6px;opacity:0}15%{opacity:1}55%,80%{translate:0 40px;opacity:1}100%{translate:0 40px;opacity:0}}
.grun .bar{width:130px;height:12px;background:var(--gl-raised);position:relative;margin-top:14px}
.grun .bar b{height:100%;width:0;background:var(--gl-lime-hot);animation:run 4s linear infinite}
@keyframes run{to{width:100%}}
.grun .dots{display:flex;gap:10px;margin-top:10px}
.grun .dots u{width:12px;height:12px;background:var(--gl-track);animation:dot 4s steps(1) infinite}
.grun .dots u:nth-child(2){animation-delay:1.3s}.grun .dots u:nth-child(3){animation-delay:2.6s}
@keyframes dot{0%{background:var(--gl-lime-hot)}33%,100%{background:var(--gl-track)}}
.gpost{display:flex;gap:10px;align-items:flex-end;justify-content:center}
.gpost i{animation:outpop 3.6s var(--ease-out) infinite;transform-origin:50% 100%}
.gpost .v{width:48px;height:30px;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-lime)}
.gpost .c{width:40px;height:30px;background:var(--gl-raised);display:grid;gap:5px;align-content:center;padding:0 6px;animation-delay:.4s}
.gpost .c u{height:4px;background:var(--gl-lime-hot)}
.gpost .p{width:22px;height:44px;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-lime);animation-delay:.8s}
@keyframes outpop{0%{scale:0}15%{scale:1.1}25%,85%{scale:1}100%{scale:0}}
.pipe3{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s5);margin-top:var(--s6)}
.t3{position:relative;text-align:center;padding:var(--s4) var(--s3);background:var(--gl-body);border:4px solid var(--gl-frame)}
.t3:not(:last-child)::after{content:">";position:absolute;right:calc(var(--s5) / -1 - 4px);top:50%;translate:0 -50%;width:var(--s5);text-align:center;font:400 var(--t-title) var(--font-display);color:var(--gl-lime-hot)}
.t3 h3{margin:0}
.geq-w{display:flex;gap:6px;align-items:center}
.geq-w i{width:22px;height:16px;background:var(--gl-void);border:2px solid var(--gl-track);animation:wordhl 3s steps(1) infinite;animation-delay:calc(var(--i) * .6s)}
.geq{display:flex;gap:5px;align-items:center}
.geq i{width:10px;height:60px;background:var(--gl-lime-hot);transform-origin:50% 50%;animation:eq 1.4s ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.23s)}
@keyframes eq{from{scale:1 .15}to{scale:1 1}}
.gwatch{width:120px;height:72px;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-track);place-items:end center;margin-inline:auto}
.gwatch .roi{position:absolute;left:10px;bottom:10px;width:44px;height:16px;border:2px dashed var(--gl-lime-hot);animation:blink 2s steps(1) infinite}
.gwatch b{position:absolute;left:12px;bottom:12px;font:400 11px var(--font-display);text-transform:uppercase;color:var(--gl-danger);animation:flash 2s steps(1) infinite}
@keyframes flash{0%,60%{opacity:0}61%,100%{opacity:1}}
.gscore{display:flex;gap:6px;align-items:flex-end}
.gscore i{width:14px;height:var(--h);background:var(--gl-track);transform-origin:50% 100%;animation:grow 3s var(--ease-out) infinite}
.gscore i.top{background:var(--gl-lime-hot)}
@keyframes grow{0%{scale:1 0}30%,85%{scale:1 1}100%{scale:1 0}}
.gadd{display:flex;gap:var(--s3);align-items:center;justify-content:center;flex-wrap:wrap;margin-top:var(--s6);font:400 var(--t-head) var(--font-display);text-transform:uppercase}
.gadd b{font-weight:400;padding:var(--s2) var(--s4);border:3px solid var(--gl-track);background:var(--gl-body)}
.gadd .e{border-color:var(--gl-purple)}.gadd .l{border-color:var(--gl-cat-fps)}.gadd .w{border-color:var(--gl-lime-dim)}
.gadd .s{border-color:var(--gl-lime-hot);color:var(--gl-lime-hot);animation:scoreglow 3s steps(1) infinite}
@keyframes scoreglow{0%,60%{background:var(--gl-body)}61%,100%{background:var(--gl-purple-dim)}}
.gadd u{text-decoration:none;color:var(--gl-lime-hot)}
.noai .chips{justify-content:center;margin-top:var(--s5)}
.noai .honest{max-width:640px;margin:var(--s4) auto 0;font-size:var(--t-body);color:var(--gl-text)}
@media (max-width:900px){.pipe3{grid-template-columns:1fr 1fr}.t3:not(:last-child)::after{display:none}}
@media (max-width:560px){.pipe3{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.gfig *,.gadd .s{animation:none!important}.gdrop .file{top:36px}.gpost i,.gscore i{scale:1}.grun .bar b{width:60%}}

/* editing demo: pick, drop in, move, trim, remove. One 12s loop, all positions are translate() on a fixed grid. */
#edit{background:var(--gl-body)}
.edemo{max-width:430px;margin:var(--s6) auto 0;padding:var(--s4);background:var(--gl-void);border:4px solid var(--gl-frame);text-align:left}
.eprev{position:relative;aspect-ratio:16/8;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-track);margin-bottom:var(--s4);display:grid;place-items:end center;padding-bottom:var(--s2)}
.eprev .play{position:absolute;inset:0;margin:auto;width:34px;height:34px;background:var(--gl-lime-hot);clip-path:polygon(20% 10%,20% 90%,90% 50%)}
.elab{position:absolute;bottom:var(--s2);padding:var(--s1) var(--s3);background:var(--gl-void);color:var(--gl-lime-hot);font:400 var(--t-cap) var(--font-display);text-transform:uppercase;white-space:nowrap;opacity:0}
.erows{position:relative;height:92px}
.erows em{position:absolute;left:0;font:400 var(--t-cap) var(--font-display);text-transform:uppercase;color:var(--gl-text-muted);font-style:normal}
.estage{position:absolute;left:64px;top:0;width:270px;height:92px}
.estage i{position:absolute;left:0;top:0;width:48px;height:40px;display:block;outline:3px solid transparent;outline-offset:2px}
.estage .ca{background:var(--gl-lime-dim);animation:eA 12s var(--ease-in-out) infinite}
.estage .cb{animation:eB 12s var(--ease-in-out) infinite,eBc 12s steps(1) infinite}
.estage .cc{background:var(--gl-lime-dim);animation:eC 12s var(--ease-in-out) infinite}
.estage .cq{animation:eQ 12s var(--ease-in-out) infinite,eQw 12s var(--ease-in-out) infinite,eQc 12s steps(1) infinite,eSel 12s steps(1) infinite}
.estage .cp{left:0;top:50px;background:var(--gl-track)}
.estage .cr{left:108px;top:50px;background:var(--gl-track)}
.estage .cur{width:16px;height:16px;left:0;top:0;margin:-3px 0 0 -3px;background:var(--gl-text);clip-path:polygon(0 0,0 100%,30% 75%,50% 100%,65% 92%,45% 68%,85% 68%);outline:0;animation:eCur 12s var(--ease-in-out) infinite;z-index:3}
.elab.l0{animation:eL0 12s steps(1) infinite}.elab.l1{animation:eL1 12s steps(1) infinite}.elab.l2{animation:eL2 12s steps(1) infinite}.elab.l3{animation:eL3 12s steps(1) infinite}.elab.l4{animation:eL4 12s steps(1) infinite}
@keyframes eA{0%{translate:0px 0px;opacity:1}14%{translate:0px 0px}30%{translate:0px 0px}34%{translate:0px 0px}50%{translate:54px 0px}96%{translate:54px 0px;opacity:1}97%{translate:54px 0px;opacity:0}98%{translate:0px 0px;opacity:0}99%{translate:0px 0px;opacity:1}100%{translate:0px 0px;opacity:1}}
@keyframes eB{0%{translate:54px 0px;opacity:1}14%{translate:54px 0px}30%{translate:108px 0px}34%{translate:108px 0px}50%{translate:162px 0px}58%{translate:162px 0px}66%{translate:142px 0px}70%{translate:142px 0px}86%{translate:54px 50px}96%{translate:54px 50px;opacity:1}97%{translate:54px 50px;opacity:0}98%{translate:54px 0px;opacity:0}99%{translate:54px 0px;opacity:1}100%{translate:54px 0px;opacity:1}}
@keyframes eC{0%{translate:108px 0px;opacity:1}14%{translate:108px 0px}30%{translate:162px 0px}34%{translate:162px 0px}50%{translate:0px 0px}96%{translate:0px 0px;opacity:1}97%{translate:0px 0px;opacity:0}98%{translate:108px 0px;opacity:0}99%{translate:108px 0px;opacity:1}100%{translate:108px 0px;opacity:1}}
@keyframes eQ{0%{translate:54px 50px;opacity:1}14%{translate:54px 50px}30%{translate:54px 0px}34%{translate:54px 0px}50%{translate:108px 0px}96%{translate:108px 0px;opacity:1}97%{translate:108px 0px;opacity:0}98%{translate:54px 50px;opacity:0}99%{translate:54px 50px;opacity:1}100%{translate:54px 50px;opacity:1}}
@keyframes eQw{0%{width:48px}56%{width:48px}64%{width:28px}96%{width:28px}97%{width:28px}98%{width:48px}100%{width:48px}}
@keyframes eQc{0%{background:var(--gl-track)}14%{background:var(--gl-track)}30%{background:var(--gl-lime-dim)}96%{background:var(--gl-lime-dim)}98%{background:var(--gl-track)}100%{background:var(--gl-track)}}
@keyframes eBc{0%{background:var(--gl-lime-dim)}80%{background:var(--gl-lime-dim)}86%{background:var(--gl-track)}96%{background:var(--gl-track)}98%{background:var(--gl-lime-dim)}100%{background:var(--gl-lime-dim)}}
@keyframes eSel{0%{outline-color:transparent}8%{outline-color:var(--gl-purple)}14%{outline-color:var(--gl-purple)}18%{outline-color:transparent}100%{outline-color:transparent}}
@keyframes eCur{0%{translate:230px 60px}10%{translate:78px 70px}14%{translate:78px 70px}28%{translate:78px 20px}36%{translate:186px 20px}46%{translate:24px 20px}56%{translate:154px 20px}64%{translate:134px 20px}72%{translate:166px 20px}84%{translate:78px 70px}96%{translate:78px 70px}97%{translate:78px 70px}98%{translate:230px 60px}100%{translate:230px 60px}}
@keyframes eL0{0%{opacity:0}5.9%{opacity:0}6%{opacity:1}15%{opacity:1}15.1%{opacity:0}100%{opacity:0}}
@keyframes eL1{0%{opacity:0}14.9%{opacity:0}15%{opacity:1}33%{opacity:1}33.1%{opacity:0}100%{opacity:0}}
@keyframes eL2{0%{opacity:0}32.9%{opacity:0}33%{opacity:1}53%{opacity:1}53.1%{opacity:0}100%{opacity:0}}
@keyframes eL3{0%{opacity:0}52.9%{opacity:0}53%{opacity:1}69%{opacity:1}69.1%{opacity:0}100%{opacity:0}}
@keyframes eL4{0%{opacity:0}68.9%{opacity:0}69%{opacity:1}90%{opacity:1}90.1%{opacity:0}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.estage i,.elab{animation:none!important}.estage .cb{translate:54px 50px;background:var(--gl-track)}.estage .ca{translate:0 0}.estage .cc{translate:108px 0}.estage .cq{translate:54px 50px}.elab.l1{opacity:1}}

/* centering fixes */
.gfig{justify-content:center}
.gdrop .file{left:50%;margin-left:-14px}
.t3 h3{text-align:center}
.how.center-steps > div{text-align:center}
.how.center-steps .gfig{margin-inline:auto}

/* captions look like captions: a frame with a subtitle strip */
.gpost .c{display:block;position:relative;width:48px;height:30px;padding:0;gap:0;background:url(/assets/preview-background.webp) center/cover;border:3px solid var(--gl-lime)}
.gpost .c u{position:absolute;bottom:3px;height:5px;background:var(--gl-text);text-decoration:none}
.gpost .c u:first-child{left:4px;width:14px}
.gpost .c u.hl{left:21px;width:18px;background:var(--gl-lime-hot)}
.t3 p{margin-top:var(--s2);font-size:var(--t-cap);color:var(--gl-text-muted)}
.crop,.crop .wide{display:block}

/* subpages: step cards and hubs carry a moving picture */
.page .how > div{text-align:center}
.page .hub li > .gfig{margin-bottom:var(--s3)}
.page .hub li{text-align:center}
.xfer{position:relative;display:flex;justify-content:space-between;align-items:center;padding:var(--s2) 0}
.xfer b{font:400 var(--t-cap) var(--font-display);text-transform:uppercase;padding:var(--s3) var(--s3);border:3px solid var(--gl-track);background:var(--gl-body);font-weight:400}
.xfer i{position:absolute;left:28%;top:50%;margin-top:-9px;width:24px;height:18px;background:var(--gl-lime-hot);animation:xfer 3s var(--ease-in-out) infinite}
@keyframes xfer{0%{left:28%;opacity:0}15%{opacity:1}70%{left:58%;opacity:1}100%{left:58%;opacity:0}}
.xfer.stay i{animation:xstay 3s steps(1) infinite;left:28%}
@keyframes xstay{0%,100%{opacity:1;scale:1}50%{opacity:1;scale:1.3}}
.xfer b.off{border-style:dashed;color:var(--gl-text-muted)}
.xlane{margin-bottom:var(--s3)}
.xlane span{display:block;margin-bottom:var(--s2);font-size:var(--t-cap);color:var(--gl-text-muted)}
@media (prefers-reduced-motion:reduce){.xfer i{animation:none!important;opacity:1}}

/* home: more breathing room */
body{line-height:1.65}
section{padding:calc(var(--s7) * 1.35) 0}
.hero{padding-bottom:calc(var(--s7) * 1.2)}
.hero .wrap{gap:var(--s7)}
.hero h1{margin-bottom:var(--s5)}
.hero .lead{margin-bottom:var(--s6)}
.hero .cta{margin-bottom:var(--s5)}
h2{margin-bottom:var(--s5)}
.lead{margin-bottom:var(--s5)}
.strip{padding:calc(var(--s7) * 1.1) 0}
.morph{margin-bottom:var(--s7)}
.brows{gap:var(--s5)}
.bside{padding:var(--s4)}
.nums{gap:var(--s5);margin-top:var(--s7)}
.how{gap:var(--s6)}
.how > div{padding:var(--s6) var(--s5) var(--s5)}
.pipe3{gap:var(--s7);margin-top:var(--s7)}
.t3{padding:var(--s6) var(--s4) var(--s5)}
.t3 p{margin-top:var(--s3)}
.gadd{margin-top:calc(var(--s7) * 1.2);gap:var(--s4)}
.noai .chips{margin-top:var(--s7)}
.noai .honest{margin-top:var(--s5)}
.whyrow{margin-top:var(--s7);gap:var(--s6)}
.icons{gap:var(--s4)}
.ico{padding:var(--s5) var(--s4)}
.tabs{margin:var(--s6) 0 var(--s5)}
.panel{gap:var(--s6)}
.presets{gap:var(--s5);margin-top:var(--s7)}
.faq{margin-top:var(--s7)}
.edemo{margin-top:var(--s7)}
@media (max-width:900px){section{padding:var(--s7) 0}.pipe3{gap:var(--s5)}.hero .wrap{gap:var(--s6)}}

/* performance: compositor-only motion, and nothing animates while it is off screen */
html[data-bg] body::after{bottom:-384px;will-change:transform;animation:sparkdrift 90s linear infinite}
html[data-bg]::before,html[data-bg]::after{will-change:transform,opacity}
.sieve2 span{animation:sift2 3s var(--ease-in-out) infinite alternate;will-change:transform,opacity}
.sieve2 span.hit{animation:none}
@keyframes sift2{to{scale:0 1;opacity:0}}
[data-off] *,[data-off] *::before,[data-off] *::after{animation-play-state:paused!important}
