:root{--bg:#edeef0;--surface:#fff;--ink:#15171a;--ink-soft:#585f66;--line:#d8dadd;--accent:#b8792d;--accent-soft:#f3e4cc;--accent-ink:#7a4d14;--ok:#4a7c4e;--sans:"Archivo", "Helvetica Neue", Arial, sans-serif;--serif:"Source Serif 4", "Iowan Old Style", Georgia, serif;--mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14161a;--surface:#1b1e23;--ink:#ededee;--ink-soft:#9aa0a6;--line:#2b2f35;--accent:#e0a857;--accent-soft:#332616;--accent-ink:#f0c98a;--ok:#7fbf83}}:root[data-theme=dark]{--bg:#14161a;--surface:#1b1e23;--ink:#ededee;--ink-soft:#9aa0a6;--line:#2b2f35;--accent:#e0a857;--accent-soft:#332616;--accent-ink:#f0c98a;--ok:#7fbf83}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent-ink)}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mono{font-family:var(--mono)}.wrap{max-width:840px;margin:0 auto;padding:0 24px}nav{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0}nav .wrap{justify-content:space-between;align-items:center;padding-top:14px;padding-bottom:14px;display:flex}nav .brand{font-family:var(--sans);letter-spacing:-.01em;color:var(--ink);font-size:1rem;font-weight:800;text-decoration:none}nav ul{font-family:var(--mono);letter-spacing:.02em;gap:22px;margin:0;padding:0;font-size:.76rem;list-style:none;display:flex}nav a{color:var(--ink-soft);text-decoration:none}nav a:hover{color:var(--ink)}@media (width<=620px){nav ul{gap:14px}nav ul li:nth-child(4){display:none}}header.hero{padding:72px 0 56px}.kicker{font-family:var(--mono);color:var(--accent-ink);letter-spacing:.03em;margin:0 0 14px;font-size:.78rem}h1{font-family:var(--sans);letter-spacing:-.02em;text-wrap:balance;margin:0 0 8px;font-size:clamp(2.4rem,6.5vw,3.4rem);font-weight:800;line-height:1.02}.hero-role{font-family:var(--sans);color:var(--ink-soft);margin:0 0 22px;font-size:1.2rem;font-weight:600}.hero-bio{max-width:62ch;color:var(--ink);margin:0 0 30px;font-size:1.08rem;line-height:1.65}.hero-cta{flex-wrap:wrap;gap:12px;display:flex}.btn{font-family:var(--sans);border:1.5px solid var(--ink);color:var(--ink);padding:11px 20px;font-size:.88rem;font-weight:600;text-decoration:none;display:inline-block}.btn.primary{background:var(--ink);color:var(--bg)}.btn:hover{background:var(--accent);border-color:var(--accent);color:#17110a}section{border-top:1px solid var(--line);padding:56px 0}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:30px;display:flex}.section-head h2{font-family:var(--sans);letter-spacing:-.01em;margin:0;font-size:1.5rem;font-weight:700}.section-head .count{font-family:var(--mono);color:var(--ink-soft);font-size:.76rem}.timeline{flex-direction:column;gap:30px;display:flex}.job{border-bottom:1px solid var(--line);grid-template-columns:148px 1fr;gap:20px;padding-bottom:26px;display:grid}.job:last-child{border-bottom:none;padding-bottom:0}.job-date{font-family:var(--mono);color:var(--ink-soft);padding-top:3px;font-size:.76rem}.job-title{font-family:var(--sans);margin:0 0 3px;font-size:1.05rem;font-weight:700}.job-org{color:var(--accent-ink);margin:0 0 12px;font-size:.92rem;font-style:italic}.job ul{margin:0;padding-left:18px}.job li{color:var(--ink);margin-bottom:6px;font-size:.95rem;line-height:1.55}@media (width<=620px){.job{grid-template-columns:1fr;gap:6px}}.cards{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-top:3px solid var(--accent);flex-direction:column;padding:20px;display:flex}.card h3{font-family:var(--sans);margin:0 0 4px;font-size:1.05rem;font-weight:700}.card .role-note{font-family:var(--mono);color:var(--ink-soft);margin:0 0 10px;font-size:.7rem}.card p.desc{color:var(--ink);flex-grow:1;margin:0 0 14px;font-size:.9rem;line-height:1.55}.card a.repo{font-family:var(--mono);color:var(--accent-ink);border-top:1px solid var(--line);padding-top:12px;font-size:.78rem;text-decoration:none}.card a.repo:hover{text-decoration:underline}@media (width<=780px){.cards{grid-template-columns:1fr 1fr}}@media (width<=560px){.cards{grid-template-columns:1fr}}.other-repos{border-top:1px dashed var(--line);margin-top:22px;padding-top:20px}.other-repos .label{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.03em;margin-bottom:12px;font-size:.72rem;display:block}.repo-strip{flex-wrap:wrap;gap:8px;display:flex}.repo-chip{font-family:var(--mono);border:1px solid var(--line);background:var(--surface);color:var(--ink);align-items:center;gap:7px;padding:6px 10px;font-size:.76rem;text-decoration:none;display:flex}.repo-chip:hover{border-color:var(--accent);color:var(--accent-ink)}.repo-chip .dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px}.skill-groups{flex-direction:column;gap:20px;display:flex}.skill-group{grid-template-columns:160px 1fr;align-items:start;gap:16px;display:grid}.skill-group .g-label{font-family:var(--sans);color:var(--ink);font-size:.88rem;font-weight:700}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-soft);padding:5px 10px;font-size:.76rem}@media (width<=620px){.skill-group{grid-template-columns:1fr;gap:8px}}.edu-list{flex-direction:column;gap:14px;display:flex}.edu-item{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:12px;padding-bottom:14px;display:grid}.edu-item:last-child{border-bottom:none;padding-bottom:0}.edu-item .name{font-family:var(--sans);font-size:.95rem;font-weight:600}.edu-item .org{color:var(--ink-soft);font-size:.85rem}.edu-item .date{font-family:var(--mono);color:var(--ink-soft);white-space:nowrap;font-size:.76rem}footer.contact{padding:50px 0 70px}footer.contact h2{font-family:var(--sans);margin:0 0 20px;font-size:1.5rem;font-weight:700}.contact-row{flex-wrap:wrap;gap:24px;margin-bottom:30px;display:flex}.contact-item .tb-label{font-family:var(--mono);color:var(--ink-soft);margin-bottom:4px;font-size:.7rem;display:block}.contact-item a,.contact-item .val{font-size:.98rem;text-decoration:none}.contact-item a:hover{text-decoration:underline}header.top{border-bottom:1px solid var(--line);padding:40px 0 28px}.back{font-family:var(--mono);color:var(--ink-soft);margin-bottom:18px;font-size:.76rem;text-decoration:none;display:inline-block}.back:hover{color:var(--accent-ink)}header.top h1{font-family:var(--sans);letter-spacing:-.02em;text-wrap:balance;margin:0 0 10px;font-size:clamp(1.9rem,5vw,2.5rem);font-weight:800}header.top p{max-width:62ch;color:var(--ink-soft);margin:0;font-size:1.02rem;line-height:1.6}.snapshot-tag{font-family:var(--mono);color:var(--ink-soft);border:1px dashed var(--line);align-items:center;gap:6px;margin-top:16px;padding:5px 10px;font-size:.72rem;display:inline-flex}.snapshot-tag .dot{background:var(--ink-soft);border-radius:50%;width:6px;height:6px}.diagram-section{padding:44px 0 8px}.diagram{width:100%;height:260px;margin-bottom:8px;position:relative}.diagram svg{width:100%;height:100%;position:absolute;inset:0}.diagram svg line{stroke:var(--line);stroke-width:1.5px;transition:stroke .15s}.diagram svg line.active{stroke:var(--accent)}.node{font-family:var(--mono);background:var(--surface);border:1.5px solid var(--line);color:var(--ink);cursor:pointer;white-space:nowrap;align-items:center;gap:7px;padding:9px 13px;font-size:.74rem;display:flex;position:absolute;transform:translate(-50%,-50%)}.node:hover{border-color:var(--accent)}.node[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.node .led{background:var(--ok);border-radius:50%;flex-shrink:0;width:6px;height:6px}.node.host{font-family:var(--sans);padding:10px 16px;font-size:.82rem;font-weight:700}.panel{border:1px solid var(--line);background:var(--surface);border-top:3px solid var(--accent);margin-top:32px;padding:26px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.panel-head h2{font-family:var(--sans);margin:0;font-size:1.3rem;font-weight:700}.panel-head .type{font-family:var(--mono);color:var(--accent-ink);font-size:.76rem}.panel .desc{color:var(--ink);max-width:62ch;margin:12px 0 20px;font-size:.98rem;line-height:1.6}.tags{flex-wrap:wrap;gap:7px;margin-bottom:20px;display:flex}.tags span{font-family:var(--mono);border:1px solid var(--line);color:var(--ink-soft);padding:4px 9px;font-size:.72rem}.metrics{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.metric .m-label{font-family:var(--mono);color:var(--ink-soft);letter-spacing:.03em;margin-bottom:6px;font-size:.68rem;display:block}.metric .m-value{font-family:var(--sans);margin-bottom:8px;font-size:1.15rem;font-weight:700}.metric .m-value .of{color:var(--ink-soft);font-size:.7em;font-weight:400}.bar{background:var(--line);height:5px;position:relative;overflow:hidden}.bar span{width:var(--w,0%);background:var(--accent);position:absolute;inset:0}@media (width<=640px){.metrics{grid-template-columns:1fr 1fr}.diagram{height:340px}}.live-note{background:var(--accent-soft);border-left:2px solid var(--accent);margin:44px 0 60px;padding:18px 20px;font-size:.92rem;line-height:1.6}.live-note strong{font-family:var(--sans)}footer.page-footer{padding:0 0 60px}footer.page-footer .wrap{border-top:1px solid var(--line);padding-top:22px}footer.page-footer p{font-family:var(--mono);color:var(--ink-soft);margin:0;font-size:.76rem}
