@font-face{font-family:"Jersey 25";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jersey-25-latin-400-normal-BuYJnnt7.woff2)format("woff2"),url(/assets/jersey-25-latin-400-normal-XLH5qs2C.woff)format("woff")}@font-face{font-family:"Jersey 25";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jersey-25-latin-ext-400-normal-CP5Jl3WN.woff2)format("woff2"),url(/assets/jersey-25-latin-ext-400-normal-uA4qe_6D.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.woff)format("woff")}@font-face{font-family:Google Sans Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/google-sans-code-latin-400-normal-CqaqKeEp.woff2)format("woff2"),url(/assets/google-sans-code-latin-400-normal-C-TpydLV.woff)format("woff")}@font-face{font-family:Google Sans Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/google-sans-code-latin-ext-400-normal-xZllot2U.woff2)format("woff2"),url(/assets/google-sans-code-latin-ext-400-normal-CALCk2lB.woff)format("woff")}@font-face{font-family:Google Sans Code;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/google-sans-code-latin-600-normal-BUCrGHE5.woff2)format("woff2"),url(/assets/google-sans-code-latin-600-normal-CKee-OZj.woff)format("woff")}@font-face{font-family:Google Sans Code;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/google-sans-code-latin-ext-600-normal-CNNK3O9-.woff2)format("woff2"),url(/assets/google-sans-code-latin-ext-600-normal-DDkmmTp6.woff)format("woff")}:root{--night:#080f14;--night-2:#121a22;--ink:#e6eef2;--ink-dim:#8fa0ad;--neon:#00e5a8;--rose:#ff3d9a;--line:#1e3b3a;--display:"Jersey 25", "Segoe UI", sans-serif;--body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono:"Google Sans Code", ui-monospace, Menlo, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-behavior:auto;overflow-x:clip}body{background:var(--night);color:var(--ink);font-family:var(--body);font-size:16px;overflow-x:clip}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--neon);outline-offset:2px}body:before{content:"";height:env(safe-area-inset-top,0px);z-index:10;background:var(--night);position:fixed;inset:0 0 auto}.top{top:env(safe-area-inset-top,0px);z-index:8;padding-block:12px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));pointer-events:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid;position:fixed;left:0;right:0}.top>*{pointer-events:auto}nav{scrollbar-width:none;background:#080f14b3;border:1px solid #ffffff14;border-radius:999px;grid-column:2;justify-content:center;gap:2px;min-width:0;padding:4px;display:flex;overflow-x:auto}nav::-webkit-scrollbar{display:none}.ghost{font:600 13px var(--body);color:var(--ink);border:1px solid var(--line);cursor:pointer;white-space:nowrap;background:#121a22cc;border-radius:3px;padding:7px 11px}nav button{font:400 19px/1 var(--display);letter-spacing:.04em;color:var(--ink-dim);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:7px 14px;transition:color .2s,background .2s}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}nav button:hover{color:var(--ink);background:#ffffff10}nav button[aria-current=true]{color:var(--night);background:var(--neon)}.intro{height:260vh;position:relative}.stage{height:100vh;touch-action:pan-y;background:#05070d;height:100dvh;position:sticky;top:0;overflow:hidden}.dive{pointer-events:none;opacity:0;background:radial-gradient(circle,#0000 30%,#05070d 75%);position:absolute;inset:0}.flash{pointer-events:none;background:var(--night);opacity:0;place-items:center;display:grid;position:absolute;inset:0}.flash pre{font:600 clamp(14px, 2vw, 18px)/1.6 var(--mono);color:var(--neon);margin:0}@keyframes bob{50%{transform:translateY(3px)}}.panel{z-index:7;top:calc(68px + env(safe-area-inset-top,0px));right:max(16px, env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));border:1px solid var(--neon);background:#080f14f0;width:min(400px,100vw - 32px);padding:22px 22px 26px;transition:transform .35s cubic-bezier(.2,.8,.2,1);position:fixed;overflow-y:auto;transform:translate(calc(100% + 40px));box-shadow:0 0 0 1px #00e5a833,0 0 24px #00e5a822}.panel.open{transform:none}.kicker{font:12px var(--mono);color:var(--rose);letter-spacing:.06em}.panel h2,.cards h2{font:400 28px/1.1 var(--display);letter-spacing:.03em;text-wrap:balance;margin:6px 0 14px}.panel h3,.cards h3{font:600 12px var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--neon);margin:20px 0 8px}.panel p,.panel li,.cards p,.cards li{line-height:1.55}.panel p,.cards p{margin:0 0 10px}.panel ul,.cards ul{gap:4px;margin:0;padding-left:18px;display:grid}.panel a,.cards a{color:var(--rose)}.close{position:absolute;top:12px;right:12px}.tag{font:600 11px var(--mono);vertical-align:2px;border:1px solid;border-radius:2px;margin-left:6px;padding:2px 7px;display:inline-block}.tag.now{color:var(--neon)}.tag.next{color:var(--ink-dim)}.road{gap:8px;padding-left:24px;display:grid;position:relative}.road:before{content:"";background:linear-gradient(var(--neon), var(--line) 40%);width:2px;position:absolute;top:14px;bottom:14px;left:7px}.road div{background:var(--night);border:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex;position:relative}.road div:before{content:"";background:var(--night-2);border:2px solid var(--ink-dim);width:8px;height:8px;margin-top:-6px;position:absolute;top:50%;left:-22px}.road div.now{border-color:#00e5a866}.road div.now:before{background:var(--neon);border-color:var(--neon);box-shadow:0 0 8px var(--neon)}.panel ul.chips,.cards ul.chips{flex-wrap:wrap;gap:6px;margin:0 0 10px;padding:0;list-style:none;display:flex}.chips li{font:13px/1 var(--mono);border:1px solid var(--line);background:#00e5a80d;border-radius:2px;padding:6px 8px}.soon{font:13px var(--mono);color:var(--ink-dim)}.pager{justify-content:space-between;gap:8px;margin-top:24px;display:flex}.after{z-index:1;background:var(--night);padding-block:72px 64px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background-image:linear-gradient(#00e5a80a 1px,#0000 1px),linear-gradient(90deg,#00e5a80a 1px,#0000 1px);background-size:32px 32px;position:relative}.after .wrap{max-width:1120px;margin:0 auto}.after .prompt{font:600 14px var(--mono);color:var(--neon);margin:0 0 6px}.after h2.big{font:400 clamp(32px, 5vw, 52px)/1.05 var(--display);letter-spacing:.04em;margin:0 0 28px}.cards{grid-template-columns:repeat(6,1fr);gap:16px;display:grid}.cards section{background:var(--night-2);border:1px solid var(--line);grid-column:span 2;min-width:0;padding:18px 20px;transition:border-color .2s,box-shadow .2s;position:relative}.cards section:hover{border-color:var(--neon);box-shadow:0 0 0 1px #00e5a855,0 0 22px #00e5a81f}#c-about{border-color:var(--neon)}#c-about,#c-projects{grid-column:span 3}#c-skills{grid-column:span 4;grid-template-columns:1fr 1fr;align-content:start;column-gap:28px;display:grid}#c-skills .lead{grid-column:1/-1}#c-contact{background:linear-gradient(90deg, #00e5a814, var(--night-2) 60%);border-color:#00e5a866;grid-column:1/-1;grid-template-columns:1.3fr 1fr 1fr;align-items:start;column-gap:32px;display:grid}#c-contact .blk h3{margin-top:26px}.cards .ico{position:absolute;top:16px;right:18px}.cards .lead h2{padding-right:44px}.copy{vertical-align:1px;margin-left:8px;padding:3px 8px;font-size:12px}@media (max-width:999px){.cards{grid-template-columns:1fr 1fr}.cards section{grid-column:span 1}#c-about,#c-projects,#c-skills,#c-contact{grid-column:1/-1}}@media (max-width:639px){.cards,#c-skills,#c-contact{grid-template-columns:1fr}#c-contact .blk h3{margin-top:20px}}@media (prefers-reduced-motion:reduce){.cards section{transition:none}}.cards .close,.cards .pager{display:none}.back{margin-top:28px}.term{z-index:9;border:1px solid var(--neon);width:min(680px,100vw - 32px);height:min(480px,75vh);font:14px/1.5 var(--mono);background:#050a0d;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 30px #00e5a833}.term .bar{background:var(--night-2);color:var(--ink-dim);justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.term .out{white-space:pre-wrap;color:var(--ink);flex:1;min-height:0;padding:10px 12px;line-height:1.45;overflow-y:auto}.t-acc{color:var(--neon)}.t-blue{color:#6fa8ff}.t-arg{color:#9fd0ff}.t-dim{color:var(--ink-dim)}.t-ink{color:var(--ink)}.t-err{color:var(--rose)}.t-h{color:#6fa8ff;letter-spacing:.08em;font-weight:600}.term .ps{white-space:nowrap}.term form{border-top:1px solid var(--line);color:var(--ink);gap:8px;padding:8px 12px;display:flex}.term input{min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:none;flex:1}[hidden]{display:none!important}.term .out{overscroll-behavior:contain}.postit-view{z-index:9;background:#0008;place-items:center;display:grid;position:fixed;inset:0}.postit-card{aspect-ratio:1;color:#2a2a3a;background:#f4dd5a;place-items:center;width:min(300px,100vw - 48px);padding:36px 24px 24px;display:grid;position:relative;transform:rotate(-3deg);box-shadow:0 16px 40px #000a}.postit-card pre{font:600 26px/1.5 var(--mono);letter-spacing:.04em;margin:0}.postit-card .ghost{position:absolute;top:8px;right:8px}.alert-fx{z-index:8;pointer-events:none;opacity:0;background:radial-gradient(#0000 40%,#ff1e3c88);position:fixed;inset:0;box-shadow:inset 0 0 0 6px #ff1e3c}body.alert .alert-fx{animation:.75s ease-in-out 6 alert-pulse}@keyframes alert-pulse{50%{opacity:1}}@media (max-width:720px){.top{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding-block:10px}nav{grid-column:1;justify-content:flex-start;justify-self:start;max-width:100%}.top .settings{grid-column:2}.panel{top:auto;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:max(12px, env(safe-area-inset-left,0px));right:max(12px, env(safe-area-inset-right,0px));width:auto;height:58%;transform:translateY(calc(100% + 40px))}}@media (prefers-reduced-motion:reduce){body.alert .alert-fx{opacity:.6;animation:none}.panel,nav button,.sw input,.sw input:after{transition:none}}#gl{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:absolute;inset:0}#gl.hovering{cursor:pointer}.tip{z-index:4;pointer-events:none;font:600 12px var(--mono);background:var(--neon);color:var(--night);white-space:nowrap;padding:4px 8px;position:fixed;transform:translate(14px,14px)}.loading{color:var(--neon);background:#05070d;place-items:center;transition:opacity 1s;display:grid;position:absolute;inset:0}.load-label{font:24px/1 var(--display);letter-spacing:.04em;margin:0 0 6px}.loading pre{font:600 14px/1.3 var(--mono);white-space:pre;max-width:calc(100vw - 32px);margin:0;overflow:hidden}.loading.done{opacity:0}.top{transition:opacity 1s .3s}body.is-loading .top{opacity:0;pointer-events:none}body.is-loading .top>*{pointer-events:none}.settings{grid-column:3;justify-self:end;position:relative}.gear{background:#080f14b3;border-color:#ffffff14;border-radius:50%;place-items:center;width:38px;height:38px;padding:0;display:grid}.gear:hover,.gear[aria-expanded=true]{border-color:var(--neon);color:var(--neon)}.gear svg{transition:transform .4s}.gear[aria-expanded=true] svg{transform:rotate(60deg)}.set-panel{-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);opacity:0;background:#080f14d9;border-radius:10px;width:250px;padding:14px 16px;transition:opacity .2s,transform .2s;position:absolute;top:calc(100% + 10px);right:0;transform:translateY(-6px);box-shadow:0 12px 30px #0008}.set-panel.open{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.set-panel{transition:none}}.set-title{font:12px var(--mono);color:var(--rose);letter-spacing:.06em;margin-bottom:8px}.sw{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:7px 0;font-size:14px;display:flex}.sw input{appearance:none;border:1px solid var(--line);cursor:pointer;background:#1e2a33;border-radius:10px;flex:none;width:36px;height:20px;margin:0;transition:background .2s,border-color .2s;position:relative}.sw input:after{content:"";background:var(--ink-dim);border-radius:50%;width:14px;height:14px;transition:transform .2s,background .2s;position:absolute;top:2px;left:2px}.sw input:checked{border-color:var(--neon);background:#00e5a833}.sw input:checked:after{background:var(--neon);transform:translate(16px)}@media (prefers-reduced-motion:reduce){.gear svg{transition:none}}*,:before,:after{box-sizing:border-box}body{margin:0}code.sel{font:.92em var(--mono);color:var(--neon);-webkit-user-select:all;user-select:all}.noscript{max-width:60ch;margin:0 auto;padding:24px 16px;line-height:1.55}@media (hover:none){.sw:has(#optLook){display:none}}
