/* ============================================================
   SEASONAL EFFECTS — Unificato
   Contenuto proveniente da: snow.css + summer.css + fall.css
   NOTA: Le animazioni JS-injected rimangono in seasonal.js
   ============================================================ */


/* ============================================================
   1. WINTER — Neve sulle card (::after pseudo-element)
   ============================================================ */

/* 1. RESTING SNOW ON CARDS - LIGHTER & DRIPPING */
body.seasonal-winter .card,
body.seasonal-winter .total-box,
body.seasonal-winter .mini-stat-card,
body.seasonal-winter .settings-card-group,
body.seasonal-winter .saving-goal-card,
body.seasonal-winter #savings-carousel > div,
body.seasonal-winter #loans-list > div,
body.seasonal-winter #chart-container,
body.seasonal-winter #chart-screen .card {
    overflow: visible !important;
    position: relative !important;
    background-color: var(--card-bg) !important; /* Forza background per coprire eventuale neve dietro */
    z-index: 1; /* Base z-index */
}

body.seasonal-winter #vault-screen .card,
body.seasonal-winter #data-screen .card {
    overflow: hidden !important;
}


/* Gestione bordi arrotondati settings group */
body.seasonal-winter .settings-card-group .settings-row:first-child {
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
}
body.seasonal-winter .settings-card-group .settings-row:last-child {
    border-bottom-left-radius: 20px;
    border-bottom-right-radius: 20px;
}

body.seasonal-winter .card::after, 
body.seasonal-winter .total-box::after, 
body.seasonal-winter .mini-stat-card::after,
body.seasonal-winter .saving-goal-card::after,
body.seasonal-winter #loans-list > div::after,
body.seasonal-winter #chart-container::after,
body.seasonal-winter #chart-screen .card::after {
    content: '';
    animation: none !important; /* Blocca animazioni glow strip che pulserebbero la neve */
    position: absolute;
    top: -3px; 
    left: 0 !important;
    right: 0 !important;
    width: auto !important;
    height: 8px;
    
    background-image: 
        repeating-radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.25) 0, rgba(255, 255, 255, 0.25) 1px, transparent 1px, transparent 4px),
        radial-gradient(8px 8px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%),
        radial-gradient(10px 9px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%),
        radial-gradient(6px 7px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%),
        radial-gradient(12px 8px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%);
    
    background-repeat: repeat-x;
    background-size: 
        16px 8px, 
        16px 8px, 
        22px 8px, 
        12px 8px,
        28px 8px;
        
    background-position: 
        0 0, 
        0 top,
        12px top,
        -4px top,
        20px top;
        
    z-index: 9999; 
    pointer-events: none;
    opacity: 0.8;
    
    filter: url(#snow-goo) drop-shadow(0px 1px 1px rgba(0, 40, 80, 0.08));
}

/* Fix specifico per Settings Group (Header) */
body.seasonal-winter .settings-card-group .settings-row:first-child::after {
    content: '';
    animation: none !important; /* Blocca animazioni glow strip */
    position: absolute;
    top: -2px;
    left: 0;
    right: 0;
    height: 7px;
    
    background-image: 
        repeating-radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.25) 0, rgba(255, 255, 255, 0.25) 1px, transparent 1px, transparent 4px),
        radial-gradient(6px 6px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%),
        radial-gradient(8px 7px at 50% 0%, var(--color-white) 50%, var(--color-white) 90%, transparent 95%);
        
    background-repeat: repeat-x;
    background-size: 
        12px 7px,
        14px 7px, 
        20px 7px;
        
    background-position: 
        0 0,
        0 top,
        8px top;
        
    z-index: 9999;
    pointer-events: none;
    opacity: 0.8;
    
    filter: url(#snow-goo) drop-shadow(0px 1px 1px rgba(0, 40, 80, 0.08));
}


/* ============================================================
   2. SUMMER — Gradiente caldo bordi card + particelle sole
   ============================================================ */

body.seasonal-summer .card,
body.seasonal-summer .total-box,
body.seasonal-summer .mini-stat-card,
body.seasonal-summer .settings-card-group,
body.seasonal-summer .saving-goal-card,
body.seasonal-summer #savings-carousel > div,
body.seasonal-summer #loans-list > div,
body.seasonal-summer #chart-container,
body.seasonal-summer #chart-screen .card {
    overflow: visible !important;
    position: relative !important;
    z-index: 1;
}

body.seasonal-summer .settings-card-group .settings-row:first-child {
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
}
body.seasonal-summer .settings-card-group .settings-row:last-child {
    border-bottom-left-radius: 20px;
    border-bottom-right-radius: 20px;
}

body.seasonal-summer .card::after,
body.seasonal-summer .total-box::after,
body.seasonal-summer .mini-stat-card::after,
body.seasonal-summer .saving-goal-card::after,
body.seasonal-summer #loans-list > div::after,
body.seasonal-summer #chart-container::after,
body.seasonal-summer #chart-screen .card::after {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    border-radius: inherit;
    background: linear-gradient(
        135deg,
        rgba(255, 220, 100, 0.15) 0%,
        rgba(255, 180, 50, 0.05) 30%,
        transparent 50%,
        rgba(255, 200, 80, 0.05) 70%,
        rgba(255, 220, 100, 0.1) 100%
    );
    z-index: -1;
    pointer-events: none;
    opacity: 0.9;
    mask: linear-gradient(var(--color-white) 0 0) content-box, linear-gradient(var(--color-white) 0 0);
    mask-composite: xor;
    mask-composite: exclude;
    -webkit-mask: linear-gradient(var(--color-white) 0 0) content-box, linear-gradient(var(--color-white) 0 0);
    -webkit-mask-composite: xor;
}

body.seasonal-summer .card::before,
body.seasonal-summer .total-box::before,
body.seasonal-summer .mini-stat-card::before,
body.seasonal-summer .saving-goal-card::before,
body.seasonal-summer #loans-list > div::before,
body.seasonal-summer #chart-container::before,
body.seasonal-summer #chart-screen .card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: inherit;
    background: linear-gradient(
        180deg,
        rgba(255, 236, 153, 0.08) 0%,
        rgba(255, 213, 79, 0.03) 40%,
        transparent 70%
    );
    z-index: 0;
    pointer-events: none;
}

body.seasonal-summer .settings-card-group .settings-row:first-child::after,
body.seasonal-summer .settings-card-group .settings-row:first-child::before {
    border-radius: 20px 20px 0 0;
}

/* Escludi vault e account dagli effetti decorativi */
body.seasonal-summer #vault-screen .card::after,
body.seasonal-summer #vault-screen .card::before,
body.seasonal-summer #data-screen .card::after,
body.seasonal-summer #data-screen .card::before,
body.seasonal-summer #data-screen .total-box::after,
body.seasonal-summer #data-screen .total-box::before {
    display: none !important;
}
body.seasonal-summer #vault-screen .card,
body.seasonal-summer #data-screen .card {
    overflow: visible !important;
    position: relative !important;
}

body.seasonal-summer .summer-sun-particle {
    position: fixed;
    bottom: -3vh;
    width: var(--particle-size);
    height: var(--particle-size);
    border-radius: 50%;
    background: radial-gradient(circle at 40% 35%, #fff9c4, #fbbf24);
    pointer-events: none;
    z-index: 9996;
    opacity: 0;
    box-shadow: 0 0 8px rgba(251, 191, 36, 0.35);
    animation: summer-float-up var(--particle-duration) cubic-bezier(0.35, 0.0, 0.45, 1) forwards;
}

@keyframes summer-float-up {
    0% {
        transform: translateY(0) translateX(0) scale(0.1);
        opacity: 0;
    }
    15% {
        opacity: var(--particle-opacity);
    }
    85% {
        opacity: var(--particle-opacity);
    }
    100% {
        transform: translateY(-120vh) translateX(var(--particle-drift)) scale(0.8);
        opacity: 0;
    }
}


/* ============================================================
   3. FALL — Gradiente autunnale bordi card
   ============================================================ */

body.seasonal-fall .card,
body.seasonal-fall .total-box,
body.seasonal-fall .mini-stat-card,
body.seasonal-fall .settings-card-group,
body.seasonal-fall .saving-goal-card,
body.seasonal-fall #savings-carousel > div,
body.seasonal-fall #loans-list > div,
body.seasonal-fall #chart-container,
body.seasonal-fall #chart-screen .card {
    overflow: visible !important;
    position: relative !important;
    z-index: 1;
}

body.seasonal-fall .settings-card-group .settings-row:first-child {
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
}
body.seasonal-fall .settings-card-group .settings-row:last-child {
    border-bottom-left-radius: 20px;
    border-bottom-right-radius: 20px;
}

body.seasonal-fall .card::after,
body.seasonal-fall .total-box::after,
body.seasonal-fall .mini-stat-card::after,
body.seasonal-fall .saving-goal-card::after,
body.seasonal-fall #loans-list > div::after,
body.seasonal-fall #chart-container::after,
body.seasonal-fall #chart-screen .card::after {
    content: '';
    position: absolute;
    top: -2px;
    left: -2px;
    right: -2px;
    bottom: -2px;
    border-radius: inherit;
    background: linear-gradient(
        135deg,
        rgba(234, 88, 12, 0.12) 0%,
        rgba(217, 119, 6, 0.04) 30%,
        transparent 50%,
        rgba(251, 146, 60, 0.04) 70%,
        rgba(234, 88, 12, 0.08) 100%
    );
    z-index: -1;
    pointer-events: none;
    opacity: 0.9;
    mask: linear-gradient(var(--color-white) 0 0) content-box, linear-gradient(var(--color-white) 0 0);
    mask-composite: xor;
    mask-composite: exclude;
    -webkit-mask: linear-gradient(var(--color-white) 0 0) content-box, linear-gradient(var(--color-white) 0 0);
    -webkit-mask-composite: xor;
}

body.seasonal-fall .card::before,
body.seasonal-fall .total-box::before,
body.seasonal-fall .mini-stat-card::before,
body.seasonal-fall .saving-goal-card::before,
body.seasonal-fall #loans-list > div::before,
body.seasonal-fall #chart-container::before,
body.seasonal-fall #chart-screen .card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-radius: inherit;
    background: linear-gradient(
        180deg,
        rgba(255, 237, 213, 0.06) 0%,
        rgba(254, 215, 170, 0.02) 40%,
        transparent 70%
    );
    z-index: 0;
    pointer-events: none;
}

body.seasonal-fall .settings-card-group .settings-row:first-child::after,
body.seasonal-fall .settings-card-group .settings-row:first-child::before {
    border-radius: 20px 20px 0 0;
}

/* Escludi vault e account dagli effetti decorativi */
body.seasonal-fall #vault-screen .card::after,
body.seasonal-fall #vault-screen .card::before,
body.seasonal-fall #data-screen .card::after,
body.seasonal-fall #data-screen .card::before,
body.seasonal-fall #data-screen .total-box::after,
body.seasonal-fall #data-screen .total-box::before {
    display: none !important;
}
body.seasonal-fall #vault-screen .card,
body.seasonal-fall #data-screen .card {
    overflow: visible !important;
    position: relative !important;
}