﻿@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url("fonts/source-serif-4-latin-opsz-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url("fonts/source-serif-4-latin-ext-opsz-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:200 900;font-display:swap;src:url("fonts/source-serif-4-latin-opsz-italic.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:200 900;font-display:swap;src:url("fonts/source-serif-4-latin-ext-opsz-italic.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/ibm-plex-mono-latin-ext-400-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/ibm-plex-mono-latin-ext-500-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--serif: "Source Serif 4", "Iowan Old Style", Georgia, serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--paper: #f3f1ea;--paper-raised: #e9e6dc;--ink: #1b1a17;--muted: #6b665c;--rule: #d9d4c7;--rule-strong: #bdb6a6;--accent: #1f5c4a;--measure: 40rem;--step: 1.5rem;color-scheme:light}:root[data-theme=dark]{--paper: #131311;--paper-raised: #1c1c19;--ink: #e4e0d6;--muted: #979184;--rule: #2c2b27;--rule-strong: #45433d;--accent: #7cc4ab;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{font-size:clamp(15px,.85rem + .2vw,16.5px);-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-optical-sizing:auto;line-height:1.6;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}::selection{background:var(--accent);color:var(--paper)}h1,h2,p,ol,figure{margin:0}a{color:inherit;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em;transition:color .15s ease}a:hover{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}img,svg{display:block;max-width:100%}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.page{width:100%;max-width:calc(var(--measure) + 2rem);margin-inline:auto;padding:0 16px calc(var(--step)*2)}.masthead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem;padding-top:calc(var(--step)*2);margin-bottom:calc(var(--step)*2)}.masthead__name{font-size:1.2rem;font-weight:600;letter-spacing:-.015em;text-decoration:none}.masthead__nav{display:flex;gap:1.1rem}.masthead__nav a{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);text-decoration:none;border-bottom:1px solid rgba(0,0,0,0)}.masthead__nav a:hover{color:var(--accent);border-bottom-color:currentColor}.masthead__nav a[aria-current]{color:var(--accent)}.theme-toggle{align-self:center;padding:0;background:none;border:0;color:var(--muted);opacity:.65;cursor:pointer;transition:color .15s ease,opacity .15s ease}.theme-toggle:hover,.theme-toggle:focus-visible{color:var(--accent);opacity:1}.theme-toggle svg{width:13px;height:13px;fill:currentColor}.theme-toggle svg+svg{display:none}[data-theme=dark] .theme-toggle svg:first-child{display:none}[data-theme=dark] .theme-toggle svg+svg{display:block}@media (scripting: none){.theme-toggle{display:none}}.wave{position:relative;flex-basis:100%;height:26px;margin-top:.6rem}.wave svg{position:absolute;inset:0;width:100%;height:100%}.wave path{fill:none;stroke-width:1.4;stroke-linecap:round;vector-effect:non-scaling-stroke}.wave__base path{stroke:var(--rule-strong)}.wave__lit{--lit-from: 0px;--lit-to: 0px;-webkit-mask-image:linear-gradient(to right, rgba(0,0,0,0) calc(var(--lit-from) - .5rem), #000 calc(var(--lit-from) + .5rem), #000 calc(var(--lit-to) - .5rem), rgba(0,0,0,0) calc(var(--lit-to) + .5rem));mask-image:linear-gradient(to right, rgba(0,0,0,0) calc(var(--lit-from) - .5rem), #000 calc(var(--lit-from) + .5rem), #000 calc(var(--lit-to) - .5rem), rgba(0,0,0,0) calc(var(--lit-to) + .5rem))}.wave__lit path{stroke:var(--accent);stroke-width:1.8}@media (prefers-reduced-motion: no-preference){@keyframes draw{from{clip-path:inset(-2px 100% -2px -2px)}to{clip-path:inset(-2px)}}.wave svg{animation:draw 1.4s cubic-bezier(.3, .5, .3, 1) .1s backwards}}.intro{display:grid;grid-template-columns:clamp(8.5rem,22vw,10.5rem) 1fr;gap:0 clamp(1.25rem,3vw,2rem);align-items:start}.intro__bio{display:flex;flex-direction:column;justify-content:center;min-height:clamp(8.5rem,22vw,10.5rem)}.portrait{position:relative;overflow:hidden;border-radius:.25rem;box-shadow:0 2px 5px rgba(0,0,0,.16),0 2px 10px rgba(0,0,0,.12);container-type:inline-size}.portrait__img{width:100%;height:auto;aspect-ratio:1;object-fit:cover}.randomart{position:absolute;inset:0;width:fit-content;height:fit-content;margin:auto;font-family:var(--mono);font-size:8.0701754386cqi;line-height:1.0363636364;color:var(--muted);opacity:0;pointer-events:none}.randomart span{color:var(--ink)}.randomart .randomart__head{color:var(--accent);font-weight:500}.randomart .randomart__end{font-weight:500}.portrait.is-walking .portrait__img{opacity:.1;filter:grayscale(1) blur(2px)}.portrait.is-walking .randomart{opacity:1}@media (prefers-reduced-motion: no-preference){.portrait__img,.randomart{transition:opacity .35s cubic-bezier(.2, .7, .3, 1),filter .35s ease,transform .35s cubic-bezier(.2, .7, .3, 1)}.randomart{transform:scale(.96)}.portrait.is-walking .randomart{transform:none}}.elsewhere{margin-top:.9rem;padding-inline:.1rem}.elsewhere__icons,.elsewhere__pgp{display:grid;grid-template-columns:repeat(5, 1fr);justify-items:center;align-items:center}.elsewhere__icons a{color:var(--muted);transition:color .15s ease}.elsewhere__icons a:hover{color:var(--accent)}.elsewhere__icons svg{width:15px;height:15px;fill:currentColor}.elsewhere__pgp{row-gap:.1rem;margin-top:.55rem;font-family:var(--mono);font-size:.6rem;letter-spacing:.04em;color:var(--ink);text-decoration:none;transition:color .15s ease}.elsewhere__pgp code{font-family:inherit}.elsewhere__pgp:hover,.elsewhere__pgp:hover .elsewhere__muted{color:var(--accent)}.elsewhere__muted{color:var(--muted);transition:color .15s ease}.intro__more{min-height:0;overflow:clip;overflow-clip-margin:.4rem}.intro__more p{padding-top:.8rem}.intro__toggle{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);align-self:flex-start;margin-top:.7rem;padding:0;background:none;border:0;border-bottom:1px solid var(--rule-strong);cursor:pointer;transition:color .15s ease,border-color .15s ease}.intro__toggle::after{content:" ↓"/""}.intro__toggle[aria-expanded=true]::after{content:" ↑"/""}.intro__toggle:hover{color:var(--accent);border-bottom-color:var(--accent)}@media (scripting: none){.intro__more[hidden]{display:block}.intro__toggle{display:none}}@media (max-width: 34rem){.intro{grid-template-columns:1fr;gap:1.25rem}.intro__side{width:min(100%,15rem);margin-inline:auto}.intro__bio{min-height:0}.elsewhere{margin-top:1.25rem}}.year+.year{margin-top:calc(var(--step)*1.75)}.year__label{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.72rem;padding-bottom:.4rem;border-bottom:1px solid var(--rule)}.entries{list-style:none;padding:0}.entry{position:relative;padding-block:.85rem;scroll-margin-top:var(--step)}.entry+.entry{border-top:1px solid var(--rule)}.entry:target .entry__title{color:var(--accent)}.entry__badge{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);display:block;margin-bottom:.2rem;color:var(--accent)}@media (min-width: 60rem){.entry__badge{position:absolute;right:calc(100% + 1.5rem);top:1.05rem;margin:0;white-space:nowrap;text-align:right}}.entry__title{font-weight:500;line-height:1.35;text-wrap:pretty}.entry__title a{text-decoration-color:rgba(0,0,0,0)}.entry__title a:hover{text-decoration-color:var(--accent)}.entry__authors{margin-top:.2rem;font-size:.9rem;color:var(--muted)}.entry__venue{font-size:.9rem;font-style:italic;color:var(--muted)}.meta{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);display:flex;flex-wrap:wrap;align-items:baseline;gap:0 .9rem;margin-top:.4rem}.meta a{text-decoration:none;border-bottom:1px solid var(--rule-strong)}.meta a:hover{border-bottom-color:var(--accent)}.tag{color:var(--accent)}.talk{display:flex;gap:1.25rem;align-items:center}.talk>div{flex:1;min-width:0}.talk__venue{font-weight:500;line-height:1.3;text-wrap:pretty}.talk__venue .tag{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);margin-left:.4rem;color:var(--accent);white-space:nowrap}.talk__when{margin-top:.15rem;font-size:.85rem;color:var(--muted)}.talk__title{margin-top:.35rem;font-size:.95rem;font-style:italic;line-height:1.4;text-wrap:pretty}.talk__thumb{flex:0 0 9.5rem;aspect-ratio:3/2;overflow:hidden;background:var(--paper-raised);border:1px solid var(--rule)}.talk__thumb img{width:100%;height:100%;object-fit:cover}@media (min-width: 60rem){.talk>div{display:grid}.talk .entry__badge,.talk__venue{grid-area:1/1;align-self:baseline}.talk .entry__badge{position:static;justify-self:start;transform:translateX(calc(-100% - 1.5rem))}}@media (min-width: 66rem){.talk:has(.talk__thumb){min-height:8.0333333333rem}.talk__thumb{position:absolute;left:calc(100% + 1.5rem);top:50%;transform:translateY(-50%);width:9.5rem}}@media (max-width: 34rem){.talk{flex-direction:column;align-items:stretch;gap:0}.talk>div{display:contents}.talk .entry__badge{order:-2;margin-bottom:.4rem}.talk__thumb{order:-1;flex-basis:auto;margin-bottom:.9rem}}.talk__zoom{display:block;width:100%;height:100%;cursor:zoom-in}body:has(.lightbox[open]){overflow:hidden}.lightbox{max-width:none;max-height:none;width:100%;height:100%;margin:0;padding:16px;border:0;background:rgba(0,0,0,0);cursor:zoom-out}.lightbox::backdrop{background:color-mix(in srgb, var(--paper) 94%, rgba(0,0,0,0));backdrop-filter:blur(3px)}.lightbox[open]{display:grid;place-items:center}.lightbox figure{display:grid;gap:.6rem;justify-items:center}.lightbox img{max-width:min(100%,72rem);max-height:calc(100vh - 6rem);object-fit:contain}.lightbox figcaption{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);text-align:center}@media (prefers-reduced-motion: no-preference){@keyframes zoom-in{from{opacity:0;transform:scale(.94)}}.lightbox[open] figure{animation:zoom-in .25s cubic-bezier(.2, .7, .3, 1)}}.foot{font-family:var(--mono);font-size:.66rem;font-weight:400;letter-spacing:.09em;text-transform:uppercase;font-variant-numeric:tabular-nums;color:var(--muted);display:flex;flex-wrap:wrap;justify-content:center;gap:.3rem .6rem;margin-top:calc(var(--step)*3);padding-top:var(--step);border-top:1px solid var(--rule);text-transform:none;letter-spacing:.02em}.foot a{text-decoration-color:rgba(0,0,0,0)}.foot a:hover{text-decoration-color:var(--accent)}.foot code{font-family:inherit}.foot__store{font-size:min(1em,2.5vw);white-space:nowrap}@media (max-width: 34rem){.foot{flex-direction:column;align-items:center}.foot__sep{display:none}}