/* Chart layer for the OKSIR (svg.ok) and generation-flights (svg.fl) charts.
   Geometry and captions come from the Colville deck and are binding; colour
   comes from the --ch-* variables a page sets on .chart. Motion is in charts.js. */
.chart{padding:28px 28px 20px;border-radius:6px;background:var(--ch-bg);border:1px solid var(--ch-border);color:var(--ch-ink)}
.ok,.fl{display:block;width:100%;height:auto}
.ok text,.fl text{font-family:inherit}
.ok__grid line,.fl__grid line{stroke:var(--ch-grid);stroke-width:1.2}
.ok__a{fill:var(--ch-fill-1);stroke:var(--ch-stroke);stroke-width:2}
.ok__a--hi{fill:var(--ch-fill-2)}
.ok__sw{fill:var(--ch-fill-1);stroke:var(--ch-stroke);stroke-width:1.6}
.ok__sw--hi{fill:var(--ch-fill-2);stroke:none}
.ok__n{fill:var(--ch-ink);font-size:15px;font-weight:700}
.ok__m{fill:var(--ch-muted);font-size:13px;letter-spacing:1.1px;font-variant-numeric:tabular-nums}
.ok__k{fill:var(--ch-muted);font-size:11.5px}
.ok__k--hi{fill:var(--ch-ink);font-size:14.5px;font-weight:700}
.ok__ax{fill:var(--ch-muted);font-size:12px;font-variant-numeric:tabular-nums}
.ok__ref{stroke:var(--ch-ref);stroke-width:1.2;stroke-dasharray:5 5}
.ok__ref-t{font-size:10px}
.fl__t{display:block;font-weight:700;font-size:.9375rem;margin-bottom:6px;color:var(--ch-ink)}
.fl__c{fill:var(--ch-fill-1);stroke:var(--ch-stroke);stroke-width:2}
.fl__c--peak{fill:var(--ch-fill-2)}
.fl__c--part{fill:var(--ch-fill-1)}
.fl__n,.fl__n--part{fill:var(--ch-ink);font-size:17px;font-weight:700}
.fl__g{opacity:1}
.fl__g .fl__c{fill:var(--ch-fill-ghost);stroke-dasharray:7 5;stroke-width:1.5;stroke-opacity:.55}
.fl__nb{opacity:.78}
.fl__sirl{stroke:var(--ch-stroke);stroke-width:1.4}
.fl__sirt{stroke:var(--ch-stroke);stroke-width:1.4;stroke-opacity:.5}
.fl__sirk{fill:var(--ch-stroke);font-size:15px;font-weight:700;letter-spacing:1.4px}
.fl__m{fill:var(--ch-muted);font-size:15px;letter-spacing:1.2px}
.fl__k{fill:var(--ch-muted);font-size:13px}
.fl__live{transform-box:view-box}
@media (max-width:720px){
  .chart{padding:18px 14px 14px}
  .fl__n,.fl__n--part{font-size:30px}.fl__m{font-size:24px}.fl__k{font-size:22px}.fl__sirk{font-size:26px;transform:translateY(7px)}.fl__t{font-size:.875rem}
  .ok__n{font-size:18px}.ok__m{font-size:16px}.ok__ax{font-size:15px}.ok__k{font-size:15px}.ok__k--hi{font-size:17px}.ok__ref-t{font-size:14px}
}

/* Stakes (svg.st): the Texas exposure bar and, to the same scale, the yearly savings from
   eradication. Screwworm page, 2026-10-07, from screwworm.m3agtech.com/threat. */
.st{display:block;width:100%;height:auto}
.st text{font-family:inherit}
.st__n{fill:var(--ch-ink);font-size:30px;font-weight:700;letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.st__v{fill:var(--ch-ink);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.st__k{fill:var(--ch-muted);font-size:11.5px}
.st__src{fill:var(--ch-muted);font-size:10px}
.st__seg{fill:var(--ch-fill-1);stroke:var(--ch-stroke);stroke-width:1.6}
.st__seg--hi{fill:var(--ch-fill-2)}
.st__seg--lo{fill:var(--ch-fill-ghost)}
.st__seg--save{fill:var(--ch-stroke);stroke:none}
.st__tick{stroke:var(--ch-ref);stroke-width:1.2}

/* One Health (svg.oh): three lobes in one teal, the overlap stacking the tint, a solid core. */
.oh{display:block;width:100%;height:auto;overflow:visible}
.oh text{font-family:inherit}
.oh__lobe{fill:var(--ch-fill-1)}
.oh__ring{fill:none;stroke:var(--ch-stroke);stroke-width:2.2}
.oh__disc{fill:var(--ch-stroke)}
.oh__t1{fill:#fff;font-size:15px;font-weight:700;letter-spacing:1.4px}
.oh__t2{fill:#fff;font-size:11.5px;letter-spacing:.3px}
.oh__l{fill:var(--ch-ink);font-size:12px;font-weight:700;letter-spacing:1.2px}
.oh__h{fill:var(--ch-muted);font-size:10.5px}
@media (max-width:720px){
  .st__n{font-size:34px}.st__v{font-size:17px}.st__k{font-size:13px}.st__src{font-size:12px}
  .oh__t1{font-size:17px}.oh__t2{font-size:13px}.oh__l{font-size:11.5px;letter-spacing:.5px}.oh__h{font-size:11px}
}

/* Infection cycle (svg.cy): eight segments in graded tints of the one teal, a solid hub, and an
   explorer that links each segment to its numbered paragraph (charts.js). Screwworm page, 2026-10-07. */
.cy{display:block;width:100%;height:auto;overflow:visible}
.cy text{font-family:inherit;pointer-events:none}
.cy__ring{fill:var(--ch-bg);stroke:var(--ch-ref);stroke-width:1.5}
.cy__seg{fill:var(--ch-fill-1);cursor:pointer;outline:none;transition:fill .18s ease;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}
.cy{-webkit-tap-highlight-color:transparent}
.cy__seg--lo{fill:var(--ch-fill-ghost)}
.cy__seg--mid{fill:var(--ch-fill-2);fill-opacity:.6}
.cy__seg--hi{fill:var(--ch-fill-2)}
.cy__seg.is-on,.cy__seg:focus-visible{fill:var(--ch-fill-2);fill-opacity:1;stroke:var(--ch-stroke);stroke-width:2.5}
.cy__spokes line{stroke:var(--ch-bg);stroke-width:2;pointer-events:none}
.cy__arrow{fill:none;stroke:var(--ch-stroke);stroke-width:2;stroke-dasharray:5 3}
.cy__arrhead{fill:var(--ch-stroke)}
.cy__disc{fill:var(--ch-stroke)}
.cy__t1{fill:#fff;font-size:26px;font-weight:700;letter-spacing:1px}
.cy__t2{fill:#fff;fill-opacity:.72;font-size:14px;letter-spacing:3.5px}
.cy__l{fill:var(--ch-ink);font-size:14px;font-weight:700;letter-spacing:.6px}
.cy__d{fill:var(--ch-muted);font-size:12.5px}
.cy__d--hi{fill:var(--ch-ink);font-weight:700}
.cy__num{fill:var(--ch-stroke);font-size:15px;letter-spacing:0}
@media (prefers-reduced-motion:reduce){.cy__seg{transition:none}}
@media (max-width:720px){.cy__t1{font-size:28px}.cy__t2{font-size:16px}.cy__l{font-size:16px}.cy__d{font-size:14px}.cy__num{font-size:17px}}

/* 2027 program page (svg.sb, svg.pb): the stacked cost bars and the payback race, drawn by tools/templates/cm27.mjs
   and moved between scenarios by program.js. Series colours validated 2026-10-15 with the dataviz validator in both
   stacking orders (organic md, sm, gv, sp and conventional md, sm, cs, gv); aqua is under 3:1 on white, so every bar
   carries its total and the legend names each input. */
.sb,.pb{display:block;width:100%;height:auto;overflow:visible}
.sb text,.pb text{font-family:inherit}
.sb__grid line,.pb__grid line{stroke:var(--ch-grid);stroke-width:1}
.sb__y,.pb__y{fill:var(--ch-muted);font-size:13.5px;font-variant-numeric:tabular-nums}
.sb__x,.pb__x{fill:var(--ch-muted);font-size:14px}
.pb__k{fill:var(--ch-muted);font-size:12px}
.sb__v{fill:var(--ch-ink);font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.sb__base{stroke:var(--ch-ref);stroke-width:1.2}
.sb__ref{stroke:var(--ch-ink);stroke-width:1.4;stroke-dasharray:5 4;opacity:.7}
.sb__hit{fill:transparent}.sb__bar{outline:none}.sb__bar:hover .sb__hit,.sb__bar:focus-visible .sb__hit{fill:var(--ch-fill-ghost)}
.sb__seg{transition:opacity .18s ease}
.sb__seg[data-k=md],.sb__lgi[data-k=md] i,.sb__dots i[data-k=md],.sb__tip i[data-k=md]{--c:#6a4aad}
.sb__seg[data-k=sm],.sb__lgi[data-k=sm] i,.sb__dots i[data-k=sm],.sb__tip i[data-k=sm]{--c:#008b9e}
.sb__seg[data-k=cs],.sb__lgi[data-k=cs] i,.sb__dots i[data-k=cs],.sb__tip i[data-k=cs]{--c:#2458b3}
.sb__seg[data-k=gv],.sb__lgi[data-k=gv] i,.sb__dots i[data-k=gv],.sb__tip i[data-k=gv]{--c:#e07a2c}
.sb__seg[data-k=sp],.sb__lgi[data-k=sp] i,.sb__dots i[data-k=sp],.sb__tip i[data-k=sp]{--c:#a62a63}
.sb__seg{fill:var(--c)}
.sb__save{fill:var(--ch-fill-1);transition:opacity .18s ease}.sb[data-focus] .sb__save{opacity:.18}
.sb[data-focus] .sb__seg{opacity:.18}
.sb[data-focus=md] .sb__seg[data-k=md],.sb[data-focus=sm] .sb__seg[data-k=sm],.sb[data-focus=cs] .sb__seg[data-k=cs],.sb[data-focus=gv] .sb__seg[data-k=gv],.sb[data-focus=sp] .sb__seg[data-k=sp]{opacity:1}
.pb__gap{fill:#e07a2c;fill-opacity:.13}.pb__gap--save{fill:#008b9e;fill-opacity:.15}
.pb__without{fill:none;stroke:var(--ch-ink);stroke-width:2;stroke-dasharray:6 4;opacity:.75;stroke-linejoin:round}
.pb__with{fill:none;stroke:#008b9e;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.pb__cur line{stroke:var(--ch-ref);stroke-width:1.2;stroke-dasharray:3 3}
.pb__cw{fill:var(--ch-bg);stroke:var(--ch-ink);stroke-width:2}.pb__cs{fill:#008b9e;stroke:var(--ch-bg);stroke-width:2}
.pb__mark circle{fill:var(--ch-bg);stroke:#14535e;stroke-width:2.5}.pb__mt{fill:var(--ch-ink);font-size:13.5px;font-weight:700}
@media (max-width:720px){.sb__y,.pb__y{font-size:22px}.sb__x,.pb__x{font-size:22px}.sb__v{font-size:22px}.pb__mt{font-size:22px}.pb__k{font-size:22px}}
