/* Gold light is reserved for tiny indicators and filled progress bars.
   Buttons, cards, tabs and panel outlines deliberately stay flat. */
:root{
  --gold-glow-halo:0 0 4px #d7bb7380,0 0 10px #d7bb7340;
  --gold-glow-halo-peak:0 0 5px #d7bb7399,0 0 12px #d7bb7352;
  --gold-glow-svg:drop-shadow(0 0 4px #d7bb7380) drop-shadow(0 0 7px #d7bb7340);
  --gold-glow-bar:inset 0 0 0 1px #f5e4b780,0 0 4px #d7bb7338;
}
.bar,.progress,.local-progress{overflow:visible}
.bar i,.progress-fill,.local-progress span{border-radius:inherit;box-shadow:var(--gold-glow-bar)}
.bar i[style*="width:0%"]{box-shadow:none}
.nfos-progress__segment--current:before{box-shadow:var(--gold-glow-halo)}
/* Keep the unconsumed quota track neutral. */
.quota-windows i{position:relative;background:var(--surface-track)}
.quota-windows i:before{content:"";display:block;width:var(--quota);height:100%;border-radius:inherit;background:#bda25f;box-shadow:var(--gold-glow-bar)}
.demo:before,.nfos-shell .nav.active:after,.quota-dot,
.DOING .status-dot,.running .status-dot,.live:before,.log li:before,
.task.wait .icon,.DOING .micro:before,.micro i,.dots i,
.simulation-label i,.graph-wrap:before,.graph-wrap:after,.hero:after{box-shadow:var(--gold-glow-halo)}
/* Static light describes the existing gold accent, never source connectivity.
   SVG dots need a filter rather than a rectangular CSS box shadow. */
.graph circle{filter:var(--gold-glow-svg)}
@media(forced-colors:active){
  :root{--gold-glow-halo:none;--gold-glow-halo-peak:none;--gold-glow-svg:none;--gold-glow-bar:none}
}
/* Motion is opt-in: the view must have both a live source and active work.
   A lane label, quota snapshot or a completed stage is never activity. */
[data-activity="active"] .micro:before,
.column:has([data-activity="active"])>.column-head .status-dot,
[data-activity="active"] .live:before{
  animation:nfos-status-halo 2.8s ease-in-out infinite;
}
/* Workflow motion changes opacity/transform only. The rail stays one pixel;
   a small glint is clipped from the supplied current marker to the next marker. */
.nfos-progress__shine{display:none;position:absolute;z-index:1;left:50%;right:calc(50% - 100% * var(--workflow-connector-steps));top:3px;height:1px;overflow:hidden;pointer-events:none}
[data-activity="active"] .nfos-progress__segment--current .nfos-progress__shine{display:block}
[data-activity="active"] .nfos-progress__segment--current .nfos-progress__shine:after{
  content:"";display:block;width:22%;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);
  animation:nfos-workflow-glint 3.6s ease-in-out infinite;
}
[data-activity="active"] .nfos-progress__segment--current:before{
  animation:nfos-workflow-pulse 3.6s ease-in-out infinite;
}
@keyframes nfos-workflow-pulse{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes nfos-workflow-glint{0%,15%{transform:translateX(-100%);opacity:0}25%{opacity:.65}75%{opacity:.65}90%,100%{transform:translateX(460%);opacity:0}}
@keyframes nfos-status-halo{
  0%,100%{box-shadow:var(--gold-glow-halo)}
  50%{box-shadow:var(--gold-glow-halo-peak)}
}
@media(prefers-reduced-motion:reduce),(forced-colors:active){
  [data-activity="active"] .micro:before,
  .column:has([data-activity="active"])>.column-head .status-dot,
  [data-activity="active"] .live:before{animation:none}
  [data-activity="active"] .nfos-progress__segment--current:before{animation:none}
  [data-activity="active"] .nfos-progress__segment--current .nfos-progress__shine{display:none}
  [data-activity="active"] .nfos-progress__segment--current .nfos-progress__shine:after{animation:none}
}
/* Keep cached/inactive views and paused reading still. */
[data-view-active="false"] *,[data-view-active="false"] *:before,[data-view-active="false"] *:after,
.paused *, .paused *:before,.paused *:after,
.reading-paused *, .reading-paused *:before,.reading-paused *:after{animation-play-state:paused!important}

/* A hidden document also suspends standalone previews, without touching data. */
[data-workflow-hidden="true"] .nfos-progress__segment--current:before,
[data-workflow-hidden="true"] .nfos-progress__shine:after{animation-play-state:paused!important}
