﻿:root{--grey-950: #0a0a0a;--grey-900: #141414;--grey-800: #1f1f1f;--grey-700: #2e2e2e;--grey-600: #4a4a4a;--grey-500: #6b6b6b;--grey-400: #8a8a8a;--grey-300: #a3a3a3;--grey-200: #c4c4c4;--grey-100: #e0e0e0;--grey-50: #f5f5f5;--bg: var(--grey-950);--bg-surface: var(--grey-900);--bg-surface-hover: var(--grey-800);--text-primary: var(--grey-50);--text-secondary: var(--grey-400);--text-muted: var(--grey-500);--border: var(--grey-800);--border-hover: var(--grey-600);--nav-bg-rgb: 10, 10, 10;--accent: #b5182b;--accent-hover: #9a1423;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "Libre Baskerville", Georgia, "Times New Roman", serif;--space-xs: 0.25rem;--space-sm: 0.5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--space-2xl: 5rem;--space-3xl: 8rem;--max-width: 72rem;--content-width: 52rem}[data-theme=light]{--nav-bg-rgb: 245, 245, 245;--bg: var(--grey-50);--bg-surface: #ffffff;--bg-surface-hover: var(--grey-100);--text-primary: var(--grey-950);--text-secondary: var(--grey-600);--text-muted: var(--grey-500);--border: var(--grey-200);--border-hover: var(--grey-400);--accent: #c41a30;--accent-hover: #a8162a}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100vh;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,picture,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}body{font-family:var(--font-sans);font-size:1.125rem;color:var(--text-primary);background-color:var(--bg)}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:700;line-height:1.2;color:var(--text-primary)}h1{font-size:clamp(2.5rem,5vw,4rem);letter-spacing:-.02em}h2{font-size:clamp(1.75rem,3vw,2.5rem);letter-spacing:-.01em}h3{font-size:clamp(1.25rem,2vw,1.5rem)}p{max-width:65ch;line-height:1.7}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.prose a{text-decoration:underline;text-underline-offset:.15em;text-decoration-thickness:1px;text-decoration-color:var(--text-muted)}.prose a:hover{text-decoration-color:var(--text-primary)}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-lg)}@media (min-width: 768px){.container{padding:0 var(--space-xl)}}.section{padding:var(--space-2xl) 0}@media (min-width: 768px){.section{padding:var(--space-3xl) 0}}.section-header{margin-bottom:var(--space-xl)}@media (min-width: 768px){.section-header{margin-bottom:var(--space-2xl)}}.section-header h2::after{content:"";display:block;width:2rem;height:2px;background:var(--accent);margin-top:var(--space-sm)}.section-intro{font-family:var(--font-serif);font-size:clamp(1rem,1.5vw,1.15rem);color:var(--text-secondary);line-height:1.7;margin-top:var(--space-md);max-width:48ch}.grid-2{display:grid;grid-template-columns:1fr;gap:var(--space-lg)}@media (min-width: 768px){.grid-2{grid-template-columns:repeat(2, 1fr);gap:var(--space-xl)}}.grid-3{display:grid;grid-template-columns:1fr;gap:var(--space-lg)}@media (min-width: 640px){.grid-3{grid-template-columns:repeat(2, 1fr)}}@media (min-width: 1024px){.grid-3{grid-template-columns:repeat(3, 1fr);gap:var(--space-xl)}}.site-nav{position:fixed;top:0;left:0;right:0;z-index:90;opacity:0;pointer-events:none;transition:opacity .3s ease,background-color .3s ease}.site-nav.is-visible{opacity:1;pointer-events:auto}.site-nav.is-scrolled{background:rgba(var(--nav-bg-rgb), .85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.nav-inner{display:flex;align-items:center;justify-content:space-between;padding-top:var(--space-md);padding-bottom:var(--space-md)}.nav-name{font-family:var(--font-sans);font-size:1rem;font-weight:700;color:var(--text-primary);text-decoration:none;letter-spacing:.04em;transition:color .2s ease}.nav-name:hover{color:var(--accent)}.nav-links{display:flex;gap:var(--space-lg)}.nav-link{font-family:var(--font-sans);font-size:.875rem;color:var(--text-secondary);text-decoration:none;padding:var(--space-xs) 0;transition:color .2s ease;position:relative}.nav-link::after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transition:transform .2s ease}.nav-link:hover{color:var(--text-primary)}.nav-link.is-active{color:var(--accent)}.nav-link.is-active::after{transform:scaleX(1)}@media (max-width: 480px){.nav-link{font-size:.75rem}.nav-links{gap:var(--space-md)}}.theme-toggle{position:fixed;bottom:var(--space-lg);right:var(--space-lg);z-index:100;display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--bg-surface);border:1px solid var(--border);box-shadow:0 2px 8px rgba(0,0,0,.2);transition:background-color .3s ease,border-color .3s ease,transform .3s ease}.theme-toggle:hover{background:var(--bg-surface-hover);border-color:var(--border-hover);transform:rotate(30deg)}.theme-toggle:active{transform:rotate(30deg) scale(.92)}.theme-toggle svg{width:1.25rem;height:1.25rem;fill:var(--text-primary)}.hero{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:var(--space-xl) 0}.hero.is-entered .hero-name,.hero.is-entered .hero-pronunciation,.hero.is-entered .hero-tagline,.hero.is-entered .hero-narrative,.hero.is-entered .hero-meta{opacity:calc(1 - var(--hero-progress, 0));transform:translateY(calc(var(--hero-progress, 0)*-2rem))}.hero-name{margin-bottom:var(--space-lg)}.hero-name::after{content:"";display:block;width:2rem;height:2px;background:var(--accent);margin-top:var(--space-sm)}.hero-pronunciation{font-family:var(--font-sans);font-size:.8rem;color:var(--text-muted);letter-spacing:.03em;margin-top:calc(-1*var(--space-md));margin-bottom:var(--space-lg)}.hero-pronunciation span{font-style:italic}.hero-tagline{font-family:var(--font-serif);font-size:clamp(1.25rem,2.5vw,1.75rem);color:var(--text-secondary);margin-bottom:var(--space-xl);max-width:40ch;line-height:1.5}.hero-narrative{margin-bottom:var(--space-xl);max-width:48ch}.hero-narrative p{font-family:var(--font-serif);font-size:clamp(1.05rem,1.5vw,1.25rem);color:var(--text-secondary);line-height:1.7;margin-bottom:var(--space-lg)}.hero-narrative p:last-child{margin-bottom:0}.hero-meta{font-family:var(--font-sans);font-size:.875rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.hero-meta span::after{content:" · "}.hero-meta span:last-child::after{content:""}.projects-list{max-width:var(--content-width)}.project-story{margin-bottom:var(--space-2xl)}.project-story:last-child{margin-bottom:0}.project-problem{font-family:var(--font-serif);font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--text-secondary);font-style:italic;line-height:1.7;max-width:52ch;margin-bottom:var(--space-lg)}.project-story-body{padding-left:var(--space-lg);border-left:2px solid var(--accent)}.project-name{font-family:var(--font-sans);font-size:1.25rem;font-weight:700;margin-bottom:var(--space-sm)}.project-description{font-family:var(--font-sans);color:var(--text-secondary);font-size:.95rem;line-height:1.6;max-width:52ch;margin-bottom:var(--space-md)}.project-meta{display:flex;justify-content:space-between;align-items:center}.project-lang{font-family:var(--font-sans);font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.project-link{font-family:var(--font-sans);font-size:.875rem;color:var(--text-muted);text-decoration:none;transition:color .2s ease}.project-link:hover{color:var(--accent)}.project-link:hover .project-arrow{transform:translateX(4px);color:var(--accent)}.project-arrow{display:inline-block;transition:transform .2s ease,color .2s ease}.timeline{position:relative;padding-left:var(--space-xl)}.timeline::before{content:"";position:absolute;left:0;top:.5rem;bottom:.5rem;width:1px;background:var(--border)}.timeline-item{position:relative;padding-bottom:var(--space-xl);transition:transform .2s ease}.timeline-item:last-child{padding-bottom:0}.timeline-item::before{content:"";position:absolute;left:calc(-1*var(--space-xl));top:.6rem;width:7px;height:7px;border-radius:50%;background:var(--text-muted);border:2px solid var(--bg);transition:background-color .2s ease,transform .2s ease,box-shadow .2s ease}.timeline-item.has-details{cursor:pointer}.timeline-item.has-details:hover::before{background:var(--accent);box-shadow:0 0 0 3px rgba(181,24,43,.2);animation:accent-pulse 2.5s ease-in-out infinite}.timeline-item.has-details:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px}.timeline-item-inner{transform-origin:left center;transition:transform .25s ease}.timeline-item.has-details:hover .timeline-item-inner{transform:scale(1.02)}@keyframes accent-pulse{0%, 100%{box-shadow:0 0 0 3px rgba(181,24,43,.2);transform:scale(1)}50%{box-shadow:0 0 0 6px rgba(181,24,43,.1);transform:scale(1.2)}}.timeline-date{font-family:var(--font-sans);font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-xs)}.timeline-role{font-family:var(--font-sans);font-size:1.125rem;font-weight:700;margin-bottom:.125rem}.timeline-company{font-family:var(--font-sans);font-size:.95rem;color:var(--text-secondary);margin-bottom:var(--space-sm)}.timeline-location{color:var(--text-muted);font-weight:400}.timeline-summary{font-family:var(--font-sans);font-size:.9rem;color:var(--text-secondary);line-height:1.6}.timeline-expand-hint{display:inline-flex;align-items:center;gap:.35rem;margin-top:var(--space-sm);font-family:var(--font-sans);font-size:.8rem;color:var(--text-muted);transition:color .2s ease,transform .2s ease}.timeline-item:hover .timeline-expand-hint{color:var(--text-secondary)}.timeline-item.is-open .timeline-expand-hint .timeline-expand-text{display:none}.timeline-expand-icon{display:inline-block;font-size:.9rem;font-weight:500;transition:transform .2s ease;line-height:1}.timeline-item.is-open .timeline-expand-icon{transform:rotate(45deg)}.timeline-details{max-height:0;overflow:hidden;transition:max-height .35s ease,opacity .3s ease;opacity:0}.timeline-item.is-open .timeline-details{max-height:30rem;opacity:1}.timeline-achievements{padding-top:var(--space-md);padding-left:var(--space-md);list-style:none}.timeline-achievements li{position:relative;font-family:var(--font-sans);font-size:.85rem;color:var(--text-secondary);line-height:1.6;padding-bottom:var(--space-sm);padding-left:var(--space-md)}.timeline-achievements li::before{content:"–";position:absolute;left:0;color:var(--text-muted)}.timeline-achievements li:last-child{padding-bottom:0}.timeline-sub-role{padding-top:var(--space-md)}.timeline-sub-role+.timeline-sub-role{margin-top:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--border)}.timeline-sub-role .timeline-achievements{padding-top:var(--space-sm)}.timeline-sub-role-title{font-family:var(--font-sans);font-size:1rem;font-weight:700;margin-bottom:.125rem}.timeline-sub-role-date{font-family:var(--font-sans);font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-xs)}.side-projects-header{font-family:var(--font-sans);font-size:1.15rem;font-weight:700;color:var(--text-secondary);margin-top:var(--space-2xl);margin-bottom:var(--space-lg)}.timeline--side-projects .timeline-item::before{background:rgba(0,0,0,0);border:2px solid var(--text-muted)}.timeline--side-projects .timeline-item.has-details:hover::before{background:rgba(0,0,0,0);border-color:var(--accent)}.timeline--side-projects .timeline-date{font-size:.75rem}.timeline--side-projects .timeline-role{font-size:1rem}.timeline--side-projects .timeline-company{font-size:.875rem}.timeline--side-projects .timeline-summary{font-size:.85rem}.timeline--side-projects .timeline-achievements li{font-size:.8rem}.beyond-work-intro{max-width:var(--content-width);margin-bottom:var(--space-xl)}.beyond-work-intro p{font-family:var(--font-serif);font-size:clamp(1.05rem,1.5vw,1.15rem);color:var(--text-secondary);line-height:1.7}.gallery-row{display:grid;grid-template-columns:repeat(3, 1fr);gap:var(--space-sm);overflow:visible}@media (min-width: 768px){.gallery-row{display:flex;justify-content:center;align-items:end;gap:.5rem;padding-top:9rem}}.gallery-thumb{aspect-ratio:3/2;border:2px solid rgba(0,0,0,0);border-radius:2px;padding:0;background:none;cursor:pointer;overflow:hidden;position:relative;z-index:1;transform:scale(1);transform-origin:center bottom;transition:border-color .2s ease,transform .25s ease,z-index 0s}@media (min-width: 768px){.gallery-thumb{flex:1 1 0;max-width:110px}}.gallery-thumb:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gallery-thumb img{width:100%;height:100%;object-fit:cover;display:block}@media (hover: hover) and (min-width: 768px){.gallery-thumb:hover{border-color:var(--accent);transform:scale(3);z-index:10}.gallery-thumb:hover+.gallery-thumb{transform:scale(1.75);z-index:5}.gallery-thumb:has(+.gallery-thumb:hover){transform:scale(1.75);z-index:5}.gallery-thumb:hover+.gallery-thumb+.gallery-thumb{transform:scale(1.35);z-index:3}.gallery-thumb:has(+.gallery-thumb+.gallery-thumb:hover){transform:scale(1.35);z-index:3}}.gallery-copyright{font-family:var(--font-sans);font-size:.75rem;color:var(--text-muted);text-align:right;max-width:none;margin-top:var(--space-md)}.lightbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;flex-direction:column}.lightbox[hidden]{display:none}.lightbox-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.92)}.lightbox-content{position:relative;z-index:1;display:flex;align-items:center;justify-content:center}.lightbox-img{max-width:90vw;max-height:80vh;object-fit:contain;transform:scale(.95);opacity:0;transition:transform .3s ease,opacity .3s ease}.lightbox.is-active .lightbox-img{transform:scale(1);opacity:1}.lightbox-close{position:absolute;top:var(--space-lg);right:var(--space-lg);z-index:2;background:none;border:none;color:#fff;font-size:2rem;cursor:pointer;padding:var(--space-sm);line-height:1;opacity:.7;transition:opacity .2s ease}.lightbox-close:hover{opacity:1}.lightbox-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lightbox-prev,.lightbox-next{position:absolute;top:50%;transform:translateY(-50%);z-index:2;background:none;border:none;color:#fff;font-size:2.5rem;cursor:pointer;padding:var(--space-md);line-height:1;opacity:.7;transition:opacity .2s ease}.lightbox-prev:hover,.lightbox-next:hover{opacity:1}.lightbox-prev:focus-visible,.lightbox-next:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lightbox-prev{left:var(--space-md)}.lightbox-next{right:var(--space-md)}.lightbox-counter{position:relative;z-index:1;color:rgba(255,255,255,.6);font-family:var(--font-sans);font-size:.8rem;margin-top:var(--space-md);text-align:center}@media (prefers-reduced-motion: reduce){.gallery-thumb{transition:none}.lightbox-img{transition:none}}.contact-links{display:flex;flex-wrap:wrap;gap:var(--space-lg);align-items:center}.contact-link{display:inline-flex;align-items:center;gap:var(--space-sm);font-family:var(--font-sans);font-size:1rem;color:var(--text-secondary);text-decoration:none;padding:var(--space-sm) 0;transition:color .2s ease,transform .2s ease}.contact-link:hover{color:var(--accent);transform:translateX(4px)}.contact-link svg{width:1.25rem;height:1.25rem;fill:currentColor;transition:transform .2s ease}.contact-link:hover svg{transform:scale(1.15)}.footer-content{padding:var(--space-2xl) 0 var(--space-xl);border-top:1px solid var(--border);font-family:var(--font-sans);font-size:.875rem}.footer-content a{color:var(--text-secondary);text-decoration:none;transition:color .2s ease}.footer-content a:hover{color:var(--accent)}body,.theme-toggle,.contact-link{transition:background-color .3s ease,color .3s ease,border-color .3s ease}.reveal{opacity:0;transform:translateY(1.5rem);transition:opacity .6s ease,transform .6s ease}.reveal.is-visible{opacity:1;transform:translateY(0)}.reveal-stagger .reveal-child{opacity:0;transform:translateY(1rem);transition:opacity .5s ease,transform .5s ease}.reveal-stagger.is-visible .reveal-child{opacity:1;transform:translateY(0)}.reveal-stagger.is-visible .reveal-child:nth-child(1){transition-delay:.07s}.reveal-stagger.is-visible .reveal-child:nth-child(2){transition-delay:.14s}.reveal-stagger.is-visible .reveal-child:nth-child(3){transition-delay:.21s}.reveal-stagger.is-visible .reveal-child:nth-child(4){transition-delay:.28s}.reveal-stagger.is-visible .reveal-child:nth-child(5){transition-delay:.35s}.reveal-stagger.is-visible .reveal-child:nth-child(6){transition-delay:.42s}.reveal-stagger.is-visible .reveal-child:nth-child(7){transition-delay:.49s}.reveal-stagger.is-visible .reveal-child:nth-child(8){transition-delay:.56s}.reveal-stagger.is-visible .reveal-child:nth-child(9){transition-delay:.63s}.reveal-stagger.is-visible .reveal-child:nth-child(10){transition-delay:.7s}.hero-name{opacity:0;animation:hero-fade-in 1.4s cubic-bezier(.16, 1, .3, 1) forwards}.hero-tagline{opacity:0;animation:hero-fade-in 1.4s cubic-bezier(.16, 1, .3, 1) forwards;animation-delay:.25s}.hero-narrative p{opacity:0;animation:hero-fade-in 1.4s cubic-bezier(.16, 1, .3, 1) forwards}.hero-narrative p:nth-child(1){animation-delay:.5s}.hero-narrative p:nth-child(2){animation-delay:.75s}.hero-narrative p:nth-child(3){animation-delay:1s}.hero-meta{opacity:0;animation:hero-fade-in 1s cubic-bezier(.16, 1, .3, 1) forwards;animation-delay:1.8s}@keyframes hero-fade-in{from{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}.hero.is-entered .hero-name,.hero.is-entered .hero-tagline,.hero.is-entered .hero-meta{animation:none}.hero.is-entered .hero-narrative p{animation:none;opacity:1}.section-header h2{transform:scale(1.05);transition:transform .6s ease}.section-header.is-visible h2{transform:scale(1)}@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.01ms !important;animation-delay:0ms !important;transition-duration:.01ms !important}.reveal{opacity:1;transform:none}.reveal-stagger .reveal-child{opacity:1;transform:none}.hero-name,.hero-tagline,.hero-meta{opacity:1;transform:none}.hero-narrative p{opacity:1;transform:none}.hero .hero-name,.hero .hero-tagline,.hero .hero-narrative,.hero .hero-meta{opacity:1 !important;transform:none !important}.section-header h2{transform:none}}