/* designer.css — Designer pane (v4 P08; Widget v5 W2-A, PLAN_v5 §3.9, §3.11, §4.2). Owns .dz-* only. Component recipes
   (.slider, .seg, .kv, .card, .plate-*, .scale, .qblock, .btn) come from components.css; chart chrome (.ch-*) from
   chart.css; the cutaway strip/render from components.css + cutaway.css.
   Rules (A13, §3.11): tokens only (no hex except #fff), no zoom, no text below var(--text-min) (9.5 px), no text in the
   deep graphics coral nor in the faint ink on a light surface. The P_fus series and its label are ink (DE-1: coral stays
   for the live point and one alert per pane). Plate budget §4.2 (692 px, no scroll at the default): head · Q · why · magnet 16 + 5×20 ·
   plasma 16 + 10×20 · face scales · one button. */

/* ---- rail ---- */
.dz-alpha-row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex:none}
.dz-custom[hidden]{display:none}
.dz-slider{flex:none}
/* with the custom-T₀ slider shown the rail holds 13 blocks: a tighter pitch keeps its min/max row inside the 691 px body */
.dz-rail:has(.dz-custom:not([hidden])){gap:13px}

/* ---- centre: cutaway card host (flex:1) + fixed 240 px scan row (B5; perf 472 | F(w) 236) ---- */
.dz-card-host{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column}
.dz-scan-row{height:240px;flex:none}
.dz-card-head{flex:none;min-height:22px}
.dz-eyebrow{white-space:nowrap}
.dz-toggles{flex:none}
/* the narrow F(w) card: the toggle drops to a second header line only when the eyebrow needs the width */
.dz-card-head--wrap{flex-wrap:wrap;row-gap:4px}
.dz-card-head--wrap>.dz-toggles{margin-left:auto}
.dz-toggle-label{font-family:var(--os-font-mono);font-weight:400;font-size:10px;letter-spacing:0.04em;color:var(--iv-ink);white-space:nowrap}
.dz-plot{flex:1;min-height:0;min-width:0;position:relative}

/* ---- perf chart (DE-1): P_fus in ink on the left axis, Q (while driven) on the right axis ---- */
.chart-svg .dz-series-pfus{stroke:var(--iv-ink);stroke-width:1.6}
/* Q is solid: dashes mean the ignition asymptote only, dots the this-machine guide (dashed asymptotes, not capped Q) */
.chart-svg .dz-series-q{stroke:var(--iv-ink-muted);stroke-width:1.25;stroke-dasharray:none}
.chart-svg .dz-lbl{font-size:var(--text-min);letter-spacing:0.5px;fill:var(--iv-ink);paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.chart-svg .dz-label-pfus{fill:var(--iv-ink)}
.chart-svg .dz-label-q{fill:var(--iv-ink-muted)}
.chart-svg .dz-label-machine{fill:var(--iv-ink)}
.chart-svg .dz-lbl--asym{letter-spacing:1.2px}
.chart-svg .dz-lbl--asym2{fill:var(--iv-ink-muted)}
/* chart labels that are tooltip anchors (data-tip + hint): hit-testable (chart.css makes chart text pointer-events:none)
   and the dotted hint underline, drawn for SVG text */
.chart-svg text.dz-tip{pointer-events:auto;cursor:help;text-decoration:underline dotted;text-decoration-thickness:1px;text-underline-offset:2px}
.chart-svg text.dz-tip:hover,.chart-svg text.dz-tip.is-open{text-decoration-style:solid}

/* ---- F(w) rule chart (DE-4): the chain's blend, the seven solved members, F required, the chosen w ◆, clamp wells ---- */
.chart-svg .dz-frule-blend{fill:none;stroke:var(--iv-ink);stroke-width:1.5;stroke-linejoin:round}
.chart-svg .dz-frule-dot{fill:var(--iv-ink);stroke:#fff;stroke-width:1}
.chart-svg .dz-freq{fill:none;stroke:var(--iv-ink-muted);stroke-width:1;stroke-dasharray:4 3;shape-rendering:crispEdges}
.chart-svg .dz-label-freq{fill:var(--iv-ink-muted)}
.chart-svg .dz-label-dots{fill:var(--iv-ink-subtle)}
.chart-svg .dz-label-chosen{fill:var(--iv-ink)}
/* the 212-px card: the x title's tracking is narrowed so 'CHAMBER · w = R_wall / R_M' fits the plot width */
.dz-plot-frule .ch-title{letter-spacing:1.2px}

/* ---- plate: compact sections inside the 692 px column (§4.2); the region scrolls only as a safety valve ---- */
.dz-head{padding:8px var(--pad-plate-x) 7px;gap:3px}
.dz-head .plate-title{line-height:24px}
/* two unbreakable groups (designer.js subFacts): a two-line sub-line breaks after the second fact only */
.dz-head .plate-sub{white-space:normal;line-height:13px}
.dz-fact{white-space:nowrap}
.dz-sec{flex:none;padding:4px var(--pad-plate-x) 4px;gap:2px}
.dz-sec>.iv-eyebrow{line-height:13px;align-self:flex-start}
.dz-warn[hidden]{display:none}
.dz-warn{flex:none;padding:5px var(--pad-plate-x);line-height:13px}

/* Q block */
.dz-qsec{padding:5px var(--pad-plate-x) 5px}
.dz-qblock{padding:5px 10px 6px;gap:1px}
.dz-qname{font-weight:400}
.dz-qnum{font-weight:300}

/* why strip (DE-2): three bar rows — α-heating to the BCR, then conduction and P_brem stacked end to end against it */
.dz-why-grid{display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:6px;row-gap:1px;align-items:center;
  font-family:var(--os-font-mono);font-weight:400;font-size:var(--text-min);line-height:12px;font-variant-numeric:tabular-nums}
.dz-why-l{color:var(--iv-ink-muted);white-space:nowrap}
.dz-why-t{display:flex;height:7px;background:var(--iv-surface-2);box-shadow:inset 0 0 0 1px var(--iv-hairline-2);overflow:hidden;min-width:24px}
.dz-why-f{display:block;height:100%;flex:none}
.dz-why-f--alpha{background:var(--iv-ink)}
.dz-why-f--cond{background:var(--iv-ink-muted)}
.dz-why-f--brem{background:repeating-linear-gradient(135deg,var(--iv-ink) 0 1.5px,transparent 1.5px 3.5px),var(--iv-surface-3)}
.dz-why-v{color:var(--iv-ink);text-align:right;white-space:nowrap}
.dz-why-note{font-family:var(--os-font-mono);font-weight:400;font-size:10px;line-height:12px;letter-spacing:0.02em;color:var(--iv-ink-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* kv rows: one space-between flex row per dt/dd pair, 20 px each, nothing wraps (§4.2, as the Fly plate's A25 rows) */
.dz-kv{display:flex;flex-direction:column;gap:0;font-size:11px}
.dz-kv-row{display:flex;justify-content:space-between;align-items:center;gap:12px;min-width:0;height:20px}
.dz-kv-row>dt,.dz-kv-row>dd{margin:0;white-space:nowrap;line-height:14px}
.dz-kv-row>dt{font-size:10.5px;letter-spacing:0.02em}
.dz-kv-row>dd{text-align:right;overflow:hidden;text-overflow:ellipsis;min-width:0}
/* a chamber-clamp warning (two lines) takes its height from the fifteen kv rows: 20 → 18 px, so the plate still never scrolls */
.dz-sections.has-warn .dz-kv-row{height:18px}
/* the hint affordance as a text underline (a border-bottom would add 1 px to every row) */
.dz-kv-row>dt.hint{border-bottom:0;text-decoration:underline dotted var(--iv-rule);text-decoration-thickness:1px;text-underline-offset:2px}
.dz-kv-row>dt.hint:hover,.dz-kv-row>dt.hint.is-open{border-bottom:0;text-decoration:underline solid var(--iv-ink);text-decoration-thickness:1px}

/* face scales: two compact bars (the pressure and temperature faces of the card by default) */
.dz-scales{gap:4px;padding-bottom:4px}
.dz-scale{gap:2px}
.dz-scale .scale-row{font-size:10px;line-height:13px}
.dz-scale .scale-row .hint{border-bottom:0;text-decoration:underline dotted var(--iv-rule);text-decoration-thickness:1px;text-underline-offset:2px}
.dz-scale-bar{height:7px}
.dz-scale .scale-minmax{line-height:13px}

/* footer: one button (DE-8) */
.dz-foot{padding:8px var(--pad-plate-x) 10px}
