/* Section 15 native figures, table companions and phone layouts.
   Scoped to s15-*; kit tokens plus colours the report's own figures fix:
   the TBO diagram's lane blue/green, Figure 64's normal grey and TBO amber
   (plot_results.py MODE_COLORS, with the kit's baseline grey), the plotting
   script's "worse" red for overwritten slots, and the kit's warm grey for the
   Table 33 prototype. Pink is reserved for the playhead, selection,
   annotations and focus. */
.s15-fig,.s15-tplot{--s15-l0:#4a76a3;--s15-l0-fill:#e1eaf4;--s15-l1:#5b8a50;--s15-l1-fill:#e4eedd;--s15-bad:#b23a48;--s15-bad-wash:rgba(178,58,72,.1);--s15-fwd:#d9e7e6;--s15-bwd:#fbe1ed;--s15-normal:#77828a;--s15-tbo:#d97706;--s15-tbo-ink:#b45309;--s15-tbo-wash:#f6c78f;--s15-proto:#a9c8ca;--s15-proto-line:var(--teal)}
.s15-fig{
 container:s15/inline-size;position:relative;margin:0;color:var(--ink);font-size:14.5px;line-height:1.5}
.report-content .s15-fig p{margin:0}
.report-content .s15-fig :is(ul,ol){margin:0;padding:0;list-style:none}
.report-content .s15-fig li{margin:0;padding:0}
.report-content .s15-fig li::marker{content:none}
.report-content .s15-fig h4{margin:0}

/* Head */
.s15-fig-head{margin:2px 0 16px}
.report-content .s15-fig .s15-eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 8px;font-size:12.5px;line-height:1.4;color:var(--muted)}
.s15-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 8px;border-radius:999px;font-size:11px;font-weight:700;line-height:1.3;letter-spacing:.11em;text-transform:uppercase;background:var(--teal-wash);color:var(--teal-deep);white-space:nowrap}
.s15-tag::before{content:'';width:8px;height:8px;border-radius:50%;border:1.5px dashed var(--teal);box-sizing:border-box}
.s15-tag--measured{background:var(--pink-wash);color:var(--pink-deep)}
.s15-tag--measured::before{border:0;background:var(--pink)}
.s15-tag--web{background:var(--cream-lo);color:var(--ink-soft)}
.s15-tag--web::before{border:0;background:var(--teal);border-radius:2px}
.report-content .s15-fig .s15-fig-title{margin:0;font-size:clamp(21px,2.1vw,27px);font-weight:400;line-height:1.2;letter-spacing:-.022em;color:var(--ink-deep);text-wrap:balance}

/* Controls */
.s15-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin:0 0 14px}
/* Shared autoplay pill (autoplay.js): last item of the controls row, pushed right. */
.s15-controls .ap-slot{margin-left:auto}
.s15-control{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
.s15-control-label{white-space:nowrap;font-size:11px;font-weight:700;line-height:1.3;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.s15-seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:20px;background:var(--cream-lo);border:1px solid var(--line)}
.s15-seg button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 13px;border:0;border-radius:999px;background:none;color:var(--muted);font:inherit;font-size:13px;font-weight:700;line-height:1;cursor:pointer;transition:background-color .2s var(--ease),color .2s,box-shadow .2s}
.s15-seg button small{font-size:11px;font-weight:700;letter-spacing:0;color:var(--muted)}
.s15-narrow-only{display:none}
.s15-seg button:hover{color:var(--ink)}
.s15-seg button[aria-pressed="true"]{background:var(--cream-hi);color:var(--ink-deep);box-shadow:inset 0 0 0 1.5px var(--ink-deep),0 1px 3px rgba(10,43,53,.16)}
.s15-seg button:focus-visible,.s15-chip:focus-visible,.s15-tool:focus-visible{outline:2.5px solid var(--pink);outline-offset:2px}
.s15-range{display:flex;flex-wrap:nowrap;align-items:center;gap:8px 12px;flex:0 1 auto}
.s15-range input[type=range]{-webkit-appearance:none;appearance:none;width:min(240px,100%);height:28px;margin:0;background:transparent;cursor:pointer}
.s15-range input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--teal-line),var(--sand))}
.s15-range input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--teal-line),var(--sand))}
.s15-range input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-8px;border-radius:50%;background:var(--teal);border:3px solid var(--cream-hi);box-shadow:0 1px 4px rgba(10,43,53,.3)}
.s15-range input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--teal);border:3px solid var(--cream-hi);box-shadow:0 1px 4px rgba(10,43,53,.3)}
.s15-range input[type=range]:focus-visible{outline:2.5px solid var(--pink);outline-offset:2px;border-radius:6px}
/* 7ch fits "10 / 10" without wrapping, so the looping step never changes the row height (2026-11-02). */
.s15-range output{min-width:7ch;white-space:nowrap;font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink-deep)}
.s15-range-wrap{position:relative;display:inline-flex;width:min(240px,100%);flex:0 1 240px}
.s15-range--f input[type=range]{width:100%}
.s15-bound-tick{position:absolute;top:1px;width:2px;height:26px;margin-left:-1px;border-radius:1px;background:var(--pink);pointer-events:none;transition:left .25s var(--ease)}
.s15-bound-tick::after{content:'bound';position:absolute;top:27px;left:50%;transform:translateX(-50%);font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--pink-deep)}
.s15-chip{min-height:32px;padding:0 13px;border:1px solid var(--teal-line);border-radius:999px;background:var(--cream-hi);color:var(--teal-deep);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.s15-chip:hover{background:var(--teal-wash)}
/* One quiet motion line ("Advancing · Pause" / "Paused · Resume"); a static dot, no pulse. */
.s15-var{padding-right:.14em;font-style:italic;font-weight:inherit;letter-spacing:0;text-transform:none}
/* Phone-only one-line summary under the controls (the readout sits below a tall diagram). */
.report-content .s15-fig .s15-mini{display:none;margin:-2px 0 12px;font-size:13.5px;line-height:1.45;color:var(--ink-soft)}
.s15-mini b{font-weight:700;color:var(--pink-deep)}

/* Surfaces, legend, notes, tooltip */
.s15-surface{background:var(--cream-hi);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-card)}
.s15-fig svg{display:block;overflow:visible;font-family:var(--font)}
.s15-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:12px 0 0!important;font-size:13px;color:var(--ink)}
.s15-legend li{display:inline-flex;align-items:center;gap:8px}
.s15-legend--small{margin:8px 0 0!important;font-size:12px;color:var(--muted);gap:4px 14px}
.s15-controls .s15-legend{margin:0!important}
.s15-sw{display:inline-block;flex:none;width:14px;height:10px;border-radius:3px}
.s15-sw--lane0{background:var(--s15-l0-fill,#e1eaf4);box-shadow:inset 0 0 0 1.5px var(--s15-l0,#4a76a3)}
.s15-sw--lane1{background:var(--s15-l1-fill,#e4eedd);box-shadow:inset 0 0 0 1.5px var(--s15-l1,#5b8a50)}
.s15-sw--arrow{height:2px;width:18px;border-radius:1px;background:var(--ink-soft)}
.s15-sw--tbo{background:var(--s15-tbo)}
.s15-sw--normal{background:var(--s15-normal)}
.s15-sw--dot,.s15-sw--normaldot,.s15-sw--tbodot{width:9px;height:9px;border-radius:50%;background:var(--ink-deep)}
.s15-sw--normaldot{background:var(--s15-normal)}
.s15-sw--tbodot{background:var(--s15-tbo)}
.s15-sw--mean{width:3px;height:14px;border-radius:1px;background:var(--ink-deep)}
.s15-sw--ideal{background:none;border:1.6px dashed var(--teal)}
.s15-sw--ep{background:repeating-linear-gradient(135deg,var(--ink-soft) 0 2px,#c9ced1 2px 5px)}
.s15-sw--fwd{background:var(--s15-fwd,#d9e7e6);box-shadow:inset 0 0 0 1px var(--teal)}
.s15-sw--bwd{background:var(--s15-bwd,#fbe1ed);box-shadow:inset 0 0 0 1px var(--pink-deep)}
.s15-sw--slot{background:var(--teal-wash);box-shadow:inset 0 0 0 1.4px var(--teal)}
.s15-sw--bad{background:var(--s15-bad-wash,rgba(200,62,77,.1));border:1.4px dashed var(--s15-bad,#c83e4d)}
.s15-sw--prod{height:3px;width:18px;background:var(--teal)}
.s15-sw--drain{height:3px;width:18px;background:var(--ink-deep)}
.s15-sw--backlog{background:rgba(64,117,121,.16)}
.s15-sw--nat{background:var(--s15-proto);box-shadow:inset 0 0 0 1.2px var(--s15-proto-line)}
.s15-sw--cv{background:var(--teal)}
.report-content .s15-fig .s15-fig-note{margin:12px 0 0;max-width:880px;font-size:12.5px;line-height:1.58;color:var(--muted)}
.report-content .s15-fig .s15-fig-note a[data-reference-type]{font-weight:700}
.s15-tip{position:absolute;z-index:6;max-width:300px;padding:9px 12px;border-radius:10px;background:var(--ink-deep);color:var(--cream);font-size:12.5px;line-height:1.45;box-shadow:var(--shadow-pop);pointer-events:none}
.s15-tip[hidden]{display:none}

/* SVG text */
.s15-t{font-size:14px;fill:var(--ink)}
.s15-t--step{font-size:12px;font-weight:700;fill:var(--muted);font-variant-numeric:tabular-nums;transition:fill .2s}
.s15-t--step.is-now{fill:var(--pink-deep)}
.s15-t--row{font-size:13.5px;font-weight:700;fill:var(--ink-deep)}
.s15-t--rowsub{font-size:11.5px;fill:var(--muted)}
.s15-t--rowlab{font-size:13.5px;font-weight:700;fill:var(--ink-deep)}
.s15-t--var{font-size:16px;font-weight:700;font-style:italic;fill:var(--ink-deep)}
.s15-t--op{font-size:13px;font-weight:700;fill:var(--ink-deep);pointer-events:none}
.s15-t--op.is-small{font-size:11.5px}
.s15-t--lane{font-size:11px;fill:var(--muted);pointer-events:none}
.s15-t--block{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;fill:var(--muted)}
.s15-t--tick{font-size:12px;fill:var(--muted);font-variant-numeric:tabular-nums}
.s15-t--axis{font-size:12.5px;fill:var(--muted)}
.s15-t--ideal{font-size:12.5px;font-weight:700;fill:var(--teal-deep)}
.s15-t--note2{font-size:13px;font-weight:700;fill:var(--ink-deep);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--cream-hi);stroke-width:4px;stroke-linejoin:round;white-space:pre}
.s15-t--head{font-size:11px;font-weight:700;letter-spacing:.1em;fill:var(--muted)}
.s15-t--bad{fill:var(--s15-bad)}
.s15-t--gop{font-size:13px;font-weight:700;fill:var(--ink-deep);pointer-events:none}
.s15-t--seg{font-size:11.5px;font-weight:700;fill:var(--ink-deep);pointer-events:none}
.s15-t--rateval{font-size:12.5px;font-weight:700;fill:var(--teal-deep);font-variant-numeric:tabular-nums}
.s15-t--rateval.is-over{fill:var(--ink-deep)}

.s15-t--halo{paint-order:stroke;stroke:var(--cream-hi);stroke-width:5px;stroke-linejoin:round}
.s15-t--link{font-size:11.5px;font-weight:700;fill:var(--pink-deep)}
.s15-sub{font-size:10px}
.s15-t--backlog{font-size:12px;font-weight:700;fill:var(--pink-deep);paint-order:stroke;stroke:var(--cream-hi);stroke-width:4px;stroke-linejoin:round}
.s15-t--wval{font-size:12px;font-weight:700;fill:var(--ink-deep);font-variant-numeric:tabular-nums}
.s15-t--ratio{font-size:13px;font-weight:700;fill:var(--pink-deep)}
.s15-t--run{font-size:12px;font-weight:700;fill:var(--pink-deep)}
.s15-grid{stroke:var(--line);stroke-width:1}
.s15-grid--v{stroke-dasharray:2 4}
.s15-hot{outline:none;cursor:pointer}
.s15-hit{fill:transparent;cursor:pointer}

/* Readout cards (shared) */
.s15-readout{min-width:0}
.report-content .s15-fig .s15-read-kicker{margin:0 0 8px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--pink-deep)}
.s15-cards2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.s15-card{display:flex;flex-direction:column;gap:2px;min-width:0;padding:10px 14px 11px;border:1px solid var(--line);border-radius:10px;background:var(--cream)}
.s15-card-stream{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.s15-card b{font-size:19px;font-weight:400;line-height:1.2;letter-spacing:-.01em;color:var(--ink-deep)}
.s15-card em{font-size:12.5px;font-style:normal;line-height:1.45;color:var(--muted)}
.s15-card--lane0{box-shadow:inset 3px 0 0 var(--s15-l0);background:var(--s15-l0-fill)}
.s15-card--lane1{box-shadow:inset 3px 0 0 var(--s15-l1);background:var(--s15-l1-fill)}
.s15-card.is-idle b{color:var(--muted)}
.s15-card.is-ok{box-shadow:inset 3px 0 0 var(--teal)}
.s15-card.is-bad{box-shadow:inset 3px 0 0 var(--s15-bad);background:var(--s15-bad-wash)}
.s15-card.is-bad b{color:var(--s15-bad)}
.s15-card-count{margin-top:6px;padding-top:6px;border-top:1px solid var(--line);font-size:12px;font-weight:700;color:var(--ink-soft)}
.report-content .s15-fig .s15-read-main{margin:10px 0 0;font-size:15px;line-height:1.5;color:var(--ink-deep)}
.s15-read-main b{font-weight:700}
.s15-meter{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:10px;font-size:12.5px;color:var(--muted)}
.s15-meter-dots{display:inline-flex;gap:4px}
.s15-meter-dots i{width:10px;height:10px;border-radius:3px;background:var(--cream-lo);border:1px solid var(--line-strong)}
.s15-meter-dots i.is-pair{background:var(--teal-line);border-color:var(--teal)}
.s15-meter-dots i.is-now{outline:2px solid var(--pink);outline-offset:1px}

/* ---------- Figure 63: two-batch overlap schedule ---------- */
.s15-tbo-stage,.s15-slots-stage{padding:16px 18px 18px}
.s15-tbo-host,.s15-slots-host{position:relative;outline:none;border-radius:10px;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.s15-tbo-host:focus-visible,.s15-slots-host:focus-visible,.s15-scale-host:focus-visible{box-shadow:0 0 0 2.5px var(--pink)}
.s15-tbo-stage .s15-readout,.s15-slots-stage .s15-readout{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.s15-block{fill:var(--cream);stroke:var(--line-strong);stroke-dasharray:4 4}
.s15-playhead{fill:var(--pink-wash);stroke:var(--pink);stroke-opacity:.55;stroke-width:1.2;transition:x .35s var(--ease),y .35s var(--ease)}
.s15-edge-base{fill:none;stroke:var(--line-strong);stroke-width:1.4;transition:stroke .25s,opacity .25s}
.s15-head{fill:var(--line-strong);transition:fill .25s}
.s15-input .s15-edge-base{stroke:var(--ink-soft)}
.s15-input .s15-head{fill:var(--ink-soft)}
.s15-edge.is-done.s15-lane-0 .s15-edge-base{stroke:var(--s15-l0)}
.s15-edge.is-done.s15-lane-0 .s15-head{fill:var(--s15-l0)}
.s15-edge.is-done.s15-lane-1 .s15-edge-base{stroke:var(--s15-l1)}
.s15-edge.is-done.s15-lane-1 .s15-head{fill:var(--s15-l1)}
.s15-edge.is-now .s15-edge-base{stroke-width:2.4}
.s15-edge.is-link .s15-edge-base{stroke:var(--pink);stroke-width:2.4}
.s15-edge.is-link .s15-head{fill:var(--pink)}
.s15-edge.is-ahead{opacity:.42}
.s15-edge.is-dim{opacity:.18}
.s15-op{cursor:pointer}
.s15-op rect{stroke-width:1.4;transition:fill .25s,stroke .25s,opacity .25s,stroke-width .2s}
.s15-op.s15-lane-0 rect{fill:var(--s15-l0-fill);stroke:var(--s15-l0)}
.s15-op.s15-lane-1 rect{fill:var(--s15-l1-fill);stroke:var(--s15-l1)}
.s15-op.is-next rect{opacity:.5}
.s15-op.is-next .s15-t--op{fill:var(--ink-soft)}
.s15-op.is-now rect{stroke-width:2.6}
.s15-op.is-hover rect,.s15-op.is-link rect{stroke:var(--pink);stroke-width:2.4}
.s15-op.is-dim{opacity:.16}
.s15-tbo-svg{width:100%;height:auto}

/* ---------- Figure 64: measured ---------- */
.s15-meas .s15-chart{position:relative;padding:14px 18px 10px;min-width:0}
.s15-meas .s15-chart[data-view="profile"]{padding:16px 18px 14px;background:var(--cream)}
.s15-zero{stroke:var(--ink-deep);stroke-width:1.4}
.s15-ideal rect{fill:rgba(64,117,121,.05);stroke:var(--teal);stroke-width:1.8;stroke-dasharray:6 4}
.s15-dbar rect{fill:var(--s15-tbo);transition:opacity .2s}
.s15-dot circle:not(.s15-hitc){fill:var(--ink-deep);stroke:var(--cream-hi);stroke-width:1.5}
.s15-dot.s15-mode-normal circle:not(.s15-hitc){fill:var(--s15-normal)}
.s15-dot.s15-mode-tbo circle:not(.s15-hitc){fill:var(--s15-tbo)}
.s15-hitc{fill:transparent}
.s15-meanline{stroke:var(--ink-deep);stroke-width:2.4;stroke-linecap:round}
.s15-hot.is-hot rect{stroke:var(--ink-deep);stroke-width:2}
.s15-hot.is-hot circle:not(.s15-hitc){stroke:var(--ink-deep);stroke-width:2.5}
.s15-ideal.is-hot rect{stroke:var(--teal-deep);stroke-width:2.6}
/* Keyboard focus on a chart mark: the kit's pink ring. */
.s15-hot:focus-visible rect{stroke:var(--pink);stroke-width:2.5}
.s15-hot:focus-visible circle:not(.s15-hitc){stroke:var(--pink);stroke-width:2.5}
.s15-dot:focus-visible .s15-hitc{fill:none;stroke:var(--pink);stroke-width:2}
.s15-meas-readout{margin-top:12px}
.s15-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.s15-kpis--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.s15-kpi{display:flex;flex-direction:column;gap:1px;min-width:0;padding:10px 14px 11px;border:1px solid var(--line);border-radius:10px;background:var(--cream-hi);box-shadow:inset 3px 0 0 var(--ink-deep)}
.s15-kpi span{font-size:12px;font-weight:700;color:var(--muted)}
.s15-kpi b{font-size:24px;font-weight:400;line-height:1.18;letter-spacing:-.02em;color:var(--ink-deep);font-variant-numeric:tabular-nums}
.s15-kpi b small{font-size:13px;color:var(--muted);letter-spacing:0}
.s15-kpi em{font-size:12.5px;font-style:normal;line-height:1.4;color:var(--muted)}
.s15-kpi--avail,.s15-kpi--ok{box-shadow:inset 3px 0 0 var(--teal)}
.s15-kpi--normal{box-shadow:inset 3px 0 0 var(--s15-normal)}
.s15-kpi--tbo{box-shadow:inset 3px 0 0 var(--s15-tbo)}
.s15-kpi--req{box-shadow:inset 3px 0 0 var(--pink)}
.s15-kpi--req b{color:var(--ink-deep)}
.s15-kpi--ok b{color:var(--teal-deep)}
.s15-prof{display:grid;gap:12px}
.s15-prof-panel{padding:14px 16px 14px;border:1px solid var(--line);border-radius:12px;background:var(--cream-hi)}
.report-content .s15-fig .s15-prof-panel h4{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0 0 10px;font-size:15px;font-weight:700;line-height:1.3;color:var(--ink-deep)}
.s15-prof-panel h4 span{font-size:12px;font-weight:400;color:var(--muted)}
.report-content .s15-fig .s15-prof-lead{margin:-2px 0 10px;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}
.report-content .s15-fig .s15-prof-foot{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px;line-height:1.5;color:var(--muted)}
.s15-span-row{display:grid;grid-template-columns:120px minmax(0,1fr) 92px;grid-template-areas:"name track val" ". note note";align-items:center;gap:2px 12px;padding:5px 6px;margin:0 -6px;border-radius:8px}
.s15-span-name{grid-area:name;font-size:13px;font-weight:700;color:var(--ink-deep)}
.s15-span-track{grid-area:track;position:relative;height:18px;border-radius:4px;background:var(--cream-lo)}
.s15-span-track>i{position:relative;display:flex;justify-content:flex-end;height:100%;border-radius:4px;overflow:hidden;transition:width .4s var(--ease)}
.s15-span-val{grid-area:val;font-size:13px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-deep)}
.s15-span-note{grid-area:note;font-size:12px;color:var(--muted)}
.s15-span-row.s15-mode-normal .s15-span-track>i{background:var(--s15-normal)}
.s15-span-row.s15-mode-ideal .s15-span-track>i{background:rgba(64,117,121,.08);box-shadow:inset 0 0 0 1.6px var(--teal);background-clip:padding-box;outline:0}
.s15-span-row.s15-mode-ideal .s15-span-track>i{border:1.6px dashed var(--teal);box-shadow:none}
.s15-span-row.s15-mode-tbo .s15-span-track>i{background:var(--s15-tbo)}
.s15-span-ep{display:block;height:100%;background:repeating-linear-gradient(135deg,var(--ink-soft) 0 3px,#c9ced1 3px 7px)}
.s15-span-row.is-hot,.s15-span-row:focus-visible,.s15-pb-row.is-hot,.s15-pb-row:focus-visible{background:var(--teal-wash)}
.s15-span-row:focus-visible,.s15-pb-row:focus-visible{outline:2px solid var(--pink);outline-offset:1px}
.s15-pb{display:grid;grid-template-columns:150px minmax(0,1fr) 64px;align-items:center;gap:4px 12px;padding:6px 0;border-top:1px solid var(--line)}
.s15-prof-panel .s15-pb:first-of-type{border-top:0}
.s15-prof-lead+.s15-pb{border-top:0}
.report-content .s15-fig .s15-pb-label{font-size:13px;font-weight:700;line-height:1.3;color:var(--ink-deep)}
.s15-pb-rows{display:grid;gap:3px;min-width:0}
.s15-pb-row{display:grid;grid-template-columns:52px minmax(0,1fr) 84px;align-items:center;gap:8px;padding:1px 6px;margin:0 -6px;border-radius:6px}
.s15-pb-mode{font-size:11.5px;font-weight:700;color:var(--muted)}
.s15-pb-track{height:11px;border-radius:3px;background:var(--cream-lo);overflow:hidden}
.s15-pb-track i{display:block;height:100%;border-radius:3px;transition:width .4s var(--ease)}
.s15-pb-row.s15-mode-normal i{background:var(--s15-normal)}
.s15-pb-row.s15-mode-tbo i{background:var(--s15-tbo)}
.s15-pb-val{font-size:12.5px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-deep)}
.report-content .s15-fig .s15-pb-delta{font-size:14px;font-weight:700;text-align:right;color:var(--pink-deep);font-variant-numeric:tabular-nums}

/* ---------- Figure 65: CUDA Graph slots ---------- */
.s15-slots-svg{width:100%;height:auto}
.s15-gop{cursor:pointer}
.s15-gop rect{stroke-width:1.2;transition:opacity .25s,stroke-width .2s}
.s15-gop--F rect{fill:var(--s15-fwd);stroke:var(--teal)}
.s15-gop--B rect{fill:var(--s15-bwd);stroke:var(--pink-deep)}
.s15-gop.is-next rect{opacity:.45}
.s15-gop.is-next .s15-t--gop{fill:var(--ink-soft)}
.s15-gop.is-now rect{stroke-width:2.6}
.s15-seg-ghost{fill:none;stroke:var(--line-strong);stroke-dasharray:3 3}
.s15-seg-fill{fill:var(--teal-wash);stroke:var(--teal);stroke-width:1.3;transition:width .3s var(--ease)}
.s15-seg-bar.is-clobber .s15-seg-fill{fill:var(--s15-bad-wash);stroke:var(--s15-bad);stroke-dasharray:5 3;stroke-width:1.5}
.s15-seg-bar.is-clobber .s15-t--seg{fill:var(--s15-bad)}
.s15-seg-bar.is-future .s15-t--seg{fill:var(--muted)}
.s15-mark circle{stroke-width:1.5}
.s15-mark path{fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.s15-mark.is-ok circle{fill:var(--cream-hi);stroke:var(--teal)}
.s15-mark.is-ok path{stroke:var(--teal)}
.s15-mark.is-bad circle{fill:var(--s15-bad);stroke:var(--s15-bad)}
.s15-mark.is-bad path{stroke:#fff}
.s15-mark.is-future{opacity:0}

/* ---------- Companions after Table 32 and in Section 15.5 ---------- */
.report-content .s15-companion{margin:1.6em 0 2.6em;padding:16px 0 0;border-top:1px solid var(--ink)}
.report-content .s15-fig .s15-kicker{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 10px;font-size:12px;line-height:1.4}
.s15-kicker-label{font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}
.s15-badge{display:inline-flex;align-items:center;gap:7px;padding:4px 10px 4px 8px;border-radius:999px;background:var(--teal-wash);color:var(--teal-deep);font-weight:700}
.s15-badge::before{content:'';flex:none;width:8px;height:8px;border-radius:50%;border:1.5px dashed var(--teal);box-sizing:border-box}
.s15-badge[data-kind="measured"]{background:var(--pink-wash);color:var(--pink-deep)}
.s15-badge[data-kind="measured"]::before{border:0;background:var(--pink)}
.report-content .s15-fig .s15-toy{margin:6px 0 0;font-size:13.5px;line-height:1.5;color:var(--muted)}
.s15-off-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:22px;padding:16px 18px 14px}
.s15-off-grid section{min-width:0}
.report-content .s15-fig .s15-panel-title{margin:0 0 8px;font-size:13.5px;font-weight:700;color:var(--ink-deep)}
.s15-panel-title span{margin-left:8px;font-size:12px;font-weight:400;color:var(--muted)}
.s15-off .s15-chart{min-width:0}
.s15-rate{transition:width .25s var(--ease)}
/* One encoding: required rates and the produced bytes are teal, copies at the
   link rate ink; pink marks only the link line and the backlog annotation. */
.s15-rate.is-over,.s15-rate.is-ok{fill:var(--teal)}
.s15-rate-ghost{fill:none;stroke:var(--teal);stroke-opacity:.5;stroke-dasharray:3 3}
.s15-link{stroke:var(--pink);stroke-width:2.2}
.s15-backlog{fill:rgba(64,117,121,.16)}
.s15-line{fill:none;stroke-width:2.4;stroke-linecap:round}
.s15-line--prod{stroke:var(--teal)}
.s15-line--drain{stroke:var(--ink-deep);stroke-width:2}
.s15-end{stroke:var(--cream-hi);stroke-width:2}
.s15-end--prod{fill:var(--teal)}
.s15-end--drain{fill:var(--ink-deep)}
.s15-off [data-s15-off-readout]{margin-top:12px}
.s15-scale-stage{display:grid;grid-template-columns:minmax(0,auto) minmax(260px,1fr);gap:20px 26px;align-items:start;padding:16px 18px}
.s15-scale-host{outline:none;border-radius:8px;min-width:0}
.s15-cell{stroke:none;transition:opacity .2s}
.s15-shade-0{fill:#cfe1e0}.s15-shade-1{fill:#e7d3bb}.s15-shade-2{fill:#9cc0c2}.s15-shade-3{fill:#f1e4d3}.s15-shade-4{fill:#b8d0d2}.s15-shade-5{fill:#d6bea0}.s15-shade-6{fill:#7fa6a9}.s15-shade-7{fill:#e9dccb}
.s15-scale-host svg .s15-cell:not(.is-run){opacity:.5}
.s15-sblock{fill:none;stroke:var(--cream-hi);stroke-width:2;pointer-events:none}
.s15-runbox{fill:none;stroke:var(--pink);stroke-width:2.4;pointer-events:none}
.s15-runarrow{fill:none;stroke:var(--pink);stroke-width:2}
.s15-runhead{fill:var(--pink)}
.s15-scale-chips{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0 0!important}
.report-content .s15-scale-chips li{padding:3px 8px;border-radius:6px;background:var(--cream-lo);border:1px solid var(--line);font-size:12.5px;font-variant-numeric:tabular-nums;color:var(--ink-deep)}
.report-content .s15-scale-chips.is-many li{background:var(--pink-wash);border-color:rgba(240,82,156,.35)}
.report-content .s15-fig blockquote.s15-quote{margin:12px 0 0;padding:0 0 0 12px;border-left:2px solid var(--pink);font-size:14px;line-height:1.55;color:var(--ink-soft)}
.s15-quote cite{display:block;margin-top:4px;font-size:11px;font-style:normal;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.s15-paths{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.s15-path{display:flex;flex-direction:column;gap:4px;padding:11px 14px 12px;border:1px solid var(--line);border-radius:10px;background:var(--cream-hi)}
.s15-path>span{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.report-content .s15-fig .s15-path p{font-size:13.5px;line-height:1.5;color:var(--ink-soft)}
.s15-path em{margin-top:auto;padding-top:4px;font-size:12px;font-style:normal;font-weight:700;color:var(--ink-deep)}
.s15-path--slow{box-shadow:inset 3px 0 0 var(--s15-proto)}
.s15-path--now{box-shadow:inset 3px 0 0 var(--teal)}
.s15-path--next{box-shadow:inset 3px 0 0 var(--line-strong);background:var(--cream)}

/* ---------- Tables: plot, row links, phone layouts ---------- */
.table-frame.s15-summary tbody td:first-child{font-weight:700;color:var(--ink)}
.s15-row-go{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:6px;font-weight:400}
.s15-row-go a{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;background:var(--teal-wash);font-size:12px;font-weight:700;line-height:1;color:var(--teal-deep);text-decoration:none;white-space:nowrap}
.s15-row-go a:hover{background:rgba(64,117,121,.17)}
.s15-tool{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:0 13px;border:1px solid var(--line);border-radius:999px;background:var(--cream-hi);color:var(--teal-deep);font:inherit;font-size:12px;font-weight:700;line-height:1;cursor:pointer}
.s15-tool svg{fill:currentColor}
.s15-tool--plot{color:var(--muted)}
.s15-tool--plot[aria-pressed="true"]{background:var(--ink-deep);border-color:var(--ink-deep);color:var(--cream)}
.s15-tool-seg{display:inline-flex;padding:2px;border-radius:999px;background:var(--cream-lo);border:1px solid var(--line)}
.s15-tool-seg[hidden]{display:none}
.s15-tool-seg .s15-tool{min-height:28px;border:0;background:none;color:var(--muted)}
.s15-tool-seg .s15-tool[aria-pressed="true"]{background:var(--cream-hi);color:var(--ink-deep);box-shadow:inset 0 0 0 1.5px var(--ink-deep),0 1px 3px rgba(10,43,53,.16)}
.s15-tplot{position:relative;container:s15/inline-size;margin:0 0 12px;padding:14px 18px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--cream-hi);box-shadow:var(--shadow-card)}
.s15-tplot[hidden]{display:none}
.s15-tplot-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 18px;margin:0 0 8px;font-size:12.5px;line-height:1.45;color:var(--muted)}
.report-content .s15-tplot-head p{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0}
.s15-tplot-head b{color:var(--ink-deep)}
.report-content .s15-tplot :is(ul,ol){margin:0;padding:0;list-style:none}
.report-content .s15-tplot li{margin:0;padding:0}
.report-content .s15-tplot .s15-legend--small{margin:0!important}
.s15-tplot svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--font)}
.s15-wrow-bg{fill:transparent;transition:fill .2s}
.s15-wrow.is-focus .s15-wrow-bg{fill:var(--teal-wash)}
/* The prototype is outlined light teal (not the FSDP warm grey); the adopted
   converted path is solid teal. */
.s15-wbar--nat rect{fill:var(--s15-proto);stroke:var(--s15-proto-line);stroke-width:1.2}
.s15-wbar--cv rect{fill:var(--teal)}
.report-content tbody tr.s15-row-focus>*{background:var(--pink-wash)}
.table-frame.s15-cards-on>.table-viewport,.table-frame.s15-cards-on>.table-scroll{display:none!important}
.table-frame.s15-cards-on .table-hint{display:none!important}
.s15-cards[hidden]{display:none!important}
.s15-cards{display:grid;gap:10px}
.s15-card-row{padding:12px 14px 13px;border:1px solid var(--line);border-radius:12px;background:var(--cream-hi);font-size:14.5px;line-height:1.48}
.report-content .s15-card-row p,.report-content .s15-card-row dl{margin:0}
.s15-card-title{margin:0 0 8px!important;font-size:15.5px;font-weight:700;line-height:1.35;color:var(--ink-deep)}
.s15-card-row dl{display:grid;gap:8px}
.s15-card-field dt{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.s15-card-field dt strong{font-weight:700}
.s15-card-field dd{margin:2px 0 0;color:var(--ink)}
.s15-card-field--3{padding:8px 10px;border-radius:8px;background:var(--cream-lo)}
.s15-card-row .s15-row-go{margin-top:10px}
.s15-tlist-group{padding:10px 14px 6px;border:1px solid var(--line);border-radius:12px;background:var(--cream-hi)}
.report-content .s15-tlist-head{margin:0 0 4px;font-size:14px;line-height:1.4;color:var(--ink-deep)}
.s15-tlist-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:4px 12px;padding:7px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.45}
.s15-tlist-head+.s15-tlist-row{border-top:0}
.s15-tlist-val{display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink-deep)}
.s15-tlist-size{font-size:12.5px;font-weight:400;color:var(--muted)}
.s15-only-phone{display:none!important}
@media (max-width:760px){.s15-only-phone:not([hidden]){display:inline-flex!important}}

/* ---------- Container layouts ---------- */
/* The TBO diagram turns vertical below 780px; the slots diagram compacts below 620px. */
@container s15 (max-width:779px){.report-content .s15-fig.s15-tbo .s15-mini{display:block}}
@container s15 (max-width:619px){.report-content .s15-fig.s15-slots .s15-mini{display:block}}
@container s15 (max-width:760px){
 .s15-kpis--4{grid-template-columns:repeat(2,minmax(0,1fr))}
 .s15-off-grid{grid-template-columns:1fr;gap:18px}
 .s15-scale-stage{grid-template-columns:1fr}
 .s15-paths{grid-template-columns:1fr}
}
@container s15 (max-width:600px){
 .s15-controls{gap:10px 16px}
 /* Segmented controls fill the row in equal parts, with short labels. */
 .s15-control{width:100%}
 .s15-seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;width:100%;box-sizing:border-box}
 .s15-seg button{justify-content:center;padding:0 8px;text-align:center}
 .s15-wide-only{display:none}
 .s15-narrow-only{display:inline}
 .s15-tbo-stage,.s15-slots-stage,.s15-scale-stage,.s15-off-grid{padding:12px 10px 14px}
 .s15-meas .s15-chart{padding:10px 8px 6px}
 .s15-meas .s15-chart[data-view="profile"]{padding:10px 8px}
 .s15-cards2{grid-template-columns:1fr}
 .s15-kpis{grid-template-columns:1fr 1fr}
 .s15-kpi--gap{grid-column:1/-1}
 .s15-kpi b{font-size:20px}
 .s15-range input[type=range],.s15-range-wrap{width:100%}
 .s15-range{width:100%}
 .s15-range input[type=range]{flex:1 1 160px}
 .s15-span-row{grid-template-columns:minmax(0,1fr) 84px;grid-template-areas:"name val" "track track" "note note"}
 .s15-pb{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label delta" "rows rows"}
 .s15-pb-label{grid-area:label}.s15-pb-rows{grid-area:rows}.s15-pb-delta{grid-area:delta}
 .s15-pb-row{grid-template-columns:44px minmax(0,1fr) 76px}
 .s15-prof-panel{padding:12px 12px}
 .s15-tplot{padding:12px 10px 6px}
}

/* Motion and print */
@media (prefers-reduced-motion:reduce){
 .s15-fig *,.s15-tplot *{transition:none!important;animation:none!important}
}
@media print{
 .s15-controls,.s15-tool,.s15-tool-seg,.s15-tplot,.s15-cards,.s15-companion,.s15-row-go{display:none!important}
 .table-frame.s15-cards-on>.table-viewport,.table-frame.s15-cards-on>.table-scroll{display:block!important}
}
@media (forced-colors:active){
 .s15-op rect,.s15-gop rect,.s15-seg-fill,.s15-dbar rect,.s15-rate,.s15-wbar rect{stroke:CanvasText}
 .s15-playhead{stroke:Highlight}
}
