/* Reference: existing Hangcha technical guide; motion gives selection continuity. */
.hc-capacity-chart { --capacity-accent:var(--c-accent,#c8102e); --capacity-line:var(--c-line,#d8dfe2); margin:28px 0; padding-top:24px; border-top:1px solid var(--capacity-line); color:var(--c-ink,#10161a); min-width:0; }
.hc-capacity-chart,.hc-capacity-chart * { box-sizing:border-box; }
.hc-capacity-chart [hidden] { display:none !important; }
.hc-capacity-chart .hc-capacity-chart__head h4 { margin:0 0 10px; font-size:22px; line-height:1.35; letter-spacing:-.025em; text-wrap:balance; }
.hc-capacity-chart .hc-capacity-chart__head p { margin:0 0 14px; font-size:16px; line-height:1.65; }
.hc-capacity-chart .hc-capacity-chart__scope,.hc-capacity-chart .hc-capacity-chart__fallback { margin:0 0 22px; font-size:14px; line-height:1.65; color:var(--c-ink-2,#48555e); }
.hc-capacity-chart__models { padding:0; margin:24px 0; border:0; min-width:0; }
.hc-capacity-chart__models legend { padding:0; margin-bottom:10px; font-size:14px; line-height:1.5; font-weight:600; }
.hc-capacity-chart__model-options { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; }
.hc-capacity-chart__model-options label { position:relative; min-width:0; cursor:pointer; }
.hc-capacity-chart__model-options input { position:absolute; width:1px; height:1px; margin:0; opacity:0; }
.hc-capacity-chart__model-options span { display:flex; min-height:44px; align-items:center; justify-content:center; border:1px solid var(--capacity-line); border-radius:4px; color:var(--c-ink-2,#48555e); font-size:16px; line-height:1.4; font-weight:600; white-space:nowrap; transition:background-color 120ms,color 120ms,border-color 120ms; }
.hc-capacity-chart__model-options input:checked+span { color:#fff; background:#29383f; border-color:#29383f; }
.hc-capacity-chart__model-options label:hover span { border-color:#68747c; }
.hc-capacity-chart__model-options input:focus-visible+span { outline:3px solid var(--c-focus,#1f6feb); outline-offset:3px; }
.hc-capacity-chart__layout { display:grid; grid-template-columns:minmax(0,2fr) minmax(220px,1fr); gap:28px; align-items:center; }
.hc-capacity-chart__plot { min-width:0; }
.hc-capacity-chart__axis-title { font-size:12px; line-height:1.5; color:var(--c-ink-2,#48555e); }
.hc-capacity-chart__axis-title--x { text-align:center; margin-top:0; }
.hc-capacity-chart__svg { display:block; width:100%; height:350px; overflow:visible; }
.hc-capacity-chart__svg text { font-family:inherit; font-size:12px; fill:var(--c-ink-2,#48555e); font-variant-numeric:tabular-nums; }
.hc-capacity-chart__grid-line { stroke:var(--capacity-line); stroke-width:1; }
.hc-capacity-chart__axis { stroke:#aebbc1; stroke-width:1; }
.hc-capacity-chart__curve { stroke:var(--capacity-accent); stroke-width:3; stroke-linejoin:round; stroke-linecap:round; }
.hc-capacity-chart__nominal { stroke:#68747c; stroke-width:1.5; stroke-dasharray:5 5; }
.hc-capacity-chart__guide { stroke:#68747c; stroke-width:1; stroke-dasharray:3 4; }
.hc-capacity-chart__marker { fill:var(--capacity-accent); stroke:#fff; stroke-width:2; }
.hc-capacity-chart__marker-halo { fill:var(--capacity-accent); fill-opacity:.1; stroke:none; }
.hc-capacity-chart__legend { display:flex; flex-wrap:wrap; gap:10px 20px; align-items:center; margin-top:12px; color:var(--c-ink-2,#48555e); font-size:12px; line-height:1.5; }
.hc-capacity-chart__legend>span { display:inline-flex; align-items:center; gap:8px; }
.hc-capacity-chart__legend-line { display:inline-block; width:22px; border-top:3px solid var(--capacity-accent); }
.hc-capacity-chart__legend-line--nominal { border-top:2px dashed #68747c; }
.hc-capacity-chart__readout { padding-left:24px; border-left:1px solid var(--capacity-line); min-width:0; }
.hc-capacity-chart__metrics { margin:0; }
.hc-capacity-chart__metrics>div { margin:0; padding:14px 0; border-top:1px solid var(--capacity-line); }
.hc-capacity-chart__metrics>div:first-child { padding-top:0; border-top:0; }
.hc-capacity-chart__metrics dt { color:var(--c-ink-2,#48555e); font-size:13px; line-height:1.55; }
.hc-capacity-chart__metrics dd { margin:6px 0 0; font-size:20px; line-height:1.35; font-weight:600; font-variant-numeric:tabular-nums; }
.hc-capacity-chart__primary dd { font-size:clamp(28px,3vw,36px); letter-spacing:-.04em; color:var(--capacity-accent); }
.hc-capacity-chart__percentage { margin-left:10px; color:var(--c-ink-2,#48555e); font-size:14px; font-weight:400; white-space:nowrap; }
.hc-capacity-chart .hc-capacity-chart__readout-note { margin:8px 0 0; color:var(--c-ink-2,#48555e); font-size:12px; line-height:1.65; }
.hc-capacity-chart__slider { margin-top:24px; padding-top:22px; border-top:1px solid var(--capacity-line); }
.hc-capacity-chart__slider-label { display:flex; justify-content:space-between; align-items:baseline; gap:16px; margin-bottom:8px; }
.hc-capacity-chart__slider-label label { font-size:15px; font-weight:600; line-height:1.5; }
.hc-capacity-chart__slider-label output { font-size:18px; font-weight:600; line-height:1.4; white-space:nowrap; font-variant-numeric:tabular-nums; }
.hc-capacity-chart__slider input { display:block; width:100%; min-height:44px; margin:0; cursor:pointer; accent-color:var(--capacity-accent); }
.hc-capacity-chart__slider input:focus-visible { outline:3px solid var(--c-focus,#1f6feb); outline-offset:4px; border-radius:4px; }
.hc-capacity-chart__slider-ends { display:flex; justify-content:space-between; gap:16px; color:var(--c-ink-2,#48555e); font-size:12px; line-height:1.5; font-variant-numeric:tabular-nums; }
.hc-capacity-chart .hc-capacity-chart__slider p { margin:10px 0 0; color:var(--c-ink-2,#48555e); font-size:13px; line-height:1.65; }
.hc-capacity-chart .hc-capacity-chart__precision { margin:18px 0 0; color:var(--c-ink-2,#48555e); font-size:13px; line-height:1.65; }
.hc-capacity-chart__announcement { position:absolute; width:1px; height:1px; padding:0; margin:-1px !important; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; }
@media(max-width:899px) {
 .hc-capacity-chart__layout { grid-template-columns:minmax(0,1fr); gap:22px; }
 .hc-capacity-chart__readout { padding:18px 0 0; border-left:0; border-top:1px solid var(--capacity-line); }
 .hc-capacity-chart__metrics { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr); gap:20px; }
 .hc-capacity-chart__metrics>div { padding:0; border-top:0; }
 .hc-capacity-chart__primary dd { font-size:30px; }
 .hc-capacity-chart__metrics dd { font-size:18px; }
 .hc-capacity-chart__metrics .hc-capacity-chart__primary dd { font-size:30px; }
 .hc-capacity-chart__percentage { display:block; margin:4px 0 0; }
}
@media(max-width:699px) { .hc-capacity-chart__model-options { grid-template-columns:repeat(4,minmax(0,1fr)); } }
@media(max-width:479px) {
 .hc-capacity-chart .hc-capacity-chart__head h4 { font-size:20px; }
 .hc-capacity-chart__svg { height:280px; }
 .hc-capacity-chart__metrics { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
 .hc-capacity-chart__metrics .hc-capacity-chart__primary { grid-column:1/-1; }
 .hc-capacity-chart__slider-label { gap:10px; }
 .hc-capacity-chart__slider-label label { font-size:14px; }
}
@media(prefers-reduced-motion:reduce) {
 .hc-capacity-chart__model-options span { transition:none; }
}
/* Native source disclosure remains usable without JavaScript. */
.hc-capacity-chart-source { margin:20px 0 24px; border-top:1px solid var(--c-line,#d8dfe2); }
.hc-capacity-chart-source>summary { display:list-item; min-height:44px; padding:12px 0; color:var(--c-ink-2,#48555e); font-size:14px; line-height:1.5; font-weight:600; cursor:pointer; }
.hc-capacity-chart-source>summary:focus-visible { outline:3px solid var(--c-focus,#1f6feb); outline-offset:4px; }
.hc-capacity-chart-source[open]>.hc-selection-figures { margin-top:18px; }

/* Keep site-wide transition-duration rules from creating SVG path morphs.
   Interaction movement is controlled only by the reduced-motion-aware JS. */
.hc-capacity-chart__svg,.hc-capacity-chart__svg * { transition:none !important; }
@media(prefers-reduced-motion:reduce) {
 .hc-capacity-chart,.hc-capacity-chart * { transition:none !important; animation:none !important; }
}
