*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b0b0b;--bg-card:#141414;--bg-hover:#1c1c1c;--surface:#181818;--border:#2a2a2a;--text:#e8e8e8;--text-mid:#b0b0b0;--text-dim:#787878;--accent:#fff;--accent-dim:silver;--pop:#5b8cff;--glow:#ffffff14;--glow-strong:#ffffff26;--header-bg:#0b0b0be0;--overlay:#0b0b0be0;--tint-soft:#ffffff0d;--tint-subtle:#ffffff05;--shadow:#0006;--code-bg:var(--surface);--code-text:var(--text-mid);--radius:10px;--key-outline-face:#1a1a1a;--key-outline-wall:#2e2e2e;--key-primary-face:#ececec;--key-primary-wall:#9a9a9a;--key-primary-text:#0b0b0b;--key-shine:#ffffff12;--led:#3ee86b;--key-cast:#0000008c;--lamp-light:#ffd9a0;--mac-case:#a9a18c;--mac-wall:#7b7462;--mac-recess:#958d78;--mac-key-face:#bdb59f;--mac-key-wall:#8a836f;--mac-key-text:#24211b;--mac-key-sub:#5a5446;--font-mono:ui-monospace, "SF Mono", "Fira Code", "Cascadia Code", Menlo, Consolas, monospace;--font-serif:"Garamond", "EB Garamond", "Georgia", "Times New Roman", serif;--font-sans:"Helvetica Neue", Arial, sans-serif}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f4f6;--bg-card:#fff;--bg-hover:#e7e9ed;--surface:#eceef1;--border:#d8dbe0;--text:#1b1b1b;--text-mid:#4a4a4a;--text-dim:#868a92;--accent:#000;--accent-dim:#3a3a3a;--pop:#1f5fd6;--glow:#0000000f;--glow-strong:#00000038;--header-bg:#f3f4f6e0;--overlay:#f3f4f6e0;--tint-soft:#0000000d;--tint-subtle:#00000006;--shadow:#0000001f;--key-outline-face:#fff;--key-outline-wall:#c4c8cf;--key-primary-face:#2a2a2a;--key-primary-wall:#000;--key-primary-text:#f3f4f6;--key-shine:#ffffff1f;--led:#1fbf4f;--key-cast:#0003;--lamp-light:#ffc56b;--mac-case:#e4ddc9;--mac-wall:#bcb39b;--mac-recess:#d3cab3;--mac-key-face:#f1ecdf;--mac-key-wall:#c7bea6;--mac-key-text:#3a362d;--mac-key-sub:#7d7663;--code-bg:#22272e;--code-text:#adbac7}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);min-height:100vh;position:relative;overflow-x:hidden}.noise{z-index:0;pointer-events:none;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");position:fixed;inset:0}h1{font-family:var(--font-serif);letter-spacing:-.01em;font-size:clamp(2.5rem,6vw,4.5rem);font-weight:400;line-height:1.1}h2{font-family:var(--font-serif);font-size:1.8rem;font-weight:400}h3{font-family:var(--font-serif);font-weight:400}a{color:var(--text-mid);text-decoration:none;transition:color .2s}a:hover{color:var(--pop)}header{z-index:100;background:var(--header-bg);-webkit-backdrop-filter:blur(16px)saturate(1.4);backdrop-filter:blur(16px)saturate(1.4);border-bottom:1px solid var(--border);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;max-width:1200px;margin:auto;padding:.75rem 2rem;display:flex}.logo{font-family:var(--font-serif);color:var(--text);cursor:pointer;letter-spacing:.02em;text-transform:lowercase;white-space:nowrap;font-size:1.3rem;font-weight:400;text-decoration:none}header nav{gap:.4rem;display:flex}.nav-btn{--key-depth:2px;--key-x:1px;background:var(--key-outline-face);color:var(--text-dim);border:1px solid var(--key-outline-wall);box-shadow:inset 0 1px 0 var(--key-shine), var(--key-x) var(--key-depth) 0 var(--key-outline-wall), calc(var(--key-x) + 2px) calc(var(--key-depth) + 3px) 6px -1px var(--key-cast);font-family:var(--font-mono);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:.4rem;padding:.4rem .7rem .4rem .55rem;font-size:.72rem;transition:transform .15s,box-shadow .15s,color .15s;display:inline-flex}.nav-btn:before{content:"";background:color-mix(in srgb, var(--led) 30%, #000);border-radius:50%;flex-shrink:0;width:5px;height:5px;transition:background .15s,box-shadow .15s;box-shadow:inset 0 0 0 1px #00000059}.nav-btn:hover,.nav-btn:focus-visible{color:var(--text)}.nav-btn:active,.nav-btn.active{transform:translate(var(--key-x), var(--key-depth));box-shadow:inset 0 1px 0 var(--key-shine), 0 0 0 var(--key-outline-wall), 1px 1px 2px -1px var(--key-cast)}.nav-btn:active{transition-duration:50ms}.nav-btn.active{color:var(--accent)}.nav-btn:hover:before,.nav-btn:focus-visible:before,.nav-btn:active:before,.nav-btn.active:before{background:var(--led);box-shadow:0 0 5px 1px var(--led)}.nav-btn:focus-visible{outline:2px solid var(--pop);outline-offset:2px}@media (prefers-reduced-motion:reduce){.nav-btn,.nav-btn:before{transition:none}}.header-links{align-items:center;gap:1rem;display:flex}.header-links a{color:var(--text-dim);transition:color .2s}.header-links a:hover{color:var(--pop)}.header-home nav{display:none}@media (width<=1100px){.header-inner{gap:1rem;padding:.6rem 1.25rem}header nav{gap:.3rem}header .nav-btn{gap:.3rem;padding:.35rem .5rem .35rem .45rem;font-size:.66rem}.header-links{gap:.75rem}}.theme-toggle{color:var(--pop);cursor:pointer;background:0 0;border:none;align-items:center;padding:0;transition:color .2s;display:flex}.theme-toggle:hover{color:var(--accent)}main{z-index:1;max-width:1200px;margin:auto;padding:2rem;position:relative}.tab-content{animation:.4s fadeUp;display:none}.tab-content.active{display:block}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.hero{text-align:center;--mac-w:max(260px, min(560px, (100vw - 3rem) / 2.08, (100svh - 39rem) / .78));--lamp-w:calc(var(--mac-w) * .5265);grid-template-columns:1fr;gap:2rem;padding:2rem 0;display:grid}.hero-greeting{font-family:var(--font-sans);color:var(--text-dim);text-transform:lowercase;letter-spacing:.03em;margin-bottom:.5rem;font-size:1rem;font-weight:500}.hero-name{color:var(--accent);text-transform:lowercase}.hero-tagline{font-family:var(--font-sans);color:var(--text-dim);letter-spacing:.03em;text-transform:lowercase;margin-top:.75rem;font-size:1.05rem}.dot{color:var(--text-dim);margin:0 .35rem}.hero-description{color:var(--text-mid);max-width:500px;margin-top:1.5rem;margin-left:auto;margin-right:auto;font-size:.95rem;line-height:1.8}.highlight{color:var(--pop);font-weight:500}.hero-nav{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.75rem;display:flex}.hero-nav-resume{--key-outline-face:var(--key-primary-face);--key-outline-wall:var(--key-primary-wall)}.hero-nav-resume,.hero-nav-resume:hover,.hero-nav-resume:focus-visible{color:var(--key-primary-text)}.desk-lamp{width:var(--lamp-w);aspect-ratio:220/240;pointer-events:none;background:0 0;border:none;border-radius:8px;padding:0;position:absolute;bottom:0;right:calc(100% + .5rem)}.desk-lamp svg{width:100%;height:100%;display:block;overflow:visible}.desk-lamp:focus-visible{outline:2px dashed var(--pop);outline-offset:4px}.desk-lamp stop{stop-color:var(--lamp-light)}.desk-lamp-beam{mix-blend-mode:screen}.desk-lamp-body{fill:var(--text-mid);stroke:var(--text-mid);stroke-width:2.5px;stroke-linecap:round}.desk-lamp-body line{fill:none}.desk-lamp-lens{stroke:var(--lamp-light);stroke-width:3px;stroke-linecap:round;transition:stroke .2s}.desk-lamp-light{transition:opacity .2s}.desk-lamp-hit{fill:#0000;stroke:#0000;stroke-width:16px;stroke-linecap:round;pointer-events:all;cursor:pointer}.desk-lamp-off .desk-lamp-light{opacity:0}.desk-lamp-off .desk-lamp-lens{stroke:var(--text-dim)}.glitch{position:relative}.glitch:hover:before,.glitch:hover:after{content:attr(data-text);background:var(--bg);-webkit-background-clip:text;background-clip:text;width:100%;position:absolute;top:0;left:0;overflow:hidden}.glitch:hover:before{color:var(--text-dim);z-index:-1;animation:.3s linear glitch-1}.glitch:hover:after{color:var(--text-mid);z-index:-1;animation:.3s linear glitch-2}@keyframes glitch-1{0%{clip-path:inset(20% 0 60%);transform:translate(-3px)}50%{clip-path:inset(50% 0 20%);transform:translate(3px)}to{clip-path:inset(0);transform:translate(0)}}@keyframes glitch-2{0%{clip-path:inset(60% 0 10%);transform:translate(3px)}50%{clip-path:inset(10% 0 50%);transform:translate(-3px)}to{clip-path:inset(0);transform:translate(0)}}.terminal{background:#11141a;border-radius:12px/14px;position:relative;overflow:hidden}.terminal:after{content:"";pointer-events:none;border-radius:inherit;background:repeating-linear-gradient(#ffffff06 0 1px,#0000 1px 3px);position:absolute;inset:0;box-shadow:inset 0 0 40px #000000b3}.terminal-header{background:repeating-linear-gradient(#0000 0 4px,#3a404a 4px 5px) 50%/100% 15px no-repeat;border-bottom:1px solid #3a404a;justify-content:center;align-items:center;height:1.4rem;margin:.35rem .5rem 0;display:flex;position:relative}.terminal-close{background:#11141a;border:1px solid #7a828e;width:11px;height:11px;position:absolute;top:50%;left:.6rem;translate:0 -50%}.terminal-title{font-family:var(--font-mono);color:#8a919c;background:#11141a;padding:0 .6rem;font-size:.72rem}.terminal-body{font-family:var(--font-mono);padding:.8rem .9rem;font-size:.82rem;line-height:1.85}.t-prompt-line{letter-spacing:.01em}.t-dir{color:#88c0d0;font-weight:700}.t-on{color:#8a919c}.t-branch{color:#b48ead;font-weight:700}.t-branch-icon{vertical-align:-1px}.t-char{color:#a3be8c;font-weight:700}.t-cmd{color:#e8eaed}.t-blank{line-height:1}.output{color:#8a919c}.cursor{color:#e8eaed;animation:1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.btn{--key-depth:4px;--key-x:2px;--key-face:var(--key-outline-face);--key-wall:var(--key-outline-wall);font-family:var(--font-sans);cursor:pointer;letter-spacing:.03em;background:var(--key-face);color:var(--text-mid);border:1px solid var(--key-wall);box-shadow:inset 0 1px 0 var(--key-shine), var(--key-x) var(--key-depth) 0 var(--key-wall), calc(var(--key-x) + 2px) calc(var(--key-depth) + 3px) 6px -1px var(--key-cast);border-radius:8px;align-items:center;gap:.6rem;padding:.75rem 1.4rem .75rem 1.1rem;font-size:.85rem;transition:transform .15s,box-shadow .15s,color .15s,background .15s;display:inline-flex}.btn:before{content:"";background:color-mix(in srgb, var(--led) 30%, #000);border-radius:50%;flex-shrink:0;width:6px;height:6px;transition:background .15s,box-shadow .15s;box-shadow:inset 0 0 0 1px #00000059}.btn:hover,.btn:focus-visible{color:var(--accent)}.btn:hover:before,.btn:focus-visible:before,.btn:active:before{background:var(--led);box-shadow:0 0 6px 1px var(--led)}.btn:active{transform:translate(var(--key-x), var(--key-depth));box-shadow:inset 0 1px 0 var(--key-shine), 0 0 0 var(--key-wall), 1px 1px 2px -1px var(--key-cast);transition-duration:50ms}.btn:focus-visible{outline:2px solid var(--pop);outline-offset:3px}.btn-primary{--key-face:var(--key-primary-face);--key-wall:var(--key-primary-wall);color:var(--key-primary-text);font-weight:500}.btn-primary:hover,.btn-primary:focus-visible{color:var(--key-primary-text)}@media (prefers-reduced-motion:reduce){.btn,.btn:before{transition:none}}.section-title{color:var(--accent);margin-bottom:.5rem}.section-subtitle{color:var(--text-dim);font-size:1rem;font-style:italic;font-family:var(--font-serif);margin-bottom:2rem}.filter-bar{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),420px));justify-content:center;gap:1.5rem;display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;transition:all .3s;display:block;position:relative;overflow:hidden}.project-card:before{content:"";background:linear-gradient(90deg, var(--pop), transparent);opacity:0;height:2px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.project-card:hover{border-color:var(--text-dim);box-shadow:0 12px 40px var(--shadow);color:var(--text);transform:translateY(-4px)}.project-card:hover:before{opacity:1}.project-card .tag{font-family:var(--font-mono);color:var(--text-mid);background:var(--tint-soft);text-transform:lowercase;letter-spacing:.03em;border-radius:4px;margin-bottom:.75rem;padding:.2rem .6rem;font-size:.7rem;display:inline-block}.project-card .tag-status{color:var(--pop);background:color-mix(in srgb, var(--pop) 10%, transparent);margin-left:.4rem}.project-card .project-note{border-left:2px solid var(--border);padding-left:.75rem;font-size:.82rem}.project-card h3{color:var(--text);margin-bottom:.5rem;font-size:1.15rem}.project-card p{color:var(--text-dim);margin-bottom:1rem;font-size:.9rem;line-height:1.6}.project-card .tech-stack{flex-wrap:wrap;gap:.4rem;display:flex}.project-card .tech{font-family:var(--font-mono);color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.2rem .5rem;font-size:.68rem}.blog-grid{grid-template-columns:1fr;gap:1.25rem;max-width:760px;margin:1.5rem auto 0;display:grid}.blog-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:1.5rem;transition:all .3s}.blog-card:hover{border-color:var(--text-dim);box-shadow:0 12px 40px var(--shadow);transform:translateY(-4px)}.blog-card .blog-date{font-family:var(--font-mono);color:var(--text-dim);margin-bottom:.5rem;font-size:.72rem}.research-dropdown[open]{grid-column:1/-1;transform:none}.research-dropdown summary{cursor:pointer;list-style:none}.research-dropdown summary::-webkit-details-marker{display:none}.research-dropdown .blog-date:after{content:" ▸"}.research-dropdown[open] .blog-date:after{content:" ▾"}.research-dropdown-body{border-top:1px solid var(--border);margin-top:1.25rem;padding-top:1.25rem}.research-dropdown-body .research-abstract{margin-bottom:1rem}.preview-card-img{aspect-ratio:16/10;object-fit:cover;border-bottom:1px solid var(--border);background:var(--surface);width:calc(100% + 3rem);max-width:none;margin:-1.5rem -1.5rem 1rem;display:block}.blog-card h3{font-size:1.1rem;font-family:var(--font-serif);margin-bottom:.5rem}.blog-card p{color:var(--text-dim);font-size:.9rem;line-height:1.5}.blog-post-view{max-width:760px;margin:0 auto}.blog-post-view.entry-view{max-width:860px}.back-btn,.post-header{margin-bottom:2rem}.post-header h1{color:var(--accent);margin-bottom:.75rem;font-size:clamp(1.8rem,4vw,2.6rem)}.post-meta{font-family:var(--font-mono);color:var(--text-dim);font-size:.78rem}.post-tags{flex-wrap:wrap;gap:.4rem;margin-top:.75rem;display:flex}.post-tag{font-family:var(--font-mono);color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.2rem .5rem;font-size:.68rem}.markdown-body{font-size:1.05rem;line-height:1.8}.markdown-body h1{font-family:var(--font-serif);color:var(--accent);margin:2rem 0 1rem;font-size:2.2rem;font-weight:400}.markdown-body h2{font-family:var(--font-serif);color:var(--text);margin:1.75rem 0 .75rem;font-size:1.5rem;font-weight:400}.markdown-body h3{font-family:var(--font-serif);color:var(--text);margin:1.5rem 0 .5rem;font-size:1.2rem;font-weight:400}.markdown-body p{color:var(--text-mid);margin-bottom:1rem}.markdown-body a{color:var(--text-mid);border-bottom:1px solid var(--border)}.markdown-body a:hover{color:var(--accent);border-color:var(--text-dim)}.markdown-body strong{color:var(--text);font-weight:600}.markdown-body code{font-family:var(--font-mono);background:var(--surface);color:var(--text-mid);border:1px solid var(--border);border-radius:4px;padding:.15em .4em;font-size:.88em}.markdown-body pre{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);margin:1.5rem 0;padding:1.25rem;overflow-x:auto}.markdown-body pre code{color:var(--code-text);background:0 0;border:none;padding:0;font-size:.85rem}.markdown-body pre code.hljs{background:0 0;padding:0}.markdown-body blockquote{border-left:2px solid var(--text-dim);background:var(--tint-subtle);border-radius:0 8px 8px 0;margin:1rem 0;padding:.5rem 1rem}.markdown-body blockquote p{color:var(--text-dim);margin:0;font-style:italic}.markdown-body ul,.markdown-body ol{color:var(--text-mid);margin:1rem 0;padding-left:1.5rem}.markdown-body li{margin-bottom:.4rem}.markdown-body img{border-radius:var(--radius);border:1px solid var(--border);max-width:100%;margin:1rem 0}.markdown-body hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.markdown-body table{border-collapse:collapse;width:100%;margin:1rem 0}.markdown-body th,.markdown-body td{text-align:left;border-bottom:1px solid var(--border);color:var(--text-mid);padding:.6rem 1rem;font-size:.9rem}.markdown-body th{color:var(--text);border-bottom:2px solid var(--border);font-weight:500}.research-list{flex-direction:column;gap:1.5rem;max-width:760px;margin:0 auto;display:flex}.research-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem;transition:border-color .3s}.research-card:hover{border-color:var(--text-dim)}.research-card h3{color:var(--text);margin-bottom:.5rem;font-size:1.25rem}.research-status{font-family:var(--font-mono);color:var(--text-dim);text-transform:lowercase;letter-spacing:.03em;margin-bottom:.75rem;font-size:.7rem}.research-summary{color:var(--text-mid);margin-bottom:1rem;font-size:.95rem;line-height:1.6}.research-abstract-label{font-family:var(--font-mono);text-transform:lowercase;letter-spacing:.03em;color:var(--text-dim);margin-bottom:.4rem;font-size:.7rem}.research-abstract{color:var(--text-dim);border-left:2px solid var(--border);font-size:.9rem;font-style:italic;line-height:1.7;font-family:var(--font-serif);margin-bottom:1.25rem;padding-left:1rem}.research-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.research-footer .tech-stack{flex-wrap:wrap;gap:.4rem;display:flex}.research-footer .tech{font-family:var(--font-mono);color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.2rem .5rem;font-size:.68rem}.research-link{color:var(--text-mid);font-size:.85rem}.research-link:hover{color:var(--accent)}.case-section{margin-bottom:1.1rem}.case-section p:not(.research-abstract-label),.case-section li{color:var(--text-mid);font-size:.93rem;line-height:1.7}.case-section p+p{margin-top:.5rem}.case-section ul{padding-left:1.2rem}.case-study>.research-footer{margin-top:1.25rem}.case-study-list{margin-bottom:1.5rem;margin-left:auto;margin-right:auto}.case-study{scroll-margin-top:5rem}.build-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem;transition:border-color .3s}.build-card:hover{border-color:var(--text-dim)}.build-meta{align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.build-status,.research-tag{font-family:var(--font-mono);color:var(--pop);background:color-mix(in srgb, var(--pop) 10%, transparent);text-transform:lowercase;letter-spacing:.03em;border-radius:4px;padding:.2rem .6rem;font-size:.7rem}.build-date{font-family:var(--font-mono);color:var(--text-dim);font-size:.72rem}.build-card h3{color:var(--text);margin-bottom:.5rem;font-size:1.35rem}.build-summary{color:var(--text-mid);margin-bottom:1.25rem;font-size:.95rem;line-height:1.6}.build-label{font-family:var(--font-mono);text-transform:lowercase;letter-spacing:.03em;color:var(--text-dim);margin-bottom:.5rem;font-size:.7rem}.build-iterations{border-left:2px solid var(--pop);background:var(--tint-subtle);border-radius:0 8px 8px 0;margin-bottom:1.5rem;padding:.9rem 1.1rem}.build-iterations ol{flex-direction:column;gap:.85rem;list-style:none;display:flex}.build-iterations li{flex-direction:column;gap:.2rem;font-size:.9rem;line-height:1.55;display:flex}.build-part{color:var(--text);font-weight:500}.build-problem{color:var(--text-dim)}.build-change{color:var(--text-mid)}.build-images{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.build-images figure{margin:0}.build-images img{border:1px solid var(--border);background:var(--surface);border-radius:8px;width:100%;height:auto;display:block}.build-images figcaption{color:var(--text-dim);margin-top:.4rem;font-size:.8rem;line-height:1.45}.build-image-missing{aspect-ratio:4/3;text-align:center;border:1px dashed var(--pop);font-family:var(--font-mono);color:var(--pop);word-break:break-all;border-radius:8px;justify-content:center;align-items:center;padding:1rem;font-size:.72rem;display:flex}.build-inline-figure{max-width:480px;margin:.25rem auto 1.25rem}.build-inline-figure img{border:1px solid var(--border);border-radius:8px;width:100%;height:auto;display:block}.build-inline-figure figcaption{color:var(--text-dim);margin-top:.4rem;font-size:.8rem;line-height:1.45}.build-writeup{color:var(--text-mid);margin-bottom:.9rem;font-size:.95rem;line-height:1.7}.build-next{color:var(--text-mid);margin:1rem 0 1.25rem;font-size:.95rem}.build-next .build-label{margin-right:.5rem}.build-card .tech-stack,.case-study .tech-stack{flex-wrap:wrap;gap:.4rem;display:flex}.build-card .tech,.case-study .tech{font-family:var(--font-mono);color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.2rem .5rem;font-size:.68rem}.todo{background:color-mix(in srgb, var(--pop) 18%, transparent);color:var(--text);outline:1px dashed var(--pop);border-radius:3px;padding:0 .2em}.music-group{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);max-width:820px;margin:0 auto 1.5rem;padding:1.5rem 1.75rem;transition:border-color .3s}.music-group:hover{border-color:var(--text-dim)}.music-group-title{font-family:var(--font-serif);color:var(--text);margin-bottom:.25rem;font-size:1.3rem;font-weight:400}.music-group-note{color:var(--text-dim);margin-bottom:1.25rem;font-size:.9rem;font-style:italic}.album-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;display:grid}.album-tile{aspect-ratio:1;border-radius:var(--radius);border:1px solid var(--border);transition:transform .3s,box-shadow .3s,border-color .3s;display:block;position:relative;overflow:hidden}.album-tile:hover{box-shadow:0 12px 40px var(--shadow);border-color:var(--text-dim);transform:scale(1.03)}.album-tile img,.album-art-fallback{object-fit:cover;width:100%;height:100%;transition:transform .4s}.album-tile:hover img{transform:scale(1.06)}.album-overlay{opacity:0;text-shadow:0 1px 3px #000000b3;background:linear-gradient(#0000 20%,#0000008c 55%,#000000e6);flex-direction:column;justify-content:flex-end;gap:.6rem;padding:.9rem;transition:opacity .3s;display:flex;position:absolute;inset:0}.album-tile:hover .album-overlay,.album-tile:focus-visible .album-overlay{opacity:1}.album-title{font-family:var(--font-serif);color:#fff;font-size:.95rem;line-height:1.3}.album-note{color:#ffffffd9;margin-top:.25rem;font-size:.8rem;line-height:1.4}.album-open{font-family:var(--font-mono);letter-spacing:.03em;color:#ffffffb8;font-size:.66rem}.music-subheading{color:var(--text);max-width:760px;margin:0 auto 1rem;font-size:1.25rem}.track-list{flex-direction:column;gap:1rem;max-width:760px;margin:0 auto;display:flex}.track-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:1.25rem 1.5rem;transition:border-color .3s;display:flex}.track-card:hover{border-color:var(--text-dim)}.track-card h3{color:var(--text);font-size:1.1rem}.track-date{font-family:var(--font-mono);color:var(--text-dim);margin-top:.25rem;font-size:.72rem}.track-description{color:var(--text-dim);margin-top:.5rem;font-size:.9rem;line-height:1.5}.track-card audio{width:100%;height:36px}.music-empty{background:var(--bg-card);border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-dim);max-width:600px;margin:0 auto;padding:2rem;font-size:.9rem}.music-empty code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.15em .4em;font-size:.85em}.gallery-grid{grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),360px));justify-content:center;gap:1rem;display:grid}.gallery-item{border-radius:var(--radius);cursor:pointer;aspect-ratio:1;border:1px solid var(--border);transition:all .3s;position:relative;overflow:hidden}.gallery-item:hover{box-shadow:0 12px 40px var(--shadow);border-color:var(--text-dim);transform:scale(1.03)}.gallery-item img{object-fit:cover;filter:grayscale(.1);width:100%;height:100%;transition:transform .4s}.gallery-item:hover img{filter:grayscale(0);transform:scale(1.08)}.gallery-item .gallery-overlay{background:linear-gradient(transparent 50%, var(--overlay));opacity:0;align-items:flex-end;padding:1rem;transition:opacity .3s;display:flex;position:absolute;inset:0}.gallery-item:hover .gallery-overlay{opacity:1}.gallery-overlay p{font-family:var(--font-serif);color:var(--text);font-size:.85rem;font-style:italic}.lightbox{z-index:999;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#000000f0;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.lightbox.open{display:flex}.lightbox img{border-radius:var(--radius);max-width:90vw;max-height:85vh;box-shadow:0 0 80px #0009}.lightbox-close,.lightbox-prev,.lightbox-next{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:1rem;font-size:2rem;transition:color .2s;position:absolute}.lightbox-close:hover,.lightbox-prev:hover,.lightbox-next:hover{color:var(--accent)}.lightbox-close{font-size:2.5rem;top:1rem;right:1.5rem}.lightbox-prev{font-size:3rem;top:50%;left:1.5rem;transform:translateY(-50%)}.lightbox-next{font-size:3rem;top:50%;right:1.5rem;transform:translateY(-50%)}.lightbox-caption{font-family:var(--font-serif);color:var(--text-dim);background:var(--bg-card);border:1px solid var(--border);border-radius:8px;padding:.5rem 1.25rem;font-size:.9rem;font-style:italic;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.waveform{width:100%;height:110px;margin-top:1rem;display:block}.post-art{border:1px solid var(--border);border-radius:var(--radius);width:100%;height:120px;margin-bottom:2rem;display:block}.blog-card{position:relative;overflow:hidden}.project-card:after,.blog-card:after{content:"";pointer-events:none;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%), var(--glow), transparent 70%);opacity:0;transition:opacity .3s;position:absolute;inset:0}.project-card:hover:after,.blog-card:hover:after{opacity:1}.projects-grid>*,.blog-grid>*,.gallery-grid>*{animation:.45s .35s backwards fadeUp}.projects-grid>:first-child,.blog-grid>:first-child,.gallery-grid>:first-child{animation-delay:50ms}.projects-grid>:nth-child(2),.blog-grid>:nth-child(2),.gallery-grid>:nth-child(2){animation-delay:.1s}.projects-grid>:nth-child(3),.blog-grid>:nth-child(3),.gallery-grid>:nth-child(3){animation-delay:.15s}.projects-grid>:nth-child(4),.blog-grid>:nth-child(4),.gallery-grid>:nth-child(4){animation-delay:.2s}.projects-grid>:nth-child(5),.blog-grid>:nth-child(5),.gallery-grid>:nth-child(5){animation-delay:.25s}.projects-grid>:nth-child(6),.blog-grid>:nth-child(6),.gallery-grid>:nth-child(6){animation-delay:.3s}.markdown-body>p:first-child:first-letter{font-family:var(--font-serif);float:left;color:var(--accent);padding:.04em .12em 0 0;font-size:3.3em;line-height:.85}@media (prefers-reduced-motion:reduce){.tab-content,.projects-grid>*,.blog-grid>*,.gallery-grid>*{animation:none}}footer{text-align:center;color:var(--text-dim);border-top:1px solid var(--border);font-size:.85rem;font-family:var(--font-serif);margin-top:4rem;padding:2rem;font-style:italic;position:relative}.footer-note{font-family:var(--font-mono);font-size:.66rem;font-style:normal;position:absolute;bottom:.9rem;right:max(2rem,50% - 600px + 2rem)}.scroll-cue{cursor:pointer;color:var(--text-dim);font-family:var(--font-mono);text-transform:lowercase;letter-spacing:.03em;background:0 0;border:none;flex-direction:column;grid-column:1/-1;place-self:end center;align-items:center;gap:.35rem;padding:1rem 0 0;font-size:.7rem;transition:color .2s;display:flex}.scroll-cue:hover{color:var(--pop)}.scroll-cue svg{animation:1.8s ease-in-out infinite cue-bounce}@keyframes cue-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@media (prefers-reduced-motion:reduce){.scroll-cue svg{animation:none}}.about-terminal{text-align:left;width:100%;max-width:var(--mac-w);margin:0 auto;container-type:inline-size}.about-terminal-window{flex-direction:column;display:flex}.about-terminal-body{scrollbar-width:thin;scrollbar-color:#3a404a transparent;color:#c8ccd4;scroll-behavior:smooth;height:78cqi;padding-top:.5rem;font-size:clamp(.68rem,2.8cqi,1.1rem);line-height:1.45;overflow-y:auto}.about-terminal-body p{margin:0}.term-dim{color:#7a828e}.term-strong{color:#e8eaed;font-weight:600}.term-err{color:#d98b6b}.term-title{color:#ff9a5c;font-weight:600;margin-bottom:.35rem!important}.term-entry{margin-bottom:.9rem}.term-cmdline{margin-bottom:.35rem!important}.term-out{padding-left:.1rem}.term-bullets{margin:.25rem 0 0;list-style:none}.term-bullets li{margin-bottom:.35rem;padding-left:1.2rem;position:relative}.term-bullets li:before{content:"▹";color:#ff9a5c;position:absolute;left:0}.term-list{flex-direction:column;gap:.15rem;display:flex}.term-list a{color:#88c0d0}.term-list a:hover{color:#ff9a5c}.term-file{cursor:pointer;font-family:var(--font-mono);font-size:inherit;color:#a3be8c;text-align:left;background:0 0;border:none;width:fit-content;padding:.1rem 0}.term-file:hover{color:#ff9a5c}.term-inline{cursor:pointer;font-family:var(--font-mono);font-size:inherit;color:#ff9a5c;background:0 0;border:none;padding:0;text-decoration:underline}.term-inline:hover{opacity:.75}.term-timeline{flex-direction:column;gap:.9rem;display:flex}.term-tl-meta{font-size:.92em}.term-skills p,.term-help p{margin-bottom:.3rem!important}.term-courses{font-size:.92em;margin-top:.35rem!important}.term-inputline{align-items:center;gap:.5rem;display:flex}.term-input{font-family:var(--font-mono);font-size:inherit;color:#e8eaed;caret-color:#a3be8c;background:0 0;border:none;outline:none;flex:1}.term-input::placeholder{color:#565c66}.mac{background:var(--mac-case);box-shadow:inset 0 1px 0 #ffffff73, inset 0 -3px 0 #0000000f, 3px 5px 0 var(--mac-wall), 10px 18px 32px -12px var(--key-cast);border-radius:12px 12px 10px 10px;padding:.6rem .6rem 0;position:relative}.mac-screen{background:var(--mac-recess);border-radius:14px/16px;padding:.35rem;box-shadow:inset 2px 3px 6px #0000004d,inset -1px -1px #ffffff59}.mac-chin{justify-content:space-between;align-items:center;height:2rem;padding:0 .9rem;display:flex}.mac-badge{font-family:var(--font-serif);letter-spacing:.02em;color:color-mix(in srgb, var(--mac-wall) 70%, #000);text-shadow:0 1px #fff6,0 -1px #0000001f;font-size:.85rem}.mac-slot{background:#3b372e;border-radius:3px;width:34%;height:5px;box-shadow:inset 0 2px 2px #0009,0 1px #ffffff59}.desk{align-items:flex-end;gap:.75rem;margin-top:1.25rem;display:flex}.term-explore{--key-outline-face:var(--mac-key-face);--key-outline-wall:var(--mac-key-wall);background:radial-gradient(ellipse 45% 70% at 42% 40%, color-mix(in srgb, var(--lamp-light) 14%, transparent), transparent), var(--mac-case);border:1px solid var(--mac-wall);min-width:0;box-shadow:inset 0 1px 0 #ffffff73, 2px 3px 0 var(--mac-wall), 8px 14px 28px -12px var(--key-cast);border-radius:12px;flex-direction:column;flex:1;padding:.65rem .85rem .95rem;display:flex;container-type:inline-size}.lamp-off .term-explore{background:var(--mac-case)}.term-explore-head{font-family:var(--font-mono);text-transform:lowercase;letter-spacing:.03em;color:var(--mac-key-sub);justify-content:space-between;align-items:center;margin-bottom:.75rem;font-size:.68rem;display:flex}.term-explore-head:after{--led-bezel:0 0 0 1.5px #2a2720, -.75px -.75px 0 3px #00000047, .75px .75px 0 3px #ffffff80;content:"";background:color-mix(in srgb, var(--led) 80%, #000);width:6px;height:6px;box-shadow:0 0 3px var(--led), var(--led-bezel);border-radius:50%;margin-right:4px;transition:background .1s,box-shadow .1s}.term-explore:has(button:active) .term-explore-head:after{background:var(--led);box-shadow:0 0 7px 1px var(--led), var(--led-bezel)}.term-chips{grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;display:grid}.term-chip,.term-primary{--key-depth:3px;--key-x:1.5px;cursor:pointer;text-align:center;color:var(--mac-key-text);background:var(--key-outline-face);border:1px solid var(--key-outline-wall);box-shadow:inset 0 1px 0 var(--key-shine), var(--key-x) var(--key-depth) 0 var(--key-outline-wall), calc(var(--key-x) + 2px) calc(var(--key-depth) + 3px) 6px -1px var(--key-cast);border-radius:7px;flex-direction:column;justify-content:center;align-items:center;transition:transform .15s,box-shadow .15s,filter .15s;display:flex}.term-chip{gap:.3rem;min-width:0;min-height:2.7rem;padding:.35rem .25rem .3rem;font-size:clamp(.5rem,3cqi,.8rem)}.term-chip-label{line-height:1.15}.term-chip-cmd{white-space:nowrap}@container (width<=500px){.term-chip-cmd{display:none}}.term-chip-cmd,.term-primary-cmd{font-family:var(--font-mono);color:var(--mac-key-sub);font-size:.62rem;line-height:1}.term-chip:hover,.term-chip:focus-visible,.term-primary:hover,.term-primary:focus-visible{filter:brightness(1.05)}.term-chip:active,.term-primary:active{transform:translate(var(--key-x), var(--key-depth));box-shadow:inset 0 1px 0 var(--key-shine), 0 0 0 var(--key-outline-wall), 1px 1px 2px -1px var(--key-cast);transition-duration:50ms}.term-chip:focus-visible,.term-primary:focus-visible{outline:2px solid var(--pop);outline-offset:2px}.term-primary-row{order:1;justify-content:center;margin-top:.45rem;display:flex}.term-primary{flex-direction:row;align-items:baseline;gap:.6rem;width:min(100%,20rem);min-height:2.2rem;padding:.35rem .7rem}.term-primary-label{font-size:clamp(.56rem,3.4cqi,.9rem);font-weight:500;line-height:1.2}@media (prefers-reduced-motion:reduce){.term-chip,.term-primary,.term-explore-head:after{transition:none}}.cortado{cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;width:80px;margin-bottom:-4px;padding:0;transition:transform .15s}.cortado svg{width:100%;height:auto;display:block;overflow:visible}.cortado:hover{transform:translateY(-2px)rotate(-3deg)}.cortado:focus-visible{outline:2px dashed var(--pop);outline-offset:4px}@media (prefers-reduced-motion:reduce){.cortado{transition:none}}.cortado-shadow{fill:var(--key-cast)}.cortado-facets{fill:none;stroke:#ffbe822e;stroke-width:1.2px;stroke-linejoin:round}.cortado-art{fill:#fbf4e8}.cortado-pull{fill:none;stroke:#fbf4e8;stroke-width:2.2px;stroke-linecap:round}@media (width<=900px){.header-inner{flex-wrap:wrap;gap:.6rem;padding:.6rem 1rem}.logo{font-size:1.2rem}header nav{scrollbar-width:none;flex-basis:100%;order:3;margin:0 -.2rem -.3rem;padding:.1rem .2rem .4rem;overflow-x:auto}header nav::-webkit-scrollbar{display:none}header .nav-btn{flex-shrink:0}main{padding:1rem}.projects-grid,.gallery-grid{grid-template-columns:1fr}.desk{gap:.4rem}.cortado{width:clamp(44px,10vw,76px);margin-bottom:-2px}.footer-note{margin-top:.6rem;position:static}.term-explore{padding:.55rem .6rem .8rem}.term-chips{gap:.2rem}.term-chip{min-height:2.4rem;padding:.3rem .2rem}}@media (width>=769px){.hero{gap:1.25rem;padding:0 0 .5rem}.hero-greeting{margin-bottom:.2rem}.hero-name{font-size:clamp(2.5rem,5vw,3.4rem)}.hero-tagline{margin-top:.4rem}.hero-description{max-width:720px;margin-top:.9rem;line-height:1.7}.hero-nav,.desk{margin-top:1rem}}@media (width<=768px){.desk-lamp{display:none}.term-explore{background:var(--mac-case)}.about-terminal{max-width:520px}}@media (width<=340px){.cortado{display:none}}
