:root{--bg:#0d1b33;--bg-2:#12233f;--ink:#f0f4fb;--muted:#9fb0cc;--rule:#20335a;--warm:#ff9470;--cool:#86c8ff;--display:"Geist", "Helvetica Neue", Arial, sans-serif;--body:"Figtree", system-ui, -apple-system, sans-serif;--mono:"JetBrains Mono", ui-monospace, Menlo, monospace;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55}a{color:inherit}:focus-visible{outline:2px solid var(--warm);outline-offset:3px;border-radius:2px}.gutter{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.hero{position:relative;min-height:600px;overflow:hidden;border-bottom:1px solid var(--rule)}.hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block;cursor:grab;touch-action:pan-y}.hero canvas.drag{cursor:grabbing}.hero-in{position:relative;max-width:1180px;margin:0 auto;min-height:600px;display:flex;flex-direction:column;justify-content:space-between;padding-block:28px 32px;pointer-events:none}.hero-in>*{pointer-events:auto}.bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:14px;color:var(--muted)}.bar nav{display:flex;gap:18px;flex-wrap:wrap}.bar a{text-decoration:none}.bar a:hover{color:var(--ink)}.mark{font-family:var(--mono);font-size:13px;color:var(--ink)}.title{max-width:640px}.title h1{font-family:var(--display);font-weight:600;font-size:clamp(36px,4.6vw,56px);line-height:1.02;letter-spacing:-.035em;margin:0 0 20px;text-wrap:balance}.title p{font-size:clamp(17px,1.6vw,20px);line-height:1.45;color:var(--ink);margin:0;max-width:34ch;opacity:.92}.title p .also{display:block;margin-top:6px;color:var(--muted)}.title p b{font-weight:600;color:var(--warm)}.title p i{font-style:normal;font-weight:600;color:var(--cool)}.spec{display:flex;flex-wrap:wrap;gap:14px 28px;align-items:flex-end;justify-content:space-between}.chips{display:flex;gap:6px;flex-wrap:wrap}.chips button{font:500 13px var(--mono);color:var(--muted);background:color-mix(in srgb,var(--bg) 70%,transparent);border:1px solid var(--rule);padding:7px 12px;border-radius:999px;cursor:pointer;backdrop-filter:blur(4px)}.chips button:hover{color:var(--ink);border-color:var(--muted)}.chips button[aria-pressed=true]{color:var(--bg);background:var(--ink);border-color:var(--ink)}.readout{font-variant-numeric:tabular-nums;font-family:var(--mono);font-size:12px;color:var(--muted);line-height:1.7;text-align:right}.chips .go{color:var(--warm);border-color:color-mix(in srgb,var(--warm) 45%,transparent)}.chips .go:hover{color:var(--bg);background:var(--warm);border-color:var(--warm)}.readout b{color:var(--ink);font-weight:500}.readout .sw{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 4px 0 10px;vertical-align:0}main{max-width:1180px;margin:0 auto}.sec{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:24px 64px;padding-block:64px;border-bottom:1px solid var(--rule)}.sec h2{font-family:var(--display);font-weight:600;font-size:clamp(24px,2.5vw,32px);line-height:1.1;letter-spacing:-.018em;margin:0;text-wrap:balance}.sec h2 small{display:block;font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.lead{font-size:clamp(18px,1.7vw,21px);line-height:1.4;margin:0 0 20px;max-width:none;font-family:var(--display);font-weight:400;letter-spacing:-.01em}.prose p{color:var(--muted);max-width:62ch;margin:0 0 14px;font-size:16px}#about{grid-template-rows:auto auto;row-gap:20px}.about-label{grid-column:1;grid-row:1;margin:0}.about-photo{grid-column:1;grid-row:2;position:relative;max-width:240px;min-height:160px}.about-photo .portrait{position:absolute;inset:0;height:100%;aspect-ratio:auto;-o-object-position:50% 20%;object-position:50% 20%}.about-text{grid-column:2;grid-row:2;min-width:0}.about-text .prose p:last-child{margin-bottom:0}@media (max-width:820px){#about{grid-template-rows:none}#about .about-label,#about .about-photo,#about .about-text{grid-column:1;grid-row:auto}#about .about-photo{max-width:120px;min-height:0}#about .about-photo .portrait{position:static;height:auto;aspect-ratio:240/283}}.portrait{display:block;width:100%;height:auto;aspect-ratio:240/283;-o-object-fit:cover;object-fit:cover;border-radius:6px;filter:grayscale(.25) contrast(1.02);opacity:.95}#about .prose p{max-width:66ch}.threads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--rule);border:1px solid var(--rule)}.thread{background:var(--bg);padding:24px 22px;display:flex;flex-direction:column;gap:8px}.thread .k{font-family:var(--mono);font-size:12px;color:var(--muted);letter-spacing:.04em}.thread h3{font-family:var(--display);font-weight:600;font-size:19px;line-height:1.15;margin:0;letter-spacing:-.01em}.thread p{margin:0;color:var(--muted);font-size:15px}.thread .fig{font-family:var(--mono);font-size:13px;color:var(--warm);margin-top:auto;padding-top:6px}.cp{margin-top:auto;padding-top:10px}.cp summary{cursor:pointer;list-style:none;font-family:var(--mono);font-size:12px;color:var(--warm);display:inline-block;padding-block:4px}.cp summary::-webkit-details-marker{display:none}.cp summary:before{content:"+ "}.cp[open] summary:before{content:"− "}.cp ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:10px}.cp li{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;font-size:14px;line-height:1.4}.cp .cy{font-family:var(--mono);font-size:12px;color:var(--muted);padding-top:2px}.cp a{text-decoration:none;color:var(--ink)}.cp a:hover{color:var(--warm)}.cp .cv{display:block;color:var(--muted);font-size:12px;font-style:italic;margin-top:1px}.list{list-style:none;margin:0;padding:0}.list li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 20px;padding-block:16px;border-top:1px solid var(--rule);align-items:baseline}.list li:last-child{border-bottom:1px solid var(--rule)}.list .n{font-family:var(--display);font-size:18px;font-weight:600;letter-spacing:-.01em}.list .n a{text-decoration:none}.list .n a:hover{color:var(--warm)}.list .d{grid-column:1;color:var(--muted);font-size:15px}.list .r{font-family:var(--mono);font-size:12px;color:var(--muted);grid-row:1;grid-column:2;white-space:nowrap}.list .r.hi{color:var(--cool)}.pubs li{display:grid;grid-template-columns:56px minmax(0,1fr);gap:16px;padding-block:16px;border-top:1px solid var(--rule)}.pubs{list-style:none;margin:0;padding:0}.pubs .y{font-family:var(--mono);font-size:13px;color:var(--muted);padding-top:3px}.pubs a{text-decoration:none;font-size:16px;line-height:1.4}.pubs a:hover{color:var(--warm)}.pubs .j{display:block;font-size:14px;color:var(--muted);margin-top:2px;font-style:italic}.more{display:inline-block;margin-top:18px;font-family:var(--mono);font-size:13px;color:var(--warm);text-decoration:none;border-bottom:1px solid currentColor}.path{display:grid;gap:0}.path div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding-block:14px;border-top:1px solid var(--rule)}.path .t{font-family:var(--mono);font-size:13px;color:var(--muted);padding-top:3px;font-variant-numeric:tabular-nums}.path b{font-weight:600;display:block}.path span span{display:block;color:var(--muted);font-size:15px}.path span .f{font-size:14px;opacity:.85;margin-top:2px}.contact{padding-block:72px 56px}.contact h2{font-family:var(--display);font-weight:700;font-size:clamp(26px,3.2vw,40px);line-height:1.1;letter-spacing:-.02em;margin:0 0 16px;text-wrap:balance}.contact .cta-sub{font-family:var(--body);font-size:clamp(16px,1.6vw,19px);line-height:1.45;color:var(--muted);margin:0 0 24px;max-width:46ch}.contact .addr{font-family:var(--mono);font-size:clamp(15px,1.6vw,18px);color:var(--warm);-webkit-user-select:all;-moz-user-select:all;user-select:all}.contact .links{display:flex;flex-wrap:wrap;gap:10px 24px;margin-top:24px;font-size:15px;color:var(--muted)}.contact .links a{text-underline-offset:4px}.contact .links a:hover{color:var(--ink)}.colophon{margin-top:56px;font-family:var(--mono);font-size:12px;color:var(--muted);max-width:80ch;line-height:1.7}.stats{display:flex;flex-wrap:wrap;gap:12px 56px;margin:32px 0 0}.stats div{background:none;padding:0}.stats dt{font-family:var(--display);font-weight:600;font-size:clamp(22px,2.2vw,26px);letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}.stats dd{margin:4px 0 0;color:var(--muted);font-size:13px;line-height:1.4}.path h3{font-family:var(--mono);font-size:12px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}.path div+h3{margin-top:32px}.pubs li.yr{display:block;border-top:0;padding:24px 0 4px;font-family:var(--mono);font-size:13px;color:var(--ink)}details.all{margin-top:8px}details.all summary{cursor:pointer;font-family:var(--mono);font-size:13px;color:var(--warm);padding-block:12px;list-style:none;border-top:1px solid var(--rule)}details.all summary::-webkit-details-marker{display:none}details.all summary:before{content:"+ "}details.all[open] summary:before{content:"− "}details.all .c{display:none}details.all[open] .o{display:none}details.all[open] .c{display:inline}.pubs>li.yr:first-child{padding-top:0}details.all .pubs li.yr:first-child{padding-top:8px}.pubs .nl{font-size:16px;line-height:1.4}details.all .pubs .nl{font-size:15px}details.all .pubs a{font-size:15px}details.all .pubs li{padding-block:10px}.more+.more{margin-left:20px}@media (max-width:480px){.stats{gap:12px 28px}}@media (max-width:820px){.portrait{max-width:96px}.hero-in{justify-content:flex-end;gap:20px}.hero-in .bar{margin-bottom:auto}.sec{grid-template-columns:minmax(0,1fr);padding-block:44px}.threads{grid-template-columns:minmax(0,1fr)}.hero,.hero-in{min-height:640px}.readout{text-align:left}}@media (max-width:480px){.bar{flex-direction:column;align-items:flex-start;gap:10px}.bar nav{gap:16px}.hero,.hero-in{min-height:560px}.thread{padding:20px 18px}.path div,.pubs li{grid-template-columns:minmax(0,1fr);gap:2px}.list li{grid-template-columns:minmax(0,1fr)}.list .r{grid-row:auto;grid-column:1}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
