:root{--mint:#dde8e2;--ink:#1b1f1d;--card:#eef4f0;--mid:#56635c;--line:#1b1f1d;--grow:#1fa85a;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--mint);color:var(--ink);background-image:linear-gradient(#1b1f1d10 1px,#0000 1px),linear-gradient(90deg,#1b1f1d10 1px,#0000 1px);background-size:24px 24px;margin:0;font:18px/1.6 Geist,system-ui,sans-serif}a{color:inherit}.mono{letter-spacing:.02em;font-family:Geist Mono,ui-monospace,monospace;font-size:14px}.w{max-width:1240px;margin:0 auto;padding:0 clamp(18px,4vw,56px)}.skip{position:absolute;left:-9999px}.skip:focus{background:var(--ink);color:var(--mint);z-index:50;padding:8px 12px;top:8px;left:8px}:focus-visible{outline:2px solid var(--grow);outline-offset:3px}.top{z-index:20;backdrop-filter:blur(8px);border-bottom:1px solid var(--ink);background:#dde8e2eb;position:sticky;top:0}.top .w{justify-content:space-between;align-items:center;gap:16px;min-height:70px;display:flex}.me{letter-spacing:-.03em;align-items:center;gap:10px;font-size:22px;font-weight:600;text-decoration:none;display:flex}.me small{color:var(--mid);letter-spacing:0;margin-left:6px;font:14px Geist Mono,monospace}.top nav{gap:22px;display:flex}.top nav a,.back{text-decoration:none}.top nav a:hover,.back:hover{color:var(--grow)}@media (width<=820px){.top nav{display:none}}@media (width<=560px){.me small{display:none}.back{white-space:nowrap;font-size:13px}}.label{text-transform:uppercase;border-bottom:1px solid var(--ink);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:28px;padding-bottom:12px;display:flex}.sec{padding:72px 0 0}.hero{padding-top:48px}.hero-grid{grid-template-columns:minmax(0,380px) minmax(0,1fr);align-items:center;gap:clamp(28px,5vw,72px);display:grid}@media (width<=820px){.hero-grid{grid-template-columns:minmax(0,1fr)}.portrait{max-width:300px}}.portrait{margin:0;position:relative}.portrait img{aspect-ratio:1;object-fit:cover;border:2px solid var(--ink);background:var(--card);border-radius:50%;width:100%;height:auto;display:block}.portrait figcaption{background:var(--ink);color:var(--mint);padding:8px 12px;line-height:1.4;position:absolute;bottom:6px;right:-6px}h1{letter-spacing:-.055em;margin:0;font-size:clamp(52px,8vw,120px);font-weight:500;line-height:.9}.role{text-transform:uppercase;letter-spacing:.06em;color:var(--grow);margin:18px 0 0;font:500 15px Geist Mono,monospace}.lede{max-width:640px;margin:16px 0 0;font-size:clamp(19px,1.8vw,23px)}.btns{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.b{border:1px solid var(--ink);background:var(--card);align-items:center;min-height:46px;padding:0 18px;font-weight:500;text-decoration:none;display:inline-flex}.b:hover,.b.dark{background:var(--ink);color:var(--mint)}.b.dark:hover{background:var(--grow);border-color:var(--grow);color:#fff}.stats{background:var(--ink);border:1px solid var(--ink);grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin-top:48px;display:grid}@media (width<=700px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.stats div{background:var(--card);flex-direction:column;gap:4px;padding:18px 20px;display:flex}.stats b{letter-spacing:-.04em;font-size:clamp(36px,4vw,52px);font-weight:500;line-height:1}.stats span{color:var(--mid);text-transform:uppercase}.term{color:#d6e2db;border:1px solid var(--ink);background:#121614}.term-bar{border-bottom:1px solid #2a322e;align-items:center;gap:7px;padding:10px 14px;display:flex}.term-bar i{background:#2f3833;border-radius:50%;width:11px;height:11px}.term-bar i:first-child{background:var(--grow)}.term-bar span{color:#8c9891;margin-left:10px}.term-out{white-space:pre-wrap;word-break:break-word;height:300px;padding:16px 18px;font:15px/1.7 Geist Mono,monospace;overflow-y:auto}.term-out .tl b{color:#fff}.term-out .c{color:#5fe39a}.term-out .dim{color:#8c9891}.term-out .err{color:#ff9c86}.term-out a{color:#5fe39a}.term-in{border-top:1px solid #2a322e;align-items:center;gap:10px;padding:12px 18px;display:flex}.term-in label{color:#5fe39a;font-size:16px}.term-in input{color:#fff;background:0 0;border:0;outline:none;flex:1;min-height:36px;font-size:16px}.term-chips{flex-wrap:wrap;gap:8px;padding:0 18px 16px;display:flex}.term-chips button{color:#d6e2db;cursor:pointer;background:#1b211e;border:1px solid #2f3833;min-height:40px;padding:8px 12px}.term-chips button:hover{color:#5fe39a;border-color:#5fe39a}kbd{font:inherit;background:var(--ink);color:var(--mint);padding:1px 6px}.heat-wrap{padding-bottom:6px;overflow-x:auto}.months{gap:3px;margin-bottom:6px;display:flex}.months span{width:14px;color:var(--mid);white-space:nowrap;flex:none;font-size:12px}.heat{gap:3px;width:max-content;display:flex}.wk{flex-direction:column;gap:3px;display:flex}.heat i,.legend i{border:1px solid #1b1f1d22;width:14px;height:14px;display:block}.l0{background:var(--card)}.l1{background:#a9ddbf}.l2{background:#5cc48a}.l3{background:#1fa85a}.l4{background:#0b5e30}.lx{visibility:hidden}.heat i:hover{outline:2px solid var(--ink)}.readout{min-height:22px;margin:12px 0 0;font-size:15px}.legend{color:var(--mid);align-items:center;gap:4px;margin-top:8px;display:flex}.lbar{border:1px solid var(--ink);height:44px;display:flex}.lbar span{transition:opacity .2s}.lbar span.hl{outline:3px solid var(--ink);outline-offset:-3px}.lbar:has(.hl) span:not(.hl){opacity:.35}.llist{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:18px 0 0;padding:0;list-style:none;display:grid}.llist b{font-size:16px;font-weight:500}.llist li{border:1px solid var(--ink);background:var(--card);cursor:default;align-items:center;gap:10px;padding:10px 12px;display:flex}.llist li.hl{background:var(--ink);color:var(--mint)}.llist i{border:1px solid var(--ink);flex:none;width:16px;height:16px}.llist span{margin-left:auto}.filters{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.filters button{background:var(--card);border:1px solid var(--ink);cursor:pointer;min-height:42px;color:var(--ink);padding:0 14px}.filters button[aria-pressed=true]{background:var(--ink);color:var(--mint)}.plist{border-top:1px solid var(--ink)}.proj{border-bottom:1px solid var(--ink)}.proj summary{cursor:pointer;grid-template-columns:44px minmax(0,1.4fr) minmax(0,.8fr) minmax(0,1fr) 24px;align-items:baseline;gap:14px;padding:18px 4px;list-style:none;display:grid}.proj summary::-webkit-details-marker{display:none}.proj summary:hover .pname{color:var(--grow)}.idx,.pcat,.plang{color:var(--mid)}.pname{letter-spacing:-.03em;font-size:clamp(22px,2.4vw,32px);font-weight:500;line-height:1.1}.plus{text-align:right;font-size:24px;transition:transform .2s}.proj[open] .plus{transform:rotate(45deg)}@media (width<=700px){.proj summary{grid-template-columns:34px minmax(0,1fr) 20px}.pcat,.plang{display:none}}.pbody{max-width:860px;padding:0 4px 22px 58px}@media (width<=700px){.pbody{padding-left:4px}}.pbody p{margin:0 0 14px}.tags{flex-wrap:wrap;gap:6px;display:flex}.tags span{border:1px solid var(--ink);background:var(--card);padding:3px 8px;font-size:13px}.plinks{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.stack{flex-wrap:wrap;gap:8px;display:flex}.stack span{border:1px solid var(--ink);background:var(--card);padding:10px 16px;font-weight:500}.stack span.core{background:var(--ink);color:var(--mint)}.who{columns:2 320px;column-gap:32px;margin:32px 0 0;padding:0;list-style:none}.who li{break-inside:avoid;border-bottom:1px dashed #1b1f1d55;padding:10px 0 10px 28px;position:relative}.who li:before{content:"›";color:var(--grow);font-weight:600;position:absolute;left:6px}.now{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.now a{border:1px solid var(--ink);background:var(--card);flex-direction:column;gap:6px;min-height:150px;padding:22px;text-decoration:none;display:flex}.now a:hover{background:var(--ink);color:var(--mint)}.now b{letter-spacing:-.03em;font-size:28px;font-weight:500}.contact{padding-bottom:72px}.contact h2{letter-spacing:-.05em;margin:0;font-size:clamp(44px,7vw,96px);font-weight:500;line-height:.95}.contact h2 span{color:var(--grow)}.foot{color:var(--mid);margin-top:48px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
