/* Motion and interaction for feature visuals (driven by Site Core's charts.js).
   Pre-reveal states apply only under .nd-charts, which the script sets unless reduced motion is requested. */
:root{--nd-ease:cubic-bezier(.22,.61,.36,1)}

/* Panel rises in */
.nd-charts [data-nd-reveal]{transition:opacity .6s var(--nd-ease),transform .6s var(--nd-ease)}
.nd-charts [data-nd-reveal]:not(.is-visible){opacity:0;transform:translateY(18px)}

/* Line chart draws left to right; area, markers and notes follow */
.nd-charts [data-nd-reveal] .nd-fv-chart svg{transition:clip-path 1.5s var(--nd-ease) .2s}
.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-chart svg{clip-path:inset(0 100% 0 0)}
.nd-charts [data-nd-reveal] .nd-fv-note{transition:opacity .4s ease 1.3s,transform .4s var(--nd-ease) 1.3s}
.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-note{opacity:0;transform:translate(-50%,6px)}

/* KPI tiles, rows, list items and bars arrive one after another */
.nd-charts [data-nd-reveal] .nd-fv-kpis div,.nd-charts [data-nd-reveal] tbody tr,.nd-charts [data-nd-reveal] .nd-fv-list li,.nd-charts [data-nd-reveal] .nd-fv-bars li{transition:opacity .5s ease,transform .5s var(--nd-ease);transition-delay:calc(.15s + var(--i,0) * 90ms)}
.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-kpis div,.nd-charts [data-nd-reveal]:not(.is-visible) tbody tr,.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-list li,.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-bars li{opacity:0;transform:translateY(10px)}
.nd-fv-kpis div:nth-child(2){--i:1}.nd-fv-kpis div:nth-child(3){--i:2}.nd-fv-kpis div:nth-child(4){--i:3}
.nd-charts [data-nd-reveal] .nd-fv-track i{transition:width 1s var(--nd-ease);transition-delay:calc(.35s + var(--i,0) * 110ms)}
.nd-charts [data-nd-reveal]:not(.is-visible) .nd-fv-track i{width:0}

/* Stats strip counts up (charts.js) and fades in */
.nd-charts .nd-stats .nd-stat{transition:opacity .6s ease,transform .6s var(--nd-ease)}
.nd-charts .nd-stats:not(.is-visible) .nd-stat{opacity:0;transform:translateY(10px)}
.nd-charts .nd-stats .nd-stat:nth-child(2){transition-delay:.08s}.nd-charts .nd-stats .nd-stat:nth-child(3){transition-delay:.16s}.nd-charts .nd-stats .nd-stat:nth-child(4){transition-delay:.24s}

/* Interactive chart: guide, point and tooltip */
.nd-fv-chart{cursor:crosshair;touch-action:pan-y;border-radius:12px}
.nd-fv-chart:focus{outline:none}
.nd-fv-chart:focus-visible{box-shadow:0 0 0 3px rgba(247,158,28,.45)}
.nd-fv-guide{position:absolute;width:0;border-left:1px dashed var(--nd-muted);opacity:.7;pointer-events:none;transform:translateX(-.5px)}
.nd-fv-point{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--nd-accent);box-shadow:0 0 0 4px rgba(247,158,28,.25),0 0 0 2px var(--nd-white);pointer-events:none;transition:top .12s ease}
.nd-fv-tip{position:absolute;z-index:3;transform:translate(-50%,calc(-100% - 14px));display:grid;gap:1px;min-width:96px;padding:8px 11px;border-radius:10px;background:#111418;color:#fff;font-size:12px;line-height:1.35;white-space:nowrap;pointer-events:none;box-shadow:0 10px 24px rgba(12,13,16,.25)}
.nd-fv-tip.is-left{transform:translate(calc(-100% + 18px),calc(-100% - 14px))}
.nd-fv-tip.is-right{transform:translate(-18px,calc(-100% - 14px))}
.nd-fv-tip strong{font-size:15px;font-weight:650;font-variant-numeric:tabular-nums}
.nd-fv-tip small{color:#9aa1ad;font-size:11px}
.nd-fv-tip em{font-style:normal;color:var(--nd-orange-300);font-size:11px;font-weight:600}
.nd-fv-guide[hidden],.nd-fv-point[hidden],.nd-fv-tip[hidden]{display:none}
.nd-fv-chart.is-active .nd-fv-dot{opacity:.35}
:root[data-theme=dark] .nd-fv-tip,.nd-feature-hero .nd-fv-tip{background:#eef0f3;color:#111418}
:root[data-theme=dark] .nd-fv-tip small,.nd-feature-hero .nd-fv-tip small{color:#5b6270}
:root[data-theme=dark] .nd-fv-tip em,.nd-feature-hero .nd-fv-tip em{color:var(--nd-orange-700)}

/* Bars, rows and list items respond to the pointer */
.nd-fv-bars li,.nd-fv-list li{border-radius:10px;transition:background-color .15s ease}
.nd-fv-bars li:hover,.nd-fv-list li:hover{background:var(--nd-paper)}
.nd-fv-bars li:hover .nd-fv-track i{filter:brightness(1.12) saturate(1.1)}
.nd-fv-bars li:hover strong{color:var(--nd-blue)}
.nd-fv-bars li{padding-inline:8px;margin-inline:-8px}

@media (prefers-reduced-motion:reduce){
  .nd-fv-point{transition:none}
}

/* Brand logos before panel labels that name a brand: true colours on light panels, the dark-surface mark on dark ones */
.nd-label-logo{display:inline-block;width:16px;height:16px;margin-right:8px;vertical-align:-3px;background:var(--nd-logo-light,var(--nd-logo)) center/contain no-repeat}
.nd-feature-hero .nd-label-logo,:root[data-theme=dark] .nd-label-logo{background-image:var(--nd-logo)}
