/* VoucherGratis Patch 035k — Manual Light/Dark + Global Readability Hardening
 * Manual only: default Light, persisted in vg-theme. Never follows system color scheme.
 */

:root,
html[data-theme="light"] {
    color-scheme: light !important;
    --vg-bg: #F8FAFC;
    --vg-surface: #FFFFFF;
    --vg-surface-raised: #FFFFFF;
    --vg-surface-subtle: #F1F5F9;
    --vg-text-primary: #0F172A;
    --vg-text-secondary: #475569;
    --vg-text-muted: #64748B;
    --vg-text-disabled: #94A3B8;
    --vg-border: #E2E8F0;
    --vg-border-strong: #CBD5E1;
    --vg-primary-soft: #FFF7ED;
    --vg-success-soft: #F0FDF4;
    --vg-warning-soft: #FFFBEB;
    --vg-danger-soft: #FEF2F2;
    --vg-info-soft: #EFF6FF;
    --vg-theme-overlay: rgba(15,23,42,.56);
    --vg-theme-focus-ring: #04184D;
    --vg-theme-focus-offset: #FFFFFF;
}

html[data-theme="dark"] {
    color-scheme: dark !important;
    --vg-bg: #080E1C;
    --vg-surface: #0F172A;
    --vg-surface-raised: #182235;
    --vg-surface-subtle: #111B2D;
    --vg-text-primary: #F8FAFC;
    --vg-text-secondary: #CBD5E1;
    --vg-text-muted: #A7B4C7;
    --vg-text-disabled: #718096;
    --vg-border: #2B3A50;
    --vg-border-strong: #43536A;
    --vg-primary-soft: rgba(244,90,7,.16);
    --vg-success: #4ADE80;
    --vg-success-soft: rgba(34,197,94,.15);
    --vg-warning: #FBBF24;
    --vg-warning-soft: rgba(245,158,11,.16);
    --vg-danger: #F87171;
    --vg-danger-soft: rgba(239,68,68,.15);
    --vg-info: #60A5FA;
    --vg-info-soft: rgba(59,130,246,.16);
    --vg-theme-overlay: rgba(2,6,23,.72);
    --vg-theme-focus-ring: #FDBA74;
    --vg-theme-focus-offset: #080E1C;
}

html,
body.vg-body,
body.vg-public-body {
    background: var(--vg-bg) !important;
    color: var(--vg-text-primary);
}

body.vg-body,
body.vg-public-body,
input,
select,
textarea,
button {
    color-scheme: inherit;
}

/* Shared surfaces: preserve module hierarchy while preventing white-on-light / dark-on-dark regressions. */
:where(
    .vg-card,
    .vg-section-card,
    .vg-summary-card,
    .vg-metric-card,
    .vg-hero-panel,
    .vg-filter-bar,
    .vg-dropdown__panel,
    .vg-account-dropdown__panel,
    .vg-modal__panel,
    .vg-bottom-sheet__panel,
    .vg-action-sheet,
    .vg-empty-state,
    .vg-campaign-panel,
    .vg-campaign-filter-panel,
    .vg-campaign-control-surface,
    .vg-campaign-mobile-card,
    .vg-home-context,
    .vg-home-filter,
    .vg-home-pulse,
    .vg-home-kpi,
    .vg-op-card,
    .vg-op-panel,
    .vg-op-security,
    .vg-op-note
) {
    border-color: var(--vg-border);
    color: var(--vg-text-primary);
}

html[data-theme="dark"] :where(
    .vg-card,
    .vg-section-card,
    .vg-summary-card,
    .vg-metric-card,
    .vg-hero-panel,
    .vg-filter-bar,
    .vg-dropdown__panel,
    .vg-account-dropdown__panel,
    .vg-modal__panel,
    .vg-bottom-sheet__panel,
    .vg-action-sheet,
    .vg-empty-state,
    .vg-campaign-panel,
    .vg-campaign-filter-panel,
    .vg-campaign-control-surface,
    .vg-campaign-mobile-card,
    .vg-home-context,
    .vg-home-filter,
    .vg-home-pulse,
    .vg-home-kpi,
    .vg-op-card,
    .vg-op-panel,
    .vg-op-security,
    .vg-op-note
) {
    background-color: var(--vg-surface) !important;
}

html[data-theme="dark"] :where(
    .vg-input,
    .vg-textarea,
    .vg-msg-input,
    .vg-msg-select,
    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
    select,
    textarea
) {
    border-color: var(--vg-border-strong);
    background-color: var(--vg-surface-raised);
    color: var(--vg-text-primary);
}

html[data-theme="dark"] :where(input,textarea)::placeholder {
    color: var(--vg-text-muted);
    opacity: 1;
}

html[data-theme="dark"] :where(.vg-button--secondary,.vg-button--ghost,.vg-dropdown__item,.vg-action-sheet__item) {
    color: var(--vg-text-primary);
}

html[data-theme="dark"] :where(.vg-button--secondary,.vg-button--ghost) {
    border-color: var(--vg-border-strong);
    background: var(--vg-surface-raised);
}

html[data-theme="dark"] :where(.vg-button--secondary,.vg-button--ghost,.vg-dropdown__item,.vg-action-sheet__item):hover {
    background: var(--vg-surface-subtle);
}

html[data-theme="dark"] :where(.vg-table-wrap,.vg-campaign-table-wrap,table) {
    border-color: var(--vg-border);
    background: var(--vg-surface);
    color: var(--vg-text-primary);
}

html[data-theme="dark"] :where(th) {
    border-color: var(--vg-border);
    background: var(--vg-surface-subtle);
    color: var(--vg-text-secondary);
}

html[data-theme="dark"] :where(td) {
    border-color: var(--vg-border);
    color: var(--vg-text-primary);
}

html[data-theme="dark"] :where(.vg-sidebar__brand,.vg-topbar__mobile-brand) {
    background: #FFFFFF !important;
}

/* Keep branded cashier hero deliberately dark in either theme; secondary action remains readable. */
html[data-theme="dark"] .vg-home-cashier-hero__actions .vg-button--secondary {
    border-color: var(--vg-border-strong);
    background: var(--vg-surface-raised);
    color: var(--vg-text-primary);
}

/* Auth and error pages inherit the same manual preference. */
html[data-theme="dark"] .vg-auth__card,
html[data-theme="dark"] .vg032c-auth-card {
    border-color: var(--vg-border);
    background: var(--vg-surface) !important;
    color: var(--vg-text-primary);
    box-shadow: 0 24px 72px rgba(0,0,0,.34);
}

html[data-theme="dark"] .vg-auth::before {
    background: rgba(244,90,7,.09);
}

html[data-theme="dark"] .vg-auth::after {
    background: rgba(96,165,250,.06);
}

/* Public customer experience gets semantic variables instead of fixed light-only colors. */
:root,
html[data-theme="light"] {
    --vg027-success: #15803D;
    --vg027-success-soft: #F0FDF4;
    --vg027-info: #1D4ED8;
    --vg027-info-soft: #EFF6FF;
    --vg027-warning: #B45309;
    --vg027-warning-soft: #FFFBEB;
    --vg027-danger: #B91C1C;
    --vg027-danger-soft: #FEF2F2;
    --vg027-neutral: #475569;
    --vg027-neutral-soft: #F8FAFC;
    --vg027-ink: #0F172A;
    --vg027-muted: #64748B;
    --vg027-line: #E2E8F0;
    --vg027-surface: #FFFFFF;
    --vg027-page: #F8FAFC;
}

html[data-theme="dark"] {
    --vg027-success: #4ADE80;
    --vg027-success-soft: rgba(34,197,94,.15);
    --vg027-info: #60A5FA;
    --vg027-info-soft: rgba(59,130,246,.16);
    --vg027-warning: #FBBF24;
    --vg027-warning-soft: rgba(245,158,11,.16);
    --vg027-danger: #F87171;
    --vg027-danger-soft: rgba(239,68,68,.15);
    --vg027-neutral: #CBD5E1;
    --vg027-neutral-soft: #111B2D;
    --vg027-ink: #F8FAFC;
    --vg027-muted: #A7B4C7;
    --vg027-line: #2B3A50;
    --vg027-surface: #0F172A;
    --vg027-page: #080E1C;
}

.vg027-public-body,
.vg035f-public-body {
    background: var(--vg027-page) !important;
    color: var(--vg027-ink);
}

html[data-theme="dark"] .vg035f-public-body {
    --vg035f-ink: #F8FAFC;
    --vg035f-muted: #A7B4C7;
    --vg035f-soft: #111B2D;
    --vg035f-line: #2B3A50;
    --vg035f-shadow: 0 24px 64px rgba(0,0,0,.28);
}

html[data-theme="dark"] :where(
    .vg027-public-frame > .vg-public-card,
    .vg027-public-facts > div,
    .vg027-voucher-facts > div,
    .vg027-disclosure,
    .vg027-public-form .vg-input,
    .vg027-qr-section,
    .vg035b-public-facts > div,
    .vg035b-requirements li,
    .vg035e-share,
    .vg035e-share__button,
    .vg035f-how-it-works li
) {
    border-color: var(--vg027-line) !important;
    background: var(--vg027-surface) !important;
    color: var(--vg027-ink) !important;
}

html[data-theme="dark"] :where(
    .vg027-public-heading h1,
    .vg035-benefit__title,
    .vg035b-section-heading h2,
    .vg035e-share__copy h2,
    .vg035f-how-it-works strong,
    .vg035b-requirements strong,
    .vg035b-terms-copy,
    .vg027-public-facts dd,
    .vg027-voucher-facts dd
) {
    color: var(--vg027-ink) !important;
}

html[data-theme="dark"] :where(
    .vg027-public-heading p,
    .vg027-status-context,
    .vg027-powered-by,
    .vg027-powered-by strong,
    .vg035-benefit p,
    .vg035-outlet-more,
    .vg035b-requirements small,
    .vg035e-share__status,
    .vg035f-how-it-works small,
    .vg035b-terms-copy
) {
    color: var(--vg027-muted) !important;
}

html[data-theme="dark"] .vg027-state__icon,
html[data-theme="dark"] .vg027-journey__dot,
html[data-theme="dark"] .vg027-journey__text {
    background: var(--vg027-surface) !important;
}

html[data-theme="dark"] .vg027-qr-frame img {
    border-color: var(--vg027-line);
    background: #FFFFFF;
}

html[data-theme="dark"] .vg035-benefit,
html[data-theme="dark"] .vg035f-benefit {
    border-color: color-mix(in srgb,var(--campaign-primary,#F45A07) 42%,var(--vg027-line)) !important;
    background: color-mix(in srgb,var(--campaign-primary,#F45A07) 12%,var(--vg027-surface)) !important;
}

html[data-theme="dark"] .vg035f-public-card {
    border-color: var(--vg027-line) !important;
    background: var(--vg027-surface) !important;
    box-shadow: var(--vg035f-shadow) !important;
}

html[data-theme="dark"] .vg035f-campaign-visual {
    background: #111B2D !important;
}

html[data-theme="dark"] .vg035f-status-row .vg027-status-context {
    border-color: var(--vg027-line);
    background: var(--vg027-neutral-soft);
    color: var(--vg027-muted) !important;
}

html[data-theme="dark"] .vg035d-public-body {
    --vg035d-focus: var(--vg-theme-focus-ring);
}

html[data-theme="dark"] .vg035d-public-body :where(a,button,summary,[tabindex]):focus-visible,
html[data-theme="dark"] .vg035d-public-body .vg030-skip-link:focus-visible {
    box-shadow: 0 0 0 2px var(--vg-theme-focus-offset) !important;
}

/* Public manual theme control: intentionally compact and separate from campaign CTA hierarchy. */
.vg035k-public-preferences {
    width: min(100%,760px);
    margin: 0 auto;
    display: flex;
    justify-content: flex-end;
    padding: max(10px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));
}

.vg035k-public-theme-toggle {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid var(--vg027-line,var(--vg-border));
    border-radius: 12px;
    background: color-mix(in srgb,var(--vg027-surface,var(--vg-surface)) 94%,transparent);
    color: var(--vg027-ink,var(--vg-text-primary));
    padding: 0 12px;
    box-shadow: 0 4px 14px rgba(15,23,42,.06);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    cursor: pointer;
}

.vg035k-public-theme-toggle:hover {
    background: var(--vg027-neutral-soft,var(--vg-surface-subtle));
}

.vg035k-public-theme-toggle .vg032a-theme-toggle__icon {
    display: inline-grid;
    place-items: center;
}

.vg035k-public-theme-toggle:focus-visible {
    outline: 3px solid var(--vg-theme-focus-ring) !important;
    outline-offset: 3px !important;
    box-shadow: 0 0 0 2px var(--vg-theme-focus-offset) !important;
}

/* System preference may affect motion/contrast accessibility, never theme choice. */
@media (prefers-reduced-motion: reduce) {
    .vg035k-public-theme-toggle { transition: none !important; }
}

@media (prefers-contrast: more) {
    :where(.vg-card,.vg-section-card,.vg-public-card,.vg027-disclosure,.vg035e-share__button) {
        border-color: currentColor;
    }
}

@media (forced-colors: active) {
    .vg035k-public-theme-toggle {
        forced-color-adjust: auto;
        border: 1px solid ButtonText;
    }
}

@media (max-width: 430px) {
    .vg035k-public-preferences {
        padding-right: max(12px,env(safe-area-inset-right));
        padding-left: max(12px,env(safe-area-inset-left));
    }

    .vg035k-public-theme-toggle {
        min-width: 48px;
        min-height: 48px;
        padding-inline: 12px;
    }
}

/* Final dark-mode readability guards for semantic feedback and Public Campaign supporting copy. */
html[data-theme="dark"] {
    --vg-focus: rgba(253,186,116,.32);
}

html[data-theme="dark"] .vg-validation-summary {
    border-color: color-mix(in srgb,var(--vg-danger) 46%,var(--vg-border)) !important;
    background: var(--vg-danger-soft) !important;
}

html[data-theme="dark"] .vg-validation-summary :where(h3,ul) {
    color: #FCA5A5 !important;
}

html[data-theme="dark"] :where(.vg-alert--info,.vg-notice--info,.vg-banner--info) {
    border-color: color-mix(in srgb,var(--vg-info) 46%,var(--vg-border));
}
html[data-theme="dark"] :where(.vg-alert--success,.vg-notice--success,.vg-banner--success) {
    border-color: color-mix(in srgb,var(--vg-success) 46%,var(--vg-border));
}
html[data-theme="dark"] :where(.vg-alert--warning,.vg-notice--warning,.vg-banner--warning) {
    border-color: color-mix(in srgb,var(--vg-warning) 46%,var(--vg-border));
}
html[data-theme="dark"] :where(.vg-alert--danger,.vg-notice--danger,.vg-notice--error,.vg-banner--danger) {
    border-color: color-mix(in srgb,var(--vg-danger) 46%,var(--vg-border));
}

html[data-theme="dark"] :where(
    .vg035f-details .vg035b-public-facts dt,
    .vg035f-primary-zone > p,
    .vg035-outlet-list span,
    .vg035-outlet-more,
    .vg035f-share .vg035e-share__status,
    .vg035f-how-it-works small
) {
    color: var(--vg027-muted) !important;
}

html[data-theme="dark"] .vg035-outlet-list strong {
    color: var(--vg027-ink) !important;
}
