

:root, [data-bs-theme="light"] {
    --ppusa-theme-primary: #1d58a5;
    --ppusa-theme-secondary: #6c757d;
    --ppusa-theme-bg: #bdc8de;
    --ppusa-theme-card-bg: #ffffff;
    --ppusa-theme-navbar-bg: #15234d;
    --ppusa-theme-navbar-text: #ffffff;
    --ppusa-theme-text: #212529;
    --ppusa-theme-text-muted: #6c757d;
    --ppusa-theme-border: #dee2e6;
    --ppusa-theme-link: var(--bs-primary);
    --ppusa-theme-input-bg: #f8fafc;
    --ppusa-theme-highlight: #0d6efd;
    --ppusa-theme-success: #18634B;
    --ppusa-theme-danger: #a91e2c;
    --ppusa-theme-warning: #F0B400;
    --ppusa-theme-money: #158c5a;
    --ppusa-theme-dropdown-bg: #ffffff;
    --ppusa-theme-tab-active: #1d58a5;
    --ppusa-theme-map-bg: #043a5f;
    --ppusa-theme-logo-filter: none;
    --ppusa-theme-accent: #1d58a5;
    --ppusa-theme-modal-bg: #ffffff;
    --ppusa-theme-modal-text: #212529;
    --ppusa-theme-modal-border: rgba(0,0,0,.175);
    
    --ppusa-alert-success-bg: #18634B;
    --ppusa-alert-success-text: #ffffff;
    --ppusa-alert-success-border: #18634B;
    --ppusa-alert-danger-bg: #a91e2c;
    --ppusa-alert-danger-text: #ffffff;
    --ppusa-alert-danger-border: #a91e2c;
    --ppusa-alert-warning-bg: #F0B400;
    --ppusa-alert-warning-text: #212529;
    --ppusa-alert-warning-border: #c89600;
    --ppusa-alert-info-bg: #cff4fc;
    --ppusa-alert-info-text: #055160;
    --ppusa-alert-info-border: #9eeaf9;
}

[data-bs-theme="dark"] {
    --ppusa-theme-primary: #143c6e;
    --ppusa-theme-secondary: #6c757d;
    --ppusa-theme-bg: #343a48;
    --ppusa-theme-card-bg: #212529;
    --ppusa-theme-navbar-bg: #121a33;
    --ppusa-theme-navbar-text: #ffffff;
    --ppusa-theme-text: #dee2e6;
    --ppusa-theme-text-muted: #7c7e82;
    --ppusa-theme-border: #4a4f5b;
    --ppusa-theme-link: var(--bs-primary);
    --ppusa-theme-input-bg: #232a36;
    --ppusa-theme-highlight: #0d6efd;
    --ppusa-theme-success: #18634B;
    --ppusa-theme-danger: #a91e2c;
    --ppusa-theme-warning: #F0B400;
    --ppusa-theme-money: #24bf7e;
    --ppusa-theme-dropdown-bg: #212529;
    --ppusa-theme-tab-active: #ffffff;
    --ppusa-theme-map-bg: #043a5f;
    --ppusa-theme-logo-filter: none;
    --ppusa-theme-accent: #143c6e;
    --ppusa-theme-modal-bg: #1a2035;
    --ppusa-theme-modal-text: #dee2e6;
    --ppusa-theme-modal-border: #2a3045;
    
    --ppusa-alert-success-bg: #18634B;
    --ppusa-alert-success-text: #ffffff;
    --ppusa-alert-success-border: #18634B;
    --ppusa-alert-danger-bg: #a91e2c;
    --ppusa-alert-danger-text: #ffffff;
    --ppusa-alert-danger-border: #a91e2c;
    --ppusa-alert-warning-bg: #F0B400;
    --ppusa-alert-warning-text: #212529;
    --ppusa-alert-warning-border: #c89600;
    --ppusa-alert-info-bg: #032830;
    --ppusa-alert-info-text: #6edff6;
    --ppusa-alert-info-border: #087990;
}




[data-ppusa-pattern] .ppusa_background::after {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 0;
    opacity: 0;
    animation: ppusa-pattern-fade 0.6s ease-out forwards;
}
@keyframes ppusa-pattern-fade {
    to { opacity: 1; }
}


[data-ppusa-pattern="sparkle"] .ppusa_background::after {
    background-image:
        radial-gradient(circle, rgba(255,255,255,0.18) 0.8px, transparent 0.8px),
        radial-gradient(circle, rgba(255,255,255,0.10) 0.6px, transparent 0.6px),
        radial-gradient(circle, rgba(255,255,255,0.25) 0.5px, transparent 0.5px);
    background-size: 42px 42px, 26px 26px, 63px 63px;
    background-position: 0 0, 13px 17px, 31px 7px;
}


[data-ppusa-pattern="dots"] .ppusa_background::after {
    background-image: radial-gradient(circle, rgba(128,128,128,0.12) 1px, transparent 1px);
    background-size: 20px 20px;
}


[data-ppusa-pattern="grid"] .ppusa_background::after {
    background-image:
        linear-gradient(rgba(128,128,128,0.06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(128,128,128,0.06) 1px, transparent 1px);
    background-size: 28px 28px;
}


[data-ppusa-pattern="diagonal"] .ppusa_background::after {
    background-image: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 14px,
        rgba(128,128,128,0.05) 14px,
        rgba(128,128,128,0.05) 15px
    );
}


[data-ppusa-pattern="waves"] .ppusa_background::after {
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='40' viewBox='0 0 120 40'%3E%3Cpath d='M0 20 Q30 0 60 20 Q90 40 120 20' fill='none' stroke='rgba(128,128,128,0.08)' stroke-width='1'/%3E%3C/svg%3E");
    background-size: 120px 40px;
}


[data-ppusa-pattern="hexagons"] .ppusa_background::after {
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='100' viewBox='0 0 56 100'%3E%3Cpath d='M28 66L0 50V16L28 0l28 16v34L28 66zM28 100L0 84V50l28-16 28 16v34L28 100z' fill='none' stroke='rgba(128,128,128,0.06)' stroke-width='1'/%3E%3C/svg%3E");
    background-size: 56px 100px;
}


[data-ppusa-pattern="rain"] .ppusa_background::after {
    background-image: repeating-linear-gradient(
        105deg,
        transparent,
        transparent 8px,
        rgba(128,128,128,0.06) 8px,
        rgba(128,128,128,0.06) 9px,
        transparent 9px,
        transparent 20px
    ),
    repeating-linear-gradient(
        100deg,
        transparent,
        transparent 14px,
        rgba(128,128,128,0.04) 14px,
        rgba(128,128,128,0.04) 15px,
        transparent 15px,
        transparent 28px
    );
}


[data-ppusa-pattern="crosshatch"] .ppusa_background::after {
    background-image:
        repeating-linear-gradient(
            45deg,
            transparent,
            transparent 10px,
            rgba(128,128,128,0.04) 10px,
            rgba(128,128,128,0.04) 11px
        ),
        repeating-linear-gradient(
            -45deg,
            transparent,
            transparent 10px,
            rgba(128,128,128,0.04) 10px,
            rgba(128,128,128,0.04) 11px
        );
}
