/* Self-hosted fonts (SIL OFL, see assets/fonts). Rajdhani is the game's own display face. */
@font-face{font-family:Rajdhani;src:url(assets/fonts/Rajdhani-600.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:Rajdhani;src:url(assets/fonts/Rajdhani-700.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url(assets/fonts/IBMPlexSans-var.woff2) format("woff2");font-weight:400 600;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(assets/fonts/IBMPlexMono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(assets/fonts/IBMPlexMono-500.woff2) format("woff2");font-weight:500;font-display:swap}
/* ---- reset: the old site stylesheet also loads, so put headings and paragraphs back to plain browser defaults before the homepage rules ---- */
.hp h1{font-size:2em;margin:.67em 0;font-weight:700;letter-spacing:normal;text-transform:none;color:inherit}
.hp h2{font-size:1.5em;margin:.83em 0;font-weight:700;letter-spacing:normal;text-transform:none;color:inherit}
.hp h3{font-size:1.17em;margin:1em 0;font-weight:700;letter-spacing:normal;text-transform:none;color:inherit}
.hp h4{font-size:1em;margin:1.33em 0;font-weight:700;letter-spacing:normal;text-transform:none;color:inherit}
.hp p{margin:1em 0}
.hp .lead,.hp .lede{font-size:inherit}
.hp section{padding:0;border-top:0}
.hp{
  --void:#07090F; --ink:#121A2B; --ink2:#18223A; --gun:#2B3443; --slate:#7C8896; --dust:#8A97AB; --alloy:#C9D1DC; --text:#E8EEF7;
  --ember:#FF7A2F; --pulse:#C84BD6; --shield:#8FE8FF; --glacier:#2FC8FF; --ok:#5FD39A; --amber:#F0B429;
  --display:"Rajdhani","Segoe UI",system-ui,sans-serif; --body:"IBM Plex Sans",system-ui,sans-serif; --mono:"IBM Plex Mono",ui-monospace,monospace;
  --skew:-12deg;
  color-scheme:dark;
}
.hp *{box-sizing:border-box}
.hp #sky3d{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.hp .in{padding-inline:clamp(16px,4vw,44px)}
.hp .shead{display:flex;align-items:center;justify-content:space-between;height:54px;border-bottom:1px solid var(--gun);background:rgba(7,9,15,.9)}
.hp .brand{display:flex;align-items:center;gap:10px;font:700 13px var(--display);letter-spacing:.22em;text-transform:uppercase}
.hp .brand img{height:24px}
.hp .shead nav{display:flex;gap:18px;font:600 12px var(--display);letter-spacing:.16em;text-transform:uppercase;color:var(--alloy)}
@media (max-width:700px){.hp .shead nav{display:none}}
.hp .banner{position:relative;overflow:hidden;isolation:isolate}
.hp .sky{position:absolute;inset:-6% -4%;background:url(assets/home/sky.jpg) center/cover;opacity:.55;z-index:-2;animation:drift 60s ease-in-out infinite alternate;transform-origin:center}
.hp .banner::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(7,9,15,.15),rgba(7,9,15,.75) 60%,var(--void)),linear-gradient(rgba(7,9,15,.2),var(--void) 96%)}
@keyframes drift{from{transform:scale(1) translateX(0)}to{transform:scale(1.06) translateX(-1.5%)}}
.hp .bgrid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(18px,3vw,40px);align-items:center;padding-block:40px 24px}
@media (max-width:820px){.hp .bgrid{grid-template-columns:1fr}}
.hp .trailer{position:relative;aspect-ratio:16/9;max-width:100%;background:#000;overflow:hidden;--c:var(--ember)}
.hp .trailer img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s ease}
.hp .trailer:hover img{transform:scale(1.03)}
.hp .play{position:absolute;inset:0;margin:auto;width:76px;height:76px;background:rgba(255,122,47,.94);transform:skewX(var(--skew));box-shadow:0 0 0 0 rgba(255,122,47,.5);animation:pulse 2.6s ease-out infinite}
.hp .play::after{content:"";position:absolute;left:30px;top:24px;border:14px solid transparent;border-left:22px solid #150a02;border-right:0;transform:skewX(calc(var(--skew) * -1))}
@keyframes pulse{70%{box-shadow:0 0 0 16px rgba(255,122,47,0)}100%{box-shadow:0 0 0 0 rgba(255,122,47,0)}}
.hp .tl{position:absolute;left:10px;bottom:10px;padding:3px 8px;background:rgba(7,9,15,.8);font:12px var(--mono);color:var(--alloy)}
.hp .brk{position:relative}
.hp .brk::before,.hp .brk::after,.hp .brk>.k::before,.hp .brk>.k::after{content:"";position:absolute;width:14px;height:14px;border:2px solid var(--c,var(--shield));pointer-events:none;transition:all .25s;z-index:1}
.hp .brk::before{left:-1px;top:-1px;border-right:0;border-bottom:0}
.hp .brk::after{right:-1px;top:-1px;border-left:0;border-bottom:0}
.hp .brk>.k::before{left:-1px;bottom:-1px;border-right:0;border-top:0}
.hp .brk>.k::after{right:-1px;bottom:-1px;border-left:0;border-top:0}
.hp .brk:hover::before,.hp .brk:hover::after,.hp .brk:hover>.k::before,.hp .brk:hover>.k::after{width:22px;height:22px}
.hp .pitch{min-width:0}
.hp .lock{display:flex;align-items:center;gap:16px;margin:0 0 12px}
.hp .lock img{width:clamp(64px,8vw,92px);height:auto;flex:none;filter:drop-shadow(0 0 18px rgba(255,122,47,.25))}
.js .hp .lock img{opacity:0;transform:translateY(10px) skewX(var(--skew));transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}
.js .hp .lock.on img{opacity:1;transform:none}
.hp .lock .t{min-width:0}
.hp .pitch .tag{color:var(--ember);letter-spacing:.26em;text-transform:uppercase;font:600 13px var(--display);margin:0 0 4px;display:flex;align-items:center;gap:10px}
.hp .pitch .tag::before{content:"";width:28px;height:2px;background:var(--ember);transform:skewX(var(--skew))}
@media (max-width:600px){.hp .pitch .tag{letter-spacing:.12em;font-size:12px}}
.hp .pitch h1{margin:0;font:700 clamp(28px,4vw,44px)/.95 var(--display);letter-spacing:.14em;text-transform:uppercase;text-wrap:balance}
.hp .lede{color:var(--alloy);margin:0 0 14px;max-width:46ch}
.hp .facts{margin:0 0 20px;padding:0;list-style:none;display:grid;gap:5px;font-size:14px}
.hp .facts li{padding-left:16px;position:relative}
.hp .facts li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:3px;background:var(--pulse);transform:skewX(var(--skew))}
.hp .btn{display:inline-block;padding:11px 22px;background:var(--ember);color:#150a02;font:700 13px var(--display);letter-spacing:.16em;text-transform:uppercase;margin:3px 6px 3px 0;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);transition:filter .2s,transform .2s;text-decoration:none}
.hp .btn:hover{filter:brightness(1.12);transform:translateX(2px)}
.hp .btn.alt{background:transparent;color:var(--text);box-shadow:inset 0 0 0 1px var(--slate);clip-path:none}
.hp .slots{margin:14px 0 0}
.hp .slots p{margin:6px 0 0;font:13px var(--mono);color:var(--alloy)}
.hp .slots p b{color:var(--ember);font:700 18px var(--display);font-variant-numeric:tabular-nums}
.hp .slots p span{color:var(--dust)}
.hp .meter{display:flex;gap:6px;flex-wrap:wrap}
.hp .meter .grp{display:flex;gap:2px}
.hp .meter .pip{width:6px;height:14px;background:var(--gun);transform:skewX(var(--skew))}
.hp .meter .pip.free{background:var(--ember);opacity:0;animation:pipin .3s ease forwards;animation-delay:calc(var(--i) * 12ms)}
@keyframes pipin{to{opacity:1}}
.hp .meter.big .pip{width:10px;height:26px}
.hp .meter.big{gap:8px}
.hp .meter.big .grp{gap:3px}
.hp .rv{opacity:1;transform:none}
.js .hp .rv{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.js .hp .rv.on{opacity:1;transform:none}
.hp .ticker{display:flex;align-items:stretch;border:1px solid var(--gun);background:rgba(18,26,43,.8);font:13px var(--mono);color:var(--alloy);overflow:hidden}
.hp .ticker .lab{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 12px;background:var(--ember);color:#150a02;font:700 12px var(--display);letter-spacing:.16em;text-transform:uppercase;clip-path:polygon(0 0,100% 0,calc(100% - 10px) 100%,0 100%);flex:none}
.hp .ticker .lab i{width:8px;height:8px;border-radius:50%;background:#150a02;animation:blink 1.4s steps(2) infinite}
@keyframes blink{to{opacity:.25}}
.hp .feed{flex:1;position:relative;min-width:0;overflow:hidden;height:36px}
.hp .feed div{position:absolute;inset:0;display:flex;align-items:center;padding:0 14px;white-space:nowrap;opacity:0;transform:translateY(100%);transition:transform .5s cubic-bezier(.2,.8,.2,1),opacity .4s}
.hp .feed div.on{opacity:1;transform:none}
.hp .feed div.out{opacity:0;transform:translateY(-100%)}
.hp .feed b{color:var(--shield);font-weight:500;margin-right:10px}
.hp .ticker a{flex:none;display:flex;align-items:center;padding:0 14px;color:var(--glacier);text-decoration:none;border-left:1px solid var(--gun)}
@media (max-width:600px){.hp .ticker a{display:none}}
.hp .filmsec{border-top:1px solid var(--gun);padding-block:44px 48px}
.hp .filmsec .head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.hp .filmsec h2{font:700 clamp(26px,4vw,38px)/1.1 var(--display);margin:6px 0 0;letter-spacing:.02em}
.hp .filmsec .head p{margin:0;font:12px var(--mono);color:var(--dust)}
.hp .film{position:relative;aspect-ratio:16/9;max-width:100%;background:#000;border:1px solid var(--gun);overflow:hidden;isolation:isolate;cursor:pointer;outline:none;container-type:inline-size}
.hp .film:focus-visible{outline:2px solid var(--shield)}
.hp .film #stars{position:absolute;inset:0;width:100%;height:100%;z-index:0}
.hp .film .vig{position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 50% 50%,transparent 55%,rgba(0,0,0,.6));pointer-events:none}
.hp .film .capbg{position:absolute;left:0;right:0;bottom:0;height:40%;z-index:1;background:linear-gradient(transparent,rgba(7,9,15,.78));pointer-events:none}
.hp .film .pline{position:absolute;left:0;bottom:0;height:2px;width:100%;z-index:4;background:var(--ember);transform-origin:left;transform:scaleX(0);pointer-events:none}
.hp .film:hover .pline,.hp .film.paused .pline,.hp .film.done .pline{opacity:0}
.hp .sc{position:absolute;inset:0;z-index:2;opacity:0;pointer-events:none}
.hp .film .full{position:absolute;inset:0;width:100%;height:100%}
.hp .film svg text{font:600 clamp(12px,1.6cqw,22px) var(--mono);fill:var(--dust)}
.hp .film svg .hud{font:700 clamp(12px,1.6cqw,24px) var(--display);fill:#8FE8FF;letter-spacing:.14em}
.hp .cap{position:absolute;left:5%;bottom:10%;max-width:70%;display:grid;gap:4px;opacity:0}
.hp .cap b{display:inline-block;justify-self:start;background:var(--ember);color:#150a02;font:700 clamp(12px,1.5cqw,16px) var(--display);letter-spacing:.18em;text-transform:uppercase;padding:.35em .9em;transform:skewX(var(--skew))}
.hp .cap span{display:block;font:700 clamp(16px,3.6cqw,44px)/1.1 var(--display);color:var(--text);text-wrap:balance;text-shadow:0 2px 20px rgba(0,0,0,.8)}
.hp .cap.c2{bottom:10%}
.hp .s3 .cap{max-width:48%}
.hp .cap.c2 span{font-size:clamp(14px,2cqw,24px);font-weight:600;color:var(--alloy)}
.hp .s0 .mark{position:absolute;left:50%;top:14%;width:clamp(90px,22cqw,260px);transform:translateX(-50%)}
.hp .s0 .mk polygon{stroke-dasharray:1200;stroke-dashoffset:1200;fill:#E8EEF7;fill-opacity:0}
.hp .s0 .chev{opacity:0}
.hp .film .title{position:absolute;left:0;right:0;top:58%;text-align:center;font:800 clamp(24px,7cqw,86px)/1 var(--display);letter-spacing:.22em;text-transform:uppercase;display:flex;justify-content:center;gap:.4em;flex-wrap:wrap}
.hp .film .title span{display:inline-block;opacity:0;will-change:transform,opacity}
.hp .film .title{flex-wrap:nowrap;white-space:nowrap}
.hp .s0 .tagl{position:absolute;left:0;right:0;top:78%;text-align:center;margin:0;color:var(--ember);font:600 clamp(12px,1.8cqw,20px) var(--display);letter-spacing:.3em;text-transform:uppercase;opacity:0}
.hp .s1 .enemy,.hp .s1 .me,.hp .s1 .ret{opacity:0}
.hp .s1 .ring{opacity:0;transform-origin:800px 450px}
.hp .s1 .fpanel{position:absolute;right:5%;top:10%;width:30%;aspect-ratio:16/9;object-fit:cover;border:2px solid var(--pulse);opacity:0;box-shadow:0 10px 40px rgba(0,0,0,.6)}
.hp .hbars{position:absolute;inset:0 0 34% 0;display:flex;align-items:flex-end;justify-content:center;gap:2%;padding:0 6%}
.hp .hbars div{position:relative;flex:1 1 0;max-width:180px;height:62%;background:linear-gradient(var(--hc2),var(--hc));transform:skewX(var(--skew));opacity:0;display:grid;align-content:end;padding:6% 10%;box-shadow:0 0 40px color-mix(in srgb,var(--hc2) 40%,transparent)}
.hp .hbars b{font:700 clamp(12px,2cqw,24px) var(--display);letter-spacing:.14em;text-transform:uppercase;color:#07090F;transform:skewX(calc(var(--skew) * -1))}
.hp .hbars i{display:block;font:500 clamp(12px,1.1cqw,13px) var(--body);font-style:normal;color:rgba(7,9,15,.8);transform:skewX(calc(var(--skew) * -1));margin-top:2px}
.hp .s3 .nd{opacity:0}
.hp .s3 .spark{opacity:0}
.hp .s3 .loop{opacity:0}
.hp .belt{position:absolute;left:0;right:0;top:12%;display:flex;gap:2%;pointer-events:none}
.hp .belt img{width:22%;aspect-ratio:16/9;object-fit:cover;border:1px solid var(--gun);flex:none;opacity:0}
.hp .nums{position:absolute;right:5%;bottom:10%;display:flex;gap:3cqw}
.hp .nums div{display:grid;opacity:0;text-align:right}
.hp .nums b{font:700 clamp(22px,5cqw,64px)/1 var(--display);color:var(--text);font-variant-numeric:tabular-nums}
.hp .nums span{font:clamp(12px,1.2cqw,14px) var(--mono);color:var(--dust)}
.hp .file{position:absolute;left:6%;top:10%;width:46%;background:rgba(7,9,15,.85);border:1px solid var(--gun);opacity:0}
.hp .fcap{padding:.5em .9em;border-bottom:1px solid var(--gun);font:clamp(12px,1.2cqw,14px) var(--mono);color:var(--alloy)}
.hp .fpre{margin:0;padding:.8em 1em;font:clamp(12px,1.4cqw,17px)/1.5 var(--mono);color:var(--alloy);white-space:pre;min-height:9.5em}
.hp .fpre .k{color:var(--shield)}
.hp .fpre .n{color:var(--ember)}
.hp .fpre .s{color:var(--ok)}
.hp .srv{position:absolute;right:14%;top:14%;width:clamp(60px,12cqw,150px);opacity:0}
.hp .srv .tick{stroke-dasharray:80;stroke-dashoffset:80}
.hp .roles{position:absolute;left:6%;right:6%;top:10%;display:grid;grid-template-columns:repeat(3,1fr);gap:2%}
.hp .roles div{background:rgba(18,26,43,.9);border:1px solid var(--gun);border-left:5px solid var(--ember);padding:4% 6%;opacity:0}
.hp .roles div:nth-child(2){border-left-color:var(--shield)}
.hp .roles div:nth-child(3){border-left-color:var(--pulse)}
.hp .roles b{display:block;font:700 clamp(12px,2.2cqw,26px) var(--display);letter-spacing:.1em;text-transform:uppercase}
.hp .roles span{font:clamp(12px,1.2cqw,14px) var(--mono);color:var(--dust)}
.hp .slotbox{position:absolute;left:6%;right:6%;top:44%;opacity:0}
.hp .film-meter{gap:.9%;flex-wrap:nowrap}
.hp .film-meter .grp{gap:.15cqw}
.hp .film-meter .pip{width:.62cqw;height:3.2cqw;animation:none;opacity:1}
.hp .film-meter .pip.free{background:var(--ember)}
.hp .slotbox p{margin:1.2cqw 0 0;display:flex;align-items:baseline;gap:.6em}
.hp .slotbox b{font:700 clamp(28px,6cqw,80px)/1 var(--display);color:var(--ember);font-variant-numeric:tabular-nums}
.hp .slotbox span{font:clamp(12px,1.6cqw,20px) var(--mono);color:var(--alloy)}
.hp .endmark{position:absolute;left:0;right:0;margin:0 auto;top:12%;width:clamp(70px,16cqw,180px);opacity:0}
.hp .title.sm{top:48%;font-size:clamp(18px,4.6cqw,56px)}
.hp .ctas{position:absolute;left:0;right:0;top:64%;display:flex;justify-content:center;gap:.6cqw;flex-wrap:wrap;opacity:0}
.hp .ctas .btn{font-size:clamp(12px,1.2cqw,13px);padding:.9em 1.6em}
.hp .endline{position:absolute;left:0;right:0;top:84%;text-align:center;margin:0;font:clamp(12px,1.3cqw,14px) var(--mono);color:var(--dust);opacity:0}
.hp .sA .pass{opacity:1}
.hp .sA .pb{opacity:0}
.hp .flash{position:absolute;inset:0;background:#E8EEF7;opacity:0;pointer-events:none}
.hp .sI .ctrl{opacity:0}
.hp .sI .stick,.hp .sI .key{transform-box:fill-box;transform-origin:center}
.hp .sI .stickh{transform-box:fill-box;transform-origin:50% 100%}
.hp .sI .shipI{opacity:0}
.hp .ctas{gap:.6cqw}
.hp .ctl{position:absolute;left:0;right:0;bottom:0;z-index:5;display:flex;align-items:center;gap:10px;padding:8px 12px;background:linear-gradient(transparent,rgba(7,9,15,.9));font:11px var(--mono);color:var(--alloy);opacity:0;transition:opacity .3s}
.hp .film:hover .ctl,.hp .film.paused .ctl,.hp .film.done .ctl,.hp .film:focus-visible .ctl{opacity:1}
.hp .ctl button{background:none;border:1px solid var(--gun);color:var(--text);font:13px var(--mono);width:30px;height:26px;cursor:pointer}
.hp .ctl .bar{flex:1;height:14px;position:relative;cursor:pointer}
.hp .ctl .bar::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;background:var(--gun)}
.hp .ctl .bar i{position:absolute;left:0;top:6px;height:2px;width:0;background:var(--ember)}
.hp .ctl .pos{position:absolute;top:2px;width:10px;height:10px;margin-left:-5px;background:var(--ember);transform:skewX(var(--skew))}
.hp .film.paused::after{content:"▶";position:absolute;inset:0;margin:auto;width:70px;height:70px;z-index:4;display:grid;place-items:center;background:rgba(255,122,47,.9);color:#150a02;font-size:26px;transform:skewX(var(--skew))}
.hp .film.done .replay{position:absolute;inset:0;z-index:4}
.hp .ws{border-top:1px solid var(--gun);padding-block:44px 48px;background:linear-gradient(rgba(18,26,43,.92) 0,rgba(7,9,15,.6) 60%);position:relative;overflow:hidden}
.hp .ws::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.012) 3px 4px);pointer-events:none}
.hp .wm{position:absolute;right:-2%;top:-30px;width:min(420px,45vw);opacity:.045;pointer-events:none;transform:skewX(var(--skew)) rotate(-4deg)}
.hp .eyebrow{font:600 13px var(--display);letter-spacing:.28em;text-transform:uppercase;color:var(--ember);margin:0;display:flex;align-items:center;gap:10px}
.hp .eyebrow::before{content:"";width:28px;height:2px;background:var(--ember);transform:skewX(var(--skew))}
.hp .ws h2{font:700 clamp(26px,4vw,38px)/1.1 var(--display);margin:6px 0 6px;text-wrap:balance;letter-spacing:.02em}
.hp .ws .lead{color:var(--alloy);max-width:62ch;margin:0 0 26px}
.hp .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--gun);border:1px solid var(--gun)}
.hp .stat{background:rgba(7,9,15,.8);padding:16px 18px;display:grid;gap:2px;min-width:0;position:relative;overflow:hidden}
.hp .stat .v{font:700 40px/1 var(--display);font-variant-numeric:tabular-nums;color:var(--text)}
.hp .stat::after{content:"";position:absolute;right:-18px;top:0;bottom:0;width:36px;background:linear-gradient(transparent,rgba(200,75,214,.12));transform:skewX(var(--skew))}
.hp .stat .l{font-size:13px;color:var(--alloy)}
.hp .stat .s{font:12px var(--mono);color:var(--dust)}
.hp .stat .pf{display:block;height:5px;background:var(--ember);margin:6px 0 2px;position:relative;overflow:hidden}
.hp .stat .pf i{position:absolute;left:0;top:0;bottom:0;background:var(--ok)}
.hp .chart{margin-top:18px;border:1px solid var(--gun);padding:14px 16px 8px;--c:var(--gun)}
.hp .chart h3{margin:0 0 6px;font:600 14px var(--body);color:var(--alloy);display:flex;gap:14px;flex-wrap:wrap}
.hp .chart h3 span{font:12px var(--mono)}
.hp .chart svg{width:100%;height:auto;display:block}
.hp .chart text{fill:var(--dust);font:12px var(--mono)}
@media (max-width:600px){.hp .chart text{font-size:22px}}
.hp .chart rect{transform-origin:bottom;transform:scaleY(0);transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.hp .chart.on rect{transform:scaleY(1)}
.hp .sub{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:36px 0 12px}
.hp .sub h3{margin:0;font:700 20px var(--display);letter-spacing:.08em;text-transform:uppercase}
.hp .sub span{font:12px var(--mono);color:var(--dust)}
.hp .stills{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.hp .still{margin:0;position:relative;background:var(--ink);border:1px solid var(--gun);min-width:0;--c:var(--pulse)}
.hp .still img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;filter:saturate(.9);transition:filter .3s}
.hp .still:hover img{filter:saturate(1.05)}
.js .hp .still img{clip-path:inset(0 100% 0 0)}
.js .hp .still.on img{clip-path:inset(0 0 0 0);transition:clip-path .8s cubic-bezier(.2,.8,.2,1),filter .3s}
.hp .still figcaption{display:flex;justify-content:space-between;gap:8px;padding:7px 10px;font:12px var(--mono);color:var(--alloy)}
.hp .still figcaption em{font-style:normal;color:var(--dust);white-space:nowrap}
.hp .wip{position:absolute;top:8px;left:8px;padding:2px 7px;background:rgba(7,9,15,.85);color:var(--pulse);font:600 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;transform:skewX(var(--skew))}
.hp .wip span{display:inline-block;transform:skewX(calc(var(--skew) * -1))}
.hp .cols{display:grid;grid-template-columns:1.1fr 1fr;gap:16px;margin-top:36px;align-items:start}
@media (max-width:760px){.hp .cols{grid-template-columns:1fr}}
.hp .stream{border:1px solid var(--gun);min-width:0;--c:var(--shield);background:rgba(7,9,15,.55)}
.hp .stream h3{margin:0;padding:10px 14px;border-bottom:1px solid var(--gun);font:700 16px var(--display);letter-spacing:.08em;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center;gap:10px}
.hp .stream .sub2{font:500 12px var(--mono);color:var(--dust);letter-spacing:0;text-transform:none}
.hp .hour{display:flex;align-items:center;gap:14px;padding:9px 14px;border-bottom:1px solid var(--ink2);font:12px var(--mono);color:var(--dust);flex-wrap:wrap}
.hp .hour b{font:700 15px var(--display);color:var(--text);margin-right:4px}
.hp .hour .f b{color:var(--ember)}
.hp .hour .r b{color:var(--shield)}
.hp .hour em{font-style:normal;margin-left:auto}
.hp .hour .spark{width:120px;height:18px;flex:none}
.hp .hour .spark rect{fill:var(--pulse);opacity:.8}
.hp .hour .spark rect.f{fill:var(--ember)}
.hp .stream ol{list-style:none;margin:0;padding:0}
.hp .stream li{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:9px 14px;border-top:1px solid var(--ink2);font-size:14px;overflow:hidden;position:relative}
.hp .stream li:first-child{border-top:0}
.hp .stream li>span{display:grid;min-width:0;position:relative}
.hp .stream li small{font:12px var(--mono);color:var(--dust)}
.hp .stream li.fail{background:linear-gradient(90deg,rgba(255,122,47,.08),transparent 60%)}
.hp .stream li.fail small{color:var(--ember)}
.hp .stream li.run{background:linear-gradient(90deg,rgba(143,232,255,.07),transparent 60%)}
.hp .stream li.run time{color:var(--shield);animation:blink 1s steps(2) infinite}
.hp .prog{display:block;height:3px;margin-top:5px;background:var(--ink2);position:relative;overflow:hidden;transform:skewX(var(--skew))}
.hp .prog::before{content:"";position:absolute;inset:0;width:var(--p,40%);background:var(--shield);animation:fill 4s linear infinite alternate}
@keyframes fill{to{width:calc(var(--p,40%) + 6%)}}
.hp .prog.run::before{width:30%;left:-30%;animation:scan 1.6s linear infinite}
@keyframes scan{to{left:100%}}
.hp .stream li.new{animation:slide .5s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{opacity:0;transform:translateX(-12px);background:rgba(143,232,255,.08)}to{opacity:1;transform:none}}
.hp .tg{display:inline-block;width:64px;text-align:center;font:600 12px/1.7 var(--mono);letter-spacing:.14em;text-transform:uppercase;transform:skewX(var(--skew));color:var(--void);background:var(--alloy);font-style:normal}
.hp .tg.render{background:var(--pulse);color:#fff}
.hp .tg.test{background:var(--ok);color:#06241a}
.hp .tg.bake{background:var(--amber);color:#2a1c00}
.hp .tg.merge{background:var(--shield);color:#06283a}
.hp .key{margin:0;padding:8px 14px;border-top:1px solid var(--ink2);font:12px var(--mono);color:var(--dust);display:flex;gap:6px 10px;flex-wrap:wrap;align-items:center}
.hp .key .tg{width:auto;padding:0 7px;line-height:1.6}
.hp .stream time{font:12px var(--mono);color:var(--dust);white-space:nowrap}
.hp .live{display:inline-flex;align-items:center;gap:7px;color:var(--ok);font:500 12px var(--mono);letter-spacing:0;text-transform:none}
.hp .live::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 rgba(95,211,154,.6);animation:ping 2s infinite}
@keyframes ping{70%{box-shadow:0 0 0 7px rgba(95,211,154,0)}100%{box-shadow:0 0 0 0 rgba(95,211,154,0)}}
.hp .vhero{margin:0;position:relative}
.hp .vhero img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;transition:opacity .35s}
.hp .vhero img.sw{opacity:0}
.hp .vhero figcaption{position:absolute;left:0;right:0;bottom:0;padding:28px 14px 10px;display:flex;justify-content:space-between;align-items:baseline;gap:10px;background:linear-gradient(transparent,rgba(7,9,15,.9));font:12px var(--mono);color:var(--dust)}
.hp .vhero figcaption b{font:700 20px var(--display);color:var(--text);letter-spacing:.04em}
.hp .stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:4px;position:absolute;top:10px;left:10px;right:10px}
.hp .stages li{height:4px;background:rgba(43,52,67,.9);transform:skewX(var(--skew));transition:background .3s}
.hp .stages li.on{background:var(--pulse);box-shadow:0 0 10px rgba(200,75,214,.6)}
.hp .stages li:last-child.on{background:var(--ok);box-shadow:0 0 10px rgba(95,211,154,.6)}
.hp .thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:10px 10px 0}
.hp .thumbs button{all:unset;cursor:pointer;position:relative;display:block;border:1px solid var(--gun);opacity:.55;transition:opacity .25s,border-color .25s}
.hp .thumbs button img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover}
.hp .thumbs button span{position:absolute;left:0;right:0;bottom:0;padding:2px 6px;font:600 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--alloy);background:rgba(7,9,15,.75);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp .thumbs button.on,.hp .thumbs button:hover{opacity:1;border-color:var(--pulse)}
.hp .vnote{margin:0;padding:12px 14px 12px;font:12px/1.5 var(--mono);color:var(--dust)}
.hp .vnote b{color:var(--alloy);font-weight:500;display:block;margin-bottom:2px}
.hp .rest{border-top:1px solid var(--gun);padding-block:22px;color:var(--slate);font-size:14px;text-align:center}
@media (prefers-reduced-motion:reduce){.hp *,.hp *::before,.hp *::after{animation:none!important;transition:none!important}.js .hp .rv,.js .hp .still img,.js .hp .lock img{opacity:1;transform:none;clip-path:none}.hp .chart rect{transform:none}}
.hp section.game,.hp section.houses,.hp section.mod,.hp section.dev,.hp section.sup{border-top:1px solid var(--gun);padding-block:48px 52px;position:relative}
.hp section h2{font:700 clamp(24px,3.6vw,34px)/1.1 var(--display);margin:6px 0 6px;text-wrap:balance;letter-spacing:.02em}
.hp section .lead{color:var(--alloy);max-width:62ch;margin:0 0 24px}
.hp .feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
@media (min-width:760px){.hp .f.wide{grid-column:span 2}}
.hp .f p a{color:var(--glacier);text-decoration:none;font-size:13px;white-space:nowrap}
.hp .hrow .house.rv{transition-delay:0s!important}
.hp .f{background:var(--ink);border:1px solid var(--gun);padding:18px 18px 16px;--c:var(--gun);min-width:0;transition:border-color .25s}
.hp .f:hover{--c:var(--shield);border-color:#36465c}
.hp .f svg{width:34px;height:34px;color:var(--pulse);display:block;margin-bottom:10px}
.hp .f h3{margin:0 0 4px;font:700 19px var(--display);letter-spacing:.04em}
.hp .f p{margin:0;color:var(--alloy);font-size:14px}
.hp .hrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.hp .house{position:relative;background:var(--ink);border:1px solid var(--gun);padding:16px 16px 14px 20px;min-width:0;overflow:hidden;transition:transform .3s}
.hp .house:hover{transform:translateY(-3px)}
.hp .house i{position:absolute;left:0;top:0;bottom:0;width:6px;background:linear-gradient(var(--hc2),var(--hc));transform:skewX(var(--skew)) translateX(-2px)}
.hp .house i.q{background:linear-gradient(#D2693B 25%,#2BA8A4 25% 50%,#E0B83C 50% 75%,#A95BD6 75%)}
.hp .house b{display:block;font:700 20px var(--display);letter-spacing:.08em;text-transform:uppercase}
.hp .house span{display:block;font:12px var(--mono);color:var(--dust)}
.hp .house em{display:block;margin-top:8px;font-style:normal;color:var(--alloy);font-size:14px}
.hp .house::after{content:"";position:absolute;right:-30px;bottom:-30px;width:80px;height:80px;border-radius:50%;background:var(--hc2);opacity:.08;filter:blur(10px)}
.hp .modgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:28px;align-items:center}
@media (max-width:820px){.hp .modgrid{grid-template-columns:1fr}}
.hp .code{background:rgba(7,9,15,.85);border:1px solid var(--gun);--c:var(--pulse);min-width:0}
.hp .code .cap{display:flex;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--gun);font:12px var(--mono);color:var(--alloy)}
.hp .code pre{margin:0;padding:14px;font:13px/1.55 var(--mono);color:var(--alloy);min-height:230px;overflow-x:auto;white-space:pre}
.hp .code .k{color:var(--shield)}
.hp .code .n{color:var(--ember)}
.hp .code .s{color:var(--ok)}
.hp .code .cur{display:inline-block;width:7px;height:14px;background:var(--pulse);vertical-align:-2px;animation:blink 1s steps(2) infinite}
.hp .posts{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.hp .post{display:grid;background:var(--ink);border:1px solid var(--gun);text-decoration:none;color:inherit;--c:var(--gun);min-width:0;cursor:pointer}
.hp .post:hover{--c:var(--shield)}
.hp .post img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.hp .post div{padding:12px 14px 14px}
.hp .post small{font:12px var(--mono);color:var(--dust);letter-spacing:.06em;text-transform:uppercase}
.hp .post b{display:block;font:700 18px var(--display);margin:2px 0 4px}
.hp .post p{margin:0;font-size:14px;color:var(--alloy)}
.hp .supgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:stretch}
@media (max-width:820px){.hp .supgrid{grid-template-columns:1fr}}
.hp .patron,.hp .join{background:var(--ink);border:1px solid var(--gun);padding:24px 24px 22px;min-width:0}
.hp .patron{background:linear-gradient(135deg,#1b1226 0,var(--ink) 55%)}
.hp .patron h2,.hp .join h2{margin:6px 0 8px}
.hp .patron p,.hp .join p{color:var(--alloy);font-size:15px;margin:0 0 12px}
.hp .join{--c:var(--ember);background:linear-gradient(135deg,#1f140d 0,var(--ink) 55%)}
.hp .join .big{display:flex;align-items:baseline;gap:10px;margin:10px 0 8px}
.hp .join .big b{font:700 56px/1 var(--display);color:var(--ember);font-variant-numeric:tabular-nums}
.hp .join .big span{font:13px var(--mono);color:var(--dust);letter-spacing:.1em;text-transform:uppercase}
.hp .fine{font:12px var(--mono);color:var(--dust)!important;margin:12px 0 0!important}
.hp .btn.p{background:var(--pulse);color:#1a0620}
.hp footer{border-top:1px solid var(--gun);padding-block:34px 24px;background:rgba(7,9,15,.7);position:relative}
.hp footer::before{content:"";position:absolute;left:0;top:-1px;width:160px;height:3px;background:var(--ember);transform:skewX(var(--skew))}
.hp .fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:24px}
@media (max-width:760px){.hp .fgrid{grid-template-columns:1fr 1fr}}
@media (max-width:460px){.hp .fgrid{grid-template-columns:1fr}}
.hp .fbrand img{height:36px;display:block;margin-bottom:10px;opacity:.9}
.hp .fbrand p{margin:0 0 6px;font-size:13px;color:var(--alloy);max-width:40ch}
.hp footer h4{margin:0 0 8px;font:700 12px var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--ember)}
.hp footer a{display:block;color:var(--alloy);font-size:14px;text-decoration:none;padding:3px 0;cursor:pointer}
.hp footer a:hover{color:var(--shield)}
.hp .fbar{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:26px;padding-top:14px;border-top:1px solid var(--ink2);font:12px var(--mono);color:var(--dust)}
.hp .q{border-color:var(--ember)}

/* ---- page shell: the homepage sits in a centred column over a live starfield ---- */
body.home{background:#07090F;font-family:"IBM Plex Sans",system-ui,sans-serif;font-size:16px;line-height:1.6;font-weight:400}
#sky2d{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.hp{color:var(--text);font:400 16px/1.6 var(--body);text-align:left}
.hp .frame{max-width:1120px;margin:0 auto;border-inline:1px solid var(--gun);background:rgba(7,9,15,.72);overflow:hidden;position:relative}
.hp a.trailer{display:block;color:inherit;text-decoration:none}
.hp .off{display:none!important}
@media (max-width:760px){.hp .stills .still:nth-child(n+7){display:none}}
.hp .fbar a{display:inline;font:12px var(--mono);color:var(--dust);padding:0}
.hp .fbar a:hover{color:var(--shield)}
.hp .ws[data-feed="off"] .stats,.hp .ws[data-feed="off"] .chart,.hp .ws[data-feed="off"] .sub,.hp .ws[data-feed="off"] .stills,.hp .ws[data-feed="off"] .cols,.hp[data-feed="off"] .ticker{display:none}
.hp .cols.solo{grid-template-columns:1fr}
.hp .trailer.playing iframe{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:3}
.hp a.btn{margin:0 10px 8px 0}
.hp .film .title{left:0;right:0}
