@font-face{font-family:ibm plex sans;src:url(/assets/fonts/IBMPlexSansVar-Roman.woff2)format('woff2-variations');font-weight:100 700;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans;src:url(/assets/fonts/IBMPlexSansVar-Italic.woff2)format('woff2-variations');font-weight:100 700;font-style:italic;font-display:swap}@font-face{font-family:ibm plex mono;src:url(/assets/fonts/IBMPlexMono-Regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:ibm plex sans fallback;src:local('Arial');size-adjust:101.57%;ascent-override:100.92%;descent-override:27.07%;line-gap-override:0%}:root{color-scheme:light dark;--font-body:'IBM Plex Sans', 'IBM Plex Sans Fallback', system-ui, -apple-system, 'Segoe UI', sans-serif;--font-mono:'IBM Plex Mono', ui-monospace, 'SF Mono', 'Cascadia Mono', monospace;--size-xs:0.8125rem;--size-s:0.9375rem;--size-m:1.0625rem;--size-lead:clamp(1.125rem, 1.076rem + 0.22vw, 1.25rem);--size-h3:clamp(1.125rem, 1.03rem + 0.45vw, 1.375rem);--size-h2:clamp(1.375rem, 1.2rem + 0.85vw, 1.75rem);--size-h1:clamp(1.75rem, 1.45rem + 1.5vw, 2.5rem);--flow:1.25rem;--space-s:0.5rem;--space-m:1rem;--space-l:clamp(1.5rem, 1.1rem + 2vw, 2rem);--space-xl:clamp(2.5rem, 1.5rem + 5vw, 4rem);--radius:0.5rem;--container:68rem;--measure:48rem;--gutter:clamp(1rem, 4vw, 2rem);--target:2.75rem;--transition:0.15s ease;--bg:#fafaf9;--surface:#f5f5f4;--surface-bar:#ffffff;--text:#1c1917;--text-muted:#57534e;--border:#e7e5e4;--border-strong:#78716c;--accent:#cc2222;--accent-strong:#a51b1b;--accent-bg:#fef2f2;--on-accent:#ffffff;--success:#16a34a;--mark-bg:#fff1a6}@media(prefers-color-scheme:dark){:root{--bg:#0c0a09;--surface:#1c1917;--surface-bar:#1c1917;--text:#e7e5e4;--text-muted:#a8a29e;--border:#292524;--border-strong:#8a837d;--accent:#f87171;--accent-strong:#fca5a5;--accent-bg:#290d0d;--on-accent:#0c0a09;--success:#4ade80;--mark-bg:#5c4d00}}@media(prefers-contrast:more){:root{--text-muted:var(--text);--border:var(--text);--border-strong:var(--text)}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:100%;line-height:1.65;scroll-padding-top:var(--space-l)}body{margin:0;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;font-size:var(--size-m)}::selection{background:color-mix(in srgb,var(--accent) 25%,transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}[tabindex='-1']:focus{outline:none}[hidden]{display:none!important}:where(body>main){width:min(100% - 2 * var(--gutter),var(--container));margin-inline:auto}:where(body>header,body>footer){padding-inline:max(var(--gutter),(100% - var(--container))/2);background:var(--surface-bar)}body>main{flex:1;padding-block:var(--space-xl);container-type:inline-size}body>main>*{max-width:var(--measure);margin-inline:auto}.wide,.prose .highlight{width:100cqi;max-width:none;margin-inline:calc(50% - 50cqi)}.skip-link{position:absolute;top:var(--space-m);left:var(--space-m);z-index:1;padding:.75rem var(--space-m);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text);transform:translateY(-200%)}.skip-link:focus{transform:none}:where(p,ul,ol,dl,blockquote,pre,figure,table){margin:0 0 var(--flow)}:where(h1,h2,h3,h4){margin:0 0 .5em;font-weight:600;line-height:1.2;letter-spacing:-.015em;text-wrap:balance}:where(h1){font-size:var(--size-h1);letter-spacing:-.025em}:where(h2){font-size:var(--size-h2)}:where(h3){font-size:var(--size-h3)}:where(h4){font-size:var(--size-m)}:where(p){text-wrap:pretty}:where(a){color:var(--accent);text-decoration:underline;text-decoration-thickness:from-font;text-underline-offset:.18em;transition:color var(--transition)}:where(a):hover{color:var(--accent-strong);text-decoration-thickness:2px}:where(h1,h2,h3,h4) :where(a){color:inherit}:where(h1,h2,h3,h4) :where(a):hover{color:var(--accent)}:where(b,strong){font-weight:600}:where(small){font-size:var(--size-xs)}:where(mark){padding-inline:.15em;border-radius:.2em;background:var(--mark-bg);color:var(--text)}:where(ul,ol){padding-left:1.5em}:where(li)+:where(li){margin-top:.35em}:where(li)::marker{color:var(--text-muted)}:where(img,svg,video){max-width:100%;height:auto}:where(img){display:block}:where(figure){margin-inline:0}:where(time){font-variant-numeric:tabular-nums}:where(figcaption){margin-top:var(--space-s);color:var(--text-muted);font-size:var(--size-xs)}:where(blockquote){margin-inline:0;padding-left:var(--space-m);border-left:3px solid var(--accent);color:var(--text-muted)}:where(hr){margin-block:var(--space-l);border:0;border-top:1px solid var(--border)}:where(table){width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}:where(th,td){padding:var(--space-s).75rem;border-bottom:1px solid var(--border);text-align:start;vertical-align:top}:where(thead th){border-bottom-color:var(--border-strong)}:where(code,kbd,samp,pre){font-family:var(--font-mono);font-size:.9em}:where(code){padding:.12em .35em;border-radius:.3em;background:var(--surface)}:where(pre){overflow-x:auto;padding:var(--space-m)1.25rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);line-height:1.6;tab-size:2}:where(pre)>:where(code){padding:0;background:0 0;font-size:1em}.highlight pre{background:#fff;color:#1f2328}.highlight :is(.c,.ch,.cm,.c1,.cs,.cp,.cpf){color:#6e7781}.highlight :is(.k,.kc,.kd,.kn,.kp,.kr,.kt,.o,.ow){color:#cf222e}.highlight :is(.s,.sa,.sb,.sc,.dl,.sd,.s2,.se,.sh,.si,.sx,.sr,.s1,.ss){color:#0a3069}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo,.no,.nb,.bp,.na,.gh,.gu){color:#0550ae}.highlight :is(.nf,.fm,.nc,.ne,.nd){color:#8250df}.highlight .nt{color:#116329}.highlight :is(.nv,.vc,.vg,.vi,.vm){color:#953800}.highlight .gd{color:#82071e;background:#ffebe9}.highlight .gi{color:#116329;background:#dafbe1}.highlight .ge{font-style:italic}.highlight .gs{font-weight:600}@media(prefers-color-scheme:dark){.highlight pre{background:#0d1117;color:#e6edf3}.highlight :is(.c,.ch,.cm,.c1,.cs,.cp,.cpf){color:#8b949e}.highlight :is(.k,.kc,.kd,.kn,.kp,.kr,.kt,.o,.ow){color:#ff7b72}.highlight :is(.s,.sa,.sb,.sc,.dl,.sd,.s2,.se,.sh,.si,.sx,.sr,.s1,.ss){color:#a5d6ff}.highlight :is(.m,.mb,.mf,.mh,.mi,.il,.mo,.no,.nb,.bp,.na,.gh,.gu){color:#79c0ff}.highlight :is(.nf,.fm,.nc,.ne,.nd){color:#d2a8ff}.highlight .nt{color:#7ee787}.highlight :is(.nv,.vc,.vg,.vi,.vm){color:#ffa657}.highlight .gd{color:#ffa198;background:#490202}.highlight .gi{color:#7ee787;background:#04260f}}.lead{color:var(--text-muted);font-size:var(--size-lead);line-height:1.5}.lead>:last-child{margin-bottom:0}.prose{font-size:clamp(1.0625rem,1rem + .35vw,1.1875rem)}.prose>:where(svg,div){margin-bottom:var(--flow)}.prose :where(h2){margin-top:2em}.prose :where(h3){margin-top:1.75em}.prose :where(img){border:1px solid var(--border);border-radius:var(--radius)}.prose :where(figure){margin-block:var(--space-l);text-align:center}.prose :where(figure img){margin-inline:auto}.affiliate::after{content:'↗';content:'↗'/'';margin-left:.2em;font-size:.8em;vertical-align:super}:where(label){display:block;margin-bottom:.375rem;font-size:var(--size-s);font-weight:600}:where(label) :where(small){display:block;color:var(--text-muted);font-weight:400}:where(label)>[aria-hidden=true]{color:var(--accent)}:where(input:not([type=hidden],[type=checkbox],[type=radio]),textarea){display:block;width:100%;min-height:var(--target);padding:.625rem .875rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit;line-height:1.4}:where(textarea){min-height:10rem;resize:vertical}::placeholder{color:var(--text-muted);opacity:1}:where(input,textarea):focus-visible{outline-offset:0;border-color:var(--accent)}[aria-invalid=true]{border-width:2px;border-color:var(--accent)}:where(button,[type=submit]){display:inline-flex;align-items:center;justify-content:center;gap:var(--space-s);min-height:var(--target);padding:.625rem 1.25rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font:inherit;font-size:var(--size-s);font-weight:600;cursor:pointer;transition:background-color var(--transition),border-color var(--transition)}:where(button,[type=submit]):hover{border-color:var(--accent-strong);background:var(--accent-strong)}:where(button,[type=submit]):disabled{opacity:.6;cursor:progress}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.honeypot{position:absolute;left:-9999px}body>header{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-s)var(--space-l);padding-block:var(--space-m);border-bottom:1px solid var(--border)}:where(nav)>:where(ul,ol){display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s)var(--space-m);margin:0;padding:0;list-style:none}:where(nav li)+:where(li){margin:0}.brand{display:inline-flex;align-items:center;gap:var(--space-s);min-height:var(--target);color:var(--text);font-size:var(--size-h3);font-weight:600;letter-spacing:-.02em;text-decoration:none}.brand:hover{color:var(--accent)}.brand svg{flex:none;width:2rem;height:2rem;fill:currentColor}:where(body>header>nav){font-size:var(--size-s)}:where(body>header>nav)>ul{gap:0 var(--space-l)}:where(body>header>nav) :where(a){display:inline-block;padding-block:.75rem;color:var(--text-muted);text-decoration:none}:where(body>header>nav) :where(a):hover{color:var(--text)}:where(body>header>nav) [aria-current]{color:var(--text);font-weight:600;text-decoration:underline 2px var(--accent);text-underline-offset:.5em}.quick-search{display:flex;width:100%;border:1px solid var(--border-strong);border-radius:var(--radius);transition:border-color var(--transition)}.quick-search:focus-within{border-color:var(--accent);outline:1px solid var(--accent)}.quick-search input{flex:1;min-width:0;border:0;background:0 0;font-size:var(--size-s)}.quick-search input:focus-visible{outline:none}.quick-search button{min-width:var(--target);padding:0 .75rem;border:0;border-left:1px solid var(--border);border-radius:0 var(--radius)var(--radius)0;background:0 0;color:var(--text-muted)}.quick-search button:hover{background:0 0;color:var(--accent)}.categories{flex-basis:100%;margin-bottom:calc(-1 * var(--space-m));padding-block:var(--space-s);border-image:linear-gradient(var(--border) 1px,var(--bg) 1px)fill 0//0 100vmax}.categories ul{justify-content:center;gap:.75rem var(--space-s)}@media(min-width:40rem){body>header{justify-content:space-between}.quick-search{width:14rem}}body>footer{padding-block:var(--space-l);border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--size-s);text-align:center}body>footer p{margin:0}body>footer nav{margin-top:var(--space-s)}body>footer ul{justify-content:center;gap:0 .75rem}body>footer a{display:inline-block;padding-block:.625rem}body>footer li+li::before{content:'·';content:'·'/'';margin-right:.75rem}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s).75rem;margin-bottom:var(--space-s);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--size-xs)}.meta>*+*::before{content:'·';content:'·'/'';margin-right:.75rem}.meta a{color:inherit}.meta a:hover{color:var(--accent)}.tags{display:flex;flex-wrap:wrap;gap:.75rem var(--space-s);margin:.75rem 0 0;padding:0;list-style:none}.tags li{margin:0}.tag{position:relative;display:inline-block;padding:.25rem .75rem;border:1px solid var(--border);border-radius:999px;background:var(--surface-bar);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--size-xs);text-decoration:none}.tag::after{content:'';position:absolute;inset:-6px -2px}.tag:hover{border-color:var(--accent);color:var(--accent)}.tag[aria-current]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:600;text-decoration:none}.tag small{margin-left:.25rem;font-size:inherit}.breadcrumb{margin-bottom:var(--space-m);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--size-xs)}.breadcrumb ol{flex-wrap:nowrap;gap:var(--space-s)}.breadcrumb li{flex:none}.breadcrumb li+li::before{content:'›';content:'›'/'';margin-right:var(--space-s)}.breadcrumb a{display:inline-block;padding-block:.75rem;color:inherit}.breadcrumb a:hover{color:var(--accent)}.breadcrumb li:last-child{flex:initial;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:where(main section,main aside){margin-bottom:var(--space-xl)}:where(main section,main aside)>header{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:var(--space-m);padding-bottom:.75rem;border-bottom:1px solid var(--border)}:where(main section,main aside)>header>:where(h2){margin:0;font-size:var(--size-h3)}:where(main section,main aside)>header>:where(a){font-family:var(--font-mono);font-size:var(--size-xs)}:where(main section,main aside)>header :where(small){margin-left:var(--space-s);color:var(--text-muted);font-family:var(--font-mono);font-weight:400}main>header,main>article>header{margin-bottom:var(--space-l)}.empty{color:var(--text-muted);font-style:italic}.list>*+*{border-top:1px solid var(--border)}.card{padding-block:var(--space-l)}.feature{padding-top:0;border-bottom:1px solid var(--border)}.card>a{display:block;margin-bottom:var(--space-m);overflow:hidden;border:1px solid var(--border);border-radius:var(--radius)}.card>a img{width:100%;aspect-ratio:3/2;object-fit:cover}.card :where(h2,h3){margin-block:.25rem var(--space-s);font-size:var(--size-h2)}.card :where(h2,h3) a{text-decoration:none}.card :where(h2,h3) a:hover{text-decoration:underline}.card p:not([class]){margin:0;color:var(--text-muted)}.more{margin:.75rem 0 0;font-family:var(--font-mono);font-size:var(--size-xs)}.more a{text-decoration:none}.more a:hover{text-decoration:underline}@media(min-width:40rem){.feature>a img{aspect-ratio:1200/630}.feature :where(h2,h3){font-size:var(--size-h1)}.feature p:not([class]){font-size:var(--size-lead)}.card:not(.feature):has(>a){display:grid;grid-template-columns:8rem 1fr;gap:var(--space-l)}.card:not(.feature)>a{align-self:start;margin:0}.card:not(.feature) :where(h2,h3){font-size:var(--size-h3)}}.link{padding-block:var(--space-l)}.link :where(h2,h3){margin-bottom:var(--space-s);font-size:var(--size-h3);text-wrap:wrap}.link :where(h2,h3) a{color:var(--accent)}.link :where(h2,h3) a:hover{color:var(--accent-strong)}.link>div>div{color:var(--text-muted)}.link>div>div>:last-child{margin-bottom:0}.link .meta svg{margin-right:.25rem;vertical-align:-.125em}.link .meta a{display:inline-block;padding-block:.75rem;margin-block:-.75rem}.url{font-family:var(--font-mono);font-size:var(--size-s);word-break:break-all}.compact{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:var(--space-s)var(--space-m);padding-block:.75rem}.compact>div{display:contents}.compact :where(h2,h3){min-width:0;margin:0;font-size:var(--size-m)}.compact .meta,.compact .tags{margin:0}.compact>div>*+*{grid-column:2}.compact>div>div{font-size:var(--size-s)}@media(min-width:46rem){.link:not(.compact){display:grid;grid-template-columns:10rem 1fr;gap:var(--space-l)}.link:not(.compact) .meta{flex-direction:column;align-items:flex-start;gap:.25rem;margin:0}.link:not(.compact) .meta>*::before{content:none}}main>article>header :where(h1){margin-bottom:.75rem}.cover{margin-block:var(--space-l)}.cover img{width:100%;aspect-ratio:1200/630;object-fit:cover;border:1px solid var(--border);border-radius:var(--radius)}.cover figcaption{text-align:center}.notice,.message{margin-block:0 var(--space-l);padding:var(--space-m);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);background:var(--surface);font-size:var(--size-s)}.notice{color:var(--text-muted)}.notice>:last-child,.message>:last-child{margin-bottom:0}.success{border-left-color:var(--success)}.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:var(--space-xl);padding-top:var(--space-l);border-top:1px solid var(--border);font-family:var(--font-mono);font-size:var(--size-s)}.pagination>*{display:inline-flex;align-items:center;min-height:var(--target)}.pagination>span{color:var(--text-muted)}.pagination ol{justify-content:center;gap:.25rem}.pagination li>*{display:inline-flex;align-items:center;justify-content:center;min-width:var(--target);min-height:var(--target);padding-inline:var(--space-s);border:1px solid transparent;border-radius:var(--radius)}.pagination li>a:hover{border-color:var(--border-strong)}.pagination [aria-current]{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);font-weight:600}.pagination li>span[aria-hidden]{min-width:auto;color:var(--text-muted)}.search{margin-bottom:var(--space-l)}.search div{display:flex;flex-direction:column;gap:var(--space-s)}.search p{margin:var(--space-s)0 0;color:var(--text-muted)}@media(min-width:40rem){.search div{flex-direction:row}}.lost{color:var(--text-muted);font-size:var(--size-s)}.lost strong{color:var(--accent);font-weight:inherit}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.skip-link{transition:transform var(--transition)}.more span{display:inline-block;transition:transform var(--transition)}.more a:hover span{transform:translateX(.2em)}}@media print{body>header,body>footer,.skip-link,.more{display:none}html{background:#fff;color:#000}.prose a::after{content:' (' attr(href)')';font-size:.85em;word-break:break-all}}