/* Сезонные темы сайта — управляются из админки (api/admin/site_theme.php).
   Эффект намеренно лёгкий: немного частиц, без ярких заливок фона. */

.season-fx {
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 5;
    overflow: hidden;
}

.season-fx span {
    position: absolute;
    top: -10vh;
    left: 0;
    opacity: 0.7;
    will-change: transform;
    animation-name: season-fall;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.08));
}

@keyframes season-fall {
    0% {
        transform: translateY(-10vh) translateX(0) rotate(0deg);
    }
    100% {
        transform: translateY(110vh) translateX(var(--drift, 20px)) rotate(360deg);
    }
}

/* Сезонная замена акцентного цвета сайта (кнопки, ссылки, иконки, активные
   элементы — всё, что использует var(--accent-primary)/--accent-color/--link-color).
   Осенью — тёплый акцент чуть смещается в оранжевый в рамках той же палитры.
   Зимой — сезонный эффект (снег) остаётся декоративным и не переопределяет
   основной тёплый бумажный акцент сайта. */
body.season-autumn {
    --accent-primary: #c4661f;
    --accent-secondary: #a8551c;
    --accent-hover: #d97722;
    --accent-color: #c4661f;
    --link-color: #a8551c;
    --season-accent: #c4661f;
}
body.season-winter {
    --season-accent: #8f4a2a;
}

/* Мобильная панель навигации — лёгкий сезонный оттенок вместо обычного
   стеклянного фона. Только на телефонах/планшетах, где видна нижняя панель. */
@media (max-width: 1173px) {
    body.season-autumn .mobile-nav-glass,
    body.season-autumn .fab {
        background: rgba(255, 138, 61, 0.12);
    }
    html[data-theme="dark"] body.season-autumn .mobile-nav-glass,
    html[data-theme="dark"] body.season-autumn .fab {
        background: rgba(255, 120, 40, 0.16);
    }

    body.season-winter .mobile-nav-glass,
    body.season-winter .fab {
        position: relative;
        overflow: hidden;
        background: rgba(170, 205, 240, 0.22);
    }
    body.season-winter .mobile-nav-glass::after,
    body.season-winter .fab::after {
        content: '';
        position: absolute;
        inset: 0;
        border-radius: inherit;
        pointer-events: none;
        opacity: 0.5;
        background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgNjQiPgo8ZyBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMC43IiBmaWxsPSJub25lIiBvcGFjaXR5PSIwLjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CjxwYXRoIGQ9Ik0xNCA0IEwyNiAxOCBMMjAgMzAgTDMyIDQ0IEwyNiA1OCIvPgo8cGF0aCBkPSJNMjAgMzAgTDM0IDM0Ii8+CjxwYXRoIGQ9Ik02MiAyIEw1NyAxNiBMNzIgMjIgTDY2IDM2IEw3OCA1MCBMNzIgNjIiLz4KPHBhdGggZD0iTTcyIDIyIEw4NiAyNiIvPgo8cGF0aCBkPSJNMTEyIDYgTDEyNiAxOCBMMTE4IDMyIEwxMjggNDYiLz4KPHBhdGggZD0iTTExOCAzMiBMMTA2IDM4Ii8+CjxwYXRoIGQ9Ik0xNTYgNCBMMTUwIDIyIEwxNjQgMjggTDE1OCA0NiBMMTY4IDYwIi8+CjxwYXRoIGQ9Ik0xNjQgMjggTDE3OCAyNCIvPgo8cGF0aCBkPSJNMjAwIDggTDIxMiAyMiBMMjA0IDM2IEwyMTYgNTAgTDIxMCA2MiIvPgo8cGF0aCBkPSJNMjA0IDM2IEwxOTIgNDIiLz4KPHBhdGggZD0iTTIgNTAgTDE0IDU2IEw4IDY0Ii8+CjxwYXRoIGQ9Ik0yMjggMTIgTDIzNiAyNiBMMjI4IDQwIi8+CjwvZz4KPC9zdmc+");
        background-size: 130px 64px;
        background-repeat: repeat;
        mix-blend-mode: overlay;
    }
    /* Плюс в кружке должен быть контрастным на фоне льда в обеих темах */
    body.season-winter .fab {
        color: #123a7a;
        font-weight: 600;
        text-shadow: 0 1px 2px rgba(255, 255, 255, 0.5);
    }
    body.season-winter .mobile-nav-btn.active {
        color: #123a7a;
    }
    html[data-theme="dark"] body.season-winter .mobile-nav-glass,
    html[data-theme="dark"] body.season-winter .fab {
        background: rgba(40, 70, 130, 0.35);
    }
    html[data-theme="dark"] body.season-winter .fab {
        color: #eaf4ff;
        text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
    }
    html[data-theme="dark"] body.season-winter .mobile-nav-btn.active {
        color: #eaf4ff;
    }
    html[data-theme="dark"] body.season-winter .mobile-nav-glass::after,
    html[data-theme="dark"] body.season-winter .fab::after {
        opacity: 0.35;
    }
}

/* Уважаем пользовательскую настройку "отключить анимации" и системную
   настройку уменьшения движения — в этом случае эффект просто не показываем. */
body.perf-no-anim .season-fx,
body.season-fx-off .season-fx {
    display: none;
}

@media (prefers-reduced-motion: reduce) {
    .season-fx { display: none; }
}

@media (max-width: 640px) {
    .season-fx span { opacity: 0.6; }
}
