/* playingheaven-ui tokens (registry copy; edit in the registry) */
:root {
  --paper-main: #eff2f7;
  --paper-raised: #f6f8fb;
  --paper-deep: #e2e8f1;
  --ink-main: #2e3134;
  --ink-secondary: #5a5e62;
  --ink-muted: #62666b;
  --mineral-main: #3f5e8c;
  --mineral-text: #33507b;
  --mineral-soft: #7d95b8;
  --mineral-pale: #c9d4e5;
  --mineral-wash: #e6ebf3;
  --rule: #c8d2e0;
  --rule-strong: #a5b5cd;
  --focus: #33507b;
  color-scheme: light;

  --background: var(--paper-main);
  --foreground: var(--ink-main);
  --card: var(--paper-raised);
  --card-foreground: var(--ink-main);
  --popover: var(--paper-raised);
  --popover-foreground: var(--ink-main);
  --primary: var(--ink-main);
  --primary-foreground: var(--paper-main);
  --secondary: var(--paper-deep);
  --secondary-foreground: var(--ink-main);
  --muted: var(--paper-deep);
  --muted-foreground: var(--ink-muted);
  --accent: var(--mineral-wash);
  --accent-foreground: var(--ink-main);
  --destructive: var(--ink-main);
  --destructive-foreground: var(--paper-main);
  --border: var(--rule);
  --input: var(--rule-strong);
  --ring: var(--focus);
  --radius: 2px;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper-main: #1e2732;
    --paper-raised: #25303d;
    --paper-deep: #2d3949;
    --ink-main: #e3e0d9;
    --ink-secondary: #c4c1ba;
    --ink-muted: #aca9a2;
    --mineral-main: #8aa3c2;
    --mineral-text: #9ab1ce;
    --mineral-soft: #5e7396;
    --mineral-pale: #33425a;
    --mineral-wash: #282f3b;
    --rule: #3c4959;
    --rule-strong: #4e5f74;
    --focus: #9ab1ce;
    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --paper-main: #1e2732;
  --paper-raised: #25303d;
  --paper-deep: #2d3949;
  --ink-main: #e3e0d9;
  --ink-secondary: #c4c1ba;
  --ink-muted: #aca9a2;
  --mineral-main: #8aa3c2;
  --mineral-text: #9ab1ce;
  --mineral-soft: #5e7396;
  --mineral-pale: #33425a;
  --mineral-wash: #282f3b;
  --rule: #3c4959;
  --rule-strong: #4e5f74;
  --focus: #9ab1ce;
  color-scheme: dark;
}

/* playingheaven-ui seps (registry copy; edit in the registry) */
.seps {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  column-gap: calc(1.4em + 1px);
  overflow: hidden;
  padding: 4px;
  margin: -4px;
}
.seps > * + * {
  padding-left: calc(0.7em + 1px);
  margin-left: calc(-0.7em - 1px);
  background: linear-gradient(var(--rule-strong), var(--rule-strong)) 0 55% / 1px 0.95em no-repeat;
}

/* playingheaven-ui portrait (registry copy; edit in the registry) */
.ph-portrait,
.ph-person {
  --ph-portrait-size: 6rem;
}
.ph-portrait[data-size="xs"],
.ph-person[data-size="xs"] {
  --ph-portrait-size: 2rem;
}
.ph-portrait[data-size="sm"],
.ph-person[data-size="sm"] {
  --ph-portrait-size: 3rem;
}
.ph-portrait[data-size="md"],
.ph-person[data-size="md"] {
  --ph-portrait-size: 4.5rem;
}
.ph-portrait[data-size="lg"],
.ph-person[data-size="lg"] {
  --ph-portrait-size: 6rem;
}
.ph-portrait[data-size="xl"],
.ph-person[data-size="xl"] {
  --ph-portrait-size: 12rem;
}

.ph-portrait {
  display: block;
  flex: none;
  box-sizing: border-box;
  inline-size: var(--ph-portrait-size);
  block-size: var(--ph-portrait-size);
  border: 1px solid var(--rule);
  background: var(--paper-raised);
  overflow: hidden;
}
.ph-portrait > img,
.ph-portrait > svg {
  display: block;
  inline-size: 100%;
  block-size: 100%;
  object-fit: cover;
}
.ph-portrait-fallback {
  display: grid;
  place-items: center;
  inline-size: 100%;
  block-size: 100%;
  font-size: calc(var(--ph-portrait-size) * 0.32);
  letter-spacing: 0.04em;
  color: var(--ink-muted);
}

.ph-person {
  display: grid;
  grid-template-columns: var(--ph-portrait-size) minmax(0, 1fr);
  column-gap: 1rem;
  align-items: start;
}
.ph-person-name {
  margin: 0;
  line-height: 1.2;
}
.ph-person-title {
  margin: 0.3rem 0 0;
  line-height: 1.45;
  color: var(--ink-secondary);
}

/* playingheaven-ui button (registry copy; edit in the registry) */
.ph-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  box-sizing: border-box;
  padding: 0.38em 0.8em;
  border: 1px solid var(--rule-strong);
  border-radius: var(--radius, 2px);
  background: var(--paper-raised);
  color: var(--ink-main);
  font-family: var(--sans, system-ui, sans-serif);
  font-size: 0.92rem;
  font-weight: 500;
  line-height: 1.3;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  user-select: none;
  transition: border-color 0.15s, background-color 0.15s, color 0.15s;
}
.ph-btn:hover {
  border-color: var(--ink-main);
}
.ph-btn:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
}
.ph-btn:disabled,
.ph-btn[aria-disabled="true"] {
  opacity: 0.5;
  pointer-events: none;
}
.ph-btn[aria-pressed="true"],
.ph-btn[aria-expanded="true"] {
  background: var(--mineral-wash);
  border-color: var(--mineral-main);
}
.ph-btn svg {
  width: 0.9em;
  height: 0.9em;
  flex: none;
  pointer-events: none;
}

.ph-btn[data-variant="outline"] {
  border-color: var(--mineral-soft);
  color: var(--mineral-text);
}
.ph-btn[data-variant="outline"]:hover {
  border-color: var(--mineral-main);
  background: var(--mineral-wash);
}

.ph-btn[data-variant="primary"] {
  border: 1.5px solid var(--ink-main);
  color: var(--ink-main);
}
.ph-btn[data-variant="primary"]:hover {
  background: var(--paper-deep);
}

.ph-btn[data-variant="ghost"] {
  border-color: transparent;
  background: transparent;
  color: var(--ink-secondary);
}
.ph-btn[data-variant="ghost"]:hover {
  border-color: var(--rule-strong);
  color: var(--ink-main);
}

.ph-btn[data-size="sm"] {
  padding: 0.28em 0.6em;
  font-size: 0.84rem;
}

.ph-btn-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.ph-btn[data-wrap] {
  white-space: normal;
  text-align: left;
}

/* Playing Heaven Talks: the deck.
   A presentation dialect of playingheaven.ai: the same paper, ink, lapis, rules, and type, given more room.
   Three modes share one markup. Present: a 1600 × 900 field scaled to the screen, one slide at a time.
   Read: the slides as a page that reflows. Print: every slide at its final state, one per 1600 × 900 page. */

/* ---------- tokens ---------- */
/* The palette (paper, ink, lapis, rules, focus, color-scheme, light and dark) is the playingheaven-ui registry's
   `tokens` item: build_talks.py writes src/styles/playingheaven-ui/tokens.css ahead of this file, so the deck's
   colours are Pivot's and the homepage's by construction, never a copy. Only the deck's type stacks live here; the one
   literal colour below is the paper plate under the crests in dark mode, as the homepage draws it. */
:root{--serif:"Source Serif 4","TW-Kai","TW-Kai Ext-B",Georgia,serif;--sans:"Source Sans 3","TW-Kai","TW-Kai Ext-B",system-ui,sans-serif;
 --mono:"IBM Plex Mono","TW-Kai","TW-Kai Ext-B",ui-monospace,Menlo,monospace;
 --zh:"Source Serif 4","TW-Kai","TW-Kai Ext-B",serif;--zh-ui:"Source Sans 3","TW-Kai","TW-Kai Ext-B",sans-serif}

*,*::before,*::after{box-sizing:border-box}
html{background:var(--paper-main);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper-main);color:var(--ink-main);font-family:var(--serif);font-kerning:normal;-webkit-font-smoothing:antialiased;
 font-variant-numeric:lining-nums proportional-nums}
a{color:var(--ink-main);text-decoration:underline;text-decoration-thickness:.06em;text-underline-offset:.16em;text-decoration-color:var(--mineral-soft)}
a:hover{text-decoration-color:var(--mineral-main)}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
[lang|="zh"],.zh{font-family:var(--zh)}
.skip{position:absolute;left:-999px;top:0;background:var(--paper-raised);padding:.5rem 1rem;z-index:90;font-family:var(--sans)}.skip:focus{left:1rem;top:1rem}

/* ---------- SVG vocabulary (talk_figures.py) ---------- */
.fig{display:block;width:100%;height:auto;overflow:visible}
.fig text{font-kerning:normal}
.s-ink{stroke:var(--ink-main)}.s-mut{stroke:var(--ink-muted)}.s-lap{stroke:var(--mineral-main)}.s-rule{stroke:var(--rule-strong)}
.f-ink{fill:var(--ink-main)}.f-mut{fill:var(--ink-muted)}.f-lap{fill:var(--mineral-main)}.f-raised{fill:var(--paper-raised)}
.dash{stroke-dasharray:5 4}
.t-sans{font-family:var(--sans)}.t-serif{font-family:var(--serif)}.t-mono{font-family:var(--mono)}.t-zh{font-family:var(--zh)}.t-zh-ui{font-family:var(--zh-ui)}
.t-it{font-family:var(--serif);font-style:italic}
.t-ink{fill:var(--ink-main)}.t-mut{fill:var(--ink-muted)}.t-sec{fill:var(--ink-secondary)}.t-lap{fill:var(--mineral-text)}
.t-strong{font-weight:600}
.t-lab{font-family:var(--sans);font-size:13.5px;letter-spacing:.09em;fill:var(--ink-muted);font-weight:500}
.t-lab.t-lap{fill:var(--mineral-text)}
.t-sm{font-size:17px}.t-xs{font-size:15px}.t-xxs{font-size:13px}
.t-num{font-size:46px;font-weight:500;font-variant-numeric:lining-nums tabular-nums}
.t-item{font-size:21px;font-weight:500}
.fo-q{margin:0;font-family:var(--sans);font-size:15.5px;line-height:1.35;color:var(--ink-secondary)}
.fig [data-from],.fig [data-until]{transition:opacity .5s cubic-bezier(.4,0,.2,1)}
.fig .is-off{opacity:0}
.fig .term{cursor:pointer;outline:none}
.fig .term .hit{fill:transparent}
.fig .term:hover .hit,.fig .term:focus-visible .hit{fill:var(--mineral-wash)}
.fig .term.sel .hit{fill:var(--mineral-wash);stroke:var(--mineral-soft);stroke-width:1}
.fig .term:focus-visible .hit{stroke:var(--focus);stroke-width:2}

/* ---------- the deck ---------- */
.deck{position:relative}
.slide{position:relative;background:var(--paper-main);color:var(--ink-main)}
.slide>.qr{position:absolute;top:8px;right:80px;z-index:5;display:block;box-sizing:content-box;width:120px;height:120px;padding:0;background:transparent;color:var(--ink-main);line-height:0}
.slide>.qr svg{display:block;width:100%;height:100%}
.deck[data-mode=read] .slide>.qr{display:none}
.slide .num{font-family:var(--mono);font-size:15px;color:var(--ink-muted);letter-spacing:.04em}
/* headings hold Source Serif 4's text optical size (opsz 28) rather than the narrow display cut the browser picks at
   heading sizes, and no negative tracking: the author found the display cut horizontally compressed (13 Oct 2026); the
   site's headings take the same (prod_shell.py) */
.slide h2{font-family:var(--serif);font-weight:500;letter-spacing:0;font-variation-settings:"opsz" 28;line-height:1.12;margin:0;text-wrap:balance}
.slide .lede{font-family:var(--serif);color:var(--ink-main);margin:0;text-wrap:pretty}
.slide .q{font-family:var(--serif);font-weight:600;margin:0;text-wrap:pretty}
.slide .kicker{font-family:var(--sans);color:var(--ink-secondary);letter-spacing:.01em;margin:0}
.label{font-family:var(--sans);font-size:13.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted)}
.label.lap{color:var(--mineral-text)}
.tag{display:inline-block;font-family:var(--sans);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.15em .5em;border:1px solid currentColor;border-radius:2px;line-height:1.3}
.tag.model{color:var(--mineral-text)}.tag.dev{color:var(--ink-secondary);border-style:dashed}.tag.schem{color:var(--ink-muted)}
.foot{font-family:var(--sans);color:var(--ink-muted)}
.foot p{margin:0}
.foot a{color:var(--ink-secondary)}
.out{font-family:var(--sans);font-size:15px;font-weight:500;color:var(--mineral-text);text-decoration:none;border:1px solid var(--mineral-soft);border-radius:2px;padding:.3em .65em;white-space:nowrap;display:inline-flex;align-items:center;gap:.4em;background:var(--paper-raised)}
.out:hover{border-color:var(--mineral-main);background:var(--mineral-wash)}
.out svg{width:14px;height:14px}
.out .url{display:none}
.shot{position:relative;margin:0}
.shot img{display:block;width:100%;height:auto;border:1px solid var(--rule-strong);background:#fff}
.shot figcaption{font-family:var(--sans);font-size:13px;color:var(--ink-muted);margin-top:6px;line-height:1.35}
.shot .live{position:absolute;right:8px;top:8px}
.prov{font-family:var(--sans);font-size:13px;color:var(--ink-muted);line-height:1.4}
.mono{font-family:var(--mono)}
.panel{background:var(--paper-raised);border:1px solid var(--rule);border-left:2px solid var(--mineral-main);font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--ink-main)}
.panel .bar{display:flex;justify-content:space-between;gap:1em;padding:6px 12px;border-bottom:1px solid var(--rule);color:var(--ink-muted);font-size:12.5px}
.panel .body{padding:10px 14px}
.panel p{margin:0 0 .45em}
.panel b{font-weight:600}
.panel .n{color:var(--ink-muted);margin-right:.3em}
.panel .dir{font-family:var(--sans);font-size:12.5px;letter-spacing:.06em;color:var(--mineral-text);text-transform:uppercase}

/* ---------- present: a 1600 × 900 field, scaled to the window ---------- */
.deck[data-mode=present]{position:fixed;inset:0;overflow:hidden;background:var(--paper-main)}
.deck[data-mode=present] .stage{position:absolute;left:50%;top:50%;width:1600px;height:900px;transform:translate(-50%,-50%) scale(var(--s,1));transform-origin:center}
.deck[data-mode=present] .slide{position:absolute;inset:0;width:1600px;height:900px;overflow:hidden;visibility:hidden;opacity:0;transition:opacity .35s ease,visibility 0s .35s}
.deck[data-mode=present] .slide.on{visibility:visible;opacity:1;transition:opacity .35s ease}
@media (prefers-reduced-motion:reduce){.deck .slide,.fig [data-from],.fig [data-until]{transition:none!important}}
html[data-motion=reduce] .deck .slide,html[data-motion=reduce] .fig [data-from]{transition:none!important}

/* the slide's grid at 1600 × 900: a gutter for the number, a field, a foot */
/* the head and foot rhythm, one for every slide (the author, 13 Oct 2026): the title alone on one line at 44px, 60px from the
   top and 34px over the field; the foot 14px under its rule and 40px from the bottom; no section label */
.deck:not([data-mode=read]) .slide{display:grid;grid-template-columns:72px 1fr;grid-template-rows:auto 1fr auto;padding:60px 80px 40px 24px;column-gap:0}
.deck:not([data-mode=read]) .slide>.num{grid-column:1;grid-row:1;padding-top:13px;text-align:right;padding-right:18px}
.deck:not([data-mode=read]) .slide>.head{grid-column:2;grid-row:1;margin-bottom:34px}
.deck:not([data-mode=read]) .slide>.field{grid-column:2;grid-row:2;position:relative;min-height:0}
.deck:not([data-mode=read]) .slide>.foot{grid-column:2;grid-row:3;display:flex;gap:28px;align-items:flex-end;justify-content:space-between;font-size:13.5px;line-height:1.4;padding-top:14px;border-top:1px solid var(--rule)}
.deck:not([data-mode=read]) .slide>.foot .cite{max-width:1180px}
.s-experiments .foot .cite p{font-family:var(--serif);font-size:17px;color:var(--ink-main)}
.deck:not([data-mode=read]) .slide>.foot .acts{display:flex;gap:10px;flex:none}
.deck:not([data-mode=read]) .slide h2{font-size:44px;white-space:nowrap}
.deck:not([data-mode=read]) .slide .lede{font-size:26px;line-height:1.42}
.deck:not([data-mode=read]) .slide .q{font-size:27px;line-height:1.36}
.deck:not([data-mode=read]) .slide .kicker{font-size:18px}

/* ---------- the section identifier: the research aim a slide takes up ---------- */
.slide .head{display:block}
.slide .sec{font-family:var(--sans);font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);white-space:nowrap;padding-bottom:6px}
.slide .sec b{font-family:var(--mono);font-weight:500;color:var(--mineral-text);letter-spacing:.04em}
.deck:not([data-mode=read]) .slide .head h2{padding-top:6px}
.mq{margin:0;border-left:2px solid var(--mineral-main);padding:6px 0 6px 16px}
.mq p{font-family:var(--serif);margin:0 0 6px;line-height:1.38;text-wrap:pretty}
.mq footer{font-family:var(--sans);font-size:13px;color:var(--ink-muted);line-height:1.35}
.mq footer .tag{margin-right:.5em;vertical-align:1px}

/* ---------- title ---------- */
.s-title{overflow:hidden}
.s-title .bamboo{position:absolute;inset:0;background:url(../img/bamboo-ground-light.svg) right top/cover no-repeat;opacity:.95;pointer-events:none}
:root[data-theme=dark] .s-title .bamboo{background-image:url(../img/bamboo-ground-dark.svg)}
/* one column at 1600 × 900: the title block 196px from the top and 150px from the left, then the foot, which follows the
   team in the flow with whatever room is left above it, so a longer team can push the foot down but never run under
   it (27 Oct 2026: with the foot placed absolutely, ten people on the People page put the universities' captions
   under the foot's hairline); build_talks.py title_rows() keeps the team short enough that the foot stays where it is,
   its hairline at 802px and its baseline 54px over the slide's edge */
.deck:not([data-mode=read]) .s-title{display:flex;flex-direction:column;padding:196px 80px 54px 150px}
.deck:not([data-mode=read]) .s-title .tblock{position:relative;display:grid;grid-template-columns:150px auto;column-gap:44px;align-items:start}
.s-title .markbox{position:relative;display:block;width:150px;height:150px}
.s-title .a1{width:150px;height:150px;color:var(--ink-main);display:block}
.s-title .replay{position:absolute;left:0;bottom:-34px;width:28px;height:28px;display:grid;place-items:center;font-family:var(--sans);font-size:17px;color:var(--ink-muted);opacity:.45;border-radius:2px}
.s-title .replay:hover,.s-title .replay:focus-visible{opacity:1;background:var(--mineral-wash);color:var(--mineral-text)}
.s-title h1{font-family:var(--serif);font-weight:500;font-size:96px;letter-spacing:0;font-variation-settings:"opsz" 32;line-height:1;margin:6px 0 18px}
.s-title .sub{font-family:var(--serif);font-size:34px;color:var(--ink-secondary);line-height:1.25;margin:0 0 44px;max-width:960px}
/* the team, as the People page lists it: each member as the registry's Person (playingheaven-ui portrait-css), the
   portrait in its frame and the name beside it; the first university's members two to a row, the others' one; the
   groups parted by hairlines, each captioned at the foot with its crest and name, the captions on one line; the
   presenters marked under their names. The rows share a fixed height: up to two rows the portraits are 104px (the
   14 Oct design, seven people), three rows take 80px portraits and closer rows (ten people, 27 Oct). build_talks.py
   writes data-rows and holds TITLE_ROWS to these same numbers; a roster that needs a row count with no rule here
   stops the build */
.s-title .team{--tt-portrait:104px;--tt-row-gap:18px;--tt-over-caption:24px}
.deck:not([data-mode=read]) .s-title .team[data-rows="3"]{--tt-portrait:80px;--tt-row-gap:14px;--tt-over-caption:20px}
.s-title .team{display:flex;align-items:stretch;margin:0}
.s-title .grp{display:flex;flex-direction:column;padding:0 26px;border-left:1px solid var(--rule)}
.s-title .grp:first-child{padding-left:0;border-left:0}.s-title .grp:last-child{padding-right:0}
.s-title .ppl{list-style:none;margin:0;padding:0 0 var(--tt-over-caption);display:grid;grid-template-columns:repeat(2,250px);gap:var(--tt-row-gap) 20px;align-content:start}
.s-title .grp:nth-child(n+2) .ppl{grid-template-columns:250px}
.s-title .ph-person,.s-title .ph-portrait{--ph-portrait-size:var(--tt-portrait)}
.s-title .ph-person{column-gap:14px}
.s-title .ph-person>div{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.s-title .who{font-family:var(--serif);font-size:17px;line-height:1.2;margin-top:2px;text-wrap:balance}.s-title .who .nb{white-space:nowrap}
.s-title .spk{font-family:var(--sans);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mineral-text);margin-top:7px}
.s-title .inst{display:flex;align-items:flex-start;gap:10px;margin:0;padding-top:14px;border-top:1px solid var(--rule);font-family:var(--sans);font-size:13.5px;line-height:1.3;color:var(--ink-secondary);margin-top:auto}
.s-title .inst .crest{height:36px;width:auto;flex:none;display:block;opacity:.92}
.s-title .inst span{max-width:200px;padding-top:1px}
.s-title .tfoot{font-family:var(--sans);border-top:1px solid var(--rule);padding-top:16px}
.deck:not([data-mode=read]) .s-title .tfoot{margin:auto 0 0 194px}
.s-title .perm{margin:0;display:flex;justify-content:space-between;align-items:center;gap:40px}
.s-title .perm .seps{align-items:center;row-gap:6px}
.s-title .perm .wm{height:26px;width:auto;display:block;opacity:.92}
.s-title .perm .wm-dark{display:none}:root[data-theme=dark] .s-title .perm .wm{display:none}:root[data-theme=dark] .s-title .perm .wm-dark{display:block}
.s-title .perm a{font-size:19px;color:var(--mineral-text);text-decoration-color:var(--mineral-soft)}
/* the mark's entrance: the homepage's transition, as synth_common BASE_CSS draws it (duration, stagger, trace unchanged) */
.a1[data-entrance] .s{transform-box:view-box;transform-origin:37.4px 38px;animation:a1A var(--a1-dur,1.5s) cubic-bezier(.22,.61,.21,1) both}
@keyframes a1A{0%{transform:translate(var(--ix),var(--iy)) rotate(var(--ir));opacity:var(--io)}100%{transform:none;opacity:1}}
.a1[data-entrance] .tr{transform-box:view-box;transform-origin:37.4px 38px;transform:translate(var(--ix),var(--iy)) rotate(var(--ir));opacity:0;animation:a1trace calc(var(--a1-dur,1.5s) + 50ms) linear both}
@keyframes a1trace{0%{opacity:var(--a1-trace,.20)}70%{opacity:calc(var(--a1-trace,.20)*.6)}100%{opacity:0}}
.a1[data-entrance] .s-flank-lower,.a1[data-entrance] .tr-flank-lower{animation-delay:calc(var(--a1-stagger,90ms)*1)}
.a1[data-entrance] .s-flank-upper,.a1[data-entrance] .tr-flank-upper{animation-delay:calc(var(--a1-stagger,90ms)*2)}
.a1[data-entrance] .s-branch,.a1[data-entrance] .tr-branch{animation-delay:calc(var(--a1-stagger,90ms)*3)}
.a1:not([data-entrance]) .tr{display:none}
@media (prefers-reduced-motion:reduce){.a1[data-entrance] .s,.a1[data-entrance] .tr{animation:none}.a1[data-entrance] .tr{display:none}}
html[data-motion=reduce] .a1[data-entrance] .s,html[data-motion=reduce] .a1[data-entrance] .tr{animation:none}
html[data-motion=reduce] .a1[data-entrance] .tr{display:none}

/* ---------- slide 1 · four challenges, an accordion ----------
   One section open at a time; the open section has two states, keyed on the slide's data-step (deck.js sets it):
   k = 2s opens section s on its challenge, k = 2s + 1 reveals our approach while the challenge recedes. Heights
   reallocate by flex-grow and by a 0fr/1fr grid row on each paragraph, so nothing jumps; reduced motion cuts the
   transitions. Each section's glyph sits out of the flow at its right, small and quiet while the section is
   collapsed, full size while it is open; a glyph's second state (the disciplines' connections, the return to the
   passage, the readings judged) is a data-from mark at the section's approach, which deck.js resolves. Print, the
   overview's thumbnails and the editor's all-at-once show the four sections open, two by two, Challenge over Our
   Approach; reading mode stacks them. The teal is slide 2's philology strand (.s-orient --strand-phil). */
.s-aims{--strand-phil:#476F7E}
:root[data-theme=dark] .s-aims{--strand-phil:#7FA6B4}
.s-aims .fig .s-phil{stroke:var(--strand-phil)}.s-aims .fig .f-phil{fill:var(--strand-phil)}.s-aims .fig .t-phil{fill:var(--strand-phil)}
.deck:not([data-mode=read]) .s-aims .field{display:grid;grid-template-rows:1fr}
/* the four sections two by two in even cells: number, heading, the challenge, our approach, the drawing floated at
   the right of the text (the author, 13 and 14 Oct 2026). The challenge and the approach appear one by one, eight
   states: at state 2k the challenge of section k is in focus, at 2k+1 its approach, the challenge receding; the text
   in focus is set larger and its drawing larger, the rest compact. Print and the all-at-once views show everything. */
.s-aims ol.aims{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;align-content:stretch;column-gap:44px;row-gap:0;height:100%;min-height:0}
.s-aims ol.aims li{position:relative;display:grid;grid-template-columns:48px 1fr 170px;column-gap:18px;align-items:start;border-top:1px solid var(--rule);padding:12px 0 8px;min-height:0;overflow:hidden}
.s-aims ol.aims li:nth-child(-n+2){border-top:1.5px solid var(--ink-main)}
.s-aims .n b{font-family:var(--mono);font-weight:500;font-size:28px;color:var(--mineral-text);letter-spacing:.02em;line-height:1;display:block}
.s-aims h3{font-family:var(--serif);font-weight:500;font-size:20px;margin:0 0 6px;line-height:1.15}
.s-aims .txt{min-width:0}
.s-aims .ch,.s-aims .ap{display:block;margin-top:0}
.s-aims .ap{margin-top:8px}
.s-aims .lab{display:block;font-family:var(--sans);font-size:12px;letter-spacing:.04em;color:var(--ink-muted);margin-bottom:2px}
.s-aims .ap .lab{color:var(--mineral-text)}
.s-aims .txt p{font-family:var(--serif);font-size:11.5px;line-height:1.28;margin:0;max-width:none;text-wrap:pretty;color:var(--ink-secondary)}
.s-aims .txt p b{font-weight:600}
.s-aims .txt p i{font-style:italic}
.s-aims .pic{position:static;float:none;margin:6px 0 0;pointer-events:none;justify-self:end}
.s-aims .pic .fig{width:170px;height:auto;display:block}
/* the deck's states (deck.js, aims): the spotlight, a plate over the field with the section large; the placed
   sections small in their cells beneath, dimmed while a spotlight is up; a section's flight to its cell is a FLIP */
.deck[data-mode=present] .s-aims:not([data-all]) li.hero{position:absolute;left:60px;right:60px;top:0;bottom:0;margin:auto 0;height:max-content;z-index:3;grid-template-columns:84px 1fr 440px;column-gap:34px;padding:30px 40px 30px 36px;will-change:transform,opacity;background:var(--paper-raised);border:1px solid var(--rule);border-top:1.5px solid var(--ink-main);box-shadow:0 12px 40px rgba(46,49,52,.10);overflow:visible;animation:heroIn .5s cubic-bezier(.22,.61,.21,1) .3s both}
@keyframes heroIn{from{opacity:0;translate:0 18px}to{opacity:1;translate:0 0}}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .n b{font-size:44px;color:var(--mineral-text)}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero h3{font-size:34px;margin-bottom:12px;color:var(--ink-main)}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .lab{font-size:14px;margin-bottom:4px}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .txt p{font-size:19px;line-height:1.42;color:var(--ink-main);max-width:none}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .ap{margin-top:14px}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .pic{margin:0;align-self:center}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .pic .fig{width:440px}
/* in the spotlight the approach is absent until its state; when it is in focus the challenge recedes */
.deck[data-mode=present] .s-aims:not([data-all]) li.hero .ap.is-off{display:none}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero:has(.ap.cur) .ch p{font-size:16px;color:var(--ink-secondary)}
.deck[data-mode=present] .s-aims:not([data-all]) li.hero:has(.ap.cur) .ch .lab{color:var(--ink-muted)}
/* the placed sections: small, both texts, in their cells; dimmed under a spotlight */
.deck[data-mode=present] .s-aims:not([data-all]) li.placed{transition:opacity .45s}
.deck[data-mode=present] .s-aims:not([data-all]) .spot li.placed{opacity:.38}
.deck[data-mode=present] .s-aims:not([data-all]) li.placed .ap.is-off{display:block;opacity:1}
.deck[data-mode=present] .s-aims:not([data-all]) li.placed .txt p{color:var(--ink-main)}
.deck[data-mode=present] .s-aims:not([data-all]) li.placed .n b{color:var(--mineral-text)}
.deck[data-mode=present] .s-aims:not([data-all]) li.placed h3{color:var(--ink-main)}
@media (prefers-reduced-motion:reduce){.s-aims li.hero{animation:none!important}.s-aims li{transition:none!important}}
html[data-motion=reduce] .s-aims li.hero{animation:none!important}
/* print and the all-at-once views: everything, at the reading size, the rows as tall as they need */
html.print .deck[data-mode] .s-aims[data-steps] ol.aims,.deck[data-mode=present] .s-aims[data-all] ol.aims{grid-template-rows:auto auto;align-content:start}
html.print .deck[data-mode] .s-aims[data-steps] ol.aims li,.deck[data-mode=present] .s-aims[data-all] ol.aims li{overflow:visible;grid-template-columns:48px 1fr 200px;column-gap:18px;padding:10px 0 6px}
html.print .deck[data-mode] .s-aims[data-steps] .txt p,.deck[data-mode=present] .s-aims[data-all] .txt p{font-size:12.5px!important;line-height:1.3!important;color:var(--ink-main)!important}
html.print .deck[data-mode] .s-aims[data-steps] .pic .fig,.deck[data-mode=present] .s-aims[data-all] .pic .fig{width:200px!important}
html.print .deck[data-mode] .s-aims[data-steps] .n b,.deck[data-mode=present] .s-aims[data-all] .n b{color:var(--mineral-text)!important}
html.print .deck[data-mode] .s-aims[data-steps] h3,.deck[data-mode=present] .s-aims[data-all] h3{color:var(--ink-main)!important;font-size:19px;margin-bottom:4px}
@media (prefers-reduced-motion:reduce){.s-aims ol.aims li,.s-aims .n b,.s-aims h3,.s-aims .ch,.s-aims .ap,.s-aims .lab,.s-aims .txt p,.s-aims .pic,.s-aims .pic .fig,.s-aims .pic .g-lab{transition:none!important}}
html[data-motion=reduce] .s-aims ol.aims li,html[data-motion=reduce] .s-aims .n b,html[data-motion=reduce] .s-aims h3,html[data-motion=reduce] .s-aims .ch,html[data-motion=reduce] .s-aims .ap,html[data-motion=reduce] .s-aims .lab,html[data-motion=reduce] .s-aims .txt p,html[data-motion=reduce] .s-aims .pic,html[data-motion=reduce] .s-aims .pic .fig,html[data-motion=reduce] .s-aims .pic .g-lab{transition:none!important}

/* ---------- common to the revised slides: the lede, the body, a label line ---------- */
.deck:not([data-mode=read]) .slide .top{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;align-items:start}
.deck:not([data-mode=read]) .slide .top .lede{font-size:24px;line-height:1.36;margin:0;font-weight:500;text-wrap:pretty}
.deck:not([data-mode=read]) .slide .top .body,.deck:not([data-mode=read]) .slide p.body{font-family:var(--serif);font-size:18.5px;line-height:1.4;margin:0;color:var(--ink-secondary);text-wrap:pretty}
.slide .ops ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);column-gap:34px;position:relative}
.slide .ops li{border-top:1.5px solid var(--ink-main);padding-top:8px;position:relative;font-family:var(--sans)}
.slide .ops li+li::before{content:"→";position:absolute;left:-26px;top:6px;color:var(--mineral-main);font-size:18px}
.slide .ops li:last-child{border-top-color:var(--mineral-main)}
.slide .ops .k{display:block;font-weight:600;font-size:16px;color:var(--ink-main);margin-bottom:3px}
.slide .ops .t{display:block;font-size:14px;color:var(--ink-secondary);line-height:1.35}
.slide .ops .note{font-family:var(--sans);font-size:14px;color:var(--ink-muted);margin:8px 0 0;line-height:1.35}

/* ---------- slide 2 · Manchu, source-image led ---------- */
/* ---------- slide 3 · the page, the two paragraphs, one result strip (14 Oct 2026) ---------- */
.deck:not([data-mode=read]) .s-manchu .field{display:grid;grid-template-columns:1010px 1fr;grid-template-rows:1fr auto;column-gap:44px;row-gap:18px;align-items:start}
.deck:not([data-mode=read]) .s-manchu .left{grid-column:1;grid-row:1;min-width:0}
.s-manchu .sketch{margin:0}
.s-manchu .sketch img{display:block;width:1010px;max-width:100%;height:auto;border:1px solid var(--rule)}
.s-manchu .sketch img.dark{display:none}
:root[data-theme=dark] .s-manchu .sketch img.dark{display:block}:root[data-theme=dark] .s-manchu .sketch img.light{display:none}
.deck:not([data-mode=read]) .s-manchu .right{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:13px;min-width:0;padding-top:0}
.deck:not([data-mode=read]) .s-manchu .right .lede{font-size:18px;line-height:1.4;margin:0;font-weight:500}
.deck:not([data-mode=read]) .s-manchu .right .body{font-size:16.5px;line-height:1.4;margin:0;color:var(--ink-secondary)}
.s-manchu .right .mark{display:block;line-height:0;margin-bottom:0}
.s-manchu .right .go{margin:0}
.s-manchu .right .go .out .url{display:none}
/* the result strip: one grid across the field, every group centred on the strip's axis; the model group parted
   from the accuracy group by a hairline the height of the content; the seal at the end */
.s-manchu .result{grid-column:1/span 2;grid-row:2;display:grid;grid-template-columns:auto auto 1fr;column-gap:32px;align-items:center;border-top:1.5px solid var(--ink-main);padding-top:14px}
.s-manchu .result .val{font-family:var(--serif);font-size:80px;line-height:1;color:var(--mineral-text);font-variant-numeric:lining-nums;letter-spacing:-.01em}
.s-manchu .result .what{display:flex;flex-direction:column;gap:4px;justify-content:center}
.s-manchu .result .metric{display:block;font-family:var(--serif);font-size:24px;color:var(--ink-main);line-height:1.2}
.s-manchu .result .material{display:block;font-family:var(--sans);font-size:15px;color:var(--ink-secondary);line-height:1.3}
.s-manchu .result .model{display:flex;flex-direction:column;gap:4px;justify-content:center;border-left:1px solid var(--rule-strong);padding-left:28px;font-family:var(--sans);line-height:1.3;align-self:stretch}
.s-manchu .result .model .name{font-size:18px;font-weight:600;color:var(--ink-main)}
.s-manchu .result .model .note{font-size:15px;color:var(--ink-secondary)}
.s-manchu .result .model .credit{font-size:14px;color:var(--ink-muted);margin-top:2px}
.s-manchu .seal{display:block;width:72px;height:72px}
.s-manchu .seal.dark{display:none}
:root[data-theme=dark] .s-manchu .seal.dark{display:block}:root[data-theme=dark] .s-manchu .seal.light{display:none}
.s-manchu .result.is-off{opacity:0}.s-manchu .result{transition:opacity .5s cubic-bezier(.4,0,.2,1)}

/* ---------- slide 2 · the making and circulation of Neo-Confucian traditions ---------- */
/* strand colours: ink for literary culture, lapis for the Learning of the Way (its lighter shade for the Learning of
   the Mind), the site's teal mineral (tools/tokens.py, the homepage's light tokens) for philology and evidential
   scholarship, its warm rule-strong for the translation projects; the map's polities take the same five values */
/* the polities' colours are the persons' colours (the author, 13 Oct 2026): ink for the Qing and the Chinese figures,
   the warm ink for Chosŏn and the Koreans, teal for Tokugawa Japan and Sorai; Ryūkyū takes the light warm and Đại Việt,
   with no person on the chronology, the lapis (the author flipped Chosŏn and Đại Việt, 13 Oct 2026). A person's strand is where they stand, so colour is free to mean the polity. */
.s-orient{--strand-lit:var(--ink-main);--strand-dao:var(--mineral-main);--strand-xin:var(--mineral-text);--strand-phil:#476F7E;--strand-kz:#3B6270;--accent-warm:#B7A992;--accent-warm-ink:#7f7059;
 --pol-qing:var(--ink-muted);--pol-choson:#7f7059;--pol-tokugawa:#476F7E;--pol-ryukyu:#A3B38A;--pol-ryukyu-ink:#66774C;--pol-daiviet:var(--mineral-main);--strand-jes:#8C5A6B}
:root[data-theme=dark] .s-orient{--strand-phil:#7FA6B4;--strand-kz:#8FB3C0;--accent-warm:#CFC7B9;--accent-warm-ink:#CFC7B9;--pol-tokugawa:#7FA6B4;--pol-ryukyu:#9FB08A;--pol-ryukyu-ink:#B9C7A2;--pol-choson:#B8B1A5;--strand-jes:#C49AAA}
.deck:not([data-mode=read]) .s-orient .field{display:grid;grid-template-rows:auto 1fr auto;row-gap:6px;align-content:start}
.s-orient .intro{font-family:var(--serif);font-size:16.5px;line-height:1.32;column-count:2;column-gap:44px;column-fill:balance;margin:0;color:var(--ink-secondary);text-wrap:pretty;max-width:1424px}
.s-orient .intro i{font-style:italic}
.s-orient .mid{display:grid;grid-template-columns:880px 500px;column-gap:44px;align-items:start}
.s-orient .tlwrap svg{display:block;width:880px;height:auto}
.s-orient .rightcol{display:flex;flex-direction:column;gap:10px}
.s-orient .mapwrap{margin:0}
.s-orient .mapwrap svg{display:block;width:500px;height:auto}
/* the two compilations beneath the map: title row, band, note */
.s-orient .comps{display:flex;flex-direction:column;gap:6px}
.s-orient .comp .ct{margin:0 0 3px;font-family:var(--serif);font-size:14.5px;line-height:1.25;color:var(--ink-main);display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.s-orient .comp .ct b{font-weight:600}.s-orient .comp .ct .ti{font-size:13.5px;color:var(--ink-secondary)}.s-orient .comp .ct i{font-style:italic}
.s-orient .comp svg{display:block;width:500px;height:10px}
.s-orient .comp .cn{margin:3px 0 0;font-family:var(--sans);font-size:12.5px;line-height:1.3;color:var(--ink-muted)}
.s-orient .fig.field .fv{fill:var(--paper-deep);stroke:var(--rule-strong);stroke-width:.6}
.s-orient figcaption{font-family:var(--sans);font-size:13.5px;line-height:1.38;color:var(--ink-secondary);margin-top:8px}
.s-orient .fig.field .fa{fill:var(--ink-muted);fill-opacity:.75}.s-orient .fig.field .fb{fill:var(--mineral-main);fill-opacity:.8}
.s-orient .fig .st-lit{stop-color:var(--strand-lit)}.s-orient .fig .st-dao{stop-color:var(--strand-dao)}.s-orient .fig .st-xin{stop-color:var(--strand-xin)}
.s-orient .fig .st-phil{stop-color:var(--strand-phil)}.s-orient .fig .st-kz{stop-color:var(--strand-kz)}
.s-orient .fig .s-phil{stroke:var(--strand-phil)}.s-orient .fig .f-phil{fill:var(--strand-phil)}.s-orient .fig .t-phil{fill:var(--strand-kz)}
.s-orient .fig.tl .t-dao{fill:var(--mineral-text)}
.s-orient .fig.map .pl-qing{fill:var(--ink-main)}.s-orient .fig.map .pl-daiviet{fill:var(--mineral-text)}.s-orient .fig.map .pl-tokugawa{fill:var(--strand-kz)}
.s-orient .fig.map .pl-choson{fill:var(--accent-warm-ink)}.s-orient .fig.map .pl-ryukyu{fill:var(--pol-ryukyu-ink)}
.s-orient .fig.map .pl-jesuit{fill:var(--strand-jes)}.s-orient .fig.map .route{stroke:var(--strand-jes)}
.s-orient .fig .st-jes{stop-color:var(--strand-jes)}.s-orient .fig .s-jes{stroke:var(--strand-jes)}.s-orient .fig .f-jes{fill:var(--strand-jes)}.s-orient .fig .t-jes{fill:var(--strand-jes)}
.s-orient .fig.map .jmark{fill:var(--strand-jes);stroke:none}
.s-orient .fig .f-warm{fill:var(--accent-warm-ink)}.s-orient .fig .t-warm{fill:var(--accent-warm-ink)}
.s-orient .fig.map .sea{fill:var(--mineral-wash)}
.s-orient .fig.map .cap{fill:var(--ink-main);stroke:var(--paper-main);stroke-width:1}
.s-orient .fig .tmark{fill:var(--accent-warm);stroke:var(--ink-main);stroke-width:1.4}.s-orient .fig .s-warm{stroke:var(--accent-warm-ink)}
.s-orient .fig .tmark-dot{fill:var(--accent-warm);stroke:var(--ink-main);stroke-width:1}
.s-orient .fig.tl text:not(.bl){paint-order:stroke;stroke:var(--paper-main);stroke-width:4px;stroke-linejoin:round}
.s-orient .fig.map text{paint-order:stroke;stroke:var(--paper-main);stroke-width:3px;stroke-linejoin:round}.s-orient .fig.map text .t-zh{font-weight:500}
.s-orient .fig .land{fill:var(--paper-raised);stroke:none}.s-orient .fig .coast{stroke:var(--ink-muted)}
.s-orient .fig .pol{stroke:none}.s-orient .fig .pol-qing{fill:var(--pol-qing);fill-opacity:.3}.s-orient .fig .pol-choson{fill:var(--pol-choson);fill-opacity:.42}
.s-orient .fig .pol-tokugawa{fill:var(--pol-tokugawa);fill-opacity:.42}.s-orient .fig .pol-ryukyu{fill:var(--pol-ryukyu);fill-opacity:.95}.s-orient .fig .pol-daiviet{fill:var(--pol-daiviet);fill-opacity:.5}
.s-orient [data-from]{transition:opacity .5s cubic-bezier(.4,0,.2,1)}
.s-orient [data-from].is-off{opacity:0}
@media (prefers-reduced-motion:reduce){.s-orient [data-from]{transition:none!important}}
html[data-motion=reduce] .s-orient [data-from]{transition:none!important}
/* reading mode */
.deck[data-mode=read] .s-orient .mid{display:block}
.deck[data-mode=read] .s-orient .tlwrap svg,.deck[data-mode=read] .s-orient .mapwrap svg,.deck[data-mode=read] .s-orient .comp svg{width:100%;max-width:900px}
.deck[data-mode=read] .s-orient .rightcol{margin-top:1.2rem;max-width:560px}
.deck[data-mode=read] .s-orient .intro{font-size:1.1rem;line-height:1.55;margin-bottom:1rem}
.deck[data-mode=read] 
/* ---------- slide 3 · the two editions, term by term; one character cell for every Chinese term ---------- */
.deck:not([data-mode=read]) .s-census .field{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto;row-gap:14px;align-content:start}
.deck:not([data-mode=read]) .s-census .top{display:block}
.deck:not([data-mode=read]) .s-census .top .body{font-size:18px;line-height:1.42;color:var(--ink-main);max-width:none;margin:0;text-wrap:pretty;column-count:2;column-gap:44px;column-fill:balance}
.s-census .srcblock{border-top:1px solid var(--rule);padding-top:14px;margin-top:10px}
.s-census .srch{margin:0 0 6px;font-family:var(--serif);font-size:17px;font-weight:600;color:var(--ink-main)}.s-census .srch i{font-style:italic}
.s-census .src{display:grid;grid-template-columns:auto 1fr;column-gap:24px;align-items:baseline;margin:0;font-family:var(--sans);font-size:15px;color:var(--ink-secondary)}
.s-census .src .zh{font-family:var(--zh);font-size:27px;color:var(--ink-main)}
.s-census .src .en{font-family:var(--serif);font-size:17px}
.s-census .cmp{display:grid;grid-template-columns:150px 1fr;column-gap:20px;align-items:stretch;align-self:center}
.s-census .cmp .rows{display:grid;grid-template-rows:1fr auto 1fr;align-items:center;font-family:var(--sans);font-size:14.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}
.s-census .cmp .rows span:nth-child(2){text-transform:none;letter-spacing:0;font-size:14.5px;padding:30px 0;color:var(--ink-secondary)}
/* the cell: --em is the glyph size, --pad the clearance around the em box, --stem the connector's height; the cell's
   outer size is computed from these, never from the font's advance or line metrics, so a fallback CJK font changes
   nothing but the glyph; the connectors meet the cell at the same edge in every column */
.s-census ol.terms{--em:68px;--pad:22px;--stem:92px;list-style:none;margin:0;padding:0;display:flex;justify-content:space-between;gap:10px}
.s-census ol.terms li{display:grid;grid-template-rows:auto var(--stem) calc(var(--em) + 2*var(--pad)) var(--stem) auto;padding:12px 0;justify-items:center;align-items:center;min-width:92px;text-align:center}
.s-census ol.terms .r{font-family:var(--serif);font-size:33px;color:var(--ink-main);line-height:1.2;display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:5px 12px;border-radius:3px;transition:background .45s,box-shadow .45s}
.s-census ol.terms .r.rk{align-self:end}.s-census ol.terms .r.rq{align-self:start}
.s-census ol.terms .r .g{font-family:var(--sans);font-size:16px;color:var(--ink-muted);font-style:normal;opacity:0;transition:opacity .45s}
.s-census ol.terms .line{width:0;height:100%;border-left:1px solid var(--ink-main)}
.s-census ol.terms .cell{position:relative;display:inline-grid;place-items:center;box-sizing:border-box;width:calc(var(--n,1)*var(--em) + 2*var(--pad));height:calc(var(--em) + 2*var(--pad));padding:0;margin:0;font-family:var(--zh);font-size:var(--em);line-height:1;letter-spacing:0;white-space:nowrap;color:var(--ink-main)}
.s-census ol.terms .cell::before{content:"";position:absolute;inset:0;border:1px solid var(--ink-main);border-radius:2px;pointer-events:none}
.s-census ol.terms li[data-key=zy]{min-width:250px}      /* room for kungdzi hendume on one line */
.s-census ol.terms .r i{white-space:nowrap}
.s-census ol.terms li.gram .r{color:var(--ink-muted)}
.s-census ol.terms li.gram .cell{color:var(--ink-muted)}
.s-census ol.terms li.gram .cell::before{border-style:dashed;border-color:var(--ink-muted)}
.s-census ol.terms li.gram .line{border-left-style:dashed;border-left-color:var(--ink-muted)}
.s-census ol.terms li.changed .r{color:var(--mineral-text);font-weight:600}
.s-census ol.terms li.changed .cell{color:var(--mineral-text)}
.s-census ol.terms li.changed .cell::before{border-width:2px;border-color:var(--mineral-main)}
.s-census ol.terms li.changed .line{border-left:2px solid var(--mineral-main)}
/* the washes and glosses on the second state, and whenever every state is shown at once */
/* the reveal (the brief of 14 Oct 2026): state 0 neutral; 1 holds 子曰 up with its two glosses; 2 holds 志 up, 子曰 keeping its wash; 3 both; print and reading show both */
.s-census ol.terms li.changed .r{transition:background .45s,box-shadow .45s,transform .45s cubic-bezier(.4,0,.2,1)}
.s-census[data-steps="0"] li.changed .r,.s-census[data-step="1"] li[data-key=zy] .r,.s-census[data-step="2"] li.changed .r,.s-census[data-step="3"] li.changed .r,html.print .s-census li.changed .r,.deck[data-mode=read] .s-census li.changed .r{background:var(--mineral-wash);box-shadow:inset 0 0 0 1px var(--mineral-pale)}
.s-census[data-steps="0"] li.changed .g,.s-census[data-step="1"] li[data-key=zy] .g,.s-census[data-step="2"] li.changed .g,.s-census[data-step="3"] li.changed .g,html.print .s-census ol.terms .g,.deck[data-mode=read] .s-census ol.terms .g{opacity:1}
.s-census[data-step="1"] li[data-key=zy] .r,.s-census[data-step="2"] li[data-key=zhi] .r{transform:scale(1.06)}
.s-census[data-step="0"]:not([data-steps="0"]) li.changed .r,.s-census[data-step="0"]:not([data-steps="0"]) li.changed .cell{color:var(--ink-main);font-weight:500}
.s-census[data-step="0"]:not([data-steps="0"]) li.changed .cell::before{border-color:var(--ink-main);border-width:1px}
.s-census[data-step="0"]:not([data-steps="0"]) li.changed .line{border-left:1px solid var(--ink-main)}
.s-census .legend{margin:0;font-family:var(--sans);font-size:15px;color:var(--ink-secondary);display:flex;gap:36px;padding-top:12px;border-top:1px solid var(--rule)}
.s-census .legend span::before{content:"";display:inline-block;width:28px;height:0;border-top:1px solid var(--ink-main);vertical-align:middle;margin-right:8px}
.s-census .legend .changed::before{border-top:2px solid var(--mineral-main)}
.s-census .legend .gram::before{border-top:1px dashed var(--ink-muted)}

/* ---------- slide 4 · transmission: three operations, one documented example ---------- */
.deck:not([data-mode=read]) .s-transmission .field{display:grid;grid-template-columns:1fr 640px;grid-template-rows:auto auto auto 1fr auto;column-gap:48px;row-gap:8px;align-content:start}
.s-transmission .top{grid-column:1/span 2}
.s-transmission ol.three{grid-column:1;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.s-transmission ol.three li{border-top:1px solid var(--rule);padding:7px 0 8px;display:grid;grid-template-columns:230px 1fr;column-gap:20px;align-items:start}
.s-transmission ol.three li:first-child{border-top:1.5px solid var(--ink-main)}
.s-transmission ol.three h3{font-family:var(--serif);font-weight:500;font-size:21px;margin:0;line-height:1.2}
.s-transmission ol.three p{font-family:var(--serif);font-size:15px;line-height:1.36;margin:0;color:var(--ink-secondary)}
.s-transmission ol.three .st{grid-column:1}
.s-transmission ol.three .st{font-family:var(--sans);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted)}
.s-transmission ol.three li.documented .st{color:var(--mineral-text)}
.s-transmission .opn{grid-column:1;font-family:var(--sans);font-size:14px;color:var(--ink-muted);margin:0}
.s-transmission .example{grid-column:2;grid-row:2/span 3;border-top:1.5px solid var(--mineral-main);padding-top:8px;display:flex;flex-direction:column;gap:4px;min-width:0}
.s-transmission .example .label{color:var(--mineral-text)}
.s-transmission .example h3{font-family:var(--serif);font-weight:500;font-size:20px;margin:0;line-height:1.25}
.s-transmission .example>p{font-family:var(--serif);font-size:15px;line-height:1.36;margin:0;color:var(--ink-secondary)}
.s-transmission .pairs{margin-top:4px}
.s-transmission .pairs .heads{display:grid;grid-template-columns:1fr 1fr;column-gap:30px;font-family:var(--sans);font-size:12.5px;color:var(--ink-muted);border-bottom:1px solid var(--rule);padding-bottom:3px}
.s-transmission .pairs ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:24px;row-gap:0}
.s-transmission .pairs li{display:grid;grid-template-columns:1fr 18px 1fr;align-items:center;column-gap:6px;font-family:var(--zh);font-size:15.5px;line-height:1.5;border-bottom:1px solid var(--rule)}
.s-transmission .pairs li a{color:var(--ink-main);text-decoration-color:var(--mineral-soft)}
.s-transmission .pairs li .missing{color:var(--ink-muted)}
.s-transmission .pairs li .tie{height:1px;background:var(--mineral-main)}
.s-transmission .pairs .pn{font-family:var(--sans);font-size:12.5px;color:var(--ink-muted);line-height:1.35;margin:6px 0 0}
.s-transmission .parallel{grid-column:1;grid-row:4;border-top:1px solid var(--rule);padding-top:6px;align-self:start}
.s-transmission .parallel p{font-family:var(--serif);font-size:15px;line-height:1.36;margin:2px 0 0;color:var(--ink-secondary)}
.s-transmission .line{grid-column:1/span 2;font-family:var(--serif);font-size:19px;color:var(--ink-main);margin:0;border-top:1px solid var(--rule);padding-top:8px}



/* ---------- slide 5 · agentic knowledge distillation (13 Oct 2026; the homepage's drawing, as slide 1's glyph draws it) ----------
   The two statements; the five panels on five columns (talk_figures.COLS5), the worked chain, the scale and the open
   comparison on the same columns beneath; the conclusion at the foot of the field. */
/* ---------- slide 5, Pivot 機: the diagram held up stage by stage, one demonstration panel beneath ---------- */
.deck:not([data-mode=read]) .s-distill .field{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr;row-gap:2px;align-content:start}
.deck:not([data-mode=read]) .s-distill .top{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;align-items:start}      /* two paragraphs, one a column (the author, 14 Oct 2026) */
.deck:not([data-mode=read]) .s-distill .top .lede,.deck:not([data-mode=read]) .s-distill .top .body{font-family:var(--serif);font-size:17px;line-height:1.34;margin:0;padding:0;max-width:none;font-weight:400;color:var(--ink-main);text-wrap:pretty}
.deck:not([data-mode=read]) .s-distill .top .body{font-family:var(--serif);font-size:17px;line-height:1.42;color:var(--ink-secondary);margin:0;padding-top:3px}
.s-distill .flow svg{display:block;width:1424px;height:auto}
.s-distill .flow .panel{transition:opacity .45s cubic-bezier(.4,0,.2,1)}
.deck[data-mode=present] .s-distill:not([data-all]) .flow .panel.dim{opacity:.34}
.s-distill ol.stages{list-style:none;margin:12px 0 0;padding:0;position:relative;height:36px}
.s-distill ol.stages li{position:absolute;top:0;left:calc(var(--cx) - 115px);width:230px;text-align:center}
.s-distill ol.stages .op{display:block;font-family:var(--sans);font-size:13px;line-height:1.35;color:var(--ink-secondary);margin:0;transition:color .45s}
.s-distill ol.stages li.dim .op{color:var(--ink-muted);opacity:.7}
/* the demonstration panel: one state at a time, the operation at the left, the record at the right */
.s-distill .demo{position:relative;border-top:1.5px solid var(--ink-main);margin-top:12px;min-height:190px}
.s-distill .demo .st{position:absolute;inset:0;display:grid;grid-template-columns:560px 1fr;column-gap:44px;padding-top:8px;align-items:start}
.s-distill .demo .st.is-off{pointer-events:none}
.s-distill .demo p{margin:0}
.s-distill .demo .kick{font-family:var(--serif);font-size:20px;line-height:1.25;color:var(--ink-main)}
.s-distill .demo .kick .sn{display:inline-block;font-family:var(--mono);font-size:15px;color:var(--mineral-text);margin-right:12px;vertical-align:2px}
.s-distill .demo .opl{font-family:var(--sans);font-size:14px;line-height:1.4;color:var(--ink-secondary);margin-top:6px}
.s-distill .demo .cmd{margin-top:12px;font-family:var(--mono);font-size:15px;line-height:1.5;color:var(--ink-main)}
.s-distill .demo .cmd code{display:inline-block;border:1px solid var(--rule-strong);border-radius:2px;background:var(--paper-raised);padding:4px 10px;min-height:1.5em;min-width:12ch;white-space:nowrap}
.s-distill .demo .cmd code::after{content:"";display:inline-block;width:1px;height:1em;background:var(--ink-main);vertical-align:-2px;margin-left:2px;opacity:.6}
.s-distill .demo .cmd code:not([data-typed])::after,html.print .s-distill .demo .cmd code::after{display:none}
.s-distill .demo .quote{margin-top:12px;font-family:var(--serif);font-size:15.5px;line-height:1.42;color:var(--ink-secondary);max-width:520px;text-wrap:pretty}
.s-distill .demo .quote .qw{display:block;font-family:var(--mono);font-size:12.5px;color:var(--ink-muted);margin-top:3px}
.s-distill .demo .r{border-left:1px solid var(--rule);padding-left:28px;min-height:150px}
.s-distill .demo .tagline{margin-bottom:8px}
.s-distill .demo .zh{font-family:var(--zh);font-size:25px;line-height:1.4;color:var(--ink-main)}
.s-distill .demo .en{font-family:var(--serif);font-size:17px;line-height:1.4;color:var(--ink-main);margin-top:4px;max-width:760px}
.s-distill .demo .from{font-family:var(--zh);font-size:16px;color:var(--ink-muted);margin-bottom:6px}
.s-distill .demo .lead{font-family:var(--serif);font-size:15px;color:var(--ink-secondary);margin-bottom:4px}
.s-distill .demo .txt{font-family:var(--serif);font-size:19px;line-height:1.42;color:var(--ink-main);max-width:760px;text-wrap:pretty}
.s-distill .demo .txt.open{color:var(--mineral-text)}
.s-distill .demo .claim{font-family:var(--serif);font-size:17px;line-height:1.4;color:var(--mineral-text);max-width:760px}
.s-distill .demo .arrow{font-family:var(--sans);font-size:16px;color:var(--mineral-soft);margin:2px 0 4px;line-height:1}
.s-distill .demo .who{font-family:var(--sans);font-size:13px;color:var(--ink-muted);margin-top:8px;line-height:1.35}
.tag.src{color:var(--ink-secondary);border-color:var(--rule-strong)}
/* the command line the simulation types: a prompt in the muted ink, the command in the mono with the tool name in lapis */
.s-distill .demo .cmd{margin-top:10px;font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--ink-main);display:flex;gap:8px;align-items:baseline;white-space:nowrap}
.s-distill .demo .cmd .ps{color:var(--ink-muted);font-size:13px;letter-spacing:.02em}
.s-distill .demo .cmd code{display:inline-block;border:0;background:none;padding:0;min-width:0;white-space:nowrap;color:var(--mineral-text)}
.s-distill .demo .cmd code::after{opacity:.5}
.s-distill .demo .opl{margin-top:8px}
.s-distill .demo .quote{margin-top:8px}
.s-distill .demo .secs{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.s-distill .demo .secs li{font-family:var(--serif);font-size:13.5px;line-height:1.25;color:var(--ink-secondary);display:flex;gap:10px;align-items:baseline}
.s-distill .demo .secs li.on{color:var(--ink-main);font-weight:500}
.s-distill .demo .secs .sq{font-family:var(--mono);font-size:12.5px;color:var(--mineral-text);min-width:1.6em}
.s-distill .demo .secs li.on .sq{font-weight:500}
.s-distill .demo .dims{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:28px;row-gap:6px}
.s-distill .demo .dims li{display:grid;grid-template-columns:auto 1fr;column-gap:10px;row-gap:2px;align-items:baseline;border-left:2px solid var(--mineral-main);padding-left:12px}
.s-distill .demo .dims .code{font-family:var(--mono);font-size:12.5px;color:var(--mineral-text);font-weight:500}
.s-distill .demo .dims .dn{font-family:var(--sans);font-size:14.5px;font-weight:600;color:var(--ink-main)}
.s-distill .demo .dims .dz{font-family:var(--zh);font-weight:400;color:var(--ink-secondary);margin-left:4px}
.s-distill .demo .dims .dc{grid-column:1/span 2;font-family:var(--serif);font-size:14.5px;line-height:1.34;color:var(--ink-secondary)}
.s-distill .demo .terms,.s-distill .demo .pairs{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px 8px}
.s-distill .demo .term,.s-distill .demo .pair{font-family:var(--sans);font-size:12.5px;color:var(--ink-secondary);border:1px solid var(--rule-strong);border-radius:2px;padding:2px 8px;background:var(--paper-raised)}
.s-distill .demo .term [lang],.s-distill .demo .pair [lang]{font-family:var(--zh);color:var(--ink-main);margin-right:4px}
.s-distill .demo .sub{font-family:var(--serif);font-size:15px;line-height:1.4;color:var(--ink-secondary);margin-top:6px;max-width:760px}
.s-distill .demo .txt.big{font-size:22px}
.s-distill .demo .chain{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.s-distill .demo .chain li{display:grid;grid-template-columns:200px 1fr;column-gap:14px;align-items:baseline;font-family:var(--serif);font-size:15px;color:var(--ink-main)}
.s-distill .demo .chain li+li .id::before{content:"↓  ";font-family:var(--sans);color:var(--mineral-soft);font-size:13px;white-space:pre}
.s-distill .demo .chain .id{font-family:var(--mono);font-size:13.5px;color:var(--mineral-text)}
.s-distill .demo .chain .what[lang]{font-family:var(--zh);font-size:18px}
.s-distill .flow .f-mut{fill:var(--ink-muted)}
html.print .s-distill .demo .st[data-print] .dims{grid-template-columns:1fr;row-gap:4px}
html.print .s-distill .demo .st[data-print] .terms,html.print .s-distill .demo .st[data-print] .cmd,html.print .s-distill .demo .st[data-print] .secs{display:none}
html.print .s-distill .demo .st[data-print] .dims .dc{font-size:13.5px}
html.print .s-distill .demo .st[data-print] .txt{font-size:14.5px}
html.print .s-distill .demo .st[data-print] .who{display:none}
html.print .s-distill .demo .st[data-print] .dims .dc{font-size:13px;line-height:1.3}
html.print .s-distill .demo .st[data-print] .dims li{row-gap:0}
html.print .s-distill .demo .st[data-print] .kick{font-size:17px}
html.print .s-distill .demo .st[data-print] .r{margin-top:4px}

/* print and the all-at-once views: three records side by side under the whole diagram */
html.print .s-distill .demo .st,.deck[data-mode=present] .s-distill[data-all] .demo .st{display:none}
html.print .s-distill .demo,.deck[data-mode=present] .s-distill[data-all] .demo{display:grid;grid-template-columns:1fr 1fr 1fr;column-gap:36px;min-height:0}
html.print .s-distill .demo .st[data-print],.deck[data-mode=present] .s-distill[data-all] .demo .st[data-print]{display:block!important;position:static;opacity:1!important;padding-top:12px}
html.print .s-distill .demo .st[data-print] .r,.deck[data-mode=present] .s-distill[data-all] .demo .st[data-print] .r{border-left:0;padding-left:0;margin-top:8px;min-height:0}
html.print .s-distill .demo .st[data-print] .kick{font-size:18px}html.print .s-distill .demo .st[data-print] .zh{font-size:21px}html.print .s-distill .demo .st[data-print] .en,html.print .s-distill .demo .st[data-print] .txt{font-size:15px}
/* the playback controls, in the foot */
.foot .playctl{display:flex;align-items:center;gap:18px;font-family:var(--sans);font-size:13px;color:var(--ink-muted)}
.foot .playctl .plab{letter-spacing:.06em;text-transform:uppercase;font-size:11.5px}
.foot .playctl .pbtns{display:inline-flex;gap:4px}
.foot .playctl button{width:30px;height:26px;border:1px solid var(--rule-strong);border-radius:2px;background:var(--paper-raised);color:var(--ink-secondary);font-family:var(--sans);font-size:15px;line-height:1;display:grid;place-items:center;cursor:pointer}
.foot .playctl button:hover,.foot .playctl button:focus-visible{color:var(--mineral-text);border-color:var(--mineral-soft)}
.foot .playctl button[data-act=play][aria-pressed=true]{color:var(--mineral-text);background:var(--mineral-wash);border-color:var(--mineral-soft)}
.foot .playctl button svg{width:12px;height:12px;display:block}
.foot .playctl button .i-pause,.foot .playctl button[aria-pressed=true] .i-play{display:none}
.foot .playctl button[aria-pressed=true] .i-pause{display:block}
.foot .playctl .pstate{display:inline-flex;gap:10px;align-items:baseline}
.foot .playctl .playk{font-family:var(--mono);font-size:12.5px;color:var(--ink-secondary)}
.foot .playctl .playname{color:var(--ink-main)}
html.print .playctl,.deck[data-mode=read] .playctl{display:none}
/* ---------- slide 6, Pivot Debate: the recorded debate replayed in the room's own terms ---------- */
.deck:not([data-mode=read]) .s-wangsu .field{display:grid;grid-template-columns:1fr;grid-template-rows:auto 1fr;row-gap:20px;align-content:start}
.deck:not([data-mode=read]) .s-wangsu .lede{font-size:17.5px;line-height:1.34;margin:0;max-width:none;font-weight:400;column-count:2;column-gap:44px;column-fill:balance;text-wrap:pretty}
.s-wangsu .room{position:relative;display:grid;grid-template-columns:400px 1fr;column-gap:36px;border:1px solid var(--rule);background:var(--paper-raised);padding:12px 22px 10px;min-height:0}
.s-wangsu .room>.panel{display:flex;flex-direction:column;gap:12px;border-left:0;border-right:1px solid var(--rule);padding:0 28px 0 0;margin:0;background:none;min-width:0}
.s-wangsu .flow6{display:flex;flex-direction:column;gap:12px;min-width:0}
.s-wangsu .ph{font-family:var(--sans);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);display:block;margin:0 0 4px}
.s-wangsu .stagebar{display:contents}
/* the model picker */
.s-wangsu .dd{position:relative}
.s-wangsu .ddb{display:flex;align-items:center;justify-content:space-between;width:100%;font-family:var(--sans);font-size:15px;color:var(--ink-main);border:1px solid var(--rule-strong);border-radius:2px;background:var(--paper-main);padding:8px 12px;cursor:pointer;text-align:left}
.s-wangsu .ddb .caret{color:var(--ink-muted);font-size:14px;line-height:1}
.s-wangsu .dd .list{position:absolute;left:0;right:0;top:100%;margin:2px 0 0;padding:4px 0;list-style:none;border:1px solid var(--rule-strong);border-radius:2px;background:var(--paper-raised);box-shadow:0 2px 6px rgba(46,49,52,.08);z-index:5;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.s-wangsu .dd.open .list{opacity:1;visibility:visible}
.s-wangsu .dd .list li{font-family:var(--sans);font-size:14.5px;padding:6px 12px;color:var(--ink-main);cursor:pointer}
.s-wangsu .dd .list li:hover{background:var(--mineral-wash)}
.s-wangsu .dd .list li[aria-selected=true]{color:var(--mineral-text);background:var(--mineral-wash)}
.s-wangsu .ddnote{margin:6px 0 0;font-family:var(--sans);font-size:12.5px;color:var(--ink-secondary)}
/* the picker's own sequence at the first state: closed, opened, the recorded model lit, chosen, closed */
.deck[data-mode=present] .s-wangsu[data-step="0"] .dd.auto .list{animation:ddlist 4.2s ease-out 1 both}
.deck[data-mode=present] .s-wangsu[data-step="0"] .dd.auto .list li[data-rec="1"]{animation:ddpick 4.2s ease-out 1 both}
.deck[data-mode=present] .s-wangsu[data-step="0"] .dd.auto .cur{animation:ddcur 4.2s steps(1,end) 1 both}
@keyframes ddlist{0%,18%{opacity:0;visibility:hidden}26%,74%{opacity:1;visibility:visible}84%,100%{opacity:0;visibility:hidden}}
@keyframes ddpick{0%,44%{background:transparent;color:var(--ink-main)}56%,100%{background:var(--mineral-wash);color:var(--mineral-text)}}
@keyframes ddcur{0%{opacity:0}78%{opacity:0}79%,100%{opacity:1}}
@media (prefers-reduced-motion:reduce){.s-wangsu .dd .list,.s-wangsu .dd .list li,.s-wangsu .dd .cur{animation:none!important}}
html[data-motion=reduce] .s-wangsu .dd .list,html[data-motion=reduce] .s-wangsu .dd .list li,html[data-motion=reduce] .s-wangsu .dd .cur,html.print .s-wangsu .dd .list,html.print .s-wangsu .dd .list li,html.print .s-wangsu .dd .cur{animation:none!important}
/* the question */
.s-wangsu .qrow .q{margin:0;border:1px solid var(--rule-strong);border-radius:2px;background:var(--paper-main);padding:8px 14px;min-height:1.4em}
.s-wangsu .qrow .qt{font-family:var(--serif);font-size:18px;line-height:1.35;color:var(--ink-main)}
.s-wangsu .qrow .qt[data-typed]::after{content:"";display:inline-block;width:1px;height:1em;background:var(--ink-main);vertical-align:-2px;margin-left:2px;opacity:.6}
.s-wangsu[data-step="0"] .qrow .q{opacity:.5}
/* participants, rounds, the dossier */
.s-wangsu .setup{display:flex;flex-direction:column;gap:10px;border-top:1px solid var(--rule);padding-top:10px}
.s-wangsu .parts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.s-wangsu .parts li{display:grid;grid-template-columns:62px 1fr;column-gap:12px;align-items:baseline}
.s-wangsu .parts .ord{font-family:var(--sans);font-size:12.5px;color:var(--ink-muted)}
.s-wangsu .parts .pn{font-family:var(--serif);font-size:17px;color:var(--ink-main);line-height:1.3}
.s-wangsu .parts li.note{display:block;font-family:var(--sans);font-size:12px;color:var(--ink-muted);margin-top:2px}
.s-wangsu .mode{margin:10px 0 0;font-family:var(--sans);font-size:14px;color:var(--ink-main);display:flex;gap:10px;align-items:baseline}
.s-wangsu .mode .ph{display:inline;margin:0}
.s-wangsu .mode .sep{display:inline-block;width:1px;height:.9em;background:var(--rule-strong);vertical-align:-1px}
.s-wangsu .dossier{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.s-wangsu .dossier li{display:grid;grid-template-columns:112px 1fr;column-gap:10px;align-items:baseline;font-family:var(--serif);font-size:13.5px;color:var(--ink-main);line-height:1.3}
.s-wangsu .dossier .id{font-family:var(--mono);font-size:11.5px;color:var(--mineral-text)}
.s-wangsu .dossier i{font-style:italic}
/* Begin and the run's milestones */
.s-wangsu .begin{display:flex;flex-direction:column;align-items:flex-start;gap:10px;border-top:1px solid var(--rule);padding-top:10px;margin-top:auto}
.s-wangsu .bbtn{font-family:var(--sans);font-size:14.5px;font-weight:600;color:var(--paper-main);background:var(--mineral-main);border:1px solid var(--mineral-main);border-radius:2px;padding:7px 18px}
.s-wangsu .run{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-family:var(--sans);font-size:12.5px;color:var(--ink-secondary)}
.s-wangsu .run li{opacity:1;transition:opacity .45s cubic-bezier(.4,0,.2,1)}
.s-wangsu .begin.is-off .run li{opacity:0;transition:none}
.s-wangsu .run li+li::before{content:"→";margin-right:8px;color:var(--mineral-soft)}
.s-wangsu .run li:last-child{color:var(--mineral-text);font-weight:500}
/* the positions, the disagreement, the evidence */
.s-wangsu .positions{display:grid;grid-template-columns:1fr 1fr;column-gap:28px;row-gap:8px;align-items:start}
.s-wangsu .positions .tagline{margin:0;grid-column:1/span 2}
.s-wangsu .pos p{margin:0}
.s-wangsu .pos .pw{font-family:var(--sans);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:4px}
.s-wangsu .pos .pt{font-family:var(--serif);font-size:16.5px;line-height:1.42;color:var(--ink-main);text-wrap:pretty}
.s-wangsu .cites{font-family:var(--mono);font-size:11.5px;color:var(--mineral-text);display:inline-flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.s-wangsu .disagree{border-top:1px solid var(--rule);padding-top:10px}
.s-wangsu .disagree p{margin:0}
.s-wangsu .disagree .dh{font-family:var(--serif);font-size:19px;color:var(--ink-main);margin-bottom:6px}
.s-wangsu .disagree .dh .ph{display:inline;margin:0 10px 0 0}
.s-wangsu .disagree .da{font-family:var(--serif);font-size:16px;line-height:1.42;color:var(--ink-secondary);margin-top:4px;text-wrap:pretty}
.s-wangsu .disagree .da b{font-weight:600;color:var(--ink-main);margin-right:6px}
.s-wangsu .evidence{border-top:1px solid var(--rule);padding-top:10px;margin-top:auto}
.s-wangsu .ev{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr 1fr;column-gap:28px}
.s-wangsu .ev li{display:flex;flex-direction:column;gap:2px}
.s-wangsu .ev .id{font-family:var(--mono);font-size:12.5px;color:var(--mineral-text)}
.s-wangsu .ev .zt{font-family:var(--zh);font-size:19px;color:var(--ink-main)}
.s-wangsu .ev .w{font-family:var(--sans);font-size:12.5px;color:var(--ink-secondary)}
.s-wangsu .status{margin:0;font-family:var(--sans);font-size:12px;line-height:1.35;color:var(--ink-muted)}
.s-wangsu .tag{vertical-align:2px}

.deck[data-mode=read] .s-distill .flow svg{width:100%}
.deck[data-mode=read] .s-distill ol.stages{height:auto;display:flex;flex-direction:column;gap:.4rem}.deck[data-mode=read] .s-distill ol.stages li{position:static;width:auto;text-align:left}
.deck[data-mode=read] .s-distill .demo{min-height:0}.deck[data-mode=read] .s-distill .demo .st{position:static;grid-template-columns:1fr;row-gap:.8rem;border-top:1px solid var(--rule);padding:.8rem 0}.deck[data-mode=read] .s-distill .demo .r{border-left:0;padding-left:0;min-height:0}
.deck[data-mode=read] .s-wangsu .room,.deck[data-mode=read] .s-wangsu .positions,.deck[data-mode=read] .s-wangsu .ev{grid-template-columns:1fr;row-gap:.8rem}.deck[data-mode=read] .s-wangsu .panel{border-right:0;padding-right:0}


:root[data-theme=dark] .s-evaluation .shot img.dark{display:block}:root[data-theme=dark] .s-evaluation .shot img.light{display:none}

/* ---------- progressive states outside SVG ---------- */
.deck [data-from].is-off,.deck [data-until].is-off{opacity:0;pointer-events:none}
.deck [data-from],.deck [data-until]{transition:opacity .45s cubic-bezier(.4,0,.2,1)}

/* ---------- chrome: controls, switcher, overview ---------- */
.chrome{position:fixed;right:14px;bottom:12px;z-index:40;display:flex;gap:4px;align-items:center;font-family:var(--sans);font-size:14px;color:var(--ink-secondary);
 background:color-mix(in srgb,var(--paper-raised) 88%,transparent);border:1px solid var(--rule);border-radius:3px;padding:3px;transition:opacity .4s}
.chrome button,.chrome a{min-width:34px;height:32px;display:inline-grid;place-items:center;padding:0 8px;border-radius:2px;color:var(--ink-secondary);text-decoration:none}
.chrome button:hover,.chrome a:hover{background:var(--mineral-wash);color:var(--ink-main)}
#t-close{display:none!important}html.embed #t-close{display:inline-grid!important}
.chrome .count{font-family:var(--mono);font-size:13px;padding:0 6px;min-width:58px;text-align:center}
.chrome [aria-pressed=true]{color:var(--mineral-text);background:var(--mineral-wash)}
.deck.idle .chrome{opacity:0}
.phs{position:fixed;left:12px;top:8px;z-index:41;font-family:var(--sans)}
.phs>button{width:calc(52px*var(--s,1));height:calc(52px*var(--s,1));display:grid;place-items:center;border-radius:3px;color:var(--ink-main);opacity:.85}
.phs>button:hover,.phs>button[aria-expanded=true]{opacity:1;background:var(--mineral-wash)}
.phs>button svg{width:calc(40px*var(--s,1));height:calc(40px*var(--s,1));display:block}
.deck.at-title~.phs,.deck.at-title .phs,body:has(.deck.at-title) .phs{visibility:hidden}
.deck[data-mode=present]:not(.at-title) .stage .s-title .markbox{visibility:hidden}
.phs ul{list-style:none;margin:6px 0 0;padding:6px 0;background:var(--paper-raised);border:1px solid var(--rule-strong);border-radius:3px;min-width:220px;box-shadow:0 6px 24px rgba(20,30,50,.12)}
.phs ul[hidden]{display:none}
.phs li a{display:flex;justify-content:space-between;gap:1rem;padding:8px 14px;text-decoration:none;color:var(--ink-main);font-size:15px}
.phs li a small{color:var(--ink-muted);font-size:12.5px}
.phs li a:hover,.phs li a:focus-visible{background:var(--mineral-wash)}
.phs li a[aria-current=page]{font-weight:600}
.overview{position:fixed;inset:0;z-index:60;background:var(--paper-main);overflow:auto;padding:40px 48px;display:none}
.deck.ov .overview{display:block}
.overview h2{font-family:var(--serif);font-weight:500;font-size:22px;margin:0 0 18px}
.overview ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px}
.overview li button{display:block;width:100%;text-align:left}
.overview .thumb{aspect-ratio:16/9;border:1px solid var(--rule-strong);overflow:hidden;position:relative;background:var(--paper-main)}
.overview .thumb>.slide{position:absolute!important;left:0;top:0;width:1600px;height:900px;transform:scale(var(--ts,.2));transform-origin:0 0;visibility:visible!important;opacity:1!important;pointer-events:none}
.overview .cap{font-family:var(--sans);font-size:14px;color:var(--ink-secondary);margin-top:6px;display:block}
.overview li button[aria-current=true] .thumb{outline:2px solid var(--mineral-main);outline-offset:2px}
/* the presenter view (presenter.js, deck.js): offered in the overview too, for a screen with no keyboard; the presenter's
   pointer over the slide in their window is a lapis dot on this stage, ringed in the paper so it reads on any figure */
.overview .ov-pv{position:absolute;top:34px;right:48px}
.overview .ov-pv kbd{font-family:var(--mono);font-size:12px;border:1px solid var(--rule-strong);border-radius:2px;padding:0 .3em;margin-left:.2em;background:var(--paper-main);color:var(--ink-secondary)}
@media (max-width:700px){.overview .ov-pv{position:static;margin:-6px 0 18px}}
.pv-dot{position:absolute;z-index:50;left:0;top:0;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:var(--mineral-main);border:3px solid var(--paper-main);opacity:.92;pointer-events:none}
.pv-dot[hidden]{display:none}
.orient{display:none}
@media (orientation:portrait) and (max-width:900px){.deck[data-mode=present] .orient{display:block;position:fixed;left:12px;right:12px;top:60px;z-index:45;font-family:var(--sans);font-size:14px;background:var(--paper-raised);border:1px solid var(--rule-strong);padding:10px 12px}}
.help{position:fixed;right:14px;bottom:56px;z-index:42;background:var(--paper-raised);border:1px solid var(--rule-strong);padding:12px 16px;font-family:var(--sans);font-size:14px;line-height:1.6}
.help[hidden]{display:none}
.help kbd{font-family:var(--mono);font-size:12.5px;border:1px solid var(--rule-strong);border-radius:2px;padding:0 .35em;background:var(--paper-main)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- the editor (edit.js), plain CSS over the tokens; print never shows it ---------- */
.ov-hidden{display:none!important}
#t-edit[hidden]{display:none!important}
.chrome a.login{font-family:var(--sans);font-size:13px;padding:0 10px;color:var(--ink-secondary)}
.chrome a.login[hidden]{display:none!important}
.deck.editing .stage .slide.on .is-off{opacity:.22!important;pointer-events:auto!important}
.deck.editing .stage .slide.on a{pointer-events:none}
.edbar{position:fixed;left:50%;top:10px;transform:translateX(-50%);z-index:50;display:flex;flex-wrap:wrap;gap:6px 0;align-items:center;max-width:min(1540px,96vw);background:var(--paper-raised);border:1px solid var(--rule-strong);border-radius:3px;padding:7px 14px;font-family:var(--sans);font-size:13.5px;line-height:1.3;color:var(--ink-main);box-shadow:0 6px 24px rgba(20,30,50,.12)}
.edbar[hidden]{display:none}
.edbar b{font-weight:600}
.edbar .grp{display:flex;align-items:center;gap:6px;padding:0 12px;border-left:1px solid var(--rule)}
.edbar .grp:first-child{border-left:0;padding-left:0}
.edbar button,.edbar select{font:inherit;font-size:13px;color:var(--ink-main);background:var(--paper-main);border:1px solid var(--rule-strong);border-radius:2px;padding:2px 8px;min-height:26px;cursor:pointer}
.edbar button:hover{background:var(--mineral-wash)}
.edbar button[aria-pressed=true]{background:var(--mineral-wash);color:var(--mineral-text);border-color:var(--mineral-soft)}
.edbar .pips{display:inline-flex;gap:3px;margin-left:4px}
.edbar .pips button{min-width:26px;padding:2px 4px;font-family:var(--mono)}
.edbar .sel{color:var(--ink-secondary);max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.edbar .sel.seps{display:inline-flex;flex-wrap:nowrap;max-width:380px;margin:0}.edbar .sel.seps>span{white-space:nowrap}.edbar .sel.seps>span:last-child{overflow:hidden;text-overflow:ellipsis;min-width:0}
.edbar .save[data-dirty=true]{color:var(--mineral-text);border-color:var(--mineral-main);font-weight:600}
.edbar .toast{color:var(--ink-muted);font-size:12.5px;min-width:60px}
.ed-sel{outline:2px solid var(--mineral-main)!important;outline-offset:3px;border-radius:1px}
.ed-leaf[contenteditable]{outline:2px solid var(--mineral-main)!important;outline-offset:3px;background:var(--mineral-wash)}
.help .edk{display:none}.deck[data-editor] .help .edk{display:flex}

/* ---------- slide 7 · investigating machine interpretation (13 Oct 2026) ----------
   The attribution and the question across the top; the persona-vector finding at the left as a two-line summary
   with its qualification; the reading-stance finding at the right, wider, with the one chart; the next question. */
/* ---------- slide 7, How Do Language Models Construct Interpretations? ---------- */
.deck:not([data-mode=read]) .s-experiments .field{display:grid;grid-template-columns:1fr 1.55fr;grid-template-rows:auto 1fr;column-gap:60px;row-gap:18px;align-content:start}
.deck:not([data-mode=read]) .s-experiments .q{grid-column:1/span 2;font-size:22px;line-height:1.36;margin:0;max-width:1380px;font-weight:400;color:var(--ink-main);text-wrap:pretty}
.s-experiments section{border-top:1.5px solid var(--ink-main);padding-top:14px;display:flex;flex-direction:column;gap:14px;align-self:start}
.s-experiments .done{grid-column:1;grid-row:2}.s-experiments .now{grid-column:2;grid-row:2}
.s-experiments section h3{font-family:var(--serif);font-weight:500;font-size:24px;margin:0;line-height:1.2}
.s-experiments section h3 .n{font-family:var(--mono);font-weight:500;font-size:16px;color:var(--mineral-text);margin-right:12px;letter-spacing:.02em;vertical-align:2px}
.s-experiments section h3 .opn{font-size:17px;font-weight:400;color:var(--ink-muted);margin-left:2px}
.s-experiments section .t{font-family:var(--serif);font-size:19.5px;line-height:1.44;margin:0;color:var(--ink-main);text-wrap:pretty}
.s-experiments ul.sum{list-style:none;margin:6px 0 0;padding:0}
.s-experiments ul.sum li{display:grid;grid-template-columns:1fr auto;column-gap:24px;align-items:baseline;padding:14px 0;border-top:1px solid var(--rule)}
.s-experiments ul.sum li:last-child{border-bottom:1px solid var(--rule)}
.s-experiments ul.sum .a{font-family:var(--serif);font-size:18px;color:var(--ink-main)}
.s-experiments ul.sum .b{font-family:var(--sans);font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:var(--mineral-text);font-weight:500}
.s-experiments ul.sum li.no .b{color:var(--ink-secondary)}
.s-experiments .figbox{margin:4px 0 0}
.s-experiments .figbox .fig{width:940px;max-width:100%;height:auto}
.s-experiments .figbox figcaption{font-family:var(--sans);font-size:15.5px;color:var(--ink-secondary);line-height:1.4;margin:12px 0 0;max-width:940px}
.s-experiments .direction{grid-column:1/span 2;grid-row:3;font-family:var(--serif);font-size:21px;line-height:1.36;margin:0;border-top:1px solid var(--rule);padding-top:12px;max-width:1380px;align-self:end;color:var(--ink-main);text-wrap:pretty}
.s-experiments .direction .dl{display:block;font-family:var(--sans);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:4px}
/* the understated text links of slides 7 and 8 */
.foot .acts .lnk{font-family:var(--sans);font-size:14.5px;color:var(--mineral-text);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:var(--mineral-soft);display:inline-flex;align-items:center;gap:.35em;white-space:nowrap}
.foot .acts .lnk svg,.lnk svg{width:13px;height:13px}
.foot .acts .lnk:hover{text-decoration-color:var(--mineral-main)}

/* ---------- slide 8 · next steps (13 Oct 2026, by the brief of that night) ----------
   Four numbered directions stacked, one at each step; the fourth, the longer-term ambition, under a thinner rule
   with an understated label and the number in the muted ink. No foot. */
.deck:not([data-mode=read]) .s-evaluation .field{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;align-content:start}
.s-evaluation ol.four{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;column-gap:56px;row-gap:18px;height:100%;align-content:start}
.s-evaluation ol.four li{display:grid;grid-template-columns:72px 1fr;column-gap:28px;align-items:start;border-top:1.5px solid var(--ink-main);padding:14px 0 6px;min-height:0}
.s-evaluation{--longer:#7f7059;--longer-rule:#B7A992}:root[data-theme=dark] .s-evaluation{--longer:#CFC7B9;--longer-rule:#8a8273}
.s-evaluation ol.four li.longer{border-top:1.5px solid var(--longer-rule)}
.s-evaluation .n b{display:block;font-family:var(--mono);font-weight:500;color:var(--mineral-text);font-size:34px;line-height:1;letter-spacing:.02em;padding-top:4px}
.s-evaluation li.longer .n b{color:var(--longer)}
.s-evaluation .body{display:flex;flex-direction:column;gap:8px;max-width:680px}
.s-evaluation .lab{font-family:var(--sans);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--longer)}
.s-evaluation ol.four h3{font-family:var(--serif);font-weight:500;font-size:24px;margin:0;line-height:1.2;color:var(--ink-main);text-wrap:balance}
.s-evaluation li.longer h3{color:var(--longer)}
.s-evaluation ol.four .t{font-family:var(--serif);font-size:20.5px;line-height:1.4;margin:0;color:var(--ink-main);text-wrap:pretty}
.s-evaluation li.longer .t{color:var(--ink-main)}
.s-evaluation ol.four .t i{font-style:italic}
.s-evaluation .go{margin:4px 0 0}
.s-evaluation .go{margin-top:6px}
/* reading mode */
.deck[data-mode=read] .s-evaluation ol.four{grid-template-columns:1fr;grid-template-rows:none}.deck[data-mode=read] .s-evaluation ol.four li{grid-template-columns:3rem 1fr;column-gap:1rem}
.deck[data-mode=read] .s-experiments .figbox .fig{width:100%}

/* ---------- read: the same slides as a page ---------- */
.deck[data-mode=read]{max-width:1080px;margin:0 auto;padding:84px 24px 80px}
.deck[data-mode=read] .stage{display:block}
.deck[data-mode=read] .slide{display:block;padding:44px 0 36px;border-top:1px solid var(--rule)}
.deck[data-mode=read] .slide>.num{display:block;margin-bottom:6px}
.deck[data-mode=read] .slide h2{font-size:clamp(1.7rem,3.6vw,2.4rem);margin-bottom:.6rem}
.deck[data-mode=read] .slide .lede,.deck[data-mode=read] .slide .q{font-size:1.18rem;line-height:1.6;max-width:66ch;margin:0 0 1rem}
.deck[data-mode=read] .slide .kicker{font-size:1rem;margin:0 0 .4rem}
.deck[data-mode=read] .slide .field>*+*{margin-top:1.2rem}
.deck[data-mode=read] .slide .field{display:block}
.deck[data-mode=read] .slide .foot{margin-top:1.4rem;padding-top:.8rem;border-top:1px solid var(--rule);font-size:.88rem;line-height:1.5;display:flex;flex-direction:column;gap:.6rem}
.deck[data-mode=read] .slide .foot .acts{display:flex;flex-wrap:wrap;gap:.6rem}
.deck[data-mode=read] .out{white-space:normal;max-width:100%;text-align:left}.deck[data-mode=read] .out .url{display:none}
.deck[data-mode=read] [data-from],.deck[data-mode=read] [data-until]{opacity:1!important}
.deck[data-mode=read] .fig [data-until]{display:none}
.deck[data-mode=read] .wide{overflow-x:auto;-webkit-overflow-scrolling:touch}
.deck[data-mode=read] .wide>.fig{min-width:760px}
.deck[data-mode=read] .chrome,.deck[data-mode=read] .help{display:none}
@media (max-width:820px){.deck[data-mode=read] .wide::before{content:"The figure continues to the right; scroll it sideways.";display:block;position:sticky;left:0;font-family:var(--sans);font-size:.8rem;color:var(--ink-muted);margin-bottom:.4rem;white-space:nowrap}}
.scrollnote{display:none}
.deck[data-mode=read] .scrollnote{display:none;font-family:var(--sans);font-size:.8rem;color:var(--ink-muted)}
@media (max-width:820px){.deck[data-mode=read] .scrollnote{display:block}}
.deck[data-mode=read] .s-title{min-height:70vh;padding-top:12vh;border-top:0;position:relative}
.deck[data-mode=read] .s-title .bamboo{opacity:.6}
.deck[data-mode=read] .s-title .tblock{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:1.4rem}
.deck[data-mode=read] .s-title .markbox{width:clamp(64px,10vw,120px);height:auto;align-self:start}
.deck[data-mode=read] .s-title .a1{width:clamp(64px,10vw,120px);height:auto}
.deck[data-mode=read] .s-title .replay{bottom:-30px}
.deck[data-mode=read] .s-title h1{font-size:clamp(2.6rem,7vw,4.6rem)}
.deck[data-mode=read] .s-title .sub{font-size:clamp(1.2rem,2.6vw,1.8rem);margin-bottom:1.6rem}
.deck[data-mode=read] .s-title .team{flex-wrap:wrap;row-gap:1.4rem}
.deck[data-mode=read] .s-title .grp{padding:0 1.2rem 0 0;border-left:0}
.deck[data-mode=read] .s-title .ppl,.deck[data-mode=read] .s-title .grp:nth-child(n+2) .ppl{grid-template-columns:minmax(0,14rem);gap:.7rem}
.deck[data-mode=read] .s-title .ph-person,.deck[data-mode=read] .s-title .ph-portrait{--ph-portrait-size:4.5rem}
.deck[data-mode=read] .s-title .who{font-size:1rem}
.deck[data-mode=read] .s-title .inst{font-size:.8rem;margin-top:.9rem}.deck[data-mode=read] .s-title .inst .crest{height:28px}
.deck[data-mode=read] .s-title .tfoot{position:relative;margin-top:2rem;padding-top:.8rem}
.deck[data-mode=read] .s-title .perm{flex-wrap:wrap;gap:.6rem 2rem;justify-content:flex-start}
.deck[data-mode=read] .s-title .perm a{font-size:1rem}
.deck[data-mode=read] .slide .head{grid-template-columns:1fr}
.deck[data-mode=read] .slide .sec{font-size:.8rem;margin-bottom:.4rem}
.deck[data-mode=read] .s-aims ol.aims li{grid-template-columns:3rem 1fr;row-gap:.6rem;transition:none}
.deck[data-mode=read] .s-aims ol.aims li .txt{display:flex;flex-direction:column}
.deck[data-mode=read] .s-aims ol.aims li .pic{order:9;position:static;opacity:1;margin-top:.6rem}
/* the glyph takes the column's width, never the column the glyph's: at 300px it pushed a phone's text past the edge */
.deck[data-mode=read] .s-aims .pic .fig{width:100%;max-width:300px}
.deck[data-mode=read] .s-aims .n b{font-size:1.6rem}
.deck[data-mode=read] .s-aims h3{font-size:1.4rem}
.deck[data-mode=read] .s-aims .ch,.deck[data-mode=read] .s-aims .ap{grid-template-rows:1fr;opacity:1;margin-top:.6rem;transition:none}
.deck[data-mode=read] .s-aims .txt p{font-size:1.08rem}
/* a phone reads the four challenges one under another: two columns left each about 130px, and headings and words were
   cut ("Multili", "Historica"; the responsive check of 27 Oct 2026). The heavier rule heads the list alone, as in one
   column it would otherwise fall between the first two sections, and each drawing stands under its text, in the text's
   column, where it had been 48px wide in the numerals' column. Present mode and print are untouched. */
@media (max-width:600px){.deck[data-mode=read] .s-aims ol.aims{grid-template-columns:1fr;grid-template-rows:none;height:auto}
 .deck[data-mode=read] .s-aims ol.aims li:nth-child(2){border-top:1px solid var(--rule)}
 .deck[data-mode=read] .s-aims ol.aims li .pic{grid-column:2;justify-self:start}}
.deck[data-mode=read] .s-manchu .sketch{max-width:900px}
.deck[data-mode=read] .s-manchu .result .val{font-size:3rem}
.deck[data-mode=read] .s-manchu .left{display:flex;flex-direction:column;gap:1.2rem}
.deck[data-mode=read] .s-manchu .result{grid-template-columns:auto 1fr;row-gap:.6rem}
.deck[data-mode=read] .s-manchu .result .model{grid-column:1/span 2;border-left:0;padding-left:0}
.deck[data-mode=read] .s-census ol.terms{--em:34px;--pad:12px;--stem:24px;flex-wrap:wrap;justify-content:flex-start;gap:14px}
.deck[data-mode=read] .s-census .cmp{grid-template-columns:1fr;row-gap:.8rem}
.deck[data-mode=read] .s-census .cmp .rows{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem}
.deck[data-mode=read] .s-census .cmp .rows span:nth-child(2){padding:0}
.deck[data-mode=read] .s-census .top{grid-template-columns:1fr;row-gap:.6rem}
.deck[data-mode=read] .s-census .corp{max-width:560px}
.deck[data-mode=read] .s-limits .ex.b .prov-fig .fig{width:min(560px,100%)}
.deck[data-mode=read] .s-limits .bgrid,.deck[data-mode=read] .s-limits .why{grid-template-columns:1fr;row-gap:1rem}
.deck[data-mode=read] .s-limits .why .prov{grid-column:1}
.deck[data-mode=read] .s-limits .earlier{grid-template-columns:1fr;row-gap:.3rem}
.deck[data-mode=read] .s-persona .txt{grid-template-columns:1fr}
.deck[data-mode=read] .s-persona .txt .q{grid-column:1}
.deck[data-mode=read] .s-persona .tbl{overflow-x:auto}
.deck[data-mode=read] .s-persona table{min-width:700px;font-size:.9rem}
.deck[data-mode=read] .s-sae ul.status li{grid-template-columns:1fr;row-gap:.1rem}
.deck[data-mode=read] .s-sae .dist{grid-template-columns:1fr;row-gap:1rem}
.readbar{display:none}
.deck[data-mode=read]~.readbar,.readbar.show{display:block}
.reading-head{display:none}
.deck[data-mode=read] .reading-head{display:block;margin-bottom:28px;font-family:var(--sans);font-size:15px;color:var(--ink-secondary)}
.deck[data-mode=read] .reading-head .acts{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.8rem}
.deck[data-mode=read] .resources{display:block;border-top:1px solid var(--rule);margin-top:1rem;padding-top:1.6rem;font-family:var(--sans)}
.resources{display:none}
.resources h2{font-family:var(--serif);font-weight:500;font-size:1.5rem;margin:0 0 .8rem}
.resources ul{padding-left:1.1rem;line-height:1.6}
.resources .cites li{font-size:.92rem;color:var(--ink-secondary)}
.resources .updated{font-size:.88rem;color:var(--ink-muted)}

/* ---------- print and ?print: every slide at its last state, one per page ---------- */
@page{size:1600px 900px;margin:0}
@media print{
 html,body{background:var(--paper-main)!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
 .chrome,.phs,.overview,.help,.orient,.skip,.reading-head,.resources,.edbar,.edver,.pv-dot{display:none!important}
 .deck,.deck[data-mode]{position:static!important;max-width:none!important;padding:0!important;margin:0!important;overflow:visible!important}
 .deck .stage{position:static!important;transform:none!important;width:1600px!important;height:auto!important}
 .deck .slide{position:relative!important;inset:auto!important;width:1600px!important;height:900px!important;visibility:visible!important;opacity:1!important;
  break-after:page;page-break-after:always;break-inside:avoid;overflow:hidden!important;border:0!important}
 .deck .slide:last-child{break-after:auto;page-break-after:auto}
 .deck [data-from],.deck .fig [data-from]{opacity:1!important}
 .deck [data-until],.deck .fig [data-until]{display:none!important}
 .out .url{display:none!important}
 .print-only{display:block!important}
 .screen-only{display:none!important}
}
.print-only{display:none}
html.print .chrome,html.print .phs,html.print .overview,html.print .help,html.print .orient,html.print .reading-head,html.print .resources{display:none!important}
html.print .edbar,html.print .edver{display:none!important}
html.print .deck{position:static!important;padding:0!important;max-width:none!important}
html.print .deck .stage{position:static!important;transform:none!important;width:1600px!important;height:auto!important;margin:0 auto}
html.print .deck .slide{position:relative!important;inset:auto!important;width:1600px!important;height:900px!important;visibility:visible!important;opacity:1!important;margin:0 auto 24px;box-shadow:0 0 0 1px var(--rule-strong)}
html.print .deck [data-from]{opacity:1!important}
html.print .deck [data-until]{display:none!important}
html.print .a1[data-entrance] .s,html.print .a1[data-entrance] .tr{animation:none!important}html.print .a1 .tr{display:none!important}html.print .s-title .replay{display:none!important}
html.print .s-title .markbox{visibility:visible!important}
html.print .print-only{display:block}
html.print .screen-only{display:none}
html.print .out .url{display:none}

/* real print wins over the on-screen print preview: no gap and no frame between pages */
@media print{.a1[data-entrance] .s,.a1[data-entrance] .tr{animation:none!important}.a1 .tr{display:none!important}.s-title .replay{display:none!important}.s-title .markbox{visibility:visible!important}.foot .out{flex-wrap:wrap;row-gap:0}.foot .out .url{flex-basis:100%}html.print .deck .slide,.deck .slide{margin:0!important;box-shadow:none!important}html,body{height:auto!important}.sr{display:none!important}}

/* reading mode on a phone: nothing wider than the screen (the sweep of 14 Oct 2026) */
.deck[data-mode=read] .s-distill .demo .cmd,.deck[data-mode=read] .s-distill .demo .cmd code{white-space:normal;word-break:break-word}
.deck[data-mode=read] .s-distill .demo .st{grid-template-columns:1fr}
.deck[data-mode=read] .s-orient .mapwrap svg,.deck[data-mode=read] .s-orient .comp svg,.deck[data-mode=read] .s-orient .tlwrap svg{height:auto;max-width:100%}
.deck[data-mode=read] .fig{max-width:100%;height:auto}
.deck[data-mode=read] .slide .foot .acts{flex-wrap:wrap}
/* a narrow screen reads one column: the two-column paragraphs and the paired introductions fall into one */
@media (max-width:700px){.deck[data-mode=read] .slide .top{display:block}.deck[data-mode=read] .slide .top>*+*{margin-top:.8rem}.deck[data-mode=read] .s-orient .intro,.deck[data-mode=read] .s-census .top .body{column-count:1}}

/* ---------- slides added in edit mode (deck.js, TPL) ----------
   Eight templates in the deck's own vocabulary: the head (the title alone), the field, the serif lede, slide 8's mono
   lapis numerals over ruled rows, the lapis-ruled quotation, the bow the site parts its sections with, slide 1's raised
   plate. The headless kinds (statement, quotation, section, discussion) take the head's row too and sit at the field's
   centre. A removed slide, built or added, stays in the page and out of the deck. */
.ov-gone{display:none!important}
.deck:not([data-mode=read]) .s-x>.head h2{white-space:normal;text-wrap:balance;max-width:1340px}
.deck:not([data-mode=read]) .s-x>.field{min-height:0}
.deck:not([data-mode=read]) .s-x>.field.x-center{grid-row:1/3;display:flex;flex-direction:column;justify-content:center;padding:0 0 30px}
.s-x .x-big{font-family:var(--serif);font-weight:500;letter-spacing:0;font-variation-settings:"opsz" 32;margin:0;text-wrap:balance;white-space:normal}
.deck:not([data-mode=read]) .s-x .x-big{font-size:58px;line-height:1.14;max-width:1260px;white-space:normal}
.s-x .x-sub{font-family:var(--serif);color:var(--ink-secondary);margin:0;text-wrap:pretty}
.deck:not([data-mode=read]) .s-x .x-sub{font-size:28px;line-height:1.42;max-width:1120px}
.s-x .lg.bow{display:block;width:100%;height:12px;color:var(--ink-main)}
.deck:not([data-mode=read]) .s-x .lg.bow{max-width:1260px;margin:30px 0 24px}
.deck:not([data-mode=read]) .x-section .label{font-size:17px;margin:0 0 18px}
.deck:not([data-mode=read]) .x-section .x-big{font-size:76px;line-height:1.08}
/* heading and points: slide 8's rows, one column to six points, two columns beyond */
.s-x .x-points{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);max-width:1340px}
.s-x .x-points li{display:grid;grid-template-columns:72px minmax(0,1fr);column-gap:28px;align-items:baseline;border-top:1px solid var(--rule);padding:16px 0 14px}
.s-x .x-points li:first-child,.s-x .x-points li.x-top{border-top:1.5px solid var(--ink-main)}
.s-x .x-points .n b{display:block;font-family:var(--mono);font-weight:500;line-height:1;color:var(--mineral-text);letter-spacing:.02em}
.s-x .x-points p{font-family:var(--serif);margin:0;text-wrap:pretty}
.deck:not([data-mode=read]) .s-x .x-points .n b{font-size:28px}
.deck:not([data-mode=read]) .s-x .x-points p{font-size:27px;line-height:1.36}
.deck:not([data-mode=read]) .s-x .x-points.many{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-flow:column;grid-template-rows:repeat(var(--rows),auto);column-gap:56px;align-content:start}
.deck:not([data-mode=read]) .s-x .x-points.many p{font-size:22px}
.deck:not([data-mode=read]) .s-x .x-points.many li{grid-template-columns:56px minmax(0,1fr);column-gap:20px;padding:12px 0 10px}
/* text and picture; picture */
.deck:not([data-mode=read]) .x-split>.field{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);column-gap:60px;align-items:start}
.deck:not([data-mode=read]) .x-split .lede{font-size:26px;line-height:1.42}
.s-x .x-pic{margin:0;min-width:0}
.s-x .x-img{display:block}
.s-x .x-img img{display:block;max-width:100%;height:auto;border:1px solid var(--rule-strong);background:var(--paper-raised)}
.deck:not([data-mode=read]) .s-x .x-img img{width:100%;max-height:600px;object-fit:contain;object-position:left top}
.deck:not([data-mode=read]) .s-x .x-plate .x-img img{width:auto;max-height:620px}
.s-x .x-img img.dark{display:none}:root[data-theme=dark] .s-x .x-img img.dark{display:block}:root[data-theme=dark] .s-x .x-img img.light.paired{display:none}
.s-x .x-pic figcaption{font-family:var(--sans);font-size:15.5px;line-height:1.4;color:var(--ink-secondary);margin-top:10px;max-width:940px}
.s-x .x-well{display:grid;place-items:center;aspect-ratio:4/3;border:1.5px dashed var(--rule-strong);border-radius:2px;background:var(--paper-raised);font-family:var(--sans);font-size:18px;color:var(--ink-muted);cursor:pointer}
.s-x .x-plate .x-well{aspect-ratio:16/9;max-height:560px}
/* until a picture is chosen the well is the editor's: a reader, the overview, print and the PDF never show it */
.deck:not(.editing) .s-x .x-pic.empty,.overview .x-pic.empty,html.print .x-pic.empty{display:none}
@media print{.x-pic.empty{display:none!important}}
/* quotation: the deck's quotation (.mq), large */
.s-x .x-quote{margin:0;border-left:2px solid var(--mineral-main)}
.s-x .x-quote p{font-family:var(--serif);margin:0;text-wrap:pretty}
.s-x .x-cite{font-family:var(--sans);color:var(--ink-secondary);margin:0}
.deck:not([data-mode=read]) .s-x .x-quote{padding:8px 0 8px 32px;max-width:1260px}
.deck:not([data-mode=read]) .s-x .x-quote p{font-size:40px;line-height:1.4}
.deck:not([data-mode=read]) .s-x .x-cite{font-size:19px;line-height:1.4;margin:22px 0 0 34px}
/* two columns: slide 7's ruled sections */
.deck:not([data-mode=read]) .x-columns>.field{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:60px;align-content:start}
.s-x .x-col{border-top:1.5px solid var(--ink-main);padding-top:16px}
.s-x .x-col h3{font-family:var(--serif);font-weight:500;line-height:1.2;margin:0 0 12px;text-wrap:balance}
.s-x .x-col p{font-family:var(--serif);margin:0;text-wrap:pretty}
.deck:not([data-mode=read]) .s-x .x-col h3{font-size:28px}
.deck:not([data-mode=read]) .s-x .x-col p{font-size:22px;line-height:1.44}
/* discussion: slide 1's raised plate under its ink rule */
.s-x .x-band{background:var(--paper-raised);border:1px solid var(--rule);border-top:1.5px solid var(--ink-main)}
.deck:not([data-mode=read]) .s-x .x-band{padding:52px 64px 60px;max-width:1340px}
.deck:not([data-mode=read]) .x-discussion .label{font-size:17px;margin:0 0 16px}
.deck:not([data-mode=read]) .x-discussion .x-big{font-size:54px;line-height:1.18}
/* reading mode: the same slides in the page's flow */
.deck[data-mode=read] .s-x .x-big{font-size:clamp(1.7rem,4.6vw,2.7rem);line-height:1.18}
.deck[data-mode=read] .s-x .x-sub{font-size:1.15rem;line-height:1.55}
.deck[data-mode=read] .s-x .lg.bow{margin:1rem 0}
.deck[data-mode=read] .s-x .x-points li{grid-template-columns:2.6rem minmax(0,1fr);column-gap:.8rem;padding:.75rem 0 .65rem}
.deck[data-mode=read] .s-x .x-points li.x-top{border-top:1px solid var(--rule)}
.deck[data-mode=read] .s-x .x-points .n b{font-size:1.25rem}
.deck[data-mode=read] .s-x .x-points p{font-size:1.12rem;line-height:1.5}
.deck[data-mode=read] .s-x .x-quote{padding:.2rem 0 .2rem 1rem}
.deck[data-mode=read] .s-x .x-quote p{font-size:1.35rem;line-height:1.5}
.deck[data-mode=read] .s-x .x-cite{font-size:.95rem;margin-left:1.1rem}
.deck[data-mode=read] .s-x .x-col h3{font-size:1.3rem}
.deck[data-mode=read] .s-x .x-col p{font-size:1.08rem;line-height:1.55}
.deck[data-mode=read] .s-x .x-band{padding:1.2rem 1.3rem 1.4rem}
.deck[data-mode=read] .s-x .label{font-size:.8rem}
.deck[data-mode=read] .s-x .x-text .lede{font-size:1.18rem;line-height:1.6}

/* ---------- bilingual slides and the shared kinds (build_talks.py, "bilingual slides: the shared kinds") ----------
   The DADH2026 talk (30 Oct 2026): every English line has its Chinese as an element of its own, set in the deck's Kai
   (the zh stack) a size below the English and in the secondary ink where the English leads; a title's Chinese stands
   beside it on the head's line, or under it when the two do not fit before the QR code. Chinese is never set heavier
   than 400 (TW-Kai has one weight; a heavier one would be synthesized). The kinds: about, scales, contrast, grid,
   stack, bands, source, matrix, statement, and the title of a talk given alone (v-solo). Steps are the deck's own
   (data-from, data-cur); the colours are the palette's tokens. */
.slide .head.bi{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:26px;row-gap:0;max-width:1300px}
.slide .head .hz{font-family:var(--zh);font-weight:400;color:var(--ink-secondary);margin:0;line-height:1.2;letter-spacing:.02em}
.deck:not([data-mode=read]) .slide .head .hz{font-size:34px;padding-top:6px;white-space:nowrap}
.slide p.zh,.slide .zh p{font-weight:400}
/* a lede in two columns, the English and its Chinese */
.deck:not([data-mode=read]) :is(.s-grid,.s-bands,.s-source,.s-matrix) .top .lede{font-size:22px;line-height:1.4;font-weight:400}
.deck:not([data-mode=read]) :is(.s-grid,.s-bands,.s-source,.s-matrix) .top .lede.zh{font-size:21px;line-height:1.6;color:var(--ink-secondary)}
/* the reused slides of Pivot (distill, wangsu): a stage's operation in Chinese under the English, a state's name beside it */
.s-distill ol.stages.bi{height:54px}
.s-distill ol.stages .opz{font-family:var(--zh);font-size:14.5px;line-height:1.3;color:var(--ink-secondary);margin-top:1px}
.s-distill .demo .kick .kz{font-family:var(--zh);font-size:18px;color:var(--ink-secondary);margin-left:10px}
.deck:not([data-mode=read]) .s-distill .top .lede.zh{font-size:16.5px;line-height:1.5;color:var(--ink-secondary)}
.deck:not([data-mode=read]) .s-wangsu .top .lede{font-size:17px;line-height:1.36;column-count:1;font-weight:400;margin:0}
.deck:not([data-mode=read]) .s-wangsu .top .lede.zh{font-size:16.5px;line-height:1.5;color:var(--ink-secondary)}

/* the title of a talk given alone: the title and subtitle each with its Chinese beneath, the speaker with the crest */
.s-title.v-solo .h1z{font-family:var(--zh);font-weight:400;font-size:62px;line-height:1.1;margin:-2px 0 30px;color:var(--ink-main);letter-spacing:.06em}
.s-title.v-solo .sub{margin:0 0 6px;max-width:1180px}
.s-title.v-solo .subz{font-family:var(--zh);font-size:30px;line-height:1.35;color:var(--ink-secondary);margin:0 0 48px}
.s-title.v-solo .speaker{display:flex;gap:18px;align-items:center}
.s-title.v-solo .speaker .crest{height:52px;width:auto;display:block;opacity:.92;flex:none}
.s-title.v-solo .speaker p{margin:0}
.s-title.v-solo .who{font-family:var(--serif);font-size:28px;line-height:1.2;color:var(--ink-main);display:flex;gap:14px;align-items:baseline;margin:0}
.s-title.v-solo .who [lang]{font-family:var(--zh);font-size:27px}
.s-title.v-solo .aff{font-family:var(--sans);font-size:17px;color:var(--ink-secondary);margin-top:6px;display:flex;gap:12px;align-items:baseline}
.s-title.v-solo .aff [lang]{font-family:var(--zh);font-size:18px}
.s-title.v-solo .perm .seps [lang]{font-family:var(--zh);letter-spacing:.02em;margin-right:.35em}
.deck:not([data-mode=read]) .s-title.v-solo{padding-top:206px}

/* about: the roles at the left; the association and its next conference at the right; the funder in the foot */
.deck:not([data-mode=read]) .s-about .field{display:grid;grid-template-columns:560px minmax(0,1fr);column-gap:64px;align-items:start}
.s-about .roles{list-style:none;margin:0;padding:0}
.s-about .roles li{display:flex;gap:18px;align-items:flex-start;border-top:1.5px solid var(--ink-main);padding:18px 0 24px}
.s-about .roles li+li{border-top:1px solid var(--rule)}
.s-about .roles .crest{height:48px;width:auto;flex:none;display:block;opacity:.92}
.s-about .roles p{margin:0}
.s-about .r{font-family:var(--serif);font-size:27px;line-height:1.3;color:var(--ink-main);text-wrap:balance}
.s-about .r.zh{font-size:25px;line-height:1.45;color:var(--ink-secondary);margin-top:6px}
.s-about .right{display:flex;flex-direction:column;gap:22px;min-width:0}
.s-about .org{border-top:1.5px solid var(--ink-main);padding-top:18px}
.s-about .lock{margin:0 0 12px}
.s-about .lock img{display:block;height:64px;width:auto}
.s-about .lock img.dark{display:none}:root[data-theme=dark] .s-about .lock img.dark{display:block}:root[data-theme=dark] .s-about .lock img.light{display:none}
.s-about .ol{font-family:var(--serif);font-size:20px;line-height:1.42;margin:0;color:var(--ink-main);max-width:780px}
.s-about .ol.zh{font-size:19px;line-height:1.6;color:var(--ink-secondary);margin-top:4px}
.s-about .ev{background:var(--paper-raised);border:1px solid var(--rule);border-top:1.5px solid var(--mineral-main);padding:16px 26px 20px}
.s-about .evh{margin:0 0 6px;display:flex;gap:12px}
.s-about .evh [lang]{font-family:var(--zh);letter-spacing:.02em;text-transform:none;font-size:15px}
.s-about .evn{font-family:var(--mono);font-weight:500;font-size:21px;letter-spacing:.02em;color:var(--mineral-text);margin:0 0 6px;white-space:nowrap}
.s-about .evt{font-family:var(--serif);font-size:28px;line-height:1.25;margin:0;color:var(--ink-main);text-wrap:balance}
.s-about .evt.zh{font-size:26px;line-height:1.4;margin-top:4px}
.s-about .evm{font-family:var(--sans);font-size:17px;color:var(--ink-secondary);margin:10px 0 0}
.s-about .evm.zh{font-family:var(--zh);font-size:17px;margin-top:4px}
.s-about .kn{font-family:var(--sans);font-size:15.5px;line-height:1.4;color:var(--ink-secondary);margin:10px 0 0;display:flex;column-gap:12px;flex-wrap:wrap;align-items:baseline}
.s-about .kn .lab{font-size:12.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);display:inline-flex;gap:8px}
.s-about .kn .lab [lang]{font-family:var(--zh);font-size:14px;letter-spacing:0}
.s-about .go{margin:14px 0 0}
.s-about .foot .ack{display:flex;gap:22px;align-items:center}
.s-about .foot .wm{height:28px;width:auto;display:block;opacity:.92;flex:none}
.s-about .foot .wm-dark{display:none}:root[data-theme=dark] .s-about .foot .wm{display:none}:root[data-theme=dark] .s-about .foot .wm-dark{display:block}
.s-about .foot .ack p{font-family:var(--sans);font-size:16px;line-height:1.4;color:var(--ink-secondary);margin:0}
.s-about .foot .ack p.zh{font-family:var(--zh);font-size:16px}

/* scales: frames each holding the one before, bottom left, sized by build_talks.py (--w, --h); a frame's words recede
   once the next frame appears (data-cur) */
.deck:not([data-mode=read]) .s-scales .field{display:grid;grid-template-rows:490px auto;row-gap:24px;align-content:start}
.s-scales .nest{list-style:none;margin:0;padding:0;position:relative}
.deck:not([data-mode=read]) .s-scales .nest{height:490px}
.deck:not([data-mode=read]) .s-scales .lv{position:absolute;left:0;bottom:0;width:var(--w);height:var(--h);border:1.2px solid var(--ink-main)}
.s-scales .lv0{background:var(--paper-raised)}
.s-scales .lt{display:grid;grid-template-columns:210px minmax(0,1fr);column-gap:18px;align-items:baseline;padding:14px 18px 0;transition:opacity .45s cubic-bezier(.4,0,.2,1)}
.s-scales .lv0 .lt{grid-template-columns:1fr}
.s-scales .kk{display:flex;gap:10px;align-items:baseline}
.s-scales .k{font-family:var(--sans);font-size:16px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-main);margin:0}
.s-scales .k.zh{font-family:var(--zh);font-size:21px;letter-spacing:.04em;text-transform:none}
.s-scales .d{font-family:var(--serif);font-size:19px;line-height:1.35;margin:0;color:var(--ink-main)}
.s-scales .d.zh{font-size:18px;line-height:1.5;color:var(--ink-secondary)}
.s-scales .smp{font-family:var(--zh);font-size:31px;line-height:1.3;margin:12px 18px 0;color:var(--ink-main);letter-spacing:.04em}
.s-scales .smpr{font-family:var(--zh);font-size:15px;color:var(--ink-muted);margin:4px 18px 0}
.deck[data-mode=present] .s-scales:not([data-all]) .lt:not(.cur){opacity:.42}
.deck[data-mode=present] .s-scales .lv{transition:opacity .45s cubic-bezier(.4,0,.2,1),width .8s cubic-bezier(.2,.7,.2,1),height .8s cubic-bezier(.2,.7,.2,1)}
.deck[data-mode=present] .s-scales .lv.is-off{width:var(--w0);height:var(--h0)}
@media (prefers-reduced-motion:reduce){.deck .s-scales .lv{transition:none!important}}
html[data-motion=reduce] .deck .s-scales .lv{transition:none!important}
.s-scales .sline{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;align-items:start}
.s-scales .sline .lede{font-size:23px;line-height:1.42;margin:0}
.s-scales .sline .lede.zh{font-size:22px;line-height:1.58;color:var(--ink-secondary)}

/* contrast: what one approach sees, and what stays beyond it; the genres as rings that overlap, as their fields did */
.deck:not([data-mode=read]) .s-contrast .field{display:grid;grid-template-rows:auto auto;row-gap:30px;align-content:start}
.deck:not([data-mode=read]) .s-contrast .two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:64px;align-items:start}
.s-contrast .cl,.s-contrast .cr{border-top:1.5px solid var(--ink-main);padding-top:14px}
.s-contrast .cr{border-top-color:var(--mineral-main)}
.s-contrast .ch{font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);margin:0}
.s-contrast .ch.zh{font-family:var(--zh);font-size:19px;letter-spacing:.02em;text-transform:none;margin:4px 0 14px}
.s-contrast .cr .ch{color:var(--mineral-text)}
.s-contrast .t{font-family:var(--serif);font-size:25px;line-height:1.42;margin:0;text-wrap:pretty}
.s-contrast .t.zh{font-size:23px;line-height:1.62;color:var(--ink-secondary);margin-top:12px}
.s-contrast .miss{list-style:none;margin:0;padding:0}
.s-contrast .miss li{display:grid;grid-template-columns:52px minmax(0,1fr);column-gap:14px;align-items:baseline;border-top:1px solid var(--rule);padding:8px 0 7px}
.s-contrast .miss li:first-child{border-top:0;padding-top:0}
.s-contrast .miss .n b{font-family:var(--mono);font-weight:500;font-size:19px;color:var(--mineral-text)}
.s-contrast .miss li>div{display:flex;flex-wrap:wrap;column-gap:18px;align-items:baseline}
.s-contrast .it{font-family:var(--serif);font-size:25px;line-height:1.3;margin:0}
.s-contrast .it.zh{font-size:23px;color:var(--ink-secondary)}
.s-contrast .low{border-top:1px solid var(--rule);padding-top:16px}
.s-contrast .ln{font-family:var(--serif);font-size:21px;line-height:1.4;margin:0}
.s-contrast .ln.zh{font-size:20px;color:var(--ink-secondary);margin-top:2px}
.s-contrast .chips{list-style:none;margin:16px 0 0 18px;padding:0;display:flex;flex-wrap:wrap;row-gap:10px}
.s-contrast .chips li{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-width:150px;padding:10px 30px 9px;margin-left:-18px;border:1.4px solid var(--ink-main);border-radius:999px}
.s-contrast .chips li:nth-child(even){border-color:var(--mineral-main)}
.s-contrast .cz{font-family:var(--zh);font-size:24px;line-height:1.2;margin:0;color:var(--ink-main)}
.s-contrast .ce{font-family:var(--sans);font-size:13px;line-height:1.2;margin:0;color:var(--ink-secondary)}

/* grid: terms three to a row, each its classical terms over its names */
.deck:not([data-mode=read]) .s-grid .field{display:grid;grid-template-rows:auto 1fr;row-gap:28px;align-content:start}
.s-grid .cells{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));column-gap:40px}
.s-grid .cells li{border-top:1.5px solid var(--ink-main);padding:12px 0 16px}
.s-grid .tm{font-family:var(--zh);font-size:38px;line-height:1.15;margin:0 0 8px;color:var(--mineral-text);letter-spacing:.04em;white-space:nowrap;display:flex;column-gap:.55em}
.s-grid .nm{font-family:var(--serif);font-size:21px;line-height:1.28;margin:0;color:var(--ink-main);text-wrap:balance}
.s-grid .nm.zh{font-size:19px;line-height:1.45;color:var(--ink-secondary);margin-top:3px}
.s-grid .names .nm{font-size:28px;line-height:1.24}
.s-grid .foot p{font-family:var(--sans);font-size:14px;margin:0}.s-grid .foot p.zh{font-family:var(--zh);font-size:14.5px}

/* stack: the output stack drawn at the left, its points at the right, the point in focus in full ink */
.deck:not([data-mode=read]) .s-stack .field{display:grid;grid-template-columns:640px minmax(0,1fr);column-gap:56px;align-items:start}
.s-stack .pic .fig{width:640px;max-width:100%;height:auto}
.s-stack .pts{list-style:none;margin:0;padding:0}
.s-stack .pts li{display:grid;grid-template-columns:54px minmax(0,1fr);column-gap:14px;border-top:1.5px solid var(--ink-main);padding:14px 0 18px}
.s-stack .pts li+li{border-top:1px solid var(--rule)}
.s-stack .pts .n b{font-family:var(--mono);font-weight:500;font-size:21px;line-height:1.4;color:var(--mineral-text)}
.s-stack .pt{transition:opacity .45s cubic-bezier(.4,0,.2,1)}
.s-stack .p{font-family:var(--serif);font-size:21px;line-height:1.42;color:var(--ink-main);margin:0;text-wrap:pretty}
.s-stack .p.zh{font-size:20px;line-height:1.62;color:var(--ink-secondary);margin-top:6px}
.deck[data-mode=present] .s-stack:not([data-all]) .pt:not(.cur){opacity:.45}

/* bands: registers side by side, told apart by their rules (solid, hatched, dotted) and their words, ≠ between */
.deck:not([data-mode=read]) .s-bands .field{display:grid;grid-template-rows:auto auto auto;row-gap:34px;align-content:start}
.s-bands .bands{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));column-gap:72px}
.s-bands .bd{position:relative;min-width:0}
.s-bands .bd .rule{display:block;height:9px;margin:0 0 16px}
.s-bands .documented .rule{background:var(--ink-main)}
.s-bands .inferred .rule{background:repeating-linear-gradient(135deg,var(--ink-main) 0 2.5px,transparent 2.5px 8px);box-shadow:inset 0 0 0 1.5px var(--ink-main)}
.s-bands .conjectural .rule{height:0;border-top:6px dotted var(--ink-main);margin-top:3px}
.s-bands .ne{position:absolute;left:-52px;top:-16px;font-family:var(--serif);font-size:40px;line-height:1;color:var(--mineral-text)}
.s-bands .bk{font-family:var(--serif);font-size:28px;font-weight:500;line-height:1.2;margin:0;color:var(--ink-main)}
.s-bands .bk.zh{font-size:26px;line-height:1.35;margin:4px 0 14px}
.s-bands .bt{font-family:var(--serif);font-size:21px;line-height:1.44;margin:0;text-wrap:pretty}
.s-bands .bt.zh{font-size:20px;line-height:1.62;color:var(--ink-secondary);margin-top:8px}
.s-bands .bline{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;border-top:1px solid var(--rule);padding-top:16px}
.s-bands .bline .lede{font-size:23px;line-height:1.4;margin:0;font-weight:500}
.s-bands .bline .lede.zh{font-size:22px;font-weight:400}

/* source: the entry on a raised plate in its own size; what the text itself says in solid frames, what may follow
   from it in dashed ones (the deck sets all Chinese in one face, so the frame, not the face, marks the source) */
.deck:not([data-mode=read]) .s-source .field{display:grid;grid-template-rows:auto 1fr;row-gap:26px;align-content:start}
.deck:not([data-mode=read]) .s-source .sbody{display:grid;grid-template-columns:520px minmax(0,1fr);column-gap:56px;align-items:start}
.s-source .src{margin:0;background:var(--paper-raised);border:1px solid var(--rule);border-top:1.5px solid var(--ink-main);padding:24px 30px 22px}
.s-source .src blockquote{margin:0}
.s-source .sz{font-family:var(--zh);font-size:82px;line-height:1.1;letter-spacing:.06em;margin:0;color:var(--ink-main);white-space:nowrap}
.s-source figcaption{font-family:var(--sans);font-size:16px;color:var(--ink-muted);margin:14px 0 0}
.s-source figcaption [lang]{font-family:var(--zh);font-size:17px}
.s-source .gl{font-family:var(--serif);font-size:20px;line-height:1.4;margin:14px 0 0;color:var(--ink-main)}
.s-source .gl.zh{font-size:19px;line-height:1.55;color:var(--ink-secondary);margin-top:4px}
.s-source .rd{display:flex;flex-direction:column;gap:20px;min-width:0}
.s-source .rd p{margin:0}
.s-source .nt{font-family:var(--serif);font-size:24px;line-height:1.35;font-weight:500;color:var(--ink-main)}
.s-source .nt.zh{font-size:22px;color:var(--ink-main);margin:2px 0 14px!important}
.s-source .lab{font-family:var(--sans);font-size:13.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 8px!important;display:flex;gap:10px;align-items:baseline}
.s-source .lab [lang]{font-family:var(--zh);font-size:16px;letter-spacing:0;text-transform:none}
.s-source .chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.s-source .chips li{display:flex;flex-direction:column;gap:2px;padding:9px 16px 8px;border:1.5px solid var(--ink-main);border-radius:2px;background:var(--paper-raised)}
.s-source .chips.is-inf li{border-style:dashed;border-color:var(--ink-secondary);background:transparent}
.s-source .cz{font-family:var(--zh);font-size:24px;line-height:1.25;color:var(--ink-main)}
.s-source .ce{font-family:var(--sans);font-size:13.5px;line-height:1.25;color:var(--ink-secondary)}
.s-source .is-inf .cz{color:var(--ink-secondary)}
.s-source .s3{border-top:1px solid var(--rule);padding-top:14px}
.s-source .ln{font-family:var(--serif);font-size:22px;line-height:1.42;color:var(--ink-main)}
.s-source .ln.zh{font-size:21px;line-height:1.6;color:var(--ink-secondary);margin-top:6px!important}

/* matrix: a condition changed, what a claim may do (a bar: whole, thinned, recoloured, forked), the outcome */
.deck:not([data-mode=read]) .s-matrix .field{display:grid;grid-template-rows:auto auto auto auto;row-gap:16px;align-content:start}
.s-matrix .tagline{margin:0}
.s-matrix .mx{list-style:none;margin:0;padding:0}
.s-matrix .mx li{display:grid;grid-template-columns:minmax(0,1fr) 200px minmax(0,1fr);column-gap:36px;align-items:center;border-top:1px solid var(--rule);padding:11px 0 10px}
.s-matrix .mx li.hd{border-top:0;padding:0 0 8px;align-items:end}
.s-matrix .mx li:nth-child(2){border-top:1.5px solid var(--ink-main)}
.s-matrix .mx p{margin:0}
.s-matrix .h{font-family:var(--sans);font-size:13.5px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted)}
.s-matrix .h.zh{font-family:var(--zh);font-size:16px;letter-spacing:0;text-transform:none;margin-top:2px!important}
.s-matrix .o{font-family:var(--serif);font-size:23px;line-height:1.3;color:var(--ink-main)}
.s-matrix .o.zh{font-size:21px;line-height:1.45;color:var(--ink-secondary);margin-top:2px!important}
.s-matrix .gl{display:flex;justify-content:center}.s-matrix .gl svg{display:block;width:160px;height:36px}
.s-matrix .mline{display:grid;grid-template-columns:1fr 1fr;column-gap:44px;border-top:1px solid var(--rule);padding-top:14px;margin-top:6px}
.s-matrix .mline .lede{font-size:22px;line-height:1.42;margin:0;font-weight:500}
.s-matrix .mline .lede.zh{font-size:21px;font-weight:400;line-height:1.6}

/* statement: the closing sentence at the field's centre, the editor's Statement template with its Chinese */
.s-statement .labs{display:flex;gap:14px;align-items:baseline;margin:0 0 22px}
.s-statement .labs .label{margin:0}
.deck:not([data-mode=read]) .s-statement .labs .label{font-size:17px}
.s-statement .labs .label.zh{font-family:var(--zh);letter-spacing:.06em;text-transform:none}
.deck:not([data-mode=read]) .s-statement .x-big{font-size:41px;line-height:1.32;max-width:1320px;white-space:normal}
.deck:not([data-mode=read]) .s-statement .lg.bow{max-width:1320px;margin:28px 0 22px}
.s-statement .x-sub.zh{color:var(--ink-main)}
.deck:not([data-mode=read]) .s-statement .x-sub.zh{font-size:33px;line-height:1.58;max-width:1320px}

/* all at once, print and reading: nothing recedes */
.deck[data-mode=present] .slide[data-all] :is(.s-scales .lt,.s-stack .pt){opacity:1}
html.print :is(.s-scales .lt,.s-stack .pt){opacity:1!important}
@media print{:is(.s-scales .lt,.s-stack .pt){opacity:1!important}}

/* reading mode: the same slides in the page's flow */
.deck[data-mode=read] .slide .head.bi{margin-bottom:.4rem}
.deck[data-mode=read] .slide .head .hz{font-size:clamp(1.25rem,2.8vw,1.75rem);margin:0 0 .6rem}
.deck[data-mode=read] .s-title.v-solo .h1z{font-size:clamp(1.9rem,5vw,3.2rem);margin:0 0 1rem}
.deck[data-mode=read] .s-title.v-solo .subz{font-size:clamp(1.05rem,2.3vw,1.5rem);margin-bottom:1.4rem}
.deck[data-mode=read] .s-title.v-solo .who{font-size:1.35rem;flex-wrap:wrap;column-gap:.6rem}
/* a name or a university keeps its Chinese whole: the pair wraps as two pieces, never inside the Chinese */
.s-title.v-solo :is(.who,.aff) [lang]{white-space:nowrap}
.deck[data-mode=read] .s-title.v-solo .aff{flex-wrap:wrap;column-gap:.5rem;row-gap:0}
.deck[data-mode=read] :is(.s-about,.s-scales,.s-contrast,.s-grid,.s-stack,.s-bands,.s-source,.s-matrix) :is(.r,.ol,.evt,.d,.t,.it,.ln,.nm,.p,.bk,.bt,.nt,.gl,.o,.lede){font-size:1.08rem;line-height:1.6}
.deck[data-mode=read] :is(.s-about,.s-scales,.s-contrast,.s-grid,.s-stack,.s-bands,.s-source,.s-matrix) :is(.evt,.bk,.nt){font-size:1.22rem}
.deck[data-mode=read] .s-about .roles li{padding:.8rem 0 1rem}
.deck[data-mode=read] .s-about .right{margin-top:1.2rem}
.deck[data-mode=read] .s-about .lock img{height:48px}
.deck[data-mode=read] .s-scales .nest{display:flex;flex-direction:column;gap:.7rem}
.deck[data-mode=read] .s-scales .lv{border:1px solid var(--rule-strong);padding:.2rem 0 .7rem}
.deck[data-mode=read] .s-scales .lt{display:block;opacity:1;padding:.6rem .9rem 0}
.deck[data-mode=read] .s-scales .smp{font-size:1.5rem;margin:.5rem .9rem 0}.deck[data-mode=read] .s-scales .smpr{margin:.2rem .9rem 0}
.deck[data-mode=read] :is(.s-scales .sline,.s-bands .bline,.s-matrix .mline){display:block;margin-top:1.2rem}
.deck[data-mode=read] .s-contrast .two{display:block}.deck[data-mode=read] .s-contrast .cr{margin-top:1.4rem}
.deck[data-mode=read] .s-contrast .low{margin-top:1.4rem}
.deck[data-mode=read] .s-contrast .chips li{min-width:0;padding:.45rem 1.3rem}
.deck[data-mode=read] .s-grid .cells{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr))}
.deck[data-mode=read] .s-grid .tm{font-size:1.8rem}
.deck[data-mode=read] .s-stack .pic .fig{width:100%;max-width:520px}
.deck[data-mode=read] .s-stack .pts{margin-top:1rem}.deck[data-mode=read] .s-stack .pt{opacity:1}
.deck[data-mode=read] .s-bands .bands{grid-template-columns:1fr;row-gap:1.6rem}
.deck[data-mode=read] .s-bands .ne{position:static;display:block;font-size:1.6rem;margin:0 0 .4rem}
.deck[data-mode=read] .s-source .sbody{display:block}.deck[data-mode=read] .s-source .rd{margin-top:1.2rem}
.deck[data-mode=read] .s-source .sz{font-size:clamp(2.6rem,9vw,4.4rem);white-space:normal}
.deck[data-mode=read] .s-matrix .mx li{grid-template-columns:1fr;row-gap:.3rem}
.deck[data-mode=read] .s-matrix .mx li.hd{display:none}
.deck[data-mode=read] .s-matrix .gl{justify-content:flex-start}
.deck[data-mode=read] .s-statement .x-big{font-size:clamp(1.35rem,3.4vw,1.9rem);line-height:1.4}
.deck[data-mode=read] .s-statement .x-sub.zh{font-size:clamp(1.2rem,3vw,1.6rem)}

/* ---------- the editor's slides, pictures and Ask (edit.js, ask.js) ----------
   Sheets over the deck in the editor's plain chrome; the buttons are the playingheaven-ui registry's button-css. */
/* the registry's button sets its own display, which would otherwise outrank the hidden attribute */
.edsheet [hidden]{display:none!important}
.deck.editing .s-x [data-field]{cursor:text}
.deck.editing .s-x [data-field]:hover{outline:1px dashed var(--mineral-soft);outline-offset:4px}
.deck.editing .s-x [data-default]{color:var(--ink-muted)}
.deck.editing .s-x .x-pic.empty .x-well:hover{border-color:var(--mineral-main);color:var(--mineral-text)}
.edsheet{position:fixed;left:50%;top:58px;transform:translateX(-50%);z-index:53;width:min(1000px,94vw);max-height:calc(100vh - 76px);overflow:auto;background:var(--paper-raised);border:1px solid var(--rule-strong);border-radius:3px;padding:20px 24px 18px;font-family:var(--sans);font-size:14px;line-height:1.45;color:var(--ink-main);box-shadow:0 10px 36px rgba(20,30,50,.16)}
.edsheet[hidden]{display:none}
.edsheet h2{font-family:var(--serif);font-weight:500;font-size:24px;line-height:1.2;margin:0}
.edsheet .lg.bow{display:block;width:100%;height:12px;color:var(--rule-strong);margin:10px 0 10px}
.edsheet p{margin:0 0 12px;color:var(--ink-secondary)}
.edsheet .acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:6px}
.edtpl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:4px 0 14px;padding:0;list-style:none}
@media (max-width:760px){.edtpl{grid-template-columns:repeat(2,minmax(0,1fr))}}
.edtpl button{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%;height:100%;text-align:left;padding:10px;border:1px solid var(--rule);border-radius:2px;background:var(--paper-main);color:var(--ink-main);cursor:pointer}
.edtpl button:hover,.edtpl button:focus-visible{border-color:var(--mineral-main);background:var(--mineral-wash)}
.edtpl svg{display:block;width:100%;height:auto;border:1px solid var(--rule);background:var(--paper-main)}
.edtpl svg .t{fill:var(--ink-muted)}.edtpl svg .h{fill:var(--ink-main)}.edtpl svg .a{fill:var(--mineral-main)}
.edtpl svg .w{fill:none;stroke:var(--rule-strong);stroke-dasharray:3 2}.edtpl svg .b{fill:none;stroke:var(--ink-main);stroke-width:.7}
.edtpl svg .r{fill:none;stroke:var(--rule-strong);stroke-width:.6}.edtpl svg .k{fill:none;stroke:var(--ink-main);stroke-width:1}.edtpl svg .q{fill:none;stroke:var(--mineral-main);stroke-width:1.2}
.edtpl svg .p{fill:var(--paper-raised);stroke:var(--rule)}
.edtpl .nm{font-family:var(--serif);font-size:17px;font-weight:500;line-height:1.2}
.edtpl .nt{font-size:12.5px;line-height:1.35;color:var(--ink-muted)}
.edpics{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin:4px 0 12px;padding:0;list-style:none}
.edpics button{display:flex;flex-direction:column;gap:6px;width:100%;padding:8px;border:1px solid var(--rule);border-radius:2px;background:var(--paper-main);color:var(--ink-main);text-align:left;cursor:pointer;font-size:12px;word-break:break-all}
.edpics button:hover,.edpics button:focus-visible,.edpics button[aria-pressed=true]{border-color:var(--mineral-main);background:var(--mineral-wash)}
.edpics img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:var(--paper-raised)}
.edsheet label.lb{display:block;font-size:12.5px;letter-spacing:.04em;color:var(--ink-muted);margin:6px 0 4px}
.edsheet input[type=text]{width:100%;font:inherit;font-size:14px;color:var(--ink-main);background:var(--paper-main);border:1px solid var(--rule-strong);border-radius:2px;padding:5px 8px}
.edsheet ul.gone{list-style:none;margin:0 0 10px;padding:0}
.edsheet ul.gone li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--rule)}
.edsheet ul.gone li span{font-family:var(--serif);font-size:15.5px}
/* Ask a model: talks-kit's panel (tk-panel tk-ask, the same as talks.javiercha.com's, in kit-template.css's dress),
   placed under the bar at the right; moved, it stays where it was put. What goes in it is this site's: a proposal's
   meta line, summary, word diff, timing and limits */
.tk-panel.tk-ask{top:58px;right:14px;width:min(420px,calc(100vw - 80px));max-height:calc(100vh - 120px);max-height:calc(100dvh - 120px);z-index:54}
.tk-ask .hint{font-size:12.5px;line-height:1.4;color:var(--ink-muted);margin:0}
.tk-ask .hint[hidden]{display:none}
.tk-ask .cant{font-size:12.5px;line-height:1.45;color:var(--ink-secondary);border-top:1px solid var(--rule);padding-top:8px;margin:0}
.tk-ask .row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.tk-ask .tk-ask-result{border-top:1px solid var(--rule);padding-top:10px}
.tk-ask .tk-ask-result[hidden]{display:none}
.tk-ask .meta{font-size:12.5px;color:var(--ink-muted);margin:0 0 6px}
.tk-ask .sum{font-family:var(--serif);font-size:15.5px;line-height:1.45;margin:0 0 8px}
.tk-ask ol.chg{list-style:none;margin:0;padding:0}
.tk-ask ol.chg li{border-top:1px solid var(--rule);padding:8px 0}
.tk-ask .who{font-size:12.5px;color:var(--ink-muted);margin:0 0 4px}
.tk-ask .diff{font-family:var(--serif);font-size:15px;line-height:1.5;margin:0}
.tk-ask .diff del{color:var(--ink-muted);text-decoration:line-through;text-decoration-color:var(--rule-strong)}
.tk-ask .diff ins{text-decoration:none;background:var(--mineral-wash);color:var(--mineral-text);box-shadow:inset 0 -1px 0 var(--mineral-soft)}
.tk-ask .prop{font-size:13px;color:var(--ink-secondary);margin:3px 0 0}
.tk-ask .why{font-size:12.5px;color:var(--ink-muted);margin:3px 0 0}
.tk-ask .lim{margin:8px 0 0;font-size:13px;color:var(--ink-secondary)}
.tk-ask .lim b{display:block;font-weight:600;color:var(--ink-main);margin-bottom:2px}
.tk-ask .lim ul{margin:0;padding-left:1.1rem}
.tk-ask details{margin-top:8px;font-size:13px;color:var(--ink-secondary)}
.tk-ask details ul{margin:4px 0 0;padding-left:1.1rem}
/* the editor's rail (talks-kit, edit.js): the left edge, which the deck leaves it while editing (deck.js fit), and the
   bar above the slide beside it */
.tk-rail.ph-rail{z-index:53;width:52px;background:var(--paper-raised);border-right:1px solid var(--rule-strong)}
.tk-rail.ph-rail[hidden]{display:none}
.tk-rail.ph-rail .tk-rail-title{color:var(--ink-muted)}
.deck.editing[data-mode=present] .stage{left:calc(50% + 26px)}
body:has(.deck.editing) .edbar{left:calc(50% + 26px);max-width:min(1540px,calc(96vw - 52px))}
@media (max-width:600px){
  .tk-rail.ph-rail{top:auto;bottom:0;right:0;width:auto;flex-direction:row;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));border-right:0;border-top:1px solid var(--rule-strong);overflow-x:auto}
  .tk-rail.ph-rail .tk-sep{width:1px;height:22px;margin:0 6px}
  .tk-rail.ph-rail .tk-rail-spacer{flex:0 0 8px}
  .deck.editing[data-mode=present] .stage{left:50%}
}
/* a phone's Back and Forward (build_talks.py fab_nav, deck.js): reading mode, on a narrow or touch screen */
.tk-fab-nav.ph-fab{display:none}
@media (max-width:899px),(hover:none){.deck[data-mode=read] .tk-fab-nav.ph-fab{display:flex}}
html.print .tk-fab-nav,html.print .tk-rail,html.print .tk-panel{display:none!important}
.deck .ed-flash{outline:2px solid var(--mineral-main)!important;outline-offset:3px}
html.print .edsheet{display:none!important}
@media print{.edsheet{display:none!important}}
/* pictures from edit mode (deck.js pictures; the author, 28 Oct 2026: "Make it possible to add a new picture, including
   from clipboard"). An added one is the slide's last child, laid over the slide where the editor put it, at one of
   three widths, so nothing already on the slide moves; reading mode sets it in the flow, under the slide's own. A built
   picture shown with another in its place keeps showing it in either theme. */
.slide>.ph-pic{position:absolute;z-index:2;margin:0;display:flex;flex-direction:column;gap:8px;box-sizing:border-box}
.slide>.ph-pic img{display:block;width:100%;height:auto;max-height:600px;object-fit:contain;border-radius:2px}
.slide>.ph-pic figcaption{font:400 15px/1.4 var(--sans);color:var(--ink-muted)}
.slide>.ph-pic figcaption[hidden]{display:none}
.slide>.ph-pic[data-size=s]{width:26%}.slide>.ph-pic[data-size=m]{width:38%}.slide>.ph-pic[data-size=l]{width:56%}
.slide>.ph-pic[data-at=right]{right:80px;top:50%;transform:translateY(-50%)}
.slide>.ph-pic[data-at=left]{left:96px;top:50%;transform:translateY(-50%)}
.slide>.ph-pic[data-at=top-right]{right:80px;top:132px}
.slide>.ph-pic[data-at=top-left]{left:96px;top:132px}
.slide>.ph-pic[data-at=bottom-right]{right:80px;bottom:52px}
.slide>.ph-pic[data-at=bottom-left]{left:96px;bottom:52px}
.slide>.ph-pic[data-at=center]{left:50%;top:50%;transform:translate(-50%,-50%)}
.deck[data-mode=read] .slide>.ph-pic{position:static;transform:none;width:auto;max-width:min(100%,760px);margin:24px auto 0}
.slide img[data-ph-replaced]~img.dark{display:none!important}
:root[data-theme=dark] .slide img.light[data-ph-replaced]{display:block!important}

/* Slides brought over from the HKU and Cambridge lectures (the author, 31 Oct 2026), in this deck's type */
.deck:not([data-mode=read]) .s-hist .field{display:grid;grid-template-columns:440px minmax(0,1fr);column-gap:64px;align-items:start}
.s-hist .t{font-family:var(--serif);font-size:31px;line-height:1.36;margin:0 0 30px;color:var(--ink-main);text-wrap:pretty}
.s-hist .t i{font-style:italic}
.s-hist .per{list-style:none;margin:0;padding:0;display:flex;gap:26px}
.s-hist .per li{border-top:2px solid var(--mineral-main);padding-top:8px;font-family:var(--mono);font-size:22px;color:var(--ink-main)}
.s-hist figure{margin:0}
.s-hist svg{display:block;width:100%;height:auto;border:1px solid var(--rule);background:var(--paper-raised);color:var(--mineral-main)}
.s-hist svg text{font-family:var(--serif)}
.s-hist .nb text{font-style:italic;font-size:30px;fill:var(--ink-secondary)}
.s-hist .lab text{font-size:37px;fill:var(--ink-main)}
.s-hist .lab .yr{font-size:25px;fill:var(--ink-secondary)}
.s-hist .pts circle{fill:var(--ink-main)}
.s-hist .pth path{fill:none;stroke:var(--mineral-main);stroke-width:3}
.deck:not([data-mode=read]) .s-wordspace .field{display:grid;grid-template-columns:minmax(0,640px) minmax(0,1fr);column-gap:56px;row-gap:30px;align-content:start;grid-template-rows:auto auto}
.s-wordspace .psg{border:1px solid var(--rule);background:var(--paper-raised);padding:22px 26px}
.s-wordspace .psg p{margin:0}
.s-wordspace .z{font-family:var(--zh);font-size:29px;line-height:1.6;color:var(--ink-main)}
.s-wordspace .e{font-family:var(--serif);font-size:20px;line-height:1.42;color:var(--ink-main);margin-top:16px!important}
.s-wordspace .c{font-family:var(--sans);font-size:15px;color:var(--ink-muted);margin-top:6px!important}
.s-wordspace .sp{margin:0;position:relative;border:1px solid var(--rule);padding:8px}
.s-wordspace .sp svg{display:block;width:100%;height:auto}
.s-wordspace .sp .tagline{position:absolute;left:12px;bottom:10px;margin:0}
.s-wordspace .dots circle{fill:var(--ink-muted);opacity:.65}
.s-wordspace .ring{fill:none;stroke:var(--ink-secondary);stroke-width:1.4;stroke-dasharray:5 5}
.s-wordspace .marks circle{fill:var(--ink-main)}
.s-wordspace .chs text{font-family:var(--zh);font-size:27px;fill:var(--ink-main)}
.s-wordspace .low{grid-column:1/-1}
.s-wordspace .pr{font-family:var(--serif);font-size:46px;line-height:1.2;margin:0 0 14px;color:var(--ink-main)}
.s-wordspace .nx{font-family:var(--serif);font-size:27px;line-height:1.38;margin:0;color:var(--ink-secondary);max-width:1180px;text-wrap:pretty}
.s-context .egs{list-style:none;margin:0 0 26px;padding:0;display:grid;grid-template-columns:1fr 1fr;column-gap:56px}
.s-context .egs li{border-left:2px solid var(--mineral-main);padding-left:18px}
.s-context .egs p{margin:0}
.s-context .s{font-family:var(--serif);font-size:38px;line-height:1.2;color:var(--ink-main)}
.s-context .s b{font-weight:600;border-bottom:2px solid var(--mineral-main)}
.s-context .g{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink-secondary);margin-top:6px!important}
.s-context .cols{display:grid;grid-template-columns:1fr 1fr;column-gap:56px}
.s-context .col{border-top:1.5px solid var(--ink-main);padding-top:12px}
.s-context .k{font-family:var(--sans);font-size:17px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-secondary);margin:0}
.s-context .k b{font-weight:600;color:var(--ink-main);margin-right:10px}
.s-context figure{margin:6px 0}
.s-context svg{display:block;width:100%;max-width:440px;height:auto;color:var(--ink-secondary)}
.s-context .hair path{fill:none;stroke:var(--ink-secondary);stroke-width:1.3}
.s-context .node{fill:var(--mineral-main)}
.s-context .w{font-family:var(--serif);font-size:25px;fill:var(--ink-main)}
.s-context .app{font-family:var(--mono);font-size:15px;fill:var(--ink-muted)}
.s-context .ln{font-family:var(--serif);font-size:23px;line-height:1.36;margin:0;color:var(--ink-main);text-wrap:pretty}
.s-paths .paths{list-style:none;margin:0 0 34px;padding:0}
.s-paths .paths li{display:grid;grid-template-columns:minmax(0,760px) 150px minmax(0,1fr);column-gap:26px;align-items:center;border-top:1px solid var(--rule);padding:20px 0}
.s-paths .paths p{margin:0}
.s-paths .mid{font-family:var(--serif);font-size:27px;line-height:1.36;color:var(--ink-main);text-wrap:pretty}
.s-paths .end{font-family:var(--sans);font-size:19px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-main)}
.s-paths .link{display:block;height:0;border-top:3px solid var(--mineral-main);position:relative}
.s-paths .link::after{content:"";position:absolute;right:-1px;top:-8px;width:13px;height:13px;border-top:3px solid var(--mineral-main);border-right:3px solid var(--mineral-main);transform:rotate(45deg)}
.s-paths .p-m .link{border-top-style:dashed}
.s-paths .p-m .end{color:var(--ink-secondary)}
.s-paths .pr{font-family:var(--serif);font-size:46px;line-height:1.2;margin:0 0 14px;color:var(--ink-main)}
.s-paths .nx{font-family:var(--serif);font-size:27px;line-height:1.38;margin:0;color:var(--ink-secondary);max-width:1180px;text-wrap:pretty}
.deck:not([data-mode=read]) .s-tacit .field{display:grid;grid-template-columns:minmax(0,1fr) 560px;column-gap:44px;align-items:start}
.s-tacit .t{font-family:var(--serif);font-size:24px;line-height:1.38;margin:0 0 14px;color:var(--ink-secondary);text-wrap:pretty}
.s-tacit .pr{font-family:var(--serif);font-size:33px;line-height:1.26;margin:0 0 22px;color:var(--ink-main);text-wrap:pretty}
.s-tacit .pnl{background:var(--ink-main);color:var(--paper-raised);padding:16px 24px 18px;font-family:var(--mono)}
.s-tacit .bar{display:flex;align-items:center;gap:12px;margin:0 0 10px;font-size:14.5px;color:var(--paper-deep);border-bottom:1px solid color-mix(in srgb,var(--paper-raised) 30%,transparent);padding-bottom:8px}
.s-tacit .chip{border:1px solid currentColor;padding:1px 7px;font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.s-tacit .nt{margin-left:auto;font-size:13px}
.s-tacit .ln{font-size:18px;line-height:1.46;margin:0 0 10px}
.s-tacit .ln:last-child{margin-bottom:0}
.s-tacit .ln b{font-weight:500;color:var(--mineral-wash)}
.s-tacit .tx ol{list-style:none;margin:0;padding:0}
.s-tacit .tx li{display:grid;grid-template-columns:44px minmax(0,1fr) auto;column-gap:6px;font-size:15.5px;line-height:1.3;padding:5px 0;opacity:.42}
.s-tacit .tx li.live{opacity:1}
.s-tacit .tx .sl{font-size:12.5px;letter-spacing:.04em}
.deck[data-mode=read] :is(.s-hist,.s-wordspace,.s-context,.s-paths,.s-tacit) :is(.t,.e,.nx,.ln,.mid){font-size:1.08rem;line-height:1.6}
.deck[data-mode=read] :is(.s-wordspace,.s-paths) .pr{font-size:1.5rem}
.deck[data-mode=read] .s-tacit .pr{font-size:1.3rem}
.deck[data-mode=read] .s-tacit .field>*+*{margin-top:1rem}
.deck[data-mode=read] .s-context :is(.egs,.cols){grid-template-columns:1fr;row-gap:1rem}
.deck[data-mode=read] .s-context .s{font-size:1.5rem}
.deck[data-mode=read] .s-paths .paths li{grid-template-columns:1fr;row-gap:.5rem}
.deck[data-mode=read] .s-paths .link{width:120px}
.deck[data-mode=read] .s-hist .field>*+*{margin-top:1rem}
.deck[data-mode=read] .s-wordspace .field>*+*{margin-top:1rem}
.s-distill .demo .dsal{font-family:var(--sans);font-size:14px;letter-spacing:.04em;color:var(--ink-muted);margin-left:8px}
.s-about .lock img{height:124px}
.deck:not([data-mode=read]) .s-wordspace .field{padding-top:78px}

.deck:not([data-mode=read]) .slide .top.one{grid-template-columns:minmax(0,1240px)}
html.print .s-distill .demo .st[data-print] .dims li:nth-child(n+4){display:none}

/* The DADH talk in English only (the author, 31 Oct 2026): larger type on every slide, figures held to a size */
.s-title .byline{display:flex;align-items:center;gap:56px}
.s-title .lock{margin:0}.s-title .lock img{display:block;height:84px;width:auto}
.s-title .lock img.dark{display:none}:root[data-theme=dark] .s-title .lock img.dark{display:block}:root[data-theme=dark] .s-title .lock img.light{display:none}
.s-title .ack{display:flex;align-items:center;gap:18px;margin-top:40px;font-family:var(--sans);color:var(--ink-secondary)}
.s-title .ack p{margin:0}.s-title .ack .wm{height:30px;width:auto;display:block}
.s-title .ack .wm-dark{display:none}:root[data-theme=dark] .s-title .ack .wm{display:none}:root[data-theme=dark] .s-title .ack .wm-dark{display:block}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo{padding-top:150px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo h1{font-size:112px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo .sub{font-size:38px;margin:0 0 56px;max-width:none}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo .who{font-size:36px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo .aff{font-size:23px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo .crest{height:72px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title .ack{font-size:21px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title .perm .seps{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .foot,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .foot p{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .slide .top .lede,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .slide>.field>p.lede{font-size:28px;line-height:1.36;font-weight:400}
/* word vectors */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .field{grid-template-columns:600px 700px;column-gap:80px;align-items:center;justify-content:start;height:100%}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .t{font-size:38px;line-height:1.34}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .per li{font-size:27px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .nb text{font-size:33px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .lab text{font-size:41px}
/* the limit */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .field{grid-template-columns:880px 480px;column-gap:50px;padding-top:62px;align-items:center}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .z{font-size:35px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .e{font-size:24px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .c{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .pr{font-size:58px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wordspace .nx{font-size:32px}
/* contextual representation */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .s{font-size:48px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .g{font-size:24px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .k{font-size:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context svg{max-width:330px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .ln{font-size:29px}
/* reading */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-paths .mid{font-size:33px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-paths .end{font-size:22px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-paths .pr{font-size:56px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-paths .nx{font-size:31px}
/* the distillation: a smaller figure, its panel larger */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .flow svg{width:1120px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill ol.stages{display:none}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .slide .top .lede,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .top .lede{font-size:23px;line-height:1.32}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .st{grid-template-columns:430px 1fr;column-gap:36px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .kick{font-size:26px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .cmd{font-size:15.5px;white-space:normal}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .cmd .ps{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .opl{font-size:18px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .secs li{font-size:17.5px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .secs .sq{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .txt{font-size:25px;line-height:1.34}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .sub{font-size:21px;line-height:1.36}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .lead{font-size:21px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .zh{font-size:30px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .en{font-size:23px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .who{font-size:15.5px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dn{font-size:18px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .code{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dc{font-size:18px;line-height:1.3}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dsal{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .term,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .pair{font-size:16.5px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain li{font-size:21px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .foot .label,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .foot{font-size:15px}
/* tacit knowledge */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .field{grid-template-columns:minmax(0,1fr) 590px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .t{font-size:27px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .pr{font-size:38px;line-height:1.24}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .ln{font-size:21px;line-height:1.4}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .bar{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .tx li{font-size:19px;grid-template-columns:52px minmax(0,1fr) auto;padding:6px 0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .tx .sl{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-tacit .nt{font-size:15px}
/* the domains */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .names .nm{font-size:35px;line-height:1.22}
/* revision */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-stack .field{grid-template-columns:520px minmax(0,1fr)}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-stack .pic .fig{width:520px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-stack .p{font-size:28px;line-height:1.36}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-stack .pts .n b{font-size:25px}
/* bands */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-bands .bk{font-size:35px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-bands .bt{font-size:26px;line-height:1.36}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-bands .bline .lede{font-size:30px}
/* source */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source figcaption{font-size:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source .gl{font-size:25px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source .nt{font-size:29px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source .lab{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source .ce{font-size:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-source .ln{font-size:27px}
/* matrix */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-matrix .h{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-matrix .o{font-size:30px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-matrix .mline .lede{font-size:30px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-matrix .tagline .tag{font-size:15px}
/* debate */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu .lede,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu>.field>.lede{font-size:24px;line-height:1.34}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title.v-solo{padding-top:190px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .w{font-size:32px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-context .app{font-size:19px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu .field>.lede{font-size:22px;line-height:1.3;max-width:none;width:100%;column-count:1;margin:0 0 8px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu .field>.lede{font-size:19.5px!important;line-height:1.28!important;margin:0 0 4px!important}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dn{font-size:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dc{font-size:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .txt{font-size:28px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .sub{font-size:23px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .kick{font-size:28px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .term,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .pair{font-size:18px}
/* the ten domains: two aligned columns, each name on one line over its characters */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .field{row-gap:20px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .cells{grid-template-columns:1fr 1fr;grid-template-rows:repeat(5,auto);grid-auto-flow:column;column-gap:48px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .cells li{display:flex;flex-direction:column;padding:10px 0 12px;border-top:1px solid var(--rule)}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .cells li:nth-child(5n+1){border-top:1.5px solid var(--ink-main)}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .nm{order:1;font-size:28px;line-height:1.25;white-space:nowrap}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-grid .tm{order:2;font-size:27px;line-height:1.3;margin:4px 0 0}
/* one face for all Chinese: TW-Kai has one weight, so it is never given a synthesized bold */
.deck[data-talk="2026-10-31/dadh"]{font-synthesis-weight:none}
/* From the Cambridge workshop (the author, 31 Oct 2026) */
.s-question .q p{margin:0}
.s-question .qt{font-family:var(--serif);font-size:84px;line-height:1.1;color:var(--ink-main);margin-bottom:34px!important}
.s-question .qb{font-family:var(--serif);font-size:42px;line-height:1.3;color:var(--ink-secondary);max-width:1180px;margin-bottom:60px!important}
.s-question .qa{font-family:var(--serif);font-size:68px;line-height:1.15;color:var(--ink-main)}
.deck:not([data-mode=read]) .s-question .field{display:flex;align-items:center;height:100%}
.s-ladder .ld{font-family:var(--serif);font-size:29px;line-height:1.34;margin:0 0 10px;color:var(--ink-main);max-width:1320px}
.s-ladder .bd{font-family:var(--serif);font-size:24px;line-height:1.36;margin:0 0 12px;color:var(--ink-secondary);max-width:1320px}
.s-ladder .tagline{margin:0 0 6px}
.s-ladder .ladder{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:38px;align-items:end}
.s-ladder .ladder li{position:relative;background:var(--paper-raised);border:1px solid var(--rule);border-left:2px solid var(--mineral-main);padding:12px 16px 16px;display:flex;flex-direction:column;gap:6px}
.s-ladder .ladder li+li::before{content:"→";position:absolute;left:-31px;bottom:50px;font-size:24px;color:var(--ink-muted)}
.s-ladder .r0{min-height:190px;border:2px solid var(--ink-main)!important}.s-ladder .r1{min-height:206px}.s-ladder .r2{min-height:222px}.s-ladder .r3{min-height:238px}.s-ladder .r4{min-height:254px}
.s-ladder .ladder li.open{border:1.5px dashed var(--ink-secondary)}
.s-ladder .n{font-family:var(--mono);font-size:17px;color:var(--ink-muted)}
.s-ladder .k{font-family:var(--sans);font-size:23px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-main);line-height:1.2}
.s-ladder .op{font-family:var(--serif);font-size:23px;line-height:1.28;color:var(--ink-secondary)}
.s-ladder .ret{margin-top:6px;text-align:center}
.s-ladder .ret .line{display:block;height:20px;margin:0 9%;border:2px solid var(--mineral-main);border-top:0;border-radius:0 0 10px 10px}
.s-ladder .ret p{font-family:var(--serif);font-style:italic;font-size:27px;margin:6px 0 0;color:var(--mineral-text)}
.deck:not([data-mode=read]) .s-agents .field{display:grid;grid-template-columns:640px minmax(0,1fr);column-gap:56px;align-items:start}
.s-agents .side{border:1px solid var(--rule);background:var(--paper-raised);padding:14px 22px 16px;margin-bottom:16px}
.s-agents .kind{font-family:var(--sans);font-size:17px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 4px}
.s-agents .ln{font-family:var(--serif);font-size:32px;margin:0;color:var(--ink-main)}
.s-agents ul{margin:6px 0 0;padding-left:24px}
.s-agents .side li{font-family:var(--serif);font-size:26px;line-height:1.34;color:var(--ink-main);margin-top:5px}
.s-agents .df{font-family:var(--serif);font-size:30px;line-height:1.34;margin:0 0 20px;color:var(--ink-main)}
.s-agents .given{list-style:none;padding:0;margin:6px 0 0}
.s-agents .given li{display:grid;grid-template-columns:110px minmax(0,1fr);border:1px dashed var(--rule-strong);padding:9px 14px;margin-bottom:7px;align-items:baseline}
.s-agents .gk{font-family:var(--mono);font-weight:500;font-size:18px;color:var(--ink-main)}
.s-agents .gt{font-family:var(--serif);font-size:24px;line-height:1.25;color:var(--ink-secondary)}
.deck[data-mode=read] .s-question .qt{font-size:2rem}.deck[data-mode=read] .s-question .qb{font-size:1.2rem}.deck[data-mode=read] .s-question .qa{font-size:1.6rem}
.deck[data-mode=read] .s-ladder .ladder{grid-template-columns:1fr;row-gap:.5rem}
.deck[data-mode=read] .s-ladder .ladder li{min-height:0!important}.deck[data-mode=read] .s-ladder .ladder li::before{display:none}
.deck[data-mode=read] .s-ladder :is(.ld,.bd,.op,.k){font-size:1.05rem}
.deck[data-mode=read] .s-agents .field>*+*{margin-top:1rem}
.deck[data-mode=read] .s-agents :is(.ln,.df,.side li,.gt){font-size:1.05rem}
.deck[data-mode=read] .s-agents .given li{grid-template-columns:5rem 1fr}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain .id{font-size:18px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain .what{font-size:23px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain li{margin-bottom:6px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .flow svg .t-lab{font-size:18px}
/* word vectors, arranged as at Cambridge: heading and text at the left; periods, figure, caption at the right */
.s-hist .ht{font-family:var(--serif);font-weight:500;margin:0 0 .7em;color:var(--ink-main)}
.s-hist figcaption{font-family:var(--sans);color:var(--ink-secondary);margin-top:10px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .field{grid-template-columns:520px 760px;column-gap:64px;align-items:start;height:auto;padding-top:6px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .ht{font-size:44px;line-height:1.2}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .t{font-size:34px;line-height:1.36;margin:0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .per{margin:0 0 22px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist figcaption{font-size:18px;line-height:1.35}
.deck[data-mode=read] .s-hist .ht{font-size:1.5rem}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .field{grid-template-columns:560px 740px;column-gap:56px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .hl{min-width:0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .ht{font-size:39px;line-height:1.22;white-space:normal!important;position:static;width:auto;max-width:560px}
.s-timeline .seq{list-style:none;margin:0 0 20px;padding:0}
.s-timeline .seq li{display:grid;grid-template-columns:170px minmax(0,1fr);column-gap:24px;align-items:baseline;border-top:1px solid var(--rule);padding:9px 0}
.s-timeline .seq p{margin:0}
.s-timeline .yr{font-family:var(--mono);font-size:22px;color:var(--mineral-text)}
.s-timeline .tt{font-family:var(--serif);font-size:29px;line-height:1.2;color:var(--ink-main)}
.s-timeline .gl{font-family:var(--serif);font-size:23px;line-height:1.28;color:var(--ink-secondary)}
.s-timeline .take{font-family:var(--serif);font-size:28px;line-height:1.34;margin:0;color:var(--ink-main);max-width:1340px;text-wrap:pretty}
.deck[data-mode=read] .s-timeline .seq li{grid-template-columns:1fr}
.deck[data-mode=read] .s-timeline :is(.tt,.gl,.take){font-size:1.05rem}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) #s14 .x-big{font-size:104px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) #s14 .foot a{font-size:27px;padding:10px 18px}
.s-timeline .seq li{grid-template-columns:230px minmax(0,1fr);padding:20px 0}
.s-timeline .yr{font-size:30px}
.s-timeline .tt{font-size:40px}
.s-timeline .seq li{padding:11px 0}
.s-timeline .yr{font-size:27px}
.s-timeline .tt{font-size:33px}
.s-timeline .gl{font-size:26px}
/* the simulation: the figure at its full width again */
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .flow svg{width:1424px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .flow{margin-top:6px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .flow svg .t-lab{font-size:15px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .top .lede{font-size:21px;line-height:1.3}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo{margin-top:4px;min-height:0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .st{grid-template-columns:400px 1fr;column-gap:30px;padding-top:8px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .kick{font-size:23px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .secs li{font-size:15.5px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .txt{font-size:23px;line-height:1.3}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .sub{font-size:19px;line-height:1.3}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .lead{font-size:18px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims{row-gap:3px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dn{font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .dims .dc{font-size:17px;line-height:1.24}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .term,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .pair{font-size:16px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .terms,.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .pairs{margin-top:6px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .who{font-size:14px;margin-top:5px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain .id{white-space:nowrap;font-size:17px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain .what{font-size:21px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain li{margin-bottom:2px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .chain li{display:grid;grid-template-columns:300px minmax(0,1fr);column-gap:16px;align-items:baseline}
.s-ladder .nt{font-family:var(--serif);font-size:28px;line-height:1.3;margin:14px 0 0;color:var(--ink-main);max-width:1340px}
.deck[data-mode=read] .s-ladder .nt{font-size:1.05rem}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .l{min-width:0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .cmd{white-space:normal;align-items:flex-start;max-width:100%}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .cmd .ps{flex:none}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-distill .demo .cmd code{white-space:pre-wrap;overflow-wrap:break-word;min-width:0;line-height:1.4}

.s-wordspace mark{background:none;color:inherit;box-shadow:inset 0 -.16em 0 color-mix(in srgb,var(--mineral-main) 42%,transparent)}
.deck:not([data-mode=read]) .s-timeline .seq{max-width:1120px}
.deck:not([data-mode=read]) .s-timeline .seq{max-width:1250px}
.s-agents .lw{grid-column:1/-1;border-top:1.5px solid var(--ink-main);padding-top:10px;margin-top:2px}
.s-agents .orc{font-family:var(--serif);font-size:27px;line-height:1.3;margin:0 0 8px;color:var(--ink-main)}
.s-agents .runs{list-style:none;padding:0;margin:4px 0 0;display:grid;grid-template-columns:repeat(3,1fr);column-gap:28px}
.s-agents .runs li{display:flex;flex-direction:column;border-left:2px solid var(--mineral-main);padding-left:12px}
.s-agents .runs .gk{font-size:21px}
.deck:not([data-mode=read]) .s-agents .side{padding:9px 20px 11px;margin-bottom:10px}
.deck:not([data-mode=read]) .s-agents .ln{font-size:27px}
.deck:not([data-mode=read]) .s-agents .side li{font-size:22px;line-height:1.26;margin-top:2px}
.deck:not([data-mode=read]) .s-agents .df{font-size:25px;line-height:1.28;margin:0 0 10px}
.deck:not([data-mode=read]) .s-agents .given li{padding:4px 12px;margin-bottom:4px}
.deck:not([data-mode=read]) .s-agents .gt{font-size:21px}
.deck:not([data-mode=read]) .s-agents .runs .gt{font-size:23px}
.deck[data-mode=read] .s-agents .runs{grid-template-columns:1fr;row-gap:.5rem}
.deck[data-mode=read] .s-agents .orc{font-size:1.05rem}
.deck:not([data-mode=read]) .s-agents .field{align-content:start;row-gap:26px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .field{padding-top:0;grid-template-columns:540px 740px;column-gap:76px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .per{margin:0 0 16px}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-hist .t{font-size:36px}
.s-timeline .gl{font-size:21px}
.s-timeline .tt{font-size:36px}
.deck:not([data-mode=read]) .s-timeline .seq{width:fit-content;max-width:none}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-question .qb{margin-bottom:0!important}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu .room{zoom:1.1;width:100%;box-sizing:border-box}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-wangsu .field{grid-template-rows:auto}
.s-matrix .mx.plain li{grid-template-columns:minmax(0,5fr) 0 minmax(0,7fr);column-gap:24px;padding:16px 0}
.deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-matrix .mx.plain .o{font-size:29px}
/* the bamboo behind every DADH slide; the title's fixed picture gives way to it once it is drawn */
.deck[data-talk="2026-10-31/dadh"] .slide{isolation:isolate}
.deck[data-talk="2026-10-31/dadh"] .bbg{position:absolute;left:0;top:0;width:100%;height:100%;z-index:-1;pointer-events:none;color:#000}
:root[data-theme=dark] .deck[data-talk="2026-10-31/dadh"] .bbg{color:#fff;opacity:.8}
.deck[data-talk="2026-10-31/dadh"][data-mode=read] .bbg{display:none}
.bbg-live .deck[data-talk="2026-10-31/dadh"]:not([data-mode=read]) .s-title .bamboo{display:none}

/* talks-kit · kit.css — shadcn/ui's components over a site's tokens
   ---------------------------------------------------------------------------
   The same rules on talks.javiercha.com and playingheaven.ai/talks (kit.js
   says why). Nothing here names a colour or a face: every rule reads a --tk-*
   property, and each falls back to the name shadcn/ui gives it (--popover,
   --border, --ring …), which both sites' token files already map onto their
   palettes. A site's template (its own kit-template.css, loaded after this)
   sets the --tk-* it means differently: talks.javiercha.com keeps --accent
   for its structural green and names shadcn's surfaces --surface-*, and
   hovers with its glaze pool; Playing Heaven hovers with its mineral wash.

     --tk-font --tk-size              the controls' face and size
     --tk-bg --tk-fg --tk-muted-fg    a panel or rail, its text, its quiet text
     --tk-border --tk-input --tk-field  hairlines, a field's edge, a field's ground
     --tk-ring                        the focus outline
     --tk-hover --tk-on --tk-on-fg    a ghost control under the pointer; pressed (aria-pressed)
     --tk-primary --tk-primary-fg     the one default (filled) button in view
     --tk-danger                      what removes
     --tk-radius --tk-shadow          corners; a floating surface's shadow
     --tk-tip-bg --tk-tip-fg          the tooltip, inverted as shadcn draws it
     --tk-z                           the layer the kit floats on
     --tk-mono                        an element's id (idTags, .tk-idbtn)
     --tk-id-bg --tk-id-fg            the selection's id chip; --tk-id-all-* every element's, on the toggle

   The canonical copy is talks-kit/kit/kit.css; edit it there, never in a site. */

:root{
  --tk-font:var(--font-sans,ui-sans-serif,system-ui,sans-serif);
  --tk-size:13px;
  --tk-bg:var(--popover,#fff);
  --tk-fg:var(--popover-foreground,#18181b);
  --tk-muted-fg:var(--muted-foreground,#71717a);
  --tk-border:var(--border,#e4e4e7);
  --tk-input:var(--input,#d4d4d8);
  --tk-field:var(--background,#fff);
  --tk-ring:var(--ring,#18181b);
  --tk-hover:var(--accent,#f4f4f5);
  --tk-on:var(--accent,#f4f4f5);
  --tk-on-fg:var(--accent-foreground,#18181b);
  --tk-primary:var(--primary,#18181b);
  --tk-primary-fg:var(--primary-foreground,#fafafa);
  --tk-danger:var(--destructive,#dc2626);
  --tk-radius:var(--radius,6px);
  --tk-shadow:0 12px 32px -12px rgba(0,0,0,.28),0 2px 8px rgba(0,0,0,.08);
  --tk-tip-bg:var(--foreground,#18181b);
  --tk-tip-fg:var(--background,#fafafa);
  --tk-z:120;
  --tk-mono:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,monospace);
}

/* ── Button ───────────────────────────────────────────────────────────────
   The hover layer is a ::before under the label, so a template can shape it
   (talks.javiercha.com clips it to its glaze pool) without touching the rest. */
.tk-btn{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  box-sizing:border-box;height:32px;min-width:0;margin:0;padding:0 12px;border:1px solid transparent;border-radius:var(--tk-radius);
  background:transparent;color:var(--tk-fg);font:500 var(--tk-size)/1 var(--tk-font);letter-spacing:normal;text-transform:none;
  white-space:nowrap;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;
  transition:color .15s ease,background-color .15s ease,border-color .15s ease,opacity .15s ease}
.tk-btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--tk-hover);opacity:0;
  transition:opacity .15s ease;pointer-events:none}
/* hover only where there is a pointer that hovers: a tap on a phone must not leave a wash behind */
@media (hover:hover){.tk-btn:hover::before{opacity:1}}
.tk-btn:focus-visible{outline:2px solid var(--tk-ring);outline-offset:2px}
.tk-btn:disabled,.tk-btn[aria-disabled="true"]{opacity:.42;cursor:default}
.tk-btn:disabled::before,.tk-btn[aria-disabled="true"]::before{opacity:0}
.tk-btn[hidden]{display:none}
.tk-btn .tk-icon{flex:none;width:16px;height:16px;display:block;pointer-events:none}
.tk-btn .tk-btn-text{pointer-events:none}
.tk-btn[data-variant="default"]{background:var(--tk-primary);color:var(--tk-primary-fg)}
.tk-btn[data-variant="default"]::before{background:var(--tk-primary-fg)}
@media (hover:hover){.tk-btn[data-variant="default"]:hover::before{opacity:.12}}
.tk-btn[data-variant="outline"]{border-color:var(--tk-input);background:var(--tk-field)}
.tk-btn[data-variant="secondary"]{background:var(--tk-on);color:var(--tk-on-fg)}
.tk-btn[data-variant="destructive"]{color:var(--tk-danger)}
.tk-btn[data-variant="destructive"]::before{background:var(--tk-danger)}
@media (hover:hover){.tk-btn[data-variant="destructive"]:hover::before{opacity:.1}}
.tk-btn[aria-pressed="true"]{background:var(--tk-on);color:var(--tk-on-fg)}
.tk-btn[data-size="sm"]{height:28px;padding:0 10px;gap:5px;font-size:calc(var(--tk-size) - .5px)}
.tk-btn[data-size="icon"]{width:36px;height:36px;padding:0}
.tk-btn[data-size="icon-sm"]{width:28px;height:28px;padding:0}
.tk-btn[data-size="icon-sm"] .tk-icon{width:15px;height:15px}
.tk-btn[data-size="icon-lg"]{width:44px;height:44px;padding:0}
.tk-btn[data-size="icon-lg"] .tk-icon{width:20px;height:20px}
/* unsaved work: a dot; a count: a number */
.tk-btn[data-dot]::after{content:"";position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;
  background:var(--tk-dot,var(--tk-danger));box-shadow:0 0 0 2px var(--tk-bg)}
.tk-btn[data-badge]::after{content:attr(data-badge);position:absolute;top:1px;right:0;min-width:15px;height:15px;padding:0 4px;
  box-sizing:border-box;border-radius:8px;background:var(--tk-fg);color:var(--tk-bg);font:600 9.5px/15px var(--tk-font);text-align:center}
.tk-icon.tk-spin{animation:tk-spin 1s linear infinite}
@keyframes tk-spin{to{transform:rotate(360deg)}}

/* ── Tooltip ──────────────────────────────────────────────────────────── */
.tk-tooltip{position:fixed;left:0;top:0;z-index:calc(var(--tk-z) + 40);display:flex;align-items:center;gap:8px;
  max-width:260px;margin:0;padding:5px 9px;border-radius:var(--tk-radius);background:var(--tk-tip-bg);color:var(--tk-tip-fg);
  font:500 12px/1.3 var(--tk-font);letter-spacing:normal;text-transform:none;white-space:normal;pointer-events:none;
  opacity:0;visibility:hidden;transition:opacity .12s ease,visibility 0s linear .12s}
.tk-tooltip[data-open]{opacity:1;visibility:visible;transition:opacity .12s ease}
/* the key, centred in its chip both ways: a box of fixed height with its line at 1, so neither a site's face nor
   the symbol face that draws ⌘ ⇧ ⌫ ↵ can push the letters off the middle */
.tk-tooltip kbd{flex:none;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:1px;
  height:18px;min-width:18px;margin:0;padding:0 5px;border-radius:calc(var(--tk-radius) + 1px);
  background:color-mix(in srgb,var(--tk-tip-fg) 18%,transparent);color:inherit;
  font:500 11px/1 var(--tk-font);letter-spacing:0;text-transform:none;white-space:nowrap;text-align:center}

/* ── the rail ─────────────────────────────────────────────────────────────
   A column by default; a site makes it a row where its layout wants one
   (a phone's foot bar) — the tooltips find their side from the shape. */
.tk-rail{position:fixed;z-index:var(--tk-z);left:0;top:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:2px;
  box-sizing:border-box;width:var(--tk-rail-w,52px);padding:10px 0 12px;overflow-x:hidden;overflow-y:auto;scrollbar-width:none;
  background:var(--tk-bg);color:var(--tk-fg);border-right:1px solid var(--tk-border);font:500 var(--tk-size)/1.2 var(--tk-font)}
.tk-rail::-webkit-scrollbar{display:none}
.tk-rail>.tk-btn{flex:none}
.tk-rail-title{flex:none;padding:2px 0 8px;font:600 10px/1 var(--tk-font);letter-spacing:.14em;text-transform:uppercase;color:var(--tk-muted-fg)}
.tk-sep{flex:none;display:block;width:22px;height:1px;margin:6px 0;background:var(--tk-border)}
.tk-rail-spacer{flex:1 1 auto;min-height:8px;min-width:8px}

/* ── a panel: a card that floats, moved by its head ──────────────────── */
.tk-panel{position:fixed;z-index:calc(var(--tk-z) + 10);right:16px;top:16px;display:flex;flex-direction:column;box-sizing:border-box;
  width:min(400px,calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);
  background:var(--tk-bg);color:var(--tk-fg);border:1px solid var(--tk-border);border-radius:calc(var(--tk-radius) + 4px);
  box-shadow:var(--tk-shadow);font:400 var(--tk-size)/1.45 var(--tk-font);letter-spacing:normal;text-transform:none}
.tk-panel[hidden]{display:none}
.tk-panel[data-dragging]{user-select:none;-webkit-user-select:none}
.tk-panel-head{flex:none;display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;border-bottom:1px solid var(--tk-border);
  cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.tk-panel[data-dragging] .tk-panel-head{cursor:grabbing}
.tk-panel-title{flex:1 1 auto;min-width:0;margin:0;display:flex;flex-direction:column;gap:1px}
.tk-panel-title b{font-weight:600;font-size:13px;line-height:1.3}
.tk-panel-title span{color:var(--tk-muted-fg);font-size:12px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tk-panel-body{flex:1 1 auto;min-height:0;overflow:auto;padding:12px 14px 14px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain}
.tk-panel-body>*{margin:0}

/* ── fields ───────────────────────────────────────────────────────────── */
.tk-textarea,.tk-select{box-sizing:border-box;border:1px solid var(--tk-input);border-radius:var(--tk-radius);background:var(--tk-field);color:var(--tk-fg);
  font:400 var(--tk-size)/1.45 var(--tk-font);letter-spacing:normal}
.tk-textarea{display:block;width:100%;min-height:84px;max-height:40vh;padding:8px 10px;resize:vertical}
.tk-select{height:32px;min-width:0;padding:0 8px;max-width:100%}
.tk-textarea:focus-visible,.tk-select:focus-visible{outline:2px solid var(--tk-ring);outline-offset:1px}
.tk-textarea:disabled,.tk-select:disabled{opacity:.6}
.tk-label{font-weight:500;font-size:12px;color:var(--tk-muted-fg)}
.tk-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tk-row>.tk-select{flex:1 1 10rem}
.tk-check{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;cursor:pointer}
.tk-check input{margin:0;accent-color:var(--tk-primary)}
.tk-note{font-size:12px;color:var(--tk-muted-fg)}
/* ToggleGroup: one choice of a few */
.tk-toggle-group{display:inline-flex;flex:none;border:1px solid var(--tk-input);border-radius:var(--tk-radius);overflow:hidden;background:var(--tk-field)}
.tk-toggle-group .tk-btn{height:28px;border:0;border-radius:0;box-shadow:none}
.tk-toggle-group .tk-btn+.tk-btn{border-left:1px solid var(--tk-input)}
.tk-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tk-status{min-height:1.3em;font-size:12px;color:var(--tk-muted-fg)}
.tk-status:empty{display:none}
.tk-status[data-kind="error"]{color:var(--tk-danger)}
.tk-status[data-kind="warn"]{color:var(--tk-fg)}
.tk-progress{height:2px;overflow:hidden;border-radius:2px;background:var(--tk-border)}
.tk-progress[hidden]{display:none}
.tk-progress::after{content:"";display:block;width:34%;height:100%;background:var(--tk-fg);opacity:.55;animation:tk-slide 1.3s ease-in-out infinite}
@keyframes tk-slide{from{transform:translateX(-100%)}to{transform:translateX(300%)}}

/* ── a bar over the page while a kept version is shown (kit.js bar) ─────
   Fixed at the top of the window, centred; a site moves it with --tk-bar-top
   (Playing Heaven's edit bar is at the top) and narrows it with --tk-bar-w. */
.tk-bar{position:fixed;z-index:calc(var(--tk-z) + 20);top:var(--tk-bar-top,12px);left:50%;transform:translateX(-50%);
  box-sizing:border-box;width:max-content;max-width:min(var(--tk-bar-w,980px),calc(100vw - 24px));
  display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 8px 8px 14px;
  background:var(--tk-bg);color:var(--tk-fg);border:1px solid var(--tk-border);border-radius:calc(var(--tk-radius) + 4px);
  box-shadow:var(--tk-shadow);font:400 var(--tk-size)/1.35 var(--tk-font);letter-spacing:normal;text-transform:none}
.tk-bar[hidden]{display:none}
.tk-bar-text{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto}
.tk-bar-text .tk-icon{flex:none;width:16px;height:16px;color:var(--tk-muted-fg)}
.tk-bar-title{display:flex;flex-direction:column;min-width:0}
.tk-bar-title b{font-weight:600;font-size:var(--tk-size)}
.tk-bar-title span{color:var(--tk-muted-fg);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* one line where it fits, so the bar stays above a slide's heading; the slides it changes wrap under it only when
   there are many */
.tk-bar-places{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px;flex:0 1 auto;min-width:0;padding-left:12px;border-left:1px solid var(--tk-border)}
.tk-bar-places[hidden]{display:none}
.tk-bar-places .tk-label{margin-right:4px}
.tk-bar-places .tk-btn[aria-current="true"]{background:var(--tk-on);color:var(--tk-on-fg)}
.tk-bar .tk-actions{flex:none;margin-left:auto}

/* ── the thread: what was asked of this slide before ──────────────────── */
.tk-thread{display:flex;flex-direction:column;gap:6px}
.tk-thread[hidden]{display:none}
.tk-thread-head{display:flex;align-items:center;gap:6px;min-height:28px}
.tk-thread-head .tk-label{flex:1}
.tk-turns{display:flex;flex-direction:column;gap:8px;max-height:min(30vh,260px);overflow:auto;margin:0;padding:0;list-style:none;overscroll-behavior:contain}
.tk-turn{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 6px;align-items:start}
.tk-turn-ask{grid-column:1;margin:0;padding:6px 9px;border-radius:var(--tk-radius);background:var(--tk-on);color:var(--tk-fg);
  font-size:12.5px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}
.tk-turn .tk-btn{grid-column:2;grid-row:1}
.tk-turn-meta,.tk-turn-said{grid-column:1;margin:0 0 0 9px;font-size:11.5px;line-height:1.4;color:var(--tk-muted-fg);overflow-wrap:anywhere}
.tk-turn-said{color:var(--tk-fg);opacity:.85}
.tk-badge{display:inline-flex;align-items:center;height:17px;padding:0 6px;margin-right:6px;border:1px solid var(--tk-border);border-radius:999px;
  font:500 10.5px/1 var(--tk-font);color:var(--tk-muted-fg);vertical-align:1px}
.tk-badge[data-tone="applied"]{border-color:transparent;background:var(--tk-on);color:var(--tk-on-fg)}
.tk-badge[data-tone="failed"]{color:var(--tk-danger);border-color:currentColor}

/* ── Back and Forward for a thumb ─────────────────────────────────────────
   The author, 28 Oct 2026: "in a mobile phone, I can't navigate slide by
   slide". Where a phone shows a talk as a page, a site's build writes

     <div class="tk-fab-nav" role="group" aria-label="Slides">
       <button type="button" class="tk-btn" data-variant="outline" data-size="icon-lg" aria-label="Previous slide">‹ svg</button>
       <button type="button" class="tk-btn" data-variant="outline" data-size="icon-lg" aria-label="Next slide">› svg</button>
     </div>

   and its own runtime steps the talk and sets aria-disabled at either end;
   its template says when the pair shows. Back above Forward, as on the
   talks' rail. */
.tk-fab-nav{position:fixed;z-index:var(--tk-z);right:max(14px,env(safe-area-inset-right,0px));bottom:max(16px,calc(env(safe-area-inset-bottom,0px) + 10px));
  display:flex;flex-direction:column;gap:8px}
.tk-fab-nav[hidden]{display:none}
.tk-fab-nav .tk-btn{border-color:var(--tk-border);background:var(--tk-bg);box-shadow:var(--tk-shadow);border-radius:999px}

/* ── the presenter's door: one field and one button, before the page ──── */
body:has(> .tk-gate){margin:0}
.tk-gate{min-height:100vh;min-height:100dvh;margin:0;display:grid;place-items:center;padding:24px;box-sizing:border-box;
  background:var(--background,var(--tk-field));color:var(--tk-fg);font:400 var(--tk-size)/1.5 var(--tk-font)}
.tk-gate-card{box-sizing:border-box;width:min(360px,100%);display:flex;flex-direction:column;gap:14px;padding:22px 22px 20px;
  background:var(--tk-bg);border:1px solid var(--tk-border);border-radius:calc(var(--tk-radius) + 4px);box-shadow:var(--tk-shadow)}
.tk-gate-card h1{margin:0;font:600 16px/1.3 var(--tk-font);display:flex;align-items:center;gap:8px}
.tk-gate-card p{margin:0}
.tk-gate-card .tk-note{font-size:12.5px}
.tk-gate-field{display:flex;flex-direction:column;gap:6px}
.tk-input{box-sizing:border-box;width:100%;height:36px;padding:0 10px;border:1px solid var(--tk-input);border-radius:var(--tk-radius);
  background:var(--tk-field);color:var(--tk-fg);font:400 14px/1 var(--tk-font)}
.tk-input:focus-visible{outline:2px solid var(--tk-ring);outline-offset:1px}
.tk-gate-card .tk-btn{height:36px;width:100%}
.tk-gate-error{color:var(--tk-danger);font-size:12.5px}

/* ── ids (kit.js idTags) ──────────────────────────────────────────────────
   A chip over an element's top left edge: the selection's, the one under the
   pointer, or every element's while the toggle is on. Never in a click's way. */
.tk-ids{position:fixed;inset:0;z-index:calc(var(--tk-z) + 5);pointer-events:none;overflow:hidden}
.tk-id{position:absolute;left:0;top:0;box-sizing:border-box;height:16px;padding:0 5px;border-radius:4px;
  background:var(--tk-id-bg,var(--tk-primary));color:var(--tk-id-fg,var(--tk-primary-fg));
  font:500 10.5px/16px var(--tk-mono);letter-spacing:0;text-transform:none;white-space:nowrap;box-shadow:0 0 0 1px var(--tk-bg)}
.tk-id[data-kind="hover"]{opacity:.88}
.tk-id[data-kind="all"]{background:var(--tk-id-all-bg,var(--tk-bg));color:var(--tk-id-all-fg,var(--tk-fg));box-shadow:0 0 0 1px var(--tk-border);opacity:.94}
.tk-id[hidden]{display:none}
/* an id written as a control (a site's selection line): press to copy where it is */
.tk-btn.tk-idbtn{font-family:var(--tk-mono);font-size:12px;letter-spacing:0}

@media (pointer:coarse){
  .tk-btn[data-size="icon"]{width:44px;height:44px}
  .tk-btn[data-size="sm"],.tk-btn[data-size="default"]{min-height:40px}
}
@media (prefers-reduced-motion:reduce){
  .tk-btn,.tk-btn::before,.tk-tooltip{transition:none}
  .tk-progress::after,.tk-icon.tk-spin{animation:none}
}
@media print{.tk-rail,.tk-panel,.tk-tooltip,.tk-fab-nav,.tk-bar,.tk-ids{display:none!important}}
/* playingheaven.ai/talks — this site's template for talks-kit
   ---------------------------------------------------------------------------
   talks-kit (tools/talks/kit/, copies of ../../talks-kit; never edit them) is the one implementation of what this
   site and talks.javiercha.com share: shadcn/ui's Button and Tooltip, the edit rail, the Ask panel, a phone's Back and
   Forward, the presenter's door. This file is how it looks here, and it is this site's own: the playingheaven-ui
   palette (paper, ink, mineral), Source Sans for every control, the registry's 2px corners, the mineral wash under the
   pointer and on what is pressed (button-css's own states), and the sites' focus outline at 3px.

   build_talks.py writes kit.css and then this file at the end of deck.css, and into door.css for the presenter's door. */

:root{
  --tk-font:var(--sans);
  --tk-size:13.5px;
  --tk-bg:var(--paper-raised);
  --tk-fg:var(--ink-main);
  --tk-muted-fg:var(--ink-muted);
  --tk-border:var(--rule);
  --tk-input:var(--rule-strong);
  --tk-field:var(--paper-main);
  --tk-ring:var(--focus);
  --tk-hover:var(--mineral-wash);
  --tk-on:var(--mineral-wash);
  --tk-on-fg:var(--mineral-text);
  --tk-primary:var(--ink-main);
  --tk-primary-fg:var(--paper-main);
  --tk-danger:var(--ink-main);
  --tk-dot:var(--mineral-main);
  --tk-radius:2px;
  --tk-shadow:0 6px 24px rgba(20,30,50,.12);
  --tk-tip-bg:var(--ink-main);
  --tk-tip-fg:var(--paper-main);
}
:root[data-theme=dark]{--tk-shadow:0 8px 28px rgba(0,0,0,.4)}
.tk-btn:focus-visible,.tk-textarea:focus-visible,.tk-select:focus-visible,.tk-input:focus-visible{outline:2px solid var(--focus);outline-offset:3px}
.tk-btn[data-variant="ghost"]{color:var(--ink-secondary)}
@media (hover:hover){.tk-btn[data-variant="ghost"]:hover{color:var(--ink-main)}}
.tk-btn[data-variant="outline"]{color:var(--mineral-text);border-color:var(--mineral-soft);background:var(--paper-raised)}
.tk-panel-title b{font-weight:500;font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted)}
.tk-panel-title span{font-family:var(--serif);font-size:16px;color:var(--ink-main)}
.tk-textarea{font-size:15px}
.tk-turn-ask{font-family:var(--serif);font-size:14.5px;background:var(--paper-main);box-shadow:inset 0 0 0 1px var(--rule)}

/* a phone's Back and Forward, on the raised paper, square as the site's buttons are */
.tk-fab-nav .tk-btn{border-radius:var(--tk-radius);border-color:var(--rule-strong);background:var(--paper-raised);color:var(--mineral-text)}
.tk-fab-nav .tk-btn[aria-disabled="true"]{opacity:.35}

/* the presenter's door */
.tk-gate{background:var(--paper-main)}
.tk-gate-card h1{font-weight:500;font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-muted)}
.tk-gate-card .tk-note{font-family:var(--serif);font-size:18px;line-height:1.3;color:var(--ink-main)}
/* a talk outside its public window (the Worker's windows.js fills the talk's door page with this card; the author,
   30 Oct 2026: public from an hour before a talk begins until seven days after it ends): the talk's title as a title,
   its occasion parted by hairlines, the rule, Sign in */
.tk-gate-card.ph-closed{width:min(34rem,100%);gap:16px;padding:26px 28px 24px}
.tk-gate-card.ph-closed h1{font-family:var(--serif);font-weight:500;font-size:24px;line-height:1.25;letter-spacing:0;text-transform:none;color:var(--ink-main)}
.tk-gate-card.ph-closed .tk-note.seps{font-family:var(--sans);font-size:14.5px;line-height:1.5;color:var(--ink-secondary)}
.tk-gate-card.ph-closed .tk-note{font-size:17px;line-height:1.45}
.tk-gate-card.ph-closed .ph-btn-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:2px}
