:root{
  --bg:#f8fafc; --surface:#ffffff; --surface-2:#eef2ff; --text:#0f172a; --muted:#64748b; --line:#dbe3ef;
  --accent:#2563eb; --accent-2:#7c3aed; --ring:rgba(37,99,235,.24); --shadow:0 24px 70px rgba(15,23,42,.12);
  --radius:28px; --max:1160px;
}
[data-theme="dark"]{
  --bg:#020617; --surface:#0f172a; --surface-2:#111c33; --text:#e5edf8; --muted:#94a3b8; --line:#1e293b;
  --accent:#60a5fa; --accent-2:#a78bfa; --ring:rgba(96,165,250,.26); --shadow:0 24px 90px rgba(0,0,0,.42);
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at top left,var(--surface-2),transparent 36rem),var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased} a{color:inherit;text-decoration:none} img{max-width:100%;display:block} .container{width:min(100% - 40px,var(--max));margin-inline:auto}.skip-link{position:absolute;left:-999px;top:12px;background:var(--text);color:var(--bg);padding:10px 14px;border-radius:999px;z-index:20}.skip-link:focus{left:12px}.site-header{position:sticky;top:0;z-index:10;backdrop-filter:blur(18px);background:color-mix(in srgb,var(--bg) 82%,transparent);border-bottom:1px solid var(--line)}.nav{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:-.03em}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:white;font-family:"JetBrains Mono",monospace}.nav-panel{display:flex;align-items:center;gap:24px}.nav-panel a{font-size:14px;color:var(--muted);font-weight:700}.nav-panel a:hover{color:var(--text)}.nav-actions{display:flex;gap:10px}.pill-button{border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:999px;min-width:42px;height:42px;font-weight:800;cursor:pointer}.menu-toggle{display:none;border:0;background:transparent;color:var(--text);font-size:28px}.section{padding:112px 0}.hero{min-height:calc(100vh - 76px);display:grid;align-items:center}.hero-grid{display:grid;grid-template-columns:1.14fr .86fr;gap:56px;align-items:center}.eyebrow,.section-kicker{color:var(--accent);text-transform:uppercase;letter-spacing:.16em;font-size:12px;font-weight:800;margin:0 0 16px}.hero h1,.section-heading h2,.two-column h2,.contact-card h2{font-size:clamp(42px,6vw,76px);line-height:.96;letter-spacing:-.07em;margin:0 0 24px}.section-heading h2,.two-column h2,.contact-card h2{font-size:clamp(32px,4vw,56px)}.hero-text,.two-column p,.section-heading p,.contact-card p{font-size:clamp(17px,2vw,20px);color:var(--muted);max-width:760px;margin:0 0 28px}.hero-ctas,.contact-actions{display:flex;gap:14px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:999px;font-weight:800;border:1px solid var(--line)}.button.primary{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:white;border:0;box-shadow:0 18px 42px var(--ring)}.button.secondary{background:var(--surface);color:var(--text)}.signal-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.signal-row span,.tag-list li{border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 76%,transparent);border-radius:999px;padding:9px 13px;color:var(--muted);font-size:13px;font-weight:700}.signal-row strong{color:var(--text)}.hero-card{position:relative;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%,transparent),var(--surface));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;overflow:hidden}.hero-card:before{content:"";position:absolute;inset:-30% -30% auto auto;width:260px;height:260px;border-radius:50%;background:var(--ring);filter:blur(20px)}.portrait-wrap{position:relative;border-radius:22px;overflow:hidden;aspect-ratio:4/5;background:var(--surface-2)}.portrait-wrap img{width:100%;height:100%;object-fit:cover;object-position:center 18%}.availability{display:flex;gap:10px;align-items:center;margin:18px 0;color:var(--muted);font-weight:700}.status-dot{width:10px;height:10px;background:#22c55e;border-radius:50%;box-shadow:0 0 0 8px rgba(34,197,94,.14)}.terminal-card{background:#020617;color:#dbeafe;border-radius:18px;padding:18px;overflow:auto}.mono{font-family:"JetBrains Mono",monospace;color:#93c5fd;font-size:12px}.terminal-card pre{margin:10px 0 0;font-family:"JetBrains Mono",monospace;font-size:13px;line-height:1.7}.two-column{display:grid;grid-template-columns:260px 1fr;gap:40px}.cards-grid{display:grid;gap:18px}.cards-grid.four{grid-template-columns:repeat(4,1fr)}.card,.case-card,.contact-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:0 12px 34px rgba(15,23,42,.06)}.card-icon{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:16px;background:var(--surface-2);color:var(--accent);font-size:22px;margin-bottom:22px}.card h3,.case-card h3,.timeline-item h3{margin:0 0 10px;font-size:21px;letter-spacing:-.03em}.card p,.case-card p,.timeline-item p{margin:0;color:var(--muted)}.muted-section{background:color-mix(in srgb,var(--surface-2) 52%,transparent);border-block:1px solid var(--line)}.section-heading{margin-bottom:36px}.case-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.case-card.featured{grid-row:span 2;display:flex;flex-direction:column;justify-content:space-between;min-height:430px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 14%,var(--surface)),var(--surface))}.case-label{color:var(--accent)!important;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin-bottom:14px!important}.tag-list{list-style:none;padding:0;margin:24px 0 0;display:flex;flex-wrap:wrap;gap:8px}.timeline-modern{display:grid;gap:16px}.timeline-item{display:grid;grid-template-columns:180px 1fr;gap:30px;padding:26px;border:1px solid var(--line);background:var(--surface);border-radius:24px}.timeline-item span{color:var(--accent);font-weight:800}.writing-grid{display:grid;grid-template-columns:1fr .8fr;gap:42px;align-items:start}.article-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.article-list a{display:grid;grid-template-columns:56px 1fr;gap:18px;padding:22px;border-bottom:1px solid var(--line);color:var(--muted)}.article-list a:last-child{border-bottom:0}.article-list strong{color:var(--text)}.article-list a[aria-disabled="true"]{cursor:default}.contact-section{padding-top:80px}.contact-card{text-align:center;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,var(--surface)),var(--surface))}.contact-card p{margin-inline:auto}.contact-actions{justify-content:center}.footer{border-top:1px solid var(--line);padding:28px 0;color:var(--muted)}.footer-inner{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:none}@media (max-width:920px){.menu-toggle{display:block}.nav-panel{position:absolute;left:20px;right:20px;top:76px;display:none;flex-direction:column;align-items:flex-start;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.nav-panel.open{display:flex}.hero-grid,.two-column,.case-grid,.writing-grid{grid-template-columns:1fr}.cards-grid.four{grid-template-columns:repeat(2,1fr)}.section{padding:82px 0}.hero{min-height:auto}.timeline-item{grid-template-columns:1fr;gap:10px}}@media (max-width:620px){.container{width:min(100% - 28px,var(--max))}.cards-grid.four{grid-template-columns:1fr}.hero h1{font-size:42px}.hero-ctas .button,.contact-actions .button{width:100%}.footer-inner{display:block}.signal-row span{width:100%}}
 
.skill-strip{display:flex;flex-wrap:wrap;gap:8px;margin-top:26px}.skill-strip span{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:9px 12px;color:var(--muted);font-size:13px;font-weight:700}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:18px}.mini-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:24px;box-shadow:0 10px 28px rgba(15,23,42,.05)}.mini-card h3{margin:0 0 10px;font-size:19px;letter-spacing:-.03em}.mini-card p{margin:0;color:var(--muted)}.education-grid .mini-card h3{margin-bottom:0}@media (max-width:920px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:620px){.project-grid{grid-template-columns:1fr}}

.nav-panel a.active{color:var(--text)}.blog-list{display:grid;gap:0}.blog-entry{display:grid;grid-template-columns:120px 1fr;gap:24px;padding:28px 0;border-bottom:1px solid var(--line);text-decoration:none;transition:background .2s}.blog-entry:hover{background:color-mix(in srgb,var(--surface-2) 40%,transparent);border-radius:16px;padding-inline:16px;margin-inline:-16px}.blog-date{color:var(--accent);font-weight:800;font-size:14px;padding-top:4px}.blog-title{margin:0 0 8px;font-size:22px;letter-spacing:-.03em}.blog-excerpt{margin:0;color:var(--muted);font-size:16px;line-height:1.5}.blog-back{display:inline-block;color:var(--accent);font-weight:700;font-size:14px;margin-bottom:32px}.blog-back:hover{text-decoration:underline}.blog-article-header{margin-bottom:40px}.blog-content.prose{max-width:720px;font-size:18px;line-height:1.75}.blog-content.prose h2{font-size:28px;letter-spacing:-.03em;margin:48px 0 16px}.blog-content.prose h3{font-size:22px;letter-spacing:-.02em;margin:36px 0 12px}.blog-content.prose p{margin:0 0 20px;color:var(--muted)}.blog-content.prose strong{color:var(--text)}.blog-content.prose ul,.blog-content.prose ol{margin:0 0 20px;padding-left:24px;color:var(--muted)}.blog-content.prose li{margin-bottom:8px}.blog-content.prose code{font-family:"JetBrains Mono",monospace;background:var(--surface-2);padding:2px 6px;border-radius:6px;font-size:15px}.blog-content.prose pre{background:#020617;color:#dbeafe;border-radius:18px;padding:20px;overflow-x:auto;margin:0 0 24px}.blog-content.prose pre code{background:none;padding:0;font-size:14px;line-height:1.7}.blog-content.prose a{color:var(--accent);text-decoration:underline}.blog-content.prose blockquote{border-left:3px solid var(--accent);margin:0 0 20px;padding:4px 0 4px 20px;color:var(--muted)}@media (max-width:620px){.blog-entry{grid-template-columns:1fr;gap:8px}}
