/* Final contrast guardrails. Loaded after every page-specific stylesheet. */
html[data-theme="dark"]{--sub:#808089}
html[data-theme="light"]{--sub:#687181}

/* Keep all interactive text legible at small UI sizes. */
html[data-theme="light"] .text-subtle,
html[data-theme="light"] .form-hint,
html[data-theme="light"] .table-secondary,
html[data-theme="light"] .dashboard-card-subtitle,
html[data-theme="light"] .campaign-client,
html[data-theme="light"] .play-meta,
html[data-theme="light"] .station-meta{color:#687181!important}

html[data-theme="dark"] .text-subtle,
html[data-theme="dark"] .form-hint,
html[data-theme="dark"] .table-secondary,
html[data-theme="dark"] .dashboard-card-subtitle,
html[data-theme="dark"] .campaign-client,
html[data-theme="dark"] .play-meta,
html[data-theme="dark"] .station-meta{color:#808089!important}

/* Keyboard focus must be visible in both themes, independently of brand text color. */
:focus-visible{outline:3px solid var(--accent-fill);outline-offset:3px}
html[data-theme="light"] :focus-visible{box-shadow:0 0 0 1px rgba(50,65,0,.55)}

/* Disabled controls remain distinguishable without becoming unreadable. */
.btn:disabled,.form-input:disabled,.form-select:disabled,.form-textarea:disabled{opacity:.62}

/* Auth switcher belongs to normal document flow so it never overlaps language controls on narrow screens. */
.auth-page .theme-switcher-auth{position:relative;top:auto;right:auto;margin:0 0 14px auto;width:max-content;z-index:2}
@media(max-width:640px){.auth-page .theme-switcher-auth{margin-bottom:10px}}
