/* Figure vocabulary — the pl-* and fig-* primitives from site-v3/site.css.
   Lifted deliberately: chapter pages need the drawing classes, not the
   marketing site's body, headings, .plate or link rules. */
.pl-stage{font-family:var(--body);font-size:16px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;fill:var(--ink)}
.pl-stage tspan{fill:var(--iris)}
.pl-out{font-family:var(--body);font-size:13.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;fill:var(--ink)}
.pl-lbl{font-family:var(--body);font-size:14px;font-weight:500;fill:var(--ink)}
.pl-sm{font-family:var(--body);font-size:13px;font-weight:400;fill:var(--ink-3)}
.pl-line{stroke:#7E7F8C;stroke-width:1;fill:none}
.pl-texture{stroke:#807F8D;stroke-width:1;fill:none}
.pl-soft{stroke:#8E8F9C;stroke-width:1;fill:#FFFFFF}
.pl-iris{stroke:#6D28D9;stroke-width:1;fill:none;opacity:.85}
.pl-irisd{stroke:#6D28D9;stroke-width:1;fill:none;opacity:.75;stroke-dasharray:3 4}
.pl-fill{fill:rgba(109,40,217,.15);stroke:rgba(109,40,217,.75);stroke-width:1.15}
.pl-dot{fill:#6D28D9}
.pl-grid{stroke:#9A9BA7;stroke-width:1;fill:none}
.pl-quote{font-family:var(--display);font-style:italic;font-size:21px;fill:var(--ink)}
.pl-region{font-family:var(--body);font-size:13.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;fill:var(--ink)}
.pl-note{font-family:var(--body);font-size:13px;font-weight:500;fill:var(--iris-deep)}
.pl-bar-dumb{stroke:#18161D;stroke-opacity:.34;stroke-width:7;stroke-linecap:round}
.pl-bar-smart{stroke:#6D28D9;stroke-opacity:1;stroke-width:7;stroke-linecap:round}
.pl-reply{stroke:#6D28D9;stroke-opacity:.85;stroke-width:3.6;stroke-linecap:round}
.pl-spine{stroke:#18161D;stroke-width:1.2;fill:none;opacity:.5}
.pl-dash{stroke:#5B21B6;stroke-width:1.2;fill:none;opacity:.85;stroke-dasharray:4 5;animation:pl-march 2s linear infinite}
.pl-pass{fill:rgba(109,40,217,.07);stroke:rgba(109,40,217,.42);stroke-width:1;animation:pl-pass 5s var(--ease) infinite}
.pl-pass2{animation-delay:.5s}
.pl-eye{animation:pl-breathe 5.4s ease-in-out infinite;transform-origin:center;transform-box:fill-box}
.pl-handle{animation:pl-dial 11s var(--ease) infinite alternate}
.pl-handle.h2{animation-delay:-3s}
.pl-travel{animation:pl-travel 6s linear infinite;offset-rotate:0deg}
.fig-plane{width:100%;height:auto;display:block}
.fig-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:8px}
.fig-scales{display:flex;align-items:baseline;gap:12px}
.fig-scales button{font-family:var(--body);font-size:15px;font-weight:300;color:var(--ink-4);background:none;border:0;padding:0;cursor:pointer;transition:color .18s var(--ease)}
.fig-scales button:hover{color:var(--ink-2)}
.fig-scales button.on{color:var(--flame)}
.fig-scales i{color:var(--ink-4);font-style:normal}
.fig-title{font-family:var(--display);font-size:20px;color:var(--ink-3);display:flex;align-items:baseline;gap:12px}
.fig-title em{font-style:normal;font-weight:500;color:var(--ink)}
.fig-title b{font-weight:500;color:var(--iris)}
.fig-back{font-family:var(--body);font-size:13.5px;font-weight:300;color:var(--ink-4);background:none;border:0;border-bottom:1px solid var(--line-2);padding:0 0 1px;cursor:pointer}
.fig-back:hover{color:var(--ink);border-color:var(--ink-3)}
.fig-cap{font-size:15.5px;line-height:1.7;color:var(--ink-3);max-width:70ch;margin-top:6px}
.fig-foot{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-4)}
.fig-foot span{width:6px;height:6px;border-radius:50%;background:var(--flame);flex:none}
.fig-arrow{stroke:#18161D;stroke-opacity:.28;stroke-width:1;fill:none}
.fig-ring{stroke:#DFDAE7;stroke-width:1.2;fill:#fff}
.fig-ring-live{stroke:#6D28D9;stroke-width:1.2;fill:none;opacity:0;animation:fig-ring 5s var(--ease) infinite}
.fig-run{fill:#6D28D9;opacity:.7}
.fig-hand{stroke:#6D28D9;stroke-width:1;fill:none;stroke-dasharray:4 5;animation:pl-march 2s linear infinite,fig-hand 8s var(--ease) infinite}
.fig-phase{cursor:pointer}
.fig-phase:hover .fig-ring{stroke:#6D28D9}
.fig-phase-name{font-family:var(--body);font-size:23px;font-weight:400;fill:var(--ink)}
.fig-phase-lbl{font-family:var(--body);font-size:17px;font-weight:300;fill:var(--ink-2)}
.fig-loop{stroke:#DFDAE7;stroke-width:1.2;fill:none}
.fig-loop-lbl{font-family:var(--display);font-style:italic;font-size:19px;fill:var(--ink-3)}
.fig-inside{font-family:var(--display);font-style:italic;font-size:18px;fill:var(--iris)}
.fig-split{stroke:#ECEDF1;stroke-width:1}
.fig-panel{font-family:var(--display);font-size:23px;fill:var(--ink)}
.fig-panel-sub{font-family:var(--display);font-style:italic;font-size:16px;fill:var(--ink-4)}
.fig-block-you{fill:rgba(24,22,29,.055);stroke:rgba(24,22,29,.14);stroke-width:1}
.fig-block-sys{fill:rgba(109,40,217,.06);stroke:rgba(109,40,217,.3);stroke-width:1}
.fig-block-lbl{font-family:var(--body);font-size:14px;font-weight:300;fill:var(--ink-3)}
.fig-row-lbl{font-family:var(--display);font-style:italic;font-size:16px;fill:var(--ink-4)}
.fig-live{stroke:#18161D;stroke-opacity:.5;stroke-width:2.5;stroke-linecap:round}
.fig-live-long{stroke:#6D28D9;stroke-opacity:.7;stroke-width:2.5;stroke-linecap:round}
.fig-wait{stroke:#E5342B;stroke-opacity:.35;stroke-width:2;stroke-dasharray:3 6}
.fig-wait-lbl{font-family:var(--body);font-size:13px;font-weight:300;fill:rgba(229,52,43,.6)}
.fig-note{font-family:var(--body);font-size:14.5px;font-weight:300;fill:var(--ink-4)}
.fig-token{fill:#6D28D9;opacity:.75}
.fig-token-open{fill:#6D28D9}
.fig-say{font-family:var(--body);font-size:22px;fill:var(--iris)}
.fig-support{stroke:#6D28D9;stroke-opacity:.3;stroke-width:1;animation:fig-support 5.6s var(--ease) infinite}
.fig-op{fill:#6D28D9;animation:fig-op 4s ease-in-out infinite}
.fig-rel{stroke:#6D28D9;stroke-opacity:.4;stroke-width:1.15;fill:none}
.pl-face{font-family:var(--display);font-size:22px;font-style:italic;font-weight:400;fill:var(--iris-deep)}
