/* Model figures keep their SVG primitives independent of the training diagrams. */
.model-figure{margin:40px 0 38px;scroll-margin-top:125px}
.article-section .model-figure .tr-title{font-size:18px;line-height:1.55;font-weight:450;color:#e2deec;margin:0 0 26px}
.model-scene{display:block;width:100%;height:auto;fill:none;font-family:var(--font);overflow:visible}
.model-scene text{stroke:none}
.model-figure .tr-heading{font-size:17px;font-weight:450;fill:#dfdbe7}
.model-figure .tr-label{font-size:14px;fill:#cdc7d8}
.model-figure .tr-small{font-size:12px;fill:#aaa3b6}
.model-figure .tr-muted{font-size:11px;fill:#8f879c}
.model-figure .tr-mono{font:11px var(--mono);fill:#b4a8c8;font-variant-numeric:tabular-nums}
.model-figure .tr-line{stroke:#62576f;stroke-width:.85;fill:none}
.model-figure .tr-divider{stroke:#302a39;stroke-width:.7;fill:none}
.model-figure .tr-accent{stroke:var(--accent);stroke-width:1.1;fill:none}
.model-figure .tr-dashed{stroke:#6c5e80;stroke-width:.8;stroke-dasharray:4 5;fill:none}
.model-figure .tr-dot{fill:var(--accent);stroke:var(--bg);stroke-width:1}
.model-figure .tr-endpoint{fill:var(--bg);stroke:#a18abb;stroke-width:.8}
.model-figure .tr-token-a{fill:#c4b4fb;stroke:#c4b4fb;stroke-width:.6}
.model-figure .tr-token-b{fill:#857298;stroke:#a08daf;stroke-width:.6}
.model-figure .tr-token-c{fill:#46394f;stroke:#8a729b;stroke-width:.8}
.model-figure .tr-token-pad{fill:#121014;stroke:#514757;stroke-width:.7;stroke-dasharray:2 2}
.model-figure .tr-surface{fill:#100d15;stroke:#675675;stroke-width:.8}
.model-figure .tr-flow{fill:none;stroke:var(--accent);stroke-width:1.75;stroke-linecap:round;stroke-dasharray:4 116;stroke-dashoffset:120;opacity:0;animation:model-tr-travel 7s linear infinite;animation-delay:var(--flow-delay,0s);animation-play-state:paused}
.model-figure.is-animating .tr-flow{opacity:.85;animation-play-state:running}
@keyframes model-tr-travel{from{stroke-dashoffset:120}to{stroke-dashoffset:0}}
.model-figure figcaption{margin-top:18px;font-size:12px;color:#92909d;line-height:1.9}
@media(prefers-reduced-motion:reduce){.model-figure .tr-flow{display:none}}
@media print{.model-figure{break-inside:avoid}.model-figure .tr-flow{display:none}.article-section .model-figure .tr-title{color:#222}.model-figure .tr-heading,.model-figure .tr-label{fill:#222}.model-figure .tr-small,.model-figure .tr-muted,.model-figure .tr-mono{fill:#555}}

/* MoT overview with modality-specific branches and a simplified attention interface. */
.ma-heading{font-size:15px;font-weight:500;fill:#e0d9ea;stroke:none}
.ma-label{font-size:13px;fill:#d2cbdc;stroke:none}
.ma-note{font-size:11px;fill:#9d93ad;stroke:none}
.ma-port{font:11px var(--mono);fill:#bca7db;stroke:none}
.ma-block-title{font-size:16px;font-weight:450;fill:#e1d4f3;stroke:none}
.ma-module{fill:#141117;stroke:#62556f;stroke-width:.85}
.ma-sequence{fill:#141019;stroke:#6b577c;stroke-width:.9}
.ma-language-stack{fill:#111013;stroke:#605666;stroke-width:.85}
.ma-av-stack{fill:#15101c;stroke:#9a80b7;stroke-width:1}
.ma-mot-frame{fill:#0d0b10;stroke:#685676;stroke-width:.9}
.ma-layer-scope{fill:none;stroke:#b89cd4;stroke-width:.7;stroke-dasharray:3 3}
.ma-av-layer{fill:#110e17;stroke:#52435e;stroke-width:.65}
.ma-action-layer{fill:#251a32;stroke:#b29acb;stroke-width:.9}
.ma-vision-layer{fill:#191520;stroke:#857195;stroke-width:.9}
.ma-selected-vision{fill:#292033;stroke:#b6a0ce;stroke-width:1.1}
.ma-language-layer{fill:#1a161e;stroke:#62566e;stroke-width:.85}
.ma-layer{fill:#201829;stroke:#79608f;stroke-width:.9}
.ma-selected-layer{fill:#31223f;stroke:#c4acf0;stroke-width:1.2}
.ma-block-frame{fill:#0e0c11;stroke:#8e789f;stroke-width:.9}
.ma-attention{fill:#352445;stroke:#b29bcf;stroke-width:1}
.ma-head-a{fill:#241a30;stroke:#b7a0d5;stroke-width:.9}
.ma-head-v{fill:#1b1621;stroke:#8b789f;stroke-width:.9}
.ma-action{fill:#c4b4e5;stroke:#dacafa;stroke-width:.6}
.ma-visual{fill:#685278;stroke:#a58bb8;stroke-width:.7}
.ma-wire,.ma-kv-wire{fill:none;stroke:#85728e;stroke-width:.95;stroke-linejoin:round}
.ma-kv-wire{stroke:#baa0d5;stroke-width:1.05}
.ma-arrowhead{fill:none;stroke:#ad96bd;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.ma-expansion{fill:none;stroke:#7d678f;stroke-width:.8;stroke-dasharray:4 4}
.ma-signal{fill:none;stroke:#e1cbfa;stroke-width:1.65;stroke-linecap:round;stroke-dasharray:7 113;stroke-dashoffset:120;opacity:0;animation:ma-forward 9s linear infinite;animation-delay:var(--ma-delay,0s);animation-play-state:paused}
.is-animating .ma-signal{opacity:.85;animation-play-state:running}
@keyframes ma-forward{0%{stroke-dashoffset:120}100%{stroke-dashoffset:0}}
@media(max-width:650px){.ma-note{font-size:11.5px}.ma-port{font-size:11.5px}}
@media(prefers-reduced-motion:reduce){.ma-signal{display:none}}
@media print{.ma-signal{display:none}.ma-heading,.ma-label,.ma-block-title{fill:#302438}.ma-note,.ma-port{fill:#63506b}.ma-module,.ma-language-stack,.ma-av-stack,.ma-language-layer,.ma-layer,.ma-block-frame,.ma-sequence,.ma-mot-frame{fill:#f8f5fa;stroke:#8b7b96}.ma-selected-layer,.ma-selected-vision,.ma-attention{fill:#dfd0ed;stroke:#79628c}.ma-head-a,.ma-head-v,.ma-action-layer,.ma-vision-layer,.ma-av-layer{fill:#ece3f2;stroke:#8b739c}}

/* A continuous pre-training path forks into independently updated branches. */
.ms-stage-name{font-size:29px;font-weight:450;fill:#e4dced;letter-spacing:-.6px;stroke:none}
.ms-branch-name{font-size:25px;font-weight:450;fill:var(--accent);letter-spacing:-.2px;stroke:none}
.ms-checkpoint{font-size:18px;font-weight:450;fill:#d1bdf0;stroke:none}
.ms-student{font-size:14px;fill:#b9a9cf;stroke:none}
.ms-independence{font-size:12px;fill:#b9adc9;stroke:none}
.ms-modality{fill:var(--bg);stroke:#a08ab8;stroke-width:.8}
.ms-modality-label{font:11px var(--mono);fill:#c4b4fb;stroke:none}
@media(prefers-reduced-motion:reduce){.ms-route .tr-flow{display:none}}
@media print{.ms-stage-name,.ms-branch-name,.ms-checkpoint{fill:#33253d}.ms-student,.ms-independence,.ms-modality-label{fill:#584665}.ms-modality{fill:#fff;stroke:#6b5779}.ms-route .tr-flow{display:none}}

/* Inference paths share the article's thin-line, open diagram vocabulary. */
.mi-action{fill:#0d0b10;stroke:#c4b4fb;stroke-width:1.25}
.mi-action-noisy{fill:#20192b;stroke:#88749c;stroke-width:.95;stroke-dasharray:2 2}
.mi-vision{fill:#bda8e7;stroke:#cfbef4;stroke-width:.7}
.mi-vision-noisy{fill:#211b2b;stroke:#88749c;stroke-width:.8;stroke-dasharray:2 2}
.mi-model-sheet,.mi-frame{fill:#0c0a0f;stroke:#8b789f;stroke-width:.9}
.mi-cache-block{fill:#0d0b12;stroke:#56485f;stroke-width:.85}
.mi-cache-initial .mi-cache-block{stroke:#c4b4fb}
.mi-cache-new{opacity:0}
.mi-writeback{fill:none;stroke:#c4b4fb;stroke-width:2;stroke-linecap:round;stroke-dasharray:5 105;stroke-dashoffset:110;opacity:0;animation:mi-write 12s linear infinite;animation-play-state:paused}
.mi-cache-out{animation:mi-evict 12s ease-in-out infinite;animation-play-state:paused}
.mi-cache-shift{animation:mi-shift 12s ease-in-out infinite;animation-play-state:paused}
.mi-cache-new{animation:mi-insert 12s ease-in-out infinite;animation-play-state:paused}
.mi-acwm-model{animation:mi-denoise 12s ease-in-out infinite;animation-play-state:paused}
.mi-clean-visual{animation:mi-clean 12s ease-in-out infinite;animation-play-state:paused}
.is-animating .mi-writeback,.is-animating .mi-cache-out,.is-animating .mi-cache-shift,.is-animating .mi-cache-new,.is-animating .mi-acwm-model,.is-animating .mi-clean-visual{animation-play-state:running}
@keyframes mi-write{0%,42%{opacity:0;stroke-dashoffset:110}43%{opacity:1;stroke-dashoffset:110}67%{opacity:1;stroke-dashoffset:0}68%,100%{opacity:0;stroke-dashoffset:0}}
@keyframes mi-evict{0%,66%{opacity:1;transform:translateX(0)}75%,92%{opacity:0;transform:translateX(-13px)}97%,100%{opacity:1;transform:translateX(0)}}
@keyframes mi-shift{0%,66%{transform:translateX(0)}77%,92%{transform:translateX(var(--mi-stride,-66px))}97%,100%{transform:translateX(0)}}
@keyframes mi-insert{0%,65%{opacity:0;transform:translateX(0)}77%,92%{opacity:1;transform:translateX(var(--mi-stride,-66px))}95%,100%{opacity:0;transform:translateX(0)}}
@keyframes mi-denoise{0%,38%,100%{opacity:1}8%,24%{opacity:.55}16%,32%{opacity:1}44%,92%{opacity:.7}}
@keyframes mi-clean{0%,29%,100%{opacity:.72}38%,66%{opacity:1}77%,92%{opacity:.72}}
@media(prefers-reduced-motion:reduce){.mi-writeback{display:none}.mi-cache-out,.mi-cache-shift,.mi-cache-new,.mi-acwm-model,.mi-clean-visual{animation:none!important;transform:none!important;opacity:1!important}.mi-cache-new{display:none}}
@media print{.mi-writeback{display:none}.mi-cache-out,.mi-cache-shift,.mi-cache-new,.mi-acwm-model,.mi-clean-visual{animation:none!important;transform:none!important;opacity:1!important}.mi-cache-new{display:none}.mi-model-sheet,.mi-frame,.mi-cache-block{fill:#fff;stroke:#7c6a8e}.mi-action{fill:#fff;stroke:#72548f}.mi-vision{fill:#bda8e7}.mi-action-noisy,.mi-vision-noisy{fill:#eee8f2;stroke:#9a84ac}}

/* Only legal frame pairs participate in the scan; hidden keys stay unlit. */
.mc-cell{stroke:#302738;stroke-width:.7}
.mc-cell-a{fill:#a390c3}
.mc-cell-b{fill:#70617f}
.mc-cell-point{fill:#ebe2fa}
.mc-future{fill:#18151d;stroke:#39313f;stroke-width:.7}
.mc-offblock{fill:none;stroke:#242028;stroke-width:.7}
.mc-boundary{fill:none;stroke:#84718f;stroke-width:1}
.mc-sample-a,.mc-sample-b{font-size:13px;fill:#c1b1de}
.mc-sample-b{fill:#a395b4}
.mc-sample-rule-a,.mc-sample-rule-b{fill:none;stroke:#9e8ab6;stroke-width:1.5}
.mc-sample-rule-b{stroke:#746582}
.mc-clip-frame{fill:#17131d;stroke:#9a87b2;stroke-width:.8}
.mc-clip-detail{fill:none;stroke:#bcabdb;stroke-width:.9}
.mc-junction{fill:#bfa9de}
.mc-mask-row{opacity:.88;animation:mc-row-scan 8s linear infinite;animation-delay:var(--mc-delay,0s);animation-play-state:paused}
.is-animating .mc-mask-row{animation-play-state:running}
@keyframes mc-row-scan{0%,25%,100%{opacity:.66}9%,15%{opacity:1}}
@media(prefers-reduced-motion:reduce){.mc-mask-row{animation:none!important;opacity:.9!important}}
@media print{.mc-mask-row{animation:none!important;opacity:1}.mc-cell-a{fill:#a68bbf}.mc-cell-b{fill:#cbbdd7}.mc-future{fill:#eeeaf1;stroke:#d5ccdc}.mc-offblock{stroke:#e5dfe9}.mc-sample-a,.mc-sample-b{fill:#51435e}.mc-clip-frame{fill:#fff}.mc-cell-point{fill:#fff}}
