/* Editorial reading typography with locally served Source Serif 4 and IBM Plex Sans. */
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/source-serif-4-normal-400.ttf') format('truetype')}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/source-serif-4-normal-600.ttf') format('truetype')}
@font-face{font-family:'Source Serif 4';font-style:italic;font-weight:400;font-display:swap;src:url('/fonts/source-serif-4-italic-400.ttf') format('truetype')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/ibm-plex-sans-400.ttf') format('truetype')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/ibm-plex-sans-500.ttf') format('truetype')}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/ibm-plex-sans-600.ttf') format('truetype')}
:root{color-scheme:light;--paper:#fafbfc;--ink:#252b34;--muted:#606a78;--rule:#dce1e8;--accent:#305c9c;--code:#eef1f5;--text:'IBM Plex Sans','Helvetica Neue',Helvetica,Arial,sans-serif;--serif:'Source Serif 4',Georgia,'Times New Roman',serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
*{box-sizing:border-box}
html{scroll-padding-top:2rem}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--text);font-size:18px;line-height:1.75;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration-color:var(--rule);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{color:var(--accent);text-decoration-color:currentColor}
a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
::selection{background:#d6e5fa;color:#18283d}
.shell{max-width:1120px;margin-inline:auto;padding-inline:44px}
.site-header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding-block:26px;border-bottom:1px solid var(--rule)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.theme-switch{display:flex;gap:2px;margin:0;margin-inline-start:auto;padding:0;border:0;min-width:0}
.theme-switch label{position:relative;cursor:pointer}
.theme-switch input{position:absolute;width:1px;height:1px;opacity:0}
.theme-switch span[aria-hidden='true']{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;color:var(--muted)}
.theme-icon{width:18px;height:18px;display:block}
.theme-switch input:checked+span{background:var(--code);color:var(--accent)}
.theme-switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.theme-switch label:hover span{background:var(--code);color:var(--accent)}
/* Offer the opposite appearance and System; use the effective OS palette too. */
.theme-switch label:has(input[value='light']){display:none}
:root[data-theme='dark'] .theme-switch label:has(input[value='light']){display:block}
:root[data-theme='dark'] .theme-switch label:has(input[value='dark']){display:none}
@media(prefers-color-scheme:dark){
  :root:not([data-theme='light']) .theme-switch label:has(input[value='light']){display:block}
  :root:not([data-theme='light']) .theme-switch label:has(input[value='dark']){display:none}
}
.brand{font-size:20px;text-decoration:none;font-weight:600;white-space:nowrap;letter-spacing:-.025em}
.brand span{color:var(--accent)}
nav{display:flex;gap:22px;align-items:center}
nav a,.eyebrow,.meta,.section-label,.year,.footer,.back,.article-note{font-family:var(--text);font-size:12px;line-height:1.5;letter-spacing:0}
nav a{text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
nav a:last-child{color:var(--muted)}
.intro{padding-block:48px 42px;max-width:650px}
.eyebrow{color:var(--accent);margin:0 0 17px;text-transform:uppercase;letter-spacing:.08em}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.15;text-wrap:pretty}
h1{font-size:52px;letter-spacing:-.035em;margin:0 0 22px}
.intro p:not(.eyebrow){font-family:var(--text);font-size:19px;line-height:1.6;margin:0 0 14px}
.intro .aside{color:var(--muted);font-size:17px!important}
.section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-weight:400;margin:0;padding-block:0 13px;border-bottom:1px solid var(--rule)}
.entries{list-style:none;padding:0;margin:0 0 45px}
.entry{display:grid;grid-template-columns:85px minmax(0,1fr);gap:15px;padding-block:24px;border-bottom:1px solid var(--rule)}
.entries > .entry:last-child{border-bottom:0}
.year{padding-top:5px;color:var(--muted)}
.year.new{color:var(--accent)}
.entry h3{font-size:28px;line-height:1.2;letter-spacing:-.025em;margin:0 0 10px}
.entry h3 a{text-decoration:none}
.entry h3 a:hover{text-decoration:underline}
.entry p{font-size:15px;color:var(--muted);margin:0;line-height:1.6}
.entry .watch{display:inline-block;margin-top:10px;color:var(--accent);font-size:14px;min-height:44px;align-content:center}
.footer{display:flex;justify-content:space-between;gap:20px;color:var(--muted);border-top:1px solid var(--rule);padding-block:24px 38px;margin-top:40px}
.footer p{margin:0}
.footer a{display:inline-flex;align-items:center;min-height:44px}
.social-links{display:flex;flex-wrap:wrap;gap:16px;align-content:center}
.footer .footer-note{max-width:360px;align-content:center}
.skip{position:absolute;left:16px;top:-100px;padding:8px 15px;background:var(--ink);color:var(--paper);z-index:10}
.skip:focus{top:8px}

.article-header{padding-top:35px;margin-bottom:30px;max-width:680px}
.back{color:var(--muted);display:inline-flex;align-items:center;min-height:44px;margin-bottom:20px}
.article-header h1{font-size:52px;line-height:1.1;margin-top:15px;margin-bottom:23px;letter-spacing:-.035em}
.meta{color:var(--muted);display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.article-note{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding-block:14px;color:var(--muted);margin-block:22px}
.article-layout{display:grid;grid-template-columns:minmax(0,680px) minmax(0,230px);grid-template-areas:'body contents';gap:56px;align-items:start}
.prose{grid-area:body;min-width:0;max-width:680px;font-family:var(--text);font-size:18px;line-height:1.6;overflow-wrap:break-word}
.prose p{margin:0 0 1.1em}
.prose h2{font-size:30px;font-weight:600;letter-spacing:-.02em;margin:1.6em 0 .5em;scroll-margin-top:2rem}
.prose h3{font-size:24px;font-weight:600;margin:1.6em 0 .7em}
.prose strong{font-weight:600}
.prose li{margin-block:.3em}
.prose blockquote{margin:1.6em 0;padding:0 0 0 24px;font-style:italic;color:var(--muted);border-left:1px solid var(--rule)}
.prose img{display:block;max-width:100%;height:auto;margin:2em auto}
.prose .article-image{margin:2em 0}
.prose .article-image img{margin:0 auto}
.prose .article-image>a{display:block}
.prose figcaption{font-family:var(--text);font-size:13px;line-height:1.5;font-weight:400;color:var(--muted);text-align:center;padding-top:10px;text-wrap:pretty}
.prose figcaption a{color:inherit;text-decoration-color:var(--rule)}
.prose figcaption a:hover{color:var(--accent);text-decoration-color:currentColor}
.prose img[src$='.gif']{max-height:450px;width:auto}
.prose pre{font-family:var(--mono);font-size:12px;line-height:1.7;background:var(--code);padding:23px 25px;overflow:auto;border:1px solid var(--rule);border-radius:2px;margin:2em 0;tab-size:2}
.prose code{font-family:var(--mono);font-size:.8em;background:var(--code);padding:.12em .3em;border-radius:2px;overflow-wrap:anywhere}
.prose pre code{padding:0;font-size:inherit;background:none;overflow-wrap:normal}
.prose hr{border:0;border-top:1px solid var(--rule);margin-block:2em}
.prose a{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent),transparent 65%)}
.article-end{border-top:1px solid var(--rule);margin-top:48px;padding-top:24px;display:flex;justify-content:space-between;gap:20px}
.article-end a{font-family:var(--text);font-size:14px;min-height:44px;align-content:center}
.article-toc{grid-area:contents;display:block;position:sticky;top:2rem;max-height:calc(100vh - 4rem);overflow-y:auto;scrollbar-width:thin;color:var(--muted);padding-top:2px}
.toc-title{font-family:var(--text);font-size:12px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;margin:0 0 13px;color:var(--ink)}
.article-toc ul{list-style:none;padding:0;margin:0}
.article-toc ul ul{padding-left:14px;margin-block:3px}
.article-toc li{margin:0}
.article-toc a{display:block;font-family:var(--text);font-size:13px;font-weight:400;line-height:1.5;letter-spacing:0;min-height:0;padding:6px 0;text-decoration:none;color:var(--muted)}
.article-toc a:hover{color:var(--accent);text-decoration:underline}
:root[data-theme='dark']{color-scheme:dark;--paper:#171b21;--ink:#e2e7ee;--muted:#a7b1bf;--rule:#353e4c;--accent:#98bdf4;--code:#222934}
@media(prefers-color-scheme:dark){:root:not([data-theme='light']):not([data-theme='dark']){color-scheme:dark;--paper:#171b21;--ink:#e2e7ee;--muted:#a7b1bf;--rule:#353e4c;--accent:#98bdf4;--code:#222934}}

@media print{.theme-switch{display:none}}
@media(max-width:1000px){.shell{max-width:860px}.article-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:'contents' 'body';gap:30px}.article-toc{position:static;max-height:none;overflow:visible;border-block:1px solid var(--rule);padding-block:20px}.article-toc a{min-height:44px;align-content:center;padding-block:9px}.article-toc> .toc>ul{columns:2;column-gap:28px}.article-toc li{break-inside:avoid}.article-header{max-width:none}}
@media(max-width:600px){body{font-size:17px}.shell{padding-inline:23px}.site-header{padding-block:18px;gap:12px}.brand{font-size:19px}nav{gap:15px}nav a{font-size:10px}.intro{padding-block:36px 32px}h1{font-size:36px}.intro p:not(.eyebrow){font-size:19px}.intro .aside{font-size:16px!important}.entry{grid-template-columns:1fr;gap:9px;padding-block:22px}.year{padding:0}.entry h3{font-size:22px}.entry p{font-size:15px}.article-header{padding-top:24px}.article-header h1{font-size:33px}.back{margin-bottom:16px}.prose h2{font-size:25px}.prose pre{padding:16px;font-size:11px}.footer{flex-direction:column;gap:8px;margin-top:25px}.entries{margin-bottom:37px}.article-end{flex-direction:column;gap:0}.article-toc>.toc>ul{columns:1}.article-toc a{font-size:14px}}
@media(max-width:600px){h1{font-size:42px}.main-nav a{font-size:12px}.intro p:not(.eyebrow){font-size:18px}.intro .aside{font-size:17px!important}.entry h3{font-size:25px}.article-header h1{font-size:40px}.prose{font-size:18px;line-height:1.6}.prose h2{font-size:27px}}
@media print{body{background:white;color:black;font-size:12pt}.shell{max-width:none;padding:0}nav,.footer,.skip,.article-toc,.back,.article-end{display:none}.site-header{padding-block:0 12px}.article-header{padding-top:25px}.article-layout{display:block}.prose{max-width:none}.prose pre{white-space:pre-wrap;overflow-wrap:anywhere}.prose a{color:inherit}}
