/* Opt-in design system. Legacy pages are unaffected without .nuclear-v2.
   Load after site.css; page-specific adaptations follow this stylesheet. */
.nuclear-v2 {
  --v2-paper: var(--bg);
  --v2-ink: var(--txt);
  --v2-muted: var(--mut);
  --v2-line: var(--brd);
  --v2-accent: var(--acc);
  --v2-radius: 24px;
  --v2-gutter: clamp(20px, 4vw, 72px);
  --v2-display: "Arial Black", "Arial", sans-serif;
  color: var(--v2-ink);
  font-family: Arial, Helvetica, sans-serif;
  -webkit-font-smoothing: antialiased;
}
body.nuclear-v2 { background: var(--v2-paper); }
.nuclear-v2 ::selection { background: var(--v2-accent); color: var(--story-stripe-text); }
.nuclear-v2 :is(a, button, select, summary):focus-visible { outline: 3px solid var(--acc-strong); outline-offset: 5px; }
.nuclear-v2 [id] { scroll-margin-top: 100px; }
.nuclear-v2 .v2-shell { width: min(100%, 1600px); margin-inline: auto; padding-inline: var(--v2-gutter); }
.nuclear-v2 .v2-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.nuclear-v2 .v2-button {
  display: inline-flex; align-items: center; justify-content: space-between; gap: 28px;
  min-height: 48px; padding: 13px 22px; border: 1px solid var(--v2-ink); border-radius: 999px;
  background: var(--v2-ink); color: var(--v2-paper); font: inherit; font-size: 13px;
  font-weight: 700; text-decoration: none; cursor: pointer; transition: background .2s, color .2s;
}
.nuclear-v2 .v2-button:hover { background: var(--v2-accent); color: var(--story-stripe-text); }
.nuclear-v2 .v2-button--outline { color: var(--v2-ink); background: transparent; }
.nuclear-v2 .v2-skip { position: fixed; left: 20px; top: -100px; z-index: 2000; }
.nuclear-v2 .v2-skip:focus { top: 12px; }
.nuclear-v2 .v2-progress { position: fixed; inset: 0 0 auto; height: 3px; background: var(--acc); transform: scaleX(var(--v2-progress, 0)); transform-origin: left; z-index: 2001; pointer-events: none; }
.nuclear-v2 .v2-marquee { overflow: hidden; background: var(--story-stripe-bg); color: var(--story-stripe-text); border-bottom: 1px solid var(--story-stripe-line); }
.nuclear-v2 .v2-marquee-track { display: flex; width: max-content; animation: v2-marquee 36s linear infinite; }
.nuclear-v2 .v2-marquee-group { display: flex; align-items: center; gap: 44px; padding: 11px 22px; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; white-space: nowrap; }
.nuclear-v2 .v2-marquee-group b { font-size: 17px; line-height: 1; }
.nuclear-v2 .v2-aurora { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: -1; }
.nuclear-v2 .v2-aurora::before {
  content: ""; position: absolute; inset: -20%;
  background: radial-gradient(ellipse at 75% 50%, color-mix(in srgb, var(--acc) 24%, transparent), transparent 43%), radial-gradient(ellipse at 60% 85%, color-mix(in srgb, var(--story-peach) 12%, transparent), transparent 45%), radial-gradient(ellipse at 20% 30%, color-mix(in srgb, var(--story-lilac) 14%, transparent), transparent 40%);
  animation: v2-aurora 16s ease-in-out infinite alternate;
}
.nuclear-v2 [data-v2-reveal].v2-reveal-pending { opacity: 0; transform: translateY(36px); }
.nuclear-v2 [data-v2-reveal] { transition: opacity .75s ease, transform .75s cubic-bezier(.2,.7,.2,1); }
.nuclear-v2 [data-v2-reveal]:focus-within { opacity: 1; transform: none; }
.nuclear-v2.v2-motion-paused *, .nuclear-v2.v2-motion-paused *::before, .nuclear-v2.v2-motion-paused *::after { animation-play-state: paused !important; }
.nuclear-v2.v2-motion-paused [data-v2-reveal] { opacity: 1; transform: none; transition: none; }
/* Data visuals rendered by NuclearCommonV2.charts (bars, ring, timeline). */
.nuclear-v2 .v2-chart { margin: 0; }
.nuclear-v2 :is(.v2-chart[data-tone], .v2-chart [data-tone]) { --v2-tone: var(--v2-accent); }
.nuclear-v2 :is(.v2-chart[data-tone="lime"], .v2-chart [data-tone="lime"]) { --v2-tone: var(--story-lime); }
.nuclear-v2 :is(.v2-chart[data-tone="peach"], .v2-chart [data-tone="peach"]) { --v2-tone: var(--story-peach); }
.nuclear-v2 :is(.v2-chart[data-tone="lilac"], .v2-chart [data-tone="lilac"]) { --v2-tone: var(--story-lilac); }
.nuclear-v2 :is(.v2-chart[data-tone="sage"], .v2-chart [data-tone="sage"]) { --v2-tone: var(--story-sage); }
.nuclear-v2 .v2-bars { display: grid; gap: 9px; }
.nuclear-v2 .v2-bars-row { display: grid; grid-template-columns: 5.6em minmax(0, 1fr) 6.4em; align-items: center; gap: 12px; font-size: 12px; }
.nuclear-v2 .v2-bars-label { color: var(--v2-muted); font-weight: 700; }
.nuclear-v2 .v2-bars-track { display: block; width: 100%; height: 8px; border-radius: 999px; overflow: hidden; }
.nuclear-v2 .v2-bars-bg { fill: color-mix(in srgb, var(--v2-ink) 9%, transparent); }
.nuclear-v2 .v2-bars-fill { fill: var(--v2-tone); transform-box: fill-box; transform-origin: left; }
.nuclear-v2 .v2-bars-value { font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.nuclear-v2 .v2-ring { display: grid; justify-items: center; gap: 6px; text-align: center; }
.nuclear-v2 .v2-ring-dial { display: grid; place-items: center; }
.nuclear-v2 .v2-ring-dial > * { grid-area: 1 / 1; }
.nuclear-v2 .v2-ring svg { display: block; width: var(--v2-ring-size, 78px); height: var(--v2-ring-size, 78px); overflow: visible; transform: rotate(-90deg); }
.nuclear-v2 .v2-spark { stroke: var(--v2-tone); stroke-width: 1.3; stroke-linecap: round; opacity: 0; }
.nuclear-v2 .v2-sparks > g:nth-child(3n+1) .v2-spark { stroke: var(--story-peach); }
.nuclear-v2 .v2-sparks > g:nth-child(3n+2) .v2-spark { stroke: var(--story-lilac); }
.nuclear-v2 .v2-ring-bg { fill: none; stroke: color-mix(in srgb, var(--v2-ink) 10%, transparent); stroke-width: 3; }
.nuclear-v2 .v2-ring-fill { fill: none; stroke: var(--v2-tone); stroke-width: 3; stroke-linecap: round; }
.nuclear-v2 .v2-ring-value { font-family: var(--v2-display); font-size: 12.5px; letter-spacing: -.03em; white-space: nowrap; }
.nuclear-v2 .v2-ring figcaption { color: var(--v2-muted); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.nuclear-v2 .v2-timeline { display: grid; gap: 8px; }
.nuclear-v2 .v2-timeline-plot { position: relative; height: 18px; margin-inline: 5px; }
.nuclear-v2 .v2-timeline-track { position: absolute; inset: 4px 0 auto; display: block; width: 100%; height: 10px; border-radius: 999px; overflow: hidden; }
.nuclear-v2 .v2-timeline-bg { fill: color-mix(in srgb, var(--v2-ink) 8%, transparent); }
.nuclear-v2 .v2-timeline-seg { fill: var(--v2-tone); }
.nuclear-v2 .v2-timeline-seg.is-planned { fill: color-mix(in srgb, var(--v2-tone) 30%, transparent); }
.nuclear-v2 .v2-timeline-dot { position: absolute; top: 9px; width: 11px; height: 11px; margin: -5.5px 0 0 -5.5px; border: 2px solid var(--v2-paper); border-radius: 50%; background: var(--v2-ink); }
.nuclear-v2 .v2-timeline-now { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; border-radius: 2px; background: var(--v2-ink); }
.nuclear-v2 .v2-timeline-axis { position: relative; height: 32px; margin-inline: 5px; }
.nuclear-v2 .v2-timeline-tick { position: absolute; top: 0; display: grid; line-height: 1.15; text-align: center; white-space: nowrap; transform: translateX(-50%); }
.nuclear-v2 .v2-timeline-tick[data-align="start"] { text-align: left; transform: translateX(-5px); }
.nuclear-v2 .v2-timeline-tick[data-align="end"] { text-align: right; transform: translateX(calc(-100% + 5px)); }
.nuclear-v2 .v2-timeline-tick b { font-family: var(--v2-display); font-size: 13px; letter-spacing: -.02em; }
.nuclear-v2 .v2-timeline-tick small { color: var(--v2-muted); font-size: 10px; }
.nuclear-v2 .v2-timeline-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0; padding: 0; list-style: none; color: var(--v2-muted); font-size: 12px; }
.nuclear-v2 .v2-timeline-legend li { display: inline-flex; align-items: center; gap: 6px; }
.nuclear-v2 .v2-timeline-legend li::before { content: ""; width: 10px; height: 10px; border-radius: 3px; background: var(--v2-tone); }
.nuclear-v2 .v2-timeline-legend li.is-planned::before { background: color-mix(in srgb, var(--v2-tone) 30%, transparent); }
.nuclear-v2 .v2-timeline-legend strong { color: var(--v2-ink); }
.nuclear-v2 .v2-timeline-spark { position: absolute; top: 9px; left: 0; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: radial-gradient(circle, var(--v2-paper) 0 18%, var(--story-lime) 40%, transparent 72%); opacity: 0; pointer-events: none; }
.nuclear-v2 .v2-atom { display: block; width: var(--v2-atom-size, 84px); height: var(--v2-atom-size, 84px); }
.nuclear-v2 .v2-atom svg { display: block; width: 100%; height: 100%; overflow: visible; }
.nuclear-v2 .v2-atom-orbit { fill: none; stroke: color-mix(in srgb, var(--v2-tone) 42%, transparent); stroke-width: .7; }
.nuclear-v2 .v2-atom-core { fill: var(--v2-tone); transform-box: fill-box; transform-origin: center; }
.nuclear-v2 .v2-atom-core.is-alt { fill: var(--story-peach); }
.nuclear-v2 .v2-atom-electron { fill: var(--v2-tone); offset-path: path("M34 0 A34 12 0 1 1 -34 0 A34 12 0 1 1 34 0"); offset-rotate: 0deg; offset-distance: calc(var(--i, 0) * 33%); }

/* Chart motion: plays once after the element scrolls into view (.v2-animate, set by
   NuclearCommonV2.refresh) and never while motion is paused; reduced motion disables it above. */
.nuclear-v2:not(.v2-motion-paused) .v2-animate .v2-bars-fill { animation: v2-grow .9s cubic-bezier(.2,.7,.2,1) calc(var(--i, 0) * .14s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-animate .v2-ring-fill { animation: v2-ring-draw 1s cubic-bezier(.2,.7,.2,1) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-animate .v2-ring-value { animation: v2-pop .5s cubic-bezier(.2,.9,.3,1.3) .7s both; }
.nuclear-v2:not(.v2-motion-paused) .v2-animate .v2-spark { animation: v2-spark 1s ease-out calc(.9s + var(--i, 0) * .035s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-seg { transform-box: fill-box; transform-origin: left; animation: v2-grow var(--t, .5s) linear var(--d, 0s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-dot { animation: v2-pop .45s cubic-bezier(.2,.9,.3,1.5) var(--d, 0s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-tick { animation: v2-rise .5s ease-out var(--d, 0s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-now { animation: v2-pop .4s ease-out var(--d, 0s) both, v2-pulse 2.2s ease-in-out calc(var(--d, 0s) + .4s) infinite; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-spark { animation: v2-sweep var(--v2-sweep, 1.6s) linear both; }
.nuclear-v2:not(.v2-motion-paused) .v2-timeline.v2-animate .v2-timeline-legend li { animation: v2-rise .5s ease-out calc(var(--v2-sweep, 1.6s) + var(--i, 0) * .12s) both; }
.nuclear-v2:not(.v2-motion-paused) .v2-atom.v2-animate .v2-atom-electron { animation: v2-orbit calc(2.8s + var(--i, 0) * .6s) linear infinite; }
.nuclear-v2:not(.v2-motion-paused) .v2-atom.v2-animate .v2-atom-core { animation: v2-nucleus 2.4s ease-in-out infinite alternate; }
.nuclear-v2:not(.v2-motion-paused) [data-v2-count].v2-animate { animation: v2-glow 1.6s ease-out both; }
@keyframes v2-grow { from { transform: scaleX(0); } }
@keyframes v2-ring-draw { from { stroke-dasharray: 0 100; } }
@keyframes v2-pop { from { opacity: 0; transform: scale(0); } }
@keyframes v2-rise { from { opacity: 0; translate: 0 8px; } }
@keyframes v2-spark { 0% { opacity: 0; transform: translateY(0); } 20% { opacity: 1; } 100% { opacity: 0; transform: translateY(-9px); } }
@keyframes v2-sweep { 0% { left: 0; opacity: 0; } 6% { opacity: 1; } 94% { opacity: 1; } 100% { left: 100%; opacity: 0; } }
@keyframes v2-pulse { 50% { box-shadow: 0 0 0 4px color-mix(in srgb, var(--v2-ink) 20%, transparent); } }
@keyframes v2-orbit { from { offset-distance: calc(var(--i, 0) * 33%); } to { offset-distance: calc(var(--i, 0) * 33% + 100%); } }
@keyframes v2-nucleus { to { transform: scale(1.14); } }
@keyframes v2-glow { 30% { text-shadow: 0 0 24px color-mix(in srgb, currentColor 75%, transparent); } }
@keyframes v2-marquee { to { transform: translateX(-50%); } }
@keyframes v2-aurora { to { transform: translate3d(-5%, 4%, 0) rotate(-8deg) scale(1.12); } }
@media (prefers-reduced-motion: reduce) {
  .nuclear-v2 *, .nuclear-v2 *::before, .nuclear-v2 *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  .nuclear-v2 [data-v2-reveal].v2-reveal-pending { opacity: 1; transform: none; }
}
