/* FANSFLEX v10.2. Shared final-control layer: one Light/Night interaction contract.
   Route artwork, approved dashboard geometry, payment forms and player controls remain owned by their components.
   Imported AFTER route CSS and site custom overrides in the four public/user layouts. */
:where(body.fansflex-app, body.fansflex-generic, body.fansflex-no-nav, body.ffm-body) {
  --ff102-gold:#d8ac60;
  --ff102-gold-top:#fff0bb;
  --ff102-gold-bottom:#c09143;
  --ff102-gold-border:#a97630;
  --ff102-gold-ink:#17283a;
  --ff102-control-ink:#183b55;
  --ff102-control-bg:#f4f8fd;
  --ff102-control-hover:#e2eef9;
  --ff102-control-line:rgba(75,121,159,.4);
  --ff102-control-shadow:0 2px 7px rgba(33,77,117,.10),inset 0 1px rgba(255,255,255,.9);
  --ff102-popover-bg:#f6faff;
  --ff102-menu-hover:#eaf3fb;
  --ff102-link:#215b8f;
  --ff102-focus:#c3913c;
  --ff102-focus-ring:rgba(214,164,78,.26);
  --ff102-control-ease:cubic-bezier(.22,.74,.28,1);
}
:is(html[data-bs-theme="dark"],html[data-theme="dark"]) :where(body.fansflex-app, body.fansflex-generic, body.fansflex-no-nav, body.ffm-body) {
  --ff102-gold:#e5bb74;
  --ff102-gold-top:#fff0c4;
  --ff102-gold-bottom:#c29349;
  --ff102-gold-border:#d2a460;
  --ff102-control-ink:#eff6ff;
  --ff102-control-bg:#122b40;
  --ff102-control-hover:#21435d;
  --ff102-control-line:rgba(155,197,228,.37);
  --ff102-control-shadow:0 2px 9px rgba(0,7,19,.30),inset 0 1px rgba(238,248,255,.14);
  --ff102-popover-bg:#112b41;
  --ff102-menu-hover:#25435c;
  --ff102-link:#bbddfa;
  --ff102-focus:#f1c783;
  --ff102-focus-ring:rgba(235,191,118,.26);
}

/* Accessibility and keyboard wayfinding are shared; neither audio nor video controls are restyled. */
.ff102-skip-link {
  position:fixed!important; inset-inline-start:12px; top:-100px; z-index:2147483500;
  display:inline-flex; align-items:center; min-height:44px; padding:10px 17px;
  background:linear-gradient(145deg,var(--ff102-gold-top),var(--ff102-gold-bottom));
  color:var(--ff102-gold-ink)!important; border:2px solid var(--ff102-gold-border);
  border-radius:12px; box-shadow:0 10px 25px rgba(0,0,0,.23); font-weight:750;
  text-decoration:none; transition:top .15s ease;
}
.ff102-skip-link:focus-visible {top:12px;outline:3px solid var(--ff102-focus);outline-offset:3px;}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) :is(
 a[href], button, [role="button"], input, select, textarea, summary, [tabindex]:not([tabindex="-1"])
):focus-visible {
  outline:2px solid var(--ff102-focus)!important; outline-offset:3px!important;
  box-shadow:0 0 0 4px var(--ff102-focus-ring);
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) :is(a[href],button,[role="button"],summary) {
  -webkit-tap-highlight-color:rgba(215,170,92,.2);
  touch-action:manipulation;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) :is(button,[role="button"]):disabled,
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) :is(button,[role="button"])[aria-disabled="true"] {
  cursor:not-allowed; box-shadow:none;
}

/* Native actions that were previously href=javascript:void(0) now have correct semantics. */
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) button.ff102-inline-action {
  appearance:none; display:inline-flex; align-items:center; justify-content:center; gap:.25em;
  max-width:100%; min-height:22px; margin:0; padding:0;
  border:0; border-radius:3px; background:none!important; box-shadow:none!important;
  font:inherit; font-weight:650; line-height:inherit; letter-spacing:inherit;
  color:var(--ff102-link)!important; -webkit-text-fill-color:currentColor;
  cursor:pointer; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) button.ff102-inline-action:is(:hover,:focus-visible) {
  color:var(--ff102-gold-border)!important; text-decoration-thickness:2px;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) .unverified-email-box button.ff102-inline-action {
  color:inherit!important; -webkit-text-fill-color:currentColor;
}
body.fansflex-app :is(.messenger-mobile-back,.conversation-message-search-toggle,.conversation-tip-toggle,.conversation-header-menu-toggle) {
  appearance:none; font:inherit; cursor:pointer;
}
body.fansflex-app :is(.message-template-trigger,.conversation-header .dropdown-item:is(button),.navbar-user-toggle:is(button)) {
  font:inherit; cursor:pointer;
}
body.fansflex-app .conversation-header .dropdown-item:is(button) {text-align:start; width:100%;}
body.fansflex-app .navbar-user-toggle:is(button) {border:0;background:transparent;color:inherit;}
body.fansflex-app .conversation-header-menu-toggle:is(button) {border:0;}
body.fansflex-app .message-template-trigger:is(button) {border:1px solid transparent;}

/* Unified legacy Bootstrap action set; descriptive status colors and specialist controls stay untouched. */
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.btn-primary,.btn.bg-gradient-primary):not(.ff102-no-gold):not(.btn-danger):not(.btn-success) {
  --bs-btn-color:var(--ff102-gold-ink); --bs-btn-hover-color:var(--ff102-gold-ink);
  --bs-btn-bg:var(--ff102-gold); --bs-btn-border-color:var(--ff102-gold-border);
  --bs-btn-hover-bg:var(--ff102-gold-bottom); --bs-btn-hover-border-color:var(--ff102-gold-border);
  color:var(--ff102-gold-ink)!important;
  background:linear-gradient(138deg,var(--ff102-gold-top),var(--ff102-gold) 49%,var(--ff102-gold-bottom))!important;
  border:1px solid var(--ff102-gold-border)!important;
  box-shadow:0 3px 9px rgba(87,64,33,.18),inset 0 1px rgba(255,250,227,.95)!important;
  font-weight:700;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.btn-primary,.btn.bg-gradient-primary):not(.ff102-no-gold):not(.btn-danger):not(.btn-success):is(:hover,:focus-visible) {
  background:linear-gradient(145deg,#fff3ce,var(--ff102-gold-top) 16%,var(--ff102-gold-bottom))!important;
  color:var(--ff102-gold-ink)!important;
  box-shadow:0 5px 15px rgba(122,86,40,.22),inset 0 1px rgba(255,255,255,.9)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .btn-outline-primary:not(.ff102-no-gold) {
  --bs-btn-color:var(--ff102-control-ink); --bs-btn-hover-color:var(--ff102-control-ink);
  color:var(--ff102-control-ink)!important; border:1px solid var(--ff102-control-line)!important;
  background:var(--ff102-control-bg)!important; box-shadow:var(--ff102-control-shadow);
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .btn-outline-primary:not(.ff102-no-gold):is(:hover,:focus-visible) {
  border-color:var(--ff102-gold-border)!important; background:var(--ff102-control-hover)!important;
  color:var(--ff102-control-ink)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.btn-primary,.btn-outline-primary,.btn-secondary,.btn-outline-secondary) {
  transition:background-color .18s var(--ff102-control-ease),box-shadow .18s var(--ff102-control-ease),
    border-color .18s var(--ff102-control-ease),transform .16s var(--ff102-control-ease);
}
@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  :where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.btn-primary,.btn-outline-primary,.btn-secondary,.btn-outline-secondary):not(:disabled):hover {transform:translateY(-1px);}
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.btn-primary,.btn-outline-primary,.btn-secondary,.btn-outline-secondary):not(:disabled):active {transform:translateY(0);}

/* Tabs, pagination and real menu selections use the same gold interaction state. */
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(
 .nav-pills .nav-link.active,.nav-pills .show > .nav-link,
 .page-item.active .page-link,.dropdown-item.active:not(.text-danger),.dropdown-item:active:not(.text-danger)
) {
  background:linear-gradient(140deg,var(--ff102-gold-top),var(--ff102-gold-bottom))!important;
  border-color:var(--ff102-gold-border)!important; color:var(--ff102-gold-ink)!important;
  box-shadow:inset 0 1px rgba(255,255,255,.8);
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.dropdown-menu,.popover) {
  background:var(--ff102-popover-bg); border-color:var(--ff102-control-line);
  box-shadow:0 16px 36px rgba(4,23,39,.24),inset 0 1px rgba(255,255,255,.12);
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .dropdown-item:not(.active):not(.text-danger):is(:hover,:focus-visible) {
  color:var(--ff102-control-ink)!important; background:var(--ff102-menu-hover)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.form-check-input:checked) {
  border-color:var(--ff102-gold-border)!important;
  background-color:var(--ff102-gold-bottom)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.form-control,.form-select):focus {
  border-color:var(--ff102-gold-border)!important;
  box-shadow:0 0 0 .19rem var(--ff102-focus-ring)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.modal-content,.offcanvas) {
  border-color:var(--ff102-control-line);
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .btn-close:focus-visible {box-shadow:0 0 0 4px var(--ff102-focus-ring)!important;}

/* A thin non-blocking indicator, only for real same-origin document navigation. */
html.ff102-navigating body::before {
  content:""; position:fixed; z-index:2147483500; top:0; inset-inline-start:0; width:72%; height:3px;
  background:linear-gradient(90deg,transparent 0%,var(--ff102-gold-top) 24%,var(--ff102-gold-bottom));
  box-shadow:0 1px 12px var(--ff102-focus-ring); pointer-events:none;transform-origin:left;
  animation:ff102-progress .9s var(--ff102-control-ease) both;
}
html[dir="rtl"].ff102-navigating body::before {transform-origin:right;}
@keyframes ff102-progress {from{transform:scaleX(.04)}to{transform:scaleX(1)}}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) form.ff102-submitting :is(button[type="submit"],input[type="submit"]) {
  cursor:progress;
}
@media(max-width:575.98px) {
 :where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) :is(.modal-footer .btn,.modal-header .btn-close) {min-height:40px;}
 :where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .dropdown-item {min-height:40px;display:flex;align-items:center;}
}
@media(prefers-reduced-motion:reduce) {
 .ff102-skip-link{transition:none!important;}
 html.ff102-navigating body::before {animation:none!important;width:40%;}
 :where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.ffm-body) :is(.btn,.nav-link,.dropdown-item,.ff102-inline-action) {transition:none!important; transform:none!important;}
}
/* Print documents must never inherit the metallic palette. */
@media print {
 html.ff102-navigating body::before,.ff102-skip-link {display:none!important;}
 body.ff-route-invoice :is(.btn,.ff102-inline-action){display:none!important;}
}
/* Legacy Academy used left:-10000px for its skip link, which produces a 10k-pixel
   horizontal overflow in RTL. Place it logically off-screen without layout expansion. */
body.ffm-body .ff80-academy-skip {
  position:fixed!important; left:auto!important; right:auto!important;
  inset-inline-start:12px!important; top:-100px!important; z-index:2147483500;
  padding:10px 17px; border-radius:12px; background:var(--ff102-gold-top)!important;
  color:var(--ff102-gold-ink)!important; border:2px solid var(--ff102-gold-border);
  font-weight:700; text-decoration:none;
}
body.ffm-body .ff80-academy-skip:focus-visible {top:12px!important;}
/* Neutral actions inherit steel, not a disconnected legacy solid-blue rectangle. */
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .btn-secondary:not(.ff102-no-steel):not(.btn-danger) {
  --bs-btn-color:var(--ff102-control-ink); --bs-btn-hover-color:var(--ff102-control-ink);
  --bs-btn-bg:var(--ff102-control-bg); --bs-btn-hover-bg:var(--ff102-control-hover);
  color:var(--ff102-control-ink)!important;
  background:linear-gradient(145deg,var(--ff102-control-bg),var(--ff102-control-hover))!important;
  border:1px solid var(--ff102-control-line)!important;
  box-shadow:var(--ff102-control-shadow)!important;
}
:where(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) .btn-secondary:not(.ff102-no-steel):is(:hover,:focus-visible) {
  background:var(--ff102-control-hover)!important;
  border-color:var(--ff102-gold-border)!important;
  color:var(--ff102-control-ink)!important;
}
