/* Wave Funded shared contrast guardrails.
 * Loaded after page themes so text remains readable when a surface changes tone.
 */

:root {
    --wf-contrast-light: #f4f9ff;
    --wf-contrast-light-muted: #a9bed3;
    --wf-contrast-dark: #071a38;
    --wf-contrast-dark-muted: #526a84;
}

/* Public homepage: midnight sections and cards. */
.wf-public-home {
    color: var(--wf-contrast-light);
}

.wf-public-home :where(
    .wf-hero,
    .wf-trust-strip,
    .wf-stats,
    .wf-intro,
    .wf-journey,
    .wf-plan-benefits,
    .wf-why,
    .wf-success,
    .wf-testimonials,
    .wf-certificates,
    .wf-platform,
    .wf-faq-section,
    .wf-support,
    .wf-payouts,
    .wf-final-cta,
    .wf-footer,
    .wf-feature-showcase__stage,
    .wf-selector__summary
) :where(h1, h2, h3, h4, h5, h6, strong, b, dt, dd) {
    color: var(--wf-contrast-light);
}

.wf-public-home :where(
    .wf-hero,
    .wf-trust-strip,
    .wf-stats,
    .wf-intro,
    .wf-journey,
    .wf-plan-benefits,
    .wf-why,
    .wf-success,
    .wf-testimonials,
    .wf-certificates,
    .wf-platform,
    .wf-faq-section,
    .wf-support,
    .wf-payouts,
    .wf-final-cta,
    .wf-footer,
    .wf-feature-showcase__stage,
    .wf-selector__summary
) :where(p, small, time, blockquote, figcaption) {
    color: var(--wf-contrast-light-muted);
}

.wf-public-home :where(.wf-heading, .wf-section-copy) > p,
.wf-public-home .wf-check-list small,
.wf-public-home .wf-stats article > :where(span, small),
.wf-public-home .wf-plan-benefits article small,
.wf-public-home .wf-step-card p,
.wf-public-home .wf-success-card p,
.wf-public-home .wf-review-card p,
.wf-public-home .wf-support-card p,
.wf-public-home .wf-faq__item p,
.wf-public-home .wf-footer :where(p, small, a) {
    color: var(--wf-contrast-light-muted);
}

.wf-public-home :where(
    .wf-stats article,
    .wf-plan-benefits article,
    .wf-step-card,
    .wf-success-card,
    .wf-review-card,
    .wf-support-card,
    .wf-faq__item,
    .wf-certificate-preview,
    .wf-platform__card
) :where(h2, h3, h4, strong, b) {
    color: var(--wf-contrast-light);
}

.wf-public-home .wf-payouts :where(strong, b, h2, h3),
.wf-public-home .wf-final-cta :where(h2, strong),
.wf-public-home .wf-footer :where(h2, h3, h4, strong) {
    color: #fff;
}

/* Challenge selector contains intentionally light cards inside the dark homepage. */
.wf-public-home :where(
    .wf-selector-toolbar,
    .wf-category-tabs button,
    .wf-selector-utilities button,
    .wf-selector-utilities a,
    .wf-model-cards,
    .wf-model-cards > button,
    .wf-account-cards > button,
    .wf-selector-detail,
    .wf-rule-column,
    .wf-order-summary,
    .wf-selector-modal,
    .wf-feature-showcase__choices button,
    .wf-terminal
) {
    color: var(--wf-contrast-dark);
}

.wf-public-home :where(
    .wf-model-cards > button,
    .wf-account-cards > button,
    .wf-selector-detail,
    .wf-rule-column,
    .wf-order-summary,
    .wf-selector-modal,
    .wf-feature-showcase__choices button,
    .wf-terminal
) :where(h2, h3, h4, strong, b, dt, dd, label) {
    color: var(--wf-contrast-dark);
}

.wf-public-home :where(
    .wf-model-cards > button,
    .wf-account-cards > button,
    .wf-selector-detail,
    .wf-rule-column,
    .wf-order-summary,
    .wf-selector-modal,
    .wf-feature-showcase__choices button,
    .wf-terminal
) :where(p, small, time) {
    color: var(--wf-contrast-dark-muted);
}

.wf-public-home .wf-selector__summary :where(h3, h4, strong, b, dt, dd) {
    color: var(--wf-contrast-light);
}

.wf-public-home .wf-selector__summary :where(p, small, span) {
    color: var(--wf-contrast-light-muted);
}

.wf-public-home :where(input, select, textarea) {
    color: var(--wf-contrast-dark);
}

.wf-public-home :where(input, textarea)::placeholder {
    color: #6f8297;
    opacity: 1;
}

.wf-public-home .wf-button:not(.wf-button--ghost),
.wf-public-home .wf-selector__tabs button.active,
.wf-public-home .wf-size-list button.active {
    color: #fff;
}

/* Trader portal: light modules. */
.trader-portal-page:not(.dashboard-command-page) .dashboard-main,
.trader-portal-page:not(.dashboard-command-page) .dashboard-content {
    color: var(--wf-contrast-dark);
}

.trader-portal-page:not(.dashboard-command-page) :where(
    .dashboard-card,
    .module-card,
    .glass-card,
    .metric-card,
    .dashboard-payout-network,
    .dashboard-payout-card
) :where(h1, h2, h3, h4, strong, b, dt, dd) {
    color: var(--wf-contrast-dark);
}

.trader-portal-page:not(.dashboard-command-page) :where(
    .dashboard-card,
    .module-card,
    .glass-card,
    .metric-card,
    .dashboard-payout-network,
    .dashboard-payout-card
) :where(p, small, time) {
    color: var(--wf-contrast-dark-muted);
}

.trader-portal-page:not(.dashboard-command-page) :where(input, select, textarea) {
    color: var(--wf-contrast-dark);
}

.trader-portal-page:not(.dashboard-command-page) :where(input, textarea)::placeholder {
    color: #71849a;
    opacity: 1;
}

/* Trader command center: dark navigation, panels and cards. */
.dashboard-command-page .dashboard-shell--command {
    color: var(--wf-contrast-light);
}

.dashboard-command-page .dashboard-shell--command :where(
    .dashboard-main,
    .dashboard-sidebar,
    .dashboard-command-hero,
    .dashboard-market-deck,
    .dashboard-market-node,
    .dashboard-command-stat,
    .dashboard-card,
    .glass-card,
    .metric-card,
    .module-card,
    .dashboard-payout-network,
    .dashboard-payout-card
) :where(h1, h2, h3, h4, h5, h6, strong, b, dt, dd) {
    color: var(--wf-contrast-light);
}

.dashboard-command-page .dashboard-shell--command :where(
    .dashboard-main,
    .dashboard-sidebar,
    .dashboard-command-hero,
    .dashboard-market-deck,
    .dashboard-market-node,
    .dashboard-command-stat,
    .dashboard-card,
    .glass-card,
    .metric-card,
    .module-card,
    .dashboard-payout-network,
    .dashboard-payout-card
) :where(p, small, time, label) {
    color: var(--wf-contrast-light-muted);
}

.dashboard-command-page .dashboard-shell--command :where(input, select, textarea) {
    color: var(--wf-contrast-light);
    background-color: #071321;
}

.dashboard-command-page .dashboard-shell--command :where(input, textarea)::placeholder {
    color: #8399ae;
    opacity: 1;
}

/* Authentication uses separate light trader and dark CRM surfaces. */
.trader-auth-page .auth-form-wrap {
    color: var(--wf-contrast-dark);
}

.trader-auth-page .auth-form-wrap :where(h1, h2, h3, strong, label) {
    color: var(--wf-contrast-dark);
}

.trader-auth-page .auth-form-wrap :where(p, small) {
    color: var(--wf-contrast-dark-muted);
}

.admin-auth-page :where(.auth-form-wrap, .auth-visual-card, .auth-visual blockquote) {
    color: var(--wf-contrast-light);
}

.admin-auth-page :where(.auth-form-wrap, .auth-visual-card) :where(h1, h2, h3, strong, label) {
    color: var(--wf-contrast-light);
}

.admin-auth-page :where(.auth-form-wrap, .auth-visual-card) :where(p, small) {
    color: var(--wf-contrast-light-muted);
}

.admin-auth-page :where(input, select, textarea) {
    color: var(--wf-contrast-light);
}

/* CRM: retain the dark command-center design with dependable text contrast. */
.crm-portal-page :where(.admin-sidebar, .admin-main, .admin-topbar, .admin-content) {
    color: var(--wf-contrast-light);
}

.crm-portal-page :where(
    .admin-panel,
    .admin-card,
    .admin-table-card,
    .dashboard-card,
    .row-editor,
    .setting-edit-panel,
    dialog,
    .modal
) :where(h1, h2, h3, h4, h5, h6, strong, b, dt, dd) {
    color: var(--wf-contrast-light);
}

.crm-portal-page :where(
    .admin-panel,
    .admin-card,
    .admin-table-card,
    .dashboard-card,
    .row-editor,
    .setting-edit-panel,
    dialog,
    .modal
) :where(p, small, time, label) {
    color: var(--wf-contrast-light-muted);
}

.crm-portal-page :where(.admin-table, .data-table) th {
    color: #9db1c4;
}

.crm-portal-page :where(.admin-table, .data-table) td {
    color: #d8e5f1;
}

.crm-portal-page :where(input, select, textarea) {
    color: var(--wf-contrast-light);
}

.crm-portal-page :where(input, textarea)::placeholder {
    color: #8397aa;
    opacity: 1;
}

/* Live chat is always a light surface, even when mounted on a dark page. */
.lft-chat,
.lft-chat__panel,
.lft-chat__content,
.lft-chat__footer {
    color: var(--wf-contrast-dark);
    color-scheme: light;
}

.lft-chat :where(
    .lft-chat__launcher,
    .lft-chat__welcome-bubble,
    .lft-chat__profile-form,
    .lft-chat__profile-card,
    .lft-chat__message-bubble,
    .lft-chat__composer
) :where(strong, b, label) {
    color: var(--wf-contrast-dark);
}

.lft-chat :where(
    .lft-chat__launcher,
    .lft-chat__welcome-bubble,
    .lft-chat__profile-form,
    .lft-chat__profile-card,
    .lft-chat__message-bubble,
    .lft-chat__composer
) :where(p, small, time) {
    color: var(--wf-contrast-dark-muted);
}

.lft-chat__header :where(strong, b),
.lft-chat__message--visitor .lft-chat__message-bubble :where(p, strong, small) {
    color: #fff;
}

.lft-chat__header :where(small, span) {
    color: #dbeeff;
}

.lft-chat :where(input, textarea) {
    color: var(--wf-contrast-dark);
}

.lft-chat :where(input, textarea)::placeholder {
    color: #71849a;
    opacity: 1;
}

/* High-specificity repairs for components that carry legacy hard-coded colors. */
.wf-public-home .wf-success-card > header strong,
.wf-public-home .wf-success-card > div strong,
.wf-public-home .wf-review-card footer strong {
    color: var(--wf-contrast-light);
}

.wf-public-home .wf-success-card > header small,
.wf-public-home .wf-success-card > div :where(span, small),
.wf-public-home .wf-review-card footer small {
    color: var(--wf-contrast-light-muted);
}

.wf-public-home .wf-review-card blockquote {
    color: #d8e8f6;
}

.wf-public-home .wf-payout-process small,
.wf-public-home .wf-payout-wall small,
.wf-public-home .wf-payout-wall time,
.wf-public-home .wf-payout-card :where(span, small) {
    color: #b3c8dc;
}

.wf-public-home .wf-payout-wall strong,
.wf-public-home .wf-payout-wall b,
.wf-public-home .wf-payout-card strong {
    color: #fff;
}

.wf-public-home .wf-model-cards > button strong,
.wf-public-home .wf-account-cards > button strong,
.wf-public-home .wf-rule-column h4,
.wf-public-home .wf-rule-column dd,
.wf-public-home .wf-order-summary h4,
.wf-public-home .wf-order-summary dd,
.wf-public-home .wf-selector-detail__header > div strong,
.wf-public-home .wf-feature-showcase__choices button strong,
.wf-public-home .wf-selector-modal :where(h2, h3, h4, strong) {
    color: var(--wf-contrast-dark);
}

.wf-public-home .wf-model-cards > button small,
.wf-public-home .wf-account-cards > button small,
.wf-public-home .wf-rule-column dt,
.wf-public-home .wf-order-summary dt,
.wf-public-home .wf-selector-detail__header p,
.wf-public-home .wf-selector-detail__header > div span,
.wf-public-home .wf-feature-showcase__choices button small,
.wf-public-home .wf-selector-modal :where(p, small) {
    color: var(--wf-contrast-dark-muted);
}

.wf-public-home .wf-order-summary dl .total :where(dt, dd) {
    color: #0b63d1;
}

.wf-public-home .wf-model-cards > button > span,
.wf-public-home .wf-account-cards > button > span,
.wf-public-home .wf-order-summary > span {
    color: #0b63d1;
}

.dashboard-command-page .dashboard-shell--command .dashboard-command-stat :where(span, small),
.dashboard-command-page .dashboard-shell--command .dashboard-market-node :where(span, small, p),
.dashboard-command-page .dashboard-shell--command .dashboard-market-deck :where(span, small, p),
.dashboard-command-page .dashboard-shell--command .recent-payouts :where(span, small, time),
.dashboard-command-page .dashboard-shell--command .next-payout :where(span, small, p) {
    color: var(--wf-contrast-light-muted);
}

.dashboard-command-page .dashboard-shell--command .recent-payouts :where(strong, b),
.dashboard-command-page .dashboard-shell--command .next-payout :where(strong, b) {
    color: var(--wf-contrast-light);
}

.lft-chat__security-warning,
.lft-chat__composer-meta,
.lft-chat__prompt-label,
.lft-chat__message-meta,
.lft-chat__typing {
    color: #526a84;
}

.lft-chat__topics button,
.lft-chat__message-actions button,
.lft-chat__handoff {
    color: #0b57b7;
}

@media (forced-colors: active) {
    .wf-public-home,
    .dashboard-command-page,
    .trader-portal-page,
    .crm-portal-page,
    .auth-page,
    .lft-chat {
        forced-color-adjust: auto;
    }
}
