/* Shared editorial treatment for the article's interactive demonstrations. */
.demo-kicker,.step-figure-heading>span,.trace-figure-number{font:500 10px/1.5 var(--mono);letter-spacing:.1em;color:var(--accent)}
.step-wallclock,.trace-figure,.run-costs{margin-block:40px;padding-block:28px;border-block:1px solid var(--rule)}
.step-figure-heading h3{font-size:28px;line-height:1.25;margin:10px 0 26px;letter-spacing:-.025em}
.step-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin-bottom:0;padding:0;border-bottom:1px solid var(--rule)}
.step-tabs button{position:relative;text-align:left;display:flex;flex-direction:column;gap:9px;padding:16px 12px 18px;border:0;border-bottom:2px solid transparent;border-radius:0;font:500 12px/1.5 var(--sans);min-height:104px;transition:background .15s,color .15s}
.step-tabs button:first-child{padding-left:0}.step-tab-number{font:10px/1.5 var(--mono);color:var(--ink-3);font-weight:400}.step-tabs button[aria-selected=true]{background:var(--surface);color:var(--accent);border-color:var(--accent)}.step-tabs button[aria-selected=true] .step-tab-number{color:var(--accent)}.step-tabs button:first-child[aria-selected=true]{padding-left:12px}
.step-plot-key{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:18px;padding:20px 0 8px;color:var(--ink-2);font:11px/1.5 var(--sans)}.step-plot-key>span{display:flex;align-items:center;gap:6px}.step-plot-key i{display:block;width:8px;height:8px;border-radius:1px}.key-cpu{background:#8997ac}.key-compute{background:#648e87}.key-transfer{background:#be9b64}
.step-highlight{stroke-dasharray:none;stroke:var(--rule);fill:var(--surface)}.step-operation-description{margin-top:18px;padding:18px 20px 20px;border-left:2px solid var(--accent);background:var(--surface);min-height:142px}.step-operation-description strong{font:400 22px/1.35 var(--serif)}.step-operation-description p{font-size:14px;max-width:72ch;margin-top:8px}.step-panel{animation:demo-reveal .2s ease-out}.step-wallclock figcaption{font-size:11px;border:0;padding:0;margin-top:18px;max-width:78ch}
.repo-tabs{gap:2px 16px;padding-bottom:0}.repo-tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:10px 2px;font-size:12px;min-height:42px}.repo-tabs button[aria-selected=true]{background:transparent;color:var(--accent);border-color:var(--accent)}.repo-tabs button:hover{background:transparent;color:var(--ink)}.repo-panel{padding-top:28px}.repo-panel-heading{margin-bottom:26px}.repo-panel-heading h3{font-size:29px}.repo-run-context{background:var(--surface);border:0;padding:16px 18px;margin:0 0 26px}.repo-findings p{font-size:15px;line-height:1.8}.repo-findings h4{margin-bottom:12px}.repo-panel-heading a{font-size:11px}
.trace-heading{display:block}.trace-heading h5{font-family:var(--serif);font-size:28px;line-height:1.25;margin:8px 0 10px}.trace-eyebrow{font:11px/1.65 var(--mono)}.trace-figure .trace-story{min-height:0;margin:10px 0 24px!important;max-width:72ch;font-size:14px}.trace-chart{padding-top:8px}.trace-stages{gap:8px 16px;padding:8px 12px 16px}.trace-stages span{font-size:11px}.trace-legend{padding-bottom:18px}.trace-metrics{gap:18px 48px;padding:20px 0}.trace-metrics b{font:400 27px/1.3 var(--serif)}.trace-metrics em{font-size:12px;margin-top:6px}.trace-detail{background:var(--surface);border-left:2px solid var(--accent);padding:14px 18px;margin:6px 0 18px;min-height:80px;font-size:11px;line-height:1.8}.trace-detail strong{margin-bottom:4px}.trace-foot{padding-top:4px}.trace-foot a{font-size:11px}
.cost-charts{grid-template-columns:1fr;gap:30px}.cost-chart{position:relative}.cost-chart h4{font-size:25px;margin-bottom:6px}.cost-legend{margin-bottom:20px;min-height:22px}.cost-plot{height:259px;padding-bottom:69px;padding-left:44px;min-width:630px}.cost-axis{height:190px}.cost-axis>span:after{left:44px}.cost-bars{height:190px;gap:16px}.cost-stack{width:68%;max-width:38px;transition:opacity .18s,filter .18s}.cost-stack:after{content:attr(data-value);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);white-space:nowrap;font:10px/1 var(--mono);color:var(--ink);opacity:0}.cost-bar.is-selected .cost-stack:after{opacity:1}.cost-scroll{padding-top:22px}.cost-label{writing-mode:horizontal-tb;top:calc(100% + 16px);left:50%;transform:translateX(-50%) rotate(-30deg);font-size:10px}.cost-bar.is-selected .cost-stack{outline:0;filter:saturate(1.3)}.cost-bar.is-selected .cost-label{color:var(--accent);font-weight:600}.run-costs.has-selection .cost-bar:not(.is-selected) .cost-stack{opacity:.35}
.cost-detail{margin-top:10px;border:0;border-left:2px solid var(--accent);background:var(--surface);padding:18px 20px;min-height:166px}.cost-detail-title{display:flex;align-items:baseline;gap:8px 16px;flex-wrap:wrap}.cost-detail-title .demo-kicker{width:100%}.cost-detail-title strong{font:400 24px/1.3 var(--serif);color:var(--ink)}.cost-total{font:11px var(--mono);color:var(--ink-2)}.cost-detail>p{font-size:13px;max-width:65ch;margin:12px 0 0}.cost-readouts{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:16px}.cost-readouts>div{display:flex;flex-direction:column;gap:4px}.cost-readouts span{font:10px var(--sans);color:var(--ink-3);text-transform:uppercase;letter-spacing:.07em}.cost-readouts b{font:400 21px/1.4 var(--mono)}.cost-readouts small{font:11px/1.5 var(--sans);color:var(--ink-2)}.cost-hint{margin-top:14px}
.loss-patterns summary{padding-block:17px}.loss-patterns summary:after{font-size:17px}.loss-patterns details[open]{padding-bottom:4px}.loss-patterns details[open] summary strong{color:var(--accent)}
@keyframes demo-reveal{from{opacity:.5;transform:translateY(3px)}to{opacity:1;transform:none}}
@media(max-width:700px){.step-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.step-tabs button,.step-tabs button:first-child{min-height:88px;padding:12px}.step-tabs button:last-child{grid-column:1/-1;min-height:70px}.step-figure-heading h3,.trace-heading h5{font-size:25px}.step-operation-description{min-height:190px;padding:16px}.step-plot-key{justify-content:flex-start;gap:12px}.cost-scroll{padding-bottom:4px}.cost-readouts{gap:10px}.cost-readouts b{font-size:17px}.cost-detail{min-height:200px;padding:16px}.trace-detail{padding:12px}.repo-tabs{gap:2px 12px}.repo-run-context{padding:14px}.step-wallclock,.trace-figure,.run-costs{margin-block:30px;padding-block:22px}}
@media(prefers-reduced-motion:reduce){.step-panel{animation:none}.step-tabs button,.cost-stack{transition:none}}
@media print{.cost-stack:after{opacity:1}.cost-plot{min-width:0}.step-tabs button:not([aria-selected=true]){display:none}}
@media(max-width:700px){.step-panel:before{content:'Swipe the timeline to see the full interval →';display:block;font:10px/1.6 var(--sans);color:var(--ink-3);padding-top:14px}.cost-chart:after{content:'Swipe to compare all repositories →';display:block;font:10px/1.6 var(--sans);color:var(--ink-3);margin-top:4px}}

/* Recorded evidence, kept next to the instrumentation example. */
.parity-evidence{margin:32px 0 36px;padding:26px 0;border-block:1px solid var(--rule)}
.parity-evidence section{margin-top:26px}.parity-evidence h4{display:flex;align-items:baseline;gap:14px;margin:0 0 12px;font:400 24px/1.35 var(--serif);letter-spacing:-.02em}.parity-evidence h4>span{font:11px var(--mono);color:var(--accent);letter-spacing:0}
.parity-evidence p{font-size:14px;line-height:1.8;margin:12px 0}.parity-files{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}.parity-files>div{min-width:0}.parity-evidence .code-frame{margin:14px 0 8px}.parity-evidence pre{font-size:12px;line-height:1.75}.parity-evidence .code-header{flex-wrap:wrap;gap:8px}.parity-files a{font:11px/1.6 var(--sans)}
.parity-verdict{border-left:2px solid #b67959;padding:12px 18px;background:var(--surface)}.parity-verdict strong{color:var(--ink)}.parity-evidence figcaption{font:11px/1.8 var(--sans);color:var(--ink-3);margin-top:22px}
@media(max-width:700px){.parity-files{grid-template-columns:1fr;gap:20px}.parity-evidence h4{font-size:22px}.parity-evidence{margin-block:26px}.parity-evidence pre{font-size:11px}}

/* Runtime coverage across six operation examples. */
.step-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.step-tabs button{min-height:88px}.step-tabs button:first-child{padding-left:12px}
.step-runtime-rest{fill:var(--ring)}.step-runtime-summary{border-bottom:1px solid var(--rule);padding:14px 0 18px}.step-runtime-summary b{font:400 20px/1.5 var(--serif);color:var(--ink)}.step-runtime-summary p{font:14px/1.7 var(--sans);margin:8px 0;color:var(--ink-2)}.step-runtime-summary>span{font:11px/1.7 var(--sans);color:var(--ink-3)}
@media(max-width:700px){.step-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.step-tabs button:last-child{grid-column:auto;min-height:88px}.step-runtime-summary b{font-size:19px}}

/* Five problem patterns, each with a concrete operation. */
.step-tabs{grid-template-columns:repeat(5,minmax(0,1fr))}.step-tabs button{min-height:106px}.step-operation-description{min-height:156px}
@media(max-width:700px){.step-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.step-tabs button{min-height:90px}.step-tabs button:last-child{grid-column:1/-1;min-height:76px}.step-operation-description{min-height:0}}

.step-operation-description .step-other-examples{margin-top:16px;padding-top:12px;border-top:1px solid var(--rule);font-size:12px;line-height:1.8;color:var(--ink-2)}
.step-other-examples>span{display:block;margin-bottom:4px;font:500 10px/1.6 var(--sans);letter-spacing:.07em;text-transform:uppercase;color:var(--accent)}

/* Compact sketches: two tracks and one takeaway. */
.step-panel:before{display:none}.step-tabs button,.step-tabs button:last-child{min-height:80px;padding:12px 10px;gap:6px}.step-tab-number{font-size:9px}.step-tabs button{font-size:11px}
.pattern-sketch{padding:18px 0 10px;max-width:680px;margin:auto}.pattern-time{margin-left:70px;text-align:right;font:10px/1.4 var(--sans);color:var(--ink-3);margin-bottom:12px}.pattern-row{display:grid;grid-template-columns:70px minmax(0,1fr);align-items:center;margin-bottom:16px}.pattern-lane{font:11px/1.4 var(--sans);color:var(--ink-2)}.pattern-track{position:relative;height:21px;background:var(--surface);border-bottom:1px solid var(--rule)}.pattern-bar,.pattern-gap{position:absolute;top:0;height:20px;border-radius:2px}.pattern-compute{background:var(--timeline-compute)}.pattern-cpu{background:var(--timeline-host)}.pattern-transfer{background:var(--timeline-transfer)}.pattern-gap,.pattern-gap-key{background:repeating-linear-gradient(135deg,transparent 0 3px,var(--ring) 3px 5px)}.pattern-path{display:block;font:11px/20px var(--sans);color:var(--ink-2);white-space:nowrap}.pattern-caption{display:flex;justify-content:center;align-items:center;gap:8px;margin-left:70px;font:12px/1.5 var(--sans);color:var(--ink)}.pattern-gap-key{display:inline-block;width:20px;height:12px}
.step-operation-description{min-height:0;margin-top:10px;padding:0;background:none;border:0}.step-operation-description>p{margin:0;font-size:14px}.step-operation-description .step-other-examples{padding-top:10px;margin-top:12px}.step-other-examples>span{display:inline;margin:0 8px 0 0}
@media(max-width:700px){.step-tabs button,.step-tabs button:last-child{min-height:66px}.pattern-path{font-size:10px}.pattern-row{grid-template-columns:58px minmax(0,1fr)}.pattern-time,.pattern-caption{margin-left:58px}.step-operation-description>p{font-size:13px}}

/* One label per problem tab. */
.step-tabs button,.step-tabs button:last-child{min-height:48px;justify-content:center;font-size:12px;padding:12px 10px}

.pattern-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:22px 0 8px}.pattern-pair>div+div{border-left:1px solid var(--rule);padding-left:28px}.pattern-pair h4{font:500 13px/1.5 var(--sans);margin:0 0 8px}.pattern-pair .pattern-row{grid-template-columns:36px minmax(0,1fr);margin-bottom:12px}.pattern-pair .pattern-time{margin-left:36px;margin-bottom:8px}.pattern-pair p{font:11px/1.7 var(--sans);color:var(--ink-2);margin:12px 0 0}.pattern-pair .pattern-bar{font:9px/20px var(--sans);text-align:center;color:var(--timeline-bar-ink);white-space:nowrap}
.backend-sketch{max-width:620px;margin:20px auto 14px;text-align:center}.backend-call{font:500 14px/1.5 var(--sans);padding-bottom:12px}.backend-routes{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--rule);gap:18px}.backend-route{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 10px;background:var(--surface)}.backend-condition{font:11px/1.5 var(--sans);color:var(--ink-2)}.backend-arrow{color:var(--ink-3)}.backend-route strong{font:500 14px/1.5 var(--sans)}.backend-route small{font:11px/1.5 var(--sans);color:var(--ink-2)}.backend-check{font:12px/1.6 var(--sans);color:var(--accent);margin:14px 0 0}
@media(max-width:600px){.pattern-pair{grid-template-columns:1fr;gap:18px}.pattern-pair>div+div{border-left:0;border-top:1px solid var(--rule);padding:16px 0 0}.backend-routes{gap:8px}.backend-route{padding:10px 6px}.backend-route strong{font-size:12px}}

.step-wallclock .sync-sketch{display:block;width:100%;min-width:0;height:auto;margin:0}.sync-dependency{stroke:var(--ink);stroke-width:1.4;fill:none;marker-end:url(#sync-arrow);color:var(--ink)}.sync-sketch marker{color:var(--ink)}.sync-note{font:10px var(--sans);fill:var(--ink-2)}.sync-wait-label{font:11px var(--sans);fill:var(--ink);text-anchor:middle}

.hardware-sketch{max-width:720px;margin:22px auto 18px}.hardware-heading{display:flex;justify-content:space-between;gap:12px;font:11px/1.6 var(--sans);color:var(--ink-2);margin-bottom:18px}.hardware-row{display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;margin:0 0 16px}.hardware-name{font:12px/1.5 var(--sans);color:var(--ink)}.hardware-track{height:30px;border-left:1px solid var(--ink-3);border-bottom:1px solid var(--rule)}.hardware-bar{display:block;height:24px;background:var(--timeline-compute);color:var(--timeline-bar-ink);text-align:center;font:11px/24px var(--sans);border-radius:0 2px 2px 0}.hardware-caption{font:12px/1.7 var(--sans);margin-top:18px;color:var(--ink)}.hardware-note{font:10px/1.6 var(--sans);margin-top:5px;color:var(--ink-3)}
@media(max-width:600px){.hardware-row{grid-template-columns:110px minmax(0,1fr)}.hardware-name{font-size:11px}.hardware-heading{font-size:10px}}

.hardware-track-savings{position:relative;height:46px}.hardware-savings{position:absolute;top:1px;text-align:center;color:var(--accent)}.step-wallclock .hardware-savings svg{display:block;min-width:0;width:100%;height:18px;overflow:visible}.hardware-savings path{fill:none;stroke:currentColor;stroke-width:1.3;vector-effect:non-scaling-stroke}.hardware-savings>span{display:block;margin-top:3px;font:12px/1.5 var(--sans)}

.hardware-time-axis{margin:0 0 18px 150px;color:var(--ink-2)}.hardware-time-axis>span{display:block;text-align:center;font:12px/1.5 var(--sans);margin-bottom:7px}.hardware-time-axis>i{display:block;position:relative;height:1px;background:var(--ink-3)}.hardware-time-axis>i:after{content:'';position:absolute;right:0;top:-3px;width:6px;height:6px;border-top:1px solid var(--ink-3);border-right:1px solid var(--ink-3);transform:rotate(45deg)}
@media(max-width:600px){.hardware-time-axis{margin-left:110px}}

#optimization-results td:nth-child(5){white-space:nowrap;font-size:11px}.pr-merged{color:var(--accent);font-weight:600}.pr-unmerged{color:var(--ink-3)}

/* CPU dependency: labels live on the work and waiting regions. */
.pattern-cpu-blocking .pattern-track{height:37px}
.pattern-cpu-blocking .pattern-bar,.pattern-cpu-blocking .pattern-gap{height:36px;display:flex;align-items:center;justify-content:center}
.pattern-cpu-blocking .pattern-row:first-of-type{margin-bottom:40px}
.pattern-cpu-blocking .pattern-row:has(.pattern-input-ready){margin-bottom:40px}
.pattern-inline-label{font:500 11px/1.2 var(--sans);text-align:center;padding:2px 4px;color:var(--timeline-bar-ink)}
.pattern-gap .pattern-inline-label{background:var(--surface);color:var(--ink);border-radius:3px}
.pattern-input-ready{position:absolute;left:55%;top:36px;height:40px;border-left:1px solid var(--accent);z-index:1}
.pattern-input-ready:after{content:"";position:absolute;bottom:0;left:-4px;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:6px solid var(--accent)}
.pattern-input-ready>span{position:absolute;left:9px;top:11px;white-space:nowrap;font:10px/1.4 var(--sans);color:var(--accent)}
.pattern-cpu-blocking .pattern-caption[hidden]{display:none}

/* Consistent captions across all five performance patterns. */
.step-operation-description>p+p{margin-top:12px}
.step-operation-description>p>strong{font:600 1em/1.6 var(--sans);color:var(--ink)}

/* Collective communication follows the imbalanced compute phase. */
.pattern-imbalance .pattern-track{height:39px}
.pattern-imbalance .pattern-bar,.pattern-imbalance .pattern-gap{height:38px;display:flex;align-items:center;justify-content:center}
.pattern-imbalance .pattern-row:has(.imbalance-bracket){margin-bottom:80px}
.imbalance-bracket{position:absolute;left:32%;width:44%;top:46px;height:9px;border:1px solid var(--ink-3);border-top:0}
.imbalance-bracket>span{display:block;position:absolute;top:14px;width:100%;text-align:center;font:12px/1.4 var(--sans);color:var(--ink)}
.pattern-imbalance .pattern-caption[hidden]{display:none}
@media(max-width:600px){.imbalance-bracket>span{font-size:13px}.pattern-imbalance .pattern-row:has(.imbalance-bracket){margin-bottom:100px}}

.pattern-imbalance .pattern-time{margin-bottom:12px}
.imbalance-collective{position:absolute;left:32%;width:68%;top:0;height:38px;display:flex;align-items:center;justify-content:center;pointer-events:none}
.imbalance-collective>span{text-align:center;font:500 11px/1.2 var(--sans);color:var(--timeline-bar-ink)}
@media(max-width:600px){.imbalance-collective>span{font-size:13px}}

.pattern-imbalance .pattern-gap{background:var(--timeline-transfer);border-radius:2px 0 0 2px}
.pattern-imbalance .pattern-transfer{border-radius:0 2px 2px 0}
