:root{--bg:#05060a;--panel:#0a0d14;--fg:#c7f9e9;--dim:#5a7a72;--accent:#39ff14;--accent2:#00e5ff;--amber:#ffb000;--red:#ff4d4d;--font:"JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--font-display:"VT323", var(--font);--surface:#0c1510;--border:#1c2a26;--border-soft:#0f1512;--border-amber:#4a3a12;--fg2:#aee9d8;--strong:#fff;--on-accent:#031b06;--glow-rgb:57, 255, 20;--overlay:#05060ad9;--shadow:#00000080;--vignette:#000000e6;--scanlines:.35;--scanline-bg:repeating-linear-gradient(0deg, transparent 0 2px, #00000040 2px 3px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:light){:root{--bg:#eef4f1;--panel:#fff;--surface:#e3eee9;--fg:#102a20;--fg2:#24463a;--dim:#4f6b61;--strong:#06140e;--accent:#007a34;--accent2:#00718c;--amber:#985b00;--red:#c62828;--border:#c3d8cf;--border-soft:#dce9e3;--border-amber:#e2c58a;--on-accent:#fff;--glow-rgb:0, 122, 52;--overlay:#eef4f1eb;--shadow:#102a201a;--vignette:#102a201f;--scanline-bg:repeating-linear-gradient(0deg, transparent 0 2px, #102a200f 2px 3px);--scanlines:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.6;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:999;background:var(--scanline-bg);opacity:var(--scanlines);mix-blend-mode:multiply;position:fixed;inset:0}.crt{pointer-events:none;z-index:998;box-shadow:inset 0 0 180px var(--vignette);position:fixed;inset:0}#boot{z-index:1000;background:var(--bg);flex-direction:column;justify-content:flex-start;align-items:center;padding:4vh 6vw;transition:opacity .5s;display:flex;position:fixed;inset:0;overflow:hidden}#boot .boot-log{text-align:left;width:100%;max-width:640px}#boot.leaving{opacity:0}#boot .line{white-space:pre-wrap;animation:20ms both type}@keyframes type{to{opacity:1}}.ok{color:var(--accent)}.warn{color:var(--amber)}.cy{color:var(--accent2)}.dim{color:var(--dim)}.shell{opacity:0;max-width:1000px;margin:0 auto;padding:2rem 1.25rem 0;transition:opacity .6s .2s}.shell.on{opacity:1}.topbar{border:1px solid var(--border);background:var(--panel);z-index:5;box-shadow:0 0 0 1px var(--border-soft), 0 8px 30px var(--shadow);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1.5rem;padding:.5rem .9rem;display:flex;position:sticky;top:12px}.dot{border-radius:50%;width:11px;height:11px}.dot.r{background:#ff5f56}.dot.y{background:#ffbd2e}.dot.g{background:#27c93f}.topbar .path{color:var(--dim);margin-left:.5rem}.topbar .blink{color:var(--accent);margin-left:auto}.blink:after{content:"▊";animation:1s step-end infinite bl}@keyframes bl{50%{opacity:0}}.prompt{color:var(--accent)}.cmd{color:var(--strong)}.block{margin:0 0 2.2rem}.cmdline{word-break:break-word}#feed .block{border:1px solid var(--border);background:var(--panel);box-shadow:0 8px 30px var(--shadow);border-radius:8px;animation:.25s both rowin;overflow:hidden}.dot--btn{cursor:pointer;border:0;padding:0}.dot--btn:hover,.dot--btn:focus-visible{outline:none;box-shadow:0 0 0 2px #ff5f5659}.cmdline__meta{color:var(--dim);margin-left:auto;font-size:.72rem}.out{color:var(--fg);padding:.8rem .9rem}.out .label{color:var(--accent2)}.block__exit{padding:0 .9rem .7rem;font-size:.75rem}.boot-row{padding:.18rem 0;animation:.18s both rowin}@keyframes rowin{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.row-kv{grid-template-columns:11ch 1fr;align-items:baseline;gap:.9rem;display:grid}.k{color:var(--accent2)}.card__title{color:var(--strong);margin-bottom:.15rem;display:block}.out--projects{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;display:grid}.card{flex-direction:column;height:100%;font-size:.8rem;display:flex}.card__edge,.card__mid{display:flex}.card__edge{white-space:nowrap;line-height:1}.card__mid{flex:1}.bx{color:var(--border);white-space:pre;transition:color .15s}.card:hover .bx{color:var(--accent)}.bx--run{flex:1;min-width:0;position:relative;overflow:hidden}.bx--side{flex:0 0 1ch;line-height:1;position:relative;overflow:hidden}.bx--side>span{position:absolute;top:0;left:0}.card__path,.card__edge .st{padding:0 .6ch;font-size:.72rem}.card__path{text-overflow:ellipsis;min-width:0;overflow:hidden}.card__body{flex-direction:column;flex:1;min-width:0;padding:.5rem .8ch .4rem;display:flex}.card__desc{line-height:1.5}.card__stack{flex-wrap:wrap;margin-top:auto;padding-top:.65rem;display:flex}.card__stack .tag{color:var(--fg2);font-size:.66rem}.st{align-items:center;gap:.35rem;display:inline-flex}.st__dot{background:currentColor;border-radius:50%;width:6px;height:6px;box-shadow:0 0 6px}.st.a .st__dot{animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.st.a .st__dot{animation:none}}h1{font-family:var(--font-display);letter-spacing:2px;color:var(--strong);text-shadow:0 0 18px rgba(var(--glow-rgb), .5);word-break:break-word;margin:.2rem 0;font-size:3.4rem;font-weight:400;line-height:1}.sub{color:var(--accent2);letter-spacing:3px;text-transform:uppercase;font-size:.75rem}.bio{max-width:60ch;color:var(--fg2);margin-top:.8rem}.bio p+p{margin-top:.8rem}.whoami{grid-template-columns:1fr minmax(220px,300px);align-items:stretch;gap:1.5rem;margin-bottom:1.2rem;display:grid}.whoami-left{flex-direction:column;min-width:0;display:flex}.whoami-text{margin:0}.whoami-left .cmdbar{margin:auto 0 0;padding-top:1.2rem}.photo-frame{border:1px solid var(--border);background:var(--panel);box-shadow:0 0 0 1px var(--border-soft), 0 8px 30px var(--shadow);border-radius:8px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.photo-frame__bar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:.4rem;padding:.45rem .7rem;display:flex}.photo-frame__title{color:var(--dim);margin-left:.4rem;font-size:.78rem}.photo-frame__body{background:radial-gradient(circle at 50% 40%, var(--surface), var(--bg));flex:1;justify-content:center;align-items:center;min-height:220px;display:flex;overflow:hidden}.photo-frame__img{object-fit:cover;filter:grayscale(.35)contrast(1.05)brightness(.95);width:100%;height:100%;display:block}.photo-frame__ascii{color:var(--accent);font-family:var(--font);text-shadow:0 0 6px rgba(var(--glow-rgb), .4);text-align:left;margin:0;font-size:.72rem;line-height:1.3}.photo-frame__caption{border-top:1px solid var(--border);color:var(--dim);background:var(--surface);padding:.45rem .7rem;font-size:.74rem}@media (width<=720px){.whoami{grid-template-columns:1fr}.whoami .photo-frame{order:-1;width:100%;max-width:100%}.whoami .photo-frame__body{min-height:0;display:block}.whoami .photo-frame__img{object-fit:cover;width:100%;height:auto;max-height:55vh}.bio{max-width:70ch}}.cmdbar{flex-wrap:wrap;gap:.5rem;margin:1.2rem 0;display:flex}.cmdbar button{font:inherit;background:var(--surface);color:var(--accent);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:.4rem .8rem;transition:all .15s}.cmdbar button:hover{background:var(--accent);color:var(--on-accent);box-shadow:0 0 14px rgba(var(--glow-rgb), .6)}.cmdbar button:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}table{border-collapse:collapse;width:100%;margin-top:.4rem}td{vertical-align:top;border-bottom:1px dashed var(--border-soft);padding:.25rem .9rem .25rem 0}td.k{color:var(--accent2);white-space:nowrap}.tag{border:1px solid var(--border);color:var(--accent);border-radius:4px;margin:.12rem;padding:.05rem .45rem;font-size:.78rem;display:inline-block}.st{border:1px solid;border-radius:4px;padding:.05rem .45rem;font-size:.7rem}.st.a{color:var(--accent);border-color:var(--border)}.st.b{color:var(--amber);border-color:var(--border-amber)}a{color:var(--accent2)}a:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}.live-term{border:1px solid var(--border);background:var(--panel);box-shadow:0 0 0 1px var(--border-soft), 0 8px 30px var(--shadow);cursor:text;border-radius:8px;flex-direction:column;min-height:220px;margin-top:1rem;display:flex;overflow:hidden}.live-term__bar{background:var(--surface);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:.4rem;padding:.45rem .7rem;display:flex}.live-term__title{color:var(--dim);margin-left:.4rem;font-size:.78rem}.live-term__body{flex:auto;min-height:0;padding:.6rem .8rem;font-size:.8rem;line-height:1.35;overflow-y:auto}.live-term__line{white-space:pre-wrap;word-break:break-word}.live-term__line--out{color:var(--fg)}.live-term__prompt{align-items:baseline;gap:1ch;display:flex}.live-term__input{color:var(--strong);font:inherit;caret-color:var(--accent);background:0 0;border:none;outline:none;flex:1;padding:0}.live-term__input::placeholder{color:var(--dim);opacity:.7}.arcade{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.arcade__hud{flex:none;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;font-size:.8rem;display:flex}.arcade__hud b{color:var(--accent)}.arcade__canvas{object-fit:contain;border:1px solid var(--border);max-width:100%;min-height:0;image-rendering:pixelated;border-radius:4px;flex:auto;align-self:center}.arcade__over{text-align:center;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);flex-direction:column;justify-content:center;align-items:center;gap:.8rem;padding:1rem;display:flex;position:absolute;inset:0}.arcade__over-msg{color:var(--red);text-shadow:0 0 12px #ff4d4d99;max-width:90%;font-size:1.1rem}.arcade__over-msg.win{color:var(--accent);text-shadow:0 0 12px rgba(var(--glow-rgb), .6)}.arcade__btn{font:inherit;background:var(--surface);color:var(--accent);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:.4rem .9rem;transition:all .15s}.arcade__btn:hover,.arcade__btn:focus-visible{background:var(--accent);color:var(--on-accent);box-shadow:0 0 14px rgba(var(--glow-rgb), .6);outline:none}@media (prefers-reduced-motion:reduce){#boot,.shell{transition:none}#boot .line{opacity:1;animation:none}.blink:after,#feed .block,.boot-row{animation:none}}@media (width<=480px){body{font-size:14px}h1{font-size:2.6rem}.shell{padding:1.25rem .9rem 4rem}}.out--skills{counter-reset:ln;font-size:.85rem;line-height:1.7}.out--skills .boot-row{counter-increment:ln;border-radius:3px;padding:0 .4rem 0 0;display:flex}.out--skills .boot-row:before{content:counter(ln);text-align:right;border-right:1px solid var(--border);color:var(--dim);opacity:.6;flex:0 0 3ch;margin-right:1ch;padding-right:1ch}.out--skills .boot-row:hover{background:rgba(var(--glow-rgb), .06)}.out--skills .boot-row:hover:before{color:var(--accent);opacity:1}.js--kv{flex-wrap:wrap;padding-left:2ch;display:flex}.js__key{color:var(--accent2)}.js__p{color:var(--dim)}.js__arr{display:contents}.js__item{margin-left:1ch}.js__str{color:var(--accent);transition:text-shadow .2s}.js__item:hover .js__str{text-shadow:0 0 8px rgba(var(--glow-rgb), .7)}.out--approach{font-size:.85rem;line-height:1.6}.out--approach b{color:var(--strong);font-weight:700}.man__hd{justify-content:space-between;gap:1ch;margin:.2rem 0 .6rem;display:flex}.man__ft{margin-top:.9rem}.man__sec{color:var(--strong);letter-spacing:.05em;margin-top:.7rem;font-weight:700;display:block}.man__in{padding-left:7ch;display:block}.man__fl{color:var(--accent);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:rgba(var(--glow-rgb), .4);text-decoration-color:rgba(var(--glow-rgb), .4)}.man__opt{padding:.3rem 0 .3rem 7ch;display:block}.man__name{padding-left:7ch;display:block}.man__name .dim{display:block}.man__opt:hover .man__fl{text-shadow:0 0 8px rgba(var(--glow-rgb), .7)}.man__less{background:var(--accent);color:var(--panel);padding:0 .6ch;display:inline-block}@media (width<=600px){.man__in,.man__opt,.man__name{padding-left:3ch}}.out--about{font-size:.82rem;line-height:1.6}.log{border-left:2px solid #0000;grid-template-columns:auto 5ch 10ch 1fr;gap:1ch;padding:.1rem .4rem;display:grid}.log:hover{background:rgba(var(--glow-rgb), .05);border-left-color:currentColor}.log__ts{color:var(--dim);white-space:pre}.log__lvl{font-weight:700}.log__tag{color:var(--accent2)}.log--info{color:var(--fg2)}.log--warn{color:var(--amber)}.log--warn .log__msg{color:var(--fg)}.log--ok{color:var(--accent)}.log--ok .log__msg:before{content:"✓ "}.log--wip{color:var(--dim)}.log--wip .log__lvl{color:var(--accent2)}.log--wip .log__msg{color:var(--fg2)}.log--wip .log__msg:before{content:"◐";color:var(--accent2);margin-right:1ch;animation:1.6s linear infinite wipspin;display:inline-block}.log--done{color:var(--accent);border-top:1px dashed var(--border);margin-top:.4rem;padding-top:.4rem}@media (width<=600px){.log{grid-template-columns:5ch 1fr}.log__ts,.log__tag{display:none}}@keyframes wipspin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.log--wip .log__msg:before{animation:none}}.out--contact{font-size:.85rem;line-height:1.7}.cf__cm{color:var(--dim);font-style:italic}.cf{color:var(--fg);border-left:2px solid #0000;grid-template-columns:2ch 9ch 1ch 1fr auto;align-items:center;gap:1ch;padding:.15rem .4rem;text-decoration:none;display:grid}.cf__icon{color:var(--accent);display:inline-flex}.cf__icon svg{width:.95rem;height:.95rem}.cf__key{color:var(--accent2)}.cf__eq{color:var(--dim)}.cf__val{color:var(--accent);word-break:break-all}.cf__go{color:var(--dim);opacity:0;transition:opacity .15s}.cf:hover,.cf:focus-visible{background:rgba(var(--glow-rgb), .06);border-left-color:var(--accent)}.cf:hover .cf__val{text-underline-offset:3px;text-decoration:underline}.cf:hover .cf__go,.cf:focus-visible .cf__go{opacity:1}.cf:focus-visible{outline:2px solid var(--accent2);outline-offset:2px}@media (width<=600px){.cf{grid-template-columns:2ch 1fr}.cf__key,.cf__eq,.cf__go{display:none}}.topbar__hint{min-width:0;color:var(--dim);opacity:.8;white-space:nowrap;flex:1 1 0;font-size:.72rem;font-style:italic;overflow:hidden}.topbar__hint>span{display:inline-block}.topbar__hint.is-marquee>span{animation:hintscroll var(--dur) ease-in-out infinite alternate}.topbar__hint.is-marquee:hover>span{animation-play-state:paused}@keyframes hintscroll{0%,15%{transform:translate(0)}85%,to{transform:translateX(var(--shift))}}@media (prefers-reduced-motion:reduce){.topbar__hint.is-marquee>span{animation:none}}.poweroff{z-index:9998;background:#000;place-items:center;transition:opacity .6s;display:grid;position:fixed;inset:0}.poweroff--on{opacity:0}body.crt-off #root,body.crt-on #root{z-index:9999;position:relative}body.crt-off #root{pointer-events:none;animation:.7s cubic-bezier(.6,0,.9,.4) forwards crtoff}body.crt-on #root{animation:.7s cubic-bezier(.1,.6,.4,1) reverse crtoff}@keyframes crtoff{0%{filter:brightness();transform:scale(1)}60%{filter:brightness(4);transform:scaleY(.004)}to{filter:brightness(8);opacity:0;transform:scale(0,.004)}}.poweroff__msg{font-family:var(--font-display);color:#39ff14;text-shadow:0 0 12px #39ff14cc;font-size:clamp(2.5rem,10vw,6rem);animation:.25s steps(2,end) both poweroffmsg}@keyframes poweroffmsg{0%{opacity:0;transform:skew(20deg)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){body.crt-off #root{opacity:0;animation:none}body.crt-on #root,.poweroff__msg{animation:none}}a.card{color:inherit;text-decoration:none}.card__open{color:var(--dim);padding:0 .6ch;font-size:.68rem;transition:color .15s}a.card:hover .card__open,a.card:focus-visible .card__open{color:var(--accent)}.project__back{color:var(--accent);margin-left:auto;text-decoration:none}.project__back:before{content:"$ ";color:var(--dim)}.project__back:hover{text-decoration:underline}.project__doc{border:1px solid var(--border);background:var(--panel);box-shadow:0 8px 30px var(--shadow);border-radius:8px;animation:.25s both rowin;overflow:hidden}.project__doc .out{padding:1.2rem 1.4rem;font-size:.88rem;line-height:1.7}.project__hd{border-bottom:1px dashed var(--border);gap:.6rem;padding-bottom:1.2rem;display:grid}.project__hd h1{font-size:2.6rem}.project__meta{flex-wrap:wrap;align-items:center;gap:.4rem 1.4rem;font-size:.78rem;display:flex}.project__sec{margin-top:1.6rem}.project__sec h2{color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin-bottom:.5rem;font-size:.95rem;font-weight:700}.project__sec p+p{margin-top:.7rem}.project__sec ul{gap:.45rem;list-style:none;display:grid}.project__sec li{padding-left:2ch;position:relative}.project__sec li:before{content:"›";color:var(--accent2);position:absolute;left:0}.project__sec pre{font:inherit;background:var(--surface);border:1px solid var(--border);color:var(--fg2);border-radius:6px;padding:.8rem 1rem;font-size:.8rem;overflow-x:auto}@media (width<=600px){.project__doc .out{padding:1rem}.project__hd h1{font-size:2rem}}
