:root{--bg: #fafaf8;--text: #1a1a1a;--text-secondary: #6b6b6b;--text-tertiary: #999999;--line: #e8e8e6;--line-light: #f0f0ee;--tag-bg: #f5f5f3;--tag-text: #555555;--card-bg: #ffffff;--card-border: #ebebeb;--card-hover-border: #cccccc;--serif: "Playfair Display", Georgia, serif;--sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--duration-hover: .3s}html[data-theme=dark]{--bg: #0e0e0e;--text: #e8e8e8;--text-secondary: #aaaaaa;--text-tertiary: #666666;--line: #2a2a2a;--line-light: #1e1e1e;--tag-bg: #1e1e1e;--tag-text: #aaaaaa;--card-bg: #161616;--card-border: #2a2a2a;--card-hover-border: #444444}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-weight:400;line-height:1.6;min-height:100vh}html.theme-changing *,html.theme-changing *:before,html.theme-changing *:after{transition:none!important}::selection{background:var(--text);color:var(--bg)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%;height:auto}h1,h2,h3,h4{text-wrap:balance}main:focus{outline:none}ul,ol{list-style:none}.container{max-width:1200px;margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem)}.container--narrow{max-width:900px}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;padding:0 clamp(1.25rem,4vw,3rem);transition:background-color .4s ease,backdrop-filter .4s ease}.site-header.scrolled{background:#fafaf8eb;backdrop-filter:blur(10px)}html[data-theme=dark] .site-header.scrolled{background:#0e0e0eeb}.header-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:72px;border-bottom:1px solid transparent;transition:border-color .4s ease}.site-header.scrolled .header-inner{border-bottom-color:var(--line)}.header-left{display:flex;align-items:center;gap:2rem}.header-name{font-family:var(--serif);font-size:1.1rem;font-weight:400;letter-spacing:-.01em}.header-nav{display:flex;gap:1.5rem}.header-nav a{font-size:.85rem;font-weight:500;color:var(--text-secondary);letter-spacing:.02em;transition:color var(--duration-hover) ease;position:relative}.header-nav a:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--text);transition:width var(--duration-hover) var(--ease-out-expo)}.header-nav a:hover,.header-nav a[aria-current=page]{color:var(--text)}.header-nav a:hover:after,.header-nav a[aria-current=page]:after{width:100%}.header-right{display:flex;align-items:center;gap:.5rem}.theme-btn{appearance:none;background:none;border:1px solid var(--line);border-radius:999px;color:var(--text-secondary);cursor:pointer;font:inherit;font-size:.75rem;font-weight:500;letter-spacing:.04em;padding:.4rem .85rem;text-transform:uppercase;transition:color var(--duration-hover) ease,border-color var(--duration-hover) ease}.theme-btn:hover{color:var(--text);border-color:var(--text-secondary)}.hero{display:flex;flex-direction:column;justify-content:center;min-height:92vh;padding-top:140px;padding-bottom:80px;position:relative}.hero-label{font-size:.75rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:1.5rem}.hero-title{font-family:var(--serif);font-size:clamp(2.8rem,7vw,5.5rem);font-weight:400;line-height:1.08;letter-spacing:-.03em;margin-bottom:2rem;max-width:14ch}.hero-title em{font-style:italic;font-weight:400}.hero-intro{font-size:clamp(1.05rem,2vw,1.25rem);font-weight:300;line-height:1.7;color:var(--text-secondary);max-width:48ch;margin-bottom:2.5rem}.hero-meta{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;font-size:.85rem;color:var(--text-tertiary)}.hero-meta a{transition:color var(--duration-hover) ease}.hero-meta a:hover{color:var(--text)}.hero-meta-divider{width:1px;height:14px;background:var(--line)}@media(max-width:600px){.hero-meta{flex-direction:column;align-items:flex-start;gap:.5rem}.hero-meta-divider{display:none}}.hero-actions{display:flex;gap:1rem;margin-top:2.5rem;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;letter-spacing:.02em;padding:.75rem 1.5rem;border-radius:999px;transition:all var(--duration-hover) var(--ease-out-expo);cursor:pointer;border:none}.btn--primary{background:var(--text);color:var(--bg)}.btn--primary:hover{opacity:.85;transform:translateY(-1px)}.btn--outline{background:transparent;border:1px solid var(--line);color:var(--text-secondary)}.btn--outline:hover{border-color:var(--text-secondary);color:var(--text)}.scroll-indicator{position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;color:var(--text-tertiary);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;opacity:0;animation:fade-in-up .7s var(--ease-out-expo) 1s forwards}.scroll-line{width:1px;height:32px;background:var(--line);position:relative;overflow:hidden}.scroll-line:after{content:"";position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--text-secondary);animation:scroll-pulse 2s ease-in-out infinite}@keyframes scroll-pulse{0%{transform:translateY(0)}to{transform:translateY(200%)}}.section{padding:clamp(4rem,10vw,8rem) 0}.section--border{border-top:1px solid var(--line)}.section-label{font-size:.7rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.75rem}.section-title{font-family:var(--serif);font-size:clamp(1.8rem,4vw,2.8rem);font-weight:400;letter-spacing:-.02em;line-height:1.15;margin-bottom:1rem}.section-intro{font-size:1.05rem;font-weight:300;line-height:1.7;color:var(--text-secondary);max-width:55ch;margin-bottom:3rem}.reveal{opacity:0;transform:translate3d(0,10px,0);transition:opacity .7s var(--ease-out-expo),transform .7s var(--ease-out-expo)}.reveal.visible{opacity:1;transform:translateZ(0)}@media(prefers-reduced-motion:reduce){.reveal{transform:none;transition:opacity .2s ease}}.reveal-stagger>.reveal:nth-child(1){transition-delay:0s}.reveal-stagger>.reveal:nth-child(2){transition-delay:.1s}.reveal-stagger>.reveal:nth-child(3){transition-delay:.2s}.reveal-stagger>.reveal:nth-child(4){transition-delay:.3s}.reveal-stagger>.reveal:nth-child(5){transition-delay:.4s}.reveal-stagger>.reveal:nth-child(6){transition-delay:.5s}.skills-section{display:grid;grid-template-columns:200px 1fr;gap:4rem}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem}.skill-group h3{font-family:var(--sans);font-size:.75rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.skill-group ul{display:flex;flex-direction:column;gap:.5rem}.skill-group li{font-size:.9rem;color:var(--text-secondary);transition:color var(--duration-hover) ease}.skill-group:hover li{color:var(--text)}.experience-list{display:flex;flex-direction:column}.experience-item{display:grid;grid-template-columns:200px 1fr;gap:4rem;padding:2.5rem 0;border-top:1px solid var(--line)}.experience-period{font-size:.85rem;color:var(--text-tertiary);font-weight:500;padding-top:.15rem}.experience-content h3{font-family:var(--serif);font-size:1.25rem;font-weight:400;margin-bottom:.25rem}.experience-company{font-size:.9rem;color:var(--text-secondary);margin-bottom:1rem}.experience-highlights{display:flex;flex-direction:column;gap:.4rem;padding-left:0}.experience-highlights li{font-size:.9rem;color:var(--text-secondary);line-height:1.6;padding-left:1rem;position:relative}.experience-highlights li:before{content:"";position:absolute;left:0;top:.65em;width:4px;height:1px;background:var(--text-tertiary)}.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem}.project-card{position:relative;display:block;border-radius:12px;overflow:hidden;background:var(--card-bg);border:1px solid var(--card-border);transition:border-color var(--duration-hover) ease,transform var(--duration-hover) var(--ease-out-expo)}.project-card:hover{border-color:var(--card-hover-border);transform:translateY(-3px)}.project-card-image{aspect-ratio:16 / 10;overflow:hidden}.project-card-image img{width:100%;height:100%;object-fit:cover;object-position:center top;opacity:0;transition:opacity .5s ease}.project-card-image img.is-loaded{opacity:1}.project-card-content{padding:1.25rem 1.5rem 1.5rem}.project-card-year{font-size:.7rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.5rem}.project-card-title{font-family:var(--serif);font-size:1.3rem;font-weight:400;margin-bottom:.4rem}.project-card-summary{font-size:.88rem;color:var(--text-secondary);line-height:1.6;margin-bottom:1rem}.project-card-tags{display:flex;flex-wrap:wrap;gap:.4rem}.project-card-tags li{font-size:.72rem;font-weight:500;color:var(--tag-text);background:var(--tag-bg);padding:.2rem .6rem;border-radius:999px}.project-card-arrow{position:absolute;top:1.25rem;right:1.25rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg);border-radius:999px;opacity:0;transform:translate(-4px,4px);transition:opacity var(--duration-hover) ease,transform var(--duration-hover) var(--ease-out-expo)}.project-card:hover .project-card-arrow{opacity:1;transform:translate(0)}.project-card-arrow svg{width:14px;height:14px}.project-featured{grid-column:1 / -1}.project-featured .project-card-image{aspect-ratio:21 / 9}.cta-section{text-align:center;padding:clamp(5rem,12vw,10rem) 0}.cta-label{font-size:.7rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:1.5rem}.cta-title{font-family:var(--serif);font-size:clamp(2rem,5vw,3.5rem);font-weight:400;letter-spacing:-.02em;line-height:1.15;margin-bottom:1rem}.cta-body{font-size:1.05rem;font-weight:300;color:var(--text-secondary);margin-bottom:2.5rem;max-width:40ch;margin-left:auto;margin-right:auto}.cta-actions{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.site-footer{border-top:1px solid var(--line);padding:2rem 0;font-size:.8rem;color:var(--text-tertiary)}.site-footer-inner{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.site-footer-copy{margin:0}.site-footer-nav{display:flex;gap:1.5rem}.site-footer-nav a{transition:color var(--duration-hover) ease}.site-footer-nav a:hover{color:var(--text)}@media(max-width:480px){.site-footer-inner{flex-direction:column;text-align:center}}.project-detail{padding-top:120px;padding-bottom:4rem}.btn-center{text-align:center;margin-top:3rem}.project-back{display:inline-flex;align-items:center;gap:.5rem;font-size:.85rem;font-weight:500;color:var(--text-tertiary);margin-bottom:2rem;transition:color var(--duration-hover) ease}.project-back:hover{color:var(--text)}.project-back svg{width:16px;height:16px;transition:transform var(--duration-hover) var(--ease-out-expo)}.project-back:hover svg{transform:translate(-3px)}.project-detail-header{margin-bottom:3rem;max-width:700px}.project-detail-year{font-size:.7rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:1rem}.project-detail-title{font-family:var(--serif);font-size:clamp(2.5rem,5vw,4rem);font-weight:400;letter-spacing:-.03em;line-height:1.1;margin-bottom:1rem}.project-detail-summary{font-size:1.1rem;font-weight:300;line-height:1.7;color:var(--text-secondary);max-width:55ch;margin-bottom:1.5rem}.project-detail-meta{display:flex;gap:2rem;flex-wrap:wrap;font-size:.85rem;color:var(--text-secondary)}.project-detail-meta strong{font-weight:500;color:var(--text)}.project-detail-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.5rem}.project-detail-tags li{font-size:.78rem;font-weight:500;color:var(--text-secondary)}.project-detail-tags li+li:before{content:"/ ";color:var(--text-tertiary);margin-right:0}.case-study-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;padding:2rem 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:3rem}.case-study-bar-item h3{font-size:.7rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.5rem}.case-study-bar-item p{font-size:.92rem;color:var(--text-secondary);line-height:1.6}.project-gallery{display:flex;flex-direction:column;gap:1.5rem;margin-bottom:3rem}.gallery-image{border-radius:12px;overflow:hidden;border:1px solid var(--line)}.gallery-image img{width:100%;opacity:0;transition:opacity .5s ease}.gallery-image img.is-loaded{opacity:1}.case-study-detail{display:grid;grid-template-columns:repeat(2,1fr);gap:2rem 4rem;margin-bottom:3rem}.case-study-detail-item h3{font-size:.7rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.75rem}.case-study-detail-item ul{display:flex;flex-direction:column;gap:.4rem}.case-study-detail-item li{font-size:.9rem;color:var(--text-secondary);line-height:1.6;padding-left:1rem;position:relative}.case-study-detail-item li:before{content:"";position:absolute;left:0;top:.65em;width:4px;height:1px;background:var(--text-tertiary)}.case-study-detail-full{grid-column:1 / -1}.prose{max-width:65ch;padding-top:2rem;border-top:1px solid var(--line)}.prose p,.prose ul,.prose ol{font-size:.95rem;color:var(--text-secondary);line-height:1.8}.prose p+p{margin-top:1rem}.prose h2,.prose h3{font-family:var(--serif);font-weight:400;margin-top:2rem;margin-bottom:.5rem}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:.15em;transition:text-decoration-color var(--duration-hover) ease}.prose a:hover{text-decoration-color:var(--text)}.prose ul,.prose ol{padding-left:1.2rem}.prose li+li{margin-top:.4rem}.project-live-link{display:inline-flex;align-items:center;gap:.5rem;margin-top:2rem;font-size:.9rem;font-weight:500;color:var(--text);padding-bottom:2px;border-bottom:1px solid var(--line);transition:border-color var(--duration-hover) ease}.project-live-link:hover{border-color:var(--text)}.breadcrumbs{display:flex;gap:.5rem;font-size:.8rem;color:var(--text-tertiary);margin-bottom:2rem}.breadcrumbs a{transition:color var(--duration-hover) ease}.breadcrumbs a:hover{color:var(--text)}.breadcrumbs span{pointer-events:none}.projects-page-header{max-width:500px;margin-bottom:3rem}.lightbox{position:fixed;inset:0;z-index:200;background:#000000eb;display:none;place-items:center;padding:2rem}.lightbox[open]{display:grid}.lightbox::backdrop{background:transparent}.lightbox-inner{position:relative;max-width:1400px;max-height:90vh;width:100%}.lightbox-close{position:absolute;top:-3rem;right:0;background:none;border:none;color:#ffffffb3;font-size:.8rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:color .2s ease}.lightbox-close:hover{color:#fff}.lightbox-scroll{max-height:85vh;overflow-y:auto;border-radius:8px}.lightbox-image{width:100%;display:block}.lightbox-caption{color:#ffffff80;font-size:.85rem;margin-top:1rem;text-align:center}.lightbox-counter{color:#fff6;font-size:.8rem;position:absolute;top:-3rem;left:0}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:999px;color:#fff;width:40px;height:40px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1rem;transition:background .2s ease}.lightbox-nav:hover{background:#fff3}.lightbox-prev{left:-60px}.lightbox-next{right:-60px}.lightbox-nav[hidden]{display:none}@keyframes fade-in-up{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.page-transition{opacity:0;animation:page-enter .5s ease .05s forwards}@keyframes page-enter{to{opacity:1}}.skip-link{position:fixed;top:-100px;left:1rem;z-index:200;background:var(--text);color:var(--bg);padding:.5rem 1rem;border-radius:4px;font-size:.85rem;font-weight:500}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid var(--text);outline-offset:3px}@media(max-width:900px){.skills-section{grid-template-columns:1fr;gap:2rem}.skills-grid{grid-template-columns:repeat(2,1fr)}.experience-item{grid-template-columns:1fr;gap:.25rem}.projects-grid{grid-template-columns:1fr}.project-featured{grid-column:auto}.project-featured .project-card-image{aspect-ratio:16 / 10}.case-study-bar{grid-template-columns:1fr;gap:1.5rem}.case-study-detail{grid-template-columns:1fr}.case-study-detail-full{grid-column:auto}}@media(max-width:640px){.skills-grid{grid-template-columns:1fr}.hero{min-height:auto;padding-top:120px;padding-bottom:60px}.scroll-indicator{display:none}.header-nav{gap:1rem}.lightbox-prev{left:.5rem}.lightbox-next{right:.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}html{scroll-behavior:auto}}.projects-page{padding-top:120px}.projects-page-title{font-family:var(--serif);font-size:clamp(2.2rem,5vw,3.5rem);font-weight:400;letter-spacing:-.02em;line-height:1.15;margin-bottom:1rem}.not-found{min-height:80vh;display:flex;flex-direction:column;justify-content:center;padding-top:120px;padding-bottom:80px;max-width:700px}.not-found-label{font-family:var(--serif);font-size:clamp(3rem,8vw,5rem);font-style:italic;color:var(--text-tertiary);line-height:1;margin-bottom:1.5rem}.not-found-title{font-family:var(--serif);font-size:clamp(2.2rem,5vw,3.5rem);font-weight:400;line-height:1.1;letter-spacing:-.02em;margin-bottom:1.5rem}.not-found-title em{font-style:italic}.not-found-body{font-size:1.05rem;font-weight:300;color:var(--text-secondary);line-height:1.7;margin-bottom:2.5rem;max-width:50ch}.not-found-actions{display:flex;gap:1rem;flex-wrap:wrap}
