/* Seasonal themes. html[data-theme] switches the palette; themes.js adds the moving parts.
   Without a theme attribute nothing here applies, so the classic site is untouched. */

/* ---------- Palettes ---------- */
[data-theme=halloween]{--t-btn-hi:#ffb35c;--t-btn:#ff8a1c;--t-btn-lo:#e2650a;--t-btn-ink:#2a1204;--t-btn-lip:#8a3a06;--t-h:305;--t-sc:.035;--t-sk:.3;--t-ahs:-22;--t-panel:#21163a;--t-a:#ff8a1c;--t-b:#a66bff;--t-a-soft:#ff8a1c33;--t-text:#ffd9b0;
  --t-sky:radial-gradient(ellipse 80% 55% at 78% -5%,#4b2a7a 0%,#24123f 38%,transparent 70%),radial-gradient(ellipse 60% 40% at 10% 110%,#ff6a0030,transparent 70%),linear-gradient(180deg,#140b22,#0b0710 70%);
  --t-header:rgba(17,9,28,.9);--t-line:#2e1d45;--t-brand:linear-gradient(140deg,#ffb04a,#f2701a 45%,#8a2c06);--t-brand-edge:#ffc27a;--t-brand-drop:#4a1a06;
  --t-img:brightness(1.02) saturate(.95) contrast(1.08);--t-over:linear-gradient(180deg,#3b2470 0%,#6a4a9c 42%,#d07a3a 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#2b1747,#170d24 90%);--t-banner:linear-gradient(90deg,#2b1446,#4a1d63 50%,#2b1446);--t-banner-edge:#ff8a1c66;--t-nav:#3a1f2a}
[data-theme=bonfire]{--t-btn-hi:#ffb36b;--t-btn:#ff7a1c;--t-btn-lo:#e05a0a;--t-btn-ink:#2a1204;--t-btn-lip:#7a2c06;--t-h:40;--t-sc:.022;--t-sk:.6;--t-ahs:-18;--t-panel:#221a1a;--t-a:#ff7a1c;--t-b:#ffd34d;--t-a-soft:#ff7a1c33;--t-text:#ffd9b0;
  --t-sky:radial-gradient(ellipse 90% 45% at 50% 115%,#ff5a0055,#7a1e0533 45%,transparent 75%),linear-gradient(180deg,#0b0d1c,#120c0c 75%);
  --t-header:rgba(14,11,18,.9);--t-line:#33231c;--t-brand:linear-gradient(140deg,#ffc25a,#ff7a1c 45%,#a0300a);--t-brand-edge:#ffd08a;--t-brand-drop:#5a1a04;
  --t-img:brightness(1.02) saturate(1.05) contrast(1.08);--t-over:linear-gradient(180deg,#26285a 0%,#5a4a7a 45%,#e0782e 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#241a36,#151018 90%);--t-banner:linear-gradient(90deg,#3a1406,#6b2208 50%,#3a1406);--t-banner-edge:#ffb13b66;--t-nav:#3a2414}
[data-theme=christmas]{--t-btn-hi:#ff6b5e;--t-btn:#e53935;--t-btn-lo:#b71c1c;--t-btn-ink:#ffffff;--t-btn-lip:#6d0f0f;--t-h:255;--t-sc:.035;--t-sk:.3;--t-ahs:0;--t-panel:#152335;--t-a:#ff4a4a;--t-b:#3ddc84;--t-a-soft:#ff4a4a2e;--t-text:#ffe1d6;
  --t-sky:radial-gradient(ellipse 70% 45% at 50% -8%,#1f4a6e 0%,#10263f 45%,transparent 75%),radial-gradient(ellipse 50% 35% at 85% 110%,#ffcf6a1f,transparent 70%),linear-gradient(180deg,#0b1626,#0a0f17 75%);
  --t-header:rgba(10,18,30,.9);--t-line:#1d2c3f;--t-brand:linear-gradient(140deg,#ff6b5e,#d42a2a 50%,#7a1010);--t-brand-edge:#ff9a8f;--t-brand-drop:#4a0a0a;
  --t-img:brightness(1.04) saturate(.9) contrast(1.06);--t-over:linear-gradient(180deg,#3d5a96 0%,#8aa6d6 50%,#ffc88a 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#1a2a4a,#111827 90%);--t-banner:linear-gradient(90deg,#7a1414,#b51f1f 50%,#7a1414);--t-banner-edge:#ffd34d77;--t-nav:#3a1c1c}
[data-theme=winter]{--t-btn-hi:#d4f1ff;--t-btn:#8fd3ff;--t-btn-lo:#5cb6ee;--t-btn-ink:#08243a;--t-btn-lip:#1f5f8f;--t-h:240;--t-sc:.032;--t-sk:.3;--t-ahs:160;--t-panel:#14243a;--t-a:#7fd0ff;--t-b:#b8f5d4;--t-a-soft:#7fd0ff2e;--t-text:#d9f0ff;
  --t-sky:radial-gradient(ellipse 80% 50% at 50% -10%,#173a5e,#0d1f36 45%,transparent 75%),linear-gradient(180deg,#081322,#070c14 75%);
  --t-header:rgba(8,16,28,.9);--t-line:#1a2b40;--t-brand:linear-gradient(140deg,#e6f6ff,#8fcaf2 45%,#3d7fc2);--t-brand-edge:#ffffff;--t-brand-drop:#143a66;
  --t-img:brightness(1.08) saturate(.7) contrast(1.05);--t-over:linear-gradient(180deg,#6f93c9 0%,#b9d3f2 55%,#e6f2ff 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#1b2c4f,#111a2b 90%);--t-banner:linear-gradient(90deg,#123456,#1d4f7d 50%,#123456);--t-banner-edge:#bfe6ff66;--t-nav:#16304a}
[data-theme=newyear]{--t-btn-hi:#ffe68a;--t-btn:#ffd34d;--t-btn-lo:#f0b429;--t-btn-ink:#241a05;--t-btn-lip:#8a5a06;--t-h:285;--t-sc:.035;--t-sk:.3;--t-ahs:0;--t-panel:#1b1838;--t-a:#ffd34d;--t-b:#c9b8ff;--t-a-soft:#ffd34d2e;--t-text:#fff1c2;
  --t-sky:radial-gradient(ellipse 80% 50% at 50% -10%,#2a2560,#151233 45%,transparent 75%),linear-gradient(180deg,#0b0a1d,#08070f 75%);
  --t-header:rgba(11,10,26,.9);--t-line:#26224a;--t-brand:linear-gradient(140deg,#fff0b0,#ffc93f 45%,#b07a12);--t-brand-edge:#fff4c2;--t-brand-drop:#4a3206;
  --t-img:brightness(1.02) saturate(.95) contrast(1.08);--t-over:linear-gradient(180deg,#2c2766 0%,#5c529c 45%,#d0a24a 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#25204a,#141225 90%);--t-banner:linear-gradient(90deg,#1d1840,#3a2f7a 50%,#1d1840);--t-banner-edge:#ffd34d88;--t-nav:#2e2840}
[data-theme=valentines]{--t-btn-hi:#ff9cc4;--t-btn:#ff5c9a;--t-btn-lo:#e23a7c;--t-btn-ink:#ffffff;--t-btn-lip:#7a1240;--t-h:355;--t-sc:.035;--t-sk:.3;--t-ahs:-78;--t-panel:#2c1525;--t-a:#ff6fae;--t-b:#ff4d6d;--t-a-soft:#ff6fae2e;--t-text:#ffd6e8;
  --t-sky:radial-gradient(ellipse 80% 50% at 50% -10%,#5a1a3d,#2e0e22 45%,transparent 75%),radial-gradient(ellipse 50% 35% at 10% 110%,#ff4d6d26,transparent 70%),linear-gradient(180deg,#1a0a14,#10070d 75%);
  --t-header:rgba(26,10,20,.9);--t-line:#3d1a2c;--t-brand:linear-gradient(140deg,#ffc2dc,#ff6fae 45%,#c2185b);--t-brand-edge:#ffd6e8;--t-brand-drop:#5a0a2c;
  --t-img:brightness(1.04) saturate(1) contrast(1.04);--t-over:linear-gradient(180deg,#b0507e 0%,#f0a2c4 50%,#ffd2e2 100%);--t-blend:multiply;
  --t-discord:linear-gradient(145deg,#3a1636,#1d0d1c 90%);--t-banner:linear-gradient(90deg,#6b1640,#b02a66 50%,#6b1640);--t-banner-edge:#ffd6e888;--t-nav:#3d1a2c}
[data-theme=easter]{--t-btn-hi:#d2f7e1;--t-btn:#8fe3b0;--t-btn-lo:#5fcf8f;--t-btn-ink:#10301f;--t-btn-lip:#2f7a52;--t-h:280;--t-sc:.025;--t-sk:.3;--t-ahs:82;--t-panel:#1d2236;--t-a:#8fe3b0;--t-b:#ffb3d1;--t-a-soft:#8fe3b02e;--t-text:#e8fff0;
  --t-sky:radial-gradient(ellipse 80% 50% at 20% -10%,#2a3d5e,#18233a 45%,transparent 75%),radial-gradient(ellipse 60% 40% at 90% 110%,#ffb3d122,transparent 70%),linear-gradient(180deg,#131826,#0f1118 75%);
  --t-header:rgba(17,20,32,.9);--t-line:#262d42;--t-brand:linear-gradient(140deg,#d8f7e2,#9fdcc0 40%,#f7b7d2);--t-brand-edge:#ffffff;--t-brand-drop:#4a6a5a;
  --t-img:brightness(.95) saturate(.9) hue-rotate(12deg);--t-over:linear-gradient(180deg,#9fd8ff33 0%,#9fd8ff00 45%,#ffb3d126 100%);
  --t-discord:linear-gradient(145deg,#2a2a4f,#17182a 90%);--t-banner:linear-gradient(90deg,#2f6b55,#4f8f6f 35%,#a05a85 100%);--t-banner-edge:#ffffff66;--t-nav:#22343a}
[data-theme=summer]{--t-btn-hi:#7fe9f2;--t-btn:#2ec4d6;--t-btn-lo:#18a2b4;--t-btn-ink:#04262c;--t-btn-lip:#0b5a66;--t-h:225;--t-sc:.032;--t-sk:.3;--t-ahs:130;--t-panel:#122838;--t-a:#2ec4d6;--t-b:#ff7a59;--t-a-soft:#2ec4d62e;--t-text:#d6fbff;
  --t-sky:radial-gradient(ellipse 70% 55% at 0% -10%,#ffb84a40,#ff7a5918 40%,transparent 70%),radial-gradient(ellipse 80% 40% at 50% 115%,#0e6f8a55,transparent 70%),linear-gradient(180deg,#0d1c2a,#08121a 75%);
  --t-header:rgba(10,24,34,.9);--t-line:#183244;--t-brand:linear-gradient(140deg,#ffe08a,#ffa64d 45%,#ff6b6b);--t-brand-edge:#fff0b8;--t-brand-drop:#7a2e1a;
  --t-img:brightness(1.02) saturate(1.2) hue-rotate(-4deg);--t-over:linear-gradient(180deg,#ffd27a26 0%,#ffd27a00 45%,#2ec4d61f 100%);
  --t-discord:linear-gradient(145deg,#173d55,#0f2232 90%);--t-banner:linear-gradient(90deg,#0f6f86,#1aa3b8 50%,#ff8a5c);--t-banner-edge:#fff0b866;--t-nav:#14394a}
[data-theme=celebration]{--t-btn-hi:#ffe39a;--t-btn:#ffc54d;--t-btn-lo:#eda942;--t-btn-ink:#2c1a07;--t-btn-lip:#9c6527;--t-h:300;--t-sc:.03;--t-sk:.3;--t-ahs:0;--t-panel:#1f1930;--t-a:#ff4d6d;--t-b:#3fa9ff;--t-a-soft:#ff4d6d2e;--t-text:#ffe0e8;
  --t-sky:radial-gradient(ellipse 60% 45% at 15% -10%,#ff4d6d26,transparent 70%),radial-gradient(ellipse 60% 45% at 85% -10%,#3fa9ff26,transparent 70%),linear-gradient(180deg,#141020,#0e0b14 75%);
  --t-header:rgba(20,16,32,.9);--t-line:#2a2340;--t-brand:linear-gradient(140deg,#ffdc8c,#eda942);--t-brand-edge:#ffd794;--t-brand-drop:#9c6527;
  --t-img:brightness(.92) saturate(1.15);--t-over:linear-gradient(180deg,#0005 0%,#0000 42%,#0007 100%);
  --t-discord:linear-gradient(145deg,#2a2148,#191629 90%);--t-banner:linear-gradient(90deg,#ff4d6d,#a35cff 50%,#3fa9ff);--t-banner-edge:#ffffff55;--t-nav:#2e2340}

/* ---------- The page wears the palette ---------- */
html[data-theme] body{background:var(--t-sky);background-attachment:fixed}
html[data-theme] .site-header{background:var(--t-header);border-bottom-color:var(--t-line);backdrop-filter:blur(8px)}
html[data-theme] .nav-wrap nav a[aria-current=page]{color:var(--t-a);background:var(--t-nav)}
html[data-theme] .brand-card{background:var(--t-brand);border-color:var(--t-brand-edge);box-shadow:0 5px 0 var(--t-brand-drop),0 0 50px var(--t-a-soft)}
html[data-theme] .brand-card img{filter:drop-shadow(0 10px 12px #0000004d)}
/* Scene pictures: the themed version fades in; the classic one never flashes first. */
html[data-theme] img[data-scene]{transition:opacity .4s ease-out}
html[data-theme] img[data-scene]:not(.is-themed){opacity:0;animation:theme-reveal 0s linear 2.5s forwards}
@keyframes theme-reveal{to{opacity:1}}
html[data-theme] .discord-tile{background:var(--t-discord)}
html[data-theme] .address-button{background:var(--t-panel);border-color:#ffffff14}
html[data-theme] .address-button:hover{background:var(--t-nav)}
html[data-theme] .footer-panel{background:var(--t-panel)}
html[data-theme] .site-footer{border-top-color:var(--t-line)}
.theme-anchor{position:relative}

/* Primary buttons wear the theme (Discord keeps its own colour; product and vote buttons have their own rules). */
html[data-theme] .button:where(:not(.discord-button,.button-dark,.button-subtle,.vote-visit,.is-danger)){background:linear-gradient(180deg,var(--t-btn-hi),var(--t-btn) 55%,var(--t-btn-lo));color:var(--t-btn-ink);box-shadow:0 3px 0 var(--t-btn-lip),inset 0 1px #ffffff4d;border-color:transparent}
html[data-theme] .button:where(:not(.discord-button,.button-dark,.button-subtle,.vote-visit,.is-danger)):hover:not(:disabled){filter:brightness(1.08)}
html[data-theme=christmas] .button:where(:not(.discord-button,.button-dark,.button-subtle,.vote-visit,.is-danger)),html[data-theme=valentines] .button:where(:not(.discord-button,.button-dark,.button-subtle,.vote-visit,.is-danger)){text-shadow:0 1px 1px #0004}

/* ---------- Banner ---------- */
.theme-banner{position:relative;z-index:22;background:var(--t-banner);border-bottom:1px solid var(--t-banner-edge);color:#fff;overflow:hidden;max-height:0;transition:max-height .45s cubic-bezier(.2,.8,.2,1)}
.theme-banner.is-in{max-height:90px}.theme-banner.is-leaving{max-height:0}
.theme-banner::before{content:'';position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,#ffffff1f 45%,transparent 60%);transform:translateX(-100%);animation:theme-shine 6s ease-in-out 1.2s infinite}
.theme-banner-inner{position:relative;max-width:1216px;margin:auto;padding:9px 52px 9px 28px;min-height:48px;display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
.theme-banner-icon{width:26px;height:26px;image-rendering:pixelated;filter:drop-shadow(0 2px 3px #0006);animation:theme-bob 2.6s ease-in-out infinite}
.theme-banner-text{color:#fff;font-weight:900;font-size:.95rem;letter-spacing:-.01em;text-shadow:0 1px 2px #0005;margin:0}
.theme-banner-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;background:#00000038;border:1px solid #ffffff2e;font-weight:850;font-size:.8rem;color:var(--t-text);font-variant-numeric:tabular-nums;white-space:nowrap}
button.theme-banner-chip{font:inherit;font-weight:850;font-size:.8rem;cursor:pointer}
.theme-chip-icon{width:16px;height:16px;image-rendering:pixelated}
.theme-banner-link{padding:5px 13px;border-radius:9px;background:#fff;color:#1b1420;font-weight:900;font-size:.8rem;white-space:nowrap;transition:transform .2s,box-shadow .2s}
.theme-banner-link:hover{transform:translateY(-1px);box-shadow:0 4px 14px #0005}
.theme-banner-close{position:absolute;right:12px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:50%;border:0;background:#0000002e;color:#fff;font-size:1.2rem;line-height:1}
.theme-banner-close:hover{background:#00000055}
@keyframes theme-shine{0%{transform:translateX(-100%)}40%,100%{transform:translateX(100%)}}
@keyframes theme-bob{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-3px) rotate(6deg)}}
@media(max-width:760px){.theme-banner-inner{padding:8px 46px 8px 14px;gap:7px 10px}.theme-banner-text{font-size:.82rem;text-align:center}.theme-banner-icon{width:22px;height:22px}}

.theme-preview-pill{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:85;display:flex;align-items:center;gap:12px;padding:9px 10px 9px 16px;border-radius:999px;background:#151418f2;border:1px solid #ffffff26;box-shadow:0 12px 34px #000a;font-size:.84rem;font-weight:800;white-space:nowrap}
.theme-preview-pill a{padding:6px 12px;border-radius:999px;background:var(--gold);color:#201b12;font-weight:900}

/* ---------- Background layers ---------- */
.theme-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none}
.theme-canvas.is-back{z-index:0}.theme-canvas.is-front{z-index:25}
.theme-fx{position:fixed;pointer-events:none;z-index:0}
.theme-floats{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;contain:strict}
.theme-floats img{position:absolute;left:var(--x);top:100%;width:var(--size);height:var(--size);image-rendering:pixelated;opacity:0;animation:theme-rise var(--dur) linear var(--delay) infinite;will-change:transform}
.theme-floats.is-down img{top:-80px;animation-name:theme-fall}
@keyframes theme-rise{0%{opacity:0;transform:translate3d(0,110px,0) rotate(var(--spin))}10%,82%{opacity:var(--peak)}100%{opacity:0;transform:translate3d(var(--drift),calc(-100vh - 200px),0) rotate(calc(var(--spin)*-1))}}
@keyframes theme-fall{0%{opacity:0;transform:translate3d(0,0,0) rotate(var(--spin))}10%,82%{opacity:var(--peak)}100%{opacity:0;transform:translate3d(var(--drift),calc(100vh + 160px),0) rotate(calc(var(--spin)*-1))}}

.theme-moon{--gap:calc((100vw - 1180px)/2);--m:clamp(84px,calc(var(--gap) - 44px),176px);top:170px;right:max(12px,calc((var(--gap) - var(--m))/2));width:var(--m);aspect-ratio:1;border-radius:50%;box-shadow:0 0 60px 18px #fff3c722,0 0 160px 60px #b48cff1c}
@media(max-width:1340px){.theme-moon{display:none}}
.theme-moon img{width:100%;height:100%;image-rendering:pixelated;opacity:.92}
.theme-fog{left:-10%;right:-10%;bottom:-40px;height:42vh;overflow:hidden}
.theme-fog span{position:absolute;bottom:0;width:70%;height:100%;background:radial-gradient(ellipse at 50% 100%,#bfa8e626,transparent 65%);animation:theme-drift 38s ease-in-out infinite alternate}
.theme-fog span:nth-child(2){left:35%;animation-duration:52s;animation-delay:-18s;opacity:.8}
.theme-fog span:nth-child(3){left:-10%;height:70%;animation-duration:44s;animation-delay:-9s;opacity:.7}
@keyframes theme-drift{from{transform:translateX(-8%)}to{transform:translateX(12%)}}
.theme-eyes-layer{inset:0}
.theme-eyes{position:absolute;display:flex;gap:calc(14px*var(--s));animation:theme-eyes 4.1s ease-in-out forwards}
.theme-eyes i{width:calc(9px*var(--s));height:calc(6px*var(--s));background:#ffcf33;box-shadow:0 0 10px 2px #ff9a1c99;clip-path:polygon(0 30%,100% 0,100% 100%,0 100%);transform-origin:center;animation:theme-blink 4.1s steps(1) forwards}
.theme-eyes i+i{clip-path:polygon(0 0,100% 30%,100% 100%,0 100%)}
@keyframes theme-eyes{0%{opacity:0}12%,80%{opacity:.9}100%{opacity:0}}
@keyframes theme-blink{0%,30%{transform:scaleY(1)}31%{transform:scaleY(.1)}34%,62%{transform:scaleY(1)}63%{transform:scaleY(.1)}66%{transform:scaleY(1)}}

.theme-aurora{left:0;right:0;top:0;height:70vh;overflow:hidden;opacity:.55;mix-blend-mode:screen;filter:blur(28px)}
.theme-aurora span{position:absolute;left:-20%;width:140%;height:34%;top:6%;border-radius:50%;background:linear-gradient(90deg,transparent,#3ddc9a55 25%,#4fb3ff44 55%,#a66bff44 75%,transparent);transform:rotate(-6deg);animation:theme-aurora 26s ease-in-out infinite alternate}
.theme-aurora span:nth-child(2){top:22%;animation-duration:34s;animation-delay:-12s;background:linear-gradient(90deg,transparent,#4fb3ff40 20%,#3ddc9a55 50%,transparent 85%)}
.theme-aurora span:nth-child(3){top:-6%;animation-duration:30s;animation-delay:-6s;opacity:.7}
@keyframes theme-aurora{0%{transform:translateX(-6%) rotate(-7deg) scaleY(.8)}50%{transform:translateX(4%) rotate(-3deg) scaleY(1.2)}100%{transform:translateX(8%) rotate(-8deg) scaleY(.9)}}

.theme-fireglow{left:0;right:0;bottom:0;height:34vh;background:radial-gradient(ellipse 70% 100% at 50% 100%,#ff6a1c38,#ff3d0012 50%,transparent 75%);animation:theme-flicker 3.2s ease-in-out infinite}
@keyframes theme-flicker{0%,100%{opacity:.8}30%{opacity:1}55%{opacity:.7}75%{opacity:.95}}
.theme-sunrays{left:-25vmax;top:-25vmax;width:70vmax;height:70vmax;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffd27a14 0deg 6deg,transparent 6deg 16deg);mask:radial-gradient(circle,#000 18%,transparent 68%);-webkit-mask:radial-gradient(circle,#000 18%,transparent 68%);animation:theme-spin 140s linear infinite}
@keyframes theme-spin{to{transform:rotate(360deg)}}
.theme-waves{left:0;right:0;bottom:0;height:70px}
.theme-waves span{position:absolute;inset:0;background-repeat:repeat-x;background-size:120px 70px;animation:theme-wave 9s linear infinite;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='70' shape-rendering='crispEdges'%3E%3Cpath fill='%231aa3b8' fill-opacity='.35' d='M0 30h10v-4h10v-4h20v4h10v4h20v4h10v4h20v-4h10v-4h10v40H0z'/%3E%3C/svg%3E")}
.theme-waves span:nth-child(2){animation-duration:13s;animation-direction:reverse;opacity:.8;background-position:60px 12px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='70' shape-rendering='crispEdges'%3E%3Cpath fill='%230f6f86' fill-opacity='.5' d='M0 44h20v-4h20v-4h10v4h10v4h20v4h20v-4h20v26H0z'/%3E%3C/svg%3E")}
@keyframes theme-wave{to{background-position-x:120px}}

/* A scene along the bottom of the screen: graveyard, snowy pines, spring meadow or a town at night. */
.theme-ground{left:0;right:0;bottom:0;height:calc(var(--gh)*3px);background:var(--g) repeat-x 0 100%/auto 100%}
[data-theme=halloween] .theme-ground{--gh:46;--g:url(themes/ground-halloween.svg)}
[data-theme=christmas] .theme-ground{--gh:46;--g:url(themes/ground-christmas.svg);opacity:.92}
[data-theme=winter] .theme-ground{--gh:46;--g:url(themes/ground-winter.svg);opacity:.9}
[data-theme=easter] .theme-ground{--gh:46;--g:url(themes/ground-easter.svg)}
[data-theme=newyear] .theme-ground{--gh:58;--g:url(themes/ground-newyear.svg)}
[data-theme=bonfire] .theme-ground{--gh:58;--g:url(themes/ground-bonfire.svg)}
@media(max-width:760px){.theme-ground{height:calc(var(--gh)*2px)}}

/* Lights and bunting hang from the bottom of the header. */
.theme-garland{position:absolute;left:0;right:0;height:56px;z-index:25;pointer-events:none;overflow:hidden}
.theme-garland svg{display:block}
.theme-bulb{animation:theme-twinkle 2.4s ease-in-out var(--d) infinite;filter:drop-shadow(0 0 5px var(--c))}
@keyframes theme-twinkle{0%,100%{opacity:1}50%{opacity:.35}}
.theme-flag{transform-box:fill-box;transform-origin:50% 0;animation:theme-sway 3s ease-in-out var(--d) infinite alternate}
@keyframes theme-sway{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}

/* ---------- Card decorations ---------- */
.theme-web{position:absolute;top:0;width:86px;height:86px;pointer-events:none;z-index:3;opacity:.5;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 86 86' fill='none' stroke='%23fff' stroke-width='1.1' stroke-linecap='round'%3E%3Cpath d='M86 0 6 80M86 0 32 86M86 0 0 54M86 0 60 86M86 0 0 26'/%3E%3Cpath d='M76 0q-2 9-6 14q-6 1-12 5q-4 6-12 6q-5-1-10 4M86 12q-8 2-12 8q-1 7-7 11q-7 2-10 9q-6 3-12 1M86 28q-9 2-13 9q-1 9-9 13q-8 0-12 8q-7 3-13 0M86 46q-8 3-11 11q-2 8-10 11q-8 1-12 9'/%3E%3C/svg%3E") no-repeat}
.theme-web.is-right{right:0}.theme-web.is-left{left:0;transform:scaleX(-1)}
.theme-spider{position:absolute;right:14%;top:0;z-index:4;pointer-events:none;display:flex;flex-direction:column;align-items:center;animation:theme-dangle 4.5s ease-in-out infinite;transform-origin:50% 0}
.theme-spider i{width:1px;height:46px;background:linear-gradient(#ffffff00,#ffffffb0);transition:height .6s cubic-bezier(.3,1.4,.5,1)}
.theme-spider img{width:30px;height:auto;image-rendering:pixelated;filter:drop-shadow(0 0 1px #c9b8ffaa) drop-shadow(0 3px 4px #0008)}
.brand-card:hover .theme-spider i{height:110px}
.theme-spider.is-header{top:100%;right:9%;z-index:24}
@keyframes theme-dangle{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.theme-cap{position:absolute;left:0;right:0;top:-1px;height:21px;z-index:3;pointer-events:none;border-top-left-radius:inherit;border-top-right-radius:inherit;overflow:hidden;background:url(themes/snowcap.svg) repeat-x 0 0/84px 21px;filter:drop-shadow(0 2px 1px #0a1a3340)}

html[data-theme] .theme-egg{position:absolute;z-index:6;width:34px;height:42px;min-width:0;min-height:0;max-width:none;margin:0;padding:0;border:0;background:none;box-shadow:none;cursor:pointer;transform:rotate(var(--tilt));transition:transform .25s;animation:theme-egg-wiggle 5s ease-in-out infinite}
html[data-theme] .theme-egg img{display:block;width:100%;height:100%;max-width:none;margin:0;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 3px 4px #0007)}
html[data-theme] .theme-egg:hover{transform:rotate(0) scale(1.18)}
html[data-theme] .theme-egg:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:8px}
.theme-egg.is-tl{left:10px;top:10px}.theme-egg.is-tr{right:12px;top:10px}.theme-egg.is-bl{left:12px;bottom:10px}.theme-egg.is-br{right:12px;bottom:10px}
html[data-theme] .theme-egg.is-found{animation:theme-egg-pop .6s cubic-bezier(.2,1.6,.4,1) forwards;pointer-events:none}
@keyframes theme-egg-wiggle{0%,86%,100%{rotate:0deg}89%{rotate:-9deg}92%{rotate:9deg}95%{rotate:-5deg}}
@keyframes theme-egg-pop{40%{transform:scale(1.6) rotate(0);opacity:1}100%{transform:scale(.2) translateY(-60px);opacity:0}}

.theme-pop-heart{position:fixed;z-index:31;width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);pointer-events:none;image-rendering:pixelated;animation:theme-heart var(--d) ease-out forwards}
@keyframes theme-heart{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1.1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.8)}}
.theme-toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:86;padding:12px 20px;border-radius:13px;background:#fff;color:#1b1420;font-weight:900;box-shadow:0 12px 32px #0009;transition:opacity .25s,transform .25s;max-width:calc(100% - 30px);text-align:center}
.theme-toast.is-on{opacity:1;transform:translate(-50%,0)}

/* ---------- Per-theme finishing touches ---------- */
[data-theme=halloween] .events-hero h1,[data-theme=halloween] .page-heading h1{text-shadow:0 0 28px #ff8a1c44}
[data-theme=christmas] .brand-card,[data-theme=winter] .brand-card{box-shadow:0 5px 0 var(--t-brand-drop),0 0 60px var(--t-a-soft)}
[data-theme=valentines] .button:not(.button-dark):not(.button-subtle):hover{box-shadow:0 6px 22px #ff6fae55}
[data-theme=newyear] .brand-card::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 25%,#fff8 0 1px,transparent 2px),radial-gradient(circle at 78% 30%,#fff8 0 1px,transparent 2px),radial-gradient(circle at 70% 78%,#fff8 0 1px,transparent 2px),radial-gradient(circle at 25% 75%,#fff8 0 1px,transparent 2px);animation:theme-twinkle 2s ease-in-out infinite;pointer-events:none}

@media(max-width:760px){.theme-web{width:62px;height:62px;background-size:62px}.theme-garland{height:44px}}
@media(prefers-reduced-motion:reduce){.theme-floats img{top:var(--top);opacity:var(--peak);animation:none;transform:rotate(var(--spin))}.theme-floats.is-down img{top:var(--top)}
  .theme-banner{max-height:none}.theme-banner::before,.theme-fog span,.theme-aurora span,.theme-sunrays,.theme-waves span,.theme-spider,.theme-bulb,.theme-flag,.theme-egg,.theme-fireglow,.theme-banner-icon{animation:none}}
