/* Codex seasonal skins: decorative only, never intercept interaction. */
body[class*="codex-theme-"] {
    --season-accent:#aaa;
    --season-soft:rgba(255,255,255,.08);
    --season-button:#4a75c8;
    --season-button-border:#5d84d0;
    --season-button-hover:#3f68b7;
    --season-nav-active:rgba(74,117,200,.16);
}
body.codex-theme-spring {
    --season-accent:#78c98d;
    --season-soft:rgba(120,201,141,.18);
    --season-button:#4f9f68;
    --season-button-border:#62b17a;
    --season-button-hover:#438a5a;
    --season-nav-active:rgba(79,159,104,.18);
}
body.codex-theme-summer {
    --season-accent:#f1b84b;
    --season-soft:rgba(241,184,75,.17);
    --season-button:#d69724;
    --season-button-border:#e7aa38;
    --season-button-hover:#bd821a;
    --season-nav-active:rgba(214,151,36,.18);
}
body.codex-theme-autumn {
    --season-accent:#c87532;
    --season-soft:rgba(200,117,50,.20);
    --season-button:#b65f24;
    --season-button-border:#ca7131;
    --season-button-hover:#994c1b;
    --season-nav-active:rgba(182,95,36,.20);
}
body.codex-theme-winter {
    --season-accent:#78b9dc;
    --season-soft:rgba(120,185,220,.16);
    --season-button:#4b8db8;
    --season-button-border:#64a5ce;
    --season-button-hover:#397ba7;
    --season-nav-active:rgba(75,141,184,.18);
}
body.codex-theme-christmas {
    --season-accent:#c23d43;
    --season-soft:rgba(194,61,67,.16);
    --season-button:#b9363d;
    --season-button-border:#cf4c52;
    --season-button-hover:#9f2b31;
    --season-nav-active:rgba(185,54,61,.18);
}

/* Seasonal pages must grow with their real content instead of stopping at 100vh. */
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .wrapper,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .main-panel {
    height:auto;
    min-height:100vh;
}

html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .main-header,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .sidebar,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .card {
    transition:border-color .25s ease,box-shadow .25s ease,background-color .25s ease;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .card {
    border-color:var(--season-soft);
    box-shadow:0 3px 18px var(--season-soft);
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .page-title,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .card-title {
    text-shadow:0 0 18px var(--season-soft);
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-primary {
    background-color:var(--season-button)!important;
    border-color:var(--season-button-border)!important;
    box-shadow:0 4px 14px var(--season-soft);
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-primary:hover,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-primary:focus,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-primary:active {
    background-color:var(--season-button-hover)!important;
    border-color:var(--season-button-border)!important;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-outline-primary {
    color:var(--season-accent)!important;
    border-color:var(--season-button-border)!important;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .btn-outline-primary:hover {
    color:#fff!important;
    background-color:var(--season-button)!important;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .badge-primary {
    background-color:var(--season-button)!important;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .nav-item.active>a {
    background-color:var(--season-nav-active)!important;
    box-shadow:inset 3px 0 0 var(--season-accent),0 4px 14px var(--season-soft);
}

html:not(.codex-seasonal-theme-disabled) body.codex-theme-spring .main-panel { background-image:radial-gradient(circle at 85% 8%,rgba(255,184,210,.18),transparent 30%),linear-gradient(145deg,rgba(87,170,105,.12),rgba(245,174,202,.07)); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-spring .sidebar { box-shadow:inset -1px 0 0 rgba(121,201,141,.26),0 0 28px rgba(105,183,126,.10); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-summer .main-panel { background-image:radial-gradient(circle at 92% 5%,rgba(255,207,91,.14),transparent 25%),linear-gradient(145deg,rgba(238,158,43,.07),rgba(64,158,133,.05)); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-autumn .main-panel { background-image:radial-gradient(circle at 90% 7%,rgba(210,104,35,.22),transparent 30%),linear-gradient(145deg,rgba(118,65,31,.15),rgba(193,128,47,.09)); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-autumn .sidebar { box-shadow:inset -1px 0 0 rgba(205,118,49,.28),0 0 28px rgba(119,64,31,.12); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-winter .main-panel { background-image:linear-gradient(145deg,rgba(120,185,220,.09),rgba(225,241,250,.04)); }
html:not(.codex-seasonal-theme-disabled) body.codex-theme-christmas .main-panel { background-image:radial-gradient(circle at 90% 7%,rgba(195,47,55,.12),transparent 26%),linear-gradient(145deg,rgba(24,110,67,.09),rgba(203,161,57,.06)); }

/* Optional themed banner managed from the Codex admin. */
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .main-header.codex-theme-banner {
    background-color:#232323!important;
    background-image:linear-gradient(90deg,rgba(20,20,20,.82),rgba(20,20,20,.56),rgba(20,20,20,.82)),var(--codex-theme-banner-image)!important;
    background-position:center!important;
    background-repeat:no-repeat!important;
    background-size:cover!important;
}
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .main-header.codex-theme-banner .logo-header,
html:not(.codex-seasonal-theme-disabled) body[class*="codex-theme-"] .main-header.codex-theme-banner .navbar-header {
    background-color:transparent!important;
    background-image:none!important;
}

/* Christmas gets a second green accent on secondary interface buttons. */
html:not(.codex-seasonal-theme-disabled) body.codex-theme-christmas .btn-secondary {
    background-color:#2f744b!important;
    border-color:#3c895b!important;
}
html:not(.codex-seasonal-theme-disabled) body.codex-theme-christmas .btn-secondary:hover,
html:not(.codex-seasonal-theme-disabled) body.codex-theme-christmas .btn-secondary:focus {
    background-color:#285f3f!important;
}

.codex-season-layer { position:fixed;inset:0;z-index:9999;overflow:hidden;pointer-events:none; }
html.codex-seasonal-theme-disabled .codex-season-layer { display:none!important; }
.season-particle { position:absolute;display:block; }
.spring-petal { top:-3vh;width:var(--p-size);height:8px;border-radius:70% 20% 70% 20%;background:rgba(255,180,205,.78);box-shadow:0 0 6px rgba(255,205,220,.32);animation:season-fall var(--p-duration) linear infinite;animation-delay:var(--p-delay); }
.spring-petal:nth-child(3n) { background:rgba(238,238,180,.74); }
.spring-petal:nth-child(4n) { background:rgba(168,222,163,.72); }
.summer-sun { position:absolute;right:-58px;top:-68px;width:210px;height:210px;border-radius:50%;background:radial-gradient(circle,rgba(255,220,116,.16) 0,rgba(255,185,62,.06) 40%,transparent 68%);filter:blur(2px); }
.summer-mote { width:var(--p-size);height:var(--p-size);border-radius:50%;background:rgba(255,218,105,.64);box-shadow:0 0 8px rgba(255,192,66,.58);animation:summer-glimmer var(--p-duration) ease-in-out infinite;animation-delay:var(--p-delay); }
.autumn-leaf { top:-4vh;color:rgba(213,117,48,.82);font-size:var(--p-size);text-shadow:0 0 6px rgba(112,58,24,.40);animation:season-fall var(--p-duration) linear infinite;animation-delay:var(--p-delay); }
.autumn-leaf.leaf-1 { color:rgba(181,73,37,.82); }
.autumn-leaf.leaf-2 { color:rgba(224,157,56,.82); }
.winter-snowflake,.christmas-snowflake { top:-2rem;color:rgba(235,247,255,.72);font-size:var(--p-size);filter:drop-shadow(0 0 3px rgba(160,210,240,.30));animation:season-fall var(--p-duration) linear infinite;animation-delay:var(--p-delay); }
.christmas-lights { position:absolute;top:0;left:0;right:0;height:38px;display:flex;justify-content:space-around;border-top:3px solid rgba(36,88,51,.72);transform:translateY(4px); }
.christmas-bulb { width:9px;height:13px;border-radius:50% 50% 55% 55%;background:#e14b4b;box-shadow:0 0 8px #e14b4b;animation:christmas-twinkle 2.6s ease-in-out infinite alternate; }
.christmas-bulb:before { content:"";display:block;width:5px;height:4px;margin:-4px auto 0;background:#315f3d; }
.christmas-bulb.bulb-1 { background:#e5b64b;box-shadow:0 0 8px #e5b64b;animation-delay:-.6s; }
.christmas-bulb.bulb-2 { background:#63b879;box-shadow:0 0 8px #63b879;animation-delay:-1.1s; }
.christmas-bulb.bulb-3 { background:#e8e5ca;box-shadow:0 0 8px #fff;animation-delay:-1.6s; }
.christmas-snowflake { color:rgba(255,224,132,.64); }

.codex-theme-banner-preview {
    display:block;
    width:100%;
    height:110px;
    object-fit:cover;
    border:1px solid rgba(127,127,127,.24);
}
.codex-theme-banner-placeholder {
    min-height:110px;
    border:1px dashed rgba(127,127,127,.38);
    background:rgba(127,127,127,.06);
}

@keyframes season-fall { 0%{transform:translate3d(0,-6vh,0) rotate(0);opacity:0}10%{opacity:.78}100%{transform:translate3d(var(--p-drift,25px),106vh,0) rotate(300deg);opacity:.12} }
@keyframes summer-glimmer { 0%,100%{transform:translateY(0) scale(.65);opacity:.10}50%{transform:translateY(-12px) scale(1.12);opacity:.66} }
@keyframes christmas-twinkle { from{opacity:.44;filter:brightness(.82)}to{opacity:.92;filter:brightness(1.2)} }

@media (prefers-reduced-motion:reduce) {
    .season-particle,.christmas-bulb { animation:none!important; }
    .spring-petal,.autumn-leaf,.winter-snowflake,.christmas-snowflake { display:none; }
}
