*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none}body{-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6}img,picture,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}h1,h2,h3,h4{text-wrap:balance;line-height:1.2}p{text-wrap:pretty}a{color:inherit;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto}ul[role=list],ol[role=list]{list-style:none}:target{scroll-margin-top:5rem}:root{--color-bg:#121212;--color-surface:#1e1e1e;--color-text:#e0e0e0;--color-text-muted:#9e9e9e;--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-accent:#2a2a2a;--color-border:#333;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs:clamp(.75rem, .7rem + .25vw, .875rem);--text-sm:clamp(.875rem, .8rem + .375vw, 1rem);--text-base:clamp(1rem, .9rem + .5vw, 1.125rem);--text-lg:clamp(1.125rem, 1rem + .625vw, 1.25rem);--text-xl:clamp(1.25rem, 1rem + 1.25vw, 1.75rem);--text-2xl:clamp(1.5rem, 1rem + 2.5vw, 2.5rem);--text-3xl:clamp(2rem, 1.25rem + 3.75vw, 3.5rem);--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--max-width:72rem;--content-width:48rem;--nav-height:4rem;--transition-fast:.15s ease;--transition-base:.25s ease;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.75rem}:root[data-theme=light]{--color-bg:#fafafa;--color-surface:#fff;--color-text:#1a1a2e;--color-text-muted:#556;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-accent:#e2e8f0;--color-border:#d1d5db}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background-color:var(--color-bg)}section,footer{padding:var(--space-4xl) var(--space-lg)}section>*,footer>*{max-width:var(--content-width);margin-inline:auto}section h2{font-size:var(--text-2xl);margin-bottom:var(--space-xl)}#hero{min-height:80vh;padding:var(--space-4xl) var(--space-lg);text-align:center;justify-content:center;align-items:center;display:flex}.hero-content{max-width:var(--content-width)}.hero-photo{object-fit:cover;width:10rem;height:10rem;margin:0 auto var(--space-xl);border-radius:50%}#hero h1{font-size:var(--text-3xl);margin-bottom:var(--space-sm)}.hero-title{font-size:var(--text-xl);color:var(--color-text-muted)}#about p{margin-bottom:var(--space-md);color:var(--color-text-muted)}#about p:last-child{margin-bottom:0}.skills-grid{gap:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));display:grid}.skill-category h3{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.skill-category ul{gap:var(--space-sm);flex-wrap:wrap;display:flex}.skill-category li{background:var(--color-accent);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);font-size:var(--text-sm)}.experience-list{padding-left:var(--space-xl);border-left:2px solid var(--color-border);flex-direction:column;gap:0;display:flex;position:relative}.experience-entry{padding-bottom:var(--space-2xl);position:relative}.experience-entry:last-child{padding-bottom:0}.experience-entry:before{content:"";left:calc(-1 * var(--space-xl) - 5px);background:var(--color-border);border:2px solid var(--color-bg);border-radius:50%;width:.75rem;height:.75rem;position:absolute;top:.35rem}.experience-entry:first-child:before{background:var(--color-primary)}.experience-entry h3{font-size:var(--text-lg);margin-bottom:var(--space-xs)}.experience-meta{gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.experience-company:after{content:"·";margin-left:var(--space-sm)}.experience-entry>p{color:var(--color-text-muted)}.projects-grid{gap:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));display:grid}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl)}.project-card h3{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.project-card p{color:var(--color-text-muted);margin-bottom:var(--space-md)}.project-card a{color:var(--color-primary);font-size:var(--text-sm);transition:color var(--transition-fast);font-weight:600;text-decoration:none}.project-card a:hover{color:var(--color-primary-hover);text-decoration:underline}.media-grid{gap:var(--space-xl);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));display:grid}.media-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xl)}.media-type{background:var(--color-accent);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);margin-bottom:var(--space-sm);font-weight:600;display:inline-block}.media-card h3{font-size:var(--text-lg);margin-bottom:var(--space-sm)}.media-card p{color:var(--color-text-muted);margin-bottom:var(--space-md)}.media-card a{color:var(--color-primary);font-size:var(--text-sm);transition:color var(--transition-fast);font-weight:600;text-decoration:none}.media-card a:hover{color:var(--color-primary-hover);text-decoration:underline}.header-social{justify-content:center;gap:var(--space-md);margin-top:var(--space-lg);display:flex}.header-social a{color:var(--color-text-muted);transition:color var(--transition-fast);align-items:center;display:flex}.header-social a:hover,.header-social a:focus-visible{color:var(--color-text)}footer{text-align:center;border-top:1px solid var(--color-border)}footer p{font-size:var(--text-sm);color:var(--color-text-muted)}#main-nav{z-index:100;height:var(--nav-height);padding:0 var(--space-lg);background:var(--color-bg);border-bottom:1px solid var(--color-border);justify-content:center;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}#nav-links{gap:var(--space-lg);display:flex}#nav-links a{font-size:var(--text-sm);color:var(--color-text-muted);transition:color var(--transition-fast);text-decoration:none}#nav-links a:hover{color:var(--color-text)}#theme-toggle{right:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;padding:var(--space-xs);color:var(--color-text);transition:border-color var(--transition-fast);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:absolute}#theme-toggle:hover{border-color:var(--color-text-muted)}#theme-toggle .icon-sun{display:block}#theme-toggle .icon-moon,#theme-toggle.theme-toggle--light .icon-sun{display:none}#theme-toggle.theme-toggle--light .icon-moon{display:block}.nav-toggle{left:var(--space-lg);cursor:pointer;padding:var(--space-sm);background:0 0;border:none;display:none;position:absolute}.nav-toggle-icon,.nav-toggle-icon:before,.nav-toggle-icon:after{background:var(--color-text);width:1.5rem;height:2px;transition:transform var(--transition-base);display:block;position:relative}.nav-toggle-icon:before,.nav-toggle-icon:after{content:"";width:100%;position:absolute;left:0}.nav-toggle-icon:before{top:-6px}.nav-toggle-icon:after{top:6px}.nav-open .nav-toggle-icon{background:0 0}.nav-open .nav-toggle-icon:before{top:0;transform:rotate(45deg)}.nav-open .nav-toggle-icon:after{top:0;transform:rotate(-45deg)}body{padding-top:var(--nav-height)}:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}@media (width<=768px){.nav-toggle{display:block}#nav-links{top:var(--nav-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--space-md) var(--space-lg);gap:var(--space-md);flex-direction:column;display:none;position:absolute;left:0;right:0}.nav-open #nav-links{display:flex}#hero{min-height:60vh;padding:var(--space-3xl) var(--space-md)}section,footer{padding:var(--space-3xl) var(--space-md)}.skills-grid,.projects-grid,.media-grid{grid-template-columns:1fr}.experience-list{padding-left:var(--space-lg)}.experience-entry:before{left:calc(-1 * var(--space-lg) - 5px)}.experience-meta{gap:var(--space-xs);flex-direction:column}.experience-company:after{display:none}}@media (width>=769px) and (width<=1024px){.skills-grid{grid-template-columns:repeat(2,1fr)}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
