*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--black:#0a0a0a;--white:#f5f5f0;--gray-50:#fafaf8;--gray-100:#e8e8e4;--gray-200:#d0d0cc;--gray-300:#b0b0ac;--gray-400:#888884;--gray-500:#68685f;--gray-600:#48483f;--gray-700:#2a2a24;--gray-800:#1a1a16;--gray-900:#0f0f0c;--color-bg:var(--black);--color-text:var(--white);--color-text-muted:var(--gray-400);--color-hairline:#ffffff1a;--font-body:"Inter", system-ui, -apple-system, sans-serif;--font-display:"Space Grotesk", system-ui, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--size-display:clamp(3rem, 6vw, 5rem);--size-h1:clamp(2rem, 4vw, 3rem);--size-h2:clamp(1.5rem, 2.5vw, 2.25rem);--size-h3:clamp(1.125rem, 1.5vw, 1.5rem);--size-body:1rem;--size-body-lg:1.125rem;--size-caption:.875rem;--size-label:.75rem;--ls-tight:-.02em;--ls-normal:0em;--ls-wide:.06em;--ls-caps:.1em;--grid-columns:12;--grid-gutter:24px;--grid-max:1400px;--sp-1:8px;--sp-2:16px;--sp-3:24px;--sp-4:32px;--sp-5:48px;--sp-6:64px;--sp-7:96px;--sp-8:128px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-fast:.2s;--duration-normal:.3s;--duration-slow:.5s}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}body{min-height:100vh;font-family:var(--font-body);font-size:var(--size-body);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}a{color:inherit}img,video{max-width:100%;display:block}.landing{z-index:1000;background:var(--color-bg);transition:opacity .6s var(--ease-out), visibility .6s var(--ease-out);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.landing.dismissed{opacity:0;visibility:hidden;pointer-events:none}.landing-intro{transition:opacity .4s var(--ease-out);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.landing-intro.fade-out{opacity:0}.landing-letters{align-items:baseline;display:flex}.landing-letter,.landing-dot{font-family:var(--font-display);color:var(--color-text);opacity:0;transition:opacity .35s var(--ease-out), transform .35s var(--ease-out);font-size:clamp(5rem,15vw,12rem);font-weight:700;line-height:1;transform:translateY(24px)}.landing-letter.visible,.landing-dot.visible{opacity:1;transform:translateY(0)}.landing-dot{color:var(--color-text-muted);margin:0 .05em;font-size:clamp(3rem,10vw,8rem)}.landing-splat-bg{opacity:0;transition:opacity 1s;position:absolute;inset:0}.landing-splat-bg.visible{opacity:1}.landing-splat-bg canvas{display:block;width:100%!important;height:100%!important}.landing-content{align-items:center;gap:var(--sp-1);opacity:0;z-index:2;flex-direction:column;transition:opacity .8s,transform .8s;display:flex;position:absolute;bottom:clamp(2rem,6vh,5rem);left:50%;transform:translate(-50%)translateY(12px)}.landing-content.visible{opacity:1;transform:translate(-50%)translateY(0)}.landing-instruction{font-family:var(--font-body);color:var(--color-text);text-align:center;text-shadow:0 1px 12px #000c;font-size:clamp(.875rem,1.5vw,1.125rem);font-weight:700}.landing-social-overlay{z-index:3;-webkit-backdrop-filter:blur(24px);opacity:0;visibility:hidden;transition:opacity var(--duration-normal) ease, visibility var(--duration-normal) ease;background:#0a0a0a8c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.landing-social-overlay.open{opacity:1;visibility:visible}.landing-social-close{top:var(--sp-3);right:var(--sp-3);border:1px solid var(--color-hairline);width:40px;height:40px;color:var(--color-text);cursor:pointer;transition:border-color var(--duration-fast) ease;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;display:flex;position:absolute}.landing-social-close:hover{border-color:var(--color-text)}.landing-social-links{align-items:center;gap:var(--sp-3);flex-direction:column;display:flex}.landing-social-link{font-family:var(--font-display);color:var(--color-text);letter-spacing:var(--ls-wide);opacity:.85;transition:opacity var(--duration-fast) ease;font-size:clamp(1.25rem,3vw,2rem);font-weight:600;text-decoration:none}.landing-social-link:hover{opacity:1}.global-nav.hidden,.app-container.hidden{opacity:0;pointer-events:none}.global-nav{z-index:100;padding:var(--sp-2) var(--grid-gutter);transition:opacity var(--duration-fast) ease;background:linear-gradient(#0a0a0ad9 0%,#0000 100%);position:fixed;top:0;left:0;right:0}.nav-inner{max-width:var(--grid-max);justify-content:space-between;align-items:center;gap:var(--sp-4);margin:0 auto;display:flex}.nav-logo{font-family:var(--font-display);color:var(--color-text);letter-spacing:var(--ls-wide);font-size:1rem;font-weight:700;text-decoration:none}.nav-links{gap:var(--sp-4);display:flex}.nav-link{font-family:var(--font-body);font-size:var(--size-label);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--color-text);opacity:.5;transition:opacity var(--duration-fast) ease;font-weight:500;text-decoration:none}.nav-link:hover,.nav-link.active{opacity:1}.app-container{min-height:100vh;padding-top:64px}.route-content{opacity:0;transition:opacity .22s}.route-content.visible{opacity:1}.overlay-panel{z-index:200;opacity:0;visibility:hidden;transition:opacity var(--duration-normal), visibility var(--duration-normal);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay-panel.open{opacity:1;visibility:visible}.overlay-backdrop{background:#0a0a0ae6;position:absolute;inset:0}.overlay-content{background:var(--gray-900);border:1px solid var(--color-hairline);border-radius:var(--radius-lg);width:90%;max-width:800px;max-height:90vh;padding:var(--sp-5);transition:transform var(--duration-normal) var(--ease-out);position:relative;overflow-y:auto;transform:translateY(16px)}.overlay-panel.open .overlay-content{transform:translateY(0)}.overlay-close{top:var(--sp-3);right:var(--sp-3);border:1px solid var(--color-hairline);width:32px;height:32px;color:var(--color-text);cursor:pointer;transition:border-color var(--duration-fast) ease;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:1.25rem;display:flex;position:absolute}.overlay-close:hover{border-color:var(--color-text)}.display{font-family:var(--font-display);font-size:var(--size-display);letter-spacing:var(--ls-tight);font-weight:700;line-height:1.05}.h1{font-family:var(--font-display);font-size:var(--size-h1);letter-spacing:var(--ls-tight);font-weight:700;line-height:1.1}.h2{font-family:var(--font-display);font-size:var(--size-h2);letter-spacing:var(--ls-tight);font-weight:700;line-height:1.2}.h3{font-family:var(--font-display);font-size:var(--size-h3);font-weight:600;line-height:1.3}.kicker{font-family:var(--font-body);font-size:var(--size-label);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--color-text-muted);margin-bottom:var(--sp-1);font-weight:500;display:block}.body-text{color:var(--color-text-muted);max-width:65ch;line-height:1.7}.btn{align-items:center;gap:var(--sp-1);font-family:var(--font-body);font-size:var(--size-label);text-transform:uppercase;letter-spacing:var(--ls-caps);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast) ease;border:1px solid #0000;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;display:inline-flex}.btn-primary{background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}.btn-primary:hover{color:var(--color-text);background:0 0}.btn-ghost{color:var(--color-text);border-color:var(--color-hairline);background:0 0}.btn-ghost:hover{border-color:var(--color-text)}.grid-container{width:100%;max-width:var(--grid-max);padding:0 var(--grid-gutter);margin:0 auto}@media (width<=768px){:root{--grid-gutter:16px}.nav-links{gap:var(--sp-2)}.nav-link{font-size:.6875rem}.overlay-content{width:100%;height:100%;max-height:100%;padding:var(--sp-3);border-radius:0}}@media (width<=480px){.nav-links{gap:var(--sp-1)}}.home-page{padding-bottom:var(--sp-8)}.home-hero{min-height:80vh;padding:var(--sp-8) 0 var(--sp-7);align-items:center;display:flex}.home-hero-inner{max-width:720px}.home-hero .display{margin-bottom:var(--sp-3)}.home-hero-subtitle{font-size:var(--size-body-lg);color:var(--color-text-muted);max-width:520px;margin-bottom:var(--sp-5);line-height:1.7}.home-hero-ctas{gap:var(--sp-2);flex-wrap:wrap;display:flex}.home-work{padding:var(--sp-7) 0;border-top:1px solid var(--color-hairline)}.home-work-grid{gap:var(--sp-3);grid-template-columns:repeat(3,1fr);display:grid}.home-project-card{color:inherit;transition:transform var(--duration-fast) ease;text-decoration:none;display:block}.home-project-card:hover{transform:translateY(-4px)}.home-project-image{aspect-ratio:4/3;background:var(--gray-800);border-radius:var(--radius-md);width:100%;margin-bottom:var(--sp-2);transition:background var(--duration-fast) ease;justify-content:center;align-items:center;display:flex}.home-project-card:hover .home-project-image{background:var(--gray-700)}.home-project-id{font-family:var(--font-mono);font-size:var(--size-label);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.home-project-info{padding:0 var(--sp-1)}.home-project-title{font-family:var(--font-display);font-size:var(--size-h3);margin-bottom:4px;font-weight:600}.home-project-meta{font-size:var(--size-label);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.home-about{padding:var(--sp-7) 0;border-top:1px solid var(--color-hairline)}.home-about-inner{max-width:600px}.home-about-text{font-size:var(--size-h3);color:var(--color-text-muted);margin-bottom:var(--sp-4);line-height:1.6}.work-page{padding:var(--sp-7) 0 var(--sp-8)}.work-header{margin-bottom:var(--sp-6)}.work-header .h1{margin-top:var(--sp-1)}.work-grid{gap:var(--sp-3);grid-template-columns:repeat(2,1fr);display:grid}.work-card{cursor:pointer;transition:transform var(--duration-fast) ease;color:inherit;text-align:left;background:0 0;border:none;padding:0}.work-card:hover{transform:translateY(-4px)}.work-card-image{aspect-ratio:16/9;background:var(--gray-800);border-radius:var(--radius-md);width:100%;margin-bottom:var(--sp-2);transition:background var(--duration-fast) ease;justify-content:center;align-items:center;display:flex}.work-card:hover .work-card-image{background:var(--gray-700)}.work-card-id{font-family:var(--font-mono);font-size:var(--size-label);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.work-card-body{padding:0 var(--sp-1)}.work-card-title{font-family:var(--font-display);font-size:var(--size-h3);margin-bottom:4px;font-weight:600}.work-card-meta{font-size:var(--size-label);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.project-detail-media{aspect-ratio:16/9;background:var(--gray-800);border-radius:var(--radius-md);width:100%;margin-bottom:var(--sp-4);justify-content:center;align-items:center;display:flex}.project-detail-id{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.project-detail-header{margin-bottom:var(--sp-3)}.project-detail-meta{font-size:var(--size-label);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:var(--ls-caps);margin-top:var(--sp-1);display:block}.project-detail-summary{color:var(--color-text-muted);max-width:60ch;margin-bottom:var(--sp-3);line-height:1.7}.project-detail-bullets{margin-bottom:var(--sp-3);list-style:none}.project-detail-bullets li{padding-left:var(--sp-2);color:var(--color-text-muted);margin-bottom:var(--sp-1);line-height:1.6;position:relative}.project-detail-bullets li:before{content:"—";color:var(--gray-600);position:absolute;left:0}.project-detail-tools{gap:var(--sp-1);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.tool-tag{font-size:var(--size-label);border:1px solid var(--color-hairline);border-radius:var(--radius-sm);color:var(--color-text-muted);padding:4px 12px;font-weight:500}.project-detail-items{margin-bottom:var(--sp-3);flex-direction:column;display:flex}.project-detail-item{padding:var(--sp-2) 0;border-top:1px solid var(--color-hairline);color:inherit;transition:opacity var(--duration-fast) ease;justify-content:space-between;align-items:center;text-decoration:none;display:flex}.project-detail-item:last-child{border-bottom:1px solid var(--color-hairline)}.project-detail-item:hover{opacity:.7}.project-detail-item-title{font-size:var(--size-body)}.project-detail-item-arrow{font-size:var(--size-caption);color:var(--color-text-muted)}.project-detail-links{gap:var(--sp-2);display:flex}.contact-page{min-height:80vh;padding:var(--sp-7) 0;align-items:center;display:flex}.contact-layout{max-width:560px}.contact-header{margin-bottom:var(--sp-5)}.contact-header .h1{margin:var(--sp-1) 0 var(--sp-2)}.contact-links{flex-direction:column;display:flex}.contact-row{padding:var(--sp-3) 0;border-top:1px solid var(--color-hairline);color:inherit;transition:opacity var(--duration-fast) ease;justify-content:space-between;align-items:center;text-decoration:none;display:flex}.contact-row:last-child{border-bottom:1px solid var(--color-hairline)}.contact-row:hover{opacity:.7}.contact-row-label{font-size:var(--size-caption);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--color-text-muted);font-weight:500}.contact-row-value{font-size:var(--size-body);color:var(--color-text)}@media (width<=900px){.home-work-grid,.work-grid{gap:var(--sp-4);grid-template-columns:1fr}}@media (width<=600px){.home-hero{min-height:60vh;padding:var(--sp-6) 0 var(--sp-5)}.home-hero-ctas{flex-direction:column}.home-hero-ctas .btn{text-align:center;justify-content:center}}.lab-page{padding:var(--sp-7) 0 var(--sp-8)}.lab-header{margin-bottom:var(--sp-6)}.lab-header .h1{margin-top:var(--sp-1)}.lab-subtitle{color:var(--color-text-muted);margin-top:var(--sp-1)}.specimen-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.specimen-card{background:var(--gray-900);border:1px solid var(--color-hairline);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--duration-fast) ease, border-color var(--duration-fast) ease;overflow:hidden}.specimen-card:hover{border-color:var(--gray-600);transform:translateY(-2px)}.specimen-media{aspect-ratio:4/3;background:var(--gray-800);justify-content:center;align-items:center;width:100%;display:flex}.specimen-id{font-family:var(--font-mono);font-size:var(--size-label);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.specimen-body{padding:var(--sp-3)}.specimen-label{text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--color-text-muted);margin-bottom:var(--sp-1);font-size:.625rem;font-weight:500;display:block}.specimen-title{font-family:var(--font-display);font-size:var(--size-h3);margin-bottom:var(--sp-1);font-weight:600}.specimen-summary{font-size:var(--size-caption);color:var(--color-text-muted);margin-bottom:var(--sp-2);line-height:1.5}.specimen-constraints{flex-wrap:wrap;gap:6px;display:flex}.constraint-tag{border:1px solid var(--color-hairline);border-radius:var(--radius-sm);color:var(--color-text-muted);padding:3px 10px;font-size:.6875rem;font-weight:500}.experiment-detail{max-width:100%}.experiment-media{aspect-ratio:16/9;background:var(--gray-800);border-radius:var(--radius-md);width:100%;margin-bottom:var(--sp-4);justify-content:center;align-items:center;display:flex}.experiment-id{font-family:var(--font-mono);font-size:var(--size-caption);color:var(--color-text-muted);letter-spacing:var(--ls-wide)}.experiment-label{font-size:var(--size-label);text-transform:uppercase;letter-spacing:var(--ls-caps);color:var(--color-text-muted);margin-bottom:var(--sp-1);font-weight:500;display:block}.experiment-summary{color:var(--color-text-muted);max-width:60ch;margin-bottom:var(--sp-3);line-height:1.7}.experiment-constraints{margin-bottom:var(--sp-3)}.experiment-constraints-title{font-size:var(--size-label);text-transform:uppercase;letter-spacing:var(--ls-caps);margin-bottom:var(--sp-1);font-weight:600}.experiment-constraints-list{gap:var(--sp-1);flex-wrap:wrap;display:flex}.experiment-notes{padding-top:var(--sp-3);border-top:1px solid var(--color-hairline);font-size:var(--size-caption);color:var(--color-text-muted);font-style:italic;line-height:1.6}@media (width<=600px){.specimen-grid{grid-template-columns:1fr}}
