:root{--bg:#fff;--bg-alt:#f6f7fb;--text:#33343d;--text-muted:#6b6d78;--heading:#101114;--border:#e3e4ea;--card:#fff;--accent:#4f46e5;--accent-contrast:#fff;--accent-soft:#4f46e51a;--shadow:#10111414 0 10px 25px -8px;--sans:"Inter", system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--max-width:1080px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font:16px/1.6 var(--sans);color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1115;--bg-alt:#171a21;--text:#c7c9d3;--text-muted:#8b8d98;--heading:#f4f5f7;--border:#2a2d38;--card:#171a21;--accent:#818cf8;--accent-contrast:#101114;--accent-soft:#818cf826;--shadow:#00000073 0 10px 25px -8px}*{box-sizing:border-box}body{margin:0}h1,h2,h3,h4{color:var(--heading);margin:0 0 .5em;font-weight:700;line-height:1.2}p{margin:0 0 1em}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}ul{margin:0;padding:0;list-style:none}button{font:inherit}.app{flex-direction:column;min-height:100svh;display:flex}main{flex:1}.page{max-width:var(--max-width);margin:0 auto;padding:64px 24px}.navbar{z-index:50;background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.navbar-inner{max-width:var(--max-width);justify-content:space-between;align-items:center;margin:0 auto;padding:16px 24px;display:flex}.brand{color:var(--heading);border:2px solid var(--accent);border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.25rem;font-weight:800;text-decoration:none;display:flex}.nav-links{align-items:center;gap:28px;display:flex}.nav-links a{color:var(--text);font-weight:500}.nav-links a.active{color:var(--accent)}.nav-toggle{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:5px;padding:8px;display:none}.nav-toggle span{background:var(--text);width:22px;height:2px}.theme-toggle{background:var(--bg-alt);border:1px solid var(--border);cursor:pointer;border-radius:999px;width:36px;height:36px;font-size:1rem;line-height:1}@media (width<=720px){.nav-toggle{display:flex}.nav-links{background:var(--bg);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:0;padding:8px 24px 16px;display:none;position:absolute;top:100%;left:0;right:0}.nav-links.open{display:flex}.nav-links a{border-bottom:1px solid var(--border);width:100%;padding:12px 0}.theme-toggle{margin:12px 0 0}}.btn{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:12px 22px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{text-decoration:none}.btn-primary{background:var(--accent);color:var(--accent-contrast)}.btn-primary:hover{opacity:.9}.btn-secondary{color:var(--text);border-color:var(--border);background:0 0}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.hero{max-width:var(--max-width);text-align:center;margin:0 auto;padding:96px 24px 64px}.hero .eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:.85rem;font-weight:700}.hero h1{margin-bottom:8px;font-size:clamp(2.25rem,5vw,3.5rem)}.hero-role{color:var(--text-muted);margin-bottom:16px;font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:600}.hero-tagline{max-width:560px;color:var(--text-muted);margin:0 auto 32px;font-size:1.1rem}.hero-actions{flex-wrap:wrap;justify-content:center;gap:16px;margin-bottom:56px;display:flex}.hero-highlights{flex-wrap:wrap;justify-content:center;gap:48px;margin:0;display:flex}.hero-highlights .highlight{text-align:center}.hero-highlights dt{color:var(--heading);font-size:1.75rem;font-weight:800}.hero-highlights dd{color:var(--text-muted);margin:4px 0 0;font-size:.9rem}.section-heading{text-align:center;max-width:640px;margin:0 auto 48px}.section-heading .eyebrow{color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font-size:.85rem;font-weight:700}.section-heading .subtitle{color:var(--text-muted)}.about-content{max-width:720px;color:var(--text);margin:0 auto;font-size:1.05rem}.about-block{margin-top:32px}.about-block h3{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:12px;font-size:1rem}.article-content{max-width:720px;color:var(--text);margin:0 auto;font-size:1.05rem;line-height:1.7}.article-content h2{color:var(--heading);margin-top:40px;margin-bottom:12px;font-size:1.3rem}.article-content p{margin-bottom:16px}.article-content code{background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:2px 6px;font-size:.9em}.article-content pre{background:var(--bg-alt);border:1px solid var(--border);border-radius:8px;margin:20px 0;padding:16px;overflow-x:auto}.article-content pre code{color:var(--text);background:0 0;padding:0;font-size:.85rem}.article-table{border-collapse:collapse;width:100%;margin:20px 0;font-size:.95rem}.article-table th,.article-table td{border:1px solid var(--border);text-align:left;padding:8px 12px}.article-table th{background:var(--bg-alt);color:var(--heading)}.article-back{margin-top:40px}.about-list{padding-left:20px;list-style:outside}.about-list li{color:var(--text);margin-bottom:8px}.resume-header{flex-direction:column;align-items:center;gap:24px;display:flex}.resume-actions{gap:12px;display:flex}.metrics-strip{background:var(--bg-alt);border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin:48px 0 0;padding:28px 24px;display:grid}.metric-card{text-align:center}.metric-card dt{color:var(--accent);font-size:1.75rem;font-weight:800}.metric-card dd{color:var(--text-muted);margin:4px 0 0;font-size:.85rem}.resume-tabs{border-bottom:1px solid var(--border);gap:4px;margin:40px 0 32px;display:flex}.resume-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-right:24px;padding:10px 4px;font-weight:600}.resume-tab:hover{color:var(--text)}.resume-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-panel{display:none}.tab-panel.active{display:block}.resume-block{max-width:760px}.resume-block h3{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:20px;font-size:1.1rem}.resume-subheading{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:32px 0 16px;font-size:1.1rem}.resume-item{border-bottom:1px solid var(--border);padding:20px 0}.resume-item:last-child{border-bottom:none}.resume-item-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.resume-item-header--clickable{cursor:pointer;border-radius:8px;width:100%}.resume-item-header--clickable:hover h4{color:var(--accent)}.resume-item-header--clickable:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.resume-item-header h4{margin:0;font-size:1.05rem}.resume-period{color:var(--text-muted);white-space:nowrap;align-items:center;gap:8px;font-size:.9rem;display:flex}.resume-subtitle{color:var(--text-muted);margin:4px 0 0;font-weight:600}.resume-summary{color:var(--text);margin:10px 0 0}.resume-chevron{color:var(--text-muted);transition:transform .2s;display:inline-block}.resume-chevron.open{transform:rotate(180deg)}.resume-details{margin-top:14px;padding-left:20px;list-style:outside;display:none}.resume-details.expanded{display:block}.resume-item li{color:var(--text);margin-bottom:6px}.skill-filters{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.filter-chip{background:var(--bg-alt);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:999px;padding:6px 14px;font-size:.85rem;font-weight:600}.filter-chip:hover{border-color:var(--accent)}.filter-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.skills-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;display:grid}.skill-group h4{margin-bottom:10px;font-size:.95rem}.skill-tags{flex-wrap:wrap;gap:8px;display:flex}.tag{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:5px 12px;font-size:.8rem;font-weight:600}.project-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;display:grid}.project-card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:12px;padding:28px;display:flex}.project-card h3{margin:0;font-size:1.15rem}.project-card p{color:var(--text-muted);flex:1;margin:0}.project-card p.project-meta{color:var(--accent);text-transform:uppercase;letter-spacing:.04em;flex:none;font-size:.8rem;font-weight:600}.project-links{flex-wrap:wrap;gap:16px;display:flex}.project-link{font-weight:600}.contact-intro{text-align:center;max-width:560px;color:var(--text-muted);margin:0 auto 40px}.contact-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.contact-card{background:var(--card);border:1px solid var(--border);color:var(--text);box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:6px;padding:24px;display:flex}.contact-card:hover{border-color:var(--accent);text-decoration:none}.contact-label{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);font-size:.8rem;font-weight:700}.contact-value{color:var(--heading);word-break:break-word;font-weight:600}.contact-card-static{cursor:default}.not-found-page{text-align:center;padding:120px 24px}.not-found-page h1{margin-bottom:8px;font-size:5rem}.footer{border-top:1px solid var(--border);margin-top:64px}.footer-inner{max-width:var(--max-width);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;padding:24px;font-size:.9rem;display:flex}.footer-links{gap:20px;display:flex}.footer-links a{color:var(--text-muted);font-weight:500}@media print{.navbar,.footer,.resume-actions,.resume-tabs,.skill-filters,.resume-chevron{display:none!important}.tab-panel{max-width:none;margin-bottom:32px;display:block!important}.resume-details{display:block!important}.resume-summary{display:none!important}}
