/* Seasonal themes. Loaded only while a theme is active; colours only. Chosen in Admin > Site themes. */
:root[data-season="halloween"] { --accent: #F97316; --accent-text: #9A3412; --btn: #7C2D12; --btn-fg: #FFFFFF; --surface: #FFF7ED; --line: #F5D7BE; --band: #FFEDD5; --panel: #2B0F45; --panel-ink: #FFFFFF; --panel-muted: #E9D5FF; --panel-line: #F97316; --panel-land: #4C1D95; --panel-accent: #FB923C; --tag-bg: #FFEDD5; --mark-bg: #2B0F45; --gold: #FB923C; }
:root[data-season="halloween"][data-theme="dark"] { --bg: #120A1C; --surface: #1E1230; --line: #3B2557; --accent: #FB923C; --accent-text: #FDBA74; --btn: #FB923C; --btn-fg: #1A0B05; --band: #180E27; --panel: #2B0F45; --panel-accent: #FB923C; --tag-bg: #2D1A47; --mark-bg: #7C2D12; }
:root[data-season="christmas"] { --accent: #C62828; --accent-text: #8E1B1B; --btn: #166534; --btn-fg: #FFFFFF; --surface: #FEF6F5; --line: #F1D3D0; --band: #FDECEA; --panel: #14532D; --panel-ink: #FFFFFF; --panel-muted: #DCFCE7; --panel-line: #FDE68A; --panel-land: #166534; --panel-accent: #FDE68A; --tag-bg: #FDECEA; --mark-bg: #14532D; --gold: #E6B422; }
:root[data-season="christmas"][data-theme="dark"] { --bg: #0B1A12; --surface: #12261A; --line: #27483A; --accent: #EF5350; --accent-text: #FFB4AB; --btn: #FDE68A; --btn-fg: #14301F; --band: #0F2217; --panel: #14532D; --panel-accent: #FDE68A; --tag-bg: #173424; --mark-bg: #8E1B1B; }
:root[data-season="newyear"] { --accent: #D4A017; --accent-text: #7A5A00; --btn: #111827; --btn-fg: #FFFFFF; --surface: #FFFBEB; --line: #EADFB8; --band: #FEF3C7; --panel: #111827; --panel-ink: #FFFFFF; --panel-muted: #E5E7EB; --panel-line: #FBBF24; --panel-land: #1F2937; --panel-accent: #FBBF24; --tag-bg: #FEF3C7; --mark-bg: #111827; --gold: #FBBF24; }
:root[data-season="newyear"][data-theme="dark"] { --bg: #0B1020; --surface: #151B30; --line: #2D3556; --accent: #FBBF24; --accent-text: #FCD34D; --btn: #FBBF24; --btn-fg: #111827; --band: #10162A; --panel: #1F2937; --panel-accent: #FBBF24; --tag-bg: #1E2540; --mark-bg: #374151; }
:root[data-season="valentines"] { --accent: #E11D74; --accent-text: #9D174D; --btn: #9D174D; --btn-fg: #FFFFFF; --surface: #FFF1F6; --line: #F6CCDD; --band: #FFE4EE; --panel: #831843; --panel-ink: #FFFFFF; --panel-muted: #FBCFE8; --panel-line: #F472B6; --panel-land: #9D174D; --panel-accent: #FDE68A; --tag-bg: #FFE4EE; --mark-bg: #831843; --gold: #F59E0B; }
:root[data-season="valentines"][data-theme="dark"] { --bg: #1A0A13; --surface: #2A1220; --line: #522440; --accent: #F472B6; --accent-text: #FBCFE8; --btn: #F472B6; --btn-fg: #2A0A19; --band: #220E19; --panel: #831843; --panel-accent: #FDE68A; --tag-bg: #3A1730; --mark-bg: #9D174D; }
:root[data-season="easter"] { --accent: #14B8A6; --accent-text: #0F766E; --btn: #0F766E; --btn-fg: #FFFFFF; --surface: #F0FDFA; --line: #C9EFE9; --band: #FEFCE8; --panel: #115E59; --panel-ink: #FFFFFF; --panel-muted: #CCFBF1; --panel-line: #5EEAD4; --panel-land: #0F766E; --panel-accent: #FDE047; --tag-bg: #E6FAF6; --mark-bg: #115E59; --gold: #EAB308; }
:root[data-season="easter"][data-theme="dark"] { --bg: #07191A; --surface: #0E2A2B; --line: #21494A; --accent: #2DD4BF; --accent-text: #99F6E4; --btn: #2DD4BF; --btn-fg: #06302D; --band: #0A2122; --panel: #115E59; --panel-accent: #FDE047; --tag-bg: #12393A; --mark-bg: #0F766E; }

/* A thin coloured stripe under the top bar for every theme. */
:root[data-season] .topbar { border-bottom: 3px solid var(--accent); }
:root[data-season="pride"] .topbar { border-bottom: 0; border-image: linear-gradient(90deg, #E40303, #FF8C00, #FFED00, #008026, #24408E, #732982) 1; border-bottom: 4px solid; }
:root[data-season="pride"] { --accent: #8B5CF6; }
.season-banner { background: var(--panel); color: var(--panel-ink); text-align: center; font: 600 0.8125rem/1.4 var(--font-ui); letter-spacing: 0.02em; padding: 0.5rem 1rem; margin-inline: calc(-1 * clamp(1rem, 4vw, 2rem)); }
.season-banner a { color: var(--panel-ink); text-decoration-color: var(--panel-accent); text-underline-offset: 3px; }
.season-banner a:hover { color: var(--panel-accent); }
.season-banner a:focus-visible { outline-color: var(--panel-accent); }


/* ---------------------------------------------------------------- Richer seasonal decoration (CSS only, no scripts, no images to load). */
:root[data-season] .season-banner { position: relative; overflow: hidden; padding-block: 0.625rem 0.75rem; }
:root[data-season] .season-banner .wrap::before, :root[data-season] .season-banner .wrap::after { font-size: 1rem; margin-inline: 0.625rem; vertical-align: -0.0625rem; }
:root[data-season] .cat-head h1, :root[data-season] .page h1 { text-wrap: balance; }
:root[data-season] ::selection { background: var(--accent); color: var(--btn-fg, #fff); }
:root[data-season] .card:hover h3 a, :root[data-season] .card:focus-within h3 a { text-decoration: underline; text-decoration-color: var(--accent); text-decoration-thickness: 2px; }
:root[data-season] .kicker { position: relative; }
:root[data-season] footer { border-top-color: var(--accent); border-top-width: 5px; border-top-style: double; }
:root[data-season] .btn, :root[data-season] .btn-sm { box-shadow: 0 2px 0 rgba(0, 0, 0, 0.25); }
:root[data-season] .btn:hover, :root[data-season] .btn-sm:hover { filter: brightness(1.08); }
:root[data-season] .masthead { background-repeat: repeat-x; background-position: bottom; }
:root[data-season]::before, :root[data-season]::after { content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 1; display: none; }

/* ---------- Halloween: midnight purple, drifting embers, cobwebs, bats */
:root[data-season="halloween"] .season-banner { background: linear-gradient(180deg, #2B0F45, #1A0930); }
:root[data-season="halloween"] .season-banner .wrap::before { content: "\1F383"; }
:root[data-season="halloween"] .season-banner .wrap::after { content: "\1F987"; }
:root[data-season="halloween"] .season-banner::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 10px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='10' viewBox='0 0 48 10'%3E%3Cpath d='M0 0h48v2c-3 0-4 4-6 8-2-4-3-8-6-8s-4 4-6 8c-2-4-3-8-6-8s-4 4-6 8c-2-4-3-8-6-8s-4 4-6 8C1 6 0 2 0 2z' fill='%23F97316'/%3E%3C/svg%3E") repeat-x; opacity: 0.9; }
:root[data-season="halloween"] .topbar { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160' fill='none' stroke='%23F97316' stroke-opacity='.55' stroke-width='1.2'%3E%3Cpath d='M0 0L150 0M0 0L140 40M0 0L110 90M0 0L60 130M0 0L0 150'/%3E%3Cpath d='M30 0Q26 26 0 30M60 0Q52 50 0 60M95 0Q80 80 0 95M130 0Q110 110 0 130'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: left top; background-size: 3.2rem; }
:root[data-season="halloween"] .cat-head h1, :root[data-season="halloween"] .hero h1 { text-shadow: 0 0 0.6em rgba(249, 115, 22, 0.35); }
:root[data-season="halloween"] .kicker::before { content: "\1F47B\00a0"; }
:root[data-season="halloween"] .card:hover { outline: 2px solid var(--accent); outline-offset: 4px; }
:root[data-season="halloween"] footer { background-image: linear-gradient(180deg, rgba(249, 115, 22, 0.08), transparent 40%); }
:root[data-season="halloween"]::before { display: block; opacity: 0.55; background-image: radial-gradient(2px 2px at 10% 100%, #FB923C, transparent), radial-gradient(3px 3px at 30% 100%, #F97316, transparent), radial-gradient(2px 2px at 55% 100%, #FDBA74, transparent), radial-gradient(3px 3px at 75% 100%, #FB923C, transparent), radial-gradient(2px 2px at 92% 100%, #F97316, transparent); background-size: 100% 100%; background-repeat: no-repeat; }
@media (prefers-reduced-motion: no-preference) {
  :root[data-season="halloween"]::before { animation: ss-embers 14s linear -4s infinite; }
  @keyframes ss-embers { from { transform: translateY(0); opacity: 0.7; } to { transform: translateY(-100vh); opacity: 0; } }
}

/* ---------- Christmas: holly, pine and gold, string lights, soft snow */
:root[data-season="christmas"] .season-banner { background: linear-gradient(180deg, #166534, #14532D); }
:root[data-season="christmas"] .season-banner .wrap::before { content: "\1F384"; }
:root[data-season="christmas"] .season-banner .wrap::after { content: "\2744\FE0F"; }
:root[data-season="christmas"] .season-banner::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 7px; background: radial-gradient(circle at 12px 3px, #EF4444 0 3px, transparent 3.5px) 0 0 / 48px 7px repeat-x, radial-gradient(circle at 24px 3px, #FDE68A 0 3px, transparent 3.5px) 0 0 / 48px 7px repeat-x, radial-gradient(circle at 36px 3px, #60A5FA 0 3px, transparent 3.5px) 0 0 / 48px 7px repeat-x; }
:root[data-season="christmas"] .topbar { border-bottom: 4px solid transparent; border-image: repeating-linear-gradient(135deg, #C62828 0 10px, #FFFFFF 10px 20px) 1; }
:root[data-season="christmas"] .cat-head h1 { padding-bottom: 0.4rem; background: linear-gradient(90deg, var(--gold), transparent 60%) bottom / 100% 3px no-repeat; }
:root[data-season="christmas"] .kicker::before { content: "\2605\00a0"; color: var(--gold); }
:root[data-season="christmas"] .card:hover { outline: 2px solid var(--gold); outline-offset: 4px; }
:root[data-season="christmas"] footer { background-image: linear-gradient(180deg, rgba(198, 40, 40, 0.07), transparent 40%); }
:root[data-season="christmas"]::before { display: block; opacity: 0.8; background-image: radial-gradient(2px 2px at 8% 10%, #fff, transparent), radial-gradient(3px 3px at 22% 40%, #fff, transparent), radial-gradient(2px 2px at 37% 20%, #fff, transparent), radial-gradient(3px 3px at 51% 60%, #fff, transparent), radial-gradient(2px 2px at 66% 30%, #fff, transparent), radial-gradient(3px 3px at 79% 75%, #fff, transparent), radial-gradient(2px 2px at 92% 45%, #fff, transparent); background-repeat: no-repeat; filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.25)); }
@media (prefers-reduced-motion: no-preference) {
  :root[data-season="christmas"]::before { animation: ss-snow 18s linear -9s infinite; }
  :root[data-season="christmas"] .season-banner::after { animation: ss-twinkle 2.4s ease-in-out infinite alternate; }
  @keyframes ss-snow { from { transform: translateY(-100vh); } to { transform: translateY(100vh); } }
  @keyframes ss-twinkle { from { opacity: 1; } to { opacity: 0.55; } }
}

/* ---------- New Year: champagne sparkle */
:root[data-season="newyear"] .season-banner .wrap::before { content: "\1F942"; }
:root[data-season="newyear"] .season-banner .wrap::after { content: "\2728"; }
:root[data-season="newyear"] .season-banner { background: linear-gradient(180deg, #111827, #0B1020); }
:root[data-season="newyear"] .kicker::before { content: "\2726\00a0"; color: var(--gold); }
/* ---------- Valentine's */
:root[data-season="valentines"] .season-banner .wrap::before, :root[data-season="valentines"] .season-banner .wrap::after { content: "\2665"; color: #FBCFE8; }
:root[data-season="valentines"] .kicker::before { content: "\2665\00a0"; }
/* ---------- Easter */
:root[data-season="easter"] .season-banner .wrap::before { content: "\1F423"; }
:root[data-season="easter"] .season-banner .wrap::after { content: "\1F337"; }
:root[data-season="easter"] .kicker::before { content: "\2740\00a0"; }
/* ---------- Pride */
:root[data-season="pride"] .season-banner { background: linear-gradient(90deg, #E40303, #FF8C00, #D4B800, #008026, #24408E, #732982); }
:root[data-season="pride"] .season-banner .wrap::before, :root[data-season="pride"] .season-banner .wrap::after { content: "\1F3F3\FE0F\200D\1F308"; }

/* ---------- Red Curtain: velvet, gold fringe and a spotlight (theatre all year) */
:root[data-season="theatre"] { --accent: #B91C1C; --accent-text: #7F1D1D; --btn: #7F1D1D; --btn-fg: #FFFFFF; --surface: #FDF6F0; --line: #EAD2C2; --band: #FBEBDD; --panel: #5B0F14; --panel-ink: #FFFFFF; --panel-muted: #F5D0C5; --panel-line: #D4A24C; --panel-land: #7F1D1D; --panel-accent: #E8C169; --tag-bg: #FBEBDD; --mark-bg: #5B0F14; --gold: #D4A24C; }
:root[data-season="theatre"][data-theme="dark"] { --bg: #140708; --surface: #220C0E; --line: #4A1A1D; --accent: #F0A0A0; --accent-text: #FBC9C9; --btn: #E8C169; --btn-fg: #2A0B0D; --band: #1B090B; --panel: #5B0F14; --panel-accent: #E8C169; --tag-bg: #2E1114; --mark-bg: #7F1D1D; }
:root[data-season="theatre"] .season-banner { background: repeating-linear-gradient(90deg, #5B0F14 0 18px, #7F1D1D 18px 36px, #5B0F14 36px 54px); }
:root[data-season="theatre"] .season-banner .wrap::before { content: "\1F3AD"; }
:root[data-season="theatre"] .season-banner .wrap::after { content: "\1F3AD"; }
:root[data-season="theatre"] .season-banner::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 6px; background: repeating-linear-gradient(90deg, #D4A24C 0 4px, transparent 4px 9px); }
:root[data-season="theatre"] .topbar { border-bottom-color: #D4A24C; }
:root[data-season="theatre"] .kicker::before { content: "\2605\00a0"; color: var(--gold); }
:root[data-season="theatre"] .masthead { background-image: radial-gradient(60% 120% at 50% -20%, rgba(212, 162, 76, 0.22), transparent 70%); background-repeat: no-repeat; }
:root[data-season="theatre"] .card:hover { outline: 2px solid var(--gold); outline-offset: 4px; }

/* ---------- Bonfire Night: dark sky and rising sparks */
:root[data-season="bonfire"] { --accent: #F59E0B; --accent-text: #92400E; --btn: #7C2D12; --btn-fg: #FFFFFF; --surface: #FFF8EB; --line: #F3DDB4; --band: #FEF0D0; --panel: #1C1917; --panel-ink: #FFFFFF; --panel-muted: #FDE68A; --panel-line: #F59E0B; --panel-land: #292524; --panel-accent: #FBBF24; --tag-bg: #FEF0D0; --mark-bg: #1C1917; --gold: #FBBF24; }
:root[data-season="bonfire"][data-theme="dark"] { --bg: #0C0A09; --surface: #1C1917; --line: #44403C; --accent: #FBBF24; --accent-text: #FDE68A; --btn: #FBBF24; --btn-fg: #1C1917; --band: #14110F; --panel: #292524; --panel-accent: #FBBF24; --tag-bg: #292524; --mark-bg: #7C2D12; }
:root[data-season="bonfire"] .season-banner { background: linear-gradient(180deg, #1C1917, #0C0A09); }
:root[data-season="bonfire"] .season-banner .wrap::before { content: "\1F386"; }
:root[data-season="bonfire"] .season-banner .wrap::after { content: "\1F387"; }
:root[data-season="bonfire"] .season-banner::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 4px; background: linear-gradient(90deg, #EF4444, #F59E0B, #FDE68A, #F59E0B, #EF4444); }
:root[data-season="bonfire"] .kicker::before { content: "\2736\00a0"; color: var(--accent); }
:root[data-season="bonfire"]::before { display: block; opacity: 0.6; background-image: radial-gradient(2px 2px at 15% 100%, #FBBF24, transparent), radial-gradient(3px 3px at 40% 100%, #EF4444, transparent), radial-gradient(2px 2px at 65% 100%, #FDE68A, transparent), radial-gradient(3px 3px at 85% 100%, #F59E0B, transparent); background-repeat: no-repeat; }
@media (prefers-reduced-motion: no-preference) {
  :root[data-season="bonfire"]::before { animation: ss-embers 9s linear infinite; }
}

/* ---------- Fringe: bright festival colours */
:root[data-season="fringe"] { --accent: #E11D48; --accent-text: #9F1239; --btn: #1D4ED8; --btn-fg: #FFFFFF; --surface: #FFFBEB; --line: #F3E3A8; --band: #FEF3C7; --panel: #1E1B4B; --panel-ink: #FFFFFF; --panel-muted: #E0E7FF; --panel-line: #FACC15; --panel-land: #312E81; --panel-accent: #FACC15; --tag-bg: #FEF3C7; --mark-bg: #1E1B4B; --gold: #FACC15; }
:root[data-season="fringe"][data-theme="dark"] { --bg: #0F0D2A; --surface: #1A1744; --line: #35318A; --accent: #FB7185; --accent-text: #FECDD3; --btn: #FACC15; --btn-fg: #1E1B4B; --band: #131035; --panel: #1E1B4B; --panel-accent: #FACC15; --tag-bg: #25225E; --mark-bg: #9F1239; }
:root[data-season="fringe"] .season-banner { background: linear-gradient(90deg, #E11D48, #7C3AED, #1D4ED8); }
:root[data-season="fringe"] .season-banner .wrap::before { content: "\1F3AA"; }
:root[data-season="fringe"] .season-banner .wrap::after { content: "\1F3A4"; }
:root[data-season="fringe"] .topbar { border-bottom: 4px solid transparent; border-image: linear-gradient(90deg, #E11D48, #FACC15, #1D4ED8) 1; }
:root[data-season="fringe"] .kicker::before { content: "\266A\00a0"; }

@media print { :root[data-season]::before, :root[data-season]::after { display: none !important; } }
