*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#fff4d6;--card:#fff;--fg:#0a0a0a;--ink:#0a0a0a;--muted:#5a5a5a;--a1:#ffde59;--a2:#ff6b9d;--a3:#6c8cff;--a4:#6ee7a0;--on:#0a0a0a}[data-theme=dark]{--bg:#121212;--card:#1e1e1e;--fg:#f5f2ea;--ink:#f5f2ea;--muted:#a9a9a9}html{scroll-behavior:smooth;scroll-padding-top:84px;color-scheme:light}[data-theme=dark] html,html[data-theme=dark]{color-scheme:dark}body{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--fg);line-height:1.6;overflow-x:hidden;transition:background .25s,color .25s}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.1;background-image:radial-gradient(var(--ink) 1.2px,transparent 1.2px);background-size:24px 24px}::selection{background:var(--a2);color:#0a0a0a}a{color:inherit}button,input,textarea{font:inherit;color:inherit}:focus-visible{outline:3px dashed var(--a2);outline-offset:3px}.wrap{width:100%;max-width:1160px;margin:0 auto;padding:0 20px}.muted{color:var(--muted)}.nb-card{background:var(--card);border:3px solid var(--ink);box-shadow:6px 6px 0 var(--ink);transition:transform .15s,box-shadow .15s,background .25s}.nb-card.pad{padding:26px}.nb-card:hover{transform:translate(-3px,-3px);box-shadow:9px 9px 0 var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8rem 1.3rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;background:var(--a1);color:var(--on);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);cursor:pointer;text-decoration:none;transition:transform .12s,box-shadow .12s}.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 var(--ink)}.btn:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--ink)}.btn.alt{background:var(--a3);color:#0a0a0a}.btn.sm{padding:.5rem .9rem;font-size:.74rem}.btn.sm,.icon-btn{box-shadow:3px 3px 0 var(--ink)}.icon-btn{width:42px;height:42px;display:grid;place-items:center;font-size:1.15rem;font-weight:900;background:var(--a1);color:var(--on);border:3px solid var(--ink);cursor:pointer;transition:transform .12s,box-shadow .12s}.icon-btn:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}.icon-btn:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}.c1{background:var(--a1)}.c1,.c2{color:var(--on)}.c2{background:var(--a2)}.c3{background:var(--a3)}.c3,.c4{color:var(--on)}.c4{background:var(--a4)}.reveal{opacity:0;transform:translateY(28px);transition:opacity .6s ease,transform .6s ease}.reveal.in{opacity:1;transform:none}.progress{position:fixed;top:0;left:0;right:0;height:6px;z-index:120;background:transparent}.progress div{height:100%;width:0;background:var(--a2);border-right:3px solid var(--ink)}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:100;background:var(--bg);border-bottom:3px solid var(--ink);transition:background .25s}.nav-in{display:flex;align-items:center;justify-content:space-between;height:68px;gap:12px}.logo{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:900;font-size:1.15rem;text-decoration:none;background:var(--a1);color:var(--on);padding:4px 10px;border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink)}.links{display:flex;gap:6px}.links a{text-decoration:none;font-weight:800;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;padding:8px 12px;border:3px solid transparent;transition:.12s}.links a:hover{background:var(--a4)}.links a.on,.links a:hover{border-color:var(--ink);color:var(--on)}.links a.on{background:var(--a2)}.nav-right{display:flex;gap:10px}.burger{display:none}.hero{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:42px;gap:42px;align-items:center;padding-top:64px;padding-bottom:64px}.badge{display:inline-block;background:var(--a4);color:var(--on);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);font-weight:900;font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;padding:6px 12px;margin-bottom:22px}.wiggle{animation:wiggle 3s ease-in-out infinite}@keyframes wiggle{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}h1{font-size:clamp(2.5rem,7.4vw,5.4rem);line-height:1.02;font-weight:900;text-transform:uppercase;letter-spacing:-.02em}.hl{display:inline-block;background:var(--a1);color:var(--on);padding:0 .18em;border:3px solid var(--ink);box-shadow:5px 5px 0 var(--ink);transform:rotate(-1.5deg)}.stroke{color:transparent;-webkit-text-stroke:2px var(--fg)}.role{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700;font-size:1.1rem;margin:22px 0 10px;min-height:1.7em}.caret{display:inline-block;width:10px;height:1.1em;background:var(--a2);margin-left:3px;vertical-align:-3px;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.lead{max-width:540px;color:var(--muted);font-size:1.05rem}.cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}.term{overflow:hidden;background:#0c0c0c;color:#7cf29a;cursor:text;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.term:hover{transform:none;box-shadow:6px 6px 0 var(--ink)}.term-bar{display:flex;align-items:center;gap:7px;padding:10px 14px;border-bottom:3px solid var(--ink);background:#1b1b1b;color:#bbb;font-size:.75rem}.term-bar i{width:13px;height:13px;border:2px solid #0a0a0a;border-radius:50%;display:block}.term-bar span{margin-left:8px}.term-body{height:290px;overflow-y:auto;padding:14px;font-size:.84rem;line-height:1.55;word-break:break-word}.t-in{color:#fff}.t-in b{color:var(--a1);margin-right:6px}.t-out{color:#7cf29a;padding-left:16px}.t-row{display:flex;align-items:center}.t-row input{flex:1 1;min-width:0;background:transparent;border:0;outline:0;color:#fff;font-family:inherit;font-size:inherit}.term-chips{display:flex;flex-wrap:wrap;gap:8px;padding:10px 14px;border-top:3px solid var(--ink);background:#1b1b1b}.term-chips button{background:var(--a1);color:#0a0a0a;border:2px solid #0a0a0a;padding:3px 10px;font-weight:800;font-size:.72rem;cursor:pointer;font-family:inherit}.term-chips button:hover{background:var(--a2)}.marquee{overflow:hidden;background:var(--a1);color:var(--on);border-block:3px solid var(--ink);transform:rotate(-1deg);margin:10px -10px 20px;padding:14px 0}.track{display:flex;width:max-content;gap:34px;animation:slide 26s linear infinite}.marquee:hover .track{animation-play-state:paused}.track span{font-weight:900;text-transform:uppercase;font-size:1.3rem;white-space:nowrap}.track b{margin-left:34px}@keyframes slide{to{transform:translateX(-50%)}}.sec{padding-top:72px;padding-bottom:24px}.sec-title{display:inline-flex;align-items:center;gap:14px;font-size:clamp(1.8rem,4.5vw,2.8rem);font-weight:900;text-transform:uppercase;margin-bottom:30px}.sec-title span{background:var(--a2);color:var(--on);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:0 12px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.6em;line-height:1.7}.tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}.tab{padding:8px 16px;font-weight:800;text-transform:uppercase;font-size:.78rem;letter-spacing:.04em;background:var(--card);border:3px solid var(--ink);box-shadow:3px 3px 0 var(--ink);cursor:pointer;transition:.12s}.tab:hover{background:var(--a4);color:var(--on);transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}.tab.on{background:var(--a3);color:var(--on)}.about{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:28px;gap:28px}.about-card h3{font-size:1.6rem;line-height:1.2;margin-bottom:14px;font-weight:900}.about-card p{margin-bottom:12px}.stats{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px}.stat{padding:20px;display:flex;flex-direction:column;justify-content:center}.stat strong{font-size:2.4rem;font-weight:900;line-height:1}.stat span{font-weight:800;font-size:.78rem;text-transform:uppercase;margin-top:6px}.skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:20px;gap:20px}.proj,.skill{animation:pop .45s both}@keyframes pop{0%{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}.skill{padding:18px}.skill-top{display:flex;justify-content:space-between;font-weight:800;margin-bottom:10px}.bar{height:18px;border:3px solid var(--ink);background:var(--bg);overflow:hidden}.bar i{display:block;height:100%;width:var(--w);background:var(--a4);border-right:3px solid var(--ink);transform-origin:left;animation:grow .9s cubic-bezier(.2,.8,.2,1) both}@keyframes grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.skill small{display:block;margin-top:8px;color:var(--muted);font-weight:700;text-transform:uppercase;font-size:.7rem}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:26px;gap:26px}.proj{overflow:hidden;display:flex;flex-direction:column}.proj-top{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:3px solid var(--ink);font-size:2.2rem}.proj-top em{font-style:normal;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:800;font-size:.85rem;background:var(--card);color:var(--fg);border:3px solid var(--ink);padding:0 8px}.proj-body{padding:18px;display:flex;flex-direction:column;gap:12px;flex:1 1;align-items:flex-start}.proj-body h3{font-size:1.3rem;font-weight:900;line-height:1.2}.proj-body p{color:var(--muted);flex:1 1}.tags{display:flex;flex-wrap:wrap;gap:8px}.tags span{font-size:.72rem;font-weight:800;text-transform:uppercase;border:2px solid var(--ink);padding:2px 8px;background:var(--bg)}.tl{border-left:5px solid var(--ink);margin-left:10px;padding-left:28px;display:grid;grid-gap:26px;gap:26px}.tl-item{position:relative}.tl-item:before{content:"";position:absolute;left:-43px;top:26px;width:20px;height:20px;background:var(--a2);border:4px solid var(--ink)}.when{display:inline-block;background:var(--a1);color:var(--on);border:3px solid var(--ink);padding:0 10px;font-size:.78rem;text-transform:uppercase;margin-bottom:10px}.tl h3,.when{font-weight:900}.tl h3{font-size:1.3rem}.tl p{margin-top:6px}.contact{display:grid;grid-template-columns:1fr 1fr;grid-gap:28px;gap:28px;align-items:start}.c-left{background:var(--a4);color:var(--on)}.c-left h3{font-size:1.8rem;font-weight:900;line-height:1.15;margin-bottom:12px}.c-left p{margin-bottom:20px}.c-left .muted{color:inherit}.socials{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.form{display:grid;grid-gap:16px;gap:16px}.form label{display:grid;grid-gap:6px;gap:6px;font-weight:800;text-transform:uppercase;font-size:.76rem;letter-spacing:.05em}.form input,.form textarea{width:100%;padding:12px 14px;background:var(--bg);border:3px solid var(--ink);font-weight:500;text-transform:none;letter-spacing:0;resize:vertical;outline:none;transition:.12s}.form input:focus,.form textarea:focus{box-shadow:4px 4px 0 var(--a2);transform:translate(-2px,-2px)}.foot{margin-top:72px;border-top:3px solid var(--ink);background:var(--a1);color:var(--on)}.foot-in{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;padding-top:24px;padding-bottom:24px;font-weight:800}.foot .btn{background:var(--card);color:var(--fg)}.overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.65);display:grid;place-items:center;padding:18px;animation:fade .2s}@keyframes fade{0%{opacity:0}}.modal{width:100%;max-width:560px;max-height:90vh;overflow-y:auto;animation:pop .3s both}.modal:hover{transform:none;box-shadow:6px 6px 0 var(--ink)}.modal-body{padding:22px;display:grid;grid-gap:16px;gap:16px}.modal-body h3{font-size:1.7rem;font-weight:900;line-height:1.15}.toast{position:fixed;left:50%;bottom:24px;z-index:300;transform:translate(-50%,120px);background:var(--a2);color:var(--on);border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:12px 20px;font-weight:900;text-transform:uppercase;font-size:.8rem;transition:transform .3s;max-width:92vw;text-align:center}.toast.show{transform:translate(-50%)}@media (max-width:900px){.hero{padding-top:40px}.about,.contact,.hero{grid-template-columns:1fr}.burger{display:grid}.links{position:absolute;top:68px;left:0;right:0;flex-direction:column;background:var(--bg);border-bottom:3px solid var(--ink);padding:12px 20px;gap:8px;display:none}.links.open{display:flex}.links a{border-color:var(--ink);background:var(--card)}}@media (max-width:520px){.wrap{padding:0 16px}.sec{padding-top:56px}.stats{grid-template-columns:1fr 1fr;gap:14px}.stat strong{font-size:1.9rem}.proj-grid{grid-template-columns:1fr}.term-body{height:240px}.cta .btn{flex:1 1}.tl{padding-left:22px}.tl-item:before{left:-37px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}