/* FANSFLEX v4.9: late-bound palette + page-specific precedence repair.
   template.head loads this AFTER page CSS (but BEFORE intentional custom site CSS).
   Scope excludes Filament/admin, story media palettes, semantic danger, and premium gold. */

/* v4.9 repaired legacy token leaks; v5.0 also migrates the precompiled Bootstrap CSS.
   Keep token mapping for theme regeneration and backwards-compatible components. */
:is(body.fansflex-app, body.fansflex-generic, body.fansflex-no-nav, body.ff22-invoice-page) {
  --ff49-primary:#176db6;
  --ff49-primary-rgb:23,109,182;
  --ff49-hover:#12588f;
  --ff49-strong:#124d7d;
  --ff49-subtle:#e8f4fc;
  --ff49-stroke:#b4d8ef;
  --ff49-ring:rgba(37,129,198,.24);
  --primary:var(--ff49-primary);
  --app-primary:var(--ff49-primary);
  --app-primary-soft:rgba(23,109,182,.12);
  --app-focus-ring:var(--ff49-ring);
  --theme-primary:var(--ff49-primary);
  --theme-primary-rgb:var(--ff49-primary-rgb);
  --theme-primary-bg-subtle:var(--ff49-subtle);
  --theme-primary-text-emphasis:var(--ff49-strong);
  --theme-primary-border-subtle:var(--ff49-stroke);
  --bs-primary:var(--ff49-primary);
  --bs-primary-rgb:var(--ff49-primary-rgb);
  --bs-primary-bg-subtle:var(--ff49-subtle);
  --bs-primary-text-emphasis:var(--ff49-strong);
  --bs-primary-border-subtle:var(--ff49-stroke);
  --bs-link-color:var(--ff49-primary);
  --bs-link-color-rgb:var(--ff49-primary-rgb);
  --bs-link-hover-color:var(--ff49-hover);
  --bs-link-hover-color-rgb:18,88,143;
  --bs-focus-ring-color:var(--ff49-ring);
  --ui-accent:var(--ff49-primary);
  --ui-accent-soft:var(--app-primary-soft);
  --ui-focus-ring:var(--ff49-ring);
  --ff-action:var(--ff49-primary);
  --ff-action-hover:var(--ff49-hover);
  accent-color:var(--ff49-primary);
}
:is(html[data-bs-theme="dark"],html[data-theme="dark"]) :is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav,body.ff22-invoice-page) {
  --ff49-primary:#65b6ee;
  --ff49-primary-rgb:101,182,238;
  --ff49-hover:#87cafa;
  --ff49-strong:#b7e0fa;
  --ff49-subtle:rgba(40,115,181,.16);
  --ff49-stroke:rgba(101,182,238,.35);
  --ff49-ring:rgba(101,182,238,.28);
  --app-primary-soft:rgba(101,182,238,.15);
  --bs-link-hover-color-rgb:135,202,250;
  --ff-action:#236da5;
  --ff-action-hover:#1c6195;
}
/* Bootstrap stores fixed magenta values in local button custom properties.
   Reset variables and painted fill for primary actions on all supported shells. */
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav,body.ff22-invoice-page) .btn-primary {
  --bs-btn-color:#fff;
  --bs-btn-bg:var(--ff-action);
  --bs-btn-border-color:var(--ff-action);
  --bs-btn-hover-bg:var(--ff-action-hover);
  --bs-btn-hover-border-color:var(--ff-action-hover);
  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:var(--ff-action-hover);
  --bs-btn-active-border-color:var(--ff-action-hover);
  --bs-btn-active-color:#fff;
  --bs-btn-disabled-bg:var(--ff-action);
  --bs-btn-disabled-border-color:var(--ff-action);
  --bs-btn-focus-shadow-rgb:23,109,182;
  background:var(--ff-action)!important;
  border-color:var(--ff-action)!important;
  color:#fff!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav,body.ff22-invoice-page) .btn-primary:is(:hover,:active,.active) {
  background:var(--ff-action-hover)!important;
  border-color:var(--ff-action-hover)!important;
}
/* Other legacy components consume theme-primary rather than .btn-primary. */
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav,body.ff22-invoice-page) :is(.bg-gradient-primary,.btn.bg-gradient-primary,.bg-gradient-primary.btn,.btn.bg-gradient-primary:hover) {
  background-image:linear-gradient(125deg,#125084,#236da5)!important;
  background-color:#176db6!important;
  border-color:#176db6!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) :is(.link-primary,.text-primary,.form-action-link) {
  color:var(--ff49-primary)!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) :is(.border-primary,.border-primary-subtle) {
  border-color:var(--ff49-stroke)!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) .selectize-control.multi .selectize-input > div.active {
  background:var(--ff-action)!important;
  color:#fff!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) .dropzone .dz-preview .dz-remove:is(:hover,:focus-visible) {
  background:var(--ff-action)!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) .vault-options-button[aria-expanded="true"]::before {
  background:var(--ff-action)!important;
}
:is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) :is(.form-control,.form-select,.form-check-input,.form-range,.form-action-link):focus-visible {
  outline:2px solid var(--ff-action);
  outline-offset:2px;
}
/* Intentionally gold, not legacy purple: premium/creator CTAs in approved dark design.
   v4.6's broad .btn-primary override otherwise erases the older gold treatment. */
body.fansflex-app :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold),
body.fansflex-generic :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold),
body.fansflex-no-nav :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold) {
  --bs-btn-color:#102338;
  --bs-btn-bg:#e2bd71;
  --bs-btn-border-color:#d3a957;
  background:linear-gradient(180deg,#f6dc9c,#d1a354)!important;
  border-color:#d3a957!important;
  color:#102338!important;
}
body.fansflex-app :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold):hover,
body.fansflex-generic :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold):hover,
body.fansflex-no-nav :is(.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold):hover {
  background:linear-gradient(180deg,#ffe4ad,#d6aa61)!important;
  border-color:#e2bc79!important;
  color:#102338!important;
}
/* Standalone invoice uses template.head but not a FansFlex shell class.  Preserve
   its deliberate gold invoice-footer CTA and print-media styles. */
body.ff22-invoice-page .invoice-footer .btn {
  background:linear-gradient(180deg,#f0d595,#c59b42)!important;
  border-color:#e0bc6f!important;
  color:#08131c!important;
}
@media (prefers-reduced-motion: reduce) {
  :is(body.fansflex-app,body.fansflex-generic,body.fansflex-no-nav) :is(.btn-primary,.form-control,.form-select){transition:none!important;}
}
