/* Public-site themes only. Game canvases and the admin keep their own palette. */
html[data-site-theme="ocean"] {
    --ink:#153c50; --text:#385768; --muted:#526e7b; --page:#eef8fc; --surface:#fff;
    --primary:#08759a; --primary-dark:#075b7c; --border:#c9e2ec;
    --teal:#087b84; --teal-soft:#e0f5f7; --violet:#286299; --violet-soft:#e5effb;
    --theme-wash:#dceff8; --theme-band:#075985; --radius-md:1.6rem;
}
html[data-site-theme="forest"] {
    --ink:#203c2c; --text:#405b49; --muted:#5a7061; --page:#f0f6ed; --surface:#fffef9;
    --primary:#337245; --primary-dark:#245b36; --border:#d0deca;
    --teal:#2d7051; --teal-soft:#e6f1e2; --violet:#5d6131; --violet-soft:#f0f1dc;
    --theme-wash:#e6efda; --theme-band:#245b3e; --radius-md:1.8rem;
}
html[data-site-theme="paper"] {
    --ink:#342b23; --text:#594b3e; --muted:#72604f; --page:#f5efdf; --surface:#fffdf5;
    --primary:#84512f; --primary-dark:#704022; --border:#ded0b6;
    --teal:#65543c; --teal-soft:#f0ead9; --violet:#805939; --violet-soft:#f4e7d4;
    --theme-wash:#eee2c9; --theme-band:#493728; --radius-sm:.25rem; --radius-md:.35rem; --radius-lg:.5rem;
    --font-display:Georgia,"Times New Roman",serif;
    --shadow-sm:0 4px 12px #4937280d; --shadow-lg:0 8px 24px #49372818;
}
html[data-site-theme="christmas"] {
    --ink:#382b30; --text:#58484c; --muted:#735d63; --page:#fcf3ef; --surface:#fffefa;
    --primary:#a1283a; --primary-dark:#861e2e; --border:#e9d1c9;
    --teal:#276444; --teal-soft:#e6f2e8; --violet:#9b2436; --violet-soft:#f9e4e6;
    --theme-wash:#f5e4d9; --theme-band:#8b2332; --amber:#d2a145;
}
html[data-site-theme="easter"] {
    --ink:#3e3152; --text:#594b68; --muted:#736280; --page:#f7f2fc; --surface:#fffefa;
    --primary:#8150ac; --primary-dark:#674096; --border:#e4d7ee;
    --teal:#377667; --teal-soft:#e4f4e9; --violet:#8451ac; --violet-soft:#f3e5f8;
    --theme-wash:#f1e5ce; --theme-band:#674096; --radius-md:1.8rem;
}
html[data-site-theme]:not([data-site-theme="classic"]) .hero-section {
    background:linear-gradient(135deg,var(--page),var(--theme-wash));
}
html[data-site-theme]:not([data-site-theme="classic"]) :is(.articles-section,.catalog-hero,.trust-section) { background:var(--page); }
html[data-site-theme]:not([data-site-theme="classic"]) .room-code { background:var(--teal-soft); border-color:var(--border); }
html[data-site-theme]:not([data-site-theme="classic"]) .room-math { background:var(--violet-soft); border-color:var(--border); }
html[data-site-theme]:not([data-site-theme="classic"]) :is(.article-topic-group,.activity-card,.article-card,.catalog-item,.quotes-shell,.catalog-sidebar,.detail-aside) { border-color:var(--border); }
html[data-site-theme]:not([data-site-theme="classic"]) :is(.daily-card,.site-footer) { background:var(--theme-band); }
html[data-site-theme]:not([data-site-theme="classic"]) .site-header { border-bottom:2px solid var(--border); }
html[data-site-theme]:not([data-site-theme="classic"]) .btn-primary {
    --bs-btn-bg:var(--primary); --bs-btn-border-color:var(--primary);
    --bs-btn-hover-bg:var(--primary-dark); --bs-btn-hover-border-color:var(--primary-dark);
    --bs-btn-active-bg:var(--primary-dark); --bs-btn-active-border-color:var(--primary-dark);
    background-color:var(--primary); border-color:var(--primary); color:#fff;
}
html[data-site-theme]:not([data-site-theme="classic"]) .btn-primary:hover { background-color:var(--primary-dark); }
html[data-site-theme]:not([data-site-theme="classic"]) .page-link { color:var(--primary-dark); }
html[data-site-theme]:not([data-site-theme="classic"]) .active > .page-link { background:var(--primary); border-color:var(--primary); color:#fff; }
html[data-site-theme="paper"] :is(.room-card,.article-card,.daily-card,.quotes-shell,.article-topic-group) { border-radius:var(--radius-md); }
html[data-site-theme="paper"] .hero-grid { opacity:.12; }

.seasonal-effects { position:fixed; inset:0; overflow:hidden; pointer-events:none; user-select:none; z-index:1031; }
.seasonal-particle { position:absolute; top:-40px; left:5%; width:14px; height:14px; border-radius:50%; background:#fff; box-shadow:0 0 2px 1px #65809688; opacity:.85; animation:seasonal-fall 18s linear infinite; }
[data-seasonal-effect="snow"] .seasonal-particle:nth-child(4n+2) { background:#ef6372; }
[data-seasonal-effect="snow"] .seasonal-particle:nth-child(4n+3) { background:#e8bb45; width:18px; height:18px; }
[data-seasonal-effect="snow"] .seasonal-particle:nth-child(4n) { background:#51ad85; }
[data-seasonal-effect="eggs"] .seasonal-particle { --egg-a:#be78df; --egg-b:#ffe6a1; --egg-c:#78c6af; width:26px; height:35px; border-radius:50% 50% 46% 46%; background:repeating-linear-gradient(0deg,var(--egg-a) 0 8px,var(--egg-b) 8px 14px,var(--egg-c) 14px 21px); box-shadow:0 1px 3px #4b3c6355; }
[data-seasonal-effect="eggs"] .seasonal-particle:nth-child(3n+2) { --egg-a:#f18bab; --egg-b:#fff0b7; --egg-c:#86bae9; }
[data-seasonal-effect="eggs"] .seasonal-particle:nth-child(3n) { --egg-a:#74c7af; --egg-b:#e4c1f4; --egg-c:#f4b465; }
/* Use a small native cursor asset, not a pointer-following overlay.
   Keep native interaction cursors for links, controls and editable text. */
@media (hover:hover) and (pointer:fine) {
    html[data-site-theme="christmas"] body { cursor:url('../images/cursors/christmas.svg') 3 2, auto; }
    html[data-site-theme="easter"] body { cursor:url('../images/cursors/easter.svg') 3 2, auto; }
    html:is([data-site-theme="christmas"],[data-site-theme="easter"]) :is(a[href],button,summary,select,[role="button"],input[type="checkbox"],input[type="radio"]) { cursor:pointer; }
    html:is([data-site-theme="christmas"],[data-site-theme="easter"]) :is(textarea,input:not([type]),input[type="text"],input[type="email"],input[type="password"],input[type="search"],input[type="number"],[contenteditable="true"]) { cursor:text; }
    html:is([data-site-theme="christmas"],[data-site-theme="easter"]) :is(button,input,select,textarea):disabled { cursor:not-allowed; }
}
.seasonal-effects.is-paused .seasonal-particle { animation-play-state:paused; }
.seasonal-toggle { position:fixed; bottom:5rem; left:1rem; z-index:1032; padding:.4rem .75rem; border:1px solid var(--border); border-radius:2rem; background:#fff; color:var(--ink); font:600 .78rem/1.5 var(--font-body); box-shadow:0 2px 8px #17233c20; }
.seasonal-toggle[hidden] { display:none !important; }
@keyframes seasonal-fall { from { transform:translate3d(0,-40px,0) rotate(0); } to { transform:translate3d(35px,calc(100vh + 80px),0) rotate(200deg); } }
/* Seasonal decoration starts by default; the visible control can pause it.
   Limit this override to particles, leaving all other reduced-motion rules intact. */
@media (prefers-reduced-motion:reduce) {
    .seasonal-effects .seasonal-particle {
        animation-duration:24s !important;
        animation-iteration-count:infinite !important;
    }
}
@media print { .seasonal-effects,.seasonal-toggle { display:none !important; } }
@media (max-width:575.98px) {
    html[data-site-theme] .hero-section > .container-xl > .row { --bs-gutter-x:1.5rem; }
}
.seasonal-particle:nth-child(1) { left:37%; animation-delay:-7s; animation-duration:19s; }
.seasonal-particle:nth-child(2) { left:74%; animation-delay:-14s; animation-duration:22s; }
.seasonal-particle:nth-child(3) { left:14%; animation-delay:-21s; animation-duration:25s; }
.seasonal-particle:nth-child(4) { left:51%; animation-delay:-5s; animation-duration:28s; }
.seasonal-particle:nth-child(5) { left:88%; animation-delay:-12s; animation-duration:16s; }
.seasonal-particle:nth-child(6) { left:28%; animation-delay:-19s; animation-duration:19s; }
.seasonal-particle:nth-child(7) { left:65%; animation-delay:-3s; animation-duration:22s; }
.seasonal-particle:nth-child(8) { left:5%; animation-delay:-10s; animation-duration:25s; }
.seasonal-particle:nth-child(9) { left:42%; animation-delay:-17s; animation-duration:28s; }
.seasonal-particle:nth-child(10) { left:79%; animation-delay:-1s; animation-duration:16s; }
.seasonal-particle:nth-child(11) { left:19%; animation-delay:-8s; animation-duration:19s; }
.seasonal-particle:nth-child(12) { left:56%; animation-delay:-15s; animation-duration:22s; }
.seasonal-particle:nth-child(13) { left:93%; animation-delay:-22s; animation-duration:25s; }
.seasonal-particle:nth-child(14) { left:33%; animation-delay:-6s; animation-duration:28s; }
.seasonal-particle:nth-child(15) { left:70%; animation-delay:-13s; animation-duration:16s; }
.seasonal-particle:nth-child(16) { left:10%; animation-delay:-20s; animation-duration:19s; }
.seasonal-particle:nth-child(17) { left:47%; animation-delay:-4s; animation-duration:22s; }
.seasonal-particle:nth-child(18) { left:84%; animation-delay:-11s; animation-duration:25s; }
.seasonal-particle:nth-child(19) { left:24%; animation-delay:-18s; animation-duration:28s; }
.seasonal-particle:nth-child(20) { left:61%; animation-delay:-2s; animation-duration:16s; }
.seasonal-particle:nth-child(21) { left:1%; animation-delay:-9s; animation-duration:19s; }
.seasonal-particle:nth-child(22) { left:38%; animation-delay:-16s; animation-duration:22s; }
.seasonal-particle:nth-child(23) { left:75%; animation-delay:-0s; animation-duration:25s; }
.seasonal-particle:nth-child(24) { left:15%; animation-delay:-7s; animation-duration:28s; }
