/* Seasonal themes. Loaded after public-books.css only when a theme is live (or previewed). The colour block itself is an inline :root{} from ThemeService.CssVars. */
html[data-theme] .site-shell::before{background:radial-gradient(ellipse 80% 50% at 50% -20%,var(--glow-1),transparent 55%),radial-gradient(ellipse 40% 40% at 100% 0%,var(--glow-2),transparent 50%),radial-gradient(ellipse 35% 35% at 0% 100%,var(--glow-3),transparent 50%)}
html[data-theme] .brand-mark{box-shadow:0 0 24px rgba(var(--accent-rgb),.4)}
html[data-theme] ::selection{background:rgba(var(--accent-rgb),.35)}
html[data-theme] .btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-soft))}
.brand-mark{position:relative}
.theme-logo-accent{position:absolute;right:-8px;top:-10px;font-size:15px;line-height:1;filter:drop-shadow(0 1px 2px #000);pointer-events:none}

/* Header banner (also allowed on game pages when the theme opts in) */
.theme-banner{position:relative;z-index:41;height:6px}
.theme-banner--bunting{background:repeating-linear-gradient(90deg,var(--theme-b1,#ff7a1a) 0 18px,#2b0f3a 18px 36px)}
.theme-banner--garland{height:14px;background:radial-gradient(circle at 12px 4px,#e23b3b 3.5px,transparent 4px) 0 0/48px 14px,radial-gradient(circle at 36px 6px,#f3d27a 3.5px,transparent 4px) 0 0/48px 14px,radial-gradient(circle at 24px 2px,#3ecf7a 3px,transparent 3.5px) 0 0/48px 14px,linear-gradient(#1d4d36,#1d4d36) 0 2px/100% 2px no-repeat}

/* Particles (built by theme-fx.js; never with reduced motion) */
.theme-particles{position:fixed;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.theme-particles i{position:absolute;border-radius:50%;opacity:.7;animation:theme-fall linear infinite}
.theme-particles--snow i{top:-10px;background:#fff;width:4px;height:4px}
.theme-particles--embers i{bottom:-10px;background:#ff9a3a;width:3px;height:3px;box-shadow:0 0 6px #ff7a1a;animation-name:theme-rise}
@keyframes theme-fall{to{transform:translate(30px,105vh)}}
@keyframes theme-rise{to{transform:translate(-20px,-105vh);opacity:0}}
@media (prefers-reduced-motion:reduce){.theme-particles{display:none}}

/* Admin preview banner */
.theme-preview-banner{position:relative;z-index:42;display:flex;flex-wrap:wrap;gap:.4rem 1rem;align-items:center;justify-content:center;padding:.5rem 1rem;background:repeating-linear-gradient(135deg,#2a1d00 0 14px,#332400 14px 28px);color:#fde68a;font-size:.85rem;border-bottom:1px solid #7a5a00}
.theme-preview-banner b{color:#fff}
.theme-preview-banner a,.theme-preview-banner button{color:#fde047;text-decoration:underline;font-weight:700;background:none;border:0;padding:0;font:inherit;cursor:pointer}
.theme-preview-banner form{display:inline;margin:0}

/* Themed home side panel (inside #home-side-slot) */
.theme-panel{flex:1;position:relative;overflow:hidden;border-radius:1.1rem;border:1px solid rgba(var(--accent-rgb,212,160,23),.45);background:var(--card);display:flex;flex-direction:column;justify-content:flex-end;padding:1.4rem;min-height:0;box-shadow:inset 0 0 60px rgba(var(--accent-rgb,212,160,23),.12)}
.theme-panel-art{position:absolute;inset:0 0 auto 0;height:62%;z-index:0}
.theme-panel-art img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.theme-panel-art::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--card) 2%,transparent 70%)}
.theme-panel>*:not(.theme-panel-art){position:relative;z-index:1}
.theme-panel .section-kicker{margin:0}
.theme-panel-title{margin:.2rem 0 .4rem;font-size:1.6rem;font-weight:900;line-height:1.1}
.theme-panel-text{margin:0 0 1rem;color:var(--muted);font-size:.92rem}
.theme-countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin:0 0 1rem}
.theme-countdown div{background:rgba(0,0,0,.45);border:1px solid rgba(var(--accent-rgb,212,160,23),.35);border-radius:.7rem;padding:.5rem 0;text-align:center}
.theme-countdown b{display:block;font-size:1.5rem;font-weight:900;color:var(--accent-soft);font-variant-numeric:tabular-nums}
.theme-countdown span{font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.theme-arrived{margin:0 0 1rem;padding:.7rem .9rem;border-radius:.7rem;background:rgba(var(--accent-rgb,212,160,23),.15);border:1px solid rgba(var(--accent-rgb,212,160,23),.45);font-weight:800;color:var(--accent-soft)}
.theme-panel-link{align-self:flex-start}
@media (max-width:767px){.theme-panel{min-height:30rem}}
