/*
 * Project design system. Loaded last in every public/user/auth layout's
 * <head> so it overrides Bootstrap and the older site stylesheets.
 *
 * Token source of truth — keep these in sync with any new components.
 */

:root {
    --bg: #0b1220;
    --panel: #0f1a2d;
    --card: #111f36;
    --muted: #9fb2d0;
    --text: #e9f1ff;
    --line: rgba(255, 255, 255, 0.08);
    --accent: #22c55e;     /* green */
    --accent2: #60a5fa;    /* blue */
    --warn: #fbbf24;
    --radius: 16px;

    --logo-gradient: linear-gradient(135deg, rgba(34, 197, 94, 0.95), rgba(96, 165, 250, 0.95));
    --primary-gradient: linear-gradient(180deg, rgba(34, 197, 94, 0.95), rgba(34, 197, 94, 0.72));
    --primary-gradient-hover: linear-gradient(180deg, rgba(34, 197, 94, 1), rgba(34, 197, 94, 0.85));
    --ghost-border: rgba(96, 165, 250, 0.35);
    --ghost-border-hover: rgba(96, 165, 250, 0.65);

    /* Map onto Bootstrap's dark-mode CSS variables so anything referencing
     * `var(--bs-body-bg)` / `var(--bs-body-color)` / `--bs-border-color`
     * picks the new palette automatically. */
    --bs-body-bg: var(--bg);
    --bs-body-color: var(--text);
    --bs-emphasis-color: var(--text);
    --bs-secondary-color: var(--muted);
    --bs-tertiary-color: var(--muted);
    --bs-border-color: var(--line);
    --bs-border-color-translucent: var(--line);
    --bs-link-color: #93c5fd;
    --bs-link-hover-color: #bfdbfe;
}

html,
body {
    background: var(--bg);
    color: var(--text);
    font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif !important;
    line-height: 1.45;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    /* The full radial-gradient hero per the design tokens. */
    background:
        radial-gradient(1000px 600px at 10% -10%, rgba(96, 165, 250, 0.25), transparent 60%),
        radial-gradient(900px 600px at 90% 0%, rgba(34, 197, 94, 0.22), transparent 55%),
        radial-gradient(900px 700px at 50% 120%, rgba(34, 197, 94, 0.12), transparent 55%),
        var(--bg) !important;
    background-attachment: fixed;
    color: var(--text) !important;
}

h1, h2, h3, h4, h5, h6 {
    color: var(--text);
}

p, li, span, label, dt, dd, td, th {
    color: inherit;
}

.text-muted,
small.text-body-secondary,
.text-body-secondary,
.text-secondary {
    color: var(--muted) !important;
}

a {
    color: var(--accent2);
    text-decoration: none;
}
a:hover,
a:focus {
    color: #bfdbfe;
}

hr,
.dropdown-divider {
    border-color: var(--line);
}

/* ============================================================
 * Cards
 * ============================================================ */
.card,
.modal-content,
.list-group-item,
.toast {
    background-color: var(--card) !important;
    color: var(--text);
    border: 1px solid var(--line) !important;
    border-radius: var(--radius);
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.35);
}

.card-header,
.card-footer {
    background-color: rgba(255, 255, 255, 0.02);
    border-color: var(--line);
    color: var(--text);
}

/* "Panel" — slightly softer than card, used for nav/grouped surfaces. */
.bg-body,
.bg-body-tertiary,
.bg-body-secondary,
.bg-light,
.bg-white {
    background-color: var(--panel) !important;
    color: var(--text) !important;
}

/* ============================================================
 * Navbar — sticky, blurred, translucent panel
 * ============================================================ */
.navbar {
    background-color: rgba(11, 18, 32, 0.55) !important;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
}
.navbar.sticky-top,
.sticky-top > .navbar,
header.sticky-top {
    position: sticky;
    top: 0;
    z-index: 1030;
}
.navbar .navbar-brand,
.navbar .nav-link,
.navbar .navbar-text {
    color: var(--text);
}
.navbar .nav-link:hover,
.navbar .nav-link:focus,
.navbar .nav-link.active {
    color: var(--accent2) !important;
}

/* ============================================================
 * Buttons
 * ============================================================ */
.btn {
    border-radius: 12px;
    font-weight: 600;
    transition: transform 0.08s ease, box-shadow 0.15s ease, background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.btn:active {
    transform: translateY(1px);
}

/* Primary / success → green gradient with dark text. */
.btn-primary,
.btn-success {
    background: var(--primary-gradient) !important;
    background-color: var(--accent) !important;
    border: 1px solid rgba(34, 197, 94, 0.65) !important;
    color: #031008 !important;
    box-shadow: 0 6px 20px rgba(34, 197, 94, 0.25);
}
.btn-primary:hover,
.btn-success:hover,
.btn-primary:focus,
.btn-success:focus {
    background: var(--primary-gradient-hover) !important;
    color: #031008 !important;
    box-shadow: 0 8px 26px rgba(34, 197, 94, 0.35);
}
.btn-primary:disabled,
.btn-success:disabled,
.btn-primary.disabled,
.btn-success.disabled {
    background: rgba(34, 197, 94, 0.45) !important;
    color: rgba(3, 16, 8, 0.7) !important;
}

/* Outline / secondary → blue-tinted ghost button. */
.btn-outline-primary,
.btn-outline-secondary,
.btn-outline-info,
.btn-outline-light,
.btn-secondary,
.btn-light {
    background: transparent !important;
    color: var(--text) !important;
    border: 1px solid var(--ghost-border) !important;
    box-shadow: none;
}
.btn-outline-primary:hover,
.btn-outline-secondary:hover,
.btn-outline-info:hover,
.btn-outline-light:hover,
.btn-secondary:hover,
.btn-light:hover,
.btn-outline-primary:focus,
.btn-outline-secondary:focus,
.btn-outline-info:focus,
.btn-outline-light:focus,
.btn-secondary:focus,
.btn-light:focus {
    background: rgba(96, 165, 250, 0.1) !important;
    color: var(--text) !important;
    border-color: var(--ghost-border-hover) !important;
}

/* Custom escape hatch if you want to opt-in to a literal "ghost" CTA. */
.btn-ghost {
    background: transparent;
    color: var(--text);
    border: 1px solid var(--ghost-border);
    border-radius: 12px;
    font-weight: 600;
    padding: 0.45rem 1rem;
}
.btn-ghost:hover,
.btn-ghost:focus {
    border-color: var(--ghost-border-hover);
    background: rgba(96, 165, 250, 0.1);
    color: var(--text);
}

.btn-warning {
    background: var(--warn) !important;
    border-color: var(--warn) !important;
    color: #1a1300 !important;
}

.btn-danger {
    background: linear-gradient(180deg, #f87171, #ef4444) !important;
    border-color: rgba(239, 68, 68, 0.65) !important;
    color: #1a0303 !important;
}

/* ============================================================
 * Forms
 * ============================================================ */
.form-control,
.form-select,
textarea.form-control,
input[type="text"]:not(.no-ds),
input[type="email"]:not(.no-ds),
input[type="password"]:not(.no-ds),
input[type="number"]:not(.no-ds),
input[type="search"]:not(.no-ds),
input[type="tel"]:not(.no-ds),
input[type="url"]:not(.no-ds) {
    background-color: rgba(11, 18, 32, 0.6);
    color: var(--text);
    border: 1px solid var(--line);
    border-radius: 12px;
}
.form-control:focus,
.form-select:focus,
textarea.form-control:focus,
input:focus:not(.no-ds) {
    background-color: rgba(11, 18, 32, 0.85);
    color: var(--text);
    border-color: var(--ghost-border-hover);
    box-shadow: 0 0 0 0.2rem rgba(96, 165, 250, 0.15);
}
.form-control::placeholder,
.form-select::placeholder,
textarea.form-control::placeholder {
    color: rgba(159, 178, 208, 0.55);
}
.form-label,
.form-check-label {
    color: var(--text);
}

/* Make checkboxes/radios sit on the dark background. */
.form-check-input {
    background-color: rgba(11, 18, 32, 0.6);
    border-color: var(--line);
}
.form-check-input:checked {
    background-color: var(--accent);
    border-color: var(--accent);
}

/* ============================================================
 * Tables
 * ============================================================ */
.table {
    color: var(--text);
    --bs-table-bg: transparent;
    --bs-table-color: var(--text);
    --bs-table-border-color: var(--line);
    --bs-table-striped-bg: rgba(255, 255, 255, 0.03);
    --bs-table-hover-bg: rgba(96, 165, 250, 0.08);
}
.table thead th,
.table > thead {
    background-color: rgba(15, 26, 45, 0.85);
    color: var(--text);
    border-color: var(--line);
}
.table tbody td,
.table tbody th {
    border-color: var(--line);
}
.table-dark {
    --bs-table-bg: rgba(15, 26, 45, 0.95);
    --bs-table-color: var(--text);
    --bs-table-border-color: var(--line);
}

/* ============================================================
 * Dropdowns / popovers / tooltips
 * ============================================================ */
.dropdown-menu {
    background-color: var(--panel);
    color: var(--text);
    border: 1px solid var(--line);
    border-radius: 12px;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.35);
}
.dropdown-item {
    color: var(--text);
}
.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active {
    background-color: rgba(96, 165, 250, 0.12);
    color: var(--text);
}

.popover {
    background-color: var(--panel);
    border-color: var(--line);
    color: var(--text);
}
.tooltip-inner {
    background-color: var(--panel);
    color: var(--text);
}

/* ============================================================
 * Alerts / badges / pills
 * ============================================================ */
.alert {
    border-radius: 12px;
    border: 1px solid var(--line);
}
.alert-success {
    background: rgba(34, 197, 94, 0.12);
    color: #d1fae5;
    border-color: rgba(34, 197, 94, 0.35);
}
.alert-info,
.alert-primary {
    background: rgba(96, 165, 250, 0.12);
    color: #dbeafe;
    border-color: rgba(96, 165, 250, 0.35);
}
.alert-warning {
    background: rgba(251, 191, 36, 0.12);
    color: #fef3c7;
    border-color: rgba(251, 191, 36, 0.35);
}
.alert-danger {
    background: rgba(239, 68, 68, 0.12);
    color: #fee2e2;
    border-color: rgba(239, 68, 68, 0.35);
}

.badge.bg-primary,
.badge.bg-info {
    background-color: var(--accent2) !important;
    color: #031424;
}
.badge.bg-success {
    background-color: var(--accent) !important;
    color: #031008;
}
.badge.bg-warning {
    background-color: var(--warn) !important;
    color: #1a1300;
}
.badge.bg-light,
.badge.bg-secondary {
    background-color: rgba(255, 255, 255, 0.08) !important;
    color: var(--text);
}

/* ============================================================
 * Logo gradient helper
 * ============================================================ */
.logo-gradient,
.text-gradient,
.brand-gradient {
    background: var(--logo-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

/* ============================================================
 * Borders / utilities
 * ============================================================ */
.border,
.border-top,
.border-bottom,
.border-start,
.border-end {
    border-color: var(--line) !important;
}

/* Public marketing hero/CTA helpers — pages that already use generic
 * `.hero`, `.cta`, etc. inherit the panel/card look automatically. */
.section,
.hero,
.cta,
.feature-card,
.pricing-card,
.faq-card,
.about-card {
    background: var(--card);
    border: 1px solid var(--line);
    border-radius: var(--radius);
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.35);
}

/* Pagination — Bootstrap's links default to white-on-white in dark. */
.page-link {
    background-color: var(--panel);
    color: var(--text);
    border-color: var(--line);
}
.page-link:hover,
.page-link:focus {
    background-color: rgba(96, 165, 250, 0.12);
    color: var(--text);
    border-color: var(--ghost-border-hover);
}
.page-item.active .page-link {
    background: var(--primary-gradient);
    color: #031008;
    border-color: rgba(34, 197, 94, 0.65);
}

/* Scrollbars (Webkit only — non-blocking). */
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
::-webkit-scrollbar-track {
    background: var(--bg);
}
::-webkit-scrollbar-thumb {
    background: rgba(255, 255, 255, 0.08);
    border-radius: 8px;
}
::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, 0.16);
}

/* ============================================================
 * Tailwind / smsVerificationService "marketing portal" layout overrides
 *
 * The legacy `templates/base.html` shell hard-codes light-mode colors
 * with `!important` (white navbar, white footer, near-black text). The
 * design system loads after that inline <style> so the matching
 * `!important` rules below win the cascade.
 * ============================================================ */

/* Tailwind background/foreground utility classes used on <body>. */
body.bg-background,
.bg-background {
    background-color: var(--bg) !important;
    color: var(--text) !important;
}
.text-foreground {
    color: var(--text) !important;
}

/* Marketing nav (sticky white bar) — repaint to translucent dark. */
.smsverificationservice-marketing-navbar {
    background-color: rgba(11, 18, 32, 0.55) !important;
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--line);
}

.top-nav-link,
.top-nav-link-mobile {
    color: var(--text) !important;
}
.top-nav-link:hover,
.top-nav-link-mobile:hover {
    color: var(--accent2) !important;
}

/* Footer — flip from white-on-light to panel-on-dark. */
.site-footer {
    background-color: var(--panel) !important;
    color: var(--text) !important;
    border-top: 1px solid var(--line) !important;
}
.site-footer__heading,
.site-footer__text,
.site-footer p,
.site-footer span,
.site-footer h1,
.site-footer h2,
.site-footer h3,
.site-footer h4,
.site-footer h5,
.site-footer h6,
.site-footer a {
    color: var(--text) !important;
}
.site-footer__link,
.site-footer__link svg {
    color: var(--muted) !important;
}
.site-footer__link:hover,
.site-footer__link:hover svg {
    color: var(--accent2) !important;
}
.site-footer__divider {
    border-color: var(--line) !important;
}

/* Tailwind colour utilities most commonly used to paint surface chrome —
 * gently re-tint so cards/sections look at home in the new palette. The
 * selectors are deliberately narrow so we don't repaint icons or badges. */
.bg-white,
.bg-slate-50,
.bg-slate-100,
.bg-gray-50,
.bg-gray-100 {
    background-color: var(--card) !important;
}
.bg-slate-900,
.bg-slate-800,
.bg-gray-900,
.bg-gray-800,
.bg-zinc-900 {
    background-color: var(--panel) !important;
}
.text-slate-900,
.text-slate-800,
.text-gray-900,
.text-gray-800,
.text-zinc-900 {
    color: var(--text) !important;
}
.text-slate-500,
.text-slate-600,
.text-gray-500,
.text-gray-600 {
    color: var(--muted) !important;
}
.border-slate-200,
.border-slate-300,
.border-gray-200,
.border-gray-300 {
    border-color: var(--line) !important;
}

/* ============================================================
 * FORCED text color overrides (Problem 1)
 *
 * Many legacy templates set `color: #0f172a` or `#1a1a1a` on text
 * containers via `!important`. The matching `!important` rules here
 * pin every text-bearing tag to the design-system text color so
 * sections that previously rendered "blank" because they used dark
 * text on the new dark background now read correctly.
 *
 * We deliberately do NOT use `* { color: ... }` — that would
 * destroy intentionally-colored elements like badges, alerts,
 * pills, links and SVG icons that consume `currentColor`.
 * ============================================================ */
body,
p,
h1, h2, h3, h4, h5, h6,
li,
dt,
dd,
label,
blockquote,
figcaption,
summary,
caption,
td,
th {
    color: var(--text) !important;
}

/* Generic content-area `span` / `div` text — scoped to the actual
 * content shells so buttons, pills, badges and chip wrappers keep
 * the text color their own rules picked. */
main span,
main div,
section span,
section div,
.section span,
.section div,
article span,
article div,
.card span,
.card div,
.hero span,
.hero div,
.cta span,
.cta div,
[class*="smsvs-"] span,
[class*="smsvs-"] div,
[class*="home-cyber-"] span,
[class*="home-cyber-"] div {
    color: var(--text);
}

/* Re-assert the dark-on-gradient button text so the forced light
 * color above doesn't make the green/yellow CTA text disappear. */
.btn-primary,
.btn-primary *,
.btn-success,
.btn-success * {
    color: #031008 !important;
}
.btn-warning,
.btn-warning * {
    color: #1a1300 !important;
}

/* Links keep the blue accent. */
a,
a span,
a div,
section a,
.section a,
main a {
    color: var(--accent2) !important;
}
a:hover,
a:focus,
a:hover span,
a:focus span {
    color: #bfdbfe !important;
}

/* ============================================================
 * FORCED background overrides (Problem 2)
 *
 * Per the user's spec: sections themselves are transparent so the
 * body radial gradient shows through. Anything that the legacy CSS
 * paints with white / light-blue gets repainted to the dark surface
 * tokens.
 * ============================================================ */
section,
.section,
header,
footer:not(.site-footer),
main {
    background: transparent !important;
}

/* Bootstrap light utility classes — the user explicitly asked for
 * `.bg-light { background: var(--panel) !important }`. */
.bg-light {
    background: var(--panel) !important;
    color: var(--text) !important;
}
.bg-white {
    background: var(--card) !important;
    color: var(--text) !important;
}

/* Bootstrap dark-on-light text utilities. */
.text-dark {
    color: var(--text) !important;
}
.text-muted,
.text-body-secondary,
.text-secondary,
small.text-body-secondary {
    color: var(--muted) !important;
}
.text-black {
    color: var(--text) !important;
}

/* Tailwind text-color utilities that the legacy marketing pages use
 * to say "near-black on white". Pin them to the design tokens. */
.text-slate-950,
.text-slate-900,
.text-slate-800,
.text-slate-700,
.text-gray-950,
.text-gray-900,
.text-gray-800,
.text-gray-700,
.text-zinc-900,
.text-zinc-800,
.text-neutral-900,
.text-neutral-800 {
    color: var(--text) !important;
}
.text-slate-600,
.text-slate-500,
.text-slate-400,
.text-gray-600,
.text-gray-500,
.text-gray-400,
.text-zinc-600,
.text-zinc-500,
.text-neutral-600,
.text-neutral-500 {
    color: var(--muted) !important;
}

/* ============================================================
 * Marketing-page custom class overrides
 *
 * `templates/public/pages/home/index.html` ships ~86 `.smsvs-*` and
 * `.home-cyber-*` rules with `background: #ffffff`, light gradients
 * and `color: #0f172a` baked in. The matching overrides below
 * repaint each known wrapper to the design tokens.
 * ============================================================ */

/* Home — hero and feature bands. */
.home-cyber-hero,
.home-cyber-hero * {
    color: var(--text) !important;
}
.home-cyber-hero {
    background: transparent !important;
}
.home-cyber-badge {
    background: var(--card) !important;
    color: var(--text) !important;
    border: 1px solid var(--line) !important;
}
.home-cyber-title__accent {
    color: var(--accent2) !important;
}
.home-cyber-lead,
.home-cyber-trust {
    color: var(--muted) !important;
}

/* Purple/indigo CTA → green gradient per spec. */
.home-cyber-btn-primary {
    background: var(--primary-gradient) !important;
    color: #031008 !important;
    border: 1px solid rgba(34, 197, 94, 0.65) !important;
    box-shadow: 0 6px 20px rgba(34, 197, 94, 0.25);
}
.home-cyber-btn-primary:hover,
.home-cyber-btn-primary:focus {
    background: var(--primary-gradient-hover) !important;
    color: #031008 !important;
}
.home-cyber-btn-ghost {
    background: transparent !important;
    color: #ffffff !important;
    border: 2px solid #ffffff !important;
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.home-cyber-btn-ghost:hover,
.home-cyber-btn-ghost:focus {
    background: rgba(255, 255, 255, 0.12) !important;
    border-color: #ffffff !important;
    color: #ffffff !important;
}

/* Home — "Quick facts", "Verify promo", "Features band". */
.smsvs-home-features-band,
.smsvs-quick-facts,
.smsvs-quick-facts__inner,
.smsvs-verify-promo,
.smsvs-verify-promo__inner {
    background: transparent !important;
    color: var(--text) !important;
}
.smsvs-quick-facts__title,
.smsvs-quick-facts__dt,
.smsvs-quick-facts__lead,
.smsvs-quick-facts__dd,
.smsvs-verify-promo__copy,
.smsvs-verify-promo__badge {
    color: var(--text) !important;
}
.smsvs-quick-facts__lead,
.smsvs-quick-facts__dd {
    color: var(--muted) !important;
}
.smsvs-quick-facts__btn {
    background: var(--card) !important;
    color: var(--text) !important;
    border: 1px solid var(--line) !important;
}
.smsvs-quick-facts__btn:hover {
    background: rgba(96, 165, 250, 0.1) !important;
    border-color: var(--ghost-border-hover) !important;
}
.smsvs-quick-facts__btn--violet {
    background: var(--primary-gradient) !important;
    color: #031008 !important;
    border: 1px solid rgba(34, 197, 94, 0.65) !important;
}
.smsvs-quick-facts__btn--violet:hover {
    background: var(--primary-gradient-hover) !important;
    color: #031008 !important;
}
.smsvs-quick-facts__api-link {
    color: var(--accent2) !important;
}

/* Home — bottom "Get Started Today" CTA. */
.smsvs-get-started,
.smsvs-get-started__card {
    background: transparent !important;
    color: var(--text) !important;
}
.smsvs-get-started__title,
.smsvs-get-started__lead,
.smsvs-get-started * {
    color: var(--text) !important;
}
.smsvs-get-started__btn {
    background: var(--primary-gradient) !important;
    color: #031008 !important;
    border: 1px solid rgba(34, 197, 94, 0.65) !important;
    box-shadow: 0 6px 20px rgba(34, 197, 94, 0.25);
}
.smsvs-get-started__btn:hover,
.smsvs-get-started__btn:focus {
    background: var(--primary-gradient-hover) !important;
    color: #031008 !important;
}
.smsvs-get-started__title-line {
    background: var(--logo-gradient) !important;
}

/* ============================================================
 * Tailwind blue/indigo/purple CTA gradients → green CTA gradient
 *
 * Buttons in marketing pages frequently use `.bg-blue-600`,
 * `.bg-indigo-600`, `.bg-purple-600`, or gradient-from-blue/purple
 * combinations as primary CTAs. Per Problem 3, repaint them to
 * the brand green.
 * ============================================================ */
button.bg-blue-500,
button.bg-blue-600,
button.bg-blue-700,
button.bg-indigo-500,
button.bg-indigo-600,
button.bg-indigo-700,
button.bg-violet-600,
button.bg-violet-700,
button.bg-purple-600,
button.bg-purple-700,
a.bg-blue-500,
a.bg-blue-600,
a.bg-blue-700,
a.bg-indigo-500,
a.bg-indigo-600,
a.bg-indigo-700,
a.bg-violet-600,
a.bg-violet-700,
a.bg-purple-600,
a.bg-purple-700 {
    background: var(--primary-gradient) !important;
    background-color: var(--accent) !important;
    color: #031008 !important;
    border: 1px solid rgba(34, 197, 94, 0.65) !important;
}
button.bg-blue-500:hover,
button.bg-blue-600:hover,
button.bg-indigo-500:hover,
button.bg-indigo-600:hover,
button.bg-violet-600:hover,
button.bg-purple-600:hover,
a.bg-blue-500:hover,
a.bg-blue-600:hover,
a.bg-indigo-500:hover,
a.bg-indigo-600:hover,
a.bg-violet-600:hover,
a.bg-purple-600:hover {
    background: var(--primary-gradient-hover) !important;
    color: #031008 !important;
}

/* ============================================================
 * Common pastel-light background utilities → dark surface
 * ============================================================ */
.bg-blue-50,
.bg-blue-100,
.bg-indigo-50,
.bg-indigo-100,
.bg-violet-50,
.bg-violet-100,
.bg-purple-50,
.bg-purple-100,
.bg-cyan-50,
.bg-cyan-100,
.bg-sky-50,
.bg-sky-100,
.bg-green-50,
.bg-green-100,
.bg-emerald-50,
.bg-emerald-100,
.bg-yellow-50,
.bg-yellow-100,
.bg-amber-50,
.bg-amber-100 {
    background: var(--card) !important;
    color: var(--text) !important;
}

/* ============================================================
 * ISSUE PATCH (May 2026)
 *
 * Plug remaining gaps reported on the live site:
 *   1. Invisible text on dark sections (text was inheriting a
 *      legacy `#1a1a1a` / `#0f172a`).
 *   2. White / light section backgrounds still showing through.
 *   3. /api-docs/ page rendering its NonVoip-style light theme.
 *   4. Hero pill / badge text invisible.
 *
 * Everything below is global-only — no template was touched.
 * ============================================================ */

/* -- ISSUE 2: literal rules requested by the user ------------ */
.bg-white {
    background: var(--card) !important;
}
.bg-light {
    background: var(--panel) !important;
}
section {
    background: transparent !important;
}
.card {
    background: var(--card) !important;
    color: var(--text) !important;
}

/* -- ISSUE 4: hero pill / generic badge / chip --------------- */
.badge,
.pill,
.chip {
    background: var(--card);
    color: var(--text) !important;
    border: 1px solid var(--line);
}

/* Bootstrap badges that already have a semantic color
 * (`.badge.bg-primary`, `.bg-success`, etc.) keep their tinted
 * background — those are styled higher up in the stylesheet.
 * The rule above only paints "untyped" `<span class="badge">`. */

/* -- ISSUE 1: aggressive forced text colour ------------------ */
/* Inline `style="color: #1a1a1a"` (or any of the GitHub-grey
 * palette baked into the API docs and smsVerificationService marketing pages)
 * gets forcibly replaced with the design-token text colour. */
[style*="color:#1a1a1a"],
[style*="color: #1a1a1a"],
[style*="color:#0f172a"],
[style*="color: #0f172a"],
[style*="color:#24292f"],
[style*="color: #24292f"],
[style*="color:#444"],
[style*="color: #444"],
[style*="color:#5c5c5c"],
[style*="color: #5c5c5c"],
[style*="color:#57606a"],
[style*="color: #57606a"],
[style*="color:#656d76"],
[style*="color: #656d76"] {
    color: var(--text) !important;
}

/* ============================================================
 * ISSUE 3: /api-docs/ page (NonVoip-style cards, parameter
 * tables, response boxes). The template ships ~40 hardcoded
 * `.nv-api-*` / `.nv-card*` / `.nv-res-*` rules with white
 * backgrounds and near-black text. Repaint each onto the
 * design tokens, while preserving semantic colour cues
 * (GET=green, POST=blue, required=red, tip=amber).
 * ============================================================ */

.nv-api-page {
    background: transparent !important;
    color: var(--text) !important;
}
.nv-api-title {
    color: var(--text) !important;
}
.nv-api-sub,
.nv-section-label,
.nv-example-hint,
.nv-req-no,
.nv-list-plain {
    color: var(--muted) !important;
}
.nv-desc {
    color: var(--text) !important;
}

/* Callout / hint cards. */
.nv-api-callback-hint {
    background: var(--card) !important;
    border: 1px solid var(--line) !important;
    color: var(--text) !important;
}
.nv-api-callback-hint code {
    background: var(--panel) !important;
    color: var(--text) !important;
}

/* Endpoint cards. */
.nv-card {
    background: var(--card) !important;
    border: 1px solid var(--line) !important;
    color: var(--text) !important;
    box-shadow: 0 18px 60px rgba(0, 0, 0, 0.35);
}
.nv-card-header {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.02) 100%) !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--text) !important;
}

/* HTTP method pills — keep semantic colours but use brand tokens. */
.nv-method-get {
    background: rgba(34, 197, 94, 0.85) !important;
    color: #031008 !important;
}
.nv-method-post {
    background: rgba(96, 165, 250, 0.85) !important;
    color: #03101e !important;
}

/* URL + monospace identifiers. */
.nv-url,
.nv-param-name code {
    color: var(--accent2) !important;
    background: transparent !important;
}

/* Parameter table. */
.nv-table-wrap {
    border: 1px solid var(--line) !important;
}
.nv-param-table {
    background: transparent !important;
    color: var(--text) !important;
}
.nv-param-table thead th {
    background: var(--panel) !important;
    color: var(--text) !important;
    border-bottom: 1px solid var(--line) !important;
}
.nv-param-table td {
    color: var(--text) !important;
    border-bottom: 1px solid var(--line) !important;
}
.nv-req-yes {
    color: #fca5a5 !important;
}

/* Response boxes — semantic translucent tint over dark surface. */
.nv-res-box {
    color: var(--text) !important;
}
.nv-res-success {
    background: rgba(34, 197, 94, 0.12) !important;
    border: 1px solid rgba(34, 197, 94, 0.4) !important;
    color: var(--text) !important;
}
.nv-res-success .nv-res-box-title {
    color: var(--accent) !important;
}
.nv-res-error {
    background: rgba(248, 113, 113, 0.12) !important;
    border: 1px solid rgba(248, 113, 113, 0.4) !important;
    color: var(--text) !important;
}
.nv-res-error .nv-res-box-title {
    color: #fca5a5 !important;
}

/* Code blocks inside the API docs. */
.nv-json {
    color: var(--text) !important;
    background: transparent !important;
}
.nv-curl {
    background: #04101e !important;
    color: #e6edf3 !important;
}

/* Tip / warning callout. */
.nv-tip {
    background: rgba(251, 191, 36, 0.12) !important;
    border: 1px solid rgba(251, 191, 36, 0.4) !important;
    color: var(--warn) !important;
}

/* ============================================================
 * Universal cascade fix (last — user requested).
 * Forces every element to inherit its parent's text colour by
 * default so that any rogue stylesheet rule that used to set
 * `color: black/dark/grey` without `!important` no longer
 * leaks through. All explicitly-coloured elements (buttons,
 * links, badges, alerts, .text-muted, semantic states, etc.)
 * keep their colour because their rules use higher specificity
 * and / or `!important`.
 * ============================================================ */
* {
    color: inherit;
}
