@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:400;src:url(/assets/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-display:swap;font-weight:600;src:url(/assets/fonts/ibm-plex-mono-latin-600-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-display:swap;font-weight:400;src:url(/assets/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-display:swap;font-weight:600;src:url(/assets/fonts/ibm-plex-mono-latin-ext-600-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{color-scheme:dark;--bg:oklch(0.170 0.008 75);--panel:oklch(0.205 0.009 75);--panel2:oklch(0.235 0.010 75);--raise:oklch(0.260 0.011 75);--soft:oklch(0.270 0.010 75);--line:oklch(0.400 0.012 75);--ink:oklch(0.940 0.008 85);--mut:oklch(0.800 0.010 80);--faint:oklch(0.700 0.010 80);--teal:oklch(0.820 0.100 178);--on-accent:oklch(0.200 0.030 185);--accent-soft:oklch(0.300 0.050 185);--pos:oklch(0.800 0.120 165);--wor:oklch(0.740 0.130 40);--nul:oklch(0.640 0.012 180);--blue:oklch(0.740 0.080 235);--gold:oklch(0.840 0.100 80);--east:oklch(0.790 0.120 300);--st0-bg:oklch(0.270 0.010 75);--st2-bg:oklch(0.320 0.055 80);--st2-fg:oklch(0.840 0.100 80);--st3-bg:oklch(0.320 0.055 185);--st3-fg:oklch(0.820 0.100 178);--st4-bg:oklch(0.330 0.070 155);--st4-fg:oklch(0.800 0.120 165);--st5-bg:oklch(0.330 0.070 300);--st5-fg:oklch(0.790 0.120 300);--st6-bg:oklch(0.360 0.090 300);--st6-fg:oklch(0.840 0.100 300);--warn:var(--gold);--rose:var(--wor);--sans:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',sans-serif;--serif:Georgia,'Times New Roman',serif;--mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,Consolas,'Liberation Mono',monospace;--text-label:0.75rem;--text-caption:0.8125rem;--text-small:0.875rem;--text-body:1rem;--text-lead:1.125rem;--text-title:1.375rem;--text-headline:1.75rem;--text-display:2.25rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;--r-sm:4px;--r-md:8px;--shell:1280px}:root[data-theme="light"]{color-scheme:light;--bg:oklch(0.982 0.007 85);--panel:oklch(0.968 0.009 85);--panel2:oklch(0.948 0.011 85);--raise:oklch(0.930 0.013 85);--soft:oklch(0.912 0.011 85);--line:oklch(0.855 0.013 85);--ink:oklch(0.245 0.012 70);--mut:oklch(0.430 0.012 70);--faint:oklch(0.505 0.010 70);--teal:oklch(0.465 0.085 192);--on-accent:oklch(0.982 0.007 85);--accent-soft:oklch(0.930 0.030 185);--pos:oklch(0.500 0.110 160);--wor:oklch(0.520 0.150 35);--nul:oklch(0.600 0.012 200);--blue:oklch(0.490 0.100 245);--gold:oklch(0.500 0.100 75);--east:oklch(0.500 0.140 300);--st0-bg:oklch(0.925 0.010 85);--st2-bg:oklch(0.940 0.045 80);--st2-fg:oklch(0.450 0.090 75);--st3-bg:oklch(0.930 0.040 190);--st3-fg:oklch(0.420 0.080 190);--st4-bg:oklch(0.930 0.050 155);--st4-fg:oklch(0.420 0.100 155);--st5-bg:oklch(0.930 0.040 300);--st5-fg:oklch(0.450 0.120 300);--st6-bg:oklch(0.920 0.050 300);--st6-fg:oklch(0.420 0.130 300);}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--ink);font:400 var(--text-body)/1.6 var(--sans);
font-kerning:normal;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}
h1,h2,h3,h4{color:var(--ink);line-height:1.25;text-wrap:balance}
p{text-wrap:pretty}
a{color:var(--teal);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
a:hover{text-decoration-thickness:2px}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--teal);outline-offset:2px;border-radius:2px}
/* The data face: whatever a reader scans. Pages add their own scanned classes to the same face. */
.brand,.bb,.ruo,.crumb,.eyebrow,.kicker,th,.num,code,.code,kbd,pre,span.chip,button.chip,.cta,.submit,
select,.site-foot .t{font-family:var(--mono)}
code,.code{font-size:.92em}
.num{font-variant-numeric:tabular-nums}
.skip{position:absolute;left:var(--sp-4);top:-64px;z-index:100;background:var(--ink);color:var(--bg);
padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);text-decoration:none}
.skip:focus{top:var(--sp-2)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
clip:rect(0,0,0,0);white-space:nowrap;border:0}
.shell{max-width:var(--shell);margin:0 auto;padding:0 var(--sp-5)}
.site-head{border-bottom:1px solid var(--line);background:var(--bg)}
.site-head .in{display:flex;align-items:center;gap:var(--sp-2) var(--sp-5);min-height:64px;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:var(--sp-2);font:600 1rem/1 var(--mono);
letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-decoration:none;white-space:nowrap;min-height:44px}
.brand .mark{color:var(--teal)}
.boards{display:flex;flex-wrap:wrap}
.bb{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--sp-3);color:var(--mut);
font-size:var(--text-caption);text-decoration:none;border-bottom:2px solid transparent}
a.bb:hover{color:var(--ink);text-decoration:none;border-bottom-color:var(--line)}
.bb.on{color:var(--ink);font-weight:600;border-bottom-color:var(--teal)}
.bb.parent{color:var(--ink)}
.theme-switch{display:inline-grid;place-items:center;width:40px;height:40px;margin-left:auto;padding:0;border:1px solid var(--line);border-radius:var(--r-sm);background:transparent;color:var(--mut);cursor:pointer}
.theme-switch[hidden]{display:none}.theme-switch:hover{color:var(--ink);border-color:var(--teal)}
.theme-switch svg{width:18px;height:18px}.theme-switch .sun,:root[data-theme="light"] .theme-switch .moon{display:none}
:root[data-theme="light"] .theme-switch .sun{display:block}
.ruo{font:600 var(--text-label)/1 var(--mono);letter-spacing:.08em;color:var(--gold);
border:1px solid currentColor;border-radius:var(--r-sm);padding:6px 8px;white-space:nowrap}
.crumb{font-size:var(--text-caption);color:var(--mut);margin:var(--sp-4) 0 0}
.crumb a{color:var(--mut)}
.site-foot{margin-top:var(--sp-8);border-top:1px solid var(--line);padding:var(--sp-5) 0 var(--sp-7);
font-size:var(--text-caption);line-height:1.65;color:var(--mut)}
.site-foot p{margin:0 0 var(--sp-2);max-width:95ch}
.site-foot .t{color:var(--ink);font-weight:600}
.site-foot .foot-links{font-family:var(--mono)}
/* chips: a span names something (a tag); a button filters (a toggle, with aria-pressed). */
.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
span.chip{display:inline-block;font-size:var(--text-caption);color:var(--mut);border:1px solid var(--line);
border-radius:var(--r-sm);padding:2px var(--sp-2)}
span.chip.key{color:var(--teal);border-color:currentColor}
button.chip{min-height:36px;padding:var(--sp-1) var(--sp-3);border-radius:999px;border:1px solid var(--line);
background:var(--bg);color:var(--ink);font-size:var(--text-small);cursor:pointer}
button.chip:hover{border-color:var(--teal)}
button.chip[aria-pressed="true"]{background:var(--teal);color:var(--on-accent);border-color:var(--teal);font-weight:600}
button.chip:active,.cta:active,.submit:active{transform:translateY(1px)}
/* stated absence ("not dated", "no connections yet"): written in words, in the quietest readable ink */
.absent{color:var(--faint)}
@media (pointer: coarse){td a,.crumb a,.site-foot a,.q>a{display:inline-flex;align-items:center;min-height:44px}}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{transition-duration:.01ms!important;
animation-duration:.01ms!important;scroll-behavior:auto!important}}
@media (max-width:760px){:root{--text-caption:0.875rem;--text-label:0.8125rem}.shell{padding:0 var(--sp-4)}.site-head .in{padding-block:var(--sp-2);gap:0 var(--sp-3)}
.brand{font-size:.9375rem;letter-spacing:.06em}.theme-switch{order:1}.ruo{order:1;white-space:normal;max-width:12ch;text-align:center;line-height:1.15;padding:4px 6px}.boards{order:2;width:100%;margin-inline:-6px}.bb{padding:0 6px;white-space:nowrap;font-size:var(--text-label)}}
