*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{min-height:100vh;display:flex;flex-direction:column}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}ul,ol{list-style:none}button,input,textarea{font:inherit}body{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:1rem;line-height:1.6;color:#1a1a2e;background-color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{font-weight:700;line-height:1.2;color:#1a1a2e}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.125rem}.prose{font-family:"Source Serif 4",Georgia,"Times New Roman",serif;font-size:1.125rem;line-height:1.8;max-width:680px}.prose h2{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin-top:4rem;margin-bottom:1rem}.prose h3{font-family:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin-top:3rem;margin-bottom:.5rem}.prose p{margin-bottom:1.5rem}.prose ul,.prose ol{list-style:disc;padding-left:2rem;margin-bottom:1.5rem}.prose ol{list-style:decimal}.prose li{margin-bottom:.5rem}.prose a{color:#2563eb;text-decoration:underline;text-underline-offset:2px;transition:color 0.15s ease}.prose a:hover{color:#1d4ed8}.prose code{font-size:0.9em;background:#f8f9fa;padding:0.15em 0.4em;border-radius:3px}.prose blockquote{border-left:3px solid #e5e7eb;padding-left:1.5rem;color:#6b7280;margin-bottom:1.5rem}.container{max-width:1100px;margin:0 auto;padding:0 1.5rem;width:100%}.page-section{padding:4rem 0}.page-title{margin-bottom:3rem}.card-grid{display:grid;grid-template-columns:1fr;gap:2rem}@media (min-width: 640px){.card-grid{grid-template-columns:repeat(2, 1fr)}}.skip-link{position:absolute;top:-100%;left:1rem;background:#2563eb;color:#fff;padding:.5rem 1rem;border-radius:6px;z-index:1000;font-weight:600;font-size:.875rem}.skip-link:focus{top:1rem}main{flex:1}.site-header{border-bottom:1px solid #e5e7eb;padding:1rem 0;background:#fff;position:sticky;top:0;z-index:100}.header-inner{display:flex;align-items:center;justify-content:space-between}.site-logo{display:flex;align-items:center;gap:.5rem;transition:opacity 0.15s ease}.site-logo:hover{opacity:0.8}.logo-icon{width:28px;height:28px;border-radius:6px}.logo-text{font-weight:700;font-size:1rem;color:#1a1a2e}.nav-list{display:flex;align-items:center;gap:1.5rem}.nav-link{font-size:.875rem;font-weight:500;color:#6b7280;transition:color 0.15s ease;position:relative}.nav-link:hover,.nav-link.active{color:#1a1a2e}.nav-link.active::after{content:'';position:absolute;bottom:-1rem;left:0;right:0;height:2px;background:#2563eb}.site-footer{background:#1a1a2e;color:rgba(255,255,255,0.6);padding:3rem 0;margin-top:auto}.footer-inner{text-align:center}.footer-links{display:flex;justify-content:center;gap:1.5rem;margin-bottom:1rem}.footer-link{font-size:.875rem;font-weight:500;color:rgba(255,255,255,0.8);transition:color 0.15s ease}.footer-link:hover{color:#fff}.footer-copy{font-size:.75rem}.hero{padding:6rem 0;display:flex;align-items:center;min-height:60vh}.hero-inner{max-width:680px}.hero-name{font-size:2.75rem;font-weight:700;margin-bottom:1rem}@media (max-width: 640px){.hero-name{font-size:2rem}}.hero-tagline{font-size:1.25rem;color:#2563eb;font-weight:500;margin-bottom:1.5rem}.hero-summary{font-size:1.125rem;color:#6b7280;line-height:1.8;margin-bottom:3rem;max-width:540px}.btn{display:inline-block;padding:.5rem 1.5rem;font-size:.875rem;font-weight:600;color:#2563eb;border:1.5px solid #2563eb;border-radius:6px;transition:background 0.25s ease,color 0.25s ease}.btn:hover{background:#2563eb;color:#fff}.btn--primary{background:#2563eb;color:#fff}.btn--primary:hover{background:#1d4ed8}.btn--small{padding:.25rem .5rem;font-size:.75rem}.project-card{display:flex;flex-direction:column;padding:2rem;border:1px solid #e5e7eb;border-radius:10px;background:#fff;transition:transform 0.25s ease,box-shadow 0.25s ease,border-color 0.25s ease}.project-card:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,0.06);border-color:#2563eb}.project-card__title{font-size:1.25rem;margin-bottom:.5rem}.project-card__desc{font-size:.875rem;color:#6b7280;line-height:1.6;margin-bottom:1.5rem;flex:1}.project-card__tags{display:flex;flex-wrap:wrap;gap:.5rem}.tag{display:inline-block;font-size:.75rem;font-weight:500;color:#6b7280;background:#f8f9fa;padding:.25rem .5rem;border-radius:6px}.post-card{padding:1.5rem 0;border-bottom:1px solid #e5e7eb}.post-card:last-child{border-bottom:none}.post-card__title{font-size:1.25rem;margin-bottom:.25rem}.post-card__link{transition:color 0.15s ease}.post-card__link:hover{color:#2563eb}.post-card__date{font-size:.875rem;color:#6b7280;display:block;margin-bottom:.5rem}.post-card__excerpt{font-size:.875rem;color:#6b7280;line-height:1.6}.back-link{display:inline-block;font-size:.875rem;font-weight:500;color:#6b7280;margin-bottom:2rem;transition:color 0.15s ease}.back-link:hover{color:#2563eb}.project-header{margin-bottom:3rem}.project-header__desc{font-size:1.125rem;color:#6b7280;margin-bottom:1.5rem}.project-header__meta{display:flex;flex-wrap:wrap;align-items:center;gap:1rem}.project-header__links{display:flex;gap:.5rem}.post-header{margin-bottom:3rem}.post-header__date{display:block;font-size:.875rem;color:#6b7280;margin-bottom:1rem}.post-header__summary{font-size:1.125rem;color:#6b7280;line-height:1.6}.empty-state{color:#6b7280;font-size:1.125rem;padding:4rem 0}.resume{max-width:680px}.resume-section{margin-bottom:4rem}.resume-section__title{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#6b7280;padding-bottom:.5rem;border-bottom:2px solid #e5e7eb;margin-bottom:2rem}.resume-entry{margin-bottom:2rem}.resume-entry:last-child{margin-bottom:0}.resume-entry__header{margin-bottom:.5rem}.resume-entry__title{font-size:1.125rem;font-weight:600}.resume-entry__meta{display:flex;flex-wrap:wrap;gap:1.5rem;font-size:.875rem;color:#6b7280}.resume-entry__list{list-style:disc;padding-left:2rem}.resume-entry__list li{font-size:1rem;line-height:1.6;margin-bottom:.25rem;color:#1a1a2e}.resume-skills{display:flex;flex-direction:column;gap:1rem}.resume-skill-row{display:flex;gap:1rem;font-size:1rem;line-height:1.6}@media (max-width: 480px){.resume-skill-row{flex-direction:column;gap:.25rem}}.resume-skill-row__category{font-weight:600;min-width:160px;flex-shrink:0}.resume-skill-row__items{color:#6b7280}.fade-in{opacity:0;transform:translateY(12px);transition:opacity 0.5s ease, transform 0.5s ease}.fade-in.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.fade-in{opacity:1;transform:none;transition:none}}
