/* FANSFLEX v7.2 – consistent interface contract across all four layout shells.
   One deliberate visual source for standard controls. Safe exceptions: gold premium
   actions, semantic danger/warning/success, user-selected story/media colors.
   This stylesheet is loaded after legacy route CSS and is narrowly scoped.
   Does not replace or rasterize photographic content. */
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) {
  --ff72-navy:#112f4e;
  --ff72-blue:#216ba6;
  --ff72-blue-hover:#185787;
  --ff72-ink:#102842;
  --ff72-muted:#607b93;
  --ff72-surface:#f8fbff;
  --ff72-soft:#ecf4fb;
  --ff72-line:#c8d9e7;
  --ff72-gold:#e2bb70;
  --ff72-focus:rgba(40,128,198,.26);
}
:is(html[data-bs-theme="dark"],html[data-theme="dark"]) :is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic) {
  --ff72-navy:#102d4b;
  --ff72-blue:#469dd4;
  --ff72-blue-hover:#6ab6e8;
  --ff72-ink:#edf6fe;
  --ff72-muted:#a5bdce;
  --ff72-surface:#10263d;
  --ff72-soft:#173650;
  --ff72-line:#355570;
  --ff72-focus:rgba(102,184,238,.3);
}
/* The primary/gold contracts are already defined in v4.9. Normalize only the
   historically overlooked standard and outline buttons. */
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) .btn-secondary:not(:is(.ff-action-gold,.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold)) {
  --bs-btn-bg:var(--ff72-navy);
  --bs-btn-border-color:var(--ff72-navy);
  --bs-btn-color:#fff;
  --bs-btn-hover-bg:#1b527c;
  --bs-btn-hover-border-color:#1b527c;
  --bs-btn-hover-color:#fff;
  background-color:var(--ff72-navy)!important;
  border-color:var(--ff72-navy)!important;
  color:#fff!important;
  background-image:none!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) .btn-secondary:not(:is(.ff-action-gold,.ff20-primary-action,.ff20-hero-action,.ff17-btn-gold)):is(:hover,:focus-visible) {
  background-color:#1b527c!important;
  border-color:#1b527c!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn-outline-secondary,.btn-outline-light,.btn-outline-dark) {
  --bs-btn-border-color:var(--ff72-line);
  --bs-btn-color:var(--ff72-ink);
  --bs-btn-hover-bg:var(--ff72-soft);
  --bs-btn-hover-border-color:var(--ff72-blue);
  --bs-btn-hover-color:var(--ff72-ink);
  background-color:transparent!important;
  background-image:none!important;
  border-color:var(--ff72-line)!important;
  color:var(--ff72-ink)!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn-outline-secondary,.btn-outline-light,.btn-outline-dark):is(:hover,:focus-visible) {
  background-color:var(--ff72-soft)!important;
  border-color:var(--ff72-blue)!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn-light,.btn-dark):not(:is(.ff-action-gold,.ff17-btn-gold,.ff20-primary-action,.ff20-hero-action)) {
  background:var(--ff72-soft)!important;
  border-color:var(--ff72-line)!important;
  color:var(--ff72-ink)!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn-light,.btn-dark):not(:is(.ff-action-gold,.ff17-btn-gold,.ff20-primary-action,.ff20-hero-action)):hover {
  background:var(--ff72-surface)!important;
  border-color:var(--ff72-blue)!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn,.form-control,.form-select,.input-group-text,.dropdown-menu,.modal-content) {
  border-radius:11px;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.form-control,.form-select,.input-group-text) {
  border-color:var(--ff72-line);
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.form-control,.form-select):is(:focus,:focus-visible) {
  border-color:var(--ff72-blue)!important;
  box-shadow:0 0 0 .18rem var(--ff72-focus)!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.dropdown-menu,.popover) {
  --bs-dropdown-bg:var(--ff72-surface);
  --bs-dropdown-border-color:var(--ff72-line);
  --bs-dropdown-link-color:var(--ff72-ink);
  --bs-dropdown-link-hover-color:var(--ff72-ink);
  --bs-dropdown-link-hover-bg:var(--ff72-soft);
  border-color:var(--ff72-line);
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.dropdown-item.active:not(.text-danger):not(.text-warning),.dropdown-item:active:not(.text-danger):not(.text-warning),.nav-pills .nav-link.active,.page-item.active .page-link) {
  color:#fff!important;
  background-color:#216ba6!important;
  border-color:#216ba6!important;
  background-image:none!important;
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) .nav-tabs .nav-link.active {
  color:var(--ff72-ink);
  border-bottom:2px solid var(--ff72-gold);
}
:is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn,.dropdown-item,.nav-link,.page-link,.form-control,.form-select):focus-visible {
  outline:2px solid var(--ff72-blue);
  outline-offset:2px;
}
/* Preserve semantic intent and deliberate premium gold. No global image/hero/card
   backgrounds are touched. Every new rule is CSS-only and does not alter APIs. */
@media(prefers-reduced-motion:reduce) {
  :is(body.fansflex-app,body.fansflex-no-nav,body.fansflex-generic,body.fansflex-installer) :is(.btn,.dropdown-item,.nav-link,.form-control,.form-select) {
    transition-duration:0.01ms!important;
  }
}

/* v7.2 settings: replace pseudo-buttons with real controls, preserving the
   same upload/remove/AI actions. Keep the selectors route-scoped to avoid
   styling post/reel pills or system error actions. */
body.fansflex-app.ff-route-my-settings :is(.profile-cover-bg,.avatar-holder) button.h-pill {
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;
  height:38px;
  min-width:38px;
  min-height:38px;
  padding:0;
  border:1px solid var(--ff72-line)!important;
  border-radius:10px;
  background:var(--ff72-soft)!important;
  color:var(--ff72-ink)!important;
  cursor:pointer;
}
body.fansflex-app.ff-route-my-settings :is(.profile-cover-bg,.avatar-holder) button.h-pill:is(:hover,:focus-visible) {
  background:var(--ff72-surface)!important;
  border-color:var(--ff72-blue)!important;
}
body.fansflex-app.ff-route-my-settings :is(.profile-cover-bg,.avatar-holder):focus-visible {
  outline:2px solid var(--ff72-blue);
  outline-offset:3px;
}
body.fansflex-app.ff-route-my-settings .ff72-device-remove {
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  min-height:38px;
  padding:0;
  border:1px solid var(--ff72-line);
  border-radius:10px;
  background:var(--ff72-soft);
  color:var(--ff72-ink);
  cursor:pointer;
}
body.fansflex-app.ff-route-my-settings .ff72-device-remove:is(:hover,:focus-visible) {
  border-color:var(--ff72-blue);
  color:var(--ff72-blue);
}
body.fansflex-app.ff-route-my-settings .ff72-ai-suggest-button {
  appearance:none;
  display:inline-flex;
  align-items:center;
  gap:.3rem;
  border:0;
  padding:.25rem .4rem;
  background:transparent;
  color:var(--ff72-blue);
  font:inherit;
  font-weight:600;
  cursor:pointer;
}
body.fansflex-app.ff-route-my-settings .ff72-ai-suggest-button:hover {text-decoration:underline;}
@media(max-width:767.98px) {
  body.fansflex-app.ff-route-my-settings :is(.profile-cover-bg,.avatar-holder) button.h-pill,
  body.fansflex-app.ff-route-my-settings .ff72-device-remove {
    min-width:44px;
    min-height:44px;
    width:44px;
    height:44px;
  }
}
