*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f5f1eb;--color-bg-warm:#ede8e0;--color-text:#2c2118;--color-text-light:#8a7e72;--color-accent:#4a3f35;--color-border:#d4ccc2;--color-dot:#c5bdb3;--color-cream:#faf8f5;--font-serif:"EB Garamond", "Georgia", serif;--font-sans:"Inter", -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Courier New", monospace;--nav-height:60px;--page-pad:clamp(20px, 4vw, 60px)}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;font-size:16px}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.6;overflow-x:hidden}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{cursor:pointer;color:inherit;background:0 0;border:none}::selection{background:var(--color-text);color:var(--color-bg)}.page-transition{background:var(--color-text);z-index:9999;transform-origin:bottom;pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0;transform:scaleY(0)}.page-transition.active{animation:.6s cubic-bezier(.76,0,.24,1) forwards pageIn,.6s cubic-bezier(.76,0,.24,1) .6s forwards pageOut}@keyframes pageIn{0%{transform-origin:bottom;transform:scaleY(0)}to{transform-origin:bottom;transform:scaleY(1)}}@keyframes pageOut{0%{transform-origin:top;transform:scaleY(1)}to{transform-origin:top;transform:scaleY(0)}}.nav{height:var(--nav-height);padding:0 var(--page-pad);z-index:100;background:var(--color-bg);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.nav-logo{font-family:var(--font-serif);letter-spacing:-.01em;font-size:1.15rem;font-weight:500}.nav-center{font-family:var(--font-mono);color:var(--color-text-light);letter-spacing:.05em;text-transform:uppercase;font-size:.7rem;position:absolute;left:50%;transform:translate(-50%)}.nav-links{gap:2rem;display:flex}.nav-link{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-light);font-size:.75rem;transition:color .3s;position:relative}.nav-link:after{content:"";background:var(--color-text);width:0;height:1px;transition:width .3s;position:absolute;bottom:-2px;left:0}.nav-link:hover,.nav-link.active{color:var(--color-text)}.nav-link:hover:after,.nav-link.active:after{width:100%}.nav-menu-btn{flex-direction:column;gap:6px;padding:4px;display:none}.nav-menu-btn span{background:var(--color-text);width:24px;height:1px;transition:transform .3s,opacity .3s;display:block}.nav-menu-btn.active span:first-child{transform:rotate(45deg)translate(2.5px,2.5px)}.nav-menu-btn.active span:last-child{transform:rotate(-45deg)translate(2.5px,-2.5px)}.mobile-menu{background:var(--color-bg);z-index:99;opacity:0;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100vh;transition:opacity .4s;display:flex;position:fixed;top:0;left:0}.mobile-menu.active{opacity:1;pointer-events:all}.mobile-menu-inner{text-align:center}.mobile-menu-link{font-family:var(--font-serif);opacity:0;margin-bottom:1.5rem;font-size:2.5rem;transition:opacity .4s,transform .4s;display:block;transform:translateY(20px)}.mobile-menu.active .mobile-menu-link{opacity:1;transform:translateY(0)}.mobile-menu.active .mobile-menu-link:first-child{transition-delay:.1s}.mobile-menu.active .mobile-menu-link:nth-child(2){transition-delay:.2s}.mobile-menu.active .mobile-menu-link:nth-child(3){transition-delay:.3s}.mobile-menu-footer{font-family:var(--font-mono);color:var(--color-text-light);margin-top:3rem;font-size:.75rem}#app{min-height:100vh;padding-top:var(--nav-height)}.dot-grid{background-image:radial-gradient(circle, var(--color-dot) 1px, transparent 1px);opacity:.4;pointer-events:none;background-size:28px 28px;width:100%;height:100%;position:absolute;top:0;left:0}.home{position:relative}.home-hero{min-height:calc(100vh - var(--nav-height));padding:0 var(--page-pad);flex-direction:column;justify-content:center;display:flex;position:relative;overflow:hidden}.home-hero-content{z-index:2;max-width:900px;position:relative}.home-hero-eyebrow{font-family:var(--font-mono);letter-spacing:.15em;text-transform:uppercase;color:var(--color-text-light);align-items:center;gap:1rem;margin-bottom:2rem;font-size:.7rem;display:flex}.home-hero-eyebrow:before{content:"";background:var(--color-text-light);width:40px;height:1px}.home-hero-title{font-family:var(--font-serif);letter-spacing:-.02em;margin-bottom:2.5rem;font-size:clamp(2.8rem,7vw,5.5rem);font-weight:400;line-height:1.08}.home-hero-title em{font-style:italic;font-weight:400}.home-hero-subtitle{font-family:var(--font-sans);color:var(--color-text-light);max-width:420px;font-size:.95rem;font-weight:300;line-height:1.7}.home-hero-meta{bottom:var(--page-pad);right:var(--page-pad);font-family:var(--font-mono);color:var(--color-text-light);text-align:right;letter-spacing:.05em;z-index:2;font-size:.65rem;line-height:2;position:absolute}.home-hero-scroll{bottom:var(--page-pad);left:var(--page-pad);font-family:var(--font-mono);color:var(--color-text-light);letter-spacing:.1em;text-transform:uppercase;writing-mode:vertical-rl;z-index:2;font-size:.65rem;position:absolute}.home-archive{padding:6rem var(--page-pad);border-top:1px solid var(--color-border)}.section-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:baseline;margin-bottom:3rem;padding-bottom:1rem;display:flex}.section-title{font-family:var(--font-serif);font-size:1rem;font-style:italic;font-weight:400}.section-count{font-family:var(--font-mono);color:var(--color-text-light);letter-spacing:.1em;text-transform:uppercase;font-size:.65rem}.archive-list{flex-direction:column;display:flex}.archive-item{border-bottom:1px solid var(--color-border);cursor:pointer;grid-template-columns:60px 1fr 200px 100px;align-items:center;gap:2rem;padding:1.25rem 0;transition:background .3s,padding .3s,margin .3s;display:grid;position:relative}.archive-item:hover{background:var(--color-bg-warm);margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem}.archive-item-num{font-family:var(--font-mono);color:var(--color-text-light);font-size:.7rem}.archive-item-title{font-family:var(--font-serif);font-size:1.35rem;font-weight:400}.archive-item-cat{font-family:var(--font-mono);color:var(--color-text-light);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem}.archive-item-year{font-family:var(--font-mono);color:var(--color-text-light);text-align:right;font-size:.7rem}.home-marquee{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:2rem 0;overflow:hidden}.marquee-track{animation:30s linear infinite marquee;display:inline-flex}.marquee-item{font-family:var(--font-serif);color:var(--color-text-light);padding:0 3rem;font-size:1.1rem;font-style:italic}.marquee-item:after{content:"  • ";margin-left:3rem}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.home-intro{padding:6rem var(--page-pad);grid-template-columns:200px 1fr;gap:4rem;display:grid}.home-intro-label{font-family:var(--font-mono);color:var(--color-text-light);text-transform:uppercase;letter-spacing:.1em;padding-top:.5rem;font-size:.7rem}.home-intro-text{max-width:600px}.home-intro-text p{font-family:var(--font-serif);margin-bottom:1.5rem;font-size:1.5rem;font-weight:400;line-height:1.6}.home-intro-text p em{font-style:italic}.home-intro-link{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--color-text);align-items:center;gap:.5rem;margin-top:1rem;padding-bottom:2px;font-size:.75rem;transition:gap .3s;display:inline-flex}.home-intro-link:hover{gap:1rem}.work-page{padding:4rem var(--page-pad) 6rem}.work-header{margin-bottom:4rem}.work-title{font-family:var(--font-serif);margin-bottom:1rem;font-size:clamp(2.5rem,5vw,4rem);font-weight:400}.work-subtitle{font-family:var(--font-mono);color:var(--color-text-light);letter-spacing:.1em;text-transform:uppercase;font-size:.7rem}.work-filters{border-bottom:1px solid var(--color-border);gap:1.5rem;margin-bottom:3rem;padding-bottom:1rem;display:flex}.work-filter{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-light);cursor:pointer;background:0 0;border:none;padding:0;font-size:.7rem;transition:color .3s}.work-filter:hover,.work-filter.active{color:var(--color-text)}.work-grid{grid-template-columns:repeat(2,1fr);gap:3rem 2.5rem;display:grid}.work-card{cursor:pointer;transition:transform .4s}.work-card:hover{transform:translateY(-4px)}.work-card:nth-child(2n){margin-top:4rem}.work-card-image{aspect-ratio:4/3;background:var(--color-bg-warm);border:1px solid var(--color-border);justify-content:center;align-items:center;width:100%;margin-bottom:1.25rem;display:flex;position:relative;overflow:hidden}.work-card-image-placeholder{font-family:var(--font-mono);color:var(--color-dot);text-transform:uppercase;letter-spacing:.1em;font-size:.65rem}.work-card-meta{justify-content:space-between;align-items:baseline;margin-bottom:.5rem;display:flex}.work-card-num,.work-card-year{font-family:var(--font-mono);color:var(--color-text-light);font-size:.65rem}.work-card-title{font-family:var(--font-serif);margin-bottom:.35rem;font-size:1.4rem;font-weight:400}.work-card-cat{font-family:var(--font-mono);color:var(--color-text-light);text-transform:uppercase;letter-spacing:.06em;font-size:.65rem}.playground-page{padding:4rem var(--page-pad) 6rem}.playground-header{max-width:600px;margin-bottom:4rem}.playground-title{font-family:var(--font-serif);margin-bottom:1rem;font-size:clamp(2.5rem,5vw,4rem);font-weight:400}.playground-desc{font-family:var(--font-sans);color:var(--color-text-light);font-size:.9rem;line-height:1.7}.playground-grid{grid-template-columns:repeat(12,1fr);gap:1.5rem;display:grid;position:relative}.playground-item{cursor:pointer;transition:transform .4s;position:relative}.playground-item:hover{transform:scale(1.02)}.playground-item:first-child{grid-column:1/5}.playground-item:nth-child(2){grid-column:5/9;margin-top:3rem}.playground-item:nth-child(3){grid-column:9/13;margin-top:6rem}.playground-item:nth-child(4){grid-column:2/7}.playground-item:nth-child(5){grid-column:7/11;margin-top:2rem}.playground-item:nth-child(6){grid-column:1/4;margin-top:1rem}.playground-item:nth-child(7){grid-column:5/9}.playground-item:nth-child(8){grid-column:10/13;margin-top:3rem}.playground-item-visual{aspect-ratio:1;background:var(--color-bg-warm);border:1px solid var(--color-border);justify-content:center;align-items:center;width:100%;margin-bottom:.75rem;display:flex;position:relative;overflow:hidden}.playground-item-visual .dot-grid{opacity:.3}.playground-item-num{font-family:var(--font-mono);color:var(--color-text-light);font-size:.6rem;position:absolute;top:10px;left:10px}.playground-item-label{font-family:var(--font-serif);font-size:.95rem;font-weight:400}.playground-item-type{font-family:var(--font-mono);color:var(--color-text-light);text-transform:uppercase;letter-spacing:.06em;margin-top:.2rem;font-size:.6rem}.about-page{padding:4rem var(--page-pad) 6rem}.about-hero{grid-template-columns:1fr 1fr;align-items:center;gap:4rem;min-height:60vh;margin-bottom:6rem;display:grid}.about-hero-text{max-width:480px}.about-hero-title{font-family:var(--font-serif);margin-bottom:2rem;font-size:clamp(2.2rem,4vw,3.5rem);font-weight:400;line-height:1.15}.about-hero-title em{font-style:italic}.about-hero-body p{font-family:var(--font-sans);color:var(--color-text-light);margin-bottom:1rem;font-size:.9rem;line-height:1.8}.about-hero-portrait{aspect-ratio:3/4;background:var(--color-bg-warm);border:1px solid var(--color-border);justify-content:center;align-items:center;width:100%;display:flex;position:relative}.about-hero-portrait-label{font-family:var(--font-mono);color:var(--color-dot);text-transform:uppercase;letter-spacing:.1em;font-size:.65rem}.about-details{border-top:1px solid var(--color-border);grid-template-columns:repeat(3,1fr);gap:3rem;padding:4rem 0;display:grid}.about-detail-block{padding-right:2rem}.about-detail-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-light);border-bottom:1px solid var(--color-border);margin-bottom:1.25rem;padding-bottom:.75rem;font-size:.65rem}.about-detail-list{list-style:none}.about-detail-list li{font-family:var(--font-serif);justify-content:space-between;align-items:baseline;padding:.4rem 0;font-size:1rem;display:flex}.about-detail-list li span{font-family:var(--font-mono);color:var(--color-text-light);font-size:.65rem}.about-experience{border-top:1px solid var(--color-border);padding:4rem 0}.about-experience-header{margin-bottom:2rem}.about-exp-item{border-bottom:1px solid var(--color-border);grid-template-columns:200px 1fr 150px;gap:2rem;padding:1.25rem 0;display:grid}.about-exp-year{font-family:var(--font-mono);color:var(--color-text-light);padding-top:.3rem;font-size:.7rem}.about-exp-role{font-family:var(--font-serif);margin-bottom:.25rem;font-size:1.1rem;font-weight:400}.about-exp-company{font-family:var(--font-sans);color:var(--color-text-light);font-size:.8rem}.about-exp-location{font-family:var(--font-mono);color:var(--color-text-light);text-align:right;padding-top:.3rem;font-size:.7rem}.about-contact{text-align:center;padding:6rem 0}.about-contact-title{font-family:var(--font-serif);margin-bottom:1.5rem;font-size:clamp(1.8rem,3.5vw,2.8rem);font-style:italic;font-weight:400}.about-contact-email{font-family:var(--font-mono);letter-spacing:.05em;border-bottom:1px solid var(--color-text);padding-bottom:4px;font-size:.85rem;transition:letter-spacing .3s}.about-contact-email:hover{letter-spacing:.12em}.footer{border-top:1px solid var(--color-border);padding:3rem var(--page-pad)}.footer-inner{grid-template-columns:repeat(4,1fr);gap:2rem;display:grid}.footer-col{flex-direction:column;gap:.5rem;display:flex}.footer-col-right{text-align:right}.footer-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.15em;color:var(--color-text-light);margin-bottom:.5rem;font-size:.6rem}.footer-link{font-family:var(--font-serif);font-size:.9rem;transition:color .3s}.footer-link:hover{color:var(--color-text-light)}.footer-text{font-family:var(--font-mono);color:var(--color-text-light);font-size:.65rem}.footer-stamp{font-family:var(--font-serif);font-size:.9rem}.fade-in{opacity:0;animation:.7s forwards fadeIn;transform:translateY(16px)}.fade-in-delay-1{animation-delay:.1s}.fade-in-delay-2{animation-delay:.2s}.fade-in-delay-3{animation-delay:.3s}.fade-in-delay-4{animation-delay:.4s}.fade-in-delay-5{animation-delay:.5s}@keyframes fadeIn{to{opacity:1;transform:translateY(0)}}.stagger-children>*{opacity:0;animation:.5s forwards fadeIn;transform:translateY(12px)}.stagger-children>:first-child{animation-delay:50ms}.stagger-children>:nth-child(2){animation-delay:.1s}.stagger-children>:nth-child(3){animation-delay:.15s}.stagger-children>:nth-child(4){animation-delay:.2s}.stagger-children>:nth-child(5){animation-delay:.25s}.stagger-children>:nth-child(6){animation-delay:.3s}.stagger-children>:nth-child(7){animation-delay:.35s}.stagger-children>:nth-child(8){animation-delay:.4s}@media (width<=900px){.nav-links,.nav-center{display:none}.nav-menu-btn{display:flex}.archive-item{grid-template-columns:40px 1fr 80px;gap:1rem}.archive-item-cat{display:none}.work-grid{grid-template-columns:1fr;gap:3rem}.work-card:nth-child(2n){margin-top:0}.playground-grid{grid-template-columns:repeat(6,1fr)}.playground-item:first-child{grid-column:1/4}.playground-item:nth-child(2){grid-column:4/7;margin-top:0}.playground-item:nth-child(3){grid-column:1/4;margin-top:0}.playground-item:nth-child(4){grid-column:4/7}.playground-item:nth-child(5){grid-column:1/4;margin-top:0}.playground-item:nth-child(6){grid-column:4/7;margin-top:0}.playground-item:nth-child(7){grid-column:1/4}.playground-item:nth-child(8){grid-column:4/7;margin-top:0}.about-hero{grid-template-columns:1fr;gap:2rem}.about-hero-portrait{max-height:400px}.about-details{grid-template-columns:1fr;gap:2rem}.about-exp-item{grid-template-columns:1fr;gap:.5rem}.about-exp-location{text-align:left}.home-intro{grid-template-columns:1fr;gap:1.5rem}.footer-inner{grid-template-columns:repeat(2,1fr);gap:2rem}.footer-col-right{text-align:left}.home-hero-meta{display:none}}@media (width<=600px){.playground-grid{grid-template-columns:1fr 1fr}.playground-item:nth-child(n){grid-column:auto;margin-top:0}}
