/* Semantic colour authority. Campaign artwork, chart categories and item rarity keep their own palettes. */
:root[data-ns-page] {
  --ns-positive:#60c692;
  --ns-negative:#e27572;
  --ns-warning:#f2bc45;
  --ns-field-bg:#11110f;
  --ns-text:#f4f0e7;
  --ns-text-dim:#d2cdc2;
  --ns-muted:#a7a195;
  --ns-surface:#131311;
  --ns-border:#37352f;
  --ns-accent-bg:#f2bc45;
  --ns-accent-ink:#171208;
  --ns-success-ink:#171208;
}
html[data-theme="light"][data-ns-page] {
  --ns-positive:#1f7957;
  --ns-negative:#a62e2e;
  --ns-warning:#8a6417;
  --ns-field-bg:#fffaf1;
  --ns-text:#211e19;
  --ns-text-dim:#403a31;
  --ns-muted:#625a4e;
  --ns-surface:#f8f3e9;
  --ns-border:#c9beac;
  --ns-accent-bg:#d9aa3e;
  --ns-success-ink:#f9fff8;
}
:root[data-ns-page] {
  --ns-mint:var(--ns-positive);
  --ns-danger:var(--ns-negative);
  --ns-rose:var(--ns-negative);
  --ns-danger-ink:var(--ns-negative);
  --ns-gold:var(--ns-warning);
  --ns-brand:var(--ns-warning);
  --ns-success-bg:var(--ns-positive);
}
/* Apply a theme atomically: numbers, bars and buttons must not animate through different shades. */
.ns-theme-changing *,.ns-theme-changing *::before,.ns-theme-changing *::after { transition:none !important; }
html[data-ns-page] :is(.ns-text-positive,.ns-number-green,.text-green-400,.text-green-500,.text-emerald-400) { color:var(--ns-positive) !important; }
html[data-ns-page] :is(.ns-text-negative,.ns-number-red,.text-red-400,.text-red-500,.text-rose-400) { color:var(--ns-negative) !important; }
html[data-ns-page] :is(.ns-number-gold,.text-yellow-400,.text-amber-400) { color:var(--ns-warning) !important; }
html[data-ns-page] :is(.ns-link-primary,.ns-link.is-active,.tax-notice-confirm,#wheel-spin-btn,.boss-wheel-spin) {
  color:var(--ns-accent-ink) !important;background:var(--ns-accent-bg) !important;border-color:var(--ns-accent-bg) !important;
}
html[data-ns-page] :is(button.bg-green-600,button.bg-green-500) { color:var(--ns-success-ink) !important;background:var(--ns-positive) !important;border-color:var(--ns-positive) !important; }
html[data-ns-page] :is(button.bg-red-600,button.bg-red-500) { color:var(--ns-negative) !important;background:color-mix(in srgb,var(--ns-negative) 8%,var(--ns-surface)) !important;border-color:var(--ns-negative) !important; }
html[data-ns-page] :is(.gift-showcase-empty,.gift-showcase-meta,.gift-showcase-date,.gift-icon-placeholder,.order-modal-copy,.order-edit-field label) { color:var(--ns-muted); }
html[data-ns-page] .order-edit-field :is(input,select) { color:var(--ns-text);background:var(--ns-field-bg);border-color:var(--ns-border); }
html[data-ns-page] .order-edit-warning { color:var(--ns-warning);background:color-mix(in srgb,var(--ns-warning) 7%,var(--ns-surface));border-color:color-mix(in srgb,var(--ns-warning) 30%,var(--ns-border)); }
html[data-ns-page] .order-modal-close { color:var(--ns-text-dim);border-color:var(--ns-border); }
/* The workshop and monument retain their item/sign artwork, but share UI meanings with the dashboards. */
html[data-ns-page="gift-workshop"],html[data-ns-page="sponsor-monument"] {
  --green:var(--ns-positive);--red:var(--ns-negative);--gold:var(--ns-warning);
  --gold-ink:var(--ns-accent-ink);--focus:var(--ns-warning);
  --text:var(--ns-text);--muted:var(--ns-muted);
}
html[data-ns-page="gift-workshop"] .send-btn {
  color:var(--ns-accent-ink);background:var(--ns-accent-bg);border-color:var(--ns-accent-bg);
}
html[data-ns-page="gift-workshop"] .btn.primary { color:var(--ns-success-ink);background:var(--ns-positive);border-color:var(--ns-positive); }
html[data-ns-page="gift-workshop"] .send-status.ok { color:var(--ns-positive);border-color:var(--ns-positive);background:var(--ns-surface); }
html[data-ns-page="gift-workshop"] .send-status.error { color:var(--ns-negative);border-color:var(--ns-negative);background:var(--ns-surface); }
html[data-ns-page="gift-workshop"] .success-mark { color:var(--ns-positive);background:color-mix(in srgb,var(--ns-positive) 10%,var(--ns-surface));border-color:var(--ns-positive); }
html[data-ns-page="gift-workshop"] .boss-option.active,html[data-ns-page="gift-workshop"] .boss-option:hover { color:var(--ns-accent-ink);background:var(--ns-accent-bg); }
html[data-ns-page="gift-workshop"] .boss-option.active span,html[data-ns-page="gift-workshop"] .boss-option:hover span { color:inherit; }
html[data-ns-page="gift-workshop"] .mobile-workshop-nav { background:var(--ns-surface);border-color:var(--ns-border); }
html[data-ns-page="gift-workshop"] .mobile-workshop-nav a { color:var(--ns-text-dim);background:var(--ns-surface); }
html[data-ns-page="gift-workshop"] .mobile-workshop-nav a:active,
html[data-ns-page="gift-workshop"] .mobile-workshop-nav a:focus-visible { color:var(--ns-accent-ink);background:var(--ns-accent-bg); }
html[data-ns-page="sponsor-monument"] :is(.save-button,.sidebar-action:not(.is-secondary)) {
  color:var(--ns-accent-ink);background:var(--ns-accent-bg);border-color:var(--ns-accent-bg);
}
html[data-ns-page="sponsor-monument"] .danger-button { color:var(--ns-negative);background:color-mix(in srgb,var(--ns-negative) 8%,var(--ns-surface));border-color:var(--ns-negative); }
html[data-ns-page="national-day-2026"] main>a { color:var(--ns-accent-ink);background:var(--ns-accent-bg);border-color:var(--ns-accent-bg); }
