:root{--bg:#f5f7f6;--surface:#fff;--surface-sunken:#eef2f1;--ink:#10201c;--ink-muted:#4c5a56;--ink-faint:#7c8a86;--border:#dde4e2;--accent:#0f766e;--accent-strong:#0b5a54;--accent-soft:#e3f1ee;--font-display:"IBM Plex Sans", -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}html[data-app-theme=dark]{--bg:#0f1417;--surface:#151c21;--surface-sunken:#1a2329;--ink:#e8eef4;--ink-muted:#9dabb6;--ink-faint:#7f8b96;--border:#2a363e;--accent:#3eb496;--accent-strong:#86d8c5;--accent-soft:#17352d}html[data-app-theme=coffee]{--bg:#f5f0e7;--surface:#fbf8f2;--surface-sunken:#ece2ce;--ink:#2b2118;--ink-muted:#6c5a45;--ink-faint:#998572;--border:#ddccae;--accent:#8a5a2e;--accent-strong:#6b431f;--accent-soft:#efe0c2}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-display);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3{text-wrap:balance;font-family:var(--font-display);margin:0}a{color:inherit}button{font-family:var(--font-display);cursor:pointer}img{max-width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.layout{grid-template-columns:minmax(280px,380px) 1fr;gap:64px;max-width:1180px;min-height:100vh;margin:0 auto;padding:64px 32px 96px;display:grid}.sidebar{flex-direction:column;align-self:start;gap:26px;height:fit-content;display:flex;position:sticky;top:56px}.wordmark{letter-spacing:-.01em;font-size:1.85rem;font-weight:700;line-height:1.15}.role{font-family:var(--font-mono);color:var(--accent);letter-spacing:.02em;margin-top:6px;font-size:.8rem}.bio{color:var(--ink-muted);max-width:34ch;margin:0;font-size:.96rem;line-height:1.65}nav.primary-nav ul,nav.page-nav ul{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}nav.primary-nav a,nav.page-nav a{color:var(--ink-muted);border-radius:6px;align-items:center;gap:12px;margin:0 -10px;padding:8px 10px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}nav.primary-nav a:hover,nav.primary-nav a:focus-visible,nav.page-nav a:hover,nav.page-nav a:focus-visible{background:var(--accent-soft);color:var(--accent-strong)}nav.page-nav a.is-active,nav.primary-nav a.is-active{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.tick{background:var(--ink-faint);border-radius:50%;flex:none;width:6px;height:6px;transition:background .15s,transform .15s}a:hover .tick,a:focus-visible .tick{background:var(--accent);transform:scale(1.3)}nav.page-nav .is-active .tick,nav.primary-nav .is-active .tick{background:var(--accent)}.sidebar-divider{background:var(--border);height:1px;margin:-6px 0}.sidebar-controls{flex-direction:column;gap:14px;display:flex}.control-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.control-label{font-family:var(--font-mono);color:var(--ink-faint);letter-spacing:.04em;text-transform:uppercase;font-size:.72rem}.lang-toggle,.theme-toggle{gap:6px;display:flex}.lang-toggle button{font-family:var(--font-mono);border:1px solid var(--border);background:var(--surface);color:var(--ink-muted);border-radius:5px;padding:5px 10px;font-size:.76rem}.lang-toggle button.is-active{background:var(--accent);border-color:var(--accent);color:var(--surface);font-weight:600}.theme-toggle button{border:1.5px solid var(--border);border-radius:50%;width:26px;height:26px;padding:0;position:relative;overflow:hidden}.theme-toggle button.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.swatch-light{background:linear-gradient(135deg,#f5f7f6 50%,#0f766e 50%)}.swatch-dark{background:linear-gradient(135deg,#0f1417 50%,#3eb496 50%)}.swatch-coffee{background:linear-gradient(135deg,#f5f0e7 50%,#8a5a2e 50%)}main{flex-direction:column;gap:42px;min-width:0;display:flex}.page{flex-direction:column;gap:42px;display:flex}.intro p{color:var(--ink-muted);max-width:62ch;margin:0 0 16px;font-size:1.1rem;line-height:1.75}.intro h1{max-width:22ch;margin-bottom:20px;font-size:2rem;font-weight:700}section{scroll-margin-top:56px}.section-head{align-items:baseline;gap:14px;margin-bottom:28px;display:flex}.section-head .eyebrow{font-family:var(--font-mono);color:var(--accent);letter-spacing:.04em;font-size:.78rem}.section-head h2{font-size:1.45rem;font-weight:600}.section-head:after{content:"";background:var(--border);flex:1;height:1px}.group+.group{margin-top:37px}.group-head{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-bottom:6px;padding-bottom:10px;font-size:.76rem;display:flex}.group-count{color:var(--ink-faint)}.project-row{border-top:1px solid var(--border);grid-template-columns:150px 1fr;gap:24px;padding:22px 0;display:grid}.group .project-row:first-of-type{border-top:none}.status-pill{font-family:var(--font-mono);background:var(--accent-soft);color:var(--accent-strong);border-radius:4px;padding:3px 8px;font-size:.7rem;display:inline-block}.project-name{align-items:center;gap:8px;font-size:1.04rem;font-weight:600;display:flex}.project-name a{align-items:center;gap:6px;text-decoration:none;display:flex}.project-name a:hover{color:var(--accent-strong)}.project-name .arrow{color:var(--accent);font-size:.85em}.project-kind{color:var(--ink-faint);margin-top:2px;font-size:.84rem}.project-summary{color:var(--ink-muted);max-width:58ch;margin-top:10px;font-size:.93rem;line-height:1.6}.project-tags{flex-wrap:wrap;gap:8px;margin:12px 0 0;padding:0;display:flex}.project-tags li{font-family:var(--font-mono);color:var(--ink-muted);background:var(--surface-sunken);border:1px solid var(--border);border-radius:4px;padding:3px 9px;font-size:.72rem;list-style:none}.capabilities{background:var(--border);border:1px solid var(--border);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:1px;display:grid;overflow:hidden}.capability{background:var(--surface);flex-direction:column;gap:8px;padding:22px;display:flex}.capability h3{font-size:.95rem;font-weight:600}.capability p{color:var(--ink-muted);margin:0;font-size:.87rem;line-height:1.6}.routes{border:1px solid var(--border);background:var(--surface);border-radius:10px;overflow:hidden}.route-row{border-top:1px solid var(--border);grid-template-columns:1fr auto;align-items:center;gap:16px;padding:15px 20px;display:grid}.route-row:first-child{border-top:none}.route-name{font-family:var(--font-mono);font-size:.84rem}.route-desc{color:var(--ink-faint);margin-top:3px;font-size:.81rem}.route-status{font-family:var(--font-mono);color:var(--accent-strong);align-items:center;gap:6px;font-size:.73rem;display:flex}.infra-description{color:var(--ink-muted);max-width:62ch;margin:0 0 20px;font-size:.93rem;line-height:1.6}.dashboard-frame{border:1px solid var(--border);background:var(--surface);aspect-ratio:16/9;border-radius:10px;overflow:hidden}.dashboard-frame iframe{border:none;width:100%;height:100%;display:block}.dot{background:var(--accent);border-radius:50%;width:6px;height:6px}footer{border-top:1px solid var(--border);font-family:var(--font-mono);color:var(--ink-faint);margin-top:-21px;padding-top:28px;font-size:.78rem}.about-hero{flex-direction:column;gap:14px;display:flex}.about-kicker{font-family:var(--font-mono);color:var(--accent);letter-spacing:.02em;margin:0;font-size:.8rem}.about-hero h1{max-width:22ch;font-size:2rem;font-weight:700}.about-lead{flex-direction:column;gap:16px;display:flex}.about-lead p{color:var(--ink-muted);max-width:68ch;margin:0;font-size:1.05rem;line-height:1.75}.facts-strip{font-family:var(--font-mono);color:var(--ink);border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:14px;padding:16px 0;font-size:.86rem;display:flex}.fact{align-items:center;gap:14px;display:flex}.fact span[aria-hidden]{color:var(--ink-faint)}.skills-grid{background:var(--border);border:1px solid var(--border);border-radius:10px;grid-template-columns:repeat(3,1fr);gap:1px;display:grid;overflow:hidden}.skill-group{background:var(--surface);flex-direction:column;gap:6px;padding:18px 20px;display:flex}.skill-label{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);font-size:.68rem}.skill-list{color:var(--ink);font-size:.86rem;line-height:1.55}.contact-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;gap:22px;padding:32px;display:flex}.contact-lines{color:var(--ink-muted);flex-wrap:wrap;gap:8px 20px;font-size:.92rem;display:flex}.contact-lines a{color:var(--accent-strong);border-bottom:1px solid #0000;text-decoration:none}.contact-lines a:hover{border-bottom-color:var(--accent)}@media (max-width:860px){.layout{grid-template-columns:1fr;gap:36px;padding:36px 20px 64px}.sidebar{position:static}.project-row{grid-template-columns:1fr;gap:8px}.capabilities,.skills-grid{grid-template-columns:1fr}}@media (max-width:480px){.intro h1,.about-hero h1{font-size:1.5rem}}
