@keyframes status-blink{0%,to{opacity:1}50%{opacity:0}}@keyframes tocReveal{to{opacity:1;transform:translateY(0)}}@keyframes tocFadeIn{to{opacity:1}}@font-face{font-family:"Inter";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/inter-v20-latin_latin-ext-300.woff2)format("woff2")}@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/inter-v20-latin_latin-ext-regular.woff2)format("woff2")}@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/inter-v20-latin_latin-ext-500.woff2)format("woff2")}@font-face{font-family:"Bebas Neue";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/bebas-neue-v16-latin_latin-ext-regular.woff2)format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/jetbrains-mono-v24-latin_latin-ext-300.woff2)format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/jetbrains-mono-v24-latin_latin-ext-regular.woff2)format("woff2")}@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/jetbrains-mono-v24-latin_latin-ext-500.woff2)format("woff2")}*,::after,::before{box-sizing:border-box}*{margin:0;padding:0}html{color-scheme:dark;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html[data-theme=light]{color-scheme:light}canvas,img,picture,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}ol,ul{list-style:none}a{text-decoration:none;color:inherit;position:relative;border-bottom:1px solid transparent;transition:border-color var(--transition-fast),color var(--transition-fast)}:root{--color-bg:#141414;--color-bg-secondary:#1c1c1c;--color-text:#c3ccc2;--color-text-secondary:#8b9488;--color-text-dim:#8a918a;--color-accent:#e7ece4;--color-border:#2a2a28;--color-border-hover:#4a4e48;--color-text-muted:#5a5f5a;--color-highlight:rgba(231, 236, 228, 0.06);--color-bg-blur:rgba(20, 20, 20, 0.9);--color-bg-blur-heavy:rgba(20, 20, 20, 0.95);--thumb-rest:brightness(0.85) contrast(1.05);--thumb-hover:brightness(1) contrast(1);--shadow-preview:0 20px 60px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(231, 236, 228, 0.04);--font-primary:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;--font-display:'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Palatino, 'Times New Roman', serif;--font-mono:'JetBrains Mono', 'Courier New', monospace;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--text-xs:0.6875rem;--text-sm:0.8125rem;--text-base:0.9375rem;--text-lg:1.0625rem;--text-xl:1.5rem;--text-2xl:2rem;--text-3xl:3rem;--space-xs:0.5rem;--space-sm:1rem;--space-md:2rem;--space-lg:4rem;--space-xl:6rem;--space-2xl:8rem;--max-width:92vw;--max-width-text:65ch;--nav-height:80px;--transition-fast:0.2s ease;--transition-base:0.3s ease;--transition-page-out:0.35s ease;--transition-page-in:0.45s ease;--transition-reveal:0.6s ease;--reveal-distance:20px;--ff-toc-display:'Bebas Neue', 'Arial Narrow', sans-serif;--line-weight:1px}[data-theme=light]{--color-bg:#f2f0ec;--color-bg-secondary:#e8e5e0;--color-text:#3a3a38;--color-text-secondary:#8a8885;--color-text-dim:#8a8885;--color-text-muted:#b8b5b0;--color-accent:#1a1a18;--color-border:#d4d1cc;--color-border-hover:#aaa8a4;--color-highlight:rgba(26, 26, 24, 0.04);--color-bg-blur:rgba(242, 240, 236, 0.9);--color-bg-blur-heavy:rgba(242, 240, 236, 0.95);--thumb-rest:brightness(0.95) contrast(1.02);--thumb-hover:brightness(1) contrast(1);--shadow-preview:0 20px 60px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.06)}body,main{display:flex;flex-direction:column}body{font-family:var(--font-primary);color:var(--color-text);font-weight:var(--font-weight-light);letter-spacing:-.005em;line-height:1.7;background-color:var(--color-bg);min-height:100vh;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-medium);line-height:1.1;color:var(--color-accent);scroll-margin-top:5rem}h1,h2{font-family:var(--font-display);letter-spacing:-.03em}h3,h4,h5,h6{letter-spacing:-.02em}body,h5,h6{font-size:var(--text-base)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}p{margin-bottom:var(--space-sm);max-width:var(--max-width-text)}a:hover{border-bottom-color:var(--color-text-secondary)}a:hover,code,pre,strong{color:var(--color-accent)}code,pre{font-family:var(--font-mono);font-size:.9em;background:var(--color-bg-secondary);padding:2px 6px}small{font-size:var(--text-sm);color:var(--color-text-secondary)}strong{font-weight:var(--font-weight-medium)}em{font-style:italic}main{flex:1;transition:opacity var(--transition-page-in),transform var(--transition-page-in)}main>.section:last-of-type{flex:1}#main-content{padding-top:var(--nav-height)}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-md)}@media (max-width:768px){.container{padding:0 var(--space-sm)}}.grid{display:grid;gap:var(--space-lg)}.flex{display:flex}.flex-between,.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{flex-wrap:wrap;justify-content:space-between;gap:var(--space-md)}.section{padding:var(--space-xl)0}.section-lg{padding:var(--space-2xl)0}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.site-header{position:fixed;top:0;left:0;right:0;height:var(--nav-height);background-color:transparent;z-index:1000;transition:transform var(--transition-base),background-color var(--transition-base);will-change:transform;contain:layout style}.site-header.scrolled{background-color:var(--color-bg-blur)}.site-header.hidden{transform:translateY(-100%)}.nav-container{height:100%;display:flex;align-items:center;gap:var(--space-md);position:relative}.site-logo{font-size:var(--text-lg);font-weight:var(--font-weight-medium);letter-spacing:-.01em;color:var(--color-accent);z-index:1002;border:0}.site-logo:hover{border:0}.site-status{flex:1;min-width:0;overflow:hidden;display:flex;align-items:center;font-family:"JetBrains Mono","Courier New",monospace;font-size:var(--text-xs);font-weight:300;letter-spacing:.05em;color:var(--color-text-secondary);white-space:nowrap}.site-status .status-live{color:var(--color-text)}.site-status .status-sep{color:var(--color-text-muted);margin:0 1.6ch;user-select:none}.site-status .status-lbl{color:var(--color-text-muted);margin-right:.3ch}.site-status .status-cursor{display:inline-block;width:5.5px;height:10px;background:var(--color-text-muted);margin-left:3px;vertical-align:middle;animation:status-blink 1.1s step-end infinite}.status-console-btn{color:var(--color-text-muted);cursor:pointer;padding:2px;display:flex;align-items:center;margin-left:1.6ch;transition:color .2s ease,opacity .2s ease;opacity:0;pointer-events:none;text-decoration:none}.site-status:hover .status-console-btn{opacity:1;pointer-events:auto}.status-console-btn:hover{color:var(--color-text)}.status-console-btn:focus-visible{outline:0}.menu-toggle{display:none;flex-direction:column;gap:6px;background:0 0;border:0;cursor:pointer;padding:var(--space-xs);z-index:1002}.menu-toggle span{width:24px;height:1px;background:var(--color-accent);transition:transform var(--transition-base),opacity var(--transition-base);transform-origin:center}.menu-toggle.active span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.menu-toggle.active span:nth-child(2){opacity:0}.menu-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.main-nav{z-index:1001}.main-nav ul{display:flex;gap:var(--space-md);list-style:none;padding:0;margin:0}.main-nav a{font-size:var(--text-sm);font-weight:var(--font-weight-light);letter-spacing:0;color:var(--color-text-secondary);border:0;transition:color var(--transition-fast);white-space:nowrap}.main-nav a:hover{color:var(--color-accent);border:0}.main-nav a.active{color:var(--color-accent);border-bottom:var(--line-weight) solid var(--color-accent)}.has-dropdown{position:relative}.has-dropdown .dropdown{position:absolute;top:100%;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:0;list-style:none;margin:0;padding:var(--space-xs) var(--space-sm);background-color:var(--color-bg-blur-heavy);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-border);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--transition-fast),visibility var(--transition-fast);z-index:1003}.has-dropdown:focus-within .dropdown,.has-dropdown:hover .dropdown{opacity:1;visibility:visible;pointer-events:auto}.has-dropdown .dropdown a{display:flex;align-items:baseline;gap:.4em;padding:.25em 0;white-space:nowrap;border:0;transition:color var(--transition-fast)}.has-dropdown .dropdown .entry-id{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:300;color:var(--color-text-secondary);letter-spacing:.05em}.has-dropdown .dropdown .entry-slash{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:300;color:var(--color-text-muted);user-select:none}.has-dropdown .dropdown .entry-name{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;color:var(--color-text-secondary);letter-spacing:.02em}.has-dropdown .dropdown a:focus .entry-name,.has-dropdown .dropdown a:hover .entry-name{color:var(--color-accent)}.has-dropdown .dropdown a.active .entry-id,.has-dropdown .dropdown a.active .entry-name,.theme-toggle:hover{color:var(--color-accent)}.theme-toggle{display:flex;align-items:center;justify-content:center;background:0 0;border:0;cursor:pointer;padding:.4rem;color:var(--color-text-secondary);transition:color var(--transition-fast);z-index:1002}.theme-toggle svg{display:block;transition:transform .4s cubic-bezier(.25,.1,.25,1)}.scroll-progress{position:fixed;top:var(--nav-height);left:0;height:1px;background:var(--color-text-secondary);width:100%;transform:scaleX(0);transform-origin:left;z-index:999;opacity:.3;transition:transform .1s ease;contain:layout style}[data-theme]{transition:background-color .4s ease,color .4s ease}@media (max-width:768px){.site-status{display:none}.site-logo{margin-right:auto}.menu-toggle{display:flex}.main-nav{position:absolute;top:calc(var(--nav-height) - var(--space-xs));right:var(--space-sm);background-color:var(--color-bg-blur-heavy);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--color-border);padding:var(--space-sm) var(--space-md);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .25s ease,visibility .25s ease,transform .25s ease}.main-nav.active{opacity:1;visibility:visible;transform:translateY(0)}.main-nav ul{flex-direction:column;gap:0}.main-nav a{display:block;padding:.5em 0}.has-dropdown .dropdown{position:static;transform:none;background:0 0;backdrop-filter:none;-webkit-backdrop-filter:none;border:0;padding:0;max-height:0;overflow:hidden;transition:max-height .25s ease,opacity .25s ease,visibility .25s ease}.has-dropdown.dropdown-open .dropdown,.has-dropdown.dropdown-open:hover .dropdown{opacity:1;visibility:visible;pointer-events:auto;max-height:10em}.has-dropdown:hover .dropdown{opacity:0;visibility:hidden;pointer-events:none;max-height:0}.has-dropdown .dropdown a{padding:.25em 0 .25em var(--space-sm)}}.skip-to-content{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;z-index:10000;padding:var(--space-sm) var(--space-md);background:var(--color-accent);color:var(--color-bg);font-size:var(--text-sm);text-decoration:none;border:0}.skip-to-content:focus{position:fixed;top:var(--space-sm);left:var(--space-sm);width:auto;height:auto;z-index:10000}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}a:focus:not(:focus-visible),button:focus:not(:focus-visible){outline:0}.btn,.site-footer{padding:var(--space-sm)0}.site-footer{border-top:var(--line-weight) solid var(--color-border);opacity:.4}.site-footer p{color:var(--color-text-secondary);margin:0}.site-footer .footer-links{display:flex;gap:var(--space-md)}.site-footer .footer-links a,.site-footer p{font-size:var(--text-xs)}.btn{display:inline-block;font-size:var(--text-sm);font-weight:var(--font-weight-normal);color:var(--color-text);border:0;background:0 0;border-bottom:1px solid var(--color-text-secondary);cursor:pointer;transition:opacity var(--transition-fast);text-decoration:none}.btn:hover{opacity:.7;color:var(--color-accent)}.btn-primary,.btn:hover{border-bottom-color:var(--color-accent)}.image-container{position:relative;overflow:hidden;background:var(--color-bg-secondary)}.image-container img{width:100%;height:100%;object-fit:cover;transition:opacity var(--transition-base)}.image-container:hover img{opacity:.9}.project-card{position:relative;cursor:pointer}.project-info{padding:var(--space-md)0}.project-title{font-size:var(--text-xl);font-weight:var(--font-weight-medium);margin-bottom:var(--space-xs);letter-spacing:-.01em}.project-meta{display:flex;gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-text-secondary)}.project-text table{width:100%;max-width:var(--max-width-text);border-collapse:collapse;margin:var(--space-md)0;font-size:var(--text-sm)}.project-text thead{border-bottom:var(--line-weight) solid var(--color-accent)}.project-text td,.project-text th{padding:var(--space-xs) var(--space-sm) var(--space-xs)0}.project-text th{font-weight:var(--font-weight-medium);color:var(--color-accent);text-align:left;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em}.project-text td{color:var(--color-text);border-bottom:var(--line-weight) solid var(--color-border)}.project-text tbody tr:last-child td{border-bottom:none}.project-text td:first-child{color:var(--color-text-secondary);white-space:nowrap}.label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.15em;font-weight:var(--font-weight-medium);color:var(--color-text-secondary);display:block;margin-bottom:var(--space-xs)}.project-content{padding-top:0}.project-columns{display:flex;flex-direction:column;gap:0}.project-columns>.image-group,.project-columns>.project-media,.project-columns>.project-text{grid-column:unset}.project-text{font-family:var(--font-mono);padding:var(--space-md)0;border-bottom:1px solid var(--color-border);margin-bottom:0}.project-media:last-child,.project-text:last-child{border-bottom:none}.project-text h1,.project-text h2{font-family:var(--ff-toc-display);font-size:1.5rem;font-weight:400;color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;line-height:1.15;margin-bottom:var(--space-sm);margin-top:var(--space-md)}.project-text>:first-child h1:first-child,.project-text>:first-child h2:first-child,.project-text>h1:first-child,.project-text>h2:first-child{margin-top:0}.project-text h3{font-family:var(--ff-toc-display);font-size:1.25rem;font-weight:400;color:var(--color-accent);letter-spacing:.06em;text-transform:uppercase;line-height:1.2;margin-bottom:var(--space-xs);margin-top:var(--space-md)}.project-text p{font-size:var(--text-sm);font-weight:var(--font-weight-light);line-height:1.8;letter-spacing:.02em;margin-bottom:var(--space-sm)}.project-text p:last-child{margin-bottom:0}.project-text ol,.project-text ul{font-size:var(--text-sm);font-weight:var(--font-weight-light);line-height:1.8;letter-spacing:.02em;margin-bottom:var(--space-sm);padding-left:1.5em}.project-text ul{list-style:disc}.project-text ol{list-style:decimal}.project-text li{margin-bottom:.25em}.project-text strong{font-weight:500;color:var(--color-accent)}.external-reference a,.project-text a{color:var(--color-text);border-bottom:1px solid var(--color-border);transition:border-color var(--transition-fast),color var(--transition-fast)}.external-reference a:hover,.project-text a:hover{color:var(--color-accent);border-bottom-color:var(--color-accent)}.project-media,.project-media--large,.project-media--medium,.project-media--small{margin:0;padding:var(--space-md)0;border-bottom:1px solid var(--color-border)}.image-group img,.project-media img,.project-media--large img,.project-media--medium img,.project-media--small img{width:100%;height:auto;display:block;background:var(--color-bg-secondary)}.project-media--large{max-width:80%}.project-media--medium{max-width:60%}.project-media--small{max-width:40%}.project-media--centered{margin-left:auto;margin-right:auto}.project-media figcaption,.project-media--large figcaption,.project-media--medium figcaption,.project-media--small figcaption,.video-embed figcaption{margin-top:var(--space-xs);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-light);color:var(--color-text-secondary);letter-spacing:.02em;line-height:1.5}.media-pair{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:0;padding:var(--space-md)0;border-bottom:1px solid var(--color-border)}.media-pair>.project-media{margin:0;padding:0;border-bottom:none}.media-pair>.project-media img{width:100%;object-fit:cover}@media (max-width:768px){.media-pair{grid-template-columns:1fr}}.project-media-overflow{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.project-media-overflow>*{border-bottom:none;padding:var(--space-sm)}.project-media-overflow>.project-text,.project-media-overflow>:only-child{grid-column:1/-1}@media (max-width:768px){.project-media-overflow{grid-template-columns:1fr}}.image-group{display:grid;gap:1px;justify-items:center}.image-group.grid-2{grid-template-columns:repeat(2,1fr)}.image-group.grid-3{grid-template-columns:repeat(3,1fr)}.image-group.grid-4{grid-template-columns:repeat(4,1fr)}.image-group.grid-5{grid-template-columns:repeat(5,1fr)}.image-group figure{margin:0}@media (max-width:768px){.image-group.grid-3,.image-group.grid-4,.image-group.grid-5{grid-template-columns:repeat(2,1fr)}}.image-group,.video-embed{margin:0;padding:var(--space-md)0;border-bottom:1px solid var(--color-border)}.video-embed.project-media--centered{width:100%;margin-left:auto;margin-right:auto}.video-wrapper{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;background:var(--color-bg-secondary)}.video-wrapper iframe{border:0}.video-wrapper.aspect-4-3{padding-bottom:75%}.video-wrapper.aspect-1-1{padding-bottom:100%}.video-wrapper.aspect-21-9{padding-bottom:42.857%}.video-facade,.video-facade img,.video-wrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%}.video-facade{cursor:pointer;background:var(--color-bg-secondary);border:0;padding:0;display:flex;align-items:center;justify-content:center}.video-facade img{object-fit:cover}.video-facade .play-button{position:relative;z-index:1;width:68px;height:48px;opacity:.85;transition:opacity var(--transition-fast),transform var(--transition-fast);filter:drop-shadow(0 2px 8px rgba(0,0,0,.5))}.video-facade:focus-visible .play-button,.video-facade:hover .play-button{opacity:1;transform:scale(1.1)}.bandcamp-embed,.soundcloud-embed,.video-pair{margin:0;padding:var(--space-md)0;border-bottom:1px solid var(--color-border)}.soundcloud-embed iframe{width:100%;border:0}.bandcamp-embed iframe{display:block;max-width:700px;width:100%!important;margin:0 auto;border:0!important}.video-pair{display:grid;grid-template-columns:1fr 1fr;gap:1px}.video-pair>.video-embed{margin:0;padding:0;border-bottom:none}@media (max-width:768px){.video-pair{grid-template-columns:1fr}}.threejs-embed{margin:0;padding:var(--space-md)0;border-bottom:1px solid var(--color-border);grid-column:1/-1}.threejs-container{width:100%;overflow:hidden;position:relative;background:#0a0a0a}.threejs-container canvas{display:block;width:100%;height:100%}.threejs-container.scale-50,.threejs-container.scale-75{max-width:75%;margin-left:auto;margin-right:auto}.threejs-container.scale-50{max-width:50%}.threejs-fullscreen-btn,.threejs-regenerate-btn{position:absolute;bottom:var(--space-xs);z-index:5;background:rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.15);color:rgba(255,255,255,.6);padding:6px;cursor:pointer;line-height:0;opacity:0;transition:opacity var(--transition-fast),background var(--transition-fast),color var(--transition-fast)}.threejs-fullscreen-btn{right:var(--space-xs)}.threejs-regenerate-btn{right:calc(var(--space-xs) + 34px)}.threejs-container:hover .threejs-fullscreen-btn,.threejs-container:hover .threejs-regenerate-btn{opacity:1}.threejs-fullscreen-btn:hover,.threejs-regenerate-btn:hover{background:rgba(0,0,0,.8);color:rgba(255,255,255,.9);border-color:rgba(255,255,255,.3)}.threejs-container:fullscreen{max-width:100%;width:100vw;height:100vh;aspect-ratio:unset}.threejs-container:fullscreen canvas{width:100%;height:100%}.threejs-container:fullscreen .threejs-fullscreen-btn,.threejs-container:fullscreen .threejs-regenerate-btn{opacity:1}.threejs-embed figcaption{margin-top:var(--space-xs);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.project-quote{font-family:var(--font-mono);letter-spacing:.02em;color:var(--color-text-secondary);font-style:italic;padding:var(--space-md)0;border:0;border-bottom:1px solid var(--color-border)}.code-showcase pre,.project-quote,blockquote{margin:0;font-size:var(--text-sm)}.external-reference p,.project-quote,blockquote{font-weight:var(--font-weight-light);line-height:1.8}blockquote{padding:var(--space-md)0 var(--space-md) var(--space-md);border-left:1px solid var(--color-border);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);font-family:var(--font-mono);font-style:italic}.code-showcase code,.external-reference{background:0 0;font-family:var(--font-mono)}.external-reference{padding:var(--space-md);border-left:1px solid var(--color-border-hover)}.external-reference .label{margin-bottom:var(--space-xs)}.external-reference p{margin:0;font-size:var(--text-sm);letter-spacing:.02em}.code-showcase,.code-with-description,.external-reference{margin:0;border-bottom:1px solid var(--color-border)}.code-showcase{padding:var(--space-md);background:var(--color-bg-secondary)}.code-showcase pre{padding:0;background:0 0;overflow-x:auto;line-height:1.6}.code-showcase code{padding:0}.code-showcase[data-theme=monokai]{background:#272822;color:#f8f8f2}.code-showcase[data-theme=github-dark]{background:#0d1117;color:#e6edf3}.code-showcase[data-theme=dracula]{background:#282a36;color:#f8f8f2}.code-showcase[data-theme=monokai] .hl-keyword{color:#f92672}.code-showcase[data-theme=monokai] .hl-string{color:#e6db74}.code-showcase[data-theme=monokai] .hl-comment{color:#75715e;font-style:italic}.code-showcase[data-theme=monokai] .hl-number{color:#ae81ff}.code-showcase[data-theme=monokai] .hl-function{color:#a6e22e}.code-showcase[data-theme=monokai] .hl-operator{color:#f92672}.code-showcase[data-theme=monokai] .hl-punctuation{color:#f8f8f2}.code-showcase[data-theme=github-dark] .hl-keyword{color:#ff7b72}.code-showcase[data-theme=github-dark] .hl-string{color:#a5d6ff}.code-showcase[data-theme=github-dark] .hl-comment{color:#8b949e;font-style:italic}.code-showcase[data-theme=github-dark] .hl-number{color:#79c0ff}.code-showcase[data-theme=github-dark] .hl-function{color:#d2a8ff}.code-showcase[data-theme=github-dark] .hl-operator{color:#ff7b72}.code-showcase[data-theme=github-dark] .hl-punctuation{color:#e6edf3}.code-showcase[data-theme=dracula] .hl-keyword{color:#ff79c6}.code-showcase[data-theme=dracula] .hl-string{color:#f1fa8c}.code-showcase[data-theme=dracula] .hl-comment{color:#6272a4;font-style:italic}.code-showcase[data-theme=dracula] .hl-number{color:#bd93f9}.code-showcase[data-theme=dracula] .hl-function{color:#50fa7b}.code-showcase[data-theme=dracula] .hl-operator{color:#ff79c6}.code-showcase[data-theme=dracula] .hl-punctuation{color:#f8f8f2}.code-with-description{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);padding:var(--space-md)0}.code-with-description .description,.credit-item p{font-size:var(--text-sm);font-weight:var(--font-weight-light)}.code-with-description .description{font-family:var(--font-mono);line-height:1.8;letter-spacing:.02em;color:var(--color-text-secondary)}@media (max-width:768px){.code-with-description{grid-template-columns:1fr}}.project-credits{margin:0;padding:var(--space-md)0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);font-family:var(--font-mono)}.project-credits h3{font-family:var(--ff-toc-display);font-size:1.25rem;font-weight:400;color:var(--color-accent);letter-spacing:.06em;text-transform:uppercase;margin-bottom:var(--space-md)}.credits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}.credit-item .label{display:block;margin-bottom:var(--space-xs)}.credit-item p{margin:0}.project-nav-bar{position:fixed;bottom:var(--space-md);left:50%;transform:translateX(-50%);background:var(--color-bg-blur-heavy);border:1px solid var(--color-border);padding:var(--space-xs) var(--space-md);z-index:100;opacity:0;visibility:hidden;transition:opacity var(--transition-base),visibility var(--transition-base)}.project-nav-bar.visible{opacity:1;visibility:visible}.project-nav-bar .nav-inner{display:flex;align-items:center;gap:var(--space-lg);max-width:none;padding:0}.project-nav-bar .nav-back,.project-nav-bar .nav-project-title{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:var(--font-weight-light);color:var(--color-text-secondary);white-space:nowrap}.project-nav-bar .nav-back{display:flex;align-items:center;gap:var(--space-xs);letter-spacing:.04em;text-decoration:none;border:0;transition:color var(--transition-fast)}.project-nav-bar .nav-back:hover{color:var(--color-accent);border:0}.project-nav-bar .nav-project-title{text-transform:uppercase;letter-spacing:.08em;overflow:hidden;text-overflow:ellipsis;max-width:200px}.project-nav-bar .nav-arrows{display:flex;gap:var(--space-xs)}.project-nav-bar .nav-arrow{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1px solid var(--color-border);color:var(--color-text-secondary);text-decoration:none;font-size:var(--text-sm);transition:background-color var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}.project-nav-bar .nav-arrow:hover{background:var(--color-bg-secondary);border-color:var(--color-accent);color:var(--color-accent)}@media (max-width:768px){.project-nav-bar{bottom:0;left:0;right:0;transform:none;border-left:none;border-right:none;border-bottom:none;padding:var(--space-xs) var(--space-sm)}.project-nav-bar .nav-inner{justify-content:space-between}.project-nav-bar .nav-project-title{display:none}}.project-columns.layout-two-column{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--space-lg)}.project-columns.layout-two-column>.project-col-text{display:flex;flex-direction:column}.project-columns.layout-two-column>.project-col-media{display:flex;flex-direction:column;gap:var(--space-md)}.project-columns.layout-two-column>.project-col-media img,.project-hero .project-media img{width:100%;height:auto;display:block}@media (max-width:768px){.project-columns.layout-two-column{grid-template-columns:1fr}}.project-columns.layout-single-column{max-width:800px;margin:0 auto}.project-columns.layout-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:1px}.project-columns.layout-gallery>.project-text{grid-column:1/-1;max-width:800px}.project-columns.layout-gallery>.image-group,.project-columns.layout-gallery>.project-media{grid-column:auto}@media (max-width:768px){.project-columns.layout-gallery{grid-template-columns:1fr}}.project-hero{padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border)}.project-hero .project-media,.project-hero .video-embed{margin:0;padding:0;border:0}@media (max-width:768px){.project-text h1,.project-text h2{font-size:1.25rem}.project-quote{font-size:var(--text-sm)}.external-reference{padding:var(--space-sm)}}@media print{.threejs-embed,.video-embed{display:none}.project-media,.project-media--large,.project-media--medium,.project-media--small{page-break-inside:avoid}.project-text{max-width:100%}.project-nav-bar{display:none}}:root{--ease-toc:cubic-bezier(0.25, 0.1, 0.25, 1)}.toc-container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-md);box-sizing:border-box}.toc-header,.toc-header-right{display:flex;align-items:baseline}.toc-header{justify-content:space-between;padding:2rem 0 1rem;border-bottom:1px solid var(--color-border);margin-bottom:3rem;opacity:0;animation:tocFadeIn .5s var(--ease-toc) forwards}.toc-header .toc-id{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:300;color:var(--color-text-secondary);letter-spacing:.05em}.toc-header-right{gap:1.5rem}.toc-header .toc-label{font-size:var(--text-sm);font-weight:500;color:var(--color-text);letter-spacing:.2em}.view-tabs{display:flex;gap:2rem;margin-bottom:3rem;opacity:0;animation:tocFadeIn .5s var(--ease-toc) .05s forwards}.toc-header .toc-label,.view-tab{font-family:var(--font-mono);text-transform:uppercase}.view-tab{font-size:.75rem;font-weight:400;letter-spacing:.12em;color:var(--color-text-muted);background:0 0;border:0;cursor:pointer;padding:.5rem 0;position:relative;transition:color .3s var(--ease-toc)}.view-tab:hover{color:var(--color-text-secondary)}.view-tab.active{color:var(--color-accent)}.view-tab::after{content:"";position:absolute;bottom:0;left:0;width:100%;height:1px;background:var(--color-accent);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease-toc)}.view-tab.active::after{transform:scaleX(1)}.view-container{display:none}.view-container.active{display:block}.toc-section{display:grid;grid-template-columns:80px 220px 1fr;gap:0;margin-bottom:3.5rem;align-items:start;opacity:0;transform:translateY(16px);animation:tocReveal .6s var(--ease-toc) forwards}.toc-section:nth-child(1){animation-delay:.1s}.toc-section:nth-child(2){animation-delay:.2s}.toc-section:nth-child(3){animation-delay:.3s}.toc-section:nth-child(4){animation-delay:.4s}.toc-section:nth-child(5){animation-delay:.5s}.toc-section:nth-child(6){animation-delay:.6s}.toc-section:nth-child(7){animation-delay:.7s}.toc-section:nth-child(8){animation-delay:.8s}.section-num,.section-title{font-family:var(--ff-toc-display);font-size:1.5rem;color:var(--color-text-secondary);letter-spacing:.05em;padding-top:.15em;line-height:1}.section-title{color:var(--color-accent);letter-spacing:.08em;text-transform:uppercase;line-height:1.15}.section-entries{display:flex;flex-direction:column}.chrono-section{display:grid;grid-template-columns:80px 1fr;gap:0;margin-bottom:3rem;align-items:start;opacity:0;transform:translateY(16px)}.chrono-section.revealed{animation:tocReveal .5s var(--ease-toc) forwards}.chrono-year{font-family:var(--ff-toc-display);font-size:1.5rem;color:var(--color-accent);letter-spacing:.05em;padding-top:.15em;line-height:1}.entry{display:grid;grid-template-columns:1fr 52px auto;gap:1rem;align-items:center;padding:.5rem 0;transition:background .3s var(--ease-toc),border-color .3s var(--ease-toc);position:relative;text-decoration:none}a.entry{cursor:pointer}.entry,.entry:hover{border-bottom:1px solid var(--color-border)}.entry:first-child{border-top:1px solid var(--color-border)}.entry::before{content:"";position:absolute;inset:0-1rem;background:0 0;transition:background .3s var(--ease-toc);z-index:-1}a.entry:hover::before{background:var(--color-highlight)}a.entry:hover{border-color:var(--color-border-hover)}a.entry:hover+.entry{border-top-color:var(--color-border-hover)}.entry-left{display:flex;align-items:baseline;gap:.75rem;min-width:0}.entry-id{font-size:var(--text-xs);font-weight:300;color:var(--color-text-muted);letter-spacing:.02em;flex-shrink:0;min-width:3.2em}.entry-id,.entry-name,.entry-slash{font-family:var(--font-mono)}.entry-slash{font-size:var(--text-xs);font-weight:300;color:var(--color-text-muted);flex-shrink:0;user-select:none}.entry-name{font-size:var(--text-sm);font-weight:400;color:var(--color-text);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .3s var(--ease-toc)}a.entry:hover .entry-name{color:var(--color-accent)}.entry-thumb{width:52px;height:32px;overflow:hidden;flex-shrink:0;background:var(--color-bg-secondary);border:1px solid var(--color-border)}.entry-thumb img,.hover-preview img{width:100%;height:100%;object-fit:cover}.entry-thumb img{filter:var(--thumb-rest);transition:filter .4s var(--ease-toc),transform .4s var(--ease-toc)}a.entry:hover .entry-thumb img{filter:var(--thumb-hover);transform:scale(1.08)}a.entry:hover .entry-thumb{border-color:var(--color-border-hover)}.entry-year{font-family:var(--font-mono);font-size:.75rem;font-weight:300;color:var(--color-text-secondary);letter-spacing:.05em;flex-shrink:0;text-align:right;transition:color .3s var(--ease-toc)}a.entry:hover .entry-year{color:var(--color-text)}.entry.text-entry{grid-template-columns:1fr auto}a.text-entry .entry-year::before{content:"↗ "}a.text-entry .entry-year{text-decoration:underline;text-underline-offset:3px;text-decoration-color:transparent;transition:text-decoration-color .3s var(--ease-toc)}a.text-entry:hover .entry-year{text-decoration-color:var(--color-text)}.hover-preview{position:absolute;z-index:1000;width:320px;aspect-ratio:16/10;overflow:hidden;pointer-events:none;opacity:0;transform:scale(.85);transform-origin:bottom left;transition:opacity .3s var(--ease-toc),transform .3s var(--ease-toc);border:1px solid var(--color-border-hover);box-shadow:var(--shadow-preview);background:var(--color-bg-secondary)}.hover-preview.visible{opacity:1;transform:scale(1)}.hover-preview img{display:block}@media (hover:none){.hover-preview{display:none}}@media (prefers-reduced-motion:reduce){.chrono-section,.toc-header,.toc-section,.view-tabs{opacity:1;transform:none;animation:none}.hover-preview{transition:none}}@media (max-width:860px){.toc-section{grid-template-columns:60px 1fr;grid-template-rows:auto auto}.section-title{grid-column:2;margin-bottom:1rem}.section-entries{grid-column:1/-1}}@media (max-width:560px){.toc-section{grid-template-columns:1fr}.section-num{font-size:1.125rem;margin-bottom:.25rem}.section-title{grid-column:1;font-size:1.25rem;margin-bottom:.75rem}.section-entries{grid-column:1}.chrono-section{grid-template-columns:1fr}.chrono-year{margin-bottom:.5rem}.entry{grid-template-columns:1fr 40px auto;gap:.5rem}.entry-thumb{width:40px;height:26px}.entry-id{min-width:2.8em}.entry-name{font-size:.75rem}.entry-year{font-size:var(--text-xs)}}:is(.toc-container,.home-container) .section-num::before{content:"SYS.";display:block;font-family:var(--font-mono);font-size:.48em;font-weight:300;color:var(--color-text-muted);letter-spacing:.14em;margin-bottom:.1em}:is(.toc-container,.home-container) .section-num,:is(.toc-container,.home-container) .section-title{font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.1em;color:var(--color-text-muted);padding-top:.35em}:is(.toc-container,.home-container) .section-title{letter-spacing:.15em;color:var(--color-text-secondary);line-height:1.5}:is(.toc-container,.home-container) .section-title::after{content:"["attr(data-count)"]";display:block;font-family:var(--font-mono);font-size:.85em;font-weight:300;color:var(--color-text-muted);letter-spacing:.12em;margin-top:.5em}:is(.toc-container,.home-container) .section-entries{border-left:1px solid var(--color-border);padding-left:.875rem}:is(.toc-container,.home-container) .entry{padding:.3rem 0}:is(.toc-container,.home-container) .toc-section{margin-bottom:2.25rem}:is(.toc-container,.home-container) .entry-left{gap:.5rem}:is(.toc-container,.home-container) .entry-left::before{content:">>";color:var(--color-text-muted);font-family:var(--font-mono);font-size:.58rem;letter-spacing:.04em;line-height:1;flex-shrink:0;transition:color .15s var(--ease-toc)}:is(.toc-container,.home-container) a.entry:hover::before{background:var(--color-accent)}:is(.toc-container,.home-container) a.entry:hover{border-color:var(--color-accent)}:is(.toc-container,.home-container) a.entry:hover+.entry{border-top-color:var(--color-border)}:is(.toc-container,.home-container) a.entry:hover .entry-left::before,:is(.toc-container,.home-container) a.entry:hover .entry-name{color:var(--color-bg)}:is(.toc-container,.home-container) a.entry:hover .entry-id,:is(.toc-container,.home-container) a.entry:hover .entry-slash,:is(.toc-container,.home-container) a.entry:hover .entry-year{color:var(--color-bg-secondary)}.toc-container .toc-id::before{content:"SYS.IDX // ";font-size:.9em;font-weight:300;color:var(--color-text-muted);letter-spacing:.06em}.toc-container .chrono-year{font-family:var(--font-mono);font-size:.75rem;font-weight:500;color:var(--color-text-muted);letter-spacing:.1em;padding-top:.4em}.toc-container .chrono-year::before{content:"YR.";font-size:.85em;opacity:.65;letter-spacing:.12em}main.transition-out{transition:none}main.transition-in,main.transition-out{opacity:1;transform:none}body.page-loading *,main.transition-active{pointer-events:none}[data-reveal]{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--transition-reveal),transform var(--transition-reveal);transition-delay:var(--reveal-delay, 0s)}[data-reveal].revealed{opacity:1;transform:translateY(0)}[data-reveal][data-reveal-delay="1"]{--reveal-delay:0.1s}[data-reveal][data-reveal-delay="2"]{--reveal-delay:0.2s}[data-reveal][data-reveal-delay="3"]{--reveal-delay:0.3s}[data-reveal][data-reveal-delay="4"]{--reveal-delay:0.4s}[data-reveal][data-reveal-delay="5"]{--reveal-delay:0.5s}[data-reveal][data-reveal-delay="6"]{--reveal-delay:0.6s}@supports (view-transition-name:none){::view-transition-new(root),::view-transition-old(root){animation-duration:.4s;animation-timing-function:ease}::view-transition-old(root){animation-name:fade-out}::view-transition-new(root){animation-name:fade-in}@keyframes fade-out{to{opacity:0;transform:translateY(-20px)}}@keyframes fade-in{0%{opacity:0;transform:translateY(20px)}}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}[data-reveal],main.transition-in,main.transition-out{opacity:1;transform:none;transition:none}[data-theme]{transition:none}}body.page-loading{cursor:wait}.page-loading-bar{position:fixed;top:0;left:0;width:0;height:2px;background:var(--color-accent, #2a2a28);z-index:99999;transition:width .3s ease,opacity .3s ease;opacity:0}body.page-loading .page-loading-bar{width:70%;opacity:1}body.page-loaded .page-loading-bar{width:100%;opacity:0;transition:width .2s ease,opacity .5s ease .2s}@media print{.hover-preview,.project-nav-bar,.scroll-progress,.site-header,.theme-toggle{display:none!important}.toc-container{max-width:100%;padding:0}a,body{color:#000}body{background:#fff}a{border-bottom:none}}