:root{--paper: #edf1f2;--panel: #f8fafa;--ink: #12222c;--soft: #4a5e6b;--steel: #7f909b;--line: #c9d3d8;--pipe: #0e7c86;--pipe-dark: #0a6670;--valve: #e3a008;--head: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;--body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--rail: 56px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:4.5rem}body{margin:0;background:var(--paper);color:var(--ink);font:400 1.0625rem/1.65 var(--body);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--head);line-height:1.1;margin:0}p{margin:0}ul,ol,dl{margin:0;padding:0;list-style:none}a{color:var(--pipe-dark);text-underline-offset:3px}a:hover{color:var(--ink)}:focus-visible{outline:3px solid var(--valve);outline-offset:3px;border-radius:2px}.status{padding:4rem 1.5rem;color:var(--soft)}.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.6rem 1rem;z-index:20}.skip:focus{left:0}.bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem clamp(1.25rem,5vw,4rem);background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.bar-name{font:800 1.1rem var(--head)}.bar nav{display:flex;gap:1.4rem;margin-left:auto}.bar nav a{color:var(--ink);text-decoration:none;font-weight:500;font-size:.95rem}.bar nav a:hover{text-decoration:underline;text-decoration-color:var(--valve);text-decoration-thickness:3px}.lang{font:600 .85rem var(--body);padding:.35rem .7rem;cursor:pointer;background:transparent;color:var(--ink);border:1.5px solid var(--steel);border-radius:999px}.lang:hover{border-color:var(--pipe);color:var(--pipe-dark)}main{padding:0 clamp(1.25rem,5vw,4rem);max-width:68rem;margin:0 auto}.block{padding:clamp(3rem,8vw,6rem) 0 0}.block>h2{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;margin-bottom:2rem}.hero{padding:clamp(3.5rem,11vw,8rem) 0 0}.place{color:var(--soft);font-size:.95rem;margin-bottom:1rem}.hero h1{font-size:clamp(3.4rem,13vw,9rem);font-weight:800;letter-spacing:-.035em}.headline{font:600 clamp(1.4rem,3.4vw,2.2rem)/1.2 var(--head);margin-top:1.5rem;max-width:22ch}.summary{margin-top:1.5rem;max-width:60ch;color:var(--soft)}.links{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:1.5rem;font-weight:500}.flow{position:relative;padding-left:var(--rail);--fill: 0px}.flow:before{content:"";position:absolute;left:11px;top:0;bottom:0;width:2px;background:var(--line)}.flow:after{content:"";position:absolute;left:10px;top:0;width:4px;height:var(--fill);background:var(--pipe);border-radius:2px}.unit{position:relative;padding-bottom:3.25rem}.unit:last-child{padding-bottom:.5rem}.valve{position:absolute;left:calc(var(--rail) * -1);top:.15rem;z-index:1;width:24px;height:24px;border-radius:50%;background:var(--paper);border:2px solid var(--steel);transition:background .35s,border-color .35s}.valve:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;border-radius:50%;background:var(--steel);transition:background .35s}.unit.on .valve{border-color:var(--pipe)}.unit.on .valve:after{background:var(--valve)}.period{font-size:.9rem;font-weight:600;color:var(--pipe-dark);font-variant-numeric:tabular-nums;margin-bottom:.35rem}.unit h3{font-size:clamp(1.3rem,2.6vw,1.7rem);font-weight:600}.org{color:var(--soft);margin-top:.25rem}.bullets{margin-top:1rem;max-width:62ch}.bullets li{padding-left:1.1rem;position:relative;margin-bottom:.45rem}.bullets li:before{content:"";position:absolute;left:0;top:.78em;width:.5rem;height:2px;background:var(--steel)}.tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.tags li{font-size:.82rem;font-weight:500;padding:.15rem .6rem;border:1px solid var(--steel);border-radius:4px;background:var(--panel)}.rows{border-top:2px solid var(--ink)}.row{display:grid;grid-template-columns:5rem 1fr;gap:1rem;padding:1.6rem 0;border-bottom:1px solid var(--line)}.row-year{font-variant-numeric:tabular-nums;color:var(--soft);font-weight:500}.row h3{font-size:1.45rem;font-weight:600}.row h3 a{color:var(--ink);text-decoration-color:var(--valve);text-decoration-thickness:3px}.kind{color:var(--pipe-dark);font-size:.92rem;font-weight:500;margin:.3rem 0 .6rem}.row p:not(.kind){max-width:62ch}.two{display:grid;grid-template-columns:1fr;gap:3rem}.plain li{margin-bottom:1.3rem}.plain h3{font-size:1.15rem;font-weight:600}.plain .kind{margin:.15rem 0 0}.plain.tight li{margin-bottom:.25rem}.sub{font-size:1.05rem;font-weight:600;margin:1.8rem 0 .6rem}.skills>div{display:grid;grid-template-columns:9rem 1fr;gap:.5rem;padding:.6rem 0;border-bottom:1px solid var(--line)}.skills dt{font-weight:600}.skills dd{margin:0;color:var(--soft)}.form{display:grid;grid-template-columns:1fr 1fr;gap:1rem;max-width:40rem}.form label{display:grid;gap:.35rem;font-weight:500;font-size:.95rem}.form .wide,.form button,.form .note{grid-column:1 / -1}.form input,.form textarea{font:inherit;padding:.7rem .8rem;background:var(--panel);color:var(--ink);border:1.5px solid var(--steel);border-radius:6px}.form input:focus,.form textarea:focus{outline:3px solid var(--valve);outline-offset:1px;border-color:var(--ink)}.form button{justify-self:start;font:600 1rem var(--body);padding:.75rem 1.4rem;cursor:pointer;background:var(--ink);color:#fff;border:0;border-radius:6px}.form button:hover:not(:disabled){background:var(--pipe-dark)}.form button:disabled{opacity:.6;cursor:progress}.hp{position:absolute;left:-9999px}.note{min-height:1.5em;font-weight:500}.note.ok{color:var(--pipe-dark)}.note.err{color:#a32b1d}main:after{content:"";display:block;height:clamp(4rem,10vw,7rem)}@media (min-width: 52rem){.two{grid-template-columns:1fr 1fr;gap:4rem}}@media (max-width: 40rem){:root{--rail: 40px}.bar nav{display:none}.bar{justify-content:space-between}.row{grid-template-columns:1fr;gap:.2rem}.skills>div{grid-template-columns:1fr;gap:0}.form{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.valve,.valve:after{transition:none}}
