/* Seasonal site themes (2026-10-30). season.js sets html[data-season] and html[data-season-mode] and
   loads season-<id>.css, the generated colour overrides (tools/build-season-css.cjs). The rules below are
   hand-written: palette variables, decorations and the home page scene. Puzzle sheets keep their own
   appearance template. "default" keeps the everyday look. */

/* Shapes, used as masks so each takes its colour from CSS. */
:root {
  --shape-pumpkin: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M11 6.2c0-1.7.7-3.1 2.3-3.9l.9 1.3c-1 .6-1.3 1.5-1.3 2.6Z'/><path d='M12 6.6c-1.3-.8-3.5-1-5.2 0C4.3 8 3.4 10.6 3.4 13.3c0 2.9 1.4 5.5 4 6.4 1.5.5 3.1.1 4.6-.6 1.5.7 3.1 1.1 4.6.6 2.6-.9 4-3.5 4-6.4 0-2.7-.9-5.3-3.4-6.7-1.7-1-3.9-.8-5.2 0Z'/></svg>");
  --shape-bat: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 14'><path d='M12 4.2c.5-.6.8-1.3.8-2.2.6.4 1 .9 1.2 1.6 2.6-1.6 5.6-2 8.8-1.3-1.5 1.1-2.2 2.7-2.1 4.6-1.6-.8-3.4-.5-4.6.9-.9-.9-2.3-1.2-3.4-.6L12 9l-.7-1.8c-1.1-.6-2.5-.3-3.4.6-1.2-1.4-3-1.7-4.6-.9.1-1.9-.6-3.5-2.1-4.6 3.2-.7 6.2-.3 8.8 1.3.2-.7.6-1.2 1.2-1.6 0 .9.3 1.6.8 2.2Z'/></svg>");
  --shape-ghost: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 26'><path fill-rule='evenodd' d='M12 1a9 9 0 0 0-9 9v15l3-2.4 3 2.4 3-2.4 3 2.4 3-2.4 3 2.4V10a9 9 0 0 0-9-9Zm-3.2 8a1.6 1.6 0 1 0 0 3.2 1.6 1.6 0 0 0 0-3.2Zm6.4 0a1.6 1.6 0 1 0 0 3.2 1.6 1.6 0 0 0 0-3.2ZM12 14.5a2 2.4 0 1 0 0 4.8 2 2.4 0 0 0 0-4.8Z'/></svg>");
  --shape-leaf: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2.5l1.8 3.6 3.4-1.5-.9 3.8 3.6 1-3 2.3 1.5 3.1-3.7-.8-.5 3.6L12 15l-2.2 2.6-.5-3.6-3.7.8 1.5-3.1-3-2.3 3.6-1-.9-3.8 3.4 1.5ZM11.2 15h1.6v6.5h-1.6z'/></svg>");
  --shape-tree: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2 6.5 9H9l-4.2 5.5h3.6L4 20h7v2h2v-2h7l-4.4-5.5h3.6L15 9h2.5Z'/></svg>");
  --shape-star: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m12 2 2.9 6.6 7.1.6-5.4 4.7 1.6 7.1L12 17.3 5.8 21l1.6-7.1L2 9.2l7.1-.6Z'/></svg>");
  --shape-snowflake: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'><path d='M12 2.5v19M3.8 7.2l16.4 9.6M3.8 16.8l16.4-9.6M9.3 4.2 12 6l2.7-1.8M9.3 19.8 12 18l2.7 1.8'/></svg>");
  --shape-spark: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'><path d='M12 2v6M12 16v6M2 12h6M16 12h6M5 5l4 4M15 15l4 4M5 19l4-4M15 9l4-4'/></svg>");
  --shape-tulip: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 13.2c3 0 5-2.6 5-6.7l-2.5 1.6L12 4 9.5 8.1 7 6.5c0 4.1 2 6.7 5 6.7ZM11 13h2v9h-2zM13 20c.6-2.7 2.9-4.3 6-4.3-.5 2.6-2.7 4.3-6 4.3Z'/></svg>");
  --shape-petal: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2c5 4 7 9 4 15-1.5 3-6.5 3-8 0C5 11 7 6 12 2Z'/></svg>");
  --shape-butterfly: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 20'><path d='M12 6C9-1 1 0 2 6c.6 3.5 4 5 7 4.5C6 12 5 17 9 18c2 .5 3-2 3-5 0 3 1 5.5 3 5 4-1 3-6 0-7.5 3 .5 6.4-1 7-4.5 1-6-7-7-10 0Z'/></svg>");
  --shape-sun: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black' stroke='black' stroke-width='2' stroke-linecap='round'><circle cx='12' cy='12' r='4.5'/><path d='M12 2v2.5M12 19.5V22M2 12h2.5M19.5 12H22M4.9 4.9l1.8 1.8M17.3 17.3l1.8 1.8M4.9 19.1l1.8-1.8M17.3 6.7l1.8-1.8'/></svg>");
  --shape-bird: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'><path d='M1 4c4-2 8-1 11 4 3-5 7-6 11-4-4 0-7 2-11 7C8 6 5 4 1 4Z'/></svg>");
  --shape-pencil: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M4 20.2 5 15 15.4 4.6a2 2 0 0 1 2.8 0l1.2 1.2a2 2 0 0 1 0 2.8L9 19Z'/></svg>");
  --shape-plane: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'><path d='M1 8 23 1l-7 14-4-5-3 4V9l10-6L8 9Z'/></svg>");
  --shape-cap: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 4 1.5 9 12 14l8-3.8V16h1.5V9.2ZM6 12.6v3.6c0 1.6 2.7 2.8 6 2.8s6-1.2 6-2.8v-3.6L12 15.5Z'/></svg>");
  --shape-apple: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 7.5c-1.7-1.2-4.6-1.4-6.3.6C4 10.2 4.4 14 6 16.8c1.3 2.3 3 3.9 4.6 3.4.6-.2 1-.4 1.4-.4s.8.2 1.4.4c1.6.5 3.3-1.1 4.6-3.4 1.6-2.8 2-6.6.3-8.7-1.7-2-4.6-1.8-6.3-.6ZM12 7.5c0-2 .8-3.6 2.6-4.5l.8 1.2c-1.3.7-1.9 1.8-1.9 3.3ZM13.5 5.5c1.5-1.4 3.4-1.6 4.8-1-.7 1.6-2.6 2.4-4.8 1Z'/></svg>");
  --shape-tie: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9.5 2h5l-1.2 3h-2.6ZM10.6 5.6h2.8L16 17l-4 5-4-5Z'/></svg>");
  --shape-boot: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M8 6h6v6.6l5 2.6c1.2.6 2 1.8 2 3.2V21H8ZM6.5 2.5h9v3h-9z'/></svg>");
  --shape-egg: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 2C8.2 2 5 8.6 5 14a7 7 0 0 0 14 0c0-5.4-3.2-12-7-12Z'/></svg>");
  --shape-heart: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 21s-7.5-4.6-9.6-9.3C.9 8.3 2.8 4.5 6.5 4.2c2.2-.2 3.8 1 5.5 3 1.7-2 3.3-3.2 5.5-3 3.7.3 5.6 4.1 4.1 7.5C19.5 16.4 12 21 12 21Z'/></svg>");
  --shape-balloon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'><path d='M12 1C6.5 1 3 5.5 3 11c0 6 4.5 11 9 11.7C16.5 22 21 17 21 11c0-5.5-3.5-10-9-10Zm-1.2 22h2.4l-.7 1.8c1.6 2.2-1 3.2.7 7.2h-1.4c-1.5-3.8 1-5-.5-7.2Z'/></svg>");
}

/* Palettes. Each season has a light and a dark set; the generated file maps every page colour. */
html[data-season] { --season-on-accent: #ffffff; }
html[data-season="halloween"] { --season-ink: #2e1a40; --season-ink-2: #4a2f5e; --season-muted: #6b5878; --season-line: #e6d3c2; --season-canvas: #fbf4ec; --season-soft: #f6e7d8; --season-surface: #fffaf4; --season-accent: #e8660c; --season-accent-strong: #b84d05; --season-mark: var(--shape-pumpkin); --season-logo: url("./favicon-halloween.svg"); --season-orbit: radial-gradient(circle at 70% 28%, #fff3d6 0 13%, transparent 13.5%), linear-gradient(160deg, #3a1f4d, #6b3b7f 70%, #e8660c); --season-intro: linear-gradient(150deg, #2e1a40, #4f2a6b 70%, #8a3d12); --season-intro-base: #3a1f4d; --season-intro-accent: #ffb36b; }
html[data-season="autumn"] { --season-ink: #3b2414; --season-ink-2: #5c3014; --season-muted: #6e5543; --season-line: #ead2b8; --season-canvas: #fcf5ec; --season-soft: #f6e5d1; --season-surface: #fffaf3; --season-accent: #b4501c; --season-accent-strong: #8a3b12; --season-mark: var(--shape-leaf); --season-logo: url("./favicon-autumn.svg"); --season-orbit: radial-gradient(circle at 72% 26%, #fff1d2 0 12%, transparent 12.5%), linear-gradient(165deg, #f6d7a7, #e2732a 62%, #8a3b12); --season-intro: linear-gradient(150deg, #5c2a12, #8a3b12 65%, #c4752a); --season-intro-base: #6b3518; --season-intro-accent: #ffd08a; }
html[data-season="christmas"] { --season-ink: #1d3323; --season-ink-2: #24502f; --season-muted: #5c5a4b; --season-line: #e6dcc6; --season-canvas: #fbf8f0; --season-soft: #f2ecdc; --season-surface: #fffdf7; --season-accent: #b3262d; --season-accent-strong: #8e1b1b; --season-mark: var(--shape-tree); --season-logo: url("./favicon-christmas.svg"); --season-orbit: radial-gradient(circle at 70% 26%, #fff6d0 0 6%, transparent 6.5%), linear-gradient(160deg, #1f4a2c, #24502f 55%, #8e1b1b); --season-intro: linear-gradient(150deg, #173d24, #1f4a2c 60%, #8e1b1b); --season-intro-base: #1f4a2c; --season-intro-accent: #f2cf6b; }
html[data-season="winter"] { --season-ink: #10233a; --season-ink-2: #1c3b5e; --season-muted: #4d6378; --season-line: #d3e1ee; --season-canvas: #f4f8fc; --season-soft: #e6eff8; --season-surface: #fbfdff; --season-accent: #4b3fa8; --season-accent-strong: #352c83; --season-mark: var(--shape-snowflake); --season-logo: url("./favicon-winter.svg"); --season-orbit: radial-gradient(circle at 72% 26%, #ffffff 0 9%, transparent 9.5%), linear-gradient(170deg, #0f2742, #2c4f78 65%, #9fc3e6); --season-intro: linear-gradient(150deg, #0f2742, #1c3b5e 65%, #4b3fa8); --season-intro-base: #10233a; --season-intro-accent: #ffd36b; }
html[data-season="spring"] { --season-ink: #24401f; --season-ink-2: #3d6b35; --season-muted: #5b6b52; --season-line: #dfe8cf; --season-canvas: #f9fcf3; --season-soft: #eef6e2; --season-surface: #fefffa; --season-accent: #b03a5e; --season-accent-strong: #8e2b4a; --season-mark: var(--shape-tulip); --season-logo: url("./favicon-spring.svg"); --season-orbit: radial-gradient(circle at 72% 26%, #fff3b0 0 12%, transparent 12.5%), linear-gradient(170deg, #cfe9f7, #f7c9d2 55%, #9cc97f); --season-intro: linear-gradient(150deg, #2f5a29, #3d6b35 60%, #b03a5e); --season-intro-base: #2f5a29; --season-intro-accent: #ffd6e0; }
html[data-season="summer"] { --season-ink: #0f3a52; --season-ink-2: #145a7c; --season-muted: #4f6672; --season-line: #d6e9f0; --season-canvas: #fdfaf2; --season-soft: #f3efe0; --season-surface: #fffdf7; --season-accent: #c4500e; --season-accent-strong: #9c3f0a; --season-mark: var(--shape-sun); --season-logo: url("./favicon-summer.svg"); --season-orbit: radial-gradient(circle at 72% 26%, #fff6c4 0 14%, transparent 14.5%), linear-gradient(180deg, #8fd3f0, #4fb3d9 55%, #f4d79a 56%, #e9c47f); --season-intro: linear-gradient(150deg, #0f5f86, #1e7aa3 60%, #e07b12); --season-intro-base: #0f5f86; --season-intro-accent: #ffe08a; }
html[data-season="school"] { --season-ink: #1a2f55; --season-ink-2: #1d4f91; --season-muted: #56637a; --season-line: #e6dfc8; --season-canvas: #fbf9f1; --season-soft: #f3efe0; --season-surface: #fffefa; --season-accent: #b8302a; --season-accent-strong: #922520; --season-mark: var(--shape-pencil); --season-logo: url("./favicon-school.svg"); --season-orbit: linear-gradient(transparent 94%, #9cc0e8 94%) 0 0 / 100% 22px, linear-gradient(90deg, transparent 18%, #e88aa0 18% 19%, transparent 19%), #fffef6; --season-intro: linear-gradient(150deg, #244b3a, #2f5f49 65%, #1d4f91); --season-intro-base: #244b3a; --season-intro-accent: #ffe08a; }
html[data-season="birthday"] { --season-ink: #3b2150; --season-ink-2: #5b3a73; --season-muted: #6d5a74; --season-line: #ecd6e4; --season-canvas: #fdf7fa; --season-soft: #f7e8f0; --season-surface: #fffbfd; --season-accent: #b0306a; --season-accent-strong: #8c2454; --season-mark: var(--shape-balloon); --season-logo: url("./favicon-birthday.svg"); --season-orbit: radial-gradient(circle at 25% 30%, #ffd166 0 4%, transparent 4.5%), radial-gradient(circle at 70% 60%, #7fb6e6 0 3%, transparent 3.5%), radial-gradient(circle at 40% 75%, #9fd36b 0 3.5%, transparent 4%), linear-gradient(160deg, #f7c9dc, #d7b5f0 60%, #b0306a); --season-intro: linear-gradient(150deg, #4a2d63, #5b3a73 60%, #b0306a); --season-intro-base: #4a2d63; --season-intro-accent: #ffd166; }
html[data-season][data-season-mode="dark"] { color-scheme: dark; --season-on-accent: #160e05; }
html[data-season="halloween"][data-season-mode="dark"] { --season-ink: #f6eadb; --season-ink-2: #ffd9b0; --season-muted: #c3b3d6; --season-line: #3f3052; --season-canvas: #120d18; --season-soft: #1d1527; --season-surface: #1a1322; --season-accent: #ff8a1f; --season-accent-strong: #ffa34d; }
html[data-season="autumn"][data-season-mode="dark"] { --season-ink: #f8e9d6; --season-ink-2: #ffd3a3; --season-muted: #d2b9a0; --season-line: #4a3324; --season-canvas: #150e09; --season-soft: #21160f; --season-surface: #1d140d; --season-accent: #f08a3c; --season-accent-strong: #ffa95e; }
html[data-season="christmas"][data-season-mode="dark"] { --season-ink: #f8f0dc; --season-ink-2: #f2cf6b; --season-muted: #b9c9b6; --season-line: #2c4433; --season-canvas: #0b1610; --season-soft: #122218; --season-surface: #0f1d14; --season-accent: #f2cf6b; --season-accent-strong: #ffe08f; }
html[data-season="winter"][data-season-mode="dark"] { --season-ink: #eaf3fc; --season-ink-2: #cfe3f7; --season-muted: #a9c3dc; --season-line: #24405f; --season-canvas: #08121f; --season-soft: #0f1d2e; --season-surface: #0c1828; --season-accent: #ffd36b; --season-accent-strong: #ffe39a; }
html[data-season="spring"][data-season-mode="dark"] { --season-ink: #f6f6e4; --season-ink-2: #ffd6e0; --season-muted: #bfd0b0; --season-line: #2d4428; --season-canvas: #0c150b; --season-soft: #142112; --season-surface: #111c0f; --season-accent: #f59bb3; --season-accent-strong: #ffbccd; }
html[data-season="summer"][data-season-mode="dark"] { --season-ink: #fbf3df; --season-ink-2: #ffe08a; --season-muted: #a9c8d6; --season-line: #1f4258; --season-canvas: #06141d; --season-soft: #0c202d; --season-surface: #0a1b26; --season-accent: #ffc23d; --season-accent-strong: #ffd56e; }
html[data-season="school"][data-season-mode="dark"] { --season-ink: #f4f1e2; --season-ink-2: #ffe08a; --season-muted: #b8c8bd; --season-line: #2c4637; --season-canvas: #0d1712; --season-soft: #15231b; --season-surface: #111e17; --season-accent: #ffe08a; --season-accent-strong: #fff0b8; }
html[data-season="valentine"] { --season-ink: #4a1023; --season-ink-2: #7a1630; --season-muted: #75505c; --season-line: #f1d3db; --season-canvas: #fff7f8; --season-soft: #fde8ec; --season-surface: #fffbfc; --season-accent: #c2185b; --season-accent-strong: #9a1240; --season-mark: var(--shape-heart); --season-logo: url("./favicon-valentine.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #ffd1dc 0 3.5%, transparent 4%), linear-gradient(160deg, #ffd1dc, #f48fb1 55%, #b0183d); --season-intro: linear-gradient(150deg, #5c0f26, #8c1d3d 60%, #c2185b); --season-intro-base: #5c0f26; --season-intro-accent: #ffc2d1; }
html[data-season="womensday"] { --season-ink: #3d1a22; --season-ink-2: #a0263c; --season-muted: #6f5a5e; --season-line: #f1d6db; --season-canvas: #fff8f8; --season-soft: #fde9ec; --season-surface: #fffcfc; --season-accent: #b3263f; --season-accent-strong: #8c1d31; --season-mark: var(--shape-tulip); --season-logo: url("./favicon-womensday.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #ffd6de 0 3.5%, transparent 4%), linear-gradient(160deg, #ffd6de, #f08a9e 55%, #3f6b3a); --season-intro: linear-gradient(150deg, #5a1424, #a0263c 60%, #b3263f); --season-intro-base: #5a1424; --season-intro-accent: #ffd6de; }
html[data-season="easter"] { --season-ink: #2f3a22; --season-ink-2: #63507d; --season-muted: #636b58; --season-line: #e3ead3; --season-canvas: #fbfcf3; --season-soft: #eff4e1; --season-surface: #fefff9; --season-accent: #7a4f9e; --season-accent-strong: #5e3b7d; --season-mark: var(--shape-egg); --season-logo: url("./favicon-easter.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #f4e5af 0 3.5%, transparent 4%), linear-gradient(160deg, #f4e5af, #d5bde4 55%, #9cc97f); --season-intro: linear-gradient(150deg, #3f5a2d, #63507d 60%, #7a4f9e); --season-intro-base: #3f5a2d; --season-intro-accent: #f4e5af; }
html[data-season="mothersday"] { --season-ink: #2f2140; --season-ink-2: #6a3d8f; --season-muted: #6c5d78; --season-line: #eadcf3; --season-canvas: #fcf8ff; --season-soft: #f3eafa; --season-surface: #fefcff; --season-accent: #8a3f9e; --season-accent-strong: #6a2f7a; --season-mark: var(--shape-heart); --season-logo: url("./favicon-mothersday.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #ffe0f0 0 3.5%, transparent 4%), linear-gradient(160deg, #ffe0f0, #d5b3ec 55%, #8a3f9e); --season-intro: linear-gradient(150deg, #3d2356, #8a3f9e 60%, #8a3f9e); --season-intro-base: #3d2356; --season-intro-accent: #ffd1ea; }
html[data-season="graduation"] { --season-ink: #18223f; --season-ink-2: #1d2f5e; --season-muted: #5b6378; --season-line: #e2e6ef; --season-canvas: #fbfaf5; --season-soft: #f1efe3; --season-surface: #fffefa; --season-accent: #1d2f5e; --season-accent-strong: #121f42; --season-mark: var(--shape-cap); --season-logo: url("./favicon-graduation.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #f2d27a 0 3.5%, transparent 4%), linear-gradient(160deg, #f2d27a, #8d98b6 55%, #1d2f5e); --season-intro: linear-gradient(150deg, #121f42, #2b3d6b 60%, #1d2f5e); --season-intro-base: #121f42; --season-intro-accent: #f2d27a; }
html[data-season="teachersday"] { --season-ink: #1f3327; --season-ink-2: #2f5a3f; --season-muted: #5f6b60; --season-line: #dde8d8; --season-canvas: #fafcf6; --season-soft: #eef4ea; --season-surface: #fefffb; --season-accent: #b5302b; --season-accent-strong: #8f2420; --season-mark: var(--shape-apple); --season-logo: url("./favicon-teachersday.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #ffd0c4 0 3.5%, transparent 4%), linear-gradient(160deg, #ffd0c4, #87a08d 55%, #2f5a3f); --season-intro: linear-gradient(150deg, #1e3a28, #2f5a3f 60%, #b5302b); --season-intro-base: #1e3a28; --season-intro-accent: #ffd0c4; }
html[data-season="fathersday"] { --season-ink: #1b2638; --season-ink-2: #23395b; --season-muted: #566174; --season-line: #dfe4ec; --season-canvas: #f8f9fb; --season-soft: #edf0f5; --season-surface: #fdfdfe; --season-accent: #9a5b25; --season-accent-strong: #7a461b; --season-mark: var(--shape-tie); --season-logo: url("./favicon-fathersday.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #e9c99b 0 3.5%, transparent 4%), linear-gradient(160deg, #e9c99b, #8b97ab 55%, #23395b); --season-intro: linear-gradient(150deg, #18263d, #34445e 60%, #9a5b25); --season-intro-base: #18263d; --season-intro-accent: #e9c99b; }
html[data-season="mikulas"] { --season-ink: #2b1616; --season-ink-2: #b21f24; --season-muted: #6e5b5b; --season-line: #f1d7d6; --season-canvas: #fff9f9; --season-soft: #fdeceb; --season-surface: #fffdfd; --season-accent: #c0262c; --season-accent-strong: #951c21; --season-mark: var(--shape-boot); --season-logo: url("./favicon-mikulas.svg"); --season-orbit: radial-gradient(circle at 28% 30%, #ffffff 0 3%, transparent 3.5%), radial-gradient(circle at 72% 62%, #ffffff 0 3.5%, transparent 4%), linear-gradient(160deg, #ffffff, #f28c8f 55%, #b21f24); --season-intro: linear-gradient(150deg, #6b1013, #b21f24 60%, #c0262c); --season-intro-base: #6b1013; --season-intro-accent: #ffffff; }
html[data-season="birthday"][data-season-mode="dark"] { --season-ink: #fbeef6; --season-ink-2: #ffd166; --season-muted: #d1bfd8; --season-line: #43304f; --season-canvas: #140d19; --season-soft: #1f1526; --season-surface: #1a1121; --season-accent: #ffd166; --season-accent-strong: #ffe199; }
html[data-season="valentine"][data-season-mode="dark"] { --season-ink: #ffeef2; --season-ink-2: #ffc2d1; --season-muted: #e3bcc7; --season-line: #4e1a2b; --season-canvas: #1c070e; --season-soft: #2a0d17; --season-surface: #240a13; --season-accent: #ff8fab; --season-accent-strong: #ffb3c6; --season-on-accent: #2a0712; }
html[data-season="womensday"][data-season-mode="dark"] { --season-ink: #fff0f2; --season-ink-2: #ffb3c1; --season-muted: #e0c0c7; --season-line: #4a1d27; --season-canvas: #1a0a0e; --season-soft: #2a1218; --season-surface: #220d13; --season-accent: #ff8fa3; --season-accent-strong: #ffb3c1; --season-on-accent: #2a0a12; }
html[data-season="easter"][data-season-mode="dark"] { --season-ink: #f4f7ea; --season-ink-2: #f4e5af; --season-muted: #cdd3bf; --season-line: #34402a; --season-canvas: #10140b; --season-soft: #1b2214; --season-surface: #161c10; --season-accent: #c9a6ef; --season-accent-strong: #dcc3f5; --season-on-accent: #1d1228; }
html[data-season="mothersday"][data-season-mode="dark"] { --season-ink: #f8f0ff; --season-ink-2: #f2b8dc; --season-muted: #d6c6e2; --season-line: #3b2a4c; --season-canvas: #130d1a; --season-soft: #1f1629; --season-surface: #191121; --season-accent: #d7a6f0; --season-accent-strong: #e8c6f7; --season-on-accent: #22122c; }
html[data-season="graduation"][data-season-mode="dark"] { --season-ink: #f3f5fb; --season-ink-2: #f2d27a; --season-muted: #c6cbd9; --season-line: #2a3350; --season-canvas: #0c1122; --season-soft: #151c33; --season-surface: #11172b; --season-accent: #f2d27a; --season-accent-strong: #f7e2a5; --season-on-accent: #121f42; }
html[data-season="teachersday"][data-season-mode="dark"] { --season-ink: #eef6ef; --season-ink-2: #ffb4a8; --season-muted: #c3d2c6; --season-line: #2a3d30; --season-canvas: #0d1610; --season-soft: #16231a; --season-surface: #121d15; --season-accent: #ff8f82; --season-accent-strong: #ffb4a8; --season-on-accent: #2a0d0a; }
html[data-season="fathersday"][data-season-mode="dark"] { --season-ink: #f1f4f8; --season-ink-2: #e9c99b; --season-muted: #c5ccd8; --season-line: #2a3446; --season-canvas: #0d121b; --season-soft: #161d2a; --season-surface: #121825; --season-accent: #e9b77a; --season-accent-strong: #f2cfa0; --season-on-accent: #1b2638; }
html[data-season="mikulas"][data-season-mode="dark"] { --season-ink: #fff2f2; --season-ink-2: #ffb3b1; --season-muted: #e2c2c1; --season-line: #4a1b1c; --season-canvas: #1a0909; --season-soft: #2a1111; --season-surface: #220c0c; --season-accent: #ff8a8c; --season-accent-strong: #ffb3b1; --season-on-accent: #2a0a0b; }

/* Header, brand and actions on every page. */
html[data-season]:not([data-season="default"]) img.brand-mark { content: var(--season-logo); }
html[data-season]:not([data-season="default"]) .wordmark::after { content: ""; width: 22px; height: 22px; margin-left: 8px; background: var(--season-accent); -webkit-mask: var(--season-mark) center / contain no-repeat; mask: var(--season-mark) center / contain no-repeat; }
html[data-season]:not([data-season="default"]) .site-header, html[data-season]:not([data-season="default"]) .topbar,
html[data-season]:not([data-season="default"]) body > header { border-bottom: 2px solid var(--season-accent); }
html[data-season]:not([data-season="default"]) .brand-dot, html[data-season]:not([data-season="default"]) .eyebrow > span,
html[data-season]:not([data-season="default"]) .site-footer .footer-brand span { color: var(--season-accent); }
html[data-season]:not([data-season="default"]) h1 > span { color: var(--season-accent-strong); }
html[data-season][data-season-mode="dark"] .button-primary,
html[data-season][data-season-mode="dark"] .generate-button { background: var(--season-accent); color: var(--season-on-accent); }
html[data-season][data-season-mode="dark"] .button-primary:hover { background: var(--season-accent-strong); }
html[data-season]:not([data-season="default"]) .step-number { color: var(--season-muted); }
html[data-season][data-season-mode="light"] .tab:not(.active) { color: var(--season-ink); }

/* Home hero orbit and the editor's intro card. */
html[data-season]:not([data-season="default"]) .art-orbit { background: var(--season-orbit); }
html[data-season]:not([data-season="default"]) .art-orbit::before { border-color: #ffffff40; }
html[data-season="halloween"] .art-orbit::after { content: ""; position: absolute; top: 9%; left: 16%; width: 16%; aspect-ratio: 24 / 14; background: #120a1a; -webkit-mask: var(--shape-bat) center / contain no-repeat; mask: var(--shape-bat) center / contain no-repeat; }
html[data-season]:not([data-season="default"]) .creator-intro { background: var(--season-intro-base) var(--season-intro); border-color: var(--season-intro-base); }
html[data-season]:not([data-season="default"]) .creator-intro h1 { color: #fffaf2; }
html[data-season]:not([data-season="default"]) .creator-intro .eyebrow, html[data-season]:not([data-season="default"]) .creator-intro h1 em { color: var(--season-intro-accent); }

/* Seasonal samples: the home page shows the season's own sample, the gallery puts it first. */
html[data-season="halloween"] .season-sample-halloween, html[data-season="autumn"] .season-sample-autumn,
html[data-season="christmas"] .season-sample-christmas, html[data-season="winter"] .season-sample-winter,
html[data-season="spring"] .season-sample-spring, html[data-season="school"] .season-sample-school,
html[data-season="birthday"] .season-sample-birthday, html[data-season="valentine"] .season-sample-valentine, html[data-season="easter"] .season-sample-easter,
html[data-season="womensday"] .season-sample-womensday,
html[data-season="mothersday"] .season-sample-mothersday,
html[data-season="graduation"] .season-sample-graduation,
html[data-season="teachersday"] .season-sample-teachersday,
html[data-season="fathersday"] .season-sample-fathersday,
html[data-season="mikulas"] .season-sample-mikulas { display: block; }
html:is([data-season="halloween"], [data-season="autumn"], [data-season="christmas"], [data-season="winter"],
  [data-season="spring"], [data-season="school"], [data-season="birthday"], [data-season="valentine"], [data-season="easter"],
  [data-season="womensday"], [data-season="mothersday"], [data-season="graduation"], [data-season="teachersday"], [data-season="fathersday"], [data-season="mikulas"]) .everyday-sample { display: none; }
html[data-season="halloween"] [data-season-sample~="halloween"], html[data-season="autumn"] [data-season-sample~="autumn"],
html[data-season="christmas"] [data-season-sample~="christmas"], html[data-season="winter"] [data-season-sample~="winter"],
html[data-season="spring"] [data-season-sample~="spring"], html[data-season="summer"] [data-season-sample~="summer"],
html[data-season="school"] [data-season-sample~="school"], html[data-season="birthday"] [data-season-sample~="birthday"],
html[data-season="valentine"] [data-season-sample~="valentine"], html[data-season="easter"] [data-season-sample~="easter"],
html[data-season="womensday"] [data-season-sample~="womensday"],
html[data-season="mothersday"] [data-season-sample~="mothersday"],
html[data-season="graduation"] [data-season-sample~="graduation"],
html[data-season="teachersday"] [data-season-sample~="teachersday"],
html[data-season="fathersday"] [data-season-sample~="fathersday"],
html[data-season="mikulas"] [data-season-sample~="mikulas"] { order: -1; }

/* Light/dark switch, added by season.js only during a season. */
.season-mode-toggle { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 8px 12px; border: 1px solid var(--season-line); border-radius: 999px; background: var(--season-surface); color: var(--season-ink); font: 650 13px/1 "Segoe UI", system-ui, sans-serif; cursor: pointer; white-space: nowrap; }
.season-mode-toggle:hover { border-color: var(--season-accent); }
.season-mode-toggle:focus-visible { outline: 3px solid var(--season-accent); outline-offset: 2px; }
.season-mode-toggle svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.season-mode-toggle.floating { position: fixed; right: 16px; bottom: 16px; z-index: 30; box-shadow: 0 6px 20px #0004; }
.topbar .season-mode-toggle { margin-left: 4px; }
@media (max-width: 760px) { .season-mode-toggle .season-mode-label { display: none; } .season-mode-toggle { padding: 8px 10px; } }

/* Home page scene behind the content (season.js adds the layer and its particles). */
.season-haunt { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.home-page > :not(.season-haunt):not(.skip-link) { position: relative; z-index: 1; }
.home-page > .home-header { position: sticky; z-index: 5; }
.season-haunt .particle { position: absolute; width: var(--size, 24px); aspect-ratio: 1; background: var(--colour); opacity: 0; -webkit-mask: var(--shape) center / contain no-repeat; mask: var(--shape) center / contain no-repeat; }
.season-haunt .shape-ghost { --shape: var(--shape-ghost); --colour: #f3ecff; aspect-ratio: 24 / 26; filter: drop-shadow(0 0 10px #c9b6ff66); }
.season-haunt .shape-bat { --shape: var(--shape-bat); --colour: #3a1f4d; aspect-ratio: 24 / 14; }
.season-haunt .shape-leaf { --shape: var(--shape-leaf); }
.season-haunt .shape-star { --shape: var(--shape-star); }
.season-haunt .shape-spark { --shape: var(--shape-spark); }
.season-haunt .shape-petal { --shape: var(--shape-petal); }
.season-haunt .shape-butterfly { --shape: var(--shape-butterfly); aspect-ratio: 24 / 20; }
.season-haunt .shape-bird { --shape: var(--shape-bird); aspect-ratio: 2; }
.season-haunt .shape-plane { --shape: var(--shape-plane); aspect-ratio: 24 / 16; }
.season-haunt .shape-balloon { --shape: var(--shape-balloon); aspect-ratio: 24 / 32; }
.season-haunt .shape-heart { --shape: var(--shape-heart); }
.season-haunt .shape-cap { --shape: var(--shape-cap); }
.season-haunt .shape-apple { --shape: var(--shape-apple); }
.season-haunt .shape-tie { --shape: var(--shape-tie); }
.season-haunt .shape-boot { --shape: var(--shape-boot); }
.season-haunt .shape-egg { --shape: var(--shape-egg); }
.season-haunt .shape-snow, .season-haunt .shape-bubble { -webkit-mask: none; mask: none; border-radius: 50%; }
.season-haunt .shape-bubble { background: radial-gradient(circle at 35% 35%, #ffffffcc 0 18%, #ffffff33 40%, #ffffff10 70%); border: 1px solid #ffffff99; }
.season-haunt .shape-confetti { -webkit-mask: none; mask: none; aspect-ratio: .55; border-radius: 1px; }
.season-haunt .shape-letter { -webkit-mask: none; mask: none; background: none; color: var(--colour); font: 700 var(--size) Georgia, serif; width: auto; aspect-ratio: auto; }
html[data-season-mode="light"] .season-haunt .shape-snow { background: #9fbcd9; }
html[data-season-mode="light"] .season-haunt .shape-ghost { --colour: #8b74a8; filter: none; }
html[data-season-mode="light"] .season-haunt .shape-bubble { background: radial-gradient(circle at 35% 35%, #ffffffee 0 18%, #8fd3f066 45%, #4fb3d91a 75%); border-color: #4fb3d999; }
html[data-season="halloween"][data-season-mode="dark"] .season-haunt .shape-bat { --colour: #3b2a4f; }
.season-haunt .rise { bottom: -120px; animation: season-rise var(--duration) linear var(--delay) infinite; }
.season-haunt .fall { top: -60px; animation: season-fall var(--duration) linear var(--delay) infinite; }
.season-haunt .fly { animation: season-fly var(--duration) linear var(--delay) infinite; }
.season-haunt .fly:is(.shape-bat, .shape-bird, .shape-butterfly) { animation: season-fly var(--duration) linear var(--delay) infinite, season-flap .32s ease-in-out infinite alternate; }
.season-haunt .twinkle { animation: season-twinkle var(--duration) ease-in-out var(--delay) infinite; }
@keyframes season-rise {
  0% { transform: translate(0, 0) scale(.9); opacity: 0; }
  12% { opacity: var(--alpha); }
  50% { transform: translate(var(--sway), -55vh) scale(1); }
  88% { opacity: var(--alpha); }
  100% { transform: translate(0, calc(-100vh - 160px)) scale(1.05); opacity: 0; }
}
@keyframes season-fall {
  0% { transform: translate(0, 0) rotate(0); opacity: 0; }
  8% { opacity: var(--alpha); }
  50% { transform: translate(var(--sway), 52vh) rotate(calc(var(--spin) / 2)); }
  92% { opacity: var(--alpha); }
  100% { transform: translate(calc(var(--sway) * -.4), calc(100vh + 80px)) rotate(var(--spin)); opacity: 0; }
}
@keyframes season-fly {
  0% { transform: translate(-12vw, 0); opacity: var(--alpha); }
  25% { transform: translate(25vw, -4vh); }
  50% { transform: translate(55vw, 3vh); }
  75% { transform: translate(85vw, -3vh); }
  100% { transform: translate(115vw, 1vh); opacity: var(--alpha); }
}
@keyframes season-flap { from { scale: 1 1; } to { scale: 1 .45; } }
@keyframes season-twinkle { 0%, 100% { opacity: 0; transform: scale(.4) rotate(0); } 50% { opacity: var(--alpha); transform: scale(1) rotate(45deg); } }
@media (prefers-reduced-motion: reduce) {
  .season-haunt .particle { animation: none !important; opacity: var(--alpha); top: var(--rest); bottom: auto; }
  .season-haunt .fly { left: 70% !important; }
}

@media print {
  .season-haunt, .season-mode-toggle, html[data-season] .wordmark::after, html[data-season] .art-orbit::after { display: none !important; }
}
