:root{--bg:#101014;--panel:#19191f;--line:#3b3941;--text:#f1eee7;--muted:#aaa5ae;--amber:#ff4e00;--cyan:#00d9ff;--pink:#ff2e70;--green:#d4ff00;--r:0px}
:root[data-theme=light]{--bg:#f2f0e8;--panel:#fffdf5;--line:#25231f;--text:#201e1a;--muted:#625d56;--amber:#e33e00;--cyan:#005eb8;--pink:#bf174b;--green:#8cac00}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.7 "IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;padding-left:240px;transition:background .15s}
h1,h2,h3{font-family:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;margin:0;line-height:1.1}
a{color:var(--cyan)}a:hover{color:var(--amber)}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--amber);color:#000;padding:6px 10px;z-index:99}
.side{position:fixed;inset:0 auto 0 0;width:240px;background:var(--panel);border-right:1px solid var(--line);padding:20px 0;display:flex;flex-direction:column;z-index:10}
.brand{padding:0 20px 18px;font-weight:700;display:flex;gap:8px;align-items:center}
.dot{width:10px;height:10px;border-radius:50%;background:var(--amber)}
.tree-title{padding:0 20px 6px;font-size:11px;color:var(--muted);letter-spacing:.12em}
.tree a{display:block;padding:4px 20px;color:var(--text);text-decoration:none;border-left:2px solid transparent}
.tree a.f{padding-left:40px}.tree a.f::before{content:"◇ ";color:var(--muted)}
.tree a i{font-style:normal;color:var(--muted)}
.tree a:hover{background:var(--bg)}
.tree a.on{border-left-color:var(--amber);background:var(--bg);color:var(--amber)}
.theme{margin:18px 20px 0;background:none;border:1px solid var(--line);color:var(--text);font:inherit;font-size:12px;padding:6px 10px;border-radius:var(--r);cursor:pointer}
.theme:hover{border-color:var(--amber)}
.status{margin:auto 20px 0;font-size:12px;color:var(--muted)}
.live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);margin-right:8px;animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.35}}
main{max-width:920px;margin:0 auto;padding:0 32px 40px}
section{padding:72px 0 8px;scroll-margin-top:10px}
.hero{padding-top:90px}
h1{font-size:clamp(34px,6vw,64px);font-weight:700;letter-spacing:-.04em;margin:6px 0 10px}
h2{font-size:clamp(20px,3vw,28px);font-weight:700;margin-bottom:26px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
h2 small{font:400 12px "IBM Plex Mono",monospace;color:var(--muted)}
.c{color:var(--amber)}
h3{font-size:19px;font-weight:700;margin:4px 0 6px}
.role{font-size:clamp(16px,2.2vw,22px);color:var(--cyan);margin:0 0 28px}
.cursor{display:inline-block;width:.6em;height:1.1em;background:var(--amber);vertical-align:text-bottom;margin-left:6px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.muted{color:var(--muted)}.small{font-size:12px}
.term{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:0 18px 50px -20px #0009}
.bar{display:flex;align-items:center;gap:7px;padding:9px 14px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.bar i{width:10px;height:10px;border-radius:50%;background:var(--line)}.bar i:first-child{background:#ff5f56}.bar i:nth-child(2){background:#ffbd2e}.bar i:nth-child(3){background:#27c93f}
.bar span{margin-left:8px}
.out{padding:14px 16px 4px;min-height:230px;max-height:340px;overflow:auto;font-size:14px}
.out pre{margin:2px 0 10px;white-space:pre-wrap;font:inherit;color:var(--text)}
.out .k{color:var(--amber)}.out .e{color:var(--pink)}
.p{color:var(--green);font-weight:700}
.line{display:flex;gap:10px;padding:6px 16px 14px;align-items:center}
.line input{flex:1;background:none;border:0;color:var(--text);font:inherit;font-size:14px;outline:0;min-width:0}
.line:focus-within{background:color-mix(in srgb,var(--amber) 6%,transparent)}
.lead{font-size:17px;line-height:1.75;margin:0 0 20px;max-width:62ch}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.facts{list-style:none;margin:0;padding:0;border-left:2px solid var(--line);padding-left:20px}
.facts li{margin-bottom:12px;font-size:13px}.facts b{display:block;color:var(--amber);font-weight:500}
.log{list-style:none;margin:0;padding:0 0 0 28px}
.log>li{position:relative;z-index:1;padding:0 0 38px 22px}
.log>li::before{content:"";position:absolute;left:-28px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--muted)}
.hash{color:var(--amber);font-size:13px}
.tag{color:var(--bg);background:var(--cyan);padding:1px 8px;border-radius:99px;font-size:11px;margin-left:6px}
.meta{color:var(--muted);font-size:13px;margin:0 0 8px}
.log p{margin:0 0 10px;max-width:66ch}
.chips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0}
.chips li{border:1px solid var(--line);border-radius:99px;padding:2px 12px;font-size:12px;color:var(--cyan)}
.proj{display:grid;grid-template-columns:1fr 1.1fr;gap:24px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:26px}
.proj h3{font-size:26px}
.code{margin:0;background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:16px;font-size:12.5px;line-height:1.6;overflow:auto;white-space:pre}
.code .k{color:var(--pink)}.code .t{color:var(--cyan)}.code .f{color:var(--amber)}.code .s{color:var(--green)}.code .n{color:var(--amber)}
.sh{padding:18px 20px;font-size:14px;margin-bottom:20px}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.btn{display:inline-block;font:500 13px "IBM Plex Mono",monospace;background:var(--amber);color:#04140a;border:1px solid var(--amber);padding:9px 16px;border-radius:var(--r);text-decoration:none;cursor:pointer}
.btn:hover{background:transparent;color:var(--amber)}
.btn.ghost{background:transparent;color:var(--text);border-color:var(--line)}.btn.ghost:hover{border-color:var(--amber);color:var(--amber)}
[hidden]{display:none!important}
.json{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px 24px;font-size:14px;overflow-x:auto}
.json .key{color:var(--cyan)}.json .str{color:var(--green)}.json .br{color:var(--muted)}
.json .row{display:flex;align-items:center;gap:12px;padding-left:2ch;white-space:nowrap}
.json .row .name{min-width:26ch}
.meter{flex:0 0 140px;height:8px;background:var(--line);border-radius:99px;overflow:hidden}
.meter span{display:block;height:100%;width:0;background:var(--amber);transition:width 1.1s cubic-bezier(.2,.8,.2,1)}
.json .num{color:var(--amber);width:4ch}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px}
.card p:last-child{margin:0}
footer{margin-top:90px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}
body.party main,body.party .side{animation:hue 3s linear infinite!important}@keyframes hue{to{filter:hue-rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:28px;translate:-50% 20px;background:var(--panel);color:var(--amber);border:1px solid var(--amber);padding:10px 18px;border-radius:var(--r);font-size:13px;opacity:0;z-index:99;pointer-events:none;transition:opacity .3s,translate .3s;box-shadow:0 0 30px -6px var(--amber)}
.toast.show{opacity:1;translate:-50% 0}
@media(max-width:860px){
 body{padding-left:0;padding-top:52px}
 .side{inset:0 0 auto 0;width:auto;height:auto;flex-direction:row;align-items:center;padding:0;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line)}
 .brand,.tree-title,.status,.tree a i,.tree a:first-child{display:none}
 .tree{display:flex}.tree a,.tree a.f{padding:14px 12px;white-space:nowrap;border-left:0;border-bottom:2px solid transparent}
 .tree a.f::before{content:""}.tree a.on{border-bottom-color:var(--amber)}
 .theme{margin:0 10px;white-space:nowrap}
 main{padding:0 18px 30px}.grid2,.proj{grid-template-columns:1fr}
 section{scroll-margin-top:56px}.hero{padding-top:50px}
 .json .name{min-width:0}.meter{flex-basis:80px}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* ---- motion + detail ---- */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;background:repeating-linear-gradient(0deg,transparent 0 3px,#00000012 3px 4px);opacity:.25}
.term{transition:box-shadow .12s steps(2,end),border-color .12s steps(2,end)}
.term:focus-within{border-color:var(--amber);box-shadow:0 0 0 1px var(--amber),0 0 40px -8px color-mix(in srgb,var(--amber) 55%,transparent)}
.out>*{animation:in .3s steps(5,end) both}@keyframes in{from{opacity:0;transform:translateY(4px)}}
.rv{opacity:0;transform:translateY(8px);transition:opacity .38s steps(7,end),transform .38s steps(5,end);transition-delay:var(--d,0ms)}
.rv.in{opacity:1;transform:none}
.log{position:relative;border-left:0}
.log::before{content:"";position:absolute;z-index:0;left:5px;top:12px;bottom:0;width:2px;background:var(--line)}
.log::after{content:"";position:absolute;z-index:0;left:5px;top:12px;width:2px;max-height:calc(100% - 12px);height:var(--prog,0%);background:var(--amber);box-shadow:0 0 10px var(--amber);transition:height .15s}
.log>li::before{transition:background .3s,box-shadow .3s}
.log>li:hover::before{background:var(--amber);box-shadow:0 0 14px var(--amber)}
.chips li{transition:transform .25s,border-color .25s,background .25s,box-shadow .25s}
.chips li:hover{transform:translateY(-3px);border-color:var(--amber);background:color-mix(in srgb,var(--amber) 10%,transparent);box-shadow:0 6px 16px -8px var(--amber)}
.card,.proj{transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s,box-shadow .35s}
.card:hover,.proj:hover{border-color:var(--amber);box-shadow:0 20px 50px -26px var(--amber)}
.card:hover{transform:translateY(-4px)}
.tree a{transition:background .12s steps(2,end),color .12s steps(2,end)}
.btn{transition:transform .2s,background .2s,color .2s,box-shadow .2s}
.btn:hover{transform:translateY(-2px);box-shadow:0 8px 22px -8px var(--amber)}
.shot{position:relative;display:block;margin:-26px -26px 22px;grid-column:1/-1;overflow:hidden;border-radius:var(--r) var(--r) 0 0;aspect-ratio:16/7;background:#000}
.shot img{width:100%;height:100%;object-fit:cover;object-position:center 60%;display:block;transition:transform .8s cubic-bezier(.2,.8,.2,1),filter .5s;filter:saturate(.9)}
.shot:hover img{transform:scale(1.06);filter:saturate(1.2)}
.shot::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 50%,var(--panel))}
.play{position:absolute;z-index:2;left:50%;top:50%;translate:-50% -50%;width:68px;height:68px;border-radius:50%;background:color-mix(in srgb,var(--bg) 70%,transparent);border:2px solid var(--amber);display:grid;place-items:center;color:var(--amber);font-size:24px;padding-left:4px;transition:transform .3s,background .3s,color .3s;animation:ping 2.4s infinite}
.shot:hover .play{transform:scale(1.15);background:var(--amber);color:#04140a}
@keyframes ping{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--amber) 55%,transparent)}100%{box-shadow:0 0 0 24px transparent}}
.meter span{box-shadow:0 0 10px var(--amber)}
.json .row{transition:background .2s}.json .row:hover{background:color-mix(in srgb,var(--amber) 7%,transparent)}
.cursor{box-shadow:0 0 12px var(--amber)}
@media(max-width:860px){.shot{margin:-26px -26px 18px;aspect-ratio:16/9}}

.log>li.reached::before,.log>li:hover::before{background:var(--amber);border-color:var(--amber);box-shadow:0 0 14px var(--amber)}
.id{display:flex;align-items:center;gap:36px;margin-bottom:34px}
.avatar{flex:none;margin:0;width:189px;position:relative}
.avatar::before{content:"";position:absolute;inset:10px -10px -10px 10px;border:1px solid var(--amber);border-radius:var(--r);opacity:.6;transition:inset .35s cubic-bezier(.2,.8,.2,1),opacity .35s}
.avatar:hover::before{inset:0;opacity:1}
.avatar img{position:relative;display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:center 30%;border-radius:var(--r);border:1px solid var(--line);background:var(--panel)}
.avatar figcaption{position:absolute;z-index:1;left:0;bottom:0;right:0;padding:5px 10px;font-size:11px;color:var(--amber);background:color-mix(in srgb,var(--bg) 82%,transparent);border-radius:0 0 var(--r) var(--r)}
.id h1{margin-top:2px}
@media(max-width:600px){.id{flex-direction:column;align-items:flex-start;gap:26px}.avatar{width:140px}}
.proj .code {
  grid-column: 1 / -1;
  max-height: 600px;
  overflow: auto;
}

/* Hard-edged, high-contrast workstation treatment */
h1{text-shadow:none;letter-spacing:-.075em}
h1:hover{animation:none}
main{max-width:1000px}
.side{border-right:3px solid var(--amber)}
.brand{letter-spacing:-.06em}
.dot,.live{border-radius:0}
.live{animation:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 25%,transparent)}
.theme,.term,.proj,.json,.card,.code,.avatar img{border-radius:0}
.theme{border-color:var(--amber);text-align:left}
.term{box-shadow:8px 8px 0 var(--amber)}
.term:focus-within{box-shadow:8px 8px 0 var(--cyan);border-color:var(--cyan)}
.bar{background:var(--amber);color:#101014;border-bottom:0;font-weight:700}
.bar i{border-radius:0}
.bar i:first-child,.bar i:nth-child(2),.bar i:nth-child(3){background:#101014}
.out{min-height:205px}
h2{border-bottom:2px solid var(--line);padding-bottom:12px}
h2 .c{background:var(--amber);color:#101014;padding:0 6px}
.role{color:var(--green)}
.tag{border-radius:0;background:var(--green);color:#101014;font-weight:700}
.chips li{border-radius:0;border-color:var(--muted)}
.chips li:hover{transform:none;box-shadow:none}
.proj,.card{border:1px solid var(--text);box-shadow:6px 6px 0 var(--line)}
.proj:hover,.card:hover{transform:none;border-color:var(--amber);box-shadow:6px 6px 0 var(--amber)}
.btn{font-family:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;font-weight:700}
.btn:hover{transform:none;box-shadow:4px 4px 0 var(--cyan)}
.play{border-radius:0;animation:none;background:var(--amber);color:#101014}
.shot::after{background:linear-gradient(transparent 65%,var(--panel))}
.meter,.meter span{border-radius:0}
.meter span{box-shadow:none}
.json .row:hover{background:color-mix(in srgb,var(--cyan) 12%,transparent)}
.log::after{box-shadow:none}
.log>li.reached::before,.log>li:hover::before{box-shadow:none}
.avatar::before{border-radius:0;border-width:2px}
.avatar img{filter:grayscale(1) contrast(1.12)}
.avatar:hover img{filter:grayscale(.35) contrast(1.1)}
.avatar figcaption{font-weight:700}
.tree a{transition:background .12s steps(2,end),color .12s steps(2,end)}
.tree a.f:hover{padding-left:40px}
.btn,.card,.proj,.shot img,.cursor{transition-timing-function:steps(5,end)}
.cursor{box-shadow:none}
body::after{display:none}
@media(max-width:860px){
 .side{border-right:0;border-bottom:3px solid var(--amber)}
 .term{box-shadow:5px 5px 0 var(--amber)}
}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none}}

.not-found{min-height:100vh;padding:0;display:grid;place-items:center;background:var(--bg)}
.not-found-main{width:min(720px,100%);margin:0;padding:clamp(24px,7vw,72px);border:2px solid var(--amber);box-shadow:10px 10px 0 var(--line)}
.not-found-prompt{margin:0;color:var(--muted);font-size:13px}
.not-found-prompt span{color:var(--green);font-weight:700}
.not-found-code{margin:12px 0 -8px;color:var(--amber);font-size:clamp(100px,24vw,210px);font-weight:700;line-height:.95;letter-spacing:-.12em}
.not-found h1{font-size:clamp(26px,6vw,42px);letter-spacing:-.08em}
.not-found-copy{max-width:52ch;margin:18px 0;color:var(--muted)}
.not-found-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.not-found-foot{margin:38px 0 0;padding-top:14px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}
.not-found-foot a{color:var(--cyan)}
@media(max-width:600px){.not-found-main{box-shadow:6px 6px 0 var(--line)}}