:root{--cream:#f1ead8;--cream-2:#e8dec5;--cream-deep:#dccfa8;--ink:#15161a;--ink-soft:#2a2a30;--ink-mid:#4a4a52;--paper:#fbf7eb;--line:#15161a;--poke-red:#cf3a2f;--poke-yellow:#f2c037;--poke-blue:#2d63b5;--poke-green:#4ea54a;--ball-orange:#d96b2a;--ball-navy:#1c2c4a;--ball-court:#c98a4b;--ball-line:#ecd9b8;--crt-amber:#d97742;--crt-green:#4a9a5a;--accent:var(--poke-red);--accent-2:var(--poke-yellow);--accent-3:var(--poke-blue);--win-bg:var(--paper);--win-bar:var(--cream-2);--win-shadow:6px 6px 0 0 var(--ink);--z-cursor:9999;--z-menu:200;--z-dock:200;--z-modal:500}[data-mode=dark]{--cream:#15161a;--cream-2:#1f2026;--cream-deep:#2a2b32;--ink:#f1ead8;--ink-soft:#d9d3c2;--ink-mid:#a39e90;--paper:#1c1d22;--line:#f1ead8;--win-bg:#1c1d22;--win-bar:#25262c;--win-shadow:6px 6px 0 0 #000;--poke-red:#ff5b4d;--poke-yellow:#ffd24a;--poke-blue:#5a8fff;--ball-orange:#ff8a3d;--ball-court:#e0a76d;--crt-amber:#ff9d5a;--crt-green:#6cdf80}[data-theme=pokemon]{--accent:var(--poke-red);--accent-2:var(--poke-yellow);--accent-3:var(--poke-blue)}[data-theme=basketball]{--accent:var(--ball-orange);--accent-2:var(--ball-navy);--accent-3:var(--ball-court)}[data-theme=basketball][data-mode=dark]{--accent-2:#5a78b8}[data-theme=neutral]{--accent:var(--crt-amber);--accent-2:var(--crt-green);--accent-3:var(--ink-soft)}[data-theme=lofi]{--accent:#c9773a;--accent-2:#4a9e8e;--accent-3:#7a5c3a;--cream:#f5ede0;--cream-2:#ecdcca;--cream-deep:#dccbb0;--paper:#faf4eb}*{box-sizing:border-box}html,body{background:var(--cream);color:var(--ink);cursor:none;margin:0;padding:0;font-family:JetBrains Mono,Menlo,monospace;font-size:14px;line-height:1.55;overflow-x:hidden}body{background-image:radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--ink) 10%, transparent) 1px, transparent 0);background-size:18px 18px;background-attachment:fixed;transition:background-color .4s,color .4s}@media (hover:none){html,body{cursor:auto}}::selection{background:var(--accent);color:var(--paper)}button,a{color:inherit;cursor:none;font-family:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.pixel-xl,.pixel-lg,.pixel-md,.pixel-sm,.pixel-xs{letter-spacing:.5px;font-family:VT323,JetBrains Mono,monospace;font-weight:400;line-height:.95}.pixel-xl{font-size:clamp(64px,11vw,168px)}.pixel-lg{font-size:clamp(48px,7vw,96px)}.pixel-md{font-size:clamp(32px,4vw,56px)}.pixel-sm{font-size:32px}.pixel-xs{font-size:22px}.label{letter-spacing:1px;text-transform:uppercase;font-family:"Press Start 2P",VT323,monospace;font-size:9px}.label-md{letter-spacing:1.5px;text-transform:uppercase;font-family:"Press Start 2P",VT323,monospace;font-size:11px;line-height:1.5}.mono{font-family:JetBrains Mono,monospace}.window{background:var(--win-bg);border:2px solid var(--line);box-shadow:var(--win-shadow);border-radius:4px;margin-bottom:64px;transition:box-shadow .2s,transform .2s;position:relative}.window-bar{background:var(--win-bar);border-bottom:2px solid var(--line);height:32px;color:var(--ink);border-radius:2px 2px 0 0;align-items:center;gap:10px;padding:0 12px;font-family:JetBrains Mono,monospace;font-size:12px;display:flex;position:relative}.window-bar:after{content:"";pointer-events:none;position:absolute;inset:0}.window-bar .lights{gap:6px;display:flex}.window-bar .lights span{background:var(--ink);border-radius:50%;width:11px;height:11px;display:inline-block}.window-bar .lights span:first-child{background:#ff5f57}.window-bar .lights span:nth-child(2){background:#febc2e}.window-bar .lights span:nth-child(3){background:#28c840}[data-mode=dark] .window-bar .lights span:first-child{background:#c14a40}[data-mode=dark] .window-bar .lights span:nth-child(2){background:#bf8d1e}[data-mode=dark] .window-bar .lights span:nth-child(3){background:#1f9430}.window-bar .title{text-align:center;letter-spacing:.3px;flex:1;font-size:13px;font-weight:500}.window-bar .meta{color:var(--ink-mid);font-size:11px}.window-body{padding:32px}@media (width<=700px){.window-body{padding:20px}.window{margin-bottom:40px}}.window-statusbar{border-top:2px solid var(--line);color:var(--ink-mid);background:var(--win-bar);border-radius:0 0 2px 2px;justify-content:space-between;align-items:center;padding:6px 12px;font-size:11px;display:flex}.hero-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:0;display:grid}.about-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.edu-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;display:grid}.contact-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:28px;display:grid}@media (width<=820px){.hero-grid,.about-grid,.edu-grid,.contact-grid{grid-template-columns:1fr;gap:16px}.hero-grid>div:first-child{border-right:none!important;border-bottom:2px solid var(--line)!important;padding:28px 22px!important}.hero-grid>aside{padding:22px!important}.about-grid{gap:18px}.window-body{padding:20px!important}.window{margin-bottom:36px}.pixel-xl{font-size:clamp(48px,14vw,96px)}.pixel-lg{font-size:clamp(40px,9vw,72px)}.pixel-md{font-size:clamp(28px,6vw,44px)}.menu-bar .item:not(.brand):not([data-keep]),.menu-bar .clock{display:none}.menu-bar .brand{margin-right:8px}.dock{gap:3px;max-width:calc(100vw - 16px);padding:4px;bottom:8px;overflow-x:auto}.dock-icon{flex-shrink:0;width:36px;height:36px;font-size:8px}.dock-icon:after{display:none}}@media (width<=480px){#desktop{padding:52px 10px 88px}.window{box-shadow:4px 4px 0 0 var(--ink)}.pixel-xl{font-size:clamp(40px,12vw,72px)}.hero-grid .row.gap-3.wrap{gap:8px}}#desktop{max-width:1180px;min-height:100vh;margin:0 auto;padding:56px 24px 100px;position:relative}@media (width<=700px){#desktop{padding:56px 12px 96px}}.cursor{pointer-events:none;width:22px;height:22px;z-index:var(--z-cursor);transition:opacity .2s;position:fixed;top:0;left:0;transform:translate(-2px,-2px)}.cursor svg{display:block}.cursor.hover .arrow{display:none}.cursor.hover .pointer{display:block}.cursor .pointer{display:none}.cursor-trail{background:var(--accent);pointer-events:none;width:6px;height:6px;z-index:calc(var(--z-cursor) - 1);opacity:0;border-radius:1px;position:fixed}.menu-bar{background:var(--cream-2);border-bottom:2px solid var(--line);height:36px;z-index:var(--z-menu);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);align-items:center;gap:4px;padding:0 14px;font-family:JetBrains Mono,monospace;font-size:12px;display:flex;position:fixed;top:0;left:0;right:0}.menu-bar .brand{align-items:center;gap:8px;margin-right:14px;font-family:"Press Start 2P",monospace;font-size:10px;display:flex}.menu-bar .brand .glyph{background:var(--accent);border:1.5px solid var(--line);width:18px;height:18px;display:inline-block;position:relative}.menu-bar .brand .glyph:after{content:"";background:var(--paper);position:absolute;inset:4px}.menu-bar .brand .glyph:before{content:"";background:var(--line);z-index:2;height:2px;position:absolute;top:50%;left:0;right:0}.menu-bar .item{cursor:none;-webkit-user-select:none;user-select:none;border-radius:3px;padding:6px 10px}.menu-bar .item:hover{background:var(--ink);color:var(--paper)}.menu-bar .spacer{flex:1}.menu-bar .right{color:var(--ink-mid);align-items:center;gap:14px;font-size:11px;display:flex}.menu-bar .right .clock{text-align:right;min-width:95px}.dock{background:var(--cream-2);border:2px solid var(--line);box-shadow:var(--win-shadow);z-index:var(--z-dock);border-radius:8px;align-items:center;gap:6px;padding:6px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.dock-icon{background:var(--paper);border:1.5px solid var(--line);width:44px;height:44px;color:var(--ink);cursor:none;background-clip:padding-box;border-radius:4px;place-items:center;font-family:"Press Start 2P",monospace;font-size:9px;transition:transform .18s,background .18s,color .18s;display:grid;position:relative}.dock-icon:after{content:attr(data-tip);background:var(--ink);color:var(--paper);white-space:nowrap;pointer-events:none;opacity:0;border-radius:3px;padding:4px 8px;font-size:11px;transition:opacity .15s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)}.dock-icon:hover:after{opacity:1}.dock-icon:hover{background:var(--accent);color:var(--paper);transform:translateY(-4px)scale(1.08)}.dock-divider{background:var(--ink-mid);width:1.5px;height:30px;margin:0 4px}@media (width<=700px){.dock{gap:4px;padding:4px;bottom:8px}.dock-icon{width:36px;height:36px;font-size:8px}.menu-bar .item{padding:6px;font-size:11px}.menu-bar .brand{font-size:9px}}.btn{background:var(--paper);border:2px solid var(--line);letter-spacing:.4px;box-shadow:3px 3px 0 0 var(--line);cursor:none;border-radius:3px;align-items:center;gap:8px;padding:10px 18px;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex;text-decoration:none!important}.btn:hover{background:var(--accent);color:var(--paper);box-shadow:5px 5px 0 0 var(--line);transform:translate(-2px,-2px)}.btn:active{box-shadow:0 0 0 0 var(--line);transform:translate(2px,2px)}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{background:var(--accent);color:var(--paper)}.dashed-rule{border:none;border-top:2px dashed var(--ink);opacity:.4;margin:24px 0}.placeholder{background:repeating-linear-gradient(45deg, transparent 0 8px, color-mix(in srgb, var(--ink) 6%, transparent) 8px 16px), var(--cream-2);border:1.5px dashed var(--ink-mid);color:var(--ink-mid);letter-spacing:.5px;text-transform:uppercase;place-items:center;font-family:JetBrains Mono,monospace;font-size:11px;display:grid}.crt-overlay{pointer-events:none;z-index:2;mix-blend-mode:multiply;opacity:0;background:repeating-linear-gradient(#0000 0 2px,#0000000a 2px 3px);transition:opacity .4s;position:fixed;inset:0}[data-mode=dark] .crt-overlay{opacity:.6;mix-blend-mode:screen}.reveal{opacity:0;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transform:translateY(28px)}.reveal.in{opacity:1;transform:translateY(0)}.tilt{transform-style:preserve-3d;will-change:transform;transition:transform .2s}.chip{background:var(--cream-2);border:1.5px solid var(--line);letter-spacing:.3px;white-space:nowrap;border-radius:3px;align-items:center;gap:6px;padding:4px 9px;font-family:JetBrains Mono,monospace;font-size:11px;display:inline-flex}.chip-solid{background:var(--ink);color:var(--paper)}.chip-accent{background:var(--accent);color:var(--paper);border-color:var(--line)}@keyframes blink{50%{opacity:0}}.caret{animation:1s step-end infinite blink}@keyframes drift{0%,to{transform:translate(0)}50%{transform:translate(4px,-4px)}}@keyframes glitch{0%,to{text-shadow:none;transform:translate(0)}20%{text-shadow:-2px 0 var(--accent), 2px 0 var(--accent-3);transform:translate(-1px)}40%{text-shadow:2px 0 var(--accent-3), -2px 0 var(--accent);transform:translate(1px)}60%{text-shadow:-1px 0 var(--accent);transform:translateY(1px)}}.glitchable:hover{animation:.4s steps(2,end) glitch}@keyframes scanline{0%{transform:translateY(-100%)}to{transform:translateY(100%)}}.modal-backdrop{background:color-mix(in srgb, var(--ink) 70%, transparent);z-index:var(--z-modal);place-items:center;padding:20px;display:grid;position:fixed;inset:0}::-webkit-scrollbar{width:14px;height:14px}::-webkit-scrollbar-track{background:var(--cream-2);border-left:2px solid var(--line)}::-webkit-scrollbar-thumb{background:var(--ink);border:3px solid var(--cream-2);border-radius:0}.row{display:flex}.col{flex-direction:column;display:flex}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:24px}.gap-6{gap:32px}.center{align-items:center}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.muted{color:var(--ink-mid)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transition:none;transform:none}.crt-overlay{display:none}.glitchable:hover{animation:none}.tilt{transition:none}}html[data-motion=reduced] *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}html[data-motion=reduced] .reveal{opacity:1;transition:none;transform:none}html[data-motion=reduced] .crt-overlay{display:none}html[data-motion=reduced] .glitchable:hover{animation:none}html[data-motion=reduced] .tilt{transition:none}
