:root{--ink:#16181d;--ink-soft:#4a5160;--ink-faint:#6b7280;--paper:#fbfaf8;--paper-raised:#fff;--rule:#e2e0da;--accent:#1f5d50;--accent-soft:#d9e8e3;--accent-ink:#123b33;--warn-bg:#fff4d6;--warn-rule:#d9a441;--warn-ink:#4a3607;--domain-1:#1f5d50;--domain-2:#6b3f8f;--domain-3:#a8562a;--measure:68ch;--radius:10px;--font-body:ui-serif, Georgia, "Iowan Old Style", "Times New Roman", serif;--font-ui:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root{--ink:#e8e6e1;--ink-soft:#b3b6bd;--ink-faint:#8a8f99;--paper:#14161a;--paper-raised:#1b1e24;--rule:#2e323a;--accent:#7fd3bf;--accent-soft:#1d3b35;--accent-ink:#b6e8db;--warn-bg:#3a2f14;--warn-rule:#a8802c;--warn-ink:#f0dfb4;--domain-1:#7fd3bf;--domain-2:#c3a0e0;--domain-3:#e0a077}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);margin:0;font-size:1.05rem;line-height:1.65}h1,h2,h3,h4,nav,.ui{font-family:var(--font-ui)}h1,h2,h3,h4{color:var(--ink);line-height:1.25}h1{letter-spacing:-.02em;font-size:clamp(1.75rem,1.2rem + 2.2vw,2.6rem)}h2{margin-top:2.2em;font-size:clamp(1.3rem,1.1rem + 1vw,1.7rem)}h3{margin-top:1.8em;font-size:1.15rem}a{color:var(--accent);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:3px}.skip-link{background:var(--accent);color:var(--paper-raised);z-index:100;font-family:var(--font-ui);padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.under-test{background:var(--warn-bg);border-bottom:2px solid var(--warn-rule);color:var(--warn-ink);font-family:var(--font-ui);text-align:center;padding:.7rem 1.2rem;font-size:.92rem}.under-test strong{letter-spacing:.02em}.shell{max-width:74rem;margin:0 auto;padding:0 1.25rem}.prose{max-width:var(--measure)}.site-header{border-bottom:1px solid var(--rule)}.site-header .shell{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;padding-block:1.1rem;display:flex}.wordmark{font-family:var(--font-ui);letter-spacing:-.01em;color:var(--ink);font-size:1.05rem;font-weight:650;text-decoration:none}.site-nav ul{flex-wrap:wrap;gap:1.1rem;margin:0;padding:0;font-size:.95rem;list-style:none;display:flex}.site-nav a{color:var(--ink-soft);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--accent);text-decoration:underline}.site-nav a[aria-current=page]{font-weight:600}main{padding-block:2.5rem 4rem}.site-footer{border-top:1px solid var(--rule);color:var(--ink-faint);font-family:var(--font-ui);padding-block:1.6rem 2.5rem;font-size:.88rem}.site-footer p{margin:.3rem 0}.lede{color:var(--ink-soft);max-width:var(--measure);font-size:1.2rem}.card-grid{grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1.1rem;margin:1.8rem 0 0;padding:0;list-style:none;display:grid}.card{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius);padding:1.2rem 1.3rem}.card h3{margin-top:0}.card p{color:var(--ink-soft)}.record-list{margin:2rem 0 0;padding:0;list-style:none}.record{border-top:1px solid var(--rule);padding:1.5rem 0}.record h3{margin:0 0 .35rem}.record h3 a{text-decoration:none}.record h3 a:hover{text-decoration:underline}.record .meta{font-family:var(--font-ui);color:var(--ink-faint);margin:0 0 .6rem;font-size:.88rem}.record p{color:var(--ink-soft);margin:.4rem 0}.tag-row{flex-wrap:wrap;gap:.4rem;margin:.8rem 0 0;padding:0;list-style:none;display:flex}.tag{font-family:var(--font-ui);background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;padding:.15rem .65rem;font-size:.78rem}.pill{font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--rule);color:var(--ink-faint);border-radius:999px;padding:.1rem .6rem;font-size:.75rem;display:inline-block}.download{font-family:var(--font-ui);background:var(--accent);color:var(--paper-raised);border-radius:var(--radius);align-items:center;gap:.5rem;padding:.6rem 1.05rem;font-size:.95rem;text-decoration:none;display:inline-flex}.download:hover{text-decoration:underline}@media (prefers-color-scheme:dark){.download{color:#10231f}}.paper-body{max-width:var(--measure)}.paper-body table{border-collapse:collapse;width:100%;font-family:var(--font-ui);margin:1.5rem 0;font-size:.9rem}.paper-body th,.paper-body td{border-bottom:1px solid var(--rule);text-align:left;padding:.5rem .7rem}.paper-body thead th{border-bottom:2px solid var(--ink-soft)}.table-scroll{overflow-x:auto}.figure{margin:2rem 0}.figure-svg{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius);width:100%;height:auto;padding:.5rem}.figure-svg line{stroke:var(--ink-faint);stroke-width:1.5px}.figure-svg .fig-funder{fill:var(--domain-1)}.figure-svg .fig-provider{fill:var(--domain-2)}.figure-svg .fig-label{font-family:var(--font-ui);fill:var(--ink-soft);font-size:11px}figcaption{font-family:var(--font-ui);color:var(--ink-faint);margin-top:.7rem;font-size:.88rem}.footnotes{border-top:1px solid var(--rule);color:var(--ink-soft);margin-top:3rem;font-size:.92rem}.cv-section{margin-top:2.5rem}.cv-entries{margin:0;padding:0;list-style:none}.cv-entry{border-top:1px solid var(--rule);grid-template-columns:9rem 1fr;gap:.4rem 1.5rem;padding:1rem 0;display:grid}.cv-entry .when{font-family:var(--font-ui);color:var(--ink-faint);font-size:.88rem}.cv-entry h3{margin:0;font-size:1.05rem}.cv-entry .where{font-family:var(--font-ui);color:var(--ink-soft);font-size:.9rem}.cv-entry p{color:var(--ink-soft);margin:.35rem 0 0}@media (width<=40rem){.cv-entry{grid-template-columns:1fr}}.video-frame{aspect-ratio:16/9;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius);margin:1.5rem 0;position:relative;overflow:hidden}.video-frame iframe{border:0;width:100%;height:100%;display:block}.video-poster{cursor:pointer;width:100%;font-family:var(--font-ui);color:var(--ink);background:radial-gradient(120% 120% at 50% 0%, var(--accent-soft) 0%, transparent 60%), var(--paper-raised);border:0;flex-direction:column;justify-content:center;align-items:center;gap:.8rem;font-size:1rem;display:flex;position:absolute;inset:0}.video-poster .play-mark{background:var(--accent);border-radius:50%;place-items:center;width:4.2rem;height:4.2rem;display:grid}.video-poster .play-mark svg{width:1.5rem;height:1.5rem;fill:var(--paper-raised)}@media (prefers-color-scheme:dark){.video-poster .play-mark svg{fill:#10231f}}.video-poster .note{color:var(--ink-faint);text-align:center;max-width:32ch;font-size:.85rem}.area{border-top:1px solid var(--rule);padding:1.4rem 0;scroll-margin-top:1.5rem}.area h3{margin-top:0}.area .domain-of{font-family:var(--font-ui);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;font-size:.8rem}.button{font-family:var(--font-ui);border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:#fff;cursor:pointer;padding:.6rem 1.2rem;font-size:1rem}.button:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.button[disabled]{opacity:.55;cursor:not-allowed}.contact-form{max-width:var(--measure);margin-top:2rem}.field{margin-bottom:1.4rem}.field label{font-family:var(--font-ui);margin-bottom:.35rem;font-size:.95rem;font-weight:600;display:block}.field .optional{color:var(--ink-faint);font-weight:400}.field input,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius);padding:.6rem .7rem}.field textarea{resize:vertical;min-height:8rem}.field input:focus-visible,.field textarea:focus-visible,.chat-form input:focus-visible,.button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.field input[aria-invalid=true],.field textarea[aria-invalid=true]{border-color:#a3322a}.field-hint{color:var(--ink-faint);margin:.35rem 0 0;font-size:.85rem}.field-error{font-family:var(--font-ui);color:#a3322a;margin:.35rem 0 0;font-size:.88rem}.field-error:empty{display:none}.honeypot{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.form-actions{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.form-status{font-family:var(--font-ui);color:var(--ink-soft);margin:0;font-size:.9rem}.form-status:empty{display:none}.form-note{border-left:4px solid var(--rule);background:var(--paper-raised);border-radius:0 var(--radius) var(--radius) 0;font-family:var(--font-ui);padding:.85rem 1rem;font-size:.95rem}.form-note-good{border-left-color:var(--accent);background:var(--accent-soft);color:var(--accent-ink)}.form-note-bad{border-left-color:#a3322a}.form-note-warn{border-left-color:var(--warn-rule);background:var(--warn-bg);color:var(--warn-ink)}.chat{max-width:var(--measure);margin-top:2rem}.chat-log{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-raised);min-height:12rem;max-height:26rem;padding:1rem;overflow-y:auto}.chat-empty{color:var(--ink-faint);font-family:var(--font-ui);margin:0;font-size:.92rem}.chat-turn{margin:0 0 1rem}.chat-turn:last-child{margin-bottom:0}.chat-who{font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin:0 0 .2rem;font-size:.78rem}.chat-text{margin:0}.chat-turn-user .chat-text{color:var(--ink)}.chat-turn-assistant .chat-text{color:var(--ink-soft)}.chat-turn-error .chat-text{color:#a3322a}.chat-form{gap:.6rem;margin-top:1rem;display:flex}.chat-form input{min-width:0;font:inherit;color:var(--ink);background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius);flex:auto;padding:.6rem .7rem}.chat-form input[disabled]{opacity:.6}.chat-status{font-family:var(--font-ui);color:var(--ink-faint);margin:.6rem 0 0;font-size:.85rem}.chat-status:empty{display:none}@media (width<=30rem){.chat-form{flex-wrap:wrap}.chat-form .button{width:100%}}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
