:root{--bg:#ebe7da;--bg-alt:#e0dccd;--line:#d0cbb8;--line-strong:#b3ad98;--ink:#1d2a2c;--ink-soft:#4b5a5c;--accent:#0b6464;--accent-soft:#cfe3dd;--accent2:#d9a21b;--accent3:#c4482b;--sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--bg:#0d1819;--bg-alt:#142325;--line:#1f3335;--line-strong:#34504f;--ink:#e8e3d0;--ink-soft:#9fb0a8;--accent:#f0b429;--accent-soft:#2b2a14;--accent2:#4fb3a9;--accent3:#e4694a}}*,:before,:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{min-height:100vh;font-family:var(--sans);color:var(--ink);background:var(--bg);border-top:6px solid;border-image:linear-gradient(90deg, var(--accent) 0 34%, var(--accent2) 34% 67%, var(--accent3) 67%) 1;margin:0;font-size:1.0625rem;line-height:1.65}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--accent-soft)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.mono{font-family:var(--mono);font-size:.85rem}.skip{background:var(--accent);color:var(--bg);z-index:10;padding:.5rem .9rem;position:absolute;top:-4rem;left:1rem}.skip:focus{top:1rem}.top,main,footer{width:min(1080px,100% - 2rem);margin-inline:auto}.top{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-block:1.25rem;display:flex}.top nav{gap:1.5rem;display:flex}.top a{color:var(--ink-soft);font-size:.95rem;text-decoration:none}.top a:hover{color:var(--ink);text-underline-offset:4px;text-decoration:underline}h1,h2,h3{margin:0;line-height:1.05}h2{letter-spacing:-.02em;font-size:clamp(1.9rem,4vw,2.6rem);font-weight:800}p{max-width:62ch;margin:0 0 1rem}strong{font-weight:700}.soft,.meta{color:var(--ink-soft)}.meta strong{color:var(--ink)}section{border-bottom:1px solid var(--line-strong);padding-block:clamp(3.5rem,9vw,6.5rem)}.hero{gap:2.5rem;padding-top:clamp(3rem,8vw,5.5rem);display:grid}h1{letter-spacing:-.035em;font-size:clamp(3rem,9vw,6rem);font-weight:800;line-height:1}h1 .line{display:inline}h1 .line+.line:before{content:" "}.hero-copy{max-width:62ch}.lede{letter-spacing:-.01em;font-size:clamp(1.35rem,2.6vw,1.75rem);font-weight:500;line-height:1.3}.hero-copy .lede{margin-bottom:1.25rem;display:block}.work{gap:3rem;display:grid}.work-head h2{margin-bottom:1rem}.path{margin:0;padding:0 0 0 2.25rem;list-style:none;position:relative}.path:before{content:"";border-left:2px dashed var(--line-strong);position:absolute;top:.9rem;bottom:1.5rem;left:.6rem}.path li{padding-bottom:2rem;position:relative}.path li:last-of-type{padding-bottom:0}.node{border:2px solid var(--ink-soft);background:var(--bg);border-radius:50%;width:1.25rem;height:1.25rem;transition:background .3s,border-color .3s;position:absolute;top:.2rem;left:-2.25rem}.path h3{letter-spacing:-.01em;margin-bottom:.3rem;font-size:1.25rem;font-weight:700}.path li p{color:var(--ink-soft);max-width:52ch;margin:0}.packet{background:var(--accent2);opacity:0;border-radius:2px;width:14px;height:14px;margin-left:-7px;position:absolute;top:.9rem;left:.6rem;transform:rotate(45deg)}.path.run .packet{animation:3.6s cubic-bezier(.55,0,.35,1) forwards travel}.path.run .node{animation:.4s forwards lit;animation-delay:calc(var(--i) * .6s)}@keyframes travel{0%{opacity:1;top:.9rem}to{opacity:1;top:calc(100% - 1.5rem)}}@keyframes lit{to{background:var(--accent);border-color:var(--accent)}}.actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:1.5rem;display:flex}.button{background:var(--accent);color:var(--bg);border-radius:6px;padding:.7rem 1.25rem;font-weight:700;text-decoration:none;display:inline-block}.button:hover{filter:brightness(1.1)}.link{text-underline-offset:4px}.project{gap:1.5rem 3rem;display:grid}.project h3{letter-spacing:-.01em;margin-bottom:.35rem;font-size:1.35rem;font-weight:700}.project .meta{margin-bottom:.9rem}.tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.tags li{font-family:var(--mono);border:1px solid var(--line-strong);background:var(--bg-alt);padding:.15rem .6rem;font-size:.85rem}.points{max-width:62ch;margin:0;padding-left:1.2rem}.points li{margin-bottom:.75rem}.stack h2,.projects h2,.school h2,.resume h2,.contact h2{margin-bottom:2rem}.groups{gap:2.5rem;display:grid}.group h3{color:var(--ink-soft);border-bottom:1px solid var(--line-strong);margin-bottom:.9rem;padding-bottom:.6rem;font-size:1rem;font-weight:500}.group ul{flex-wrap:wrap;gap:.5rem .6rem;margin:0;padding:0;list-style:none;display:flex}.group li{font-family:var(--mono);border:1px solid var(--line-strong);background:var(--bg-alt);padding:.25rem .7rem;font-size:.95rem}.big{letter-spacing:-.02em;text-decoration-thickness:3px;text-decoration-color:var(--accent);text-underline-offset:6px;overflow-wrap:anywhere;font-size:clamp(1.1rem,4.4vw,2.4rem);font-weight:800}.big:hover{background:var(--accent-soft);text-decoration:none}.contact{border-bottom:0}footer{border-top:1px solid var(--line-strong);color:var(--ink-soft);padding-block:1.5rem 2.5rem}@media (width>=820px){.work{grid-template-columns:5fr 6fr;align-items:start;gap:4rem}.work-head{position:sticky;top:2rem}.project{grid-template-columns:5fr 6fr}.groups{grid-template-columns:repeat(3,1fr);gap:2rem}}@media (prefers-reduced-motion:reduce){.packet{display:none}.path .node{background:var(--accent);border-color:var(--accent)}}
