/* generated by sites/spec/build.py */
/* C1 Standard: the site. Opens at night; Day is one press away. */
:root{--bg:#141414;--surface:#1C1C1C;--raised:#252525;--line:#343434;--line-strong:#858585;--ink:#ECECEC;--ink-2:#C4C4C4;--ink-3:#A0A0A0;--brand:#E9E9E9;--on-brand:#141414;--brand-ink:#EFEFEF;--brand-tint:#2D2D2D;--accent:#8F8F8F;--accent-ink:#B5B5B5;--on-accent:#141414;--yes:#EFEFEF;--yes-tint:#2A2A2A;--caution:#BBBBBB;--caution-tint:#262626;--no:#EFEFEF;--no-tint:#303030;--focus:#F2F2F2;--rule:#303030;--margin:#9A9A9A;color-scheme:dark}
:root[data-theme="light"]{--bg:#E4E4E4;--surface:#EDEDED;--raised:#F6F6F6;--line:#C6C6C6;--line-strong:#707070;--ink:#111111;--ink-2:#383838;--ink-3:#545454;--brand:#111111;--on-brand:#F2F2F2;--brand-ink:#111111;--brand-tint:#D3D3D3;--accent:#616161;--accent-ink:#474747;--on-accent:#FFFFFF;--yes:#111111;--yes-tint:#D8D8D8;--caution:#3B3B3B;--caution-tint:#DADADA;--no:#111111;--no-tint:#CFCFCF;--focus:#111111;--rule:#BEBEBE;--margin:#595959;color-scheme:light}
:root{--f-display: "Archivo", system-ui, sans-serif;--f-text: "Archivo", system-ui, sans-serif;--f-ui: "Archivo", system-ui, sans-serif;--f-mono: "Spline Sans Mono", ui-monospace, monospace;--f-readable: "Atkinson Hyperlegible Next", system-ui, sans-serif;--fvs-display: "wdth" 66;--t-cap: 12px;--t-sm: 14px;--t-base: 17px;--t-lg: 19.5px;--t-xl: 24px;--t-2xl: 36px;--t-3xl: 54px;--t-hero: 104px;--r-1: 0px;--r-2: 0px;--r-3: 2px;--r-pill: 999px;--space-unit: 8px;--measure: 68ch;--dur-hover: 100ms;--dur-press: 0ms;--dur-disclose: 200ms;--ease: cubic-bezier(.3,0,.1,1);--lh:1.62}
:root[data-font="readable"]{--f-text:var(--f-readable);--f-ui:var(--f-readable)}
/* C3 Schematic: the hero drawing only */
.lang-c3{--bg:#0B0B0B;--surface:#141414;--raised:#1C1C1C;--line:#2E2E2E;--line-strong:#7C7C7C;--ink:#E4E4E4;--ink-2:#BCBCBC;--ink-3:#9B9B9B;--brand:#E4E4E4;--on-brand:#0B0B0B;--brand-ink:#ECECEC;--brand-tint:#272727;--accent:#A6A6A6;--accent-ink:#C0C0C0;--on-accent:#0B0B0B;--yes:#ECECEC;--yes-tint:#232323;--caution:#B6B6B6;--caution-tint:#1F1F1F;--no:#ECECEC;--no-tint:#2A2A2A;--focus:#ECECEC;--grid:#171717;--grid-major:#212121;--leader:#8E8E8E;--f-display: "Barlow Semi Condensed", system-ui, sans-serif;--f-text: "Barlow", system-ui, sans-serif;--f-ui: "Barlow", system-ui, sans-serif;--f-mono: "Azeret Mono", ui-monospace, monospace;--f-readable: "Atkinson Hyperlegible Next", system-ui, sans-serif;--fvs-display: normal;--t-cap: 12.5px;--t-sm: 14.5px;--t-base: 17.5px;--t-lg: 20px;--t-xl: 25px;--t-2xl: 34px;--t-3xl: 48px;--t-hero: 74px;--r-1: 0px;--r-2: 0px;--r-3: 0px;--r-pill: 999px;--space-unit: 6px;--measure: 66ch;--dur-hover: 120ms;--dur-press: 0ms;--dur-disclose: 240ms;--ease: cubic-bezier(.45,0,.2,1);--lh:1.6}
:root[data-theme="light"] .lang-c3{--bg:#DADADA;--surface:#E4E4E4;--raised:#EDEDED;--line:#B6B6B6;--line-strong:#5E5E5E;--ink:#101010;--ink-2:#2F2F2F;--ink-3:#474747;--brand:#101010;--on-brand:#EDEDED;--brand-ink:#101010;--brand-tint:#C8C8C8;--accent:#5A5A5A;--accent-ink:#3A3A3A;--on-accent:#F2F2F2;--yes:#101010;--yes-tint:#CACACA;--caution:#333333;--caution-tint:#CFCFCF;--no:#101010;--no-tint:#C2C2C2;--focus:#101010;--grid:#CECECE;--grid-major:#C2C2C2;--leader:#555555}
:root[data-font="readable"] .lang-c3{--f-text:var(--f-readable);--f-ui:var(--f-readable)}
/* C2 Console: code panels on any page */
.lang-c2{--bg:#080808;--surface:#101010;--raised:#181818;--line:#282828;--line-strong:#707070;--ink:#D4D4D4;--ink-2:#ABABAB;--ink-3:#8E8E8E;--brand:#D4D4D4;--on-brand:#080808;--brand-ink:#F0F0F0;--brand-tint:#222222;--accent:#9C9C9C;--accent-ink:#BEBEBE;--on-accent:#080808;--yes:#F0F0F0;--yes-tint:#1E1E1E;--caution:#B3B3B3;--caution-tint:#1B1B1B;--no:#F0F0F0;--no-tint:#242424;--focus:#F0F0F0;--cmd:#F7F7F7;--out:#A6A6A6;--dim:#878787;--f-display: "Red Hat Display", system-ui, sans-serif;--f-text: "Red Hat Text", system-ui, sans-serif;--f-ui: "Red Hat Text", system-ui, sans-serif;--f-mono: "Red Hat Mono", ui-monospace, monospace;--f-readable: "Atkinson Hyperlegible Next", system-ui, sans-serif;--fvs-display: normal;--t-cap: 12px;--t-sm: 14.5px;--t-base: 17px;--t-lg: 19.5px;--t-xl: 24px;--t-2xl: 34px;--t-3xl: 48px;--t-hero: 72px;--r-1: 3px;--r-2: 6px;--r-3: 10px;--r-pill: 999px;--space-unit: 8px;--measure: 70ch;--dur-hover: 80ms;--dur-press: 0ms;--dur-disclose: 160ms;--ease: cubic-bezier(.2,0,0,1);--lh:1.62;--mono-size:14px}
:root[data-theme="light"] .lang-c2{--bg:#D4D4D4;--surface:#DDDDDD;--raised:#E7E7E7;--line:#B3B3B3;--line-strong:#5C5C5C;--ink:#0B0B0B;--ink-2:#2B2B2B;--ink-3:#444444;--brand:#0B0B0B;--on-brand:#E7E7E7;--brand-ink:#000000;--brand-tint:#C2C2C2;--accent:#4D4D4D;--accent-ink:#333333;--on-accent:#EEEEEE;--yes:#000000;--yes-tint:#C4C4C4;--caution:#2E2E2E;--caution-tint:#C6C6C6;--no:#000000;--no-tint:#BBBBBB;--focus:#000000;--cmd:#000000;--out:#333333;--dim:#4A4A4A}
:root[data-font="readable"] .lang-c2{--f-text:var(--f-readable);--f-ui:var(--f-readable)}
/* C2 Console: the whole of build.html. Opens in Night, as the package does. */
:root[data-lang="c2"]{--bg:#080808;--surface:#101010;--raised:#181818;--line:#282828;--line-strong:#707070;--ink:#D4D4D4;--ink-2:#ABABAB;--ink-3:#8E8E8E;--brand:#D4D4D4;--on-brand:#080808;--brand-ink:#F0F0F0;--brand-tint:#222222;--accent:#9C9C9C;--accent-ink:#BEBEBE;--on-accent:#080808;--yes:#F0F0F0;--yes-tint:#1E1E1E;--caution:#B3B3B3;--caution-tint:#1B1B1B;--no:#F0F0F0;--no-tint:#242424;--focus:#F0F0F0;--cmd:#F7F7F7;--out:#A6A6A6;--dim:#878787;--f-display: "Red Hat Display", system-ui, sans-serif;--f-text: "Red Hat Text", system-ui, sans-serif;--f-ui: "Red Hat Text", system-ui, sans-serif;--f-mono: "Red Hat Mono", ui-monospace, monospace;--f-readable: "Atkinson Hyperlegible Next", system-ui, sans-serif;--fvs-display: normal;--t-cap: 12px;--t-sm: 14.5px;--t-base: 17px;--t-lg: 19.5px;--t-xl: 24px;--t-2xl: 34px;--t-3xl: 48px;--t-hero: 72px;--r-1: 3px;--r-2: 6px;--r-3: 10px;--r-pill: 999px;--space-unit: 8px;--measure: 70ch;--dur-hover: 80ms;--dur-press: 0ms;--dur-disclose: 160ms;--ease: cubic-bezier(.2,0,0,1);--lh:1.62;--mono-size:14px;color-scheme:dark}
:root[data-lang="c2"][data-theme="light"]{--bg:#D4D4D4;--surface:#DDDDDD;--raised:#E7E7E7;--line:#B3B3B3;--line-strong:#5C5C5C;--ink:#0B0B0B;--ink-2:#2B2B2B;--ink-3:#444444;--brand:#0B0B0B;--on-brand:#E7E7E7;--brand-ink:#000000;--brand-tint:#C2C2C2;--accent:#4D4D4D;--accent-ink:#333333;--on-accent:#EEEEEE;--yes:#000000;--yes-tint:#C4C4C4;--caution:#2E2E2E;--caution-tint:#C6C6C6;--no:#000000;--no-tint:#BBBBBB;--focus:#000000;--cmd:#000000;--out:#333333;--dim:#4A4A4A;color-scheme:light}
:root[data-lang="c2"][data-font="readable"]{--f-text:var(--f-readable);--f-ui:var(--f-readable)}
:root[data-lang="c2"]:not([data-theme="light"]) body{letter-spacing:.005em}
.lang-c3,.lang-c2{line-height:var(--lh);font-size:var(--t-base)}
/* Kindling spec site. Component rules. Token blocks are prepended by build.py from the three package token files.
   C1 Standard is the base. C3 Schematic lives only inside .lang-c3 (the hero drawing). C2 Console lives inside .lang-c2
   (code panels) and on build.html (:root[data-lang="c2"]). Meaning rides on shape and word, never on color. */

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;overflow-wrap:break-word;background:var(--bg);color:var(--ink);font-family:var(--f-text);font-weight:400;font-size:var(--t-base);line-height:var(--lh,1.62)}
a{color:var(--brand-ink);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
code,kbd,pre,samp{font-family:var(--f-mono)}
code{font-size:.9em;overflow-wrap:anywhere}
h1,h2,h3,h4{text-wrap:balance}
p,li,dd{text-wrap:pretty}
.wrap{max-width:1180px;margin:0 auto;padding-inline:24px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.lang-c3,.lang-c2{color:var(--ink);font-family:var(--f-text)}

/* skip link */
.skip{position:absolute;left:16px;top:-120px;z-index:20;display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;background:var(--brand);color:var(--on-brand);font-family:var(--f-ui);font-weight:600}
.skip:focus{top:8px}

/* ------------------------------------------------------------------ site header */
.site{background:var(--surface);border-bottom:1px solid var(--line);font-family:var(--f-ui)}
.site .bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-block:8px 2px}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--ink);text-decoration:none;margin-right:auto}
.brand svg{width:30px;height:30px;flex:none}
.brand b{font-family:var(--f-display);font-variation-settings:"wdth" 64;font-weight:760;font-size:22px;letter-spacing:.02em;text-transform:uppercase;line-height:1}
.brand small{font-family:var(--f-ui);font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);font-weight:600}
.tools{display:flex;flex-wrap:wrap;gap:8px}
.tg{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--line-strong);border-radius:var(--r-pill)}
.tg button{all:unset;box-sizing:border-box;cursor:pointer;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding:4px 14px;border-radius:var(--r-pill);font-family:var(--f-ui);font-size:var(--t-sm);color:var(--ink-2)}
.tg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.tg button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.menu-btn{display:none;min-height:44px;min-width:44px;align-items:center;gap:8px;padding:4px 14px;border:1px solid var(--line-strong);border-radius:var(--r-2);background:transparent;color:var(--ink);font:inherit;font-size:var(--t-sm);font-weight:600;cursor:pointer}
.menu-btn svg{width:16px;height:16px}
.nav ul{list-style:none;margin:0;padding:0 0 4px;display:flex;flex-wrap:wrap;gap:0 18px}
.nav a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;color:var(--ink-2);font-size:var(--t-sm);text-decoration-color:var(--line-strong)}
.nav a:hover{color:var(--ink);text-decoration-color:currentColor}
.nav a[aria-current="page"]{color:var(--ink);font-weight:700;text-decoration-color:currentColor;text-decoration-thickness:2px}
@media (max-width:560px){.brand small{display:none}}
@media (max-width:760px){
 .js .menu-btn{display:inline-flex}
 .js .nav:not(.open){display:none}
 .nav ul{flex-direction:column;gap:0;padding-bottom:8px}
 .tools{order:3;flex-basis:100%}
}

/* running header: hidden from screen readers, it repeats the headings */
.runhead{position:sticky;top:0;z-index:5;background:var(--bg);border-bottom:1px solid var(--rule);font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:600;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.runhead .wrap{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:36px}
.runhead .cur{display:inline-flex;align-items:center;gap:8px;color:var(--ink);text-align:right}
.runhead .cur svg{width:11px;height:11px}
@media (max-width:760px){.runhead{position:static}.runhead .cur{display:none}}

/* ------------------------------------------------------------------ Standard: title page */
.tp{display:grid;gap:22px 40px;padding-block:clamp(32px,5vw,60px) clamp(28px,4vw,52px)}
@media (min-width:760px){.tp{grid-template-columns:132px minmax(0,1fr)}}
@media (min-width:1080px){.tp.has-side{grid-template-columns:132px minmax(0,1fr) 300px}}
.hang{border-top:3px solid var(--ink);padding-top:14px;font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:250;font-size:clamp(64px,8vw,104px);line-height:.8;letter-spacing:-.02em;color:var(--margin);text-align:right}
.hang small{display:block;font-size:var(--t-cap);font-weight:650;letter-spacing:.16em;text-transform:uppercase;line-height:1.3;margin-top:14px;color:var(--ink-2);font-variation-settings:"wdth" 70}
.tp-main{border-top:3px solid var(--ink);padding-top:14px;min-width:0}
.tp-side{border-top:3px solid var(--ink);padding-top:14px;min-width:0}
.kicker,.label{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin:0 0 14px}
h1.title{font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:800;font-size:clamp(46px,7vw,88px);line-height:.9;letter-spacing:-.012em;margin:0 0 18px;color:var(--ink)}
.lede{font-size:var(--t-lg);line-height:1.55;color:var(--ink-2);margin:0 0 24px;max-width:36em}
.meta{margin:0 0 24px;display:grid;max-width:680px;border-bottom:1px solid var(--rule)}
.meta > div{display:grid;grid-template-columns:132px minmax(0,1fr);gap:4px 16px;border-top:1px solid var(--rule);padding-block:9px;align-items:baseline}
.meta dt{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.meta dd{margin:0;font-size:var(--t-sm);line-height:1.5}
.meta dd .chip{margin-right:8px;vertical-align:1px}
.ctas{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 8px}
@media (max-width:760px){.hang{text-align:left;font-size:60px;display:flex;align-items:flex-end;gap:14px}.hang small{margin:0 0 4px}.meta > div{grid-template-columns:1fr}}

/* buttons: square, the primary is the only filled shape besides status squares */
.btn{font-family:var(--f-ui);font-weight:600;font-size:var(--t-base);line-height:1.2;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 20px;border-radius:var(--r-2);border:1.5px solid var(--ink);cursor:pointer;text-decoration:none;transition:background var(--dur-hover) var(--ease),color var(--dur-hover) var(--ease)}
.btn svg{width:16px;height:16px;flex:none}
.btn-primary{background:var(--brand);color:var(--on-brand);border-color:var(--brand)}
.btn-primary:hover{background:var(--surface);color:var(--ink);border-color:var(--ink)}
.btn-secondary{background:transparent;color:var(--ink)}
.btn-secondary:hover{background:var(--ink);color:var(--bg)}
.btn-quiet{background:transparent;color:var(--ink);border-color:transparent;text-decoration:underline;text-underline-offset:.2em;padding-inline:8px}
.btn-quiet:hover{text-decoration-thickness:2px}
.btn[disabled]{background:var(--raised);color:var(--ink-3);border-color:var(--line-strong);cursor:not-allowed}

/* chips: status by shape and word */
.chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-display);font-variation-settings:"wdth" 80;font-size:var(--t-sm);font-weight:600;letter-spacing:.02em;line-height:1.3;padding:3px 10px 3px 8px;border:1px solid var(--line-strong);color:var(--ink);background:transparent;white-space:nowrap}
.chip svg{width:13px;height:13px;flex:none}
.chip.solid{border:1.5px solid var(--ink);font-weight:750}
.chip.dash{border-style:dashed;color:var(--ink-2);border-color:var(--ink-3)}
.chip.dot{border-style:dotted;border-color:var(--ink-3)}
.chip.inv{background:var(--ink);color:var(--bg);border-color:var(--ink)}

/* verification level, restyled from the kit: a word and an icon, always */
.kd-level{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-ui);font-size:var(--t-sm);font-weight:600;line-height:1.3;padding:2px 9px 2px 7px;border:1px solid var(--line-strong);color:var(--ink);white-space:nowrap;vertical-align:middle}
.kd-level svg{flex:none}
.kd-level[data-level="unverified"],.kd-level[data-level="cryptographic"]{border-style:dashed;color:var(--ink-2)}

/* keywords by weight (RFC 2119): MUST 800, MUST NOT 800 under a bar, SHOULD 600 italic, MAY 400 */
.kw{font-family:var(--f-display);font-variation-settings:"wdth" 100;text-transform:uppercase;font-size:.8em;letter-spacing:.075em;line-height:1;white-space:nowrap}
.kw-must{font-weight:800}
.kw-mustnot{font-weight:800;text-decoration:overline;text-decoration-thickness:2px}
.kw-should{font-weight:600;font-style:italic}
.kw-shouldnot{font-weight:600;font-style:italic;text-decoration:overline;text-decoration-thickness:1.5px}
.kw-may{font-weight:400}
:root[data-font="readable"] .kw{font-family:var(--f-text)}

/* ------------------------------------------------------------------ Standard: parts with numbers hung in the margin */
.part{display:grid;grid-template-columns:132px minmax(0,1fr);column-gap:40px;padding-block:clamp(36px,5vw,64px);scroll-margin-top:40px}
.part + .part{border-top:1px solid var(--rule)}
.part-n{border-top:3px solid var(--ink);padding-top:10px;text-align:right;align-self:start}
.part-n a{display:inline-flex;justify-content:flex-end;align-items:center;min-width:44px;min-height:44px;font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;font-size:var(--t-3xl);line-height:.9;color:var(--margin);text-decoration:none;position:relative;font-variant-numeric:tabular-nums}
.part-n a:hover{color:var(--ink)}
.part-n small{display:block;margin-top:8px;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.part-body{border-top:3px solid var(--ink);padding-top:12px;min-width:0}
.part:target .part-n a{color:var(--ink)}
.part-n a::after,.sec-n::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:0 50%}
.part:target .part-n a::after,.sec:target > .sec-h .sec-n::after{animation:sweep 520ms var(--ease) 120ms both}
@keyframes sweep{from{transform:scaleX(0)}to{transform:scaleX(1)}}
h2.head{font-family:var(--f-display);font-variation-settings:"wdth" 66;font-weight:700;font-size:var(--t-2xl);line-height:1.05;letter-spacing:-.005em;margin:0 0 20px;max-width:24em}
h3.sub{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-xl);line-height:1.15;margin:28px 0 10px}
.prose{max-width:var(--measure)}
.prose p{margin:0 0 14px}
.note{border-left:1px solid var(--line-strong);padding:2px 0 2px 14px;margin:0 0 16px;font-size:var(--t-sm);color:var(--ink-2);max-width:var(--measure)}
.note b.label-in{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin-right:6px}
@media (max-width:760px){
 .part{grid-template-columns:1fr}
 .part-n{text-align:left;display:flex;align-items:flex-end;gap:12px}
 .part-n a{font-size:44px;justify-content:flex-start}
 .part-n small{margin:0 0 6px}
 .part-body{border-top:1px solid var(--rule)}
}

/* the overview strip */
.strip{border-top:3px solid var(--ink);border-bottom:1px solid var(--rule)}
.strip ol{list-style:none;margin:0;padding:0}
.strip li{display:grid;grid-template-columns:132px minmax(0,1fr) 64px;column-gap:40px;align-items:baseline;border-top:1px solid var(--rule);padding-block:10px}
.strip li:first-child{border-top:0}
.strip .lab{font-family:var(--f-mono);font-weight:600;font-size:var(--t-sm);text-align:right;color:var(--ink)}
.strip .ln{font-size:var(--t-base);line-height:1.5}
.strip .ln code{font-size:.88em}
.strip .ref{justify-self:end;font-family:var(--f-display);font-variation-settings:"wdth" 66;font-weight:700;font-size:var(--t-sm);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
.strip-foot{display:grid;grid-template-columns:132px minmax(0,1fr);column-gap:40px;padding-block:14px 0}
.strip-foot p{grid-column:2;margin:0;font-size:var(--t-lg)}
@media (max-width:760px){
 .strip li{grid-template-columns:64px minmax(0,1fr);column-gap:12px;row-gap:0}
 .strip .lab{text-align:left}
 .strip .ref{grid-column:2;justify-self:start;min-height:36px;justify-content:flex-start;min-width:44px}
 .strip-foot{grid-template-columns:1fr}.strip-foot p{grid-column:1}
}
@media (max-width:760px){.strip .ref{min-height:44px}}

/* ruled lists and tables */
.ruled{list-style:none;margin:0 0 20px;padding:0;border-top:2px solid var(--ink);max-width:880px}
.ruled > li{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);gap:4px 24px;padding-block:12px;border-bottom:1px solid var(--rule)}
.ruled > li > :first-child{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-base);line-height:1.35}
.ruled > li > :last-child{font-size:var(--t-sm);color:var(--ink-2);line-height:1.55}
.ruled .mono{font-family:var(--f-mono);font-weight:500;font-variation-settings:normal;font-size:var(--t-sm);overflow-wrap:anywhere}
@media (max-width:640px){.ruled > li{grid-template-columns:minmax(0,1fr)}}

.tbl{width:100%;border-collapse:collapse;font-size:var(--t-sm);line-height:1.45}
.tbl caption{text-align:left;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);padding:0 0 8px}
.tbl th{text-align:left;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);border-bottom:2px solid var(--ink);padding:6px 14px 6px 0;vertical-align:bottom}
.tbl td{border-bottom:1px solid var(--rule);padding:9px 14px 9px 0;vertical-align:top}
.tbl td.f{font-family:var(--f-mono);font-weight:500;overflow-wrap:break-word;min-width:12ch}
.tbl td.f .depth{color:var(--ink-3)}
.tbl tr.req td{border-bottom-color:var(--line-strong)}
.tbl td code{font-size:.92em}
.tbl .enum code{white-space:nowrap}
@media (max-width:700px){
 .tbl.stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
 .tbl.stack,.tbl.stack tbody,.tbl.stack tr,.tbl.stack td{display:block;width:100%}
 .tbl.stack tr{border-bottom:1px solid var(--rule);padding-block:8px}
 .tbl.stack td{border:0;padding:2px 0}
 .tbl.stack td[data-l]::before{content:attr(data-l);display:inline-block;min-width:7.5em;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}
 .tbl.stack td.f{font-size:var(--t-base);padding-bottom:4px}
 .tbl.stack td.f::before{display:none}
 .tbl.stack caption{display:block}
}

/* ------------------------------------------------------------------ spec page: rail, sections, hung numbers */
.spec-grid{display:grid;gap:28px 40px;padding-bottom:64px}
@media (min-width:1000px){.spec-grid{grid-template-columns:220px minmax(0,1fr)}}
.rail{align-self:start;font-size:var(--t-sm);min-width:0}
@media (min-width:1000px){.rail{position:sticky;top:48px;max-height:calc(100vh - 60px);overflow-y:auto;padding-right:4px}}
.rail details{border-top:3px solid var(--ink)}
.rail summary{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.rail summary::before{content:"+";display:inline-grid;place-items:center;width:20px;height:20px;border:1.5px solid var(--ink);font-family:var(--f-mono);font-weight:600;line-height:1;color:var(--ink)}
.rail details[open] > summary::before{content:"−"}
.rail summary::-webkit-details-marker{display:none}
.rail ol{list-style:none;margin:0;padding:0}
.rail li{border-top:1px solid var(--rule)}
.rail a{display:grid;grid-template-columns:34px minmax(0,1fr);gap:6px;align-items:center;min-height:44px;color:var(--ink);text-decoration:none;line-height:1.3}
.rail a span:last-child{text-decoration:underline;text-underline-offset:.18em;text-decoration-thickness:1px;text-decoration-color:var(--line-strong)}
.rail a:hover span:last-child{text-decoration-color:currentColor}
.rail a b{font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;color:var(--margin);font-variant-numeric:tabular-nums}
.rail a.here b,.rail a.here span:last-child{color:var(--ink);font-weight:700;text-decoration-color:currentColor}
.rail .side-links{border-top:1px solid var(--rule);padding-top:6px;margin-top:6px}
.rail .side-links a{display:flex;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em}
@media (max-width:999px){.rail ol{columns:2;column-gap:24px}.rail li{break-inside:avoid}}
@media (max-width:520px){.rail ol{columns:1}}

.spec-body{min-width:0}
.sec{display:grid;grid-template-columns:88px minmax(0,var(--measure));column-gap:24px;scroll-margin-top:44px}
.sec > *{grid-column:2;min-width:0}
.sec > .sec-h{grid-column:1 / -1;display:grid;grid-template-columns:88px minmax(0,1fr);column-gap:24px;align-items:center;margin:0 0 10px;font-family:var(--f-display);font-weight:700;line-height:1.08;letter-spacing:-.005em}
.sec.top{border-top:3px solid var(--ink);padding-top:14px;margin-top:40px}
.sec.top:first-child{margin-top:0}
.sec.subs{border-top:1px solid var(--rule);padding-top:14px;margin-top:22px}
h2.sec-h{font-size:var(--t-2xl);font-variation-settings:"wdth" 66}
h3.sec-h{font-size:var(--t-xl);font-variation-settings:"wdth" 76}
.sec-n{justify-self:end;position:relative;display:inline-flex;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px;color:var(--margin);text-decoration:none;font-variation-settings:"wdth" 62;font-variant-numeric:tabular-nums}
.sec-n:hover,.sec:target > .sec-h .sec-n{color:var(--ink)}
.sec p{margin:0 0 14px}
.sec ul,.sec ol{margin:0 0 14px;padding-left:1.3em}
.sec li{margin-bottom:4px}
.sec li::marker{color:var(--ink-3)}
.rfc-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0 0 14px;font-size:var(--t-sm);color:var(--ink-2)}
.rfc-line a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--ink)}
.end{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);border-top:3px solid var(--ink);padding-top:9px;margin-top:40px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.end a{color:var(--ink);display:inline-flex;align-items:center;min-height:44px}
@media (max-width:640px){
 .sec,.sec > .sec-h{display:block}
 .sec-n{display:inline-flex;justify-content:flex-start;margin-right:.3em;vertical-align:baseline}
 .sec > .sec-h{display:flex;align-items:center;flex-wrap:wrap}
}
@media (prefers-reduced-motion: reduce){.part:target .part-n a::after,.sec:target > .sec-h .sec-n::after{animation:none!important;transform:scaleX(1)}}

/* glossary */
.az{display:flex;flex-wrap:wrap;gap:0 4px;margin:0 0 20px;padding:0;list-style:none}
.az a{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-family:var(--f-display);font-variation-settings:"wdth" 66;font-weight:700;font-size:var(--t-lg);color:var(--ink)}
.gl{margin:0;border-top:2px solid var(--ink);max-width:880px}
.gl > div{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);gap:4px 24px;padding-block:12px;border-bottom:1px solid var(--rule);scroll-margin-top:48px}
.gl dt{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-base);line-height:1.35}
.gl dd{margin:0;line-height:1.6}
h2.letter{margin:0;padding:26px 0 8px;font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;font-size:var(--t-2xl);line-height:1;color:var(--margin);scroll-margin-top:48px}
.hang.long{font-size:clamp(44px,5vw,60px)}
.gl > div:target{background:var(--raised)}
@media (max-width:640px){.gl > div{grid-template-columns:minmax(0,1fr)}}

/* RFC pages */
.rfc-body{max-width:var(--measure)}
.rfc-body h2{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:700;font-size:var(--t-xl);line-height:1.15;margin:34px 0 10px;padding-top:12px;border-top:1px solid var(--rule)}
.rfc-body h2:first-child{margin-top:0}
.rfc-body p{margin:0 0 14px}
.rfc-body ul,.rfc-body ol{padding-left:1.3em;margin:0 0 14px}
.rfc-body li{margin-bottom:6px}
.rfc-body hr{display:none}
.rfc-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;border-top:3px solid var(--ink);margin-top:40px;padding-top:6px}
.rfc-nav a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--ink)}
.rfc-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink);max-width:960px}
.rfc-list li{display:grid;grid-template-columns:88px minmax(0,1fr);gap:4px 24px;padding-block:14px;border-bottom:1px solid var(--rule)}
.rfc-list .num{font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;font-size:var(--t-xl);color:var(--margin);text-align:right;font-variant-numeric:tabular-nums}
.rfc-list h2{margin:0 0 6px;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:700;font-size:var(--t-xl);line-height:1.15}
.rfc-list h2 a{color:var(--ink);display:inline-flex;align-items:center;min-height:44px}
.rfc-list p{margin:0 0 6px;font-size:var(--t-sm);color:var(--ink-2)}
.rfc-list p.sum{font-size:var(--t-base);color:var(--ink)}
@media (max-width:640px){.rfc-list li{grid-template-columns:minmax(0,1fr)}.rfc-list .num{text-align:left}}

/* schema page */
.schema{scroll-margin-top:48px}
.schema-meta{display:flex;flex-wrap:wrap;align-items:center;gap:0 18px;margin:0 0 16px;font-size:var(--t-sm);color:var(--ink-2)}
.schema-meta a{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--ink)}
.gaps{list-style:none;margin:0 0 24px;padding:0;border-top:2px solid var(--ink);max-width:880px;counter-reset:gap}
.gaps > li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 16px;padding-block:14px;border-bottom:1px solid var(--rule);counter-increment:gap}
.gaps > li::before{content:counter(gap);font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;font-size:var(--t-xl);color:var(--margin);text-align:right;line-height:1.1}
.gaps h3{margin:0 0 6px;font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-base);line-height:1.35}
.gaps p{margin:0 0 6px;font-size:var(--t-sm);line-height:1.6}
.gaps p.q{color:var(--ink);font-style:italic}
.gaps.more > li::before{content:counter(gap, lower-alpha)}

/* registry */
.site-block{margin:0 0 36px;scroll-margin-top:48px}
.site-block h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin:0 0 4px;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:700;font-size:var(--t-xl);line-height:1.15}
.site-block .op{margin:0 0 10px;font-size:var(--t-sm);color:var(--ink-2)}
.site-block .op a{display:inline-flex;align-items:center;min-height:44px}
.status{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.status i{display:inline-block;width:11px;height:11px;border:1.5px solid var(--ink);flex:none}
.status.active i{background:var(--ink)}
.status.dormant i{border-style:dashed;border-color:var(--ink-3)}
.status.dormant{color:var(--ink-2)}
.tags{font-family:var(--f-mono);font-size:.9em;overflow-wrap:anywhere}

/* examples gallery: text cards, ruled, not boxed */
.gallery{display:grid;gap:0 40px;grid-template-columns:minmax(0,1fr);border-top:2px solid var(--ink)}
@media (min-width:900px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
.card{padding:18px 0 22px;border-bottom:1px solid var(--rule);min-width:0}
.card h2{margin:0 0 4px;font-family:var(--f-display);font-variation-settings:"wdth" 66;font-weight:700;font-size:var(--t-xl);line-height:1.12}
.card .what{margin:0 0 10px;color:var(--ink-2)}
.card dl{margin:0 0 12px;display:grid;gap:6px}
.card dl > div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:2px 14px;font-size:var(--t-sm);line-height:1.5}
.card dt{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);padding-top:2px}
.card dd{margin:0}
.card .go{display:inline-flex;align-items:center;min-height:44px;font-weight:600;color:var(--ink)}
@media (max-width:520px){.card dl > div{grid-template-columns:minmax(0,1fr)}}

/* roadmap and status */
.road{display:grid;gap:0 32px;grid-template-columns:minmax(0,1fr);margin:20px 0 0}
@media (min-width:860px){.road{grid-template-columns:repeat(3,minmax(0,1fr))}}
.road > div{border-top:3px solid var(--ink);padding:12px 0 18px}
.road > div.later{border-top-style:dashed;border-top-color:var(--ink-3)}
.road h3{margin:8px 0 6px;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:700;font-size:var(--t-xl);line-height:1.15}
.road p{margin:0;font-size:var(--t-sm);color:var(--ink-2)}

.contacts{margin:0;display:grid;border-top:2px solid var(--ink);max-width:880px}
.contacts > div{display:grid;grid-template-columns:minmax(0,15em) minmax(0,1fr);gap:4px 24px;padding-block:12px;border-bottom:1px solid var(--rule)}
.contacts dt{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700}
.contacts dd{margin:0}
.contacts .addr{font-family:var(--f-mono);font-size:var(--t-sm);font-weight:600;overflow-wrap:anywhere}
.contacts small{display:block;color:var(--ink-2);font-size:var(--t-sm)}
@media (max-width:640px){.contacts > div{grid-template-columns:minmax(0,1fr)}}

.links-row{display:flex;flex-wrap:wrap;gap:4px 22px;margin:18px 0 0;padding:0;list-style:none}
.links-row a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;font-weight:600;color:var(--ink)}

/* footer */
.foot{border-top:3px solid var(--ink);margin-top:24px;padding-block:18px 48px;font-family:var(--f-ui);font-size:var(--t-sm);color:var(--ink-2)}
.foot ul{list-style:none;display:flex;flex-wrap:wrap;gap:4px 20px;margin:0 0 8px;padding:0}
.foot p{margin:0 0 6px;max-width:70ch}
.foot a:not(.uf-credit a){color:var(--ink)}

/* ------------------------------------------------------------------ Console panels (C2), on any page */
.term{background:var(--raised);border:1px solid var(--line);border-radius:var(--r-2);min-width:0;margin:0 0 16px;max-width:880px}
.term .cap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;padding:8px 16px;border-bottom:1px solid var(--line);font-family:var(--f-ui);font-size:12.5px;color:var(--ink-2);letter-spacing:.02em}
.term pre{margin:0;padding:14px 0 16px;overflow-x:auto;font-family:var(--f-mono);font-size:var(--mono-size,14px);line-height:1.62;color:var(--out)}
.term .l{display:block;white-space:pre;padding:0 18px 0 16px;min-height:1.62em;border-left:3px solid transparent}
.term .l.c{color:var(--cmd);font-weight:500}
.term .l.o{padding-left:calc(16px + 2ch)}
.term .l.m{color:var(--dim)}
.term .p{color:var(--dim);user-select:none;-webkit-user-select:none;font-weight:400}
.term pre.json{padding:14px 16px 16px;color:var(--out);white-space:pre-wrap;overflow-wrap:anywhere}
.term pre.json .jk{color:var(--cmd);font-weight:600}
.cur-blink{display:inline-block;width:.6em;height:1.18em;vertical-align:-.22em;background:var(--cmd);margin-left:1px}
.cur-blink.is-live{animation:blink 1s linear 5}
@keyframes blink{0%,55%{opacity:1}56%,100%{opacity:0}}
@media (prefers-reduced-motion: reduce){.cur-blink,.cur-blink.is-live{animation:none!important;opacity:1}}
@media (max-width:560px){
 .term pre{font-size:12.5px}
 .term .l{white-space:pre-wrap;overflow-wrap:anywhere;padding:0 12px 0 calc(12px + 2ch);text-indent:-2ch}
 .term .l.o{padding-left:calc(12px + 4ch)}
 .term .l.m{padding-left:calc(12px + 2ch)}
 .term pre.json{white-space:pre-wrap;overflow-wrap:anywhere;padding-inline:12px}
}

/* ------------------------------------------------------------------ Schematic hero (C3) */
.c3-film{background-color:var(--bg);background-image:linear-gradient(var(--grid-major) 1px,transparent 1px),linear-gradient(90deg,var(--grid-major) 1px,transparent 1px),linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:120px 120px,120px 120px,24px 24px,24px 24px;background-position:-1px -1px}
.c3-hero{padding-block:clamp(32px,5vw,60px) clamp(36px,5vw,60px);border-bottom:1.5px solid var(--ink);scroll-margin-top:40px}
.c3-top{display:grid;grid-template-columns:minmax(0,1fr);gap:28px 48px;align-items:end;margin-bottom:28px}
@media (min-width:960px){.c3-top{grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr)}}
.c3-eyebrow{font-family:var(--f-display);font-weight:600;font-size:var(--t-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);margin:0 0 16px}
.c3-hl h1{font-family:var(--f-display);font-weight:600;font-size:clamp(42px,6.4vw,var(--t-hero));line-height:.98;letter-spacing:-.005em;margin:0 0 18px;text-wrap:balance}
.c3-lede{font-size:var(--t-lg);color:var(--ink-2);max-width:34em;margin:0 0 24px;line-height:1.55}
.c3-ctas{display:flex;flex-wrap:wrap;gap:10px}
.lang-c3 .btn{border-radius:0;border-width:1.5px;font-family:var(--f-display);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:15.5px;padding:12px 20px 11px}
:root[data-font="readable"] .lang-c3 .btn{font-family:var(--f-ui);text-transform:none;letter-spacing:0;font-size:var(--t-base)}
.lang-c3 .btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.lang-c3 .btn-primary:hover{background:var(--surface);color:var(--ink)}
.lang-c3 .btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--ink)}
.lang-c3 .btn-secondary:hover{background:var(--ink);color:var(--bg)}
.c3-tb{width:100%;border-collapse:collapse;background:var(--surface);border:1.5px solid var(--ink);font-size:var(--t-sm)}
.c3-tb th,.c3-tb td{border:1px solid var(--ink);padding:7px 10px;text-align:left;vertical-align:top}
.c3-tb th{font-family:var(--f-display);font-weight:600;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);width:34%}
.c3-tb td{font-family:var(--f-display);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.c3-tb .c3-chip{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--ink);padding:1px 8px 0 6px;font-size:12.5px;letter-spacing:.09em}
.c3-tb .c3-chip svg{width:12px;height:12px}
.c3-scroll{overflow-x:auto;border:1.5px solid var(--ink);padding:4px}
.c3-scroll:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.c3-fig{margin:0}
.c3-hint{display:none;font-family:var(--f-display);font-weight:600;font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px}
.c3-legend{display:grid;grid-template-columns:minmax(0,1fr);border:1.5px solid var(--ink);border-top:0;background:var(--surface)}
@media (min-width:760px){.c3-legend{grid-template-columns:repeat(2,minmax(0,1fr))}.c3-legend > div + div{border-left:1px solid var(--ink)}}
.c3-legend > div{padding:12px 16px 14px}
.c3-legend h2{font-family:var(--f-display);font-weight:600;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 8px}
.c3-legend ol,.c3-legend ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;font-size:var(--t-sm);line-height:1.45}
.c3-legend li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;align-items:baseline}
.c3-sq{display:inline-grid;place-items:center;width:19px;height:19px;background:var(--ink);color:var(--bg);font-family:var(--f-display);font-weight:700;font-size:12px}
.c3-sq.o{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}
.c3-bn{display:inline-grid;place-items:center;width:30px;height:30px;border:1.4px solid var(--ink);border-radius:50%;font-family:var(--f-display);font-weight:700;font-size:12px;letter-spacing:.02em;margin-top:-6px}
.c3-legend a{color:var(--ink);font-weight:700}
.c3-svg{display:block;width:100%;height:auto;overflow:visible}
.c3-svg.wide{min-width:960px}
.c3-svg .bx{fill:var(--surface);stroke:var(--ink);stroke-width:1.6}
.c3-svg .bx2{fill:var(--raised);stroke:var(--ink);stroke-width:1.2}
.c3-svg .tag{fill:none;stroke:var(--ink-2);stroke-width:1}
.c3-svg .rule{fill:none;stroke:var(--ink);stroke-width:1}
.c3-svg .thin{fill:none;stroke:var(--ink);stroke-width:1.2}
.c3-svg .dash{fill:none;stroke:var(--ink);stroke-width:1.3;stroke-dasharray:6 4}
.c3-svg .cl{fill:none;stroke:var(--leader);stroke-width:1;stroke-dasharray:16 4 3 4}
.c3-svg .lead{fill:none;stroke:var(--leader);stroke-width:1.1}
.c3-svg .dim,.c3-svg .dimt{fill:none;stroke:var(--leader);stroke-width:1}
.c3-svg .route{fill:none;stroke:var(--ink);stroke-width:1.4}
.c3-svg .trace{fill:none;stroke:var(--ink);stroke-width:4.5;stroke-linejoin:miter;stroke-linecap:butt;stroke-dasharray:100 100;stroke-dashoffset:0}
.c3-svg .fill{fill:var(--ink)}
.c3-svg text{font-family:var(--f-display);fill:var(--ink)}
.c3-svg .t1{font-weight:700;font-size:16px;letter-spacing:.09em}
.c3-svg .t2{font-weight:600;font-size:13.5px;letter-spacing:.07em}
.c3-svg .t3{font-weight:600;font-size:12px;letter-spacing:.08em;fill:var(--ink-2)}
.c3-svg .m{font-family:var(--f-mono);font-size:12.5px;fill:var(--ink-2)}
.c3-svg .mb{font-family:var(--f-mono);font-size:12.5px;font-weight:600}
.c3-svg .sn{font-weight:700;font-size:12px;fill:var(--bg)}
.c3-svg .bl{fill:var(--bg);stroke:var(--ink);stroke-width:1.4}
.c3-svg .bt{font-weight:700;font-size:13px;letter-spacing:.02em}
/* the trace: drawn once when the drawing first comes into view; the route underneath is always there */
.js .c3-dwg .trace{stroke-dashoffset:100}
.js .c3-dwg.is-on .trace{animation:c3trace 1.8s var(--ease) 150ms both}
@keyframes c3trace{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
@media (prefers-reduced-motion: reduce){.js .c3-dwg .trace{animation:none!important;stroke-dashoffset:0!important}}
@media (max-width:760px){.c3-hint{display:block}}

/* ------------------------------------------------------------------ the playable protocol (index) */
.demo-step{border-top:2px solid var(--ink);padding:14px 0 26px}
.demo-step > h3{display:flex;align-items:baseline;gap:12px;margin:0 0 6px;font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-xl);line-height:1.15}
.demo-step > h3 .dn{display:inline-grid;place-items:center;min-width:28px;height:28px;padding-inline:6px;background:var(--ink);color:var(--bg);font-variation-settings:"wdth" 66;font-size:15px;align-self:center}
.demo-step > p.hint{margin:0 0 14px;color:var(--ink-2);max-width:var(--measure)}
.people{list-style:none;margin:0;padding:0;display:grid;gap:0 28px;grid-template-columns:minmax(0,1fr)}
@media (min-width:700px){.people{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.people{grid-template-columns:repeat(4,minmax(0,1fr))}}
.person{border-top:1px solid var(--line-strong);padding:10px 0 16px;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.person > p{align-self:stretch}
.person .host{margin:0;font-size:var(--t-sm);line-height:1.4;color:var(--ink-2)}
.person .host code{color:var(--ink);font-size:13px;overflow-wrap:anywhere}
.person h4{margin:0;font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-xl);line-height:1.1}
.person h4 small{font-family:var(--f-ui);font-variation-settings:normal;font-weight:400;font-size:var(--t-sm);color:var(--ink-2);margin-left:6px}
.person .about{margin:0;font-size:var(--t-sm);line-height:1.5}
.person .tags{margin:0;font-size:12.5px;color:var(--ink-2)}
.person .st{margin:4px 0 0}
.person .btn{margin-top:auto;align-self:flex-start;font-size:var(--t-sm);padding:9px 14px}
.hs-list{display:grid;gap:18px}
.hs{border-left:3px solid var(--ink);padding:4px 0 6px 18px;min-width:0;max-width:880px}
.hs.is-dashed{border-left-style:dashed;border-left-color:var(--ink-3)}
.hs > header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin:0 0 8px}
.hs > header h4{margin:0;font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-xl);line-height:1.1}
.mail{background:var(--raised);border:1px solid var(--line);padding:12px 16px 14px;margin:0 0 12px}
.mail .from{margin:0 0 4px;font-size:var(--t-sm);color:var(--ink-2);overflow-wrap:anywhere}
.mail .subj{margin:0 0 10px;font-weight:700}
.mail dl{margin:0 0 12px;display:grid;gap:0}
.mail dl > div{display:grid;grid-template-columns:104px minmax(0,1fr);gap:2px 14px;padding-block:5px;border-top:1px solid var(--rule);font-size:var(--t-sm);line-height:1.5}
.mail dt{font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);padding-top:2px}
.mail dd{margin:0;min-width:0;overflow-wrap:anywhere}
@media (max-width:520px){.mail dl > div{grid-template-columns:minmax(0,1fr)}}
.yn{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:420px}
.yn .btn{width:100%}
.hs-tools{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 10px}
.hs-tools .who{flex-basis:100%;margin:0;font-family:var(--f-display);font-variation-settings:"wdth" 70;font-weight:650;font-size:var(--t-cap);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
.hs-last{margin:0 0 10px;font-size:var(--t-sm);border-left:1px solid var(--line-strong);padding-left:12px;max-width:var(--measure)}
.hs-last:focus{outline:none}
.hs-last:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
details.disc{max-width:880px}
details.disc > summary{display:inline-flex;align-items:center;gap:8px;min-height:44px;cursor:pointer;font-weight:600}
details.disc > summary::before{content:"+";display:inline-grid;place-items:center;width:20px;height:20px;border:1.5px solid var(--ink);font-family:var(--f-mono);font-weight:600;line-height:1}
details.disc[open] > summary::before{content:"−"}
.log{list-style:none;margin:0 0 8px;padding:0;border-top:1px solid var(--rule)}
.log > li{padding:8px 0;border-bottom:1px solid var(--rule);font-size:var(--t-sm)}
.log time{font-family:var(--f-mono);font-size:12.5px;color:var(--ink-2);margin-right:8px}
.log .term{margin:8px 0 0}
.empty{margin:0;padding:12px 16px;border:1px dashed var(--ink-3);color:var(--ink-2);max-width:880px}
.ask{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;max-width:720px;margin:0 0 10px}
.ask label{display:grid;gap:6px;min-width:0}
.ask label > span{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:650;font-size:var(--t-cap);letter-spacing:.1em;text-transform:uppercase}
.ask input{font:inherit;font-family:var(--f-ui);font-size:var(--t-base);min-height:44px;padding:10px 12px;border-radius:0;border:1.5px solid var(--line-strong);background:var(--raised);color:var(--ink);min-width:0}
.ask input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
@media (max-width:520px){.ask{grid-template-columns:minmax(0,1fr)}}
.suggest{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;margin:0 0 14px;font-size:var(--t-sm)}
.suggest .btn{font-size:var(--t-sm);font-weight:500}
.answers{list-style:none;margin:0 0 10px;padding:0;border-top:2px solid var(--ink);max-width:880px}
.answers > li{display:grid;grid-template-columns:minmax(0,12em) minmax(0,1fr);gap:4px 20px;padding-block:10px;border-bottom:1px solid var(--rule)}
.answers b{font-family:var(--f-display);font-variation-settings:"wdth" 72;font-size:var(--t-lg)}
.answers .host{display:block;font-family:var(--f-mono);font-size:12.5px;color:var(--ink-2);overflow-wrap:anywhere}
.answers p{margin:0 0 4px;font-size:var(--t-sm)}
@media (max-width:640px){.answers > li{grid-template-columns:minmax(0,1fr)}}
.ans-note{margin:0 0 6px;font-size:var(--t-sm);color:var(--ink-2);max-width:var(--measure)}
.demo-foot{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:center;border-top:3px solid var(--ink);padding-top:12px}
.demo-foot p{margin:0;flex:1 1 30em;color:var(--ink-2)}

/* rules that don't bend */
.rules{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}
.rules > li{display:grid;grid-template-columns:64px minmax(0,1fr);gap:4px 20px;padding-block:12px;border-bottom:1px solid var(--rule);max-width:880px}
.rules .rn{display:inline-flex;align-self:start;align-items:center;justify-content:flex-end;min-width:44px;min-height:44px;margin-top:-10px;font-family:var(--f-display);font-variation-settings:"wdth" 62;font-weight:700;font-size:var(--t-lg);color:var(--ink);font-variant-numeric:tabular-nums}
.rules b{display:block;font-family:var(--f-display);font-variation-settings:"wdth" 72;font-weight:700;font-size:var(--t-lg);line-height:1.25;margin-bottom:2px}
.rules span{color:var(--ink-2)}

/* ------------------------------------------------------------------ build.html: Console, the whole page */
.c2-man{border-bottom:1px solid var(--line);font-family:var(--f-mono);font-size:13px;color:var(--ink-2);letter-spacing:.04em}
.c2-man .wrap{display:flex;justify-content:space-between;gap:12px;padding-block:10px}
.c2-hgrid{display:grid;grid-template-columns:minmax(0,1fr);gap:36px 56px;padding-block:clamp(40px,6vw,76px) 28px}
@media (min-width:980px){.c2-hgrid{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start}}
.c2-eyebrow{font-family:var(--f-ui);font-size:var(--t-cap);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 18px}
.c2-hl h1{font-family:var(--f-display);font-weight:800;font-size:clamp(40px,6vw,var(--t-hero));line-height:1.0;letter-spacing:-.03em;margin:0 0 14px;color:var(--brand-ink)}
.c2-promise{font-family:var(--f-display);font-weight:400;font-size:clamp(24px,3vw,34px);line-height:1.15;letter-spacing:-.015em;color:var(--ink-2);margin:0 0 24px}
.c2-lede{font-size:var(--t-lg);color:var(--ink);max-width:32em;margin:0 0 26px}
.c2-mp{margin:0;border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface);padding:6px 22px 10px}
.c2-mp > div{display:grid;grid-template-columns:104px minmax(0,1fr);gap:4px 16px;padding-block:12px;border-bottom:1px solid var(--line)}
.c2-mp > div:last-child{border-bottom:0}
.c2-mp dt{font-family:var(--f-display);font-weight:800;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--brand-ink);padding-top:2px}
.c2-mp dd{margin:0;font-size:15.5px;line-height:1.55;color:var(--ink);min-width:0}
.c2-mp var{font-family:var(--f-mono);font-style:normal;font-size:.88em;text-decoration:underline;text-underline-offset:.2em;color:var(--out)}
.c2-mp code{color:var(--cmd);font-weight:500}
.c2-line{margin:8px 0 clamp(40px,6vw,64px);display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:var(--raised);border:1px solid var(--line);border-left:3px solid var(--cmd);border-radius:var(--r-2);padding:16px 20px}
.c2-line .t{font-family:var(--f-mono);font-size:clamp(14px,1.6vw,18px);color:var(--cmd);min-width:0;overflow-wrap:anywhere}
.c2-line .p{color:var(--dim);user-select:none;-webkit-user-select:none}
.c2-line small{margin-left:auto;font-size:var(--t-sm);color:var(--ink-2)}
:root[data-lang="c2"] code{font-size:.88em;color:var(--brand-ink);background:var(--brand-tint);padding:.08em .32em;border-radius:var(--r-1)}
:root[data-lang="c2"] pre code,:root[data-lang="c2"] .c2-mp code{background:none;padding:0}
:root[data-lang="c2"] .btn{border-radius:var(--r-2);border:1px solid var(--line-strong);border-bottom-width:3px;padding:10px 18px 9px;font-weight:600}
:root[data-lang="c2"] .btn-primary{background:var(--brand);color:var(--on-brand);border-color:var(--brand);border-bottom-color:var(--ink-3)}
:root[data-lang="c2"] .btn-primary:hover{background:var(--brand-ink)}
:root[data-lang="c2"] .btn-secondary{background:var(--raised);color:var(--brand-ink);border-color:var(--line-strong)}
:root[data-lang="c2"] .btn-secondary:hover{border-color:var(--ink-2);color:var(--brand-ink);background:var(--raised)}
:root[data-lang="c2"] .kw{font-family:var(--f-text);font-weight:750;font-size:.84em;letter-spacing:.06em;padding:.06em .34em .02em;border-radius:var(--r-1);font-style:normal;text-decoration:none}
:root[data-lang="c2"] .kw-must{background:var(--ink);color:var(--bg)}
:root[data-lang="c2"] .kw-mustnot{background:var(--ink);color:var(--bg);outline:1.5px solid var(--ink);outline-offset:1.5px;margin-inline:2px}
:root[data-lang="c2"] .kw-should{border:1.5px solid var(--ink)}
:root[data-lang="c2"] .kw-may{border-radius:0;border-bottom:2px dotted var(--ink-2)}
.c2-sec{padding-block:clamp(36px,5vw,60px);border-top:1px solid var(--line);scroll-margin-top:16px}
.c2-sec > .wrap > .c2-eyebrow{margin-bottom:8px}
.c2-sec h2{font-family:var(--f-display);font-weight:700;font-size:var(--t-2xl);line-height:1.1;letter-spacing:-.018em;margin:0 0 14px;color:var(--brand-ink)}
.c2-sec .intro{max-width:var(--measure);color:var(--ink);margin:0 0 24px}
.c2-steps{list-style:none;margin:0;padding:0}
.c2-step{display:grid;grid-template-columns:minmax(0,1fr);gap:14px 40px;padding-block:22px;border-top:1px solid var(--line);scroll-margin-top:16px}
@media (min-width:920px){.c2-step{grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr)}}
.c2-say .n{font-family:var(--f-ui);font-size:var(--t-cap);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 8px;display:flex;gap:10px;align-items:center}
.c2-say .n b{display:inline-grid;place-items:center;min-width:26px;height:26px;padding-inline:6px;border-radius:var(--r-1);background:var(--ink);color:var(--bg);font-family:var(--f-display);font-size:14px;letter-spacing:0}
.c2-say h3{font-family:var(--f-display);font-weight:700;font-size:var(--t-xl);line-height:1.15;letter-spacing:-.012em;margin:0 0 10px;color:var(--brand-ink)}
.c2-say p{margin:0 0 10px;max-width:36em}
.c2-say p.q{color:var(--ink-2);font-size:var(--t-sm)}
.c2-out{display:grid;gap:12px;align-self:start;min-width:0}
.c2-step .term{margin:0;max-width:none}
.c2-tools{display:grid;gap:14px;grid-template-columns:minmax(0,1fr)}
@media (min-width:900px){.c2-tools{grid-template-columns:repeat(2,minmax(0,1fr))}}
.c2-tool{border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface);padding:14px 18px 16px;min-width:0}
.c2-tool h3{margin:0 0 4px;font-family:var(--f-mono);font-weight:600;font-size:var(--t-lg);color:var(--cmd)}
.c2-tool .dir{margin:0 0 8px;font-family:var(--f-mono);font-size:13px;color:var(--ink-2)}
.c2-tool p{margin:0 0 10px}
.c2-tool .term{margin:0}
.c2-tool .none{margin:0;padding:10px 12px;border:1px dashed var(--ink-3);border-radius:var(--r-2);color:var(--ink-2);font-size:var(--t-sm)}
.c2-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line);max-width:960px}
.c2-list > li{display:grid;grid-template-columns:minmax(0,16em) minmax(0,1fr);gap:4px 24px;padding-block:14px;border-bottom:1px solid var(--line)}
.c2-list h3{margin:0;font-family:var(--f-display);font-weight:700;font-size:var(--t-lg);line-height:1.25;color:var(--brand-ink)}
.c2-list h3 a{color:inherit}
.c2-list p{margin:0 0 6px}
.c2-list p.q{color:var(--ink-2);font-size:var(--t-sm)}
.c2-list .ref{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
@media (max-width:640px){.c2-list > li{grid-template-columns:minmax(0,1fr)}}
.c2-budget{margin-top:18px;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;border-top:1px solid var(--line);padding-top:16px;color:var(--ink-2);font-size:var(--t-sm);max-width:960px}
.c2-budget b{color:var(--brand-ink)}
.illus{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-ui);font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;border:1.5px dashed var(--ink-3);padding:1px 8px;border-radius:var(--r-1);color:var(--ink-2)}
@media (max-width:560px){.c2-man .wrap span:nth-child(2){display:none}.c2-mp{padding-inline:16px}.c2-mp > div{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{transition-duration:1ms!important}}
