:root{--ink:#171b3a;--paper:#fffdf4;--coral:#ff7657;--lime:#c9f65a;--purple:#7967e8;--blue:#5477e8}*{box-sizing:border-box}html{background:#d8ddf7}body{color:var(--ink);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:20;border:2px solid var(--ink);background:var(--lime);color:var(--ink);border-radius:7px;padding:10px 14px;font-weight:800;text-decoration:none;position:fixed;top:10px;left:10px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}:focus-visible{outline-offset:3px;outline:3px solid #171b3a}.site-shell{background:#dce5f6;min-height:100svh;padding:clamp(18px,4vw,54px);position:relative;overflow:hidden}.ambient{border:2px solid var(--ink);box-shadow:7px 7px 0 var(--ink);display:none;position:absolute;transform:rotate(-9deg)}.ambient-one{background:var(--lime);border-radius:50%;width:85px;height:85px;top:4%;right:5%}.ambient-two{background:var(--purple);width:45px;height:45px;bottom:8%;left:3%;transform:rotate(14deg)}.terminal{background:var(--paper);border:2px solid var(--ink);width:min(1050px,100%);min-height:min(780px,100svh - 120px);box-shadow:11px 11px 0 var(--ink);z-index:1;border-radius:18px;margin:0 auto;position:relative;overflow:hidden}.terminal-bar{border-bottom:2px solid var(--ink);background:#fffdf5;grid-template-columns:1fr auto 1fr;align-items:center;height:54px;padding:0 18px;font-size:12px;display:grid}.terminal-bar p{margin:0;font-weight:700}.traffic-lights{gap:7px;display:flex}.traffic-lights button{border:1.5px solid var(--ink);background:var(--coral);cursor:pointer;border-radius:50%;width:13px;height:13px;padding:0;transition:filter .15s,transform .15s}.traffic-lights button:nth-child(2){background:#ffd15c}.traffic-lights button:nth-child(3){background:var(--lime)}.traffic-lights button:hover{filter:brightness(1.08);transform:scale(1.12)}.traffic-lights button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.status{color:#4a7026;justify-self:end}.status:before{content:"●";margin-right:6px;animation:1.5s ease-in-out infinite status-pulse;display:inline-block}.terminal.window-paused .terminal-body,.terminal.window-minimized .terminal-body{display:none}.terminal.window-paused,.terminal.window-minimized{min-height:0;box-shadow:5px 5px 0 var(--ink)}.terminal.window-paused .terminal-bar,.terminal.window-minimized .terminal-bar{border-bottom:0}.terminal.window-paused .status{color:#9b4938}.terminal.window-paused .status:before{animation:none}.terminal.window-expanded{z-index:24;width:auto;min-height:0;margin:0;position:fixed;inset:12px;overflow-y:auto}body.portfolio-expanded{overflow:hidden}.terminal-body{cursor:text;padding:clamp(28px,6vw,76px)}.eyebrow{color:#67556c;letter-spacing:.16em;margin:0 0 18px;font-size:12px}h1{letter-spacing:-.065em;white-space:nowrap;margin:0;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:clamp(31px,7.2vw,88px);line-height:.95}.click-trigger{color:var(--blue);font:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0;transition:color .15s,transform .15s;display:inline}.click-trigger:hover{color:#3658c7}.click-trigger:active{transform:translate(2px,2px)}.click-trigger:focus-visible{outline-color:var(--blue);border-radius:4px}.dek{max-width:610px;margin:28px 0 38px;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:clamp(18px,2.2vw,25px);line-height:1.45}.command-menu{flex-wrap:wrap;gap:10px;margin-bottom:52px;display:flex}.command-menu button,.output-links button,.output-links a{border:1.5px solid var(--ink);color:var(--ink);cursor:pointer;background:#fff;border-radius:999px;padding:9px 15px;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s}.command-menu button span{color:#67556c;margin-right:9px;font-size:10px}.command-menu button:hover,.command-menu button:focus-visible,.output-links button:hover,.output-links button:focus-visible,.output-links a:hover,.output-links a:focus-visible{background:var(--lime);box-shadow:3px 3px 0 var(--ink);transform:translate(-2px,-2px)}.terminal-console{border:2px solid var(--ink);box-shadow:6px 6px 0 var(--purple);color:#f7f3ff;background:#171b3a;border-radius:12px;position:relative}.try-bubble{z-index:2;border:1.5px solid var(--ink);background:var(--lime);color:var(--ink);box-shadow:3px 3px 0 var(--ink);opacity:0;pointer-events:none;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:800;transition:opacity .16s,transform .16s;position:absolute;top:-38px;right:15px;transform:translateY(7px)rotate(2deg)}.terminal-console:hover .try-bubble,.terminal-console:focus-within .try-bubble{opacity:1;transform:translateY(0)rotate(2deg)}.terminal-console-bar{background:#262b50;border-bottom:1px solid #3e456d;border-radius:9px 9px 0 0;align-items:center;gap:6px;height:34px;padding:0 12px;display:flex}.console-controls{gap:6px;display:flex}.console-control{cursor:pointer;border:1px solid #090b1d;border-radius:50%;width:11px;height:11px;padding:0;transition:filter .15s,transform .15s}.console-control:hover{filter:brightness(1.16);transform:scale(1.12)}.console-control:focus-visible{outline-offset:2px;outline:2px solid #fffdf4}.control-pause{background:var(--coral)}.control-minimize{background:#ffe08a}.control-expand{background:var(--lime)}.terminal-console-bar b{color:#b8bdd7;margin-left:7px;font-size:10px;font-weight:500}.terminal-console.is-paused .command-line,.terminal-console.is-paused .history,.terminal-console.is-minimized .command-line,.terminal-console.is-minimized .history{display:none}.terminal-console.is-paused,.terminal-console.is-minimized{box-shadow:3px 3px 0 var(--purple)}.terminal-console.is-paused .terminal-console-bar,.terminal-console.is-minimized .terminal-console-bar{border-bottom:0}.terminal-console.is-expanded{z-index:25;flex-direction:column;margin:0;display:flex;position:fixed;inset:18px;box-shadow:9px 9px #090b1d}.terminal-console.is-expanded .history{flex:1;overflow:auto}body.terminal-expanded{overflow:hidden}.history{gap:16px;padding:4px 20px 24px;display:grid}.output{border-left:3px solid var(--lime);padding:4px 0 4px 18px;animation:.25s both appear}.output p{max-width:700px;margin:7px 0;line-height:1.55}.output .prompt{color:#aeb4d1;font-size:13px}.prompt span,.command-line label span{color:var(--lime);font-weight:700}.output h2{color:#fffdf4;margin:12px 0 8px;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:clamp(22px,3vw,32px)}.output-links{flex-wrap:wrap;gap:8px;margin-top:15px;display:flex}.output-links button,.output-links a{padding:6px 11px;font-size:13px}.output-links a{color:var(--lime)}.collection-label{color:var(--lime);letter-spacing:.12em;text-transform:uppercase;margin:32px 0 12px;font-size:12px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:820px;display:grid}.project-card{border:1.5px solid var(--ink);color:var(--ink);background:#fff;border-radius:12px;overflow:hidden;box-shadow:4px 4px #090b1d}.project-card img{aspect-ratio:16/9;object-fit:cover;object-position:top;border-bottom:1.5px solid var(--ink);width:100%;display:block}.project-copy{padding:13px 14px 15px}.project-copy h4,.repo-card h4{margin:0 0 5px;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:17px}.project-copy p{color:#686e89;margin:0;font-size:11px}.project-copy .project-role{color:var(--ink);margin-top:12px;font-size:12px;font-weight:800}.project-copy .project-outcome{margin-top:11px;line-height:1.5}.project-stack{flex-wrap:wrap;gap:5px;margin:9px 0 0;padding:0;list-style:none;display:flex}.project-stack li{color:#494f71;background:#f5f4ff;border:1px solid #c8cce0;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:700}.project-copy a{color:#4732b8;margin-top:10px;font-size:12px;font-weight:700;display:inline-block}.repo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:820px;display:grid}.repo-card{border:1.5px solid var(--ink);min-height:150px;color:var(--ink);background:#eeebff;border-radius:12px;padding:16px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:block}.repo-card:hover,.repo-card:focus-visible{box-shadow:4px 4px 0 var(--ink);transform:translate(-2px,-2px)}.repo-card span{color:#5141c7;font-size:10px}.repo-card h4{margin-top:16px}.repo-card p{color:#5f6687;font-size:12px}.terminal-resume{overscroll-behavior:contain;scrollbar-color:var(--lime) #262b50;scrollbar-width:thin;background:#11152f;border:1px solid #59618f;border-radius:10px;max-width:820px;max-height:min(58vh,620px);margin:20px 0 4px;padding:8px 20px 22px;overflow-y:auto}.terminal-resume:focus-visible{outline-color:var(--lime)}.geography-game{background:#11152f;border:1px solid #59618f;border-radius:10px;max-width:820px;margin-top:18px;overflow:hidden}.geography-hud{border-bottom:1px solid #59618f;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:13px 16px;display:flex}.geography-hud p{margin:0}.geography-hud>p:first-child{color:var(--lime);font-weight:800}.geography-hud strong{color:#fffdf4}.geography-feedback{color:#d9def0;flex:100%;font-size:12px}.geography-hud button{border:1px solid var(--lime);color:var(--lime);cursor:pointer;background:0 0;border-radius:6px;margin-left:auto;padding:5px 10px}.map-controls{gap:5px;margin-left:auto;display:flex}.map-controls button{min-width:31px;margin:0}.geography-game svg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#183f67;width:100%;height:auto;display:block}.geography-game svg:active{cursor:grabbing}.geography-game path{fill:#d8d0a9;stroke:#171b3a;stroke-width:.55px;cursor:crosshair;transition:fill .12s}.geography-game path:hover,.geography-game path:focus{fill:var(--lime);outline:none}.geography-game path:focus{stroke:#fff;stroke-width:2px}.geography-game path.is-correct,.geography-game path.is-answer{fill:var(--lime)}.geography-game path.is-wrong{fill:var(--coral)}.snake-game{background:#11152f;border:1px solid #59618f;border-radius:10px;max-width:820px;margin-top:18px;overflow:hidden}.snake-game:focus-visible{outline:3px solid var(--lime);outline-offset:3px}.snake-hud{border-bottom:1px solid #59618f;flex-wrap:wrap;align-items:center;gap:8px 15px;padding:12px 14px;display:flex}.snake-hud strong{color:var(--lime)}.snake-hud>span{color:#d9def0;font-size:12px}.snake-status{text-transform:uppercase;min-width:48px}.snake-hud label{color:#d9def0;margin-left:auto;font-size:12px}.snake-hud select{color:#fffdf4;background:#262b50;border:1px solid #7c85ae;border-radius:5px}.snake-hud button,.snake-controls button{border:1px solid var(--lime);color:var(--lime);cursor:pointer;background:0 0;border-radius:6px;padding:5px 10px}.snake-hud button:hover,.snake-hud button:focus-visible,.snake-controls button:hover,.snake-controls button:focus-visible{background:var(--lime);color:#171b3a}.snake-game canvas{aspect-ratio:3/2;width:100%;height:auto;image-rendering:pixelated;background:#0b1027;display:block}.snake-controls{border-top:1px solid #59618f;grid-template-columns:repeat(3,42px);grid-template-areas:".up.""left down right";justify-content:center;gap:6px;padding:12px;display:grid}.snake-controls button{min-height:38px;font-size:18px}.snake-controls [data-direction=up]{grid-area:up}.snake-controls [data-direction=left]{grid-area:left}.snake-controls [data-direction=down]{grid-area:down}.snake-controls [data-direction=right]{grid-area:right}.resume-section{border-bottom:1px solid #343b65;padding:18px 0 4px}.resume-section:last-child{border-bottom:0}.resume-section h3{z-index:1;color:var(--lime);letter-spacing:.12em;text-transform:uppercase;background:#11152f;margin:0 0 13px;padding:8px 0;font-size:12px;position:sticky;top:-8px}.resume-entry{margin:0 0 18px}.resume-entry:last-child{margin-bottom:8px}.resume-entry-header{justify-content:space-between;align-items:baseline;gap:18px;margin-bottom:7px;display:flex}.resume-entry h4{color:#fffdf4;margin:0;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:15px}.resume-entry-header span{color:#b8bdd7;flex:none;font-size:11px}.resume-entry p{color:#e4e6f2;margin:6px 0;font-size:12px;line-height:1.6}.command-line{color:#f7f3ff;align-items:center;gap:9px;min-height:62px;padding:11px 16px;display:flex}.command-line label{white-space:nowrap;font-size:14px}.command-line label span{color:#c9f65a}.prompt-cursor{background:var(--lime);cursor:text;flex:0 0 8px;width:8px;height:17px;animation:1s step-end infinite blink}.command-line input{color:#fffdf4;min-width:0;caret-color:var(--coral);background:0 0;border:0;outline:0;flex:1}.command-line input::placeholder{color:#939abb}.command-line button{background:var(--lime);width:38px;height:34px;color:var(--ink);cursor:pointer;border:1.5px solid #fffdf4;border-radius:7px;font-weight:900}.command-line button:hover,.command-line button:focus-visible{outline-offset:2px;background:#ffe08a;outline:2px solid #fffdf4}footer{z-index:1;letter-spacing:.06em;justify-content:space-between;align-items:center;width:min(1050px,100%);margin:25px auto 0;font-size:11px;font-weight:700;display:flex;position:relative}.footer-links{gap:14px;display:flex}.footer-links a{color:inherit;text-underline-offset:3px}.footer-links a:hover{text-decoration-thickness:2px}.noscript-card{border:2px solid var(--ink);background:#fff;border-radius:10px;margin-bottom:42px;padding:18px 20px}.noscript-card h2{margin:0 0 10px;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:20px}.noscript-card p{margin:7px 0;line-height:1.55}.noscript-card a{color:#4732b8;font-weight:800}.konami-toast{z-index:30;color:#171b3a;opacity:0;background:#c9f65a;border:2px solid #171b3a;border-radius:8px;grid-template-columns:auto 1fr;gap:2px 11px;min-width:245px;padding:13px 16px;transition:opacity .18s,transform .18s;display:grid;position:fixed;bottom:22px;right:22px;transform:translateY(14px);box-shadow:5px 5px #171b3a}.konami-toast[hidden]{display:none}.konami-toast.is-visible{opacity:1;transform:translateY(0)}.konami-toast strong{letter-spacing:.08em;text-transform:uppercase;align-self:end;font-size:11px}.konami-toast>span:last-child{grid-column:2;font-size:12px}.pixel-spark{background:#5477e8;grid-row:1/3;align-self:center;width:18px;height:18px;animation:.5s steps(3,end) both pixel-pop;box-shadow:6px 0 #171b3a,0 6px #ff7657,6px 6px #7967e8}body[data-theme=midnight]{--ink:#edf2ff;--paper:#18213d;--blue:#a9baff;--purple:#7186ee;color:#f9fbff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body[data-theme=midnight] .site-shell{background:#080d1b}body[data-theme=midnight] .terminal{border-color:#edf2ff;box-shadow:11px 11px #5266c7}body[data-theme=midnight] .terminal-bar{background:#232d50;border-color:#edf2ff}body[data-theme=midnight] .eyebrow{color:#d9def0}body[data-theme=midnight] .status{color:var(--lime)}body[data-theme=midnight] .click-trigger:hover{color:#b8c6ff}body[data-theme=midnight] .try-bubble,body[data-theme=midnight] .command-line button{color:#171b3a}body[data-theme=midnight] .command-menu button,body[data-theme=midnight] .output-links button,body[data-theme=midnight] .output-links a{color:#f9fbff;background:#273154;border-color:#edf2ff}body[data-theme=midnight] .command-menu button span{color:#d9def0}body[data-theme=midnight] .command-menu button:hover,body[data-theme=midnight] .command-menu button:focus-visible,body[data-theme=midnight] .output-links button:hover,body[data-theme=midnight] .output-links button:focus-visible,body[data-theme=midnight] .output-links a:hover,body[data-theme=midnight] .output-links a:focus-visible{background:var(--lime);color:#171b3a;box-shadow-color:#dce5f6}body[data-theme=midnight] .project-card{color:#171b3a;border-color:#edf2ff}body[data-theme=midnight] .project-copy .project-role{color:#171b3a}body[data-theme=midnight] .repo-card{color:#f9fbff;background:#222d50;border-color:#edf2ff}body[data-theme=midnight] .repo-card span{color:#b7c5ff}body[data-theme=midnight] .repo-card p{color:#e2e6f4}body[data-theme=midnight] .skip-link{color:#171b3a}body[data-theme=midnight] .noscript-card{background:#273154}body[data-theme=midnight] .noscript-card a{color:#c9f65a}body[data-theme=midnight] :focus-visible{outline-color:#c9f65a}@keyframes appear{0%{opacity:0;transform:translateY(7px)}}@keyframes blink{0%,48%{opacity:1}49%,to{opacity:0}}@keyframes pixel-pop{0%{opacity:0;transform:scale(.5)rotate(-8deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes status-pulse{0%,to{opacity:1}50%{opacity:.32}}@media (width<=600px){.site-shell{padding:14px 14px 24px}.terminal{min-height:calc(100svh - 70px);box-shadow:6px 6px 0 var(--ink);border-radius:13px}.terminal-bar{grid-template-columns:1fr auto}.terminal-bar p{display:none}.terminal-body{padding:34px 22px}.ambient{display:none}h1{letter-spacing:-.055em}.dek{margin:23px 0 28px}.command-menu{gap:7px;margin-bottom:34px}.command-menu button{padding:8px 11px}.command-line label{font-size:0}.command-line label span{font-size:13px}.project-grid,.repo-grid{grid-template-columns:1fr}.terminal-resume{max-height:65vh;padding-inline:14px}.resume-entry-header{display:block}.resume-entry-header span{margin-top:4px;display:block}.snake-hud label{width:100%;margin-left:0}.snake-game canvas{object-fit:contain;min-height:230px}footer{flex-wrap:wrap;justify-content:center;gap:12px 18px;padding:0 4px}footer>:last-child{text-align:center;flex-basis:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
