/* Tacksheet sheet kit 1.8.0 — tacksheet.css
 * Themes, layout, navigation, media, charts, controls, feedback and 3D.
 * Brand tokens follow docs/design/tacksheet/BRAND.md. No external URLs:
 * fonts and textures resolve to sibling /kit/1.8.0/ files served with the kit;
 * the small tape, fibre and grain textures are inline SVG data URIs.
 * Every body is styled: the generic selector below is written
 * body:is([data-tk-theme],:not([data-tk-theme])) so a sheet without a theme
 * gets the riso default at the specificity the 1.0.0 rules were tuned for.
 *
 * Customize a sheet by overriding tokens on <body> (or any element):
 *   body{--tk-accent:#0b6e4f;--tk-font-head:"Archivo Black",sans-serif;--tk-texture:none}
 * Every component reads tokens; nothing below hard-codes a theme colour.
 * 1.1.1: the theme token blocks are wrapped in :where(), so they weigh
 * nothing and a plain body{…} rule of the sheet's own overrides any token.
 * 1.1.2: riso and riso-night set tk-page on a translucent reading panel
 * (--tk-panel, --tk-panel-edge, --tk-panel-shadow; set --tk-panel:transparent
 * to turn it off), and body and secondary text are larger for legibility.
 * 1.2.0: every rule is the 1.1.2 rule. The bare kit, tacksheet-base.css, is
 * generated from this file by scripts/make_kit_base.py: it keeps structure and
 * behaviour, drops the regions between @base:drop and @base:end markers (theme
 * token blocks and flourishes) and replaces the @base:replace region with the
 * neutral tokens of the none theme on every body. A style (a stylesheet from
 * https://tacksheet.com/styles/<id>/<n>/style.css, linked after this one and
 * named by data-tk-style on the body) sets tokens on body{} and adds its own
 * CSS; the manifest's tokens list is the contract.
 * 1.3.0: the page widens with the screen. tk-page takes 76% of the viewport
 * up to 110rem (--tk-page-width), never less than the old 43rem column, and
 * tk-page[wide] takes 94% up to 140rem (--tk-page-wide). Running text keeps a
 * 46rem measure (--tk-measure) on every page; images, media, grids, tables
 * and code use the full column. In a frame that scrolls itself, tk-progress
 * stays sticky at the top (it followed the shell's reports before). Every
 * other rule is the 1.2.0 rule.
 * 1.5.0, the reader release (1.4.0 served the 1.3.0 rules): the full-screen
 * image viewer and zoom-in cursors on viewable images; a sheet's own body{}
 * colour, background and type win over the kit's (:where(body)), and on the
 * bare kit headings take the body colour; every form field is at least 16px,
 * so Safari does not zoom in on focus; tk-compare lets the page pinch-zoom;
 * stamps, stat values and long tape titles wrap or shrink instead of running
 * off a phone; plain tables scroll inside the column; tk-table shades the
 * sides it can scroll to, has 44px sort buttons and stacks rows as cards on
 * phones with stack; bylines and stat deltas are at least 14px; running text in
 * the sheet's own blocks inside tk-page keeps the 46rem measure.
 * 1.6.0: the reply widgets' "Answers saved on this device · Start over" line
 * and their Send another button; every other rule is the 1.5.0 rule. */
@font-face{font-family:"Newsreader";src:url("fonts/newsreader.woff2") format("woff2");font-display:swap;font-weight:200 800}
@font-face{font-family:"Archivo";src:url("fonts/archivo.woff2") format("woff2");font-display:swap;font-weight:100 900}
@font-face{font-family:"Archivo Black";src:url("fonts/archivo-black-400.woff2") format("woff2");font-display:swap;font-weight:400}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/ibm-plex-mono-400.woff2") format("woff2");font-display:swap;font-weight:400}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/ibm-plex-mono-500.woff2") format("woff2");font-display:swap;font-weight:500}
@font-face{font-family:"Kalam";src:url("fonts/kalam-400.woff2") format("woff2");font-display:swap;font-weight:400}

/* @base:replace theme-tokens */
/* ================= THEME TOKENS =================
 * Riso is the default (a body without data-tk-theme). `auto` has no tokens
 * of its own: the runtime mirrors the resolved theme (riso by day,
 * riso-night in dark mode) onto data-tk-resolved, and those blocks match it.
 * Chart palettes (--tk-c1…c8) are colour-blind safe: each passes the
 * adjacent-pair CVD (protan/deutan ΔE ≥ 8), normal-vision (ΔE ≥ 15),
 * lightness-band and chroma checks against its own card surface.
 * Riso tokens added in 1.1.0 (other themes fall back where they are read):
 * --tk-head heading ink, --tk-misreg second-pass offset colour, --tk-control
 * form-control boundary (3:1), --tk-film how tape films meet the stock
 * (multiply on light stock, screen on dark), --tk-paper-obj the cream of
 * slips, prints and tape-title paper, and --tk-ink-cobalt|vermilion|plum|
 * sunflower|cornflower|black, the named inks in this stock's shades. */

/* Paper — light publication: cream stock, cobalt ink, an editorial serif. */
:where(body[data-tk-theme="paper"],body[data-tk-theme="auto"][data-tk-resolved="paper"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#f4efe3;--tk-bg-soft:#ebe4d4;--tk-fg:#1f1c16;--tk-muted:#665f51;
  --tk-accent:#2b3f8d;--tk-accent-2:#d2462a;--tk-accent-ink:#ffffff;
  --tk-card:#fbf8f0;--tk-border:#dcd2bc;--tk-rule:#1f1c16;--tk-mark:rgba(43,63,141,.08);
  --tk-field:#fffdf7;--tk-positive:#2e6b45;--tk-negative:#b3261e;
  --tk-note:#665f51;--tk-tip:#1f7a5c;--tk-warning:#a5560c;--tk-decision:#2b3f8d;--tk-risk:#b3261e;
  --tk-font-head:"Newsreader",Georgia,serif;--tk-font-body:"Newsreader",Georgia,serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"IBM Plex Mono",ui-monospace,monospace;
  --tk-font-hand:"Kalam","Newsreader",cursive;
  --tk-head-weight:620;--tk-head-tracking:-.022em;--tk-head-leading:1.04;
  --tk-size-body:1.125rem;--tk-size-h1:clamp(2.5rem,1.55rem + 4.3vw,4.4rem);
  --tk-size-h2:clamp(1.6rem,1.3rem + 1.1vw,2.15rem);--tk-size-h3:1.28rem;
  --tk-radius:3px;--tk-chart-radius:3;
  --tk-grid:rgba(31,28,22,.1);--tk-shadow:0 1px 0 rgba(31,28,22,.05),0 12px 28px -20px rgba(31,28,22,.45);
  --tk-lift:0 2px 0 rgba(31,28,22,.06),0 22px 44px -24px rgba(31,28,22,.55);
  --tk-code-bg:#221f1a;--tk-code-fg:#efe8d8;--tk-tok-k:#f0906d;--tk-tok-s:#b9d79a;--tk-tok-c:#958d7c;--tk-tok-n:#8fc1ef;--tk-tok-f:#efcf86;
  --tk-texture:linear-gradient(rgba(244,239,227,.5),rgba(244,239,227,.5)),url("textures/paper.webp");
  --tk-texture-size:auto,560px;--tk-texture-blend:normal,multiply;
  --tk-c1:#385db8;--tk-c2:#dc5426;--tk-c3:#009176;--tk-c4:#8b4a9a;--tk-c5:#c78200;--tk-c6:#2d95d3;--tk-c7:#6d8e1c;--tk-c8:#c65085;
  --tk-ramp:#e8e6ea,#b9c3e1,#7f94cc,#4865b2,#24387e;
  --tk-3d-sky:#cdd6d9;--tk-3d-horizon:#f2ede2;--tk-3d-ground:#e6dfcf;--tk-3d-grid:rgba(31,28,22,.16);
  --tk-3d-terrain:#5e7a52,#93a165,#c9b98d,#efe9dc;--tk-3d-key:#fff4e2;
}
/* Graphite — brand dark: charcoal felt, a one-sided ember glow, cream type. */
:where(body[data-tk-theme="graphite"],body[data-tk-theme="auto"][data-tk-resolved="graphite"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#1b1a19;--tk-bg-soft:#232120;--tk-fg:#ede6d8;--tk-muted:#a8a194;
  --tk-accent:#ec7350;--tk-accent-2:#e2a54a;--tk-accent-ink:#1a1310;
  --tk-card:#242220;--tk-border:#3a3631;--tk-rule:#ede6d8;--tk-mark:rgba(236,115,80,.12);
  --tk-field:#1d1c1a;--tk-positive:#7fc49a;--tk-negative:#f08a7a;
  --tk-note:#a8a194;--tk-tip:#7fc49a;--tk-warning:#e2a54a;--tk-decision:#ec7350;--tk-risk:#f08a7a;
  --tk-font-head:"Newsreader",Georgia,serif;--tk-font-body:"Newsreader",Georgia,serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"IBM Plex Mono",ui-monospace,monospace;
  --tk-font-hand:"Kalam","Newsreader",cursive;
  --tk-head-weight:600;--tk-head-tracking:-.02em;--tk-head-leading:1.05;
  --tk-size-body:1.125rem;--tk-size-h1:clamp(2.5rem,1.55rem + 4.3vw,4.4rem);
  --tk-size-h2:clamp(1.6rem,1.3rem + 1.1vw,2.15rem);--tk-size-h3:1.28rem;
  --tk-radius:3px;--tk-chart-radius:3;
  --tk-grid:rgba(237,230,216,.11);--tk-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 14px 30px -18px rgba(0,0,0,.8);
  --tk-lift:0 1px 0 rgba(255,255,255,.04) inset,0 26px 48px -22px rgba(0,0,0,.9);
  --tk-code-bg:#121110;--tk-code-fg:#ede6d8;--tk-tok-k:#f08f6c;--tk-tok-s:#b5d396;--tk-tok-c:#857e72;--tk-tok-n:#8cbdec;--tk-tok-f:#ecc97f;
  --tk-texture:radial-gradient(ellipse 75% 62% at 0% 0%,rgba(122,58,34,.46),rgba(122,58,34,.12) 55%,transparent 80%),url("textures/felt.webp");
  --tk-texture-size:100vw calc(100 * var(--tk-vh,1vh)),384px;--tk-texture-repeat:no-repeat,repeat;--tk-texture-blend:normal,normal;
  --tk-c1:#4790d8;--tk-c2:#dd6836;--tk-c3:#029e72;--tk-c4:#9468c2;--tk-c5:#b68b16;--tk-c6:#c54868;--tk-c7:#009fb4;--tk-c8:#67932c;
  --tk-ramp:#2e2a26,#5a3a2a,#8f4c30,#cf6a40,#f2ae86;
  --tk-3d-sky:#0f0e0e;--tk-3d-horizon:#2d221c;--tk-3d-ground:#1a1918;--tk-3d-grid:rgba(237,230,216,.1);
  --tk-3d-terrain:#26332b,#4a5a3c,#857152,#d6c6a6;--tk-3d-key:#ffd9b8;
  --tk-film:screen;--tk-paper-obj:#ede6d8;--tk-head:#ede6d8;--tk-misreg:rgba(236,115,80,.8);
  --tk-ink-cobalt:#9db0f0;--tk-ink-vermilion:#ff6b4f;--tk-ink-plum:#d896c8;--tk-ink-black:#ede6d8;
}
/* Riso — the default: riso stock (#efe6d2) printed in two inks, cobalt and
 * vermilion, plum where they overprint. Speck and fibre in the stock, a
 * halftone bloom, misregistered headings, square corners, hard printed
 * shadows and kraft rules. Every text pair clears 4.5:1 on stock and paper. */
:where(body[data-tk-theme="riso"],body:not([data-tk-theme]),body[data-tk-resolved="riso"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#efe6d2;--tk-bg-soft:#e8dec8;--tk-fg:#1e1e1e;--tk-muted:#4d483f;
  --tk-accent:#2b3f8d;--tk-accent-2:#e64b35;--tk-accent-ink:#ffffff;
  --tk-card:#f4eee0;--tk-border:#cdbf9f;--tk-rule:#2b3f8d;--tk-mark:rgba(230,75,53,.1);
  --tk-field:#fbf7ec;--tk-control:#857a63;--tk-positive:#2b3f8d;--tk-negative:#a62d1c;
  --tk-note:#4d483f;--tk-tip:#2b3f8d;--tk-warning:#a62d1c;--tk-decision:#6b2f5e;--tk-risk:#a62d1c;
  --tk-head:#2b3f8d;--tk-misreg:rgba(230,75,53,.82);--tk-film:multiply;--tk-paper-obj:#f4eee0;--tk-kraft:#c9b48f;
  --tk-ink-cobalt:#2b3f8d;--tk-ink-vermilion:#e64b35;--tk-ink-plum:#6b2f5e;--tk-ink-sunflower:#f2b33d;--tk-ink-cornflower:#9db0f0;--tk-ink-black:#1e1e1e;
  --tk-font-head:"Archivo Black","Archivo",system-ui,sans-serif;--tk-font-body:"Archivo",system-ui,sans-serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"Archivo",system-ui,sans-serif;
  --tk-font-hand:"Kalam","Archivo",cursive;
  --tk-head-weight:400;--tk-head-tracking:-.025em;--tk-head-leading:1.02;
  --tk-size-body:1.125rem;--tk-size-h1:clamp(2.6rem,1.5rem + 5vw,4.9rem);
  --tk-size-h2:clamp(1.55rem,1.25rem + 1.2vw,2.2rem);--tk-size-h3:1.2rem;
  --tk-radius:0px;--tk-chart-radius:0;
  --tk-grid:rgba(43,63,141,.13);--tk-shadow:3px 3px 0 rgba(43,63,141,.88);
  --tk-lift:5px 5px 0 rgba(43,63,141,.88);
  --tk-code-bg:#f4eee0;--tk-code-fg:#2b3f8d;--tk-tok-k:#a62d1c;--tk-tok-s:#6b2f5e;--tk-tok-c:#6b6352;--tk-tok-n:#a62d1c;--tk-tok-f:#1e1e1e;
  --tk-texture:url("textures/speck.svg"),linear-gradient(rgba(239,230,210,.28),rgba(239,230,210,.28)),url("textures/riso.webp");
  --tk-panel:rgba(247,241,226,.62);--tk-panel-edge:rgba(70,58,38,.14);--tk-panel-shadow:0 22px 50px -30px rgba(60,40,20,.45);
  --tk-texture-size:260px 260px,auto,768px 768px;--tk-texture-blend:multiply,normal,multiply;
  --tk-c1:#324ca7;--tk-c2:#e54f36;--tk-c3:#008d87;--tk-c4:#8a428e;--tk-c5:#c68d00;--tk-c6:#c54476;--tk-c7:#419bd4;--tk-c8:#56932b;
  --tk-ramp:#f1ddd0,#efb59f,#e8876c,#d95840,#a93522;
  --tk-3d-sky:#e9c9b6;--tk-3d-horizon:#f2e8d4;--tk-3d-ground:#e8dcc2;--tk-3d-grid:rgba(43,63,141,.22);
  --tk-3d-terrain:#2b3f8d,#3f8c8a,#c9b48f,#f4ecda;--tk-3d-key:#fff2e0;
}
/* Riso night — the same printing on deep navy stock (#16203f) with grain:
 * cream type, sunflower links, vermilion marks and a cornflower second ink.
 * Raised stock (#1e2a52) carries cards. Slips, prints, stamps-on-paper and
 * tape stay cream paper objects read with day-text colours. */
:where(body[data-tk-theme="riso-night"],body[data-tk-resolved="riso-night"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#16203f;--tk-bg-soft:#1e2a52;--tk-fg:#f1e9d6;--tk-muted:#c4bcaa;
  --tk-accent:#f2b33d;--tk-accent-2:#ff6b4f;--tk-accent-ink:#16203f;
  --tk-card:#1e2a52;--tk-border:#34427a;--tk-rule:#9db0f0;--tk-mark:rgba(242,179,61,.1);
  --tk-field:#121a36;--tk-control:#7f8fcc;--tk-positive:#9db0f0;--tk-negative:#ff8a73;
  --tk-note:#c4bcaa;--tk-tip:#9db0f0;--tk-warning:#ff8a73;--tk-decision:#f2b33d;--tk-risk:#ff8a73;
  --tk-head:#f1e9d6;--tk-misreg:rgba(255,107,79,.85);--tk-film:screen;--tk-paper-obj:#ede4cf;--tk-kraft:#c9b48f;
  --tk-ink-cobalt:#9db0f0;--tk-ink-vermilion:#ff6b4f;--tk-ink-plum:#d896c8;--tk-ink-sunflower:#f2b33d;--tk-ink-cornflower:#9db0f0;--tk-ink-black:#f1e9d6;
  --tk-font-head:"Archivo Black","Archivo",system-ui,sans-serif;--tk-font-body:"Archivo",system-ui,sans-serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"Archivo",system-ui,sans-serif;
  --tk-font-hand:"Kalam","Archivo",cursive;
  --tk-head-weight:400;--tk-head-tracking:-.025em;--tk-head-leading:1.02;
  --tk-size-body:1.125rem;--tk-size-h1:clamp(2.6rem,1.5rem + 5vw,4.9rem);
  --tk-size-h2:clamp(1.55rem,1.25rem + 1.2vw,2.2rem);--tk-size-h3:1.2rem;
  --tk-radius:0px;--tk-chart-radius:0;
  --tk-grid:rgba(157,176,240,.14);--tk-shadow:3px 3px 0 rgba(7,11,26,.85);
  --tk-panel:rgba(17,25,50,.62);--tk-panel-edge:rgba(157,176,240,.16);--tk-panel-shadow:0 22px 50px -30px rgba(0,0,0,.6);
  --tk-lift:5px 5px 0 rgba(7,11,26,.85);
  --tk-code-bg:#0f1730;--tk-code-fg:#f1e9d6;--tk-tok-k:#ff8a73;--tk-tok-s:#d896c8;--tk-tok-c:#a59e8e;--tk-tok-n:#f2b33d;--tk-tok-f:#9db0f0;
  --tk-texture:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='t' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' seed='5' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .95 0 0 0 0 .91 0 0 0 0 .84 2.6 0 0 0 -1.15'/%3E%3C/filter%3E%3Cfilter id='s' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.5' numOctaves='2' seed='31' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .95 0 0 0 0 .91 0 0 0 0 .84 14 0 0 0 -9.7'/%3E%3C/filter%3E%3Cfilter id='v' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.3' numOctaves='2' seed='140' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 .42 0 0 0 0 .31 0 0 22 0 -16.3'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23t)' opacity='.07'/%3E%3Crect width='240' height='240' filter='url(%23s)' opacity='.17'/%3E%3Crect width='240' height='240' filter='url(%23v)' opacity='.3'/%3E%3C/svg%3E"),radial-gradient(ellipse 80% 60% at 50% 0%,rgba(43,63,141,.38),transparent 70%);
  --tk-texture-size:240px 240px,100% calc(120 * var(--tk-vh,1vh));--tk-texture-repeat:repeat,no-repeat;--tk-texture-blend:normal,normal;
  --tk-c1:#6390e6;--tk-c2:#ec653f;--tk-c3:#14a682;--tk-c4:#b98a10;--tk-c5:#a77ad8;--tk-c6:#e0567a;--tk-c7:#1ca6c2;--tk-c8:#76a63c;
  --tk-ramp:#26335f,#34508f,#4f72c0,#7f9ce6,#c3d0f7;
  --tk-3d-sky:#0d142b;--tk-3d-horizon:#26335f;--tk-3d-ground:#18213f;--tk-3d-grid:rgba(157,176,240,.14);
  --tk-3d-terrain:#1f3550,#3a6a78,#a89770,#ede4cf;--tk-3d-key:#ffe7c2;
}
/* Ink — high-contrast Swiss neutral: white stock, black rules, one blue. */
:where(body[data-tk-theme="ink"],body[data-tk-theme="auto"][data-tk-resolved="ink"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#ffffff;--tk-bg-soft:#f2f2f0;--tk-fg:#0b0b0b;--tk-muted:#4a4a4a;
  --tk-accent:#0035c6;--tk-accent-2:#e10600;--tk-accent-ink:#ffffff;
  --tk-card:#ffffff;--tk-border:#0b0b0b;--tk-rule:#0b0b0b;--tk-mark:rgba(0,53,198,.07);
  --tk-field:#ffffff;--tk-positive:#00703f;--tk-negative:#c40500;
  --tk-note:#0b0b0b;--tk-tip:#00703f;--tk-warning:#9a5b00;--tk-decision:#0035c6;--tk-risk:#c40500;
  --tk-font-head:"Archivo",system-ui,sans-serif;--tk-font-body:"Archivo",system-ui,sans-serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"Archivo",system-ui,sans-serif;
  --tk-font-hand:"Archivo",system-ui,sans-serif;
  --tk-head-weight:800;--tk-head-tracking:-.035em;--tk-head-leading:.98;
  --tk-size-body:1.0625rem;--tk-size-h1:clamp(2.6rem,1.4rem + 5.2vw,5rem);
  --tk-size-h2:clamp(1.55rem,1.2rem + 1.4vw,2.3rem);--tk-size-h3:1.2rem;
  --tk-radius:0px;--tk-chart-radius:0;
  --tk-grid:rgba(0,0,0,.12);--tk-shadow:none;--tk-lift:6px 6px 0 #0b0b0b;
  --tk-code-bg:#0b0b0b;--tk-code-fg:#ffffff;--tk-tok-k:#ff6b5a;--tk-tok-s:#7fe0a8;--tk-tok-c:#9a9a9a;--tk-tok-n:#7fb2ff;--tk-tok-f:#ffd36b;
  --tk-texture:none;
  --tk-c1:#0c3dc9;--tk-c2:#da3200;--tk-c3:#008a5d;--tk-c4:#7a31ca;--tk-c5:#cb8a00;--tk-c6:#cd3976;--tk-c7:#0093c5;--tk-c8:#668800;
  --tk-ramp:#e9eefb,#b3c3f3,#6f8de6,#2f58d6,#0b2f9e;
  --tk-3d-sky:#e4e4e2;--tk-3d-horizon:#ffffff;--tk-3d-ground:#f2f2f0;--tk-3d-grid:rgba(0,0,0,.18);
  --tk-3d-terrain:#3b3b3b,#868686,#c9c9c9,#f7f7f7;--tk-3d-key:#ffffff;
}
/* Slate — technical neutral dark: blueprint grid, steel accent, mono heads. */
:where(body[data-tk-theme="slate"],body[data-tk-theme="auto"][data-tk-resolved="slate"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#1c1f25;--tk-bg-soft:#22262d;--tk-fg:#e6e8ec;--tk-muted:#9aa3b0;
  --tk-accent:#86aef5;--tk-accent-2:#f0a36e;--tk-accent-ink:#10141b;
  --tk-card:#242931;--tk-border:#363d48;--tk-rule:#4a5361;--tk-mark:rgba(134,174,245,.12);
  --tk-field:#1b1f26;--tk-positive:#6fd0a8;--tk-negative:#f2889a;
  --tk-note:#9aa3b0;--tk-tip:#6fd0a8;--tk-warning:#f0c06e;--tk-decision:#86aef5;--tk-risk:#f2889a;
  --tk-font-head:"IBM Plex Mono",ui-monospace,monospace;--tk-font-body:"Archivo",system-ui,sans-serif;
  --tk-font-mono:"IBM Plex Mono",ui-monospace,monospace;--tk-font-data:"IBM Plex Mono",ui-monospace,monospace;
  --tk-font-hand:"Archivo",system-ui,sans-serif;
  --tk-head-weight:500;--tk-head-tracking:-.03em;--tk-head-leading:1.12;
  --tk-size-body:1rem;--tk-size-h1:clamp(2rem,1.4rem + 2.8vw,3.1rem);
  --tk-size-h2:clamp(1.3rem,1.1rem + .8vw,1.65rem);--tk-size-h3:1.06rem;
  --tk-radius:6px;--tk-chart-radius:2;
  --tk-grid:rgba(230,232,236,.09);--tk-shadow:0 1px 0 rgba(255,255,255,.03) inset,0 10px 26px -16px rgba(0,0,0,.75);
  --tk-lift:0 1px 0 rgba(255,255,255,.04) inset,0 20px 40px -18px rgba(0,0,0,.85);
  --tk-code-bg:#14171c;--tk-code-fg:#e6e8ec;--tk-tok-k:#f2a37a;--tk-tok-s:#9fd8a0;--tk-tok-c:#6d7684;--tk-tok-n:#8fb8ff;--tk-tok-f:#e9cf7f;
  --tk-texture:linear-gradient(rgba(134,174,245,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(134,174,245,.045) 1px,transparent 1px);
  --tk-texture-size:28px 28px;
  --tk-c1:#5b90dd;--tk-c2:#d97230;--tk-c3:#00a27d;--tk-c4:#8f68cb;--tk-c5:#b18e15;--tk-c6:#cd4f66;--tk-c7:#00a1bd;--tk-c8:#5f983a;
  --tk-ramp:#2b3341,#304b70,#4570ad,#73a0e6,#bcd3fa;
  --tk-3d-sky:#11141a;--tk-3d-horizon:#2a313c;--tk-3d-ground:#1a1e24;--tk-3d-grid:rgba(134,174,245,.16);
  --tk-3d-terrain:#1d3646,#2f6676,#7da6b6,#dbe6ee;--tk-3d-key:#e8f0ff;
  --tk-film:screen;--tk-paper-obj:#ede6d8;--tk-head:#e6e8ec;--tk-misreg:rgba(240,163,110,.8);
  --tk-ink-cobalt:#9db0f0;--tk-ink-vermilion:#ff6b4f;--tk-ink-plum:#d896c8;--tk-ink-black:#e6e8ec;
}
/* None — structure and behaviour only: system type, plain neutrals. */
:where(body[data-tk-theme="none"]):where(:not(tk-screen *, tk-note *)){
  --tk-bg:#ffffff;--tk-bg-soft:#f4f4f4;--tk-fg:#111111;--tk-muted:#555555;
  --tk-accent:#0050c8;--tk-accent-2:#c8102e;--tk-accent-ink:#ffffff;
  --tk-card:#ffffff;--tk-border:#cccccc;--tk-rule:#cccccc;--tk-mark:rgba(0,80,200,.06);
  --tk-field:#ffffff;--tk-positive:#1a7f37;--tk-negative:#c8102e;
  --tk-note:#555555;--tk-tip:#1a7f37;--tk-warning:#9a6700;--tk-decision:#0050c8;--tk-risk:#c8102e;
  --tk-font-head:system-ui,sans-serif;--tk-font-body:system-ui,sans-serif;--tk-font-mono:ui-monospace,monospace;
  --tk-font-data:system-ui,sans-serif;--tk-font-hand:system-ui,sans-serif;
  --tk-head-weight:700;--tk-head-tracking:0;--tk-head-leading:1.15;
  --tk-size-body:1rem;--tk-size-h1:2.2rem;--tk-size-h2:1.5rem;--tk-size-h3:1.15rem;
  --tk-radius:4px;--tk-chart-radius:0;--tk-grid:rgba(0,0,0,.1);--tk-shadow:none;--tk-lift:none;
  --tk-code-bg:#f4f4f4;--tk-code-fg:#111111;--tk-tok-k:#a0281e;--tk-tok-s:#1a7f37;--tk-tok-c:#6a737d;--tk-tok-n:#0050c8;--tk-tok-f:#6f42c1;
  --tk-texture:none;
  --tk-c1:#0c3dc9;--tk-c2:#da3200;--tk-c3:#008a5d;--tk-c4:#7a31ca;--tk-c5:#cb8a00;--tk-c6:#cd3976;--tk-c7:#0093c5;--tk-c8:#668800;
  --tk-ramp:#e9eefb,#b3c3f3,#6f8de6,#2f58d6,#0b2f9e;
  --tk-3d-sky:#e9e9e9;--tk-3d-horizon:#fafafa;--tk-3d-ground:#f0f0f0;--tk-3d-grid:rgba(0,0,0,.15);
  --tk-3d-terrain:#4b6b48,#9aa36a,#cfc4a2,#f5f2ea;--tk-3d-key:#ffffff;
}
/* @base:end theme-tokens */

/* ================= BASE ================= */
/* --tk-accent-2 is a rule and mark colour; small text in it (ordinals,
 * list numbers) uses a darkened mix that clears 4.5:1 on every theme. */
:where(body):where(:not(tk-screen *, tk-note *)){--tk-density:1;--tk-gap:calc(1rem * var(--tk-density,1));
  --tk-accent-2-text:color-mix(in srgb,var(--tk-accent-2) 72%,var(--tk-fg))}
/* 1.5.0: :where(body) weighs nothing, so a sheet's own body{color;background} wins. */
:where(body):where(:not(tk-screen *, tk-note *)){
  background-color:var(--tk-bg);background-image:var(--tk-texture,none);background-size:var(--tk-texture-size,auto);
  background-repeat:var(--tk-texture-repeat,repeat);background-blend-mode:var(--tk-texture-blend,normal);color:var(--tk-fg);font-family:var(--tk-font-body);font-size:var(--tk-size-body,1.0625rem);
  line-height:1.62;margin:0;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;
  font-kerning:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
tk-page:where(:not(tk-screen *, tk-note *)),tk-hero:where(:not(tk-screen *, tk-note *)),tk-section:where(:not(tk-screen *, tk-note *)),tk-grid:where(:not(tk-screen *, tk-note *)),tk-split:where(:not(tk-screen *, tk-note *)),tk-card:where(:not(tk-screen *, tk-note *)),tk-callout:where(:not(tk-screen *, tk-note *)),tk-stats:where(:not(tk-screen *, tk-note *)),tk-stat:where(:not(tk-screen *, tk-note *)),tk-figure:where(:not(tk-screen *, tk-note *)),
tk-table:where(:not(tk-screen *, tk-note *)),tk-timeline:where(:not(tk-screen *, tk-note *)),tk-steps:where(:not(tk-screen *, tk-note *)),tk-code:where(:not(tk-screen *, tk-note *)),tk-details:where(:not(tk-screen *, tk-note *)),tk-toc:where(:not(tk-screen *, tk-note *)),tk-tabs:where(:not(tk-screen *, tk-note *)),tk-accordion:where(:not(tk-screen *, tk-note *)),tk-pager:where(:not(tk-screen *, tk-note *)),
tk-progress:where(:not(tk-screen *, tk-note *)),tk-gallery:where(:not(tk-screen *, tk-note *)),tk-lightbox:where(:not(tk-screen *, tk-note *)),tk-compare:where(:not(tk-screen *, tk-note *)),tk-zoom:where(:not(tk-screen *, tk-note *)),tk-annotate:where(:not(tk-screen *, tk-note *)),tk-image:where(:not(tk-screen *, tk-note *)),tk-video:where(:not(tk-screen *, tk-note *)),
tk-audio:where(:not(tk-screen *, tk-note *)),tk-slides:where(:not(tk-screen *, tk-note *)),tk-scrolly:where(:not(tk-screen *, tk-note *)),tk-chart:where(:not(tk-screen *, tk-note *)),tk-state:where(:not(tk-screen *, tk-note *)),tk-slider:where(:not(tk-screen *, tk-note *)),tk-range:where(:not(tk-screen *, tk-note *)),tk-select:where(:not(tk-screen *, tk-note *)),tk-toggle:where(:not(tk-screen *, tk-note *)),
tk-radio-group:where(:not(tk-screen *, tk-note *)),tk-search:where(:not(tk-screen *, tk-note *)),tk-number:where(:not(tk-screen *, tk-note *)),tk-date:where(:not(tk-screen *, tk-note *)),tk-play:where(:not(tk-screen *, tk-note *)),tk-text:where(:not(tk-screen *, tk-note *)),tk-show:where(:not(tk-screen *, tk-note *)),tk-compute:where(:not(tk-screen *, tk-note *)),tk-feedback:where(:not(tk-screen *, tk-note *)),
tk-question:where(:not(tk-screen *, tk-note *)),tk-form:where(:not(tk-screen *, tk-note *)),tk-vote:where(:not(tk-screen *, tk-note *)),tk-request-info:where(:not(tk-screen *, tk-note *)),tk-annotate-feedback:where(:not(tk-screen *, tk-note *)),tk-model:where(:not(tk-screen *, tk-note *)),tk-scene:where(:not(tk-screen *, tk-note *)){display:block;box-sizing:border-box;max-width:100%}
tk-text:where(:not(tk-screen *, tk-note *)){display:inline}
tk-state:where(:not(tk-screen *, tk-note *)),tk-compute:where(:not(tk-screen *, tk-note *)){display:none!important}
body:is([data-tk-theme],:not([data-tk-theme])) *:where(:not(tk-screen *, tk-note *)),body:is([data-tk-theme],:not([data-tk-theme])) *:where(:not(tk-screen *, tk-note *))::before,body:is([data-tk-theme],:not([data-tk-theme])) *:where(:not(tk-screen *, tk-note *))::after{box-sizing:border-box}
body:is([data-tk-theme],:not([data-tk-theme])) :focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:3px;border-radius:2px}
body:is([data-tk-theme],:not([data-tk-theme])) :where(:not(tk-screen *, tk-note *))::selection{background:color-mix(in srgb,var(--tk-accent) 22%,transparent)}
body:is([data-tk-theme],:not([data-tk-theme])) a:where(:not(tk-screen *, tk-note *)){color:var(--tk-accent);text-decoration-thickness:1px;text-underline-offset:.18em;
  text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}
body:is([data-tk-theme],:not([data-tk-theme])) a:hover:where(:not(tk-screen *, tk-note *)){text-decoration-color:currentColor}
body:is([data-tk-theme],:not([data-tk-theme])) img:where(:not(tk-screen *, tk-note *)),body:is([data-tk-theme],:not([data-tk-theme])) video:where(:not(tk-screen *, tk-note *)),body:is([data-tk-theme],:not([data-tk-theme])) canvas:where(:not(tk-screen *, tk-note *)){max-width:100%;height:auto}
body:is([data-tk-theme],:not([data-tk-theme])) :is(h1,h2,h3,h4):where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);
  letter-spacing:var(--tk-head-tracking,0);line-height:var(--tk-head-leading,1.15);text-wrap:balance}
/* @base:drop heading-ink */
body:is([data-tk-theme],:not([data-tk-theme])) :is(h1,h2,h3,h4):where(:not(tk-screen *, tk-note *)){color:var(--tk-fg)}
/* @base:end heading-ink */
body:is([data-tk-theme],:not([data-tk-theme])) h3:where(:not(tk-screen *, tk-note *)){font-size:var(--tk-size-h3,1.2rem);line-height:1.25;margin:1.6em 0 .5em}
body:is([data-tk-theme],:not([data-tk-theme])) h4:where(:not(tk-screen *, tk-note *)){font-size:1.02rem;line-height:1.3;margin:1.4em 0 .4em}
body:is([data-tk-theme],:not([data-tk-theme])) :is(p,li):where(:not(tk-screen *, tk-note *)){text-wrap:pretty}
body:is([data-tk-theme],:not([data-tk-theme])) :is(ul,ol) li:where(:not(tk-screen *, tk-note *))::marker{color:var(--tk-accent-2-text)}
body:is([data-tk-theme],:not([data-tk-theme])) strong:where(:not(tk-screen *, tk-note *)){font-weight:680}
body:is([data-tk-theme],:not([data-tk-theme])) hr:where(:not(tk-screen *, tk-note *)){border:0;border-top:1px solid var(--tk-border);margin:2.5rem 0}
body:is([data-tk-theme],:not([data-tk-theme])) blockquote:where(:not(tk-screen *, tk-note *)){margin:1.75rem 0;padding:.2rem 0 .2rem 1.25rem;border-left:3px solid var(--tk-accent-2);
  font-family:var(--tk-font-head);font-size:1.3em;line-height:1.35;letter-spacing:var(--tk-head-tracking,0)}
body:is([data-tk-theme],:not([data-tk-theme])) code:not(pre code):where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.86em;background:var(--tk-bg-soft);
  padding:.08em .32em;border-radius:3px;overflow-wrap:anywhere}
.tk-sr:where(:not(tk-screen *, tk-note *)){position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.tk-note:where(:not(tk-screen *, tk-note *)){font-size:.95rem;color:var(--tk-muted)}
.tk-note:empty:where(:not(tk-screen *, tk-note *)){display:none}

/* ================= LAYOUT ================= */
/* The column follows the screen: 76% of it up to 110rem, and never narrower than 43rem
 * (below that it fills the screen). A sheet or style can set --tk-page-width on body. */
tk-page:where(:not(tk-screen *, tk-note *)){max-width:var(--tk-page-width,min(max(43rem,76vw),110rem));margin:0 auto;padding:1.5rem 1.35rem 5rem;counter-reset:tk-sec}
tk-page[wide]:where(:not(tk-screen *, tk-note *)){max-width:var(--tk-page-wide,min(max(76rem,94vw),140rem))}
@media(max-width:640px){tk-page:where(:not(tk-screen *, tk-note *)){padding:1rem 1.05rem 4rem}}
/* Hero: masthead with a double rule, balanced headline, dek and byline. */
tk-hero:where(:not(tk-screen *, tk-note *)){position:relative;padding:clamp(2.25rem,6vw,4.5rem) 0 1.75rem;margin-bottom:2.75rem;border-bottom:1px solid var(--tk-rule)}
tk-hero:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;left:0;right:0;bottom:-6px;border-bottom:1px solid var(--tk-rule)}
tk-hero h1:where(:not(tk-screen *, tk-note *)){font-size:var(--tk-size-h1);margin:0 0 .45em;max-width:16ch}
tk-page[wide] tk-hero h1:where(:not(tk-screen *, tk-note *)){max-width:20ch}
tk-hero p.tk-dek:where(:not(tk-screen *, tk-note *)){font-size:clamp(1.15rem,1rem + .55vw,1.42rem);line-height:1.42;color:var(--tk-muted);margin:0;max-width:34em}
tk-hero .tk-byline:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.875rem;letter-spacing:.01em;color:var(--tk-muted);margin:1.4rem 0 0;display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}
tk-hero .tk-byline:where(:not(tk-screen *, tk-note *))::before{content:"";width:1.6rem;height:2px;background:var(--tk-accent-2);flex:none}
tk-hero>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-section:where(:not(tk-screen *, tk-note *)){margin:calc(3.4rem * var(--tk-density,1)) 0}
tk-section>h2:where(:not(tk-screen *, tk-note *)){font-size:var(--tk-size-h2);margin:0 0 1.1rem;padding-top:1.1rem;border-top:1px solid var(--tk-border);counter-increment:tk-sec}
tk-section>h2:where(:not(tk-screen *, tk-note *))::before{content:counter(tk-sec,decimal-leading-zero);font-family:var(--tk-font-mono);font-weight:500;
  font-size:.42em;letter-spacing:.02em;color:var(--tk-accent-2-text);vertical-align:.62em;margin-right:.8em;font-feature-settings:"tnum"}
tk-page[unnumbered] tk-section>h2:where(:not(tk-screen *, tk-note *))::before,tk-section[unnumbered]>h2:where(:not(tk-screen *, tk-note *))::before{content:none}
tk-section>h2 .tk-anchor:where(:not(tk-screen *, tk-note *)),tk-section>h3 .tk-anchor:where(:not(tk-screen *, tk-note *)){margin-left:.45rem;font-family:var(--tk-font-mono);font-weight:400;font-size:.55em;
  text-decoration:none;color:var(--tk-muted);opacity:0;transition:opacity .15s;vertical-align:.25em}
tk-section>:is(h2,h3):hover .tk-anchor:where(:not(tk-screen *, tk-note *)),tk-section .tk-anchor:focus-visible:where(:not(tk-screen *, tk-note *)){opacity:1}
@media(hover:none){tk-section .tk-anchor:where(:not(tk-screen *, tk-note *)){opacity:.45}}
tk-section h3:where(:not(tk-screen *, tk-note *)){margin:1.9rem 0 .6rem}
:is(tk-section,tk-card,tk-page,.tk-step,tk-page-section,tk-split>div,.tk-slide)>p:where(:not(tk-screen *, tk-note *)){margin:0 0 1em}
:is(tk-section,tk-card,tk-page,.tk-step,tk-split>div)>:is(ul,ol):where(:not(tk-screen *, tk-note *)){margin:0 0 1.1em;padding-left:1.25em}
:is(tk-section,tk-card,tk-page,.tk-step,tk-split>div)>:is(ul,ol)>li:where(:not(tk-screen *, tk-note *)){margin:.3em 0}
:is(tk-section,tk-card,.tk-step,tk-split>div,.tk-slide)>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
/* Running text keeps a readable measure on every page; images, media, grids, tables and code
 * use the full column, and so does a paragraph that holds an image or video. */
:where(tk-page,tk-section,tk-page-section,tk-hero,tk-details,.tk-step)>:is(p,ul,ol,dl,blockquote,tk-callout):where(:not(tk-screen *, tk-note *)){max-width:var(--tk-measure,46rem)}
:where(tk-page,tk-section,tk-page-section,tk-hero,tk-details,.tk-step)>p:has(img,picture,video,iframe,canvas):where(:not(tk-screen *, tk-note *)){max-width:none}
/* 1.5.0: paragraphs and lists in the sheet's own blocks (div, section, article, aside, header, footer, main)
 * inside tk-page keep the measure too; a sheet's own max-width still wins, and grids and cards are narrower anyway. */
:where(tk-page) :where(div,section,article,aside,header,footer,main)>:is(p,ul,ol,dl,blockquote):where(:not(tk-screen *, tk-note *)){max-width:var(--tk-measure,46rem)}
:where(tk-page) :where(div,section,article,aside,header,footer,main)>p:has(img,picture,video,iframe,canvas,svg):where(:not(tk-screen *, tk-note *)){max-width:none}
/* A table the kit does not wrap (outside tk-table) scrolls sideways inside the column instead of widening the page. */
:where(tk-page) table:not(:where(tk-table,tk-chart,.tk-feedback) table):where(:not(tk-screen *, tk-note *)){display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
tk-grid:where(:not(tk-screen *, tk-note *)){display:grid;gap:calc(1.25rem * var(--tk-density,1));grid-template-columns:repeat(var(--tk-cols,2),minmax(0,1fr));margin:1.5rem 0}
tk-grid:has(tk-chart):where(:not(tk-screen *, tk-note *)){align-items:start}
tk-grid>*:where(:not(tk-screen *, tk-note *)){margin:0;min-width:0}
@media(max-width:900px){tk-grid[cols="4"]:where(:not(tk-screen *, tk-note *)),tk-grid[cols="5"]:where(:not(tk-screen *, tk-note *)),tk-grid[cols="6"]:where(:not(tk-screen *, tk-note *)){grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){tk-grid:where(:not(tk-screen *, tk-note *)),tk-grid[cols]:where(:not(tk-screen *, tk-note *)){grid-template-columns:minmax(0,1fr)}}
tk-split:where(:not(tk-screen *, tk-note *)){display:grid;gap:clamp(1.25rem,3vw,2.5rem);grid-template-columns:minmax(0,1fr) minmax(0,1fr);margin:1.5rem 0;align-items:start}
tk-split>*:where(:not(tk-screen *, tk-note *)){min-width:0}
tk-split>*>:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
@media(max-width:640px){tk-split:where(:not(tk-screen *, tk-note *)){grid-template-columns:minmax(0,1fr)}}
tk-card:where(:not(tk-screen *, tk-note *)){background:var(--tk-card);border:1px solid var(--tk-border);border-radius:var(--tk-radius);
  padding:calc(1.25rem * var(--tk-density,1)) calc(1.35rem * var(--tk-density,1));box-shadow:var(--tk-shadow);margin:1.25rem 0}
tk-card>:is(h3,h4):first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-card>h3:first-child:where(:not(tk-screen *, tk-note *)){font-size:1.12rem}
tk-card>tk-chart:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-card>tk-chart:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}

/* Callouts: a rule in the kind colour and a stamped kind label floated
 * into the corner, so text wraps around it at any width. */
tk-callout:where(:not(tk-screen *, tk-note *)){--k:var(--tk-note);position:relative;margin:1.6rem 0;padding:1rem 1.15rem 1rem 1.25rem;
  border-left:3px solid var(--k);background:color-mix(in srgb,var(--k) 7%,var(--tk-card));border-radius:0 var(--tk-radius) var(--tk-radius) 0}
tk-callout[data-kind="tip"]:where(:not(tk-screen *, tk-note *)){--k:var(--tk-tip)}
tk-callout[data-kind="warning"]:where(:not(tk-screen *, tk-note *)){--k:var(--tk-warning)}
tk-callout[data-kind="decision"]:where(:not(tk-screen *, tk-note *)){--k:var(--tk-decision);background:var(--tk-card);border:1px solid var(--tk-border);border-left:3px solid var(--k);box-shadow:var(--tk-shadow)}
tk-callout[data-kind="risk"]:where(:not(tk-screen *, tk-note *)){--k:var(--tk-risk);background:var(--tk-card);border:1px solid var(--tk-border);border-left:3px solid var(--k);box-shadow:var(--tk-shadow)}
tk-callout strong.tk-label:where(:not(tk-screen *, tk-note *)){float:right;margin:-.1rem 0 .5rem 1rem;font-family:var(--tk-font-mono);font-weight:500;font-size:.66rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--k);border:1.5px solid currentColor;border-radius:2px;
  padding:.18rem .45rem .14rem;line-height:1.2;transform:rotate(-2.5deg);opacity:.92}
tk-callout>:is(p,ul,ol):where(:not(tk-screen *, tk-note *)){margin:0 0 .6em}
tk-callout>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-callout p:first-of-type strong:first-child:where(:not(tk-screen *, tk-note *)){color:var(--k)}

/* Stats: a ruled data box; numbers stay proportional, deltas carry direction. */
tk-stats:where(:not(tk-screen *, tk-note *)){display:grid;gap:0;grid-template-columns:repeat(auto-fit,minmax(min(9rem,100%),1fr));margin:1.6rem 0;
  border-top:2px solid var(--tk-rule);border-bottom:1px solid var(--tk-border)}
tk-stat:where(:not(tk-screen *, tk-note *)){padding:1rem 1.15rem 1.1rem;border-left:1px solid var(--tk-border);min-width:0}
tk-stats>tk-stat:first-child:where(:not(tk-screen *, tk-note *)){border-left:0;padding-left:0}
tk-stat .tk-value:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:clamp(2rem,1.6rem + 1.4vw,2.65rem);
  line-height:1.05;letter-spacing:var(--tk-head-tracking,0);margin-bottom:.4rem;overflow-wrap:anywhere;text-wrap:balance}
tk-stat:where(:not(tk-screen *, tk-note *)){container-type:inline-size}
tk-stat .tk-value:where(:not(tk-screen *, tk-note *)){font-size:max(1.35rem,min(clamp(2rem,1.6rem + 1.4vw,2.65rem),16cqi))}
tk-stat .tk-label:where(:not(tk-screen *, tk-note *)){font-size:.95rem;line-height:1.35;color:var(--tk-fg)}
tk-stat .tk-delta:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.875rem;line-height:1.45;color:var(--tk-muted);margin-top:.35rem;font-feature-settings:"tnum"}
tk-stat[data-trend="up"] .tk-delta:where(:not(tk-screen *, tk-note *)),tk-stat[data-trend="down"][good="down"] .tk-delta:where(:not(tk-screen *, tk-note *)){color:var(--tk-positive)}
tk-stat[data-trend="down"] .tk-delta:where(:not(tk-screen *, tk-note *)),tk-stat[data-trend="up"][good="down"] .tk-delta:where(:not(tk-screen *, tk-note *)){color:var(--tk-negative)}
tk-stat[data-trend] .tk-delta:where(:not(tk-screen *, tk-note *))::before{content:"▲ ";font-size:.75em}
tk-stat[data-trend="down"] .tk-delta:where(:not(tk-screen *, tk-note *))::before{content:"▼ "}
tk-stat tk-chart:where(:not(tk-screen *, tk-note *)){margin:.7rem 0 0}
tk-stat tk-chart .tk-title:where(:not(tk-screen *, tk-note *)),tk-stat tk-chart .tk-sub:where(:not(tk-screen *, tk-note *)){position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
tk-stat tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)),tk-stat tk-chart[type="sparkline"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:2.4rem;min-height:2.4rem}
tk-stat tk-chart details.tk-fallback:where(:not(tk-screen *, tk-note *)){position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
@media(max-width:640px){tk-stats:where(:not(tk-screen *, tk-note *)){grid-template-columns:repeat(2,minmax(0,1fr))}
  tk-stat:where(:not(tk-screen *, tk-note *)){padding:.9rem .8rem 1rem;border-left:1px solid var(--tk-border)}
  tk-stats>tk-stat:nth-child(odd):where(:not(tk-screen *, tk-note *)){border-left:0;padding-left:0}
  tk-stats>tk-stat:nth-child(n+3):where(:not(tk-screen *, tk-note *)){border-top:1px solid var(--tk-border)}}
tk-figure:where(:not(tk-screen *, tk-note *)){margin:2rem 0}
tk-figure figure:where(:not(tk-screen *, tk-note *)){margin:0}
tk-figure figcaption:where(:not(tk-screen *, tk-note *)),tk-image figcaption:where(:not(tk-screen *, tk-note *)),tk-gallery figcaption:where(:not(tk-screen *, tk-note *)){font-size:.92rem;line-height:1.45;color:var(--tk-muted);margin-top:.6rem}

/* Tables: ruled header, hairline rows, tabular numerals right-aligned. */
tk-table:where(:not(tk-screen *, tk-note *)){margin:1.6rem 0}
tk-table .tk-wrap:where(:not(tk-screen *, tk-note *)){overflow-x:auto;-webkit-overflow-scrolling:touch}
/* 1.5.0: a shade on each side the table can still scroll to (data-tk-scroll from tacksheet.js). */
tk-table[data-tk-scroll~="right"] .tk-wrap:where(:not(tk-screen *, tk-note *)){box-shadow:inset -16px 0 14px -14px color-mix(in srgb,var(--tk-fg) 45%,transparent)}
tk-table[data-tk-scroll~="left"] .tk-wrap:where(:not(tk-screen *, tk-note *)){box-shadow:inset 16px 0 14px -14px color-mix(in srgb,var(--tk-fg) 45%,transparent)}
tk-table[data-tk-scroll~="left"][data-tk-scroll~="right"] .tk-wrap:where(:not(tk-screen *, tk-note *)){box-shadow:inset 16px 0 14px -14px color-mix(in srgb,var(--tk-fg) 45%,transparent),
  inset -16px 0 14px -14px color-mix(in srgb,var(--tk-fg) 45%,transparent)}
/* stack: on a phone each row is a card, every value under its column name (data-label). */
@media(max-width:640px){
  tk-table[stack] .tk-wrap:where(:not(tk-screen *, tk-note *)){overflow:visible;box-shadow:none}
  tk-table[stack] :is(table,tbody,tr,td):where(:not(tk-screen *, tk-note *)){display:block;width:100%}
  tk-table[stack] thead:where(:not(tk-screen *, tk-note *)){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  tk-table[stack] tr:where(:not(tk-screen *, tk-note *)){margin:0 0 .8rem;padding:.3rem .9rem;border:1px solid var(--tk-border);border-radius:var(--tk-radius);background:var(--tk-card)}
  tk-table[stack] tbody tr:nth-child(even):where(:not(tk-screen *, tk-note *)){background:var(--tk-card)}
  tk-table[stack] td:where(:not(tk-screen *, tk-note *)){display:grid;grid-template-columns:minmax(5.5rem,38%) minmax(0,1fr);gap:.8rem;padding:.5rem 0;border-bottom:1px dashed var(--tk-border);text-align:left!important}
  tk-table[stack] td:last-child:where(:not(tk-screen *, tk-note *)){border-bottom:0}
  tk-table[stack] td:where(:not(tk-screen *, tk-note *))::before{content:attr(data-label);font-family:var(--tk-font-mono);font-size:.8rem;line-height:1.5;color:var(--tk-muted);overflow-wrap:anywhere}
}
tk-table table:where(:not(tk-screen *, tk-note *)){width:100%;border-collapse:collapse;font-size:1rem;font-variant-numeric:tabular-nums}
tk-table th:where(:not(tk-screen *, tk-note *)),tk-table td:where(:not(tk-screen *, tk-note *)){text-align:left;padding:.62rem .75rem;border-bottom:1px solid var(--tk-border);vertical-align:top}
tk-table :is(th,td):first-child:where(:not(tk-screen *, tk-note *)){padding-left:0}
tk-table :is(th,td):last-child:where(:not(tk-screen *, tk-note *)){padding-right:0}
tk-table thead th:where(:not(tk-screen *, tk-note *)){position:sticky;top:0;background:var(--tk-bg);font-family:var(--tk-font-mono);font-weight:500;
  font-size:.74rem;letter-spacing:.02em;color:var(--tk-muted);white-space:nowrap;border-bottom:1.5px solid var(--tk-rule);vertical-align:bottom}
tk-table tbody tr:where(:not(tk-screen *, tk-note *)){transition:background .12s}
tk-table tbody tr:hover:where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
tk-table .tk-num:where(:not(tk-screen *, tk-note *)){text-align:right;font-family:var(--tk-font-data);font-size:.92em}
tk-table th button:where(:not(tk-screen *, tk-note *)){all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;min-height:44px}
tk-table th button:where(:not(tk-screen *, tk-note *))::after{content:"↕";opacity:.4;font-size:.9em}
tk-table th[aria-sort="ascending"] button:where(:not(tk-screen *, tk-note *))::after{content:"↑";opacity:1;color:var(--tk-accent)}
tk-table th[aria-sort="descending"] button:where(:not(tk-screen *, tk-note *))::after{content:"↓";opacity:1;color:var(--tk-accent)}
tk-table th button:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px}
tk-table .tk-filter:where(:not(tk-screen *, tk-note *)){display:block;width:100%;max-width:22rem;margin:0 0 .9rem;min-height:44px;font:inherit;font-size:max(16px,.92rem);color:inherit;
  background:var(--tk-field);border:1px solid var(--tk-control,var(--tk-border));border-radius:var(--tk-radius);padding:.55rem .8rem}
tk-table .tk-filter:focus:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:1px}
tk-timeline:where(:not(tk-screen *, tk-note *)){list-style:none;margin:1.6rem 0;padding:0 0 0 1.6rem;position:relative}
tk-timeline:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;left:.36rem;top:.5rem;bottom:.5rem;width:1px;background:var(--tk-border)}
tk-timeline li:where(:not(tk-screen *, tk-note *)){position:relative;margin:0 0 1.35rem;padding-left:.35rem}
tk-timeline li:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-timeline li:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;left:-1.6rem;top:.42rem;width:.75rem;height:.75rem;border-radius:50%;
  background:var(--tk-bg);border:2px solid var(--tk-accent-2);box-sizing:border-box}
tk-timeline li:last-child:where(:not(tk-screen *, tk-note *))::before{background:var(--tk-accent-2)}
tk-timeline .tk-when:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.82rem;letter-spacing:.02em;color:var(--tk-muted);margin-bottom:.15rem}
tk-steps:where(:not(tk-screen *, tk-note *)){counter-reset:tk-step;list-style:none;margin:1.6rem 0;padding:0}
tk-steps li:where(:not(tk-screen *, tk-note *)){counter-increment:tk-step;position:relative;padding:.1rem 0 1.15rem 3rem;min-height:2.2rem}
tk-steps li:not(:last-child):where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;left:1rem;top:2.25rem;bottom:.2rem;width:1px;background:var(--tk-border)}
tk-steps li:where(:not(tk-screen *, tk-note *))::before{content:counter(tk-step);position:absolute;left:0;top:0;width:2rem;height:2rem;border-radius:50%;
  border:1.5px solid var(--tk-accent);color:var(--tk-accent);background:var(--tk-bg);
  font-family:var(--tk-font-mono);font-weight:500;font-size:.82rem;display:flex;align-items:center;justify-content:center}
tk-kbd:where(:not(tk-screen *, tk-note *)){display:inline;font-family:var(--tk-font-mono);font-size:.8em;background:var(--tk-card);color:var(--tk-fg);
  border:1px solid var(--tk-border);border-bottom-width:2px;border-radius:4px;padding:.06em .4em;line-height:1.5;
  overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone}
tk-code:where(:not(tk-screen *, tk-note *)){position:relative;margin:1.6rem 0}
tk-code pre:where(:not(tk-screen *, tk-note *)){background:var(--tk-code-bg);color:var(--tk-code-fg);border-radius:var(--tk-radius);padding:2.35rem 1.15rem 1.1rem;
  overflow-x:auto;font-family:var(--tk-font-mono);font-size:.82rem;line-height:1.62;margin:0;tab-size:2;-webkit-overflow-scrolling:touch}
tk-code:where(:not(tk-screen *, tk-note *))::before{content:attr(language);position:absolute;top:.72rem;left:1.15rem;font-family:var(--tk-font-mono);font-size:.68rem;
  letter-spacing:.06em;color:var(--tk-code-fg);opacity:.5;pointer-events:none}
tk-code:not([language]):where(:not(tk-screen *, tk-note *))::before{content:"code"}
tk-code .tk-copy:where(:not(tk-screen *, tk-note *)){position:absolute;top:0;right:0;min-height:44px;min-width:44px;padding:0 1rem;font-family:var(--tk-font-mono);font-size:.7rem;
  letter-spacing:.04em;background:none;color:var(--tk-code-fg);opacity:.62;border:0;cursor:pointer}
tk-code .tk-copy:hover:where(:not(tk-screen *, tk-note *)),tk-code .tk-copy:focus-visible:where(:not(tk-screen *, tk-note *)){opacity:1;text-decoration:underline;text-underline-offset:.2em}
tk-code .tk-tok-k:where(:not(tk-screen *, tk-note *)){color:var(--tk-tok-k)}tk-code .tk-tok-s:where(:not(tk-screen *, tk-note *)){color:var(--tk-tok-s)}tk-code .tk-tok-c:where(:not(tk-screen *, tk-note *)){color:var(--tk-tok-c);font-style:italic}
tk-code .tk-tok-n:where(:not(tk-screen *, tk-note *)){color:var(--tk-tok-n)}tk-code .tk-tok-f:where(:not(tk-screen *, tk-note *)){color:var(--tk-tok-f)}
tk-details:where(:not(tk-screen *, tk-note *)){margin:1.4rem 0;border-top:1px solid var(--tk-border);border-bottom:1px solid var(--tk-border)}
tk-details summary:where(:not(tk-screen *, tk-note *)),tk-accordion button.tk-head:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer;
  min-height:48px;padding:.65rem 0;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1.02rem;
  letter-spacing:var(--tk-head-tracking,0);line-height:1.3;list-style:none}
tk-details summary:where(:not(tk-screen *, tk-note *))::-webkit-details-marker{display:none}
tk-details summary:where(:not(tk-screen *, tk-note *))::after,tk-accordion button.tk-head:where(:not(tk-screen *, tk-note *))::after{content:"+";font-family:var(--tk-font-mono);font-weight:400;font-size:1.15rem;
  color:var(--tk-accent);flex:none;width:1.5rem;text-align:center;transition:transform .2s}
tk-details details[open]>summary:where(:not(tk-screen *, tk-note *))::after,tk-accordion button.tk-head[aria-expanded="true"]:where(:not(tk-screen *, tk-note *))::after{content:"−"}
tk-details details>:not(summary):where(:not(tk-screen *, tk-note *)){margin:0 0 1rem}

/* ================= NAVIGATION ================= */
tk-toc:where(:not(tk-screen *, tk-note *)){margin:0 0 2.5rem;font-size:.95rem;padding:1rem 0 .4rem;border-top:2px solid var(--tk-rule)}
tk-toc strong:where(:not(tk-screen *, tk-note *)){display:block;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1rem;margin-bottom:.4rem}
tk-toc ol:where(:not(tk-screen *, tk-note *)){margin:0;padding:0;list-style:none;counter-reset:tk-toc}
tk-toc li:where(:not(tk-screen *, tk-note *)){margin:0;counter-increment:tk-toc;border-bottom:1px solid var(--tk-border)}
tk-toc li a:where(:not(tk-screen *, tk-note *)){display:flex;gap:.8rem;align-items:baseline;padding:.5rem 0;text-decoration:none;color:var(--tk-fg);min-height:44px;align-items:center}
tk-toc li a:where(:not(tk-screen *, tk-note *))::before{content:counter(tk-toc,decimal-leading-zero);font-family:var(--tk-font-mono);font-size:.72rem;color:var(--tk-accent-2-text);flex:none;min-width:1.4rem}
tk-toc li a:hover:where(:not(tk-screen *, tk-note *)){color:var(--tk-accent)}
tk-toc li a[data-depth="3"]:where(:not(tk-screen *, tk-note *)){padding-left:2.2rem;font-size:.9em;color:var(--tk-muted)}
tk-toc li a[data-depth="3"]:where(:not(tk-screen *, tk-note *))::before{content:none}
tk-toc li:has(>a[data-depth="3"]):where(:not(tk-screen *, tk-note *)){counter-increment:none}
@media(min-width:1100px){tk-toc[data-sticky]:where(:not(tk-screen *, tk-note *)){position:sticky;top:1rem;z-index:2;background:var(--tk-bg)}}
tk-toc .tk-toggle:where(:not(tk-screen *, tk-note *)){display:none;width:100%;min-height:44px;font:inherit;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);
  background:none;border:0;color:inherit;text-align:left;cursor:pointer;padding:0;justify-content:space-between;align-items:center}
tk-toc .tk-toggle:where(:not(tk-screen *, tk-note *))::after{content:"−";font-family:var(--tk-font-mono);color:var(--tk-accent)}
tk-toc.tk-closed .tk-toggle:where(:not(tk-screen *, tk-note *))::after{content:"+"}
@media(max-width:640px){tk-toc[data-collapsible] .tk-toggle:where(:not(tk-screen *, tk-note *)){display:flex}tk-toc[data-collapsible]>strong:where(:not(tk-screen *, tk-note *)){display:none}
  tk-toc[data-collapsible].tk-closed ol:where(:not(tk-screen *, tk-note *)){display:none}}
tk-tabs:where(:not(tk-screen *, tk-note *)){margin:1.6rem 0}
tk-tabs [role="tablist"]:where(:not(tk-screen *, tk-note *)){display:flex;gap:1.6rem;overflow-x:auto;border-bottom:1px solid var(--tk-border);scrollbar-width:none}
tk-tabs [role="tab"]:where(:not(tk-screen *, tk-note *)){min-height:46px;font:inherit;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1rem;
  letter-spacing:var(--tk-head-tracking,0);color:var(--tk-muted);background:none;border:0;border-bottom:2px solid transparent;
  margin-bottom:-1px;padding:.6rem 0;cursor:pointer;white-space:nowrap}
tk-tabs [role="tab"]:hover:where(:not(tk-screen *, tk-note *)){color:var(--tk-fg)}
tk-tabs [role="tab"][aria-selected="true"]:where(:not(tk-screen *, tk-note *)){border-bottom-color:var(--tk-accent-2);color:var(--tk-fg)}
tk-tabs [role="tabpanel"]:where(:not(tk-screen *, tk-note *)){padding:1.15rem 0 .25rem}
tk-tabs [role="tabpanel"]>:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-tabs [role="tabpanel"]>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-accordion:where(:not(tk-screen *, tk-note *)){margin:1.6rem 0;border-top:1px solid var(--tk-border)}
tk-accordion>section:where(:not(tk-screen *, tk-note *)){border-bottom:1px solid var(--tk-border)}
tk-accordion button.tk-head:where(:not(tk-screen *, tk-note *)){all:unset;display:flex;width:100%;box-sizing:border-box;min-height:52px;padding:.7rem 0;cursor:pointer;
  align-items:center;justify-content:space-between;gap:1rem;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1.02rem;line-height:1.3}
tk-accordion button.tk-head:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px}
tk-accordion .tk-panel:where(:not(tk-screen *, tk-note *)){padding:0 2.2rem 1.1rem 0}
tk-accordion .tk-panel>:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-accordion .tk-panel>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-pager:where(:not(tk-screen *, tk-note *)){margin:1.6rem 0;outline-offset:6px}
tk-pager>:is(tk-page-section,section,div):not(.tk-nav)>:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-pager nav:where(:not(tk-screen *, tk-note *)){display:flex;gap:.75rem;align-items:center;justify-content:space-between;margin-top:1.1rem;padding-top:.9rem;border-top:1px solid var(--tk-border)}
tk-pager nav button:where(:not(tk-screen *, tk-note *)),tk-slides .tk-bar button:where(:not(tk-screen *, tk-note *)){min-height:44px;min-width:44px;font:inherit;font-family:var(--tk-font-mono);font-size:.78rem;
  letter-spacing:.02em;color:var(--tk-fg);background:transparent;border:1px solid var(--tk-border);border-radius:var(--tk-radius);
  padding:.45rem 1rem;cursor:pointer;transition:border-color .15s,background .15s}
tk-pager nav button:hover:not(:disabled):where(:not(tk-screen *, tk-note *)),tk-slides .tk-bar button:hover:where(:not(tk-screen *, tk-note *)){border-color:var(--tk-fg)}
tk-pager nav button:disabled:where(:not(tk-screen *, tk-note *)){opacity:.38;cursor:default}
tk-pager .tk-count:where(:not(tk-screen *, tk-note *)),tk-slides .tk-count:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.74rem;color:var(--tk-muted);font-feature-settings:"tnum"}
tk-progress:where(:not(tk-screen *, tk-note *)){position:sticky;top:0;z-index:20;height:3px;background:transparent;margin:0}
tk-progress i:where(:not(tk-screen *, tk-note *)){display:block;height:100%;width:0;background:var(--tk-accent-2);transition:width .08s linear}

/* ================= IMAGES ================= */
tk-image:where(:not(tk-screen *, tk-note *)){margin:2rem 0}
tk-image figure:where(:not(tk-screen *, tk-note *)){margin:0}
tk-image img:where(:not(tk-screen *, tk-note *)){display:block;width:100%;border-radius:var(--tk-radius);box-shadow:var(--tk-shadow)}
tk-gallery:where(:not(tk-screen *, tk-note *)){margin:1.8rem 0}
tk-gallery .tk-grid:where(:not(tk-screen *, tk-note *)){display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(min(13rem,100%),1fr))}
tk-gallery figure:where(:not(tk-screen *, tk-note *)){margin:0}
tk-gallery img:where(:not(tk-screen *, tk-note *)){display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--tk-radius);cursor:zoom-in;
  background:var(--tk-bg-soft);box-shadow:var(--tk-shadow);transition:transform .25s ease,box-shadow .25s ease}
tk-gallery img:hover:where(:not(tk-screen *, tk-note *)){transform:translateY(-2px);box-shadow:var(--tk-lift)}
tk-gallery[data-layout="masonry"] .tk-grid:where(:not(tk-screen *, tk-note *)){display:block;columns:3 12rem;column-gap:.75rem}
tk-gallery[data-layout="masonry"] figure:where(:not(tk-screen *, tk-note *)){break-inside:avoid;margin-bottom:.75rem}
tk-gallery[data-layout="masonry"] img:where(:not(tk-screen *, tk-note *)){aspect-ratio:auto}
tk-gallery[data-layout="carousel"] .tk-grid:where(:not(tk-screen *, tk-note *)){display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;padding:.25rem .25rem 1rem;
  margin:0 -.25rem;scrollbar-width:thin;scrollbar-color:var(--tk-border) transparent;-webkit-overflow-scrolling:touch}
tk-gallery[data-layout="carousel"] figure:where(:not(tk-screen *, tk-note *)){flex:0 0 min(82%,26rem);scroll-snap-align:start}
tk-gallery[data-layout="carousel"] img:where(:not(tk-screen *, tk-note *)){aspect-ratio:16/10}
tk-lightbox:where(:not(tk-screen *, tk-note *)){margin:1.8rem 0}
tk-lightbox img:where(:not(tk-screen *, tk-note *)){cursor:zoom-in}
:is(tk-gallery,tk-lightbox) img[role="button"]:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:3px}
img[data-tk-viewable]:where(:not(tk-screen *, tk-note *)){cursor:zoom-in}
img[data-tk-viewable]:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:3px}
html.tk-viewer-open{overflow:hidden;scrollbar-gutter:stable}
dialog.tk-viewer:where(:not(tk-screen *, tk-note *)){position:fixed;inset:0 auto auto 0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;
  background:rgba(12,11,10,.97);color:#f4efe3;overflow:hidden;transform-origin:0 0;touch-action:none;overscroll-behavior:contain;
  font-family:"IBM Plex Mono",ui-monospace,monospace}
dialog.tk-viewer:where(:not(tk-screen *, tk-note *))::backdrop{background:rgba(12,11,10,.9)}
dialog.tk-viewer .tk-viewer-box:where(:not(tk-screen *, tk-note *)){position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:100%;height:100%;
  padding:max(.25rem,env(safe-area-inset-top)) max(.25rem,env(safe-area-inset-right)) max(.25rem,env(safe-area-inset-bottom)) max(.25rem,env(safe-area-inset-left))}
dialog.tk-viewer .tk-viewer-top:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:48px;padding:0 .25rem 0 .75rem}
dialog.tk-viewer .tk-frame:where(:not(tk-screen *, tk-note *)){position:relative;min-height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;
  touch-action:none;user-select:none;-webkit-user-select:none;cursor:zoom-in}
dialog.tk-viewer .tk-frame[data-tk-zoomed]:where(:not(tk-screen *, tk-note *)){cursor:grab}
dialog.tk-viewer .tk-frame[data-tk-zoomed].tk-live:where(:not(tk-screen *, tk-note *)){cursor:grabbing}
dialog.tk-viewer .tk-frame:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid #f4efe3;outline-offset:-4px}
dialog.tk-viewer .tk-frame img:where(:not(tk-screen *, tk-note *)){display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;margin:auto;
  transition:transform .2s ease;-webkit-user-drag:none;user-select:none;box-shadow:0 20px 60px rgba(0,0,0,.55)}
dialog.tk-viewer .tk-live img:where(:not(tk-screen *, tk-note *)){transition:none}
dialog.tk-viewer .tk-viewer-bottom:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:52px;padding:.35rem .25rem .25rem .75rem}
dialog.tk-viewer .tk-caption:where(:not(tk-screen *, tk-note *)){margin:0;flex:1;min-width:0;font-family:var(--tk-font-body,system-ui,sans-serif);font-size:.95rem;line-height:1.4;
  max-height:4.2em;overflow:auto;color:#f4efe3}
dialog.tk-viewer .tk-count:where(:not(tk-screen *, tk-note *)){margin:0;font-size:.875rem;letter-spacing:.04em;opacity:.85;font-feature-settings:"tnum"}
dialog.tk-viewer .tk-tools:where(:not(tk-screen *, tk-note *)){display:flex;gap:.35rem;flex:none}
dialog.tk-viewer button:where(:not(tk-screen *, tk-note *)){min-height:44px;min-width:44px;font-family:inherit;font-size:1.05rem;line-height:1;border-radius:3px;
  border:1px solid rgba(244,239,227,.32);background:rgba(20,18,16,.62);color:#f4efe3;cursor:pointer;padding:.4rem .8rem}
dialog.tk-viewer button:hover:where(:not(tk-screen *, tk-note *)){background:rgba(244,239,227,.18)}
dialog.tk-viewer button:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid #f4efe3;outline-offset:2px}
dialog.tk-viewer :is(.tk-prev,.tk-next):where(:not(tk-screen *, tk-note *)){position:absolute;top:50%;translate:0 -50%;min-width:48px;min-height:64px;font-size:1.9rem;padding:0 .4rem}
dialog.tk-viewer .tk-prev:where(:not(tk-screen *, tk-note *)){left:max(.35rem,env(safe-area-inset-left))}
dialog.tk-viewer .tk-next:where(:not(tk-screen *, tk-note *)){right:max(.35rem,env(safe-area-inset-right))}
dialog.tk-viewer [hidden]:where(:not(tk-screen *, tk-note *)){display:none!important}
tk-compare:where(:not(tk-screen *, tk-note *)){position:relative;margin:2rem 0;overflow:hidden;border-radius:var(--tk-radius);user-select:none;box-shadow:var(--tk-shadow);touch-action:pan-y pinch-zoom}
tk-compare img:where(:not(tk-screen *, tk-note *)){display:block;width:100%;pointer-events:none}
tk-compare .tk-after:where(:not(tk-screen *, tk-note *)){position:absolute;inset:0;overflow:hidden}
tk-compare .tk-after img:where(:not(tk-screen *, tk-note *)){width:100%;height:100%;object-fit:cover;max-width:none}
tk-compare .tk-handle:where(:not(tk-screen *, tk-note *)){position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.25);pointer-events:none}
tk-compare .tk-handle:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;top:50%;left:50%;width:2.5rem;height:2.5rem;margin:-1.25rem 0 0 -1.25rem;border-radius:50%;
  background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.35);
  background-image:linear-gradient(135deg,transparent 45%,#222 45% 55%,transparent 55%),linear-gradient(45deg,transparent 45%,#222 45% 55%,transparent 55%);
  background-size:.5rem .5rem;background-repeat:no-repeat;background-position:30% 50%,70% 50%}
tk-compare input[type="range"]:where(:not(tk-screen *, tk-note *)){position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
tk-compare:focus-within .tk-handle:where(:not(tk-screen *, tk-note *))::after{outline:2px solid var(--tk-accent);outline-offset:3px}
tk-compare .tk-tag:where(:not(tk-screen *, tk-note *)){position:absolute;bottom:.75rem;font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.68rem;letter-spacing:.06em;
  color:#fff;background:rgba(0,0,0,.55);padding:.25rem .5rem;border-radius:2px;pointer-events:none}
tk-compare .tk-tag-before:where(:not(tk-screen *, tk-note *)){left:.75rem}tk-compare .tk-tag-after:where(:not(tk-screen *, tk-note *)){right:.75rem}
tk-zoom:where(:not(tk-screen *, tk-note *)){position:relative;margin:2rem 0}
tk-zoom .tk-stage:where(:not(tk-screen *, tk-note *)){overflow:hidden;border-radius:var(--tk-radius);touch-action:pan-y;position:relative;box-shadow:var(--tk-shadow);background:var(--tk-bg-soft);
  cursor:zoom-in;user-select:none;-webkit-user-select:none}
tk-zoom .tk-stage[data-tk-zoomed]:where(:not(tk-screen *, tk-note *)){touch-action:none;cursor:grab}
tk-zoom .tk-stage[data-tk-zoomed].tk-live:where(:not(tk-screen *, tk-note *)){cursor:grabbing}
tk-zoom .tk-stage:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:3px}
tk-zoom img:where(:not(tk-screen *, tk-note *)){display:block;width:100%;transform-origin:0 0;transition:transform .12s ease-out;-webkit-user-drag:none;user-select:none}
tk-zoom .tk-live img:where(:not(tk-screen *, tk-note *)){transition:none}
tk-zoom .tk-tools:where(:not(tk-screen *, tk-note *)){position:absolute;top:.6rem;right:.6rem;display:flex;gap:0;background:var(--tk-card);border:1px solid var(--tk-border);
  border-radius:var(--tk-radius);box-shadow:var(--tk-shadow);overflow:hidden}
tk-zoom .tk-tools button:where(:not(tk-screen *, tk-note *)){min-height:44px;min-width:44px;border:0;border-left:1px solid var(--tk-border);background:none;color:var(--tk-fg);
  cursor:pointer;font-family:var(--tk-font-mono);font-size:.95rem;padding:0 .7rem}
tk-zoom .tk-tools button:first-child:where(:not(tk-screen *, tk-note *)){border-left:0}
tk-zoom .tk-tools button:hover:where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
tk-annotate:where(:not(tk-screen *, tk-note *)){margin:2rem 0}
tk-annotate .tk-stage:where(:not(tk-screen *, tk-note *)){position:relative}
tk-annotate img:where(:not(tk-screen *, tk-note *)){width:100%;border-radius:var(--tk-radius);display:block;box-shadow:var(--tk-shadow)}
.tk-pin:where(:not(tk-screen *, tk-note *)){position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;border:0;padding:0;background:none;cursor:pointer;
  font-family:var(--tk-font-mono);font-weight:500;font-size:.8rem;color:var(--tk-accent-ink);display:flex;align-items:center;justify-content:center}
.tk-pin:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--tk-accent-2);
  box-shadow:0 0 0 2px #fff,0 4px 12px rgba(0,0,0,.35);transition:transform .15s}
.tk-pin:hover:where(:not(tk-screen *, tk-note *))::before,.tk-pin[aria-current="true"]:where(:not(tk-screen *, tk-note *))::before{transform:scale(1.15)}
.tk-pin>*:where(:not(tk-screen *, tk-note *)),.tk-pin:where(:not(tk-screen *, tk-note *)){z-index:1}
.tk-pin:where(:not(tk-screen *, tk-note *)){isolation:isolate}
.tk-pin:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;inset:9px;border-radius:50%;border:2px solid var(--tk-accent-2);opacity:0;animation:tk-ping 2.4s ease-out infinite}
@keyframes tk-ping{0%{transform:scale(1);opacity:.6}70%,100%{transform:scale(2.1);opacity:0}}
tk-annotate ol:where(:not(tk-screen *, tk-note *)){margin:1rem 0 0;padding:0;list-style:none;counter-reset:tk-ann;font-size:.94rem}
tk-annotate li:where(:not(tk-screen *, tk-note *)){counter-increment:tk-ann;display:grid;grid-template-columns:1.9rem 1fr;gap:.6rem;padding:.55rem 0;border-bottom:1px solid var(--tk-border);transition:background .3s}
tk-annotate li:where(:not(tk-screen *, tk-note *))::before{content:counter(tk-ann);width:1.55rem;height:1.55rem;border-radius:50%;background:var(--tk-accent-2);color:#fff;
  font-family:var(--tk-font-mono);font-size:.72rem;display:flex;align-items:center;justify-content:center;margin-top:.1rem}
tk-annotate li strong:where(:not(tk-screen *, tk-note *)){font-weight:680}

/* ================= VIDEO / AUDIO / SLIDES / SCROLLY ================= */
tk-video:where(:not(tk-screen *, tk-note *)),tk-audio:where(:not(tk-screen *, tk-note *)){margin:2rem 0}
tk-video video:where(:not(tk-screen *, tk-note *)){display:block;width:100%;border-radius:var(--tk-radius);background:#0b0a09;box-shadow:var(--tk-lift)}
tk-video .tk-chapters:where(:not(tk-screen *, tk-note *)),tk-audio .tk-chapters:where(:not(tk-screen *, tk-note *)){list-style:none;margin:.9rem 0 0;padding:0;display:flex;gap:0;flex-wrap:wrap;border-top:1px solid var(--tk-border)}
tk-video .tk-chapters li:where(:not(tk-screen *, tk-note *)),tk-audio .tk-chapters li:where(:not(tk-screen *, tk-note *)){flex:1 1 8rem}
tk-video .tk-chapters button:where(:not(tk-screen *, tk-note *)),tk-audio .tk-chapters button:where(:not(tk-screen *, tk-note *)){width:100%;min-height:52px;font:inherit;font-size:.9rem;text-align:left;border:0;
  border-top:2px solid transparent;margin-top:-1px;background:none;color:var(--tk-fg);cursor:pointer;padding:.55rem .75rem .5rem 0;display:flex;flex-direction:column;gap:.1rem}
tk-video .tk-chapters button:hover:where(:not(tk-screen *, tk-note *)),tk-audio .tk-chapters button:hover:where(:not(tk-screen *, tk-note *)),tk-video .tk-chapters button[aria-current="true"]:where(:not(tk-screen *, tk-note *)),tk-audio .tk-chapters button[aria-current="true"]:where(:not(tk-screen *, tk-note *)){border-top-color:var(--tk-accent-2)}
.tk-chapters .tk-time:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.7rem;color:var(--tk-muted);font-feature-settings:"tnum"}
tk-video .tk-rate:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;gap:.6rem;margin-top:.6rem;font-family:var(--tk-font-mono);font-size:.74rem;color:var(--tk-muted)}
tk-video>p:where(:not(tk-screen *, tk-note *)){font-size:.92rem;color:var(--tk-muted);margin:.8rem 0 0}
tk-audio audio:where(:not(tk-screen *, tk-note *)){display:none}
tk-audio .tk-player:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;gap:.9rem;padding:.8rem 1rem;background:var(--tk-card);border:1px solid var(--tk-border);
  border-radius:var(--tk-radius);box-shadow:var(--tk-shadow)}
tk-audio .tk-player button.tk-play-btn:where(:not(tk-screen *, tk-note *)){flex:none;width:44px;height:44px;border-radius:50%;border:0;background:var(--tk-accent);color:var(--tk-accent-ink);
  cursor:pointer;font-size:.9rem;display:flex;align-items:center;justify-content:center;padding:0}
tk-audio .tk-player input[type="range"]:where(:not(tk-screen *, tk-note *)){flex:1;min-width:4rem}
tk-audio .tk-player .tk-time:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.74rem;color:var(--tk-muted);white-space:nowrap;font-feature-settings:"tnum"}
tk-slides:where(:not(tk-screen *, tk-note *)){margin:2rem 0;border:1px solid var(--tk-border);border-radius:var(--tk-radius);overflow:hidden;background:var(--tk-card);box-shadow:var(--tk-shadow);outline-offset:4px}
tk-slides .tk-viewport:where(:not(tk-screen *, tk-note *)){padding:clamp(1.5rem,4vw,2.75rem) clamp(1.25rem,4vw,2.75rem) clamp(1.25rem,3vw,2rem);min-height:11rem;display:flex;flex-direction:column;justify-content:center}
tk-slides .tk-slide:where(:not(tk-screen *, tk-note *)){display:none}
tk-slides .tk-slide[aria-hidden="false"]:where(:not(tk-screen *, tk-note *)){display:block;animation:tk-in .35s ease}
tk-slides .tk-slide>:is(h2,h3,h4):first-child:where(:not(tk-screen *, tk-note *)){font-size:clamp(1.4rem,1.1rem + 1.4vw,2.1rem);margin:0 0 .5em}
tk-slides .tk-slide>p:where(:not(tk-screen *, tk-note *)){font-size:1.06em;max-width:36em}
tk-slides .tk-bar:where(:not(tk-screen *, tk-note *)){display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.55rem .75rem;border-top:1px solid var(--tk-border);position:relative}
tk-slides .tk-bar:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;left:0;top:-1px;height:2px;width:var(--tk-progress,0%);background:var(--tk-accent-2);transition:width .3s ease}
@keyframes tk-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* Scrolly: the bound chart is parked in a sticky, vertically centred column;
 * steps scroll past it as readable cards. Phones pin the chart to the top. */
tk-scrolly:where(:not(tk-screen *, tk-note *)){display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:0 clamp(1.5rem,4vw,3rem);margin:2rem 0}
tk-scrolly .tk-visual:where(:not(tk-screen *, tk-note *)){position:sticky;top:max(1rem,calc(50 * var(--tk-vh,1vh) - 13.5rem));align-self:start;grid-column:1;grid-row:1 / span var(--tk-steps,1);
  padding:1rem 1.1rem .4rem;background:var(--tk-card);border:1px solid var(--tk-border);border-radius:var(--tk-radius);box-shadow:var(--tk-shadow)}
tk-scrolly .tk-visual tk-chart:where(:not(tk-screen *, tk-note *)){margin:0}
tk-scrolly .tk-visual tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)){height:21rem;min-height:14rem}
tk-scrolly:not([data-unbound]) .tk-step:where(:not(tk-screen *, tk-note *)){grid-column:2}
tk-scrolly .tk-step:where(:not(tk-screen *, tk-note *)){position:relative;margin:0 0 calc(46 * var(--tk-vh,1vh));padding:1.25rem 1.35rem;border:1px solid var(--tk-border);border-radius:var(--tk-radius);
  background:var(--tk-card);transition:opacity .35s ease,border-color .35s ease,box-shadow .35s ease;opacity:.5}
tk-scrolly .tk-step:first-of-type:where(:not(tk-screen *, tk-note *)){margin-top:calc(8 * var(--tk-vh,1vh))}
tk-scrolly .tk-step:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:calc(22 * var(--tk-vh,1vh))}
tk-scrolly .tk-step[data-active="true"]:where(:not(tk-screen *, tk-note *)){opacity:1;border-color:var(--tk-fg);box-shadow:var(--tk-lift)}
tk-scrolly .tk-step:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:3px;background:var(--tk-accent-2);transform:scaleY(0);transform-origin:top;transition:transform .4s ease}
tk-scrolly .tk-step[data-active="true"]:where(:not(tk-screen *, tk-note *))::before{transform:none}
tk-scrolly .tk-step>:is(h3,h4):first-child:where(:not(tk-screen *, tk-note *)){margin-top:0;font-size:1.2rem}
tk-scrolly .tk-step>p:where(:not(tk-screen *, tk-note *)){margin:0 0 .7em}
tk-scrolly .tk-step>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-scrolly .tk-step .tk-big:where(:not(tk-screen *, tk-note *)){display:block;font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:2.4rem;line-height:1;letter-spacing:var(--tk-head-tracking,0);margin:.4rem 0 .5rem;color:var(--tk-accent-2)}
tk-scrolly[data-unbound]:where(:not(tk-screen *, tk-note *)){grid-template-columns:minmax(0,1fr)}
tk-scrolly[data-unbound] .tk-step:where(:not(tk-screen *, tk-note *)){grid-column:1;margin:0 0 1rem;opacity:1}
@media(max-width:760px){
  tk-scrolly:where(:not(tk-screen *, tk-note *)){grid-template-columns:minmax(0,1fr);gap:0}
  tk-scrolly .tk-visual:where(:not(tk-screen *, tk-note *)){grid-column:1;grid-row:auto;top:0;z-index:3;margin:0 -1.05rem;padding:.6rem 1.05rem .2rem;border-radius:0;border-width:0 0 1px;box-shadow:0 10px 20px -16px rgba(0,0,0,.4)}
  tk-scrolly .tk-visual tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)){height:13.5rem;min-height:12rem}
  tk-scrolly .tk-visual details.tk-fallback:where(:not(tk-screen *, tk-note *)){display:none}
  tk-scrolly:not([data-unbound]) .tk-step:where(:not(tk-screen *, tk-note *)){grid-column:1;margin:0 0 calc(38 * var(--tk-vh,1vh))}
  tk-scrolly .tk-step:first-of-type:where(:not(tk-screen *, tk-note *)){margin-top:1.25rem}
  tk-scrolly .tk-step:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:2rem}}

/* Embedded at full content height (html[data-tk-embedded]), nothing scrolls
   inside the sheet, so sticky cannot hold the chart: the kit moves it with
   the window the shell reports, and the steps sit close together. The
   reading-progress bar shows once the kit knows how the sheet scrolls: sticky
   when the frame scrolls itself (Tacksheet's sheet page), moved with the
   shell's window otherwise (data-tk-follow, 1.3.0). */
html[data-tk-embedded] tk-scrolly .tk-visual:where(:not(tk-screen *, tk-note *)){position:relative;top:auto;will-change:transform}
html[data-tk-embedded] tk-scrolly .tk-step:where(:not(tk-screen *, tk-note *)){margin:0 0 1.25rem}
html[data-tk-embedded] tk-scrolly .tk-step:first-of-type:where(:not(tk-screen *, tk-note *)){margin-top:0}
html[data-tk-embedded] tk-scrolly .tk-step:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
html[data-tk-embedded] tk-progress:not([data-tk-live]):where(:not(tk-screen *, tk-note *)){display:none}
html[data-tk-embedded] tk-progress[data-tk-follow]:where(:not(tk-screen *, tk-note *)){position:relative;top:auto;will-change:transform}
@media(max-width:760px){html[data-tk-embedded] tk-scrolly .tk-step:first-of-type:where(:not(tk-screen *, tk-note *)){margin-top:1.25rem}}

/* ================= CHARTS ================= */
tk-chart:where(:not(tk-screen *, tk-note *)){margin:1.8rem 0;position:relative}
tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)){width:100%;height:20rem;min-height:14rem}
tk-chart[data-size="small"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:13rem;min-height:10rem}
/* Sparklines are inline trends, not cards: a few rems tall. */
tk-chart[type="sparkline"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:3rem;min-height:3rem}
tk-chart[data-size="large"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:28rem}
tk-card tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)){height:17rem}
tk-card tk-chart[data-size="small"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:12rem}
@media(max-width:640px){
  tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)),tk-card tk-chart .tk-canvas:where(:not(tk-screen *, tk-note *)){height:16rem;min-height:13rem}
  tk-chart[data-size="large"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:20rem}
  tk-chart[type="sparkline"] .tk-canvas:where(:not(tk-screen *, tk-note *)){height:3rem;min-height:3rem}
}
tk-chart .tk-title:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1.06rem;line-height:1.3;margin:0 0 .2rem}
tk-chart .tk-sub:where(:not(tk-screen *, tk-note *)){font-size:.95rem;color:var(--tk-muted);margin:0 0 .5rem;line-height:1.4}
tk-chart .tk-canvas>.tk-note:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;justify-content:center;height:100%;margin:0;text-align:center;padding:1rem;
  border:1px dashed var(--tk-border);border-radius:var(--tk-radius)}
tk-chart details.tk-fallback:where(:not(tk-screen *, tk-note *)){margin-top:.2rem}
tk-chart details.tk-fallback summary:where(:not(tk-screen *, tk-note *)){display:inline-flex;align-items:center;gap:.4rem;min-height:44px;cursor:pointer;list-style:none;
  font-family:var(--tk-font-mono);font-size:.7rem;letter-spacing:.03em;color:var(--tk-muted)}
tk-chart details.tk-fallback summary:where(:not(tk-screen *, tk-note *))::-webkit-details-marker{display:none}
tk-chart details.tk-fallback summary:where(:not(tk-screen *, tk-note *))::after{content:"↓";font-size:.9em;transition:transform .2s}
tk-chart details.tk-fallback[open] summary:where(:not(tk-screen *, tk-note *))::after{transform:rotate(180deg)}
tk-chart details.tk-fallback summary:hover:where(:not(tk-screen *, tk-note *)){color:var(--tk-fg)}
tk-chart table:where(:not(tk-screen *, tk-note *)){border-collapse:collapse;font-size:.9rem;width:100%;font-variant-numeric:tabular-nums;margin-bottom:.5rem}
tk-chart table th:where(:not(tk-screen *, tk-note *)),tk-chart table td:where(:not(tk-screen *, tk-note *)){border-bottom:1px solid var(--tk-border);padding:.35rem .5rem;text-align:left}
tk-chart table th:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-weight:500;font-size:.8rem;color:var(--tk-muted)}
tk-chart .tk-facets:where(:not(tk-screen *, tk-note *)){display:grid;gap:1rem 1.5rem;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr))}
tk-chart .tk-facets h4:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-weight:500;font-size:.76rem;letter-spacing:.03em;margin:0 0 .1rem;color:var(--tk-muted)}
tk-chart .tk-facets .tk-canvas:where(:not(tk-screen *, tk-note *)){height:14rem;min-height:11rem}

/* ================= CONTROLS / DYNAMICS ================= */
.tk-controls:where(:not(tk-screen *, tk-note *)){display:flex;gap:1rem 1.5rem;flex-wrap:wrap;align-items:flex-end;margin:1.4rem 0;padding:1rem 0;border-top:1px solid var(--tk-border);border-bottom:1px solid var(--tk-border)}
.tk-controls>*:where(:not(tk-screen *, tk-note *)),tk-slider:where(:not(tk-screen *, tk-note *)),tk-range:where(:not(tk-screen *, tk-note *)),tk-select:where(:not(tk-screen *, tk-note *)),tk-toggle:where(:not(tk-screen *, tk-note *)),tk-radio-group:where(:not(tk-screen *, tk-note *)),tk-search:where(:not(tk-screen *, tk-note *)),tk-number:where(:not(tk-screen *, tk-note *)),tk-date:where(:not(tk-screen *, tk-note *)),tk-play:where(:not(tk-screen *, tk-note *)){flex:1 1 11rem;min-width:min(11rem,100%);max-width:24rem}
tk-radio-group:where(:not(tk-screen *, tk-note *)){max-width:none}
.tk-field label:where(:not(tk-screen *, tk-note *)),tk-radio-group legend:where(:not(tk-screen *, tk-note *)){display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;font-size:.95rem;font-weight:620;
  color:var(--tk-fg);margin-bottom:.35rem;line-height:1.3}
.tk-field output:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-data);font-size:.9rem;font-weight:500;color:var(--tk-accent);font-feature-settings:"tnum"}
.tk-field:where(:not(tk-screen *, tk-note *)){position:relative}
.tk-field>output:where(:not(tk-screen *, tk-note *)){position:absolute;top:0;right:0}
/* Range inputs: a slim track filled to the thumb (--tk-fill set by the runtime). */
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *)){-webkit-appearance:none;appearance:none;width:100%;min-height:44px;background:transparent;margin:0;cursor:pointer;
  --tk-fill:50%}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *))::-webkit-slider-runnable-track{height:4px;border-radius:2px;
  background:linear-gradient(90deg,var(--tk-accent) var(--tk-fill),var(--tk-control,var(--tk-border)) var(--tk-fill))}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *))::-moz-range-track{height:4px;border-radius:2px;background:var(--tk-control,var(--tk-border))}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *))::-moz-range-progress{height:4px;border-radius:2px;background:var(--tk-accent)}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *))::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-8px;border-radius:50%;
  background:var(--tk-accent);border:3px solid var(--tk-card);box-shadow:0 0 0 1px var(--tk-accent),0 2px 6px rgba(0,0,0,.25);transition:transform .12s}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:where(:not(tk-screen *, tk-note *))::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--tk-accent);
  border:3px solid var(--tk-card);box-shadow:0 0 0 1px var(--tk-accent)}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:active:where(:not(tk-screen *, tk-note *))::-webkit-slider-thumb{transform:scale(1.15)}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:focus-visible:where(:not(tk-screen *, tk-note *)){outline:none}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:focus-visible:where(:not(tk-screen *, tk-note *))::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--tk-accent),0 0 0 5px color-mix(in srgb,var(--tk-accent) 30%,transparent)}
body:is([data-tk-theme],:not([data-tk-theme])) input[type="range"]:disabled:where(:not(tk-screen *, tk-note *)){cursor:default;opacity:.55}
/* Dual range: both inputs share one cell and one track; only the thumbs
 * take pointer events, and the lower input paints the span between them. */
tk-range .tk-field:where(:not(tk-screen *, tk-note *)){display:grid;grid-template-columns:minmax(0,1fr);--tk-lo:0%;--tk-hi:100%}
tk-range .tk-field input[type="range"]:where(:not(tk-screen *, tk-note *)){grid-area:2 / 1;pointer-events:none;position:relative}
tk-range .tk-field input[type="range"][data-tk-top]:where(:not(tk-screen *, tk-note *)){z-index:2}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:where(:not(tk-screen *, tk-note *))::-webkit-slider-thumb{pointer-events:auto;position:relative;z-index:1}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:where(:not(tk-screen *, tk-note *))::-moz-range-thumb{pointer-events:auto}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:first-of-type:where(:not(tk-screen *, tk-note *))::-webkit-slider-runnable-track{
  background:linear-gradient(90deg,var(--tk-control,var(--tk-border)) var(--tk-lo),var(--tk-accent) var(--tk-lo) var(--tk-hi),var(--tk-control,var(--tk-border)) var(--tk-hi))}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:last-of-type:where(:not(tk-screen *, tk-note *))::-webkit-slider-runnable-track{background:transparent}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:first-of-type:where(:not(tk-screen *, tk-note *))::-moz-range-track{
  background:linear-gradient(90deg,var(--tk-control,var(--tk-border)) var(--tk-lo),var(--tk-accent) var(--tk-lo) var(--tk-hi),var(--tk-control,var(--tk-border)) var(--tk-hi))}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:last-of-type:where(:not(tk-screen *, tk-note *))::-moz-range-track{background:transparent}
body:is([data-tk-theme],:not([data-tk-theme])) tk-range input[type="range"]:where(:not(tk-screen *, tk-note *))::-moz-range-progress{background:transparent}
/* Text-like fields share one look; selects get a drawn caret (no images). */
tk-select select:where(:not(tk-screen *, tk-note *)),tk-search input:where(:not(tk-screen *, tk-note *)),tk-number input:where(:not(tk-screen *, tk-note *)),tk-date input:where(:not(tk-screen *, tk-note *)),.tk-feedback :is(textarea,input[type="text"],input[type="number"],select):where(:not(tk-screen *, tk-note *)),
tk-video .tk-rate select:where(:not(tk-screen *, tk-note *)){-webkit-appearance:none;appearance:none;width:100%;min-height:44px;font:inherit;font-size:max(16px,.95rem);color:var(--tk-fg);
  background-color:var(--tk-field);border:1px solid var(--tk-control,var(--tk-border));border-radius:var(--tk-radius);padding:.55rem .8rem;
  transition:border-color .15s,box-shadow .15s}
tk-select select:where(:not(tk-screen *, tk-note *)),.tk-feedback select:where(:not(tk-screen *, tk-note *)),tk-video .tk-rate select:where(:not(tk-screen *, tk-note *)){padding-right:2.4rem;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--tk-muted) 50%),linear-gradient(135deg,var(--tk-muted) 50%,transparent 50%);
  background-position:calc(100% - 1.15rem) 52%,calc(100% - .8rem) 52%;background-size:.36rem .36rem;background-repeat:no-repeat}
tk-video .tk-rate select:where(:not(tk-screen *, tk-note *)){width:auto;min-width:5.5rem;font-family:var(--tk-font-mono);font-size:max(16px,.78rem)}
/* 1.5.0: the sheet's own fields too, at no weight, so its own sizes still win. */
:where(input:not([type="range"],[type="checkbox"],[type="radio"],[type="button"],[type="submit"],[type="reset"],[type="color"],[type="file"],[type="image"]),select,textarea):where(:not(tk-screen *, tk-note *)){font-size:max(16px,1em)}
:is(tk-select select,tk-search input,tk-number input,tk-date input,.tk-feedback :is(textarea,input,select)):hover:not(:disabled):where(:not(tk-screen *, tk-note *)){border-color:var(--tk-muted)}
:is(tk-select select,tk-search input,tk-number input,tk-date input,.tk-feedback :is(textarea,input,select),tk-video .tk-rate select):focus:where(:not(tk-screen *, tk-note *)){outline:none;
  border-color:var(--tk-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--tk-accent) 22%,transparent)}
tk-date input:where(:not(tk-screen *, tk-note *))::-webkit-calendar-picker-indicator{opacity:.6;cursor:pointer}
body:is([data-tk-theme],:not([data-tk-theme])) :where(:not(tk-screen *, tk-note *))::placeholder{color:var(--tk-muted);opacity:.75}
tk-toggle button:where(:not(tk-screen *, tk-note *)){display:inline-flex;align-items:center;gap:.7rem;min-height:44px;background:none;border:0;color:inherit;font:inherit;font-size:1rem;cursor:pointer;padding:0}
tk-toggle .tk-track:where(:not(tk-screen *, tk-note *)){width:2.6rem;height:1.5rem;border-radius:1rem;background:var(--tk-control,var(--tk-border));position:relative;flex:none;transition:background .18s}
tk-toggle .tk-track:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;top:.2rem;left:.2rem;width:1.1rem;height:1.1rem;border-radius:50%;background:var(--tk-card);
  box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .18s}
tk-toggle [aria-checked="true"] .tk-track:where(:not(tk-screen *, tk-note *)){background:var(--tk-accent)}
tk-toggle [aria-checked="true"] .tk-track:where(:not(tk-screen *, tk-note *))::after{transform:translateX(1.1rem)}
/* Radio groups render as a segmented control. */
tk-radio-group fieldset:where(:not(tk-screen *, tk-note *)){border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0;min-width:0}
tk-radio-group legend:where(:not(tk-screen *, tk-note *)){padding:0;width:100%;float:left}
tk-radio-group label:where(:not(tk-screen *, tk-note *)){position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;padding:.4rem .9rem;cursor:pointer;
  font-size:.9rem;border:1px solid var(--tk-control,var(--tk-border));margin:0 0 0 -1px;background:var(--tk-field);flex:1 1 auto;transition:background .15s,color .15s}
tk-radio-group legend+label:where(:not(tk-screen *, tk-note *)){margin-left:0;border-radius:var(--tk-radius) 0 0 var(--tk-radius)}
tk-radio-group label:last-child:where(:not(tk-screen *, tk-note *)){border-radius:0 var(--tk-radius) var(--tk-radius) 0}
tk-radio-group input:where(:not(tk-screen *, tk-note *)){position:absolute;opacity:0;width:1px;height:1px;margin:0}
tk-radio-group label:has(input:checked):where(:not(tk-screen *, tk-note *)){background:var(--tk-accent);border-color:var(--tk-accent);color:var(--tk-accent-ink);z-index:1}
tk-radio-group label:has(input:focus-visible):where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px;z-index:2}
tk-play .tk-row:where(:not(tk-screen *, tk-note *)){display:flex;gap:.8rem;align-items:center}
tk-play button:where(:not(tk-screen *, tk-note *)){flex:none;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--tk-accent);background:transparent;color:var(--tk-accent);
  cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;padding:0;transition:background .15s,color .15s}
tk-play button:hover:where(:not(tk-screen *, tk-note *)),tk-play button[aria-label="Pause animation"]:where(:not(tk-screen *, tk-note *)){background:var(--tk-accent);color:var(--tk-accent-ink)}
tk-play input[type="range"]:where(:not(tk-screen *, tk-note *)){flex:1}
tk-show[hidden]:where(:not(tk-screen *, tk-note *)){display:none!important}

/* ================= FEEDBACK =================
 * Reader replies look like part of the publication: an index card in paper,
 * a pinned cream note in graphite, a printed card with a tear-off tab in
 * riso, a hard ruled box in ink, an instrument panel in slate. */
.tk-feedback:where(:not(tk-screen *, tk-note *)){position:relative;border:1px solid var(--tk-border);border-radius:var(--tk-radius);background:var(--tk-card);
  padding:1.35rem 1.4rem 1.2rem;margin:1.8rem 0;box-shadow:var(--tk-shadow);border-top:3px solid var(--tk-accent)}
.tk-feedback h3:where(:not(tk-screen *, tk-note *)),.tk-feedback h4:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);margin:0 0 .85rem;font-size:1.18rem;line-height:1.25}
.tk-feedback>div>p:where(:not(tk-screen *, tk-note *)){margin:0 0 .8rem;color:var(--tk-muted);font-size:.95rem}
.tk-feedback label:where(:not(tk-screen *, tk-note *)){display:block;margin:.9rem 0 .35rem;font-weight:620;font-size:.88rem}
.tk-feedback>div>label:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
.tk-feedback textarea:where(:not(tk-screen *, tk-note *)){min-height:6.5rem;resize:vertical;line-height:1.55}
.tk-feedback .tk-scale:where(:not(tk-screen *, tk-note *)){display:flex;gap:0;flex-wrap:wrap}
.tk-feedback .tk-scale button:where(:not(tk-screen *, tk-note *)){flex:1 1 2.75rem;min-height:48px;min-width:44px;border:1px solid var(--tk-control,var(--tk-border));margin-left:-1px;background:var(--tk-field);
  color:var(--tk-fg);font:inherit;font-family:var(--tk-font-data);font-size:.95rem;cursor:pointer;padding:.4rem .6rem;transition:background .15s,color .15s,border-color .15s}
.tk-feedback .tk-scale button:first-child:where(:not(tk-screen *, tk-note *)){margin-left:0;border-radius:var(--tk-radius) 0 0 var(--tk-radius)}
.tk-feedback .tk-scale button:last-child:where(:not(tk-screen *, tk-note *)){border-radius:0 var(--tk-radius) var(--tk-radius) 0}
.tk-feedback .tk-scale button:hover:not(:disabled):where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
.tk-feedback .tk-scale button[aria-pressed="true"]:where(:not(tk-screen *, tk-note *)){background:var(--tk-accent);color:var(--tk-accent-ink);border-color:var(--tk-accent);position:relative;z-index:1}
.tk-feedback .tk-scale-ends:where(:not(tk-screen *, tk-note *)){display:flex;justify-content:space-between;font-family:var(--tk-font-mono);font-size:.68rem;color:var(--tk-muted);margin-top:.35rem}
/* Votes: options as cards. */
.tk-feedback .tk-scale.tk-options:where(:not(tk-screen *, tk-note *)){gap:.6rem}
.tk-feedback .tk-scale.tk-options button:where(:not(tk-screen *, tk-note *)){flex:1 1 9rem;margin:0;border-radius:var(--tk-radius);min-height:64px;text-align:left;padding:.75rem 1rem;
  font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.tk-feedback .tk-scale.tk-options button:where(:not(tk-screen *, tk-note *))::after{content:"";width:1.05rem;height:1.05rem;border-radius:50%;border:1.5px solid currentColor;opacity:.45;flex:none}
.tk-feedback .tk-scale.tk-options button[aria-pressed="true"]:where(:not(tk-screen *, tk-note *))::after{opacity:1;background:currentColor;box-shadow:inset 0 0 0 3px var(--tk-accent)}
.tk-feedback .tk-stars:where(:not(tk-screen *, tk-note *)){display:flex;gap:.1rem}
.tk-feedback .tk-stars button:where(:not(tk-screen *, tk-note *)){background:none;border:0;font-size:1.75rem;line-height:1;min-width:44px;min-height:44px;cursor:pointer;color:var(--tk-border);padding:0;transition:color .12s,transform .12s}
.tk-feedback .tk-stars button:hover:not(:disabled):where(:not(tk-screen *, tk-note *)){transform:scale(1.1)}
.tk-feedback .tk-stars button[aria-pressed="true"]:where(:not(tk-screen *, tk-note *)){color:var(--tk-accent-2)}
.tk-feedback .tk-actions:where(:not(tk-screen *, tk-note *)){margin-top:1.1rem;display:flex;gap:.9rem;align-items:center;flex-wrap:wrap}
.tk-feedback button.tk-submit:where(:not(tk-screen *, tk-note *)){min-height:44px;font:inherit;font-family:var(--tk-font-body);font-weight:650;font-size:.95rem;color:var(--tk-accent-ink);
  background:var(--tk-accent);border:1px solid var(--tk-accent);border-radius:var(--tk-radius);padding:.55rem 1.35rem;cursor:pointer;transition:filter .15s,transform .1s}
.tk-feedback button.tk-submit:hover:not(:disabled):where(:not(tk-screen *, tk-note *)){filter:brightness(1.08)}
.tk-feedback button.tk-submit:active:not(:disabled):where(:not(tk-screen *, tk-note *)){transform:translateY(1px)}
.tk-feedback button.tk-submit:disabled:where(:not(tk-screen *, tk-note *)){background:transparent;color:var(--tk-muted);border:1px dashed var(--tk-border);cursor:not-allowed}
.tk-feedback :is(textarea,input,select):disabled:where(:not(tk-screen *, tk-note *)){border-style:dashed;cursor:not-allowed;opacity:1;background-color:transparent}
.tk-feedback .tk-scale button:disabled:where(:not(tk-screen *, tk-note *)),.tk-feedback fieldset label:has(input:disabled):where(:not(tk-screen *, tk-note *)){cursor:not-allowed}
.tk-feedback>.tk-note:where(:not(tk-screen *, tk-note *)){margin:1rem 0 0;padding-top:.75rem;border-top:1px dashed var(--tk-border);font-family:var(--tk-font-mono);font-size:.72rem;letter-spacing:.01em;
  display:flex;align-items:baseline;gap:.5rem}
.tk-feedback>.tk-note:empty:where(:not(tk-screen *, tk-note *)){display:none}
.tk-feedback>.tk-note:where(:not(tk-screen *, tk-note *))::before{content:"";width:.5rem;height:.5rem;border-radius:50%;border:1.5px solid var(--tk-muted);flex:none;align-self:flex-start;margin-top:.35em}
/* 1.6.0: unsent answers kept on this device (tacksheet.js keepDraft), and Send another after a saved reply. */
.tk-feedback>.tk-draft:where(:not(tk-screen *, tk-note *)){display:flex;flex-wrap:wrap;align-items:center;gap:0 .45rem;margin:.75rem 0 0;color:var(--tk-muted);font-size:.9rem;line-height:1.4}
.tk-feedback>.tk-draft[hidden]:where(:not(tk-screen *, tk-note *)){display:none}
.tk-feedback :is(.tk-draft-reset,.tk-again):where(:not(tk-screen *, tk-note *)){display:inline-flex;align-items:center;min-height:44px;padding:0 .2rem;border:0;background:none;color:var(--tk-accent);
  font:inherit;font-weight:650;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;cursor:pointer}
.tk-feedback :is(.tk-draft-reset,.tk-again):hover:where(:not(tk-screen *, tk-note *)){text-decoration-thickness:2px}
.tk-feedback :is(.tk-draft-reset,.tk-again):focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px}
.tk-feedback [aria-invalid="true"]:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-negative);outline-offset:2px}
.tk-feedback .tk-error:where(:not(tk-screen *, tk-note *)){color:var(--tk-negative);font-weight:650;font-size:.9rem}
.tk-feedback .tk-ok:where(:not(tk-screen *, tk-note *)){color:var(--tk-positive);font-weight:650;font-size:.9rem}
.tk-feedback fieldset:where(:not(tk-screen *, tk-note *)){border:0;margin:0;padding:0;min-width:0}
.tk-feedback fieldset legend:where(:not(tk-screen *, tk-note *)){font-weight:620;font-size:.88rem;margin:0 0 .45rem;padding:0}
.tk-feedback fieldset+label:where(:not(tk-screen *, tk-note *)),.tk-feedback fieldset+fieldset:where(:not(tk-screen *, tk-note *)){margin-top:1rem}
.tk-feedback fieldset label:where(:not(tk-screen *, tk-note *)){font-weight:400;display:flex;gap:.75rem;align-items:center;min-height:46px;margin:0;padding:.5rem .8rem;font-size:.95rem;
  border:1px solid var(--tk-control,var(--tk-border));border-top-width:0;background:var(--tk-field);cursor:pointer;transition:background .15s}
.tk-feedback fieldset legend+label:where(:not(tk-screen *, tk-note *)),.tk-feedback fieldset>label:first-child:where(:not(tk-screen *, tk-note *)){border-top-width:1px;border-radius:var(--tk-radius) var(--tk-radius) 0 0}
.tk-feedback fieldset label:last-child:where(:not(tk-screen *, tk-note *)){border-radius:0 0 var(--tk-radius) var(--tk-radius)}
.tk-feedback fieldset label:hover:not(:has(input:disabled)):where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
.tk-feedback fieldset label:has(input:checked):where(:not(tk-screen *, tk-note *)){background:color-mix(in srgb,var(--tk-accent) 9%,var(--tk-field))}
.tk-feedback fieldset>label:only-of-type:where(:not(tk-screen *, tk-note *)){border-radius:var(--tk-radius);border-top-width:1px}
/* Custom radio and checkbox marks: never the default browser control. */
.tk-feedback input[type="radio"]:where(:not(tk-screen *, tk-note *)),.tk-feedback input[type="checkbox"]:where(:not(tk-screen *, tk-note *)){-webkit-appearance:none;appearance:none;flex:none;width:1.15rem;height:1.15rem;margin:0;
  border:1.5px solid var(--tk-muted);background:var(--tk-card);display:grid;place-content:center;cursor:inherit;transition:border-color .15s}
.tk-feedback input[type="radio"]:where(:not(tk-screen *, tk-note *)){border-radius:50%}
.tk-feedback input[type="checkbox"]:where(:not(tk-screen *, tk-note *)){border-radius:2px}
.tk-feedback input[type="radio"]:where(:not(tk-screen *, tk-note *))::before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:var(--tk-accent);transform:scale(0);transition:transform .15s}
.tk-feedback input[type="checkbox"]:where(:not(tk-screen *, tk-note *))::before{content:"";width:.62rem;height:.36rem;border-left:2px solid var(--tk-accent-ink);border-bottom:2px solid var(--tk-accent-ink);
  transform:translateY(-.08rem) rotate(-45deg) scale(0);transition:transform .15s}
.tk-feedback input[type="radio"]:checked:where(:not(tk-screen *, tk-note *)){border-color:var(--tk-accent)}
.tk-feedback input[type="radio"]:checked:where(:not(tk-screen *, tk-note *))::before{transform:scale(1)}
.tk-feedback input[type="checkbox"]:checked:where(:not(tk-screen *, tk-note *)){background:var(--tk-accent);border-color:var(--tk-accent)}
.tk-feedback input[type="checkbox"]:checked:where(:not(tk-screen *, tk-note *))::before{transform:translateY(-.08rem) rotate(-45deg) scale(1)}
.tk-feedback input:is([type="radio"],[type="checkbox"]):focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px}
.tk-feedback>div>label:has(>input[type="checkbox"]):where(:not(tk-screen *, tk-note *)){display:flex;gap:.75rem;align-items:center;font-weight:400;min-height:44px;cursor:pointer}
.tk-feedback .tk-stage:where(:not(tk-screen *, tk-note *)){position:relative;cursor:crosshair;border-radius:var(--tk-radius);overflow:hidden;margin-bottom:.4rem}
.tk-feedback .tk-stage img:where(:not(tk-screen *, tk-note *)){display:block;width:100%}

/* ================= 3D ================= */
tk-model:where(:not(tk-screen *, tk-note *)),tk-scene:where(:not(tk-screen *, tk-note *)){margin:2rem 0}
.tk-gl:where(:not(tk-screen *, tk-note *)){position:relative;border:1px solid var(--tk-border);border-radius:var(--tk-radius);overflow:hidden;background:var(--tk-3d-horizon);box-shadow:var(--tk-lift)}
.tk-gl>div:first-child:where(:not(tk-screen *, tk-note *)){position:relative}
.tk-gl canvas:where(:not(tk-screen *, tk-note *)){display:block;width:100%;height:auto;touch-action:none;outline:none}
.tk-gl .tk-caption:where(:not(tk-screen *, tk-note *)){position:absolute;left:1rem;top:.85rem;right:1rem;pointer-events:none;display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;z-index:2}
.tk-gl .tk-caption b:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1rem;letter-spacing:var(--tk-head-tracking,0);color:var(--tk-gl-ink,var(--tk-fg))}
.tk-gl .tk-caption span:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.68rem;letter-spacing:.02em;color:var(--tk-gl-ink,var(--tk-fg));opacity:.66;text-align:right}
.tk-gl .tk-labels:where(:not(tk-screen *, tk-note *)){position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.tk-gl .tk-spot:where(:not(tk-screen *, tk-note *)){position:absolute;left:0;top:0;pointer-events:auto;display:flex;align-items:center;gap:.5rem;transform:translate(-1.375rem,-1.375rem);
  background:none;border:0;padding:0;cursor:pointer;font:inherit;color:inherit;transition:opacity .25s}
.tk-gl .tk-spot[data-hidden]:where(:not(tk-screen *, tk-note *)){opacity:0;pointer-events:none}
.tk-gl .tk-spot i:where(:not(tk-screen *, tk-note *)){flex:none;width:2.75rem;height:2.75rem;display:grid;place-items:center;font-style:normal}
.tk-gl .tk-spot i:where(:not(tk-screen *, tk-note *))::before{content:attr(data-n);width:1.6rem;height:1.6rem;border-radius:50%;background:var(--tk-accent-2);color:#fff;
  font-family:var(--tk-font-mono);font-size:.7rem;font-weight:500;display:grid;place-items:center;box-shadow:0 0 0 2px rgba(255,255,255,.95),0 3px 10px rgba(0,0,0,.35)}
.tk-gl .tk-spot span:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.7rem;letter-spacing:.01em;white-space:nowrap;background:var(--tk-card);color:var(--tk-fg);
  border:1px solid var(--tk-border);border-radius:2px;padding:.28rem .5rem;box-shadow:0 4px 14px rgba(0,0,0,.18);margin-left:-.35rem}
.tk-gl .tk-spot[aria-current="true"] i:where(:not(tk-screen *, tk-note *))::before{background:var(--tk-accent);box-shadow:0 0 0 2px #fff,0 0 0 6px color-mix(in srgb,var(--tk-accent) 35%,transparent)}
.tk-gl .tk-poster:where(:not(tk-screen *, tk-note *)){position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-size:cover;background-position:center;z-index:3}
.tk-gl .tk-poster button:where(:not(tk-screen *, tk-note *)){min-height:44px;font:inherit;font-weight:650;border-radius:var(--tk-radius);border:0;background:var(--tk-accent);color:var(--tk-accent-ink);
  padding:.6rem 1.4rem;cursor:pointer;box-shadow:var(--tk-lift)}
.tk-gl .tk-bar:where(:not(tk-screen *, tk-note *)){display:flex;gap:0;align-items:stretch;background:var(--tk-card);border-top:1px solid var(--tk-border);flex-wrap:wrap;
  font-family:var(--tk-font-mono);font-size:.74rem;min-height:46px}
.tk-gl .tk-bar>*:where(:not(tk-screen *, tk-note *)){border-right:1px solid var(--tk-border)}
.tk-gl .tk-bar button:where(:not(tk-screen *, tk-note *)),.tk-gl .tk-bar select:where(:not(tk-screen *, tk-note *)){min-height:46px;min-width:46px;font:inherit;border:0;border-radius:0;background:none;color:var(--tk-fg);cursor:pointer;
  padding:0 .95rem;letter-spacing:.01em;transition:background .15s}
.tk-gl .tk-bar select:where(:not(tk-screen *, tk-note *)){-webkit-appearance:none;appearance:none;padding-right:2rem;
  background-image:linear-gradient(45deg,transparent 50%,var(--tk-muted) 50%),linear-gradient(135deg,var(--tk-muted) 50%,transparent 50%);
  background-position:calc(100% - 1.05rem) 52%,calc(100% - .75rem) 52%;background-size:.3rem .3rem;background-repeat:no-repeat}
.tk-gl .tk-bar button:hover:where(:not(tk-screen *, tk-note *)),.tk-gl .tk-bar select:hover:where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
.tk-gl .tk-bar button[aria-pressed="true"]:where(:not(tk-screen *, tk-note *)),.tk-gl .tk-bar button[aria-current="true"]:where(:not(tk-screen *, tk-note *)){color:var(--tk-accent);box-shadow:inset 0 -2px 0 var(--tk-accent-2)}
.tk-gl .tk-bar button:focus-visible:where(:not(tk-screen *, tk-note *)),.tk-gl .tk-bar select:focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:-2px}
.tk-gl .tk-bar input[type="range"]:where(:not(tk-screen *, tk-note *)){flex:1 1 9rem;min-width:7rem;padding:0 .95rem;border-right:1px solid var(--tk-border)}
.tk-gl .tk-bar .tk-status:where(:not(tk-screen *, tk-note *)){display:flex;align-items:center;padding:0 .95rem;color:var(--tk-muted);border-right:0;margin-left:auto}
.tk-gl .tk-bar .tk-status:empty:where(:not(tk-screen *, tk-note *)){display:none}
.tk-gl .tk-bar .tk-hotspots:where(:not(tk-screen *, tk-note *)){display:flex;flex-wrap:wrap;margin:0;padding:0;border-right:0}
.tk-gl .tk-bar .tk-hotspots button:where(:not(tk-screen *, tk-note *)){border-right:1px solid var(--tk-border)}
.tk-gl .tk-fallback:where(:not(tk-screen *, tk-note *)){padding:2.5rem 1.5rem;text-align:center;color:var(--tk-fg);background:var(--tk-card)}
.tk-gl .tk-fallback button:where(:not(tk-screen *, tk-note *)){margin-top:.6rem;min-height:44px;font:inherit;border:1px solid var(--tk-border);background:none;color:inherit;border-radius:var(--tk-radius);padding:.4rem 1rem;cursor:pointer}
.tk-gl .tk-stick:where(:not(tk-screen *, tk-note *)){position:absolute;right:1rem;bottom:1rem;width:6.5rem;height:6.5rem;border-radius:50%;z-index:2;
  background:radial-gradient(circle,rgba(255,255,255,.04),rgba(255,255,255,.12));border:1px solid rgba(255,255,255,.4);touch-action:none;box-shadow:0 6px 20px rgba(0,0,0,.25)}
.tk-gl .tk-nub:where(:not(tk-screen *, tk-note *)){position:absolute;left:50%;top:50%;width:2.6rem;height:2.6rem;margin:-1.3rem;border-radius:50%;background:rgba(255,255,255,.85);box-shadow:0 2px 8px rgba(0,0,0,.35)}
@media(hover:hover) and (pointer:fine){.tk-gl .tk-stick:where(:not(tk-screen *, tk-note *)){opacity:.0;pointer-events:none}}
@media(max-width:640px){.tk-gl .tk-caption span:where(:not(tk-screen *, tk-note *)){display:none}.tk-gl .tk-bar:where(:not(tk-screen *, tk-note *)){font-size:.7rem}.tk-gl .tk-bar button:where(:not(tk-screen *, tk-note *)){padding:0 .7rem}
  .tk-gl .tk-spot span:where(:not(tk-screen *, tk-note *)){display:none}}

/* @base:drop theme-flourishes */
/* ================= THEME FLOURISHES ================= */
/* Graphite: replies are cream notes pinned to the felt with a red tack,
 * written on ruled paper in pencil-hand. */
body[data-tk-theme="graphite"] .tk-feedback:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="auto"][data-tk-resolved="graphite"] .tk-feedback:where(:not(tk-screen *, tk-note *)){
  --tk-fg:#1a1917;--tk-muted:#5e5850;--tk-card:#ede6d8;--tk-field:transparent;--tk-border:#cbbfa8;--tk-accent:#b53a20;--tk-accent-ink:#ffffff;
  --tk-mark:rgba(181,58,32,.08);--tk-positive:#2e6b45;--tk-negative:#a12b36;--tk-font-head:"Newsreader",Georgia,serif;
  color:var(--tk-fg);background:linear-gradient(rgba(237,230,216,.55),rgba(237,230,216,.55)),url("textures/paper.webp") 0 0/520px,#ede6d8;
  background-blend-mode:normal,multiply;border:0;border-radius:1px;
  box-shadow:0 1px 1px rgba(0,0,0,.35),0 18px 30px -14px rgba(0,0,0,.75);padding-top:1.7rem;transform:rotate(-.25deg)}
body[data-tk-theme="graphite"] .tk-feedback:where(:not(tk-screen *, tk-note *))::before,body[data-tk-theme="auto"][data-tk-resolved="graphite"] .tk-feedback:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;top:-.55rem;left:50%;width:1.25rem;height:1.25rem;margin-left:-.62rem;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#ff9b7c 0 12%,#d2462a 34%,#8f2410 78%);box-shadow:0 3px 4px rgba(0,0,0,.45),1px 6px 8px rgba(0,0,0,.25)}
body[data-tk-theme="graphite"] .tk-feedback textarea:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="auto"][data-tk-resolved="graphite"] .tk-feedback textarea:where(:not(tk-screen *, tk-note *)){
  font-family:var(--tk-font-hand);font-size:1.1rem;line-height:2rem;padding:.1rem .2rem;border:0;border-radius:0;
  background:repeating-linear-gradient(transparent 0 calc(2rem - 1px),rgba(43,63,141,.22) calc(2rem - 1px) 2rem);background-position:0 .05rem;box-shadow:none}
body[data-tk-theme="graphite"] .tk-feedback textarea:focus:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="auto"][data-tk-resolved="graphite"] .tk-feedback textarea:focus:where(:not(tk-screen *, tk-note *)){box-shadow:inset 3px 0 0 var(--tk-accent)}
body[data-tk-theme="graphite"] tk-code pre:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="auto"][data-tk-resolved="graphite"] tk-code pre:where(:not(tk-screen *, tk-note *)){border:1px solid var(--tk-border)}
body[data-tk-theme="graphite"] tk-hero h1:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="auto"][data-tk-resolved="graphite"] tk-hero h1:where(:not(tk-screen *, tk-note *)){text-shadow:0 1px 0 rgba(0,0,0,.35)}

/* Riso (day and night): two-ink headings off register, a halftone bloom in
 * the corners, printed shadows, stamped callouts, kraft and cobalt rules and
 * a perforated tear-off reply tab. Colours come from the theme tokens, so the
 * night stock reuses every rule. */
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"])::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;
  background:radial-gradient(circle,rgba(230,75,53,.3) 1.1px,transparent 1.5px) 0 0/7px 7px,radial-gradient(circle,rgba(43,63,141,.22) 1px,transparent 1.4px) 3px 3px/7px 7px;
  -webkit-mask-image:radial-gradient(ellipse 58% 44% at 100% 0%,#000 0%,transparent 75%),radial-gradient(ellipse 46% 36% at 0% 100%,rgba(0,0,0,.8) 0%,transparent 72%);
  mask-image:radial-gradient(ellipse 58% 44% at 100% 0%,#000 0%,transparent 75%),radial-gradient(ellipse 46% 36% at 0% 100%,rgba(0,0,0,.8) 0%,transparent 72%)}
body:is([data-tk-theme="riso-night"],[data-tk-resolved="riso-night"])::before{
  background:radial-gradient(circle,rgba(255,107,79,.2) 1.1px,transparent 1.5px) 0 0/7px 7px,radial-gradient(circle,rgba(242,179,61,.13) 1px,transparent 1.4px) 3px 3px/7px 7px}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) :is(h1,h2):where(:not(tk-screen *, tk-note *)){color:var(--tk-head)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) h1:where(:not(tk-screen *, tk-note *)){text-shadow:.04em .028em 0 var(--tk-misreg)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) h2:where(:not(tk-screen *, tk-note *)){text-shadow:.03em .022em 0 color-mix(in srgb,var(--tk-misreg) 70%,transparent)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-hero:where(:not(tk-screen *, tk-note *)){border-bottom:4px solid var(--tk-accent-2)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-hero:where(:not(tk-screen *, tk-note *))::after{bottom:-10px;border-bottom:2px solid var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-hero .tk-byline:where(:not(tk-screen *, tk-note *))::before{height:3px;background:var(--tk-kraft)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-section>h2:where(:not(tk-screen *, tk-note *)){border-top:2px solid var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-stats:where(:not(tk-screen *, tk-note *)){border:0;gap:1rem}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) :is(tk-stat,tk-stats>tk-stat:first-child):where(:not(tk-screen *, tk-note *)){background:var(--tk-card);border:1.5px solid var(--tk-rule);border-top:5px solid var(--tk-accent-2);padding:1rem 1.1rem;box-shadow:var(--tk-shadow)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-stat .tk-value:where(:not(tk-screen *, tk-note *)){color:var(--tk-head)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-callout:where(:not(tk-screen *, tk-note *)){border-left-width:6px}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-callout strong.tk-label:where(:not(tk-screen *, tk-note *)){transform:rotate(-4deg);border-width:2px;font-weight:500}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) :is(tk-card,.tk-gl,tk-slides,tk-scrolly .tk-visual):where(:not(tk-screen *, tk-note *)){border:1.5px solid var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-code pre:where(:not(tk-screen *, tk-note *)){border:1.5px dashed var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback:where(:not(tk-screen *, tk-note *)){border:1.5px solid var(--tk-rule);border-top:1.5px solid var(--tk-rule);padding-bottom:0;overflow:hidden}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback .tk-actions:where(:not(tk-screen *, tk-note *)){margin:1.2rem -1.4rem 0;padding:0;border-top:2px dashed var(--tk-rule);position:relative;gap:0}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback .tk-actions:where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;left:-7px;top:-8px;width:14px;height:14px;border-radius:50%;background:var(--tk-bg);border:1.5px solid var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback button.tk-submit:where(:not(tk-screen *, tk-note *)){border-radius:0;border:0;border-right:2px dashed var(--tk-rule);min-height:52px;padding:.6rem 1.6rem;
  font-family:"Archivo Black","Archivo",sans-serif;font-weight:400;letter-spacing:.01em}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback button.tk-submit:disabled:where(:not(tk-screen *, tk-note *)){border:0;border-right:2px dashed var(--tk-border);background:var(--tk-bg-soft);color:var(--tk-muted)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback .tk-actions .tk-note:where(:not(tk-screen *, tk-note *)){padding:0 1rem}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback>.tk-note:where(:not(tk-screen *, tk-note *)){margin:0 -1.4rem;padding:.7rem 1.4rem;border-top:1.5px solid var(--tk-rule);background:var(--tk-bg-soft)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-tabs [role="tab"][aria-selected="true"]:where(:not(tk-screen *, tk-note *)){color:var(--tk-head)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-gallery img:where(:not(tk-screen *, tk-note *)){border:1.5px solid var(--tk-rule)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) :focus-visible:where(:not(tk-screen *, tk-note *)){outline:3px solid var(--tk-accent);outline-offset:3px;box-shadow:0 0 0 5px color-mix(in srgb,var(--tk-accent-2) 55%,transparent)}
/* 1.1.2 reading panel: the column sits on translucent stock, so type reads clearly
 * while the speck, grain and bloom stay visible around and faintly through it.
 * Padding grows inside the same text measure; phones run the panel edge to edge. */
:where(body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"])) tk-page:where(:not(tk-screen *, tk-note *)){max-width:calc(var(--tk-page-width,min(max(43rem,76vw),110rem)) + 2.5rem);margin:1.75rem auto 2.5rem;padding:2rem 2.6rem 5rem;background:var(--tk-panel,transparent);border:1px solid var(--tk-panel-edge,transparent);box-shadow:var(--tk-panel-shadow,none)}
:where(body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"])) tk-page[wide]:where(:not(tk-screen *, tk-note *)){max-width:calc(var(--tk-page-wide,min(max(76rem,94vw),140rem)) + 2.5rem)}
@media(max-width:640px){:where(body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"])) tk-page:where(:not(tk-screen *, tk-note *)){margin:0 auto;padding:1.1rem 1.15rem 4rem;border-left:0;border-right:0}}

/* Ink: Swiss rules — heavy black bars, flush-left, no shadows, big numerals. */
body[data-tk-theme="ink"] tk-hero:where(:not(tk-screen *, tk-note *)){border-bottom:6px solid var(--tk-rule)}
body[data-tk-theme="ink"] tk-hero:where(:not(tk-screen *, tk-note *))::after,body[data-tk-theme="ink"] tk-hero .tk-byline:where(:not(tk-screen *, tk-note *))::before{display:none}
body[data-tk-theme="ink"] tk-section>h2:where(:not(tk-screen *, tk-note *)){border-top:4px solid var(--tk-rule);padding-top:.85rem}
body[data-tk-theme="ink"] tk-section>h2:where(:not(tk-screen *, tk-note *))::before{color:var(--tk-fg);font-weight:500}
body[data-tk-theme="ink"] tk-stats:where(:not(tk-screen *, tk-note *)){border-top:4px solid var(--tk-rule);border-bottom:2px solid var(--tk-rule)}
body[data-tk-theme="ink"] tk-stats>tk-stat+tk-stat:where(:not(tk-screen *, tk-note *)){border-left:2px solid var(--tk-rule)}
@media(max-width:640px){body[data-tk-theme="ink"] tk-stats>tk-stat:nth-child(odd):where(:not(tk-screen *, tk-note *)){border-left:0;padding-left:0}
  body[data-tk-theme="ink"] tk-stats>tk-stat:nth-child(n+3):where(:not(tk-screen *, tk-note *)){border-top:2px solid var(--tk-rule)}}
body[data-tk-theme="ink"] tk-stat .tk-value:where(:not(tk-screen *, tk-note *)){font-size:clamp(2rem,1.6rem + 1.5vw,2.9rem);font-weight:800}
body[data-tk-theme="ink"] tk-card:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="ink"] tk-scrolly .tk-step:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="ink"] tk-slides:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="ink"] tk-scrolly .tk-visual:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule)}
body[data-tk-theme="ink"] tk-callout:where(:not(tk-screen *, tk-note *)){background:transparent;border:2px solid var(--tk-rule);border-left:10px solid var(--k);box-shadow:none}
body[data-tk-theme="ink"] .tk-feedback:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);border-top:10px solid var(--tk-rule);box-shadow:none}
body[data-tk-theme="ink"] .tk-feedback button.tk-submit:where(:not(tk-screen *, tk-note *)){background:var(--tk-fg);border-color:var(--tk-fg);color:#fff;text-transform:none;font-family:var(--tk-font-head);font-weight:700}
body[data-tk-theme="ink"] .tk-feedback button.tk-submit:disabled:where(:not(tk-screen *, tk-note *)){background:transparent;color:var(--tk-muted);border:2px dashed var(--tk-muted)}
body[data-tk-theme="ink"] :is(tk-select select,tk-search input,tk-number input,tk-date input,.tk-feedback :is(textarea,input[type="text"],input[type="number"],select)):where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule)}
body[data-tk-theme="ink"] .tk-feedback fieldset label:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);border-top-width:0}
body[data-tk-theme="ink"] .tk-feedback fieldset legend+label:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="ink"] .tk-feedback fieldset>label:first-child:where(:not(tk-screen *, tk-note *)){border-top-width:2px}
body[data-tk-theme="ink"] .tk-feedback .tk-scale button:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);margin-left:-2px}
body[data-tk-theme="ink"] tk-table thead th:where(:not(tk-screen *, tk-note *)){border-bottom:3px solid var(--tk-rule);color:var(--tk-fg)}
body[data-tk-theme="ink"] .tk-gl:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);box-shadow:none}
body[data-tk-theme="ink"] tk-tabs [role="tablist"]:where(:not(tk-screen *, tk-note *)){border-bottom:2px solid var(--tk-rule)}
body[data-tk-theme="ink"] tk-tabs [role="tab"][aria-selected="true"]:where(:not(tk-screen *, tk-note *)){border-bottom:5px solid var(--tk-fg);margin-bottom:-2px}

/* Slate: an instrument panel — mono heads, steel rules, hairline frames. */
body[data-tk-theme="slate"] tk-hero:where(:not(tk-screen *, tk-note *)){border-bottom:1px solid var(--tk-border)}
body[data-tk-theme="slate"] tk-hero:where(:not(tk-screen *, tk-note *))::after{border-bottom:0;bottom:-1px;left:0;right:auto;width:5rem;border-top:2px solid var(--tk-accent);top:auto}
body[data-tk-theme="slate"] tk-hero .tk-byline:where(:not(tk-screen *, tk-note *))::before{background:var(--tk-accent)}
body[data-tk-theme="slate"] tk-section>h2:where(:not(tk-screen *, tk-note *))::before{color:var(--tk-accent)}
body[data-tk-theme="slate"] tk-stats:where(:not(tk-screen *, tk-note *)){border:0;gap:.75rem}
body[data-tk-theme="slate"] tk-stat:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="slate"] tk-stats>tk-stat:first-child:where(:not(tk-screen *, tk-note *)){background:var(--tk-card);border:1px solid var(--tk-border);border-radius:var(--tk-radius);padding:.95rem 1rem}
body[data-tk-theme="slate"] tk-stat .tk-value:where(:not(tk-screen *, tk-note *)){font-weight:500;font-size:clamp(1.7rem,1.4rem + 1.1vw,2.2rem);letter-spacing:-.04em}
body[data-tk-theme="slate"] .tk-feedback:where(:not(tk-screen *, tk-note *)){border-top:1px solid var(--tk-border);padding-top:0}
body[data-tk-theme="slate"] .tk-feedback>h3:first-child:where(:not(tk-screen *, tk-note *)){margin:0 -1.4rem 1rem;padding:.75rem 1.4rem;border-bottom:1px solid var(--tk-border);font-size:.92rem;
  background:var(--tk-bg-soft);border-radius:var(--tk-radius) var(--tk-radius) 0 0}
body[data-tk-theme="slate"] tk-toc:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="slate"] tk-stats:where(:not(tk-screen *, tk-note *)){border-top-color:var(--tk-border)}
body[data-tk-theme="slate"] tk-toc:where(:not(tk-screen *, tk-note *)){border-top:2px solid var(--tk-accent)}
@media(max-width:640px){body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-stats:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="slate"] tk-stats:where(:not(tk-screen *, tk-note *)){gap:.6rem}
  body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-stat:where(:not(tk-screen *, tk-note *)),body[data-tk-theme="slate"] tk-stat:where(:not(tk-screen *, tk-note *)){border-top-width:inherit}}
/* @base:end theme-flourishes */

/* ================= RISO FLAIR (1.1.0) =================
 * Paper, tape and ink pieces that make a sheet feel printed and pinned:
 * tk-tape-title, tk-taped, tk-slip, tk-stamp, tk-mark, tk-torn, tk-duotone,
 * tk-overprint. They read the named inks (--tk-ink-*), the film blend
 * (--tk-film: multiply on light stock, screen on dark) and the cream of
 * paper objects (--tk-paper-obj), so every theme can carry them.
 *
 * Tape: one film layer per strip (a ::before), never the element holding the
 * text, so the film blends into the page while the ink stays solid. The tape
 * palette and pattern inks below match KIT_TAPES in kit-catalog.ts and the
 * TAPES table in tacksheet.js, which checks title contrast against them. */
tk-tape-title:where(:not(tk-screen *, tk-note *)),tk-taped:where(:not(tk-screen *, tk-note *)),tk-slip:where(:not(tk-screen *, tk-note *)),tk-torn:where(:not(tk-screen *, tk-note *)),tk-duotone:where(:not(tk-screen *, tk-note *)){display:block;box-sizing:border-box;max-width:100%}
tk-stamp:where(:not(tk-screen *, tk-note *)),tk-overprint:where(:not(tk-screen *, tk-note *)){display:inline-block;box-sizing:border-box;max-width:100%}
tk-mark:where(:not(tk-screen *, tk-note *)){display:inline}
:is(tk-tape-title,tk-taped,tk-slip):where(:not(tk-screen *, tk-note *)){--tape:#c9b48f;--tape-a:.92;--tape-blend:var(--tk-film,multiply);--tape-pat:rgba(92,70,38,.14);--tape-pattern:none;
  --tk-tape-l:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 100' preserveAspectRatio='none'%3E%3Cpath d='M12 0H4L6 3 2 6 5 9 1 13 4 16 0 20 3 24 1 28 5 31 2 35 4 39 0 43 3 47 1 51 4 55 2 58 5 62 1 66 3 70 0 74 4 78 2 82 5 85 1 89 3 93 2 97 4 100H12Z'/%3E%3C/svg%3E");
  --tk-tape-r:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 100' preserveAspectRatio='none'%3E%3Cpath d='M0 0H8L6 3 10 6 7 9 11 13 8 16 12 20 9 24 11 28 7 31 10 35 8 39 12 43 9 47 11 51 8 55 10 58 7 62 11 66 9 70 12 74 8 78 10 82 7 85 11 89 9 93 10 97 8 100H0Z'/%3E%3C/svg%3E");
  --tk-washi:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='80'%3E%3Cfilter id='f' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.011 .42' numOctaves='2' seed='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -1.7 1.06'/%3E%3C/filter%3E%3Cfilter id='g' x='0' y='0' width='100%25' height='100%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.02 .7' numOctaves='2' seed='9' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .2 0 0 0 0 .16 0 0 0 0 .1 0 0 0 1.8 -1.02'/%3E%3C/filter%3E%3Crect width='240' height='80' filter='url(%23f)' opacity='.16'/%3E%3Crect width='240' height='80' filter='url(%23g)' opacity='.14'/%3E%3C/svg%3E")}
:is(tk-tape-title,tk-taped,tk-slip)[tape="frost"]:where(:not(tk-screen *, tk-note *)){--tape:#f6f3ec;--tape-a:.72;--tape-blend:normal;--tape-pat:rgba(43,63,141,.12)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="vermilion"]:where(:not(tk-screen *, tk-note *)){--tape:#e64b35;--tape-a:.86;--tape-pat:rgba(255,246,232,.16)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="cobalt"]:where(:not(tk-screen *, tk-note *)){--tape:#2b3f8d;--tape-a:.9;--tape-pat:rgba(255,246,232,.13)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="plum"]:where(:not(tk-screen *, tk-note *)){--tape:#6b2f5e;--tape-a:.9;--tape-pat:rgba(255,246,232,.13)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="sunflower"]:where(:not(tk-screen *, tk-note *)){--tape:#f2b33d;--tape-a:.86;--tape-pat:rgba(140,70,10,.14)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="cornflower"]:where(:not(tk-screen *, tk-note *)){--tape:#9db0f0;--tape-a:.86;--tape-pat:rgba(22,32,90,.13)}
:is(tk-tape-title,tk-taped,tk-slip)[tape="blush"]:where(:not(tk-screen *, tk-note *)){--tape:#f2a7a0;--tape-a:.84;--tape-pat:rgba(140,40,40,.12)}
:is(tk-tape-title,tk-taped,tk-slip)[pattern="grid"]:where(:not(tk-screen *, tk-note *)){--tape-pattern:linear-gradient(var(--tape-pat) 1px,transparent 1px) 0 0/8px 8px,linear-gradient(90deg,var(--tape-pat) 1px,transparent 1px) 0 0/8px 8px}
:is(tk-tape-title,tk-taped,tk-slip)[pattern="dots"]:where(:not(tk-screen *, tk-note *)){--tape-pattern:radial-gradient(circle,var(--tape-pat) 1.5px,transparent 1.9px) 0 0/9px 9px}
:is(tk-tape-title,tk-taped,tk-slip)[pattern="stripes"]:where(:not(tk-screen *, tk-note *)){--tape-pattern:repeating-linear-gradient(-45deg,var(--tape-pat) 0 3px,transparent 3px 10px)}
:is(tk-tape-title,tk-taped,tk-slip)[pattern="kraft"]:where(:not(tk-screen *, tk-note *)){--tape-pattern:radial-gradient(circle at 30% 40%,var(--tape-pat) .6px,transparent 1px) 0 0/5px 7px,radial-gradient(circle at 70% 70%,var(--tape-pat) .5px,transparent .9px) 2px 3px/6px 5px}
/* The film: torn ends (SVG masks), washi fibre, the faint pattern, a little sheen. */
:where(tk-tape-title>:is(h1,h2,h3):not([data-tk-lines]),tk-tape-title .tk-tape-line,tk-taped,tk-slip):where(:not(tk-screen *, tk-note *))::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(176deg,rgba(255,255,255,.07),transparent 45%,rgba(0,0,0,.03)),var(--tape-pattern),var(--tk-washi) 0 0/240px 80px,var(--tape);
  opacity:var(--tape-a);mix-blend-mode:var(--tape-blend);transform:rotate(var(--tilt,-1.2deg));
  -webkit-mask:var(--tk-tape-l) left/12px 100% no-repeat,var(--tk-tape-r) right/12px 100% no-repeat,linear-gradient(#000,#000) center/calc(100% - 22px) 100% no-repeat;
  mask:var(--tk-tape-l) left/12px 100% no-repeat,var(--tk-tape-r) right/12px 100% no-repeat,linear-gradient(#000,#000) center/calc(100% - 22px) 100% no-repeat;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}

/* tk-tape-title: a real heading on tape. Each line is its own strip once the
 * kit has measured the lines; before that the heading is one patch. */
tk-tape-title:where(:not(tk-screen *, tk-note *)){margin:0 0 .5em;--tilt:-1.2deg}
tk-tape-title[data-tk-dense]:where(:not(tk-screen *, tk-note *)){--tape-a:1;--tape-pattern:none;--tk-washi:none;--tape-blend:normal}
tk-tape-title[data-tk-dense="deep"][tape="vermilion"]:where(:not(tk-screen *, tk-note *)){--tape:#b8321f}
tk-tape-title>:is(h1,h2,h3):where(:not(tk-screen *, tk-note *)){position:relative;display:table;max-width:100%;margin:0;padding:.18em .5em .2em;color:var(--tape-ink,var(--tk-ink-cobalt,#2b3f8d))!important;
  text-shadow:none!important;overflow-wrap:anywhere}
tk-tape-title>:is(h1,h2,h3):not([data-tk-lines])>*:where(:not(tk-screen *, tk-note *)){position:relative}
tk-tape-title>:is(h1,h2,h3)[data-tk-lines]:where(:not(tk-screen *, tk-note *)){display:block;padding:0}
tk-tape-title .tk-tape-line:where(:not(tk-screen *, tk-note *)){position:relative;display:table;max-width:calc(100% - var(--dx,0) * 1em);padding:.16em .5em .19em;margin:0 0 .1em calc(var(--dx,0) * 1em)}
tk-tape-title .tk-tape-line:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
/* While the kit measures where the lines break: the widest a line can be. */
tk-tape-title>.tk-tape-measure:where(:not(tk-screen *, tk-note *)){display:block!important;padding:0 .5em 0 1em!important}
tk-tape-title>.tk-tape-measure:where(:not(tk-screen *, tk-note *))::before{content:none!important}
tk-tape-title .tk-tape-ink:where(:not(tk-screen *, tk-note *)){position:relative;display:block;transform:rotate(var(--tilt,-1.2deg))}
tk-tape-title[hand]>:is(h1,h2,h3):where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-hand);font-weight:400;letter-spacing:0;line-height:1.08}
tk-hero tk-tape-title:where(:not(tk-screen *, tk-note *)){margin-bottom:.6em}
/* Strips of tape carry less type per line than bare print: a slightly smaller, wider hero title. */
tk-hero tk-tape-title>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .88);max-width:28ch}
tk-page[wide] tk-hero tk-tape-title>h1:where(:not(tk-screen *, tk-note *)){max-width:32ch}
/* 1.5.0: long titles print smaller (data-tk-length from tacksheet.js: medium over 34 characters, long over 60). */
tk-hero tk-tape-title[data-tk-length="medium"]>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .72)}
tk-hero tk-tape-title[data-tk-length="long"]>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .6)}
@media(max-width:640px){tk-hero tk-tape-title>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .8)}
  tk-hero tk-tape-title[data-tk-length="medium"]>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .62)}
  tk-hero tk-tape-title[data-tk-length="long"]>h1:where(:not(tk-screen *, tk-note *)){font-size:calc(var(--tk-size-h1) * .52)}}
tk-section>tk-tape-title:where(:not(tk-screen *, tk-note *)){margin:0 0 1.1rem;counter-increment:tk-sec}
tk-section>tk-tape-title>h2:where(:not(tk-screen *, tk-note *)){font-size:var(--tk-size-h2)}

/* tk-taped: a print (or any block) held by strips of tape. The print turns,
 * not the host, so the strips blend into the page and over the print alike. */
tk-taped:where(:not(tk-screen *, tk-note *)){position:relative;width:fit-content;max-width:calc(100% - .8rem);margin:2.4rem auto 2rem;padding:.35rem 0 0;--tilt:-3deg}
tk-taped:is([at="corners"],[at="diagonal"]):where(:not(tk-screen *, tk-note *)){max-width:calc(100% - 2.4rem)}
tk-taped>.tk-print:where(:not(tk-screen *, tk-note *)){position:relative;transform:rotate(var(--print-tilt,1deg));background:var(--tk-paper-obj,#f4eee0);padding:.55rem .55rem .6rem;
  box-shadow:0 1px 1px rgba(0,0,0,.2),0 12px 22px -14px rgba(0,0,0,.55);-webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-taped>.tk-print:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;inset:0;pointer-events:none;background:url("textures/fibre.svg") 0 0/256px 256px;mix-blend-mode:multiply;opacity:.7}
tk-taped[frame="none"]>.tk-print:where(:not(tk-screen *, tk-note *)){background:none;padding:0;box-shadow:none}
tk-taped[frame="none"]>.tk-print:where(:not(tk-screen *, tk-note *))::after{content:none}
tk-taped>.tk-print>:first-child:where(:not(tk-screen *, tk-note *)){margin-top:0}
tk-taped>.tk-print>:last-child:where(:not(tk-screen *, tk-note *)){margin-bottom:0}
tk-taped img:where(:not(tk-screen *, tk-note *)){display:block;max-width:100%;height:auto}
tk-taped figure:where(:not(tk-screen *, tk-note *)){margin:0}
tk-taped figcaption:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-hand);font-size:1.12rem;line-height:1.3;color:#2b3f8d;padding:.55rem .25rem .05rem;max-width:32rem}
tk-taped:where(:not(tk-screen *, tk-note *))::before{inset:auto;left:50%;top:-.3rem;width:min(8rem,46%);height:1.8rem;margin-left:max(-4rem,-23%);z-index:1}
tk-taped[at="corners"]:where(:not(tk-screen *, tk-note *))::before,tk-taped[at="diagonal"]:where(:not(tk-screen *, tk-note *))::before{left:-1.3rem;top:.5rem;margin:0;width:5.4rem;--tilt:-36deg}
tk-taped:where(:not(tk-screen *, tk-note *))::after{content:none}
tk-taped:is([at="corners"],[at="diagonal"]):where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;z-index:1;pointer-events:none;width:5.4rem;height:1.8rem;
  background:linear-gradient(176deg,rgba(255,255,255,.07),transparent 45%,rgba(0,0,0,.03)),var(--tape-pattern),var(--tk-washi) 0 0/240px 80px,var(--tape);
  opacity:var(--tape-a);mix-blend-mode:var(--tape-blend);
  -webkit-mask:var(--tk-tape-l) left/12px 100% no-repeat,var(--tk-tape-r) right/12px 100% no-repeat,linear-gradient(#000,#000) center/calc(100% - 22px) 100% no-repeat;
  mask:var(--tk-tape-l) left/12px 100% no-repeat,var(--tk-tape-r) right/12px 100% no-repeat,linear-gradient(#000,#000) center/calc(100% - 22px) 100% no-repeat;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-taped[at="corners"]:where(:not(tk-screen *, tk-note *))::after{right:-1.3rem;top:.5rem;transform:rotate(36deg)}
tk-taped[at="diagonal"]:where(:not(tk-screen *, tk-note *))::after{right:-1.3rem;bottom:.6rem;transform:rotate(-36deg)}
tk-grid>tk-taped:where(:not(tk-screen *, tk-note *)),tk-split>*>tk-taped:where(:not(tk-screen *, tk-note *)){margin-top:1.4rem}

/* tk-slip: a torn, ruled slip of cream paper with a ballpoint note. */
tk-slip:where(:not(tk-screen *, tk-note *)){position:relative;margin:2rem 0 1.6rem;max-width:23rem;padding-top:.6rem;--tilt:-2deg}
tk-slip>.tk-slip-shadow:where(:not(tk-screen *, tk-note *)){filter:drop-shadow(0 1px 1px rgba(0,0,0,.22)) drop-shadow(0 8px 10px rgba(0,0,0,.16))}
tk-slip .tk-paper:where(:not(tk-screen *, tk-note *)){position:relative;transform:rotate(var(--slip-tilt,-1.2deg));padding:1.5rem 1.25rem 1rem 2.7rem;color:#26346f;
  font-family:var(--tk-font-hand);font-size:1.12rem;line-height:1.75rem;
  background:repeating-linear-gradient(transparent 0 calc(1.75rem - 1px),rgba(43,63,141,.2) calc(1.75rem - 1px) 1.75rem) 0 1.45rem/100% calc(100% - 1.45rem) no-repeat,
    linear-gradient(90deg,transparent 2.1rem,rgba(230,75,53,.28) 2.1rem calc(2.1rem + 1px),transparent calc(2.1rem + 1px)),url("textures/fibre.svg") 0 0/256px 256px,#f1e8d4;
  -webkit-mask:url("textures/torn-top.png") 0 0/240px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 11px) no-repeat;
  mask:url("textures/torn-top.png") 0 0/240px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 11px) no-repeat;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-slip .tk-paper>*:where(:not(tk-screen *, tk-note *)){margin:0}
tk-slip .tk-paper :is(p,li):where(:not(tk-screen *, tk-note *)){color:#26346f}
tk-slip .tk-paper strong:where(:not(tk-screen *, tk-note *)){font-weight:400;color:#a62d1c}
tk-slip .tk-paper a:where(:not(tk-screen *, tk-note *)){color:#2b3f8d}
tk-slip .tk-from:where(:not(tk-screen *, tk-note *)){display:block;text-align:right;color:#5a554c;font-size:1rem}
tk-slip:where(:not(tk-screen *, tk-note *))::before{inset:auto;left:50%;top:-.15rem;width:min(6.5rem,40%);height:1.6rem;margin-left:max(-3.25rem,-20%);z-index:1;--tilt:3deg}
tk-slip[tape="none"]:where(:not(tk-screen *, tk-note *))::before{content:none}
@media(min-width:900px){
  /* Boxes beside a floated slip make room for it instead of running under it. */
  tk-section:has(>tk-slip[float]) :is(tk-callout,tk-card,tk-table,tk-chart,tk-code,tk-details,tk-figure,tk-image,.tk-feedback):where(:not(tk-screen *, tk-note *)){display:flow-root}
  tk-slip[float="right"]:where(:not(tk-screen *, tk-note *)){float:right;clear:right;width:min(19rem,42%);margin:.4rem 0 1.2rem 1.8rem}
  tk-slip[float="left"]:where(:not(tk-screen *, tk-note *)){float:left;clear:left;width:min(19rem,42%);margin:.4rem 1.8rem 1.2rem 0}}

/* tk-stamp: one ink, worn by the pad (wear + riso grain masks), struck at an angle. */
tk-stamp:where(:not(tk-screen *, tk-note *)){--stamp:var(--tk-stamp-cobalt,#2b3f8d);vertical-align:middle;margin:.35rem .5rem .35rem 0;line-height:1}
tk-stamp[ink="vermilion"]:where(:not(tk-screen *, tk-note *)),tk-stamp[data-kind="rejected"]:not([ink]):where(:not(tk-screen *, tk-note *)),tk-stamp[data-kind="shared"]:not([ink]):where(:not(tk-screen *, tk-note *)){--stamp:var(--tk-stamp-vermilion,#b8321f)}
tk-stamp[ink="plum"]:where(:not(tk-screen *, tk-note *)),tk-stamp[data-kind="draft"]:not([ink]):where(:not(tk-screen *, tk-note *)){--stamp:var(--tk-stamp-plum,#6b2f5e)}
tk-stamp .tk-stamp-face:where(:not(tk-screen *, tk-note *)){display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.28em;color:var(--stamp);
  padding:.36em .62em .32em;border:.14em solid currentColor;border-radius:.16em;transform:rotate(var(--tilt,-6deg));
  font-family:"Archivo Black","Archivo",system-ui,sans-serif;font-weight:400;font-size:1.5rem;letter-spacing:.07em;text-transform:uppercase;white-space:normal;
  max-width:100%;overflow-wrap:anywhere;text-align:center;
  mix-blend-mode:var(--tk-film,multiply);opacity:.92;
  -webkit-mask:url("textures/stamp-wear.png") 0 0/128px 128px;mask:url("textures/stamp-wear.png") 0 0/128px 128px;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-stamp .tk-stamp-date:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-weight:500;font-size:.42em;letter-spacing:.14em}
tk-stamp[shape="double"] .tk-stamp-face:where(:not(tk-screen *, tk-note *)){outline:.07em solid currentColor;outline-offset:-.3em;padding:.5em .8em .45em}
tk-stamp[shape="round"] .tk-stamp-face:where(:not(tk-screen *, tk-note *)){border-radius:50%;aspect-ratio:1;min-width:6.4em;padding:.6em;font-size:1rem;border-width:.2em;
  outline:.08em solid currentColor;outline-offset:-.42em;white-space:normal;text-align:center}
tk-stamp .tk-stamp-face:where(:not(tk-screen *, tk-note *)){animation:tk-thunk .34s cubic-bezier(.2,.9,.3,1.2) .2s both}
@keyframes tk-thunk{from{opacity:0;transform:rotate(var(--tilt,-6deg)) scale(1.5)}60%{opacity:.95}to{opacity:.92;transform:rotate(var(--tilt,-6deg)) scale(1)}}
/* 1.5.0: a long stamp (data-tk-long, over 18 characters) is struck in place: grown by half on the way down it would
 * widen a phone's page for a moment. */
@keyframes tk-thunk-flat{from{opacity:0}60%{opacity:.95}to{opacity:.92}}
tk-stamp[data-tk-long] .tk-stamp-face:where(:not(tk-screen *, tk-note *)){animation-name:tk-thunk-flat}

/* tk-mark: highlighter, underline or ring in a riso ink; the words keep their colour. */
tk-mark:where(:not(tk-screen *, tk-note *)){--mk:var(--tk-mark-sunflower,rgba(242,179,61,.58));--mk-line:var(--tk-ink-vermilion,#e64b35);color:var(--tk-mark-fg,currentColor)}
tk-mark[ink="vermilion"]:where(:not(tk-screen *, tk-note *)){--mk:var(--tk-mark-vermilion,rgba(230,75,53,.3));--mk-line:var(--tk-ink-vermilion,#e64b35)}
tk-mark[ink="cobalt"]:where(:not(tk-screen *, tk-note *)){--mk:var(--tk-mark-cobalt,rgba(43,63,141,.18));--mk-line:var(--tk-ink-cobalt,#2b3f8d)}
tk-mark[ink="plum"]:where(:not(tk-screen *, tk-note *)){--mk:var(--tk-mark-plum,rgba(107,47,94,.2));--mk-line:var(--tk-ink-plum,#6b2f5e)}
tk-mark[ink="cornflower"]:where(:not(tk-screen *, tk-note *)){--mk:var(--tk-mark-cornflower,rgba(157,176,240,.55));--mk-line:var(--tk-ink-cornflower,#9db0f0)}
tk-mark[ink="sunflower"]:where(:not(tk-screen *, tk-note *)){--mk-line:var(--tk-ink-sunflower,#f2b33d)}
tk-mark:is(:not([kind]),[kind="highlight"]):where(:not(tk-screen *, tk-note *)){background:linear-gradient(100deg,transparent .1em,var(--mk) .2em calc(100% - .25em),transparent calc(100% - .1em)) 0 52%/100% 78% no-repeat;
  padding:0 .22em;margin:0 -.08em;border-radius:.4em .2em .45em .25em;-webkit-box-decoration-break:clone;box-decoration-break:clone;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-mark[kind="underline"]:where(:not(tk-screen *, tk-note *)){color:inherit;text-decoration-line:underline;text-decoration-style:wavy;text-decoration-color:var(--mk-line);
  text-decoration-thickness:.085em;text-underline-offset:.24em;text-decoration-skip-ink:none}
tk-mark[kind="circle"]:where(:not(tk-screen *, tk-note *)){color:inherit;position:relative;display:inline-block;padding:0 .12em;isolation:isolate}
tk-mark[kind="circle"]:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;inset:-.28em -.38em -.22em -.34em;border:.11em solid var(--mk-line);
  border-radius:52% 48% 55% 45% / 60% 46% 54% 40%;transform:rotate(-2.5deg);pointer-events:none;opacity:.9;
  -webkit-mask:url("textures/grain.webp") 0 0/200px 200px;mask:url("textures/grain.webp") 0 0/200px 200px}

/* tk-torn: a torn strip of paper between parts of a sheet. */
tk-torn:where(:not(tk-screen *, tk-note *)){--torn:var(--tk-kraft,#c9b48f);--torn-ink:#1e1e1e;position:relative;margin:3rem -.4rem;min-height:1.7rem;padding:.75rem 1.2rem .7rem;
  background:url("textures/fibre.svg") 0 0/256px 256px,var(--torn);background-blend-mode:multiply,normal;color:var(--torn-ink);transform:rotate(-.35deg);
  font-family:var(--tk-font-head);font-weight:var(--tk-head-weight,700);font-size:1.05rem;line-height:1.3;letter-spacing:var(--tk-head-tracking,0);text-align:center;
  -webkit-mask:url("textures/torn-top.png") 0 0/240px 12px repeat-x,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='12' viewBox='0 0 240 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0H240V7.4L240 7.4 234 4.8 229 7.1 223 4.5 215 8.1 209 6.0 202 8.6 198 7.5 194 8.7 190 7.9 184 5.2 181 10.6 172 4.8 166 10.7 162 6.9 156 8.7 151 5.2 142 7.1 138 7.8 133 5.1 125 6.5 120 4.6 111 5.7 103 7.3 99 8.2 93 9.3 86 5.0 82 7.2 79 4.3 73 8.8 66 10.7 61 7.1 55 7.1 47 7.2 42 5.8 37 9.2 33 5.9 26 10.0 17 10.5 9 9.2 2 7.9 0 6.3Z'/%3E%3C/svg%3E") 0 100%/240px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 22px) no-repeat;
  mask:url("textures/torn-top.png") 0 0/240px 12px repeat-x,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='12' viewBox='0 0 240 12' preserveAspectRatio='none'%3E%3Cpath d='M0 0H240V7.4L240 7.4 234 4.8 229 7.1 223 4.5 215 8.1 209 6.0 202 8.6 198 7.5 194 8.7 190 7.9 184 5.2 181 10.6 172 4.8 166 10.7 162 6.9 156 8.7 151 5.2 142 7.1 138 7.8 133 5.1 125 6.5 120 4.6 111 5.7 103 7.3 99 8.2 93 9.3 86 5.0 82 7.2 79 4.3 73 8.8 66 10.7 61 7.1 55 7.1 47 7.2 42 5.8 37 9.2 33 5.9 26 10.0 17 10.5 9 9.2 2 7.9 0 6.3Z'/%3E%3C/svg%3E") 0 100%/240px 12px repeat-x,linear-gradient(#000,#000) 0 11px/100% calc(100% - 22px) no-repeat;
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-torn:empty:where(:not(tk-screen *, tk-note *)){padding:0;min-height:2.4rem}
tk-torn[paper="cream"]:where(:not(tk-screen *, tk-note *)){--torn:#f4eee0;--torn-ink:#2b3f8d}
tk-torn[paper="cobalt"]:where(:not(tk-screen *, tk-note *)){--torn:#2b3f8d;--torn-ink:#f4eee0}
tk-torn[paper="vermilion"]:where(:not(tk-screen *, tk-note *)){--torn:#d2432d;--torn-ink:#ffffff}
tk-torn[paper="plum"]:where(:not(tk-screen *, tk-note *)){--torn:#6b2f5e;--torn-ink:#f4eee0}
tk-torn[paper="sunflower"]:where(:not(tk-screen *, tk-note *)){--torn:#f2b33d;--torn-ink:#1e1e1e}
@media(max-width:640px){tk-torn:where(:not(tk-screen *, tk-note *)){margin:2.4rem -.2rem}}

/* tk-duotone: two plates of one image, multiplied onto cream paper; the
 * second plate lands a little off register, plum where the inks overlap. */
tk-duotone:where(:not(tk-screen *, tk-note *)){margin:2rem 0;--duo-a:var(--tk-ink-cobalt,#2b3f8d);--duo-b:var(--tk-ink-vermilion,#e64b35);--duo-x:2px;--duo-y:1px}
tk-duotone figure:where(:not(tk-screen *, tk-note *)){margin:0}
tk-duotone .tk-duo:where(:not(tk-screen *, tk-note *)){position:relative;isolation:isolate;overflow:hidden;background:var(--tk-paper-obj,#f4eee0);line-height:0;box-shadow:0 1px 1px rgba(0,0,0,.16),0 10px 20px -14px rgba(0,0,0,.5);
  -webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-duotone .tk-plate:where(:not(tk-screen *, tk-note *)){position:relative;background:var(--duo-a);mix-blend-mode:multiply}
tk-duotone .tk-plate img:where(:not(tk-screen *, tk-note *)){display:block;width:100%;height:auto;filter:grayscale(1) contrast(1.7) brightness(1.3);mix-blend-mode:screen}
tk-duotone .tk-plate-b:where(:not(tk-screen *, tk-note *)){position:absolute;inset:0;background:var(--duo-b);transform:translate(var(--duo-x),var(--duo-y));opacity:.8;
  -webkit-mask:url("textures/grain.webp") 0 0/200px 200px;mask:url("textures/grain.webp") 0 0/200px 200px}
tk-duotone .tk-plate-b img:where(:not(tk-screen *, tk-note *)){height:100%;object-fit:cover;filter:grayscale(1) contrast(1.05) brightness(.82)}
tk-duotone[halftone] .tk-plate-b:where(:not(tk-screen *, tk-note *)){-webkit-mask:radial-gradient(circle,#000 1.55px,transparent 2.1px) 0 0/4.5px 4.5px;mask:radial-gradient(circle,#000 1.55px,transparent 2.1px) 0 0/4.5px 4.5px}
tk-duotone .tk-duo:where(:not(tk-screen *, tk-note *))::after{content:"";position:absolute;inset:0;background:url("textures/fibre.svg") 0 0/256px 256px;mix-blend-mode:multiply;opacity:.55;pointer-events:none}
tk-duotone figcaption:where(:not(tk-screen *, tk-note *)){font-size:.92rem;line-height:1.45;color:var(--tk-muted);margin-top:.6rem}

/* tk-overprint: the words printed twice, the second pass off register. */
tk-overprint:where(:not(tk-screen *, tk-note *)){--op-a:var(--tk-ink-cobalt,#2b3f8d);--op-b:var(--tk-ink-vermilion,#e64b35);--op-x:.05em;position:relative;color:var(--op-a);isolation:isolate}
tk-overprint:where(:not(tk-screen *, tk-note *))::after{content:attr(data-tk-text);content:attr(data-tk-text) / "";position:absolute;inset:0;color:var(--op-b);mix-blend-mode:var(--tk-film,multiply);pointer-events:none;
  transform:translate(var(--op-x),calc(var(--op-x) * .6));white-space:pre-wrap;-webkit-print-color-adjust:exact;print-color-adjust:exact}
tk-overprint:not([data-tk-text]):where(:not(tk-screen *, tk-note *))::after{content:none}

/* @base:drop night-stock-inks */
/* Night stock: stamps print in the night shades, highlights carry dark type. */
:where(body:is([data-tk-theme="riso-night"],[data-tk-resolved="riso-night"],[data-tk-theme="graphite"],[data-tk-resolved="graphite"],[data-tk-theme="slate"],[data-tk-resolved="slate"])):where(:not(tk-screen *, tk-note *)){
  --tk-stamp-cobalt:#9db0f0;--tk-stamp-vermilion:#ff6b4f;--tk-stamp-plum:#d896c8;--tk-mark-fg:#16203f;
  --tk-mark-sunflower:#f2b33d;--tk-mark-vermilion:#ff8a73;--tk-mark-cobalt:#9db0f0;--tk-mark-plum:#d896c8;--tk-mark-cornflower:#b8c6f5}
/* @base:end night-stock-inks */

/* ================= PRINT / MOTION / FORCED COLOURS ================= */
@media print{
  /* @base:drop print-dark-stocks */
  /* Dark stocks print on white paper in the day inks, so no token leaves cream type on white. */
  :where(body:is([data-tk-theme="riso-night"],[data-tk-resolved="riso-night"],[data-tk-theme="graphite"],[data-tk-resolved="graphite"],[data-tk-theme="slate"],[data-tk-resolved="slate"])):where(:not(tk-screen *, tk-note *)){
    --tk-bg:#fff;--tk-bg-soft:#f4eee0;--tk-fg:#1e1e1e;--tk-muted:#5a554c;--tk-accent:#2b3f8d;--tk-accent-2:#e64b35;--tk-accent-ink:#fff;
    --tk-card:#fff;--tk-border:#cdbf9f;--tk-rule:#2b3f8d;--tk-field:#fff;--tk-control:#857a63;--tk-positive:#2b3f8d;--tk-negative:#a62d1c;
    --tk-note:#5a554c;--tk-tip:#2b3f8d;--tk-warning:#a62d1c;--tk-decision:#6b2f5e;--tk-risk:#a62d1c;--tk-head:#2b3f8d;--tk-film:multiply;
    --tk-code-bg:#f4eee0;--tk-code-fg:#1e1e1e;--tk-ink-cobalt:#2b3f8d;--tk-ink-vermilion:#e64b35;--tk-ink-plum:#6b2f5e;--tk-ink-black:#1e1e1e;
    --tk-stamp-cobalt:#2b3f8d;--tk-stamp-vermilion:#b8321f;--tk-stamp-plum:#6b2f5e;--tk-mark-fg:currentColor;
    --tk-mark-sunflower:rgba(242,179,61,.58);--tk-mark-vermilion:rgba(230,75,53,.3);--tk-mark-cobalt:rgba(43,63,141,.18);--tk-mark-plum:rgba(107,47,94,.2);--tk-mark-cornflower:rgba(157,176,240,.55)}
  /* @base:end print-dark-stocks */
  tk-stamp .tk-stamp-face:where(:not(tk-screen *, tk-note *)){animation:none!important;opacity:.92!important}
  tk-taped:where(:not(tk-screen *, tk-note *)),tk-slip:where(:not(tk-screen *, tk-note *)),tk-duotone:where(:not(tk-screen *, tk-note *)),tk-tape-title:where(:not(tk-screen *, tk-note *)){break-inside:avoid}
  body:is([data-tk-theme],:not([data-tk-theme])){background:#fff!important;color:#000;font-size:11pt}
  body:is([data-tk-theme],:not([data-tk-theme]))::before{display:none}
  tk-page:where(:not(tk-screen *, tk-note *)),tk-page[wide]:where(:not(tk-screen *, tk-note *)){max-width:none;padding:0}
  tk-toc:where(:not(tk-screen *, tk-note *)),tk-progress:where(:not(tk-screen *, tk-note *)),tk-play .tk-row:where(:not(tk-screen *, tk-note *)),.tk-feedback .tk-actions:where(:not(tk-screen *, tk-note *)),.tk-gl .tk-bar:where(:not(tk-screen *, tk-note *)),.tk-copy:where(:not(tk-screen *, tk-note *)),tk-chart details.tk-fallback summary:where(:not(tk-screen *, tk-note *)),tk-pager nav:where(:not(tk-screen *, tk-note *)),tk-slides .tk-bar:where(:not(tk-screen *, tk-note *)){display:none!important}
  tk-card:where(:not(tk-screen *, tk-note *)),tk-callout:where(:not(tk-screen *, tk-note *)),tk-details:where(:not(tk-screen *, tk-note *)),tk-stat:where(:not(tk-screen *, tk-note *)),tk-chart:where(:not(tk-screen *, tk-note *)),tk-figure:where(:not(tk-screen *, tk-note *)),tk-table tr:where(:not(tk-screen *, tk-note *)),.tk-feedback:where(:not(tk-screen *, tk-note *)){box-shadow:none!important;break-inside:avoid}
  tk-scrolly:where(:not(tk-screen *, tk-note *)){display:block}tk-scrolly .tk-visual:where(:not(tk-screen *, tk-note *)){position:static;transform:none!important}tk-scrolly .tk-step:where(:not(tk-screen *, tk-note *)){margin:0 0 1rem;opacity:1}
  tk-section>h2:where(:not(tk-screen *, tk-note *)){break-after:avoid}
  a:where(:not(tk-screen *, tk-note *)){color:#000}
}
@media(prefers-reduced-motion:reduce){
  /* 1.1.0: no transitions at all. A forced short duration would make every property, theme colours
   * included, transition, so scripts reading the page after a theme switch would see the old colours. */
  *:where(:not(tk-screen *, tk-note *)),*:where(:not(tk-screen *, tk-note *))::before,*:where(:not(tk-screen *, tk-note *))::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition:none!important;scroll-behavior:auto!important}
}
@media(forced-colors:active){
  tk-callout strong.tk-label:where(:not(tk-screen *, tk-note *)),.tk-pin:where(:not(tk-screen *, tk-note *))::before,tk-annotate li:where(:not(tk-screen *, tk-note *))::before{forced-color-adjust:none}
  .tk-feedback input[type="radio"]:where(:not(tk-screen *, tk-note *)),.tk-feedback input[type="checkbox"]:where(:not(tk-screen *, tk-note *)){appearance:auto}
}

/* 1.6.1: reading fixes found by rendering real sheets in every style. Appended to 1.6.0's stylesheets
   (tacksheet.css and tacksheet-base.css), so every theme and kit style gets them. */
/* Lists in callouts, details, the hero and plain divs get the same indent and spacing as section lists. */
:where(tk-callout,tk-details details,tk-hero,tk-page div)>:is(ul,ol):where(:not(tk-screen *, tk-note *)){margin:0 0 1.1em;padding-left:1.25em}
:where(tk-callout,tk-details details,tk-hero,tk-page div)>:is(ul,ol)>li:where(:not(tk-screen *, tk-note *)){margin:.3em 0}
/* Ten items or more: room for a two-digit number inside the text column. */
:where(tk-section,tk-card,tk-page,.tk-step,tk-split>div,tk-callout,tk-details details)>ol:has(>li:nth-child(10)):where(:not(tk-screen *, tk-note *)){padding-left:1.8em}
/* A stamp in the flow of a section stands on its own line, with room for its tilt. */
:where(tk-section,tk-card,tk-split>div)>tk-stamp:where(:not(tk-screen *, tk-note *)){display:block;width:fit-content;margin:1rem .5rem 1.4rem .3rem}
/* A number column's header looks like the other headers; tabular figures stay in number cells, so
   hyphens and dashes in text cells keep their width. */
tk-table thead th.tk-num:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-mono);font-size:.8rem}
tk-table td:not(.tk-num):where(:not(tk-screen *, tk-note *)){font-variant-numeric:normal}
/* Table headers and the form's note are readable sizes. */
tk-table thead th:where(:not(tk-screen *, tk-note *)){font-size:.8rem}
.tk-feedback>.tk-note:where(:not(tk-screen *, tk-note *)){font-size:.8rem}
/* The form's note band spans the whole form (the reading measure stopped it short). */
.tk-feedback>:is(.tk-note,.tk-draft):where(:not(tk-screen *, tk-note *)){max-width:none}
/* A question after a dropdown, text box or field gets the same gap as one after another question. */
.tk-feedback :is(select,textarea,input)+:is(fieldset,label):where(:not(tk-screen *, tk-note *)){margin-top:1.1rem}
/* Stacked tables (phones): long values such as paths and identifiers wrap inside their card instead of
   widening the page, and the hidden header row takes no width whatever a style gives it. */
@media(max-width:640px){
  tk-table[stack] td:where(:not(tk-screen *, tk-note *)){overflow-wrap:anywhere}
  :root tk-table[stack] .tk-wrap:where(:not(tk-screen *, tk-note *)){border:0;padding:0;background:none;box-shadow:none}
  :root tk-table[stack] thead:where(:not(tk-screen *, tk-note *)){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  :root tk-table[stack] thead :is(th,td):where(:not(tk-screen *, tk-note *)){position:static;padding:0;letter-spacing:0;border:0}
}
/* Inline code and links never hyphenate (a style's hyphens:auto would split a command or a path). */
:is(code,kbd,samp,a):where(:not(tk-screen *, tk-note *)){-webkit-hyphens:manual;hyphens:manual}
/* 1.6.1: theme fixes, appended to tacksheet.css only (the bare kit has no themes). */
/* Riso: a torn strip already divides, so the section after it drops its own rule. */
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) tk-torn+tk-section>h2:first-child:where(:not(tk-screen *, tk-note *)){border-top:0;padding-top:0}
/* Riso Night: inline code keeps a darker chip on navy cards, callouts and forms, and the kraft strip is dimmed to the night stock. */
body:is([data-tk-theme="riso-night"],[data-tk-resolved="riso-night"]) :is(tk-callout,tk-card,tk-stat,tk-table tr,.tk-feedback) code:not(pre code):where(:not(tk-screen *, tk-note *)){background:var(--tk-code-bg)}
body:is([data-tk-theme="riso-night"],[data-tk-resolved="riso-night"]) tk-torn:not([paper]):where(:not(tk-screen *, tk-note *)){filter:brightness(.78) saturate(.9)}
/* 1.7.0: answers that join a form. A reply widget with form="<tk-form id>" answers in place (.tk-joined) and says
   whether it is answered (data-tk-answer: open | answered | sent | missing | closed); its tk-form (.tk-answers-form)
   counts the answers and lists the open ones. Appended to 1.6.1's stylesheets (tacksheet.css and tacksheet-base.css),
   so every theme and kit style gets them; colours come from the tokens. */
.tk-feedback.tk-joined:where(:not(tk-screen *, tk-note *)){transition:box-shadow .2s,outline-color .2s}
.tk-feedback h3>.tk-required:where(:not(tk-screen *, tk-note *)){color:var(--tk-muted);font-family:var(--tk-font-body);font-size:.78em;font-weight:500;letter-spacing:0;text-transform:none}
.tk-feedback>.tk-answer-state:where(:not(tk-screen *, tk-note *)){display:flex;flex-wrap:wrap;max-width:none;align-items:center;gap:.2rem .55rem;margin:1rem 0 0;color:var(--tk-muted);
  font-family:var(--tk-font-body);font-size:.9rem;font-weight:500;line-height:1.4}
.tk-feedback>.tk-answer-state[hidden]:where(:not(tk-screen *, tk-note *)){display:none}
.tk-feedback .tk-answer-dot:where(:not(tk-screen *, tk-note *)){flex:none;width:.8rem;height:.8rem;border:2px solid currentColor;border-radius:50%;box-sizing:border-box}
.tk-feedback[data-tk-answer="answered"]>.tk-answer-state:where(:not(tk-screen *, tk-note *)),.tk-feedback[data-tk-answer="sent"]>.tk-answer-state:where(:not(tk-screen *, tk-note *)){color:var(--tk-fg)}
.tk-feedback:is([data-tk-answer="answered"],[data-tk-answer="sent"]) .tk-answer-dot:where(:not(tk-screen *, tk-note *)){border-color:var(--tk-positive);background:var(--tk-positive)}
.tk-feedback[data-tk-answer="sent"] .tk-answer-dot:where(:not(tk-screen *, tk-note *)){background:transparent;box-shadow:inset 0 0 0 2px var(--tk-card),inset 0 0 0 5px var(--tk-positive)}
.tk-feedback.tk-joined[data-tk-answer="missing"]:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-negative);outline-offset:3px}
.tk-feedback[data-tk-answer="missing"]>.tk-answer-state:where(:not(tk-screen *, tk-note *)){color:var(--tk-negative);font-weight:650}
.tk-feedback[data-tk-answer="missing"] .tk-answer-dot:where(:not(tk-screen *, tk-note *)){border-color:var(--tk-negative);background:var(--tk-negative)}
.tk-feedback .tk-answer-go:where(:not(tk-screen *, tk-note *)),.tk-answers-jump:where(:not(tk-screen *, tk-note *)){font:inherit;font-family:var(--tk-font-body);cursor:pointer}
.tk-feedback .tk-answer-go:where(:not(tk-screen *, tk-note *)){display:inline-flex;align-items:center;min-height:44px;margin-left:auto;padding:0 .2rem;border:0;background:none;color:var(--tk-accent);
  font-weight:650;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.tk-feedback .tk-answer-go[hidden]:where(:not(tk-screen *, tk-note *)){display:none}
.tk-feedback .tk-answer-go:where(:not(tk-screen *, tk-note *))::after{content:"\2193";margin-left:.3em}
.tk-feedback .tk-answer-go:hover:where(:not(tk-screen *, tk-note *)){text-decoration-thickness:2px}
.tk-feedback :is(.tk-answer-go,.tk-answers-jump):focus-visible:where(:not(tk-screen *, tk-note *)){outline:2px solid var(--tk-accent);outline-offset:2px}
.tk-feedback.tk-answer-flash:where(:not(tk-screen *, tk-note *)){box-shadow:0 0 0 4px color-mix(in srgb,var(--tk-accent) 35%,transparent),var(--tk-shadow,none)}
.tk-feedback .tk-ask:where(:not(tk-screen *, tk-note *)){margin-bottom:.4rem}
/* A chosen option keeps its colours under the pointer (a phone leaves hover on the button it tapped). */
.tk-feedback .tk-scale button[aria-pressed="true"]:hover:not(:disabled):where(:not(tk-screen *, tk-note *)){background:var(--tk-accent);color:var(--tk-accent-ink)}
/* The form that collects them: "3 of 5 answered", a bar, and a button for each open answer. */
.tk-answers:where(:not(tk-screen *, tk-note *)){margin:0 0 1.15rem}
.tk-answers[hidden]:where(:not(tk-screen *, tk-note *)){display:none}
.tk-answers-count:where(:not(tk-screen *, tk-note *)){margin:0 0 .5rem;color:var(--tk-fg);font-family:var(--tk-font-body);font-size:1rem;line-height:1.4}
.tk-answers-count strong:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-data,var(--tk-font-body));font-weight:750;font-variant-numeric:tabular-nums}
.tk-answers-bar:where(:not(tk-screen *, tk-note *)){height:.55rem;overflow:hidden;border:1px solid var(--tk-control,var(--tk-border));border-radius:999px;background:var(--tk-field)}
.tk-answers-bar>span:where(:not(tk-screen *, tk-note *)){display:block;height:100%;width:0;background:var(--tk-accent);transition:width .25s ease-out}
.tk-answers[data-tk-answers="all"] .tk-answers-bar>span:where(:not(tk-screen *, tk-note *)){background:var(--tk-positive)}
.tk-answers-open:where(:not(tk-screen *, tk-note *)){display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.8rem;color:var(--tk-muted);font-size:.9rem}
.tk-answers-open[hidden]:where(:not(tk-screen *, tk-note *)){display:none}
.tk-answers-label:where(:not(tk-screen *, tk-note *)){margin-right:.1rem}
.tk-answers-jump:where(:not(tk-screen *, tk-note *)){min-height:44px;max-width:100%;padding:.4rem .85rem;border:1px solid var(--tk-control,var(--tk-border));border-radius:var(--tk-radius);
  background:var(--tk-field);color:var(--tk-accent);font-size:.9rem;font-weight:650;line-height:1.3;text-align:left;overflow-wrap:anywhere}
.tk-answers-jump:where(:not(tk-screen *, tk-note *))::after{content:" \2191";font-weight:400}
.tk-answers-jump:hover:not(:disabled):where(:not(tk-screen *, tk-note *)){background:var(--tk-mark)}
.tk-answers-jump.tk-answers-must:where(:not(tk-screen *, tk-note *)){border-color:currentColor}
.tk-answers-req:where(:not(tk-screen *, tk-note *)){color:var(--tk-muted);font-weight:500}
@media (prefers-reduced-motion:reduce){.tk-answers-bar>span:where(:not(tk-screen *, tk-note *)),.tk-feedback.tk-joined:where(:not(tk-screen *, tk-note *)){transition:none}}
@media (forced-colors:active){.tk-feedback .tk-answer-dot:where(:not(tk-screen *, tk-note *)){forced-color-adjust:none;background:Canvas;border-color:CanvasText}
  .tk-feedback:is([data-tk-answer="answered"],[data-tk-answer="sent"],[data-tk-answer="missing"]) .tk-answer-dot:where(:not(tk-screen *, tk-note *)),.tk-answers-bar>span:where(:not(tk-screen *, tk-note *)){forced-color-adjust:none;background:CanvasText;border-color:CanvasText}
  .tk-feedback.tk-joined[data-tk-answer="missing"]:where(:not(tk-screen *, tk-note *)){outline-color:Mark}}
@media print{.tk-answers-open:where(:not(tk-screen *, tk-note *)),.tk-feedback .tk-answer-go:where(:not(tk-screen *, tk-note *)){display:none}}
/* 1.7.0: answers that join a form in the kit themes, appended to tacksheet.css only (the bare kit has no themes). */
/* Riso: the slip has no bottom padding (its notes and tear-off Send run to the edge), so the answer line keeps its own. */
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-feedback.tk-joined>.tk-answer-state:where(:not(tk-screen *, tk-note *)){margin:1rem 0 1.15rem}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-answers-bar:where(:not(tk-screen *, tk-note *)){border:1.5px solid var(--tk-rule);border-radius:0;background:var(--tk-bg-soft)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-answers-bar>span:where(:not(tk-screen *, tk-note *)){background:repeating-linear-gradient(-45deg,var(--tk-accent) 0 6px,color-mix(in srgb,var(--tk-accent) 82%,var(--tk-bg)) 6px 9px)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-answers-jump:where(:not(tk-screen *, tk-note *)){border:1.5px dashed var(--tk-rule);border-radius:1px;background:var(--tk-bg-soft)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-answers-jump.tk-answers-must:where(:not(tk-screen *, tk-note *)){border-style:solid;border-color:var(--tk-accent-2)}
body:is([data-tk-theme^="riso"],:not([data-tk-theme]),[data-tk-resolved^="riso"]) .tk-answers-count strong:where(:not(tk-screen *, tk-note *)){font-family:var(--tk-font-head);font-weight:400;font-size:1.15em;letter-spacing:-.01em}
/* Ink: heavy rules. Slate: square corners and mono labels. */
body[data-tk-theme="ink"] .tk-answers-bar:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);border-radius:0}
body[data-tk-theme="ink"] .tk-answers-jump:where(:not(tk-screen *, tk-note *)){border:2px solid var(--tk-rule);border-radius:0;color:var(--tk-fg)}
body[data-tk-theme="slate"] .tk-answers-bar:where(:not(tk-screen *, tk-note *)){border-radius:0}
body[data-tk-theme="slate"] .tk-answers-jump:where(:not(tk-screen *, tk-note *)){border-radius:0;font-family:var(--tk-font-mono);font-size:.82rem}
/* 1.8.0: canvases, prototypes, tasks and strips (canvas.js). Appended to 1.7.0's stylesheets (tacksheet.css and
   tacksheet-base.css), so every theme and kit style gets them, before any style's own rules; colours come from the
   tokens. Until canvas.js has set an element up (.tk-ready) it keeps its size and shows nothing raw. */
tk-canvas{display:block;position:relative;box-sizing:border-box;height:var(--tk-canvas-height,560px);margin:1.5rem 0;overflow:hidden;
  border:1px solid var(--tk-border);border-radius:var(--tk-radius);color:var(--tk-fg);background-color:var(--tk-bg-soft);
  background-image:radial-gradient(color-mix(in srgb,var(--tk-fg) 20%,transparent) 1px,transparent 1.3px);background-size:22px 22px;
  touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;outline:none;-webkit-tap-highlight-color:transparent}
tk-canvas:not(.tk-ready){visibility:hidden}
tk-canvas:not(.tk-ready)>*,tk-canvas tk-link,tk-canvas.tk-failed>:not(.tk-note){display:none}
tk-canvas.tk-failed{height:auto;padding:1rem;visibility:visible;cursor:auto}
tk-canvas:focus-visible{box-shadow:0 0 0 3px var(--tk-accent)}
tk-canvas.is-panning{cursor:grabbing}
tk-canvas[start]{cursor:default}
tk-canvas.is-active,tk-canvas.is-sim{touch-action:none}
.tkc-world{position:absolute;left:0;top:0;transform-origin:0 0}
.tkc-links{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;color:var(--tk-accent);transition:opacity .3s}
.tkc-links>path{fill:none;stroke:currentColor;stroke-width:calc(2.5px / var(--s,1))}
.tkc-links marker path{fill:currentColor;stroke:none}
.tkc-links>text{font-family:var(--tk-font-body),system-ui,sans-serif;font-size:calc(14px / var(--s,1));font-weight:650;fill:currentColor;
  paint-order:stroke;stroke:var(--tk-bg-soft);stroke-width:calc(5px / var(--s,1));stroke-linejoin:round}
.tkc-item{position:absolute;box-sizing:border-box;width:320px;transition:opacity .35s}
.tkc-item.is-lifted{z-index:50;transition:none}
tk-canvas:not([start]) .tkc-item{cursor:grab}
.tkc-item>.tkc-body{box-sizing:border-box;transition:transform .18s ease,box-shadow .2s ease}
.tkc-item.is-lifted>.tkc-body{transform:scale(1.035) rotate(var(--swing,0deg));box-shadow:0 30px 60px rgb(0 0 0/35%),0 8px 18px rgb(0 0 0/20%)}
@keyframes tkc-settle{0%{transform:scale(1.02)}55%{transform:scale(.992)}100%{transform:none}}
.tkc-item.is-settling>.tkc-body{animation:tkc-settle .35s ease-out}
.tkc-item:not(tk-screen,tk-note,.tkc-media)>.tkc-body{padding:1rem 1.1rem;border:1px solid var(--tk-border);border-radius:var(--tk-radius);
  background:var(--tk-card);color:var(--tk-fg);box-shadow:var(--tk-shadow,none)}
.tkc-item>.tkc-body>:first-child{margin-top:0}
.tkc-item>.tkc-body>:last-child{margin-bottom:0}
.tkc-media>.tkc-body>*{display:block;max-width:100%;height:auto}
/* Screens: a device frame around the sheet's own HTML, SVG or image, named above. */
tk-screen.tkc-item{width:auto}
tk-screen>.tkc-body{position:relative;box-sizing:content-box;overflow:hidden;border:10px solid #111;border-radius:46px;background:#fff;color:#17202b;
  box-shadow:0 6px 20px rgb(0 0 0/18%)}
tk-screen[device="tablet"]>.tkc-body{border-width:14px;border-radius:30px}
tk-screen[device="desktop"]>.tkc-body{border-width:8px;border-top-width:26px;border-radius:12px}
tk-screen[device="none"]>.tkc-body{border:1px solid var(--tk-border);border-radius:var(--tk-radius)}
tk-screen>.tkc-body>.tkc-scroll{position:absolute;inset:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}
/* The page's look stays out of screens and notes: no kit or style rule matches inside them (kit-isolate.ts), and what
   the page would pass down by inheritance starts here from plain defaults instead. The sheet's own CSS styles them. */
tk-screen>.tkc-body,tk-note>.tkc-body{font-style:normal;font-variant:normal;font-feature-settings:normal;font-variation-settings:normal;
  font-stretch:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;text-align:start;text-indent:0;text-shadow:none;
  white-space:normal;-webkit-text-fill-color:currentColor;-webkit-text-stroke:0;hyphens:manual;cursor:auto}
tk-screen>.tkc-body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;font-size:16px;font-weight:400;line-height:1.45;color-scheme:light}
:where(tk-screen .tkc-scroll *,tk-screen .tkc-scroll *::before,tk-screen .tkc-scroll *::after){box-sizing:border-box}
:where(tk-screen .tkc-scroll) :where(img,video,canvas){max-width:100%;height:auto}
tk-screen>.tkc-name{position:absolute;left:4px;bottom:100%;margin-bottom:10px;color:var(--tk-fg);font-family:var(--tk-font-head),system-ui,sans-serif;
  font-size:26px;font-weight:700;line-height:1.2;white-space:nowrap;transition:opacity .3s}
tk-screen.is-flash :is([data-tk-go],[data-tk-back],[data-tk-set],tk-hotspot){outline:3px solid rgb(13 153 255/85%);outline-offset:1px;background-color:rgb(13 153 255/14%)}
tk-hotspot{position:absolute;display:block;border-radius:6px;cursor:pointer}
tk-hotspot:focus-visible,tk-screen [data-tk-go]:focus-visible{outline:3px solid var(--tk-accent);outline-offset:2px}
/* Notes: paper squares in a fixed tape colour, so they read the same on any stock. */
tk-note.tkc-item{width:230px}
tk-note>.tkc-body{padding:16px;background:var(--tkc-note,#f2b33d);color:#2a1f05;font-family:var(--tk-font-hand,var(--tk-font-body)),system-ui,sans-serif;
  font-size:19px;font-weight:400;line-height:1.35;box-shadow:0 3px 8px rgb(0 0 0/18%);transform:rotate(-2deg)}
tk-note.is-lifted>.tkc-body{transform:scale(1.035) rotate(calc(-2deg + var(--swing,0deg)))}
tk-note[color="blush"]{--tkc-note:#f2a7a0}
tk-note[color="cornflower"]{--tkc-note:#9db0f0}
tk-note[color="kraft"]{--tkc-note:#c9b48f}
tk-note[color="frost"]{--tkc-note:#f6f3ec}
/* A reader's own notes (+ Note on a board): a slip they write on, then send to the owner as one reply. */
tk-note.tkc-mine>.tkc-body{position:relative;padding:14px 14px 16px;transform:rotate(1.5deg)}
tk-note.tkc-mine.is-lifted>.tkc-body{transform:scale(1.035) rotate(calc(1.5deg + var(--swing,0deg)))}
tk-note.tkc-mine textarea{display:block;box-sizing:border-box;width:100%;min-height:100px;margin:0;padding:6px 8px;border:1.5px dashed rgb(42 31 5/40%);
  border-radius:4px;background:rgb(255 255 255/40%);color:inherit;font:inherit;font-size:17px;line-height:1.35;resize:none;-webkit-user-select:text;user-select:text;cursor:text}
tk-note.tkc-mine textarea::placeholder{color:rgb(42 31 5/60%)}
tk-note.tkc-mine textarea:focus-visible{outline:3px solid #2a1f05;outline-offset:1px}
tk-note.tkc-mine.is-sent textarea{border-color:transparent;background:none;cursor:auto}
tk-note.tkc-mine.is-sent>.tkc-body::after{content:"Sent";position:absolute;right:10px;bottom:5px;font:700 11px/1 system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;opacity:.7}
tk-note .tkc-x{position:absolute;top:-16px;right:-16px;box-sizing:border-box;width:40px;height:40px;margin:0;padding:0;border:1.5px solid #2a1f05;border-radius:50%;
  background:#fff;color:#2a1f05;font:700 20px/1 system-ui,sans-serif;cursor:pointer}
tk-note .tkc-x:focus-visible{outline:3px solid var(--tk-accent);outline-offset:2px}
.tkc-said{position:absolute;left:10px;bottom:42px;z-index:61;box-sizing:border-box;max-width:min(26rem,calc(100% - 180px));margin:0;padding:6px 10px;
  border:1.5px solid var(--tk-border);border-radius:var(--tk-radius);background:var(--tk-card);color:var(--tk-fg);font-family:var(--tk-font-body),system-ui,sans-serif;
  font-size:14px;line-height:1.35;box-shadow:var(--tk-shadow,none);-webkit-user-select:text;user-select:text;cursor:auto}
.tkc-said[hidden]{display:none}
.tkc-said[data-ok="false"]{border-color:var(--tk-negative);color:var(--tk-negative)}
tk-canvas.is-touch:not(.is-active) .tkc-said{display:none}
/* Tools, minimap, status and the phone gate. */
.tkc-tools{position:absolute;right:10px;top:10px;z-index:60;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:calc(100% - 20px)}
:is(.tkc-tools,.tkc-simbar,.tkc-gate) button{box-sizing:border-box;min-width:40px;min-height:40px;margin:0;padding:0 12px;border:1.5px solid var(--tk-accent);
  border-radius:var(--tk-radius);background:var(--tk-card);color:var(--tk-accent);font-family:var(--tk-font-body),system-ui,sans-serif;font-size:14px;font-weight:700;
  line-height:1;cursor:pointer}
:is(.tkc-tools,.tkc-gate) .tkc-primary,.tkc-gate button{background:var(--tk-accent);color:var(--tk-accent-ink)}
.tkc-tools button:disabled{opacity:.5;cursor:default}
:is(.tkc-tools,.tkc-simbar,.tkc-gate) button:focus-visible{outline:3px solid var(--tk-accent);outline-offset:2px}
.tkc-tools [hidden],.tkc-done{display:none}
tk-canvas.is-touch.is-active .tkc-done{display:inline-block}
.tkc-mini{position:absolute;right:10px;bottom:10px;z-index:60;width:150px;height:84px;overflow:hidden;pointer-events:none;border:1.5px solid var(--tk-border);
  border-radius:6px;background:color-mix(in srgb,var(--tk-card) 88%,transparent)}
.tkc-mini i{position:absolute;border-radius:1px;background:color-mix(in srgb,var(--tk-accent) 40%,transparent)}
.tkc-mini b{position:absolute;box-sizing:border-box;border:2px solid var(--tk-accent-2,var(--tk-accent))}
.tkc-status{position:absolute;left:10px;bottom:10px;z-index:60;padding:4px 8px;border-radius:6px;background:color-mix(in srgb,var(--tk-card) 92%,transparent);
  color:var(--tk-fg);font-family:var(--tk-font-body),system-ui,sans-serif;font-size:12px;font-weight:600;line-height:1.3;pointer-events:none}
.tkc-gate{position:absolute;inset:0;z-index:70;display:none;place-items:center;background:color-mix(in srgb,var(--tk-bg) 28%,transparent)}
.tkc-gate button{min-height:52px;padding:0 24px;border-radius:999px;font-size:19px;box-shadow:var(--tk-lift,0 6px 18px rgb(0 0 0/20%))}
tk-canvas.is-touch:not(.is-active):not(.is-sim) .tkc-gate{display:grid}
tk-canvas.is-touch:not(.is-active):not(.is-sim) :is(.tkc-tools,.tkc-mini){display:none}
@media (max-width:560px){.tkc-mini{display:none}.tkc-said{max-width:calc(100% - 20px)}}
/* Simulate: the page goes dark, the canvas comes forward and only the screen in focus shows. The canvas stays clipped
   (the other screens must not widen the page); the backdrop is fixed, so it covers the window all the same. */
.tkc-backdrop{display:none}
tk-canvas.is-sim{z-index:901;height:max(var(--tk-canvas-height,560px),calc(var(--tk-vh,1vh) * 80));border-color:transparent;
  background:none;cursor:default}
tk-canvas.is-sim>.tkc-backdrop{display:block;position:fixed;inset:0;z-index:-1;background:rgb(6 9 18/92%);animation:tkc-dim .35s ease-out}
@keyframes tkc-dim{from{opacity:0}}
tk-canvas.is-sim :is(.tkc-links,.tkc-mini,.tkc-tools,.tkc-status){opacity:0;pointer-events:none}
tk-canvas.is-sim .tkc-item:not(.is-focus){opacity:0;pointer-events:none}
tk-canvas.is-sim tk-screen>.tkc-name{opacity:0}
.tkc-simbar{position:absolute;left:0;right:0;top:0;z-index:60;display:none;align-items:center;gap:8px;padding:4px 6px;color:#fff;
  font-family:var(--tk-font-body),system-ui,sans-serif;font-size:15px;font-weight:650}
tk-canvas.is-sim .tkc-simbar{display:flex}
.tkc-simbar .tkc-sim-name{min-width:0;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tkc-simbar button{border-color:rgb(255 255 255/60%);background:transparent;color:#fff}
.tkc-sim-extra{display:flex;align-items:center;gap:8px}
.tkc-sim-extra:empty,.tkc-simbar.has-extra .tkc-restart{display:none}
.tkc-rec{color:#ffd9d1;font-size:13px;white-space:nowrap}
.tkc-rec::before{content:"";display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:#ff6b4f}
/* tk-task: a light usability test on a prototype. */
tk-task{display:block;box-sizing:border-box;margin:1rem 0;padding:14px 16px;border:1.5px dashed var(--tk-accent);border-radius:var(--tk-radius);
  background:var(--tk-card);color:var(--tk-fg)}
tk-task:not(.tk-ready){min-height:8rem;visibility:hidden}
tk-task .tkt-goal{margin:0;font-weight:700}
tk-task .tkt-meta{margin:.3rem 0 .75rem;color:var(--tk-muted);font-size:.92rem;line-height:1.45}
tk-task .tkt-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
tk-task button{box-sizing:border-box;min-height:44px;margin:0;padding:0 16px;border:1.5px solid var(--tk-accent);border-radius:var(--tk-radius);background:transparent;
  color:var(--tk-accent);font-family:var(--tk-font-body),system-ui,sans-serif;font-size:.95rem;font-weight:700;line-height:1;cursor:pointer}
tk-task .tkt-start{background:var(--tk-accent);color:var(--tk-accent-ink)}
tk-task button:focus-visible{outline:3px solid var(--tk-accent);outline-offset:2px}
tk-task [hidden]{display:none}
tk-task .tkt-live{color:var(--tk-fg);font-size:.92rem;font-weight:600}
tk-task :is(.tkt-result,.tkt-sent){margin:.75rem 0 0;font-size:.95rem;line-height:1.45}
tk-task .tkt-sent[data-ok="false"]{color:var(--tk-negative)}
/* tk-strip: one row that scrolls sideways inside the sheet; the page never does. */
tk-strip{display:block;position:relative;max-width:100%;margin:1.25rem 0}
tk-strip:not(.tk-ready){display:flex;gap:12px;overflow:hidden}
:is(tk-strip:not(.tk-ready),.tks-track)>*{flex:none;box-sizing:border-box;width:var(--tk-strip-item,min(15rem,80%));margin:0}
.tks-track{display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;padding:4px 2px 10px;scrollbar-width:thin}
tk-strip[snap] .tks-track{scroll-snap-type:x mandatory}
tk-strip[snap] .tks-track>*{scroll-snap-align:start}
.tks-track:focus-visible{outline:3px solid var(--tk-accent);outline-offset:2px}
.tks-nav{display:flex;align-items:center;gap:8px;margin-top:4px;color:var(--tk-muted);font-size:.88rem}
.tks-nav button{box-sizing:border-box;width:40px;height:40px;margin:0;padding:0;border:1.5px solid currentColor;border-radius:50%;background:transparent;color:inherit;
  font-size:18px;line-height:1;cursor:pointer}
.tks-nav button:disabled{opacity:.35;cursor:default}
tk-strip[data-tk-fits] .tks-nav{display:none}
@media (prefers-reduced-motion:reduce){:is(.tkc-item,.tkc-item>.tkc-body,.tkc-links,tk-screen>.tkc-name){transition:none}
  :is(.tkc-item.is-settling>.tkc-body,tk-canvas.is-sim>.tkc-backdrop){animation:none}}
@media (forced-colors:active){.tkc-links>path{stroke:CanvasText}.tkc-links marker path{fill:CanvasText}.tkc-links>text{fill:CanvasText;stroke:Canvas}
  tk-screen.is-flash :is([data-tk-go],[data-tk-back],[data-tk-set],tk-hotspot){outline-color:Highlight}}
@media print{tk-canvas :is(.tkc-tools,.tkc-gate,.tkc-mini,.tkc-status,.tkc-simbar,.tkc-said,.tkc-x),.tks-nav,tk-task .tkt-row{display:none}}
