:root{--bg:#fdf8f0;--sunk:#f6f3ef;--text:#1e1b17;--text-soft:#4f4a43;--muted:#6d665d;--accent:#8c4a1f;--accent-hover:#6f3a17;--accent-soft:#8c4a1f14;--rule:#e8e3db;--rule-strong:#d3cabd;--radius-sm:4px;--radius:6px;--radius-pill:999px;--page:1140px;--measure:68ch;--rail:180px;--spread-gap:56px;--gutter:24px;--header-height:64px;--serif:"Source Serif 4", Georgia, "Times New Roman", serif;--sans:"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;flex-direction:column;margin:0;font-size:17px;line-height:1.7;display:flex}a{color:var(--accent);text-underline-offset:2px;text-decoration-thickness:1px;transition:color .15s}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}img{max-width:100%}h1,h2,h3,h4{letter-spacing:-.015em;text-wrap:balance;font-weight:600;line-height:1.2}.muted{color:var(--muted)}.container{width:100%;max-width:var(--page);padding-inline:var(--gutter);margin-inline:auto}.skip-link{left:var(--gutter);z-index:20;background:var(--bg);border:1px solid var(--rule-strong);border-radius:var(--radius);font-family:var(--sans);padding:8px 14px;font-size:14px;text-decoration:none;transition:transform .15s;position:absolute;top:0;transform:translateY(-150%)}.skip-link:focus-visible{transform:translateY(12px)}.site-header{z-index:10;background:var(--bg);border-bottom:1px solid var(--rule);position:sticky;top:0}.site-header__inner{max-width:var(--page);padding-inline:var(--gutter);height:var(--header-height);justify-content:space-between;align-items:center;gap:24px;margin-inline:auto;display:flex}.nav{gap:24px;display:flex}.nav-link{font-family:var(--sans);color:var(--text-soft);white-space:nowrap;font-size:14px;font-weight:500;text-decoration:none;transition:color .15s}.nav-link:hover,.nav-link[aria-current=page]{color:var(--accent)}main{flex:1;padding-block:88px 40px}.spread{grid-template-columns:var(--rail) minmax(0, 1fr);column-gap:var(--spread-gap);align-items:start;display:grid}.spread__rail{top:calc(var(--header-height) + 40px);align-self:start;position:sticky}.spread__body{max-width:50rem}.spread__title{margin:0;font-size:1.375rem;line-height:1.25}.spread__meta{font-family:var(--sans);color:var(--muted);margin:14px 0 0;font-size:13px;line-height:1.6}.spread__meta a:not(.tag){color:var(--text-soft);text-decoration:none}.spread__meta a:not(.tag):hover{color:var(--accent);text-decoration:underline}.spread+.spread{border-top:1px solid var(--rule);margin-top:88px;padding-top:40px}.page-index+.spread{margin-top:80px}section[id]{scroll-margin-top:calc(var(--header-height) + 24px)}.prose{max-width:var(--measure)}.masthead{margin-bottom:48px}.masthead__name{letter-spacing:-.03em;margin:0;font-size:clamp(2.5rem,1.9rem + 2.6vw,3.5rem);line-height:1.05}.masthead__role{font-family:var(--sans);color:var(--text-soft);margin:14px 0 0;font-size:16px;font-weight:400}.intro{column-gap:var(--spread-gap);grid-template-columns:280px minmax(0,1fr);align-items:start;display:grid}.intro__portrait{border-radius:0;width:100%;height:auto;display:block}.intro__contact{font-family:var(--sans);flex-direction:column;gap:12px;margin-top:20px;font-size:14px;display:flex}.intro__email{color:var(--text-soft);word-break:break-word;align-self:flex-start;text-decoration:none}.intro__email:hover{color:var(--accent);text-decoration:underline}.intro__links{flex-wrap:wrap;gap:6px;margin-left:-8px;display:flex}.intro__links a{width:34px;height:34px;color:var(--muted);border-radius:var(--radius-sm);justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.intro__links a:hover{color:var(--accent);background:var(--accent-soft)}.icon{display:block}.intro__lead{max-width:46rem;font-size:19px;line-height:1.65}.intro__lead p{margin:0 0 1em}.intro__lead p:last-child{margin-bottom:0}.page-index{border-top:1px solid var(--rule);font-family:var(--sans);flex-wrap:wrap;gap:28px;margin:56px 0 0;padding-top:18px;font-size:14px;font-weight:500;display:flex}.page-index a{color:var(--text-soft);text-decoration:none}.page-index a:hover{color:var(--accent)}.pub-group{font-family:var(--serif);letter-spacing:0;color:var(--muted);margin:44px 0 20px;font-size:15px;font-style:italic;font-weight:400}.pub-group:first-child{margin-top:0}.pubs{margin:0;padding:0;list-style:none}.pub{max-width:var(--measure);margin-bottom:32px}.pub:last-child{margin-bottom:0}.pub__title{margin:0 0 4px;font-size:1.0625rem;font-weight:600;line-height:1.45}.pub__authors{color:var(--text-soft);margin:0;font-size:15.5px}.pub__venue{color:var(--text-soft);font-variant-numeric:tabular-nums;margin:2px 0 0}.pub__note{color:var(--muted);margin:6px 0 0;font-size:14.5px}.pub__links{font-family:var(--sans);flex-wrap:wrap;gap:18px;margin:10px 0 0;font-size:13.5px;font-weight:500;display:flex}.talks{margin:0;padding:0;list-style:none}.talk{border-top:1px solid var(--rule);grid-template-columns:7.5rem minmax(0,1fr);column-gap:24px;padding:22px 0;display:grid}.talk:first-child{border-top:0;padding-top:0}.talk:last-child{padding-bottom:0}.talk__date{font-family:var(--sans);color:var(--muted);font-variant-numeric:tabular-nums;margin:0;padding-top:3px;font-size:13px}.talk__title{margin:0 0 3px;font-size:1.0625rem;font-weight:600;line-height:1.45}.talk__meta{color:var(--text-soft);font-family:var(--sans);margin:0;font-size:14px}.talk__links{font-family:var(--sans);margin:8px 0 0;font-size:13.5px;font-weight:500}.awards{margin:0;padding:0;list-style:none}.award{max-width:var(--measure);margin-bottom:32px}.award:last-child{margin-bottom:0}.award__title{margin:0 0 4px;font-size:1.0625rem;font-weight:600;line-height:1.45}.award__meta{font-family:var(--sans);color:var(--text-soft);font-variant-numeric:tabular-nums;margin:0;font-size:14px}.award__note{color:var(--muted);margin:6px 0 0;font-size:14.5px}.projects{margin:0;padding:0;list-style:none}.project{border-top:1px solid var(--rule);padding:48px 0}.project:first-child{border-top:0;padding-top:0}.project:last-child{padding-bottom:0}.project__name{margin:0 0 8px;font-size:1.375rem}.project__desc{max-width:var(--measure);color:var(--text-soft);margin:0 0 16px}.project__tags{flex-wrap:wrap;gap:6px;margin:0 0 16px;display:flex}.project__link{font-family:var(--sans);font-size:13.5px;font-weight:500}.project__shot{border:1px solid var(--rule);border-radius:var(--radius);width:100%;height:auto;margin-top:28px;display:block}.tag{font-family:var(--sans);color:var(--accent);background:var(--accent-soft);border-radius:var(--radius-pill);padding:3px 10px;font-size:12px;font-weight:500;line-height:1.6;text-decoration:none;transition:background-color .15s;display:inline-block}a.tag:hover{background:color-mix(in srgb, var(--accent) 18%, transparent);text-decoration:underline}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.tag-index{margin:0;padding:0;list-style:none}.tag-index li{border-top:1px solid var(--rule);max-width:30rem}.tag-index li:first-child{border-top:0}.tag-index a{color:var(--text);justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;text-decoration:none;display:flex}.tag-index a:hover{color:var(--accent)}.tag-index__count{font-family:var(--sans);color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.posts{--cover-max:200px;margin:0;padding:0;list-style:none}.posts>li+li{margin-top:40px}.post-item{padding-right:calc(var(--cover-max) + 28px);position:relative}.post-item--textonly{padding-right:0}.post-item__cover{width:var(--cover-max);border-radius:var(--radius);height:100%;display:block;position:absolute;top:0;right:0;overflow:hidden}.post-item__cover img{object-fit:contain;object-position:top right;width:100%;height:100%;display:block}.post-item__title{margin:0 0 8px;font-size:clamp(1.5rem,1.3rem + .7vw,1.75rem)}.post-item__title a{color:var(--text);text-decoration:none}.post-item__title a:hover{color:var(--accent)}.post-meta{margin-bottom:10px}.post-date{font-family:var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:12.5px;font-weight:500;display:block}.post-date+.post-date{margin-top:4px}.post-excerpt{max-width:var(--measure);color:var(--text-soft);margin:0 0 12px;font-size:15.5px}.article__title{letter-spacing:-.025em;max-width:44rem;margin:0 0 32px;font-size:clamp(2rem,1.6rem + 1.7vw,2.75rem);line-height:1.12}.article__cover{border-radius:var(--radius);width:100%;height:auto;margin-bottom:40px;display:block}.article__body{max-width:44rem}.article__body>:first-child{margin-top:0}.article__body h2{margin:2.25rem 0 .75rem;font-size:1.45rem}.article__body h3{margin:1.75rem 0 .6rem;font-size:1.18rem}.article__body p{margin:0 0 1.1em}.article__body ul,.article__body ol{padding-left:1.4em}.article__body li{margin-bottom:.35em}.article__body blockquote{border-left:2px solid var(--rule-strong);color:var(--text-soft);margin:1.75em 0;padding:0 0 0 1.25em}.article__body hr{border:0;border-top:1px solid var(--rule);margin:2.5rem 0}.article__body img{border-radius:var(--radius)}.article__body code,.intro__lead code{font-family:var(--mono);background:var(--sunk);border-radius:var(--radius-sm);padding:.15em .4em;font-size:.86em}.astro-code{border-radius:var(--radius);margin:1.75em 0;padding:18px 20px;font-size:14px;line-height:1.6;overflow-x:auto}.astro-code code{font-family:var(--mono);background:0 0;padding:0}.mjx-container{max-width:100%;padding:.2em 0;overflow:auto hidden}.mjx-container[display=true]{text-align:center;margin:1.4em 0;display:block}.mjx-container svg{max-width:100%}.closing-horizon{margin-block:0}.closing-horizon img{width:100%;height:auto;display:block}.closing-horizon+.site-footer{margin-top:0}.empty{max-width:var(--measure);color:var(--muted);margin:0;font-style:italic}.site-footer{border-top:1px solid var(--rule);margin-top:120px;padding:28px 0 48px}.site-footer .container{font-family:var(--sans);color:var(--muted);font-size:13px}@media (width<=900px){:root{--rail:150px;--spread-gap:36px}.intro{grid-template-columns:230px minmax(0,1fr)}}@media (width<=720px){:root{--gutter:20px}body{font-size:16px}main{padding-block-start:48px}.spread,.intro,.talk{grid-template-columns:minmax(0,1fr)}.masthead{margin-bottom:32px}.spread__rail{margin-bottom:24px;position:static}.spread+.spread{margin-top:56px;padding-top:32px}.intro{row-gap:28px}.intro__portrait{max-width:190px}.intro__lead{font-size:17px}.page-index{gap:20px;margin-top:40px}.closing-horizon{margin-block:0}.talk{row-gap:6px}.talk__date{order:-1;padding-top:0}.post-item{padding-right:0}.post-item__cover{width:100%;height:auto;margin-top:18px;position:static}.post-item__cover img{object-fit:initial;width:100%;height:auto}.project{padding:36px 0}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{:root{--text:#000;--text-soft:#333;--muted:#555;--accent:#000;--rule:#ccc}.site-header,.site-footer,.page-index,.skip-link{display:none}main{padding-block-start:0}.spread__rail{position:static}.spread+.spread{break-inside:avoid;margin-top:32px;padding-top:20px}.pub,.talk,.award,.project{break-inside:avoid}a{text-decoration:none}}
