@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";.hero{padding-top:6rem;padding-bottom:var(--spacing-2xl);border-bottom:1px solid var(--border-color)}.hero-intro{margin-bottom:1.5rem}.hero-intro h1{margin-bottom:.75rem}.hero-tagline{font-size:1rem;color:var(--text-primary);font-weight:500;margin-bottom:.75rem}.hero-summary{max-width:560px}.hero-links{display:flex;flex-wrap:wrap;gap:1.25rem;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.hero-links a{font-family:var(--font-mono);font-size:.8125rem;color:var(--accent);transition:color var(--transition-fast)}.hero-links a:hover{color:var(--accent-hover)}.hero-stats{display:flex;gap:2.5rem}.hero-stat{display:flex;flex-direction:column;gap:.125rem}.stat-value{font-size:1.5rem;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.stat-label{font-size:.75rem;color:var(--text-tertiary);font-family:var(--font-mono)}@media(min-width:1024px){.stat-value{font-size:2rem}.stat-label{font-size:.875rem}.hero-tagline{font-size:1.125rem}.hero-links a{font-size:.875rem}}@media(min-width:1440px){.stat-value{font-size:2.25rem}.stat-label{font-size:.9375rem}.hero-tagline{font-size:1.1875rem}.hero-links a{font-size:.9375rem}.hero-summary{max-width:640px}}@media(max-width:640px){.hero{padding-top:5rem}.hero-stats{flex-direction:column;gap:1rem}.hero-links{gap:1rem}}.project-list{display:flex;flex-direction:column}.project-item{padding:1.25rem 0;border-bottom:1px solid var(--border-color)}.project-item:last-child{border-bottom:none}.project-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:.375rem}.project-row h3{font-size:1rem}.project-row h3 a{color:var(--text-primary);transition:color var(--transition-fast)}.project-row h3 a:hover{color:var(--accent)}.project-links-row{display:flex;gap:.75rem;flex-shrink:0}.project-ext-link{font-family:var(--font-mono);font-size:.75rem;color:var(--accent)}.project-desc{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem;line-height:1.6}.project-tech{display:flex;flex-wrap:wrap;gap:.375rem}.tech-tag{font-size:.6875rem;color:var(--text-tertiary);padding:.125rem .5rem;border:1px solid var(--border-color);border-radius:3px}.other-heading{font-size:.875rem;font-weight:500;color:var(--text-tertiary);margin-top:1.5rem;margin-bottom:0}.project-list.compact .project-item{padding:.875rem 0}.project-list.compact .project-row h3{font-size:.9375rem}.project-list.compact .project-desc{font-size:.8125rem}@media(min-width:1024px){.project-row h3{font-size:1.0625rem}.project-desc{font-size:.9375rem}.project-ext-link{font-size:.8125rem}.tech-tag{font-size:.75rem;padding:.1875rem .5rem}}@media(min-width:1440px){.project-row h3{font-size:1.125rem}.project-desc{font-size:1rem}.project-ext-link{font-size:.875rem}.tech-tag{font-size:.8125rem;padding:.25rem .625rem}.project-item{padding:1.5rem 0}}@media(max-width:640px){.project-row{flex-direction:column;gap:.25rem}}.writing-list{margin-top:1rem}.writing-item{display:block;padding:1rem 0;border-bottom:1px solid var(--border-color);text-decoration:none;transition:opacity var(--transition-fast)}.writing-item:last-child{border-bottom:none}.writing-item:hover{opacity:.8}.writing-item-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.25rem}.writing-title{font-size:1rem;font-weight:600;color:var(--text-primary)}.writing-tag{font-size:.6875rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.writing-desc{font-size:.875rem;color:var(--text-secondary);line-height:1.6}@media(min-width:1024px){.writing-title{font-size:1.0625rem}.writing-tag{font-size:.75rem}.writing-desc{font-size:.9375rem}}@media(min-width:1440px){.writing-title{font-size:1.125rem}.writing-tag{font-size:.8125rem}.writing-desc{font-size:1rem;line-height:1.7}.writing-item{padding:1.25rem 0}}.skills-list{margin-top:1.25rem}.skill-row{display:grid;grid-template-columns:140px 1fr;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border-color);align-items:baseline}.skill-row:last-child{border-bottom:none}.skill-category-label{font-size:.75rem;color:var(--text-tertiary);white-space:nowrap}.skill-items{display:flex;flex-wrap:wrap;gap:.5rem}.skill-item{font-size:.8125rem;color:var(--text-secondary)}.skill-item:not(:last-child):after{content:","}@media(min-width:1024px){.skill-row{grid-template-columns:160px 1fr}.skill-category-label{font-size:.8125rem}.skill-item{font-size:.875rem}}@media(min-width:1440px){.skill-row{grid-template-columns:180px 1fr;padding:.875rem 0}.skill-category-label{font-size:.875rem}.skill-item{font-size:.9375rem}}@media(max-width:640px){.skill-row{grid-template-columns:1fr;gap:.375rem}}.contact-links{display:flex;flex-direction:column}.contact-row{display:grid;grid-template-columns:100px 1fr;gap:1rem;padding:.625rem 0;border-bottom:1px solid var(--border-color);text-decoration:none;align-items:baseline;transition:opacity var(--transition-fast)}.contact-row:last-child{border-bottom:none}.contact-row:hover{opacity:.75}.contact-type{font-size:.75rem;color:var(--text-tertiary)}.contact-value{font-size:.875rem;color:var(--accent)}.site-footer{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.site-footer p{font-size:.75rem;color:var(--text-tertiary);font-family:var(--font-mono)}@media(min-width:1024px){.contact-row{grid-template-columns:120px 1fr}.contact-type{font-size:.8125rem}.contact-value{font-size:.9375rem}}@media(min-width:1440px){.contact-row{grid-template-columns:140px 1fr;padding:.75rem 0}.contact-type{font-size:.875rem}.contact-value{font-size:1rem}.site-footer p{font-size:.8125rem}}@media(max-width:640px){.contact-row{grid-template-columns:1fr;gap:.125rem}}.navbar{position:fixed;top:0;left:0;right:0;z-index:1100;background:var(--bg-primary);border-bottom:1px solid transparent;transition:border-color var(--transition-normal)}.navbar.scrolled{border-bottom-color:var(--border-color)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:var(--nav-height)}.nav-name{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--text-primary)!important;letter-spacing:-.01em}.nav-name:hover{color:var(--accent)!important}.nav-links{display:flex;align-items:center;gap:1.5rem}.nav-links a{font-size:.8125rem;color:var(--text-secondary);transition:color var(--transition-fast)}.nav-links a:hover{color:var(--text-primary)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;color:var(--text-secondary);border-radius:4px;transition:color var(--transition-fast)}.theme-toggle:hover{color:var(--text-primary)}@media(min-width:1024px){.nav-name{font-size:.9375rem}.nav-links a{font-size:.875rem}.nav-links{gap:1.75rem}}@media(min-width:1440px){.nav-name{font-size:1rem}.nav-links a{font-size:.9375rem}.nav-links{gap:2rem}}@media(max-width:640px){.nav-links{gap:1rem}.nav-links a{font-size:.75rem}}.scroll-to-top{position:fixed;bottom:1.5rem;right:1.5rem;width:2.25rem;height:2.25rem;background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:4px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast),border-color var(--transition-fast);z-index:999}.scroll-to-top:hover{color:var(--text-primary);border-color:var(--text-tertiary)}:root{--bg-primary: #0a0a0a;--bg-secondary: #111111;--bg-card: #141414;--text-primary: #ffffff;--text-secondary: #b0b0b0;--text-tertiary: #888888;--border-color: #1e1e1e;--accent: #2563eb;--accent-hover: #3b82f6;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--spacing-xs: .5rem;--spacing-sm: .75rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2.5rem;--spacing-2xl: 4rem;--max-width: 672px;--nav-height: 48px;--transition-fast: .15s ease;--transition-normal: .25s ease}:root[data-theme=light]{--bg-primary: #ffffff;--bg-secondary: #fafafa;--bg-card: #f5f5f5;--text-primary: #0a0a0a;--text-secondary: #666666;--text-tertiary: #999999;--border-color: #e5e5e5;--accent: #2563eb;--accent-hover: #1d4ed8}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-sans);font-size:1rem;line-height:1.6;color:var(--text-primary);background-color:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}.app{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);font-weight:600;line-height:1.25;letter-spacing:-.025em;color:var(--text-primary)}h1{font-size:2rem;font-weight:700;letter-spacing:-.035em}h2{font-size:1.5rem;letter-spacing:-.03em}h3{font-size:1.125rem}p{color:var(--text-secondary);font-size:.9375rem;line-height:1.7}a{color:var(--accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-hover)}code,.mono{font-family:var(--font-mono);font-size:.875rem}button{font-family:var(--font-sans);cursor:pointer;border:none;background:none}img{max-width:100%;height:auto;display:block}.page-container{max-width:var(--max-width);width:100%;margin:0 auto;padding:0 1.5rem}section{padding:var(--spacing-2xl) 0;border-bottom:1px solid var(--border-color)}section:last-of-type{border-bottom:none}.section-label{font-family:var(--font-mono);font-size:.75rem;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--text-tertiary);border-radius:3px}::selection{background:var(--accent);color:#fff}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:768px){.page-container{padding:0 1.25rem}section{padding:var(--spacing-xl) 0}h1{font-size:1.75rem}h2{font-size:1.25rem}}@media(min-width:1024px){:root{--max-width: 780px;--nav-height: 56px}html{font-size:17px}h1{font-size:2.25rem}h2{font-size:1.625rem}h3{font-size:1.25rem}p{font-size:1rem}.section-label{font-size:.8125rem}section{padding:var(--spacing-2xl) 0}}@media(min-width:1440px){:root{--max-width: 860px}html{font-size:18px}h1{font-size:2.5rem}h2{font-size:1.75rem}h3{font-size:1.375rem}p{font-size:1.0625rem;line-height:1.75}.section-label{font-size:.875rem}section{padding:5rem 0}}
