/*
 * Seasons decorations (trudj-core module `seasons`, platform option; copied unchanged from trudj-core lib/seasons-decor.css 0.23.0).
 * A pattern for the season strip per holiday, a gentle tint on the hero photo, and the greeting bar. Keyed on the body attributes
 * from seasons_body_attrs() (data-season, data-holiday) and colored by the --season-* tokens from seasons_css(), so a site's
 * brand colors, logo and layout stay. Expects: an element .season-strip (a thin band), optional .season-banner, optional .hero-media.
 * CSS only; motion only without "reduced motion"; nothing printed.
 */
body[data-season] .season-strip { height: 8px; background-color: var(--season-accent); }

/* Patriotic days: flag bands */
body[data-holiday="presidents"] .season-strip, body[data-holiday="memorial_day"] .season-strip,
body[data-holiday="independence"] .season-strip, body[data-holiday="veterans_day"] .season-strip {
  background: repeating-linear-gradient(90deg, var(--season-accent) 0 22px, #fff 22px 28px, var(--season-accent-2) 28px 50px, #fff 50px 56px);
}
/* Independence Day: stars on the blue */
body[data-holiday="independence"] .season-strip {
  background: radial-gradient(circle, #fff 1.3px, transparent 1.8px) 0 50% / 12px 8px repeat-x,
    repeating-linear-gradient(90deg, var(--season-accent-2) 0 40%, var(--season-accent) 40% 70%, #fff 70% 100%);
  background-size: 12px 8px, 120px 8px;
}
/* Halloween: candy corn */
body[data-holiday="halloween"] .season-strip {
  background: repeating-linear-gradient(135deg, var(--season-accent) 0 10px, #ffd23f 10px 20px, #fff8ec 20px 30px);
}
/* Christmas and the holiday season: candy cane */
body[data-holiday="holidays"] .season-strip {
  background: repeating-linear-gradient(135deg, var(--season-accent) 0 9px, #fff 9px 18px, var(--season-accent-2) 18px 24px, #fff 24px 33px);
}
/* Valentine's and Mother's Day: dots */
body[data-holiday="valentines"] .season-strip, body[data-holiday="mothers_day"] .season-strip {
  background: radial-gradient(circle, var(--season-accent-2) 2.6px, transparent 3.1px) 0 50% / 14px 8px repeat-x, var(--season-accent);
}
/* New Year's (Eve): confetti on midnight */
body[data-holiday="new_years"] .season-strip, body[data-holiday="new_years_eve"] .season-strip {
  background: radial-gradient(circle at 20% 40%, #f5e6b8 1.4px, transparent 1.9px) 0 0 / 17px 8px,
    radial-gradient(circle at 70% 70%, var(--season-accent) 1.6px, transparent 2.1px) 0 0 / 23px 8px,
    radial-gradient(circle at 50% 30%, #fff 1.1px, transparent 1.6px) 0 0 / 11px 8px, var(--season-accent-2);
}
/* St. Patrick's: shamrock green check */
body[data-holiday="st_patricks"] .season-strip {
  background: repeating-linear-gradient(90deg, var(--season-accent) 0 8px, #2fa866 8px 16px), var(--season-accent);
}
/* Easter: pastel zigzag */
body[data-holiday="easter"] .season-strip {
  background: linear-gradient(135deg, var(--season-accent-2) 25%, transparent 25%) -6px 0 / 12px 8px,
    linear-gradient(225deg, var(--season-accent-2) 25%, transparent 25%) -6px 0 / 12px 8px, var(--season-accent);
}
/* Thanksgiving: harvest plaid */
body[data-holiday="thanksgiving"] .season-strip {
  background: repeating-linear-gradient(90deg, rgba(255, 255, 255, .18) 0 3px, transparent 3px 16px),
    repeating-linear-gradient(135deg, var(--season-accent) 0 12px, var(--season-accent-2) 12px 24px, #e0a040 24px 30px);
}
/* Juneteenth: red, black and green */
body[data-holiday="juneteenth"] .season-strip {
  background: repeating-linear-gradient(90deg, var(--season-accent) 0 30px, #111 30px 36px, var(--season-accent-2) 36px 66px, #111 66px 72px);
}

/* Hero photo: a gentle wash of the holiday's colors from the bottom (the text stays on top) */
body[data-holiday] .hero-media { isolation: isolate; }
body[data-holiday] .hero-media::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(to top, color-mix(in srgb, var(--season-accent-2) 45%, transparent), transparent 55%);
}
body[data-holiday="halloween"] .hero-media::before {
  background: linear-gradient(to top, rgba(58, 42, 77, .7), rgba(240, 127, 19, .12) 60%, transparent);
}

/* ---------- Dressed-up holidays (1.1.0): everything below shows only on a holiday (body[data-holiday]) ---------- */

/* Greeting bar ("Happy Halloween!"): bigger, with a tile of the holiday's icons and the band pattern above and below */
body[data-holiday] .season-banner.is-greeting {
  position: relative; padding: .85em 1em; font-size: 1.25rem; letter-spacing: .5px;
  background: var(--season-pattern-dark) 0 0 / 72px 72px, var(--season-banner-bg);
}
body[data-holiday] .season-banner.is-greeting .season-icon { width: 1.5em; height: 1.5em; }
body[data-holiday] .season-banner.is-greeting span { font-family: var(--serif, Georgia, serif); font-size: 1.15em; }

/* Section titles: the holiday's icon on either side */
body[data-holiday] .sec-title::before, body[data-holiday] .contact-sec h2::before {
  content: ""; display: inline-block; width: .8em; height: .8em; margin-right: .35em; vertical-align: -.05em;
  background: var(--season-accent); -webkit-mask: var(--season-icon) center / contain no-repeat; mask: var(--season-icon) center / contain no-repeat;
}
body[data-holiday]:not(.theme-logoline) .sec-title::after {
  content: ""; display: inline-block; width: .8em; height: .8em; margin-left: .35em; vertical-align: -.05em;
  background: var(--season-accent); -webkit-mask: var(--season-icon) center / contain no-repeat; mask: var(--season-icon) center / contain no-repeat;
}

/* Fresh / Fast / Fun band (and similar bands) in the holiday's colors */
body[data-holiday]:not(.theme-logoline) .icon-band { background: var(--season-pattern-dark) 0 0 / 72px 72px, var(--season-banner-bg); }
body[data-holiday]:not(.theme-logoline) .icon-item .icon { color: var(--season-accent); }
body[data-holiday]:not(.theme-logoline) .icon-item span { color: var(--season-banner-fg); }

/* Buttons in the holiday's colors: the main ones ("Order Online") filled with the accent, the others outlined in it.
   [data-season] is repeated in the selectors only to win over a site's own button colors. */
body[data-holiday][data-season] .pill-btn.red, body[data-holiday][data-season] .pill-btn.red:link {
  background: var(--season-accent); color: var(--season-on-accent); border-color: var(--season-accent);
  box-shadow: 0 0 0 3px rgba(255, 255, 255, .85), 0 4px 14px color-mix(in srgb, var(--season-accent) 55%, transparent);
}
body[data-holiday][data-season] .pill-btn.red:hover, body[data-holiday][data-season] .pill-btn.red:focus-visible {
  background: var(--season-accent-2); color: var(--season-on-accent-2); border-color: var(--season-accent-2);
}
body[data-holiday][data-season] .pill-btn:not(.red):not(.icon-btn) {
  background: #fff; color: var(--season-ink); box-shadow: inset 0 0 0 2px var(--season-accent), 0 2px 8px rgba(0, 0, 0, .12);
}
body[data-holiday][data-season] .pill-btn:not(.red):not(.icon-btn):hover, body[data-holiday][data-season] .pill-btn:not(.red):not(.icon-btn):focus-visible {
  background: var(--season-accent); color: var(--season-on-accent);
}
body[data-holiday][data-season] .pill-btn .icon, body[data-holiday][data-season] .icon-btn .icon { color: var(--season-accent); }
body[data-holiday][data-season] .icon-btn { color: var(--season-ink); box-shadow: inset 0 0 0 2px var(--season-accent); }
body[data-holiday][data-season] .pill-btn:not(.red):hover .icon { color: var(--season-on-accent); }
body[data-holiday][data-season] .main-nav a { color: var(--season-ink); }
body[data-holiday][data-season] .main-nav a:hover, body[data-holiday][data-season] .main-nav a[aria-current] { color: var(--season-accent); }
body[data-holiday][data-season] .menu-jump a { border-color: var(--season-accent); color: var(--season-ink); }
body[data-holiday][data-season] .menu-jump a[aria-current], body[data-holiday][data-season] .menu-jump a:hover { background: var(--season-accent); color: var(--season-on-accent); }

/* Round photos and photo frames: a ring in the holiday's colors */
body[data-holiday] .circle-link { box-shadow: 0 0 0 4px #fff, 0 0 0 8px var(--season-accent); }
body[data-holiday] .sec-photo img.rounded { box-shadow: 0 0 0 6px var(--season-accent), 0 10px 30px rgba(0, 0, 0, .18); }

/* Footer: a faint tile of the holiday's icons */
body[data-holiday] .site-footer { background-image: var(--season-pattern-dark); background-size: 72px 72px; }

/* The "sky": holiday icons drifting over the top of the page (seasons_sky_html()); never blocks a click */
.season-sky { position: absolute; left: 0; right: 0; top: var(--hdr-h, 0px); height: 560px; overflow: hidden; pointer-events: none; z-index: 6; }
body.is-inner .season-sky { height: 240px; }
.season-sky i {
  position: absolute; top: var(--y); left: var(--x); width: var(--s); height: var(--s);
  background: var(--season-accent); opacity: .8; transform: rotate(var(--r));
  -webkit-mask: var(--season-particle) center / contain no-repeat; mask: var(--season-particle) center / contain no-repeat;
}
.season-sky i:nth-child(even) { background: var(--season-accent-2); }
/* Halloween: black bats; Christmas and winter: white snow; patriotic and New Year: white and accent stars */
body[data-holiday="halloween"] .season-sky i { background: #140e1c; opacity: .92; width: calc(var(--s) * 1.7); height: calc(var(--s) * 1.7);
  filter: drop-shadow(0 0 4px rgba(255, 170, 60, .9)); }
/* Halloween: a big harvest moon behind the bats */
body[data-holiday="halloween"] .season-sky {
  background: radial-gradient(circle at 84% 120px, #fff3cf 0 54px, rgba(255, 196, 92, .55) 56px, rgba(240, 127, 19, .18) 110px, transparent 170px);
}
body[data-holiday="halloween"].is-inner .season-sky { background: radial-gradient(circle at 86% 70px, #fff3cf 0 38px, rgba(255, 196, 92, .5) 40px, rgba(240, 127, 19, .15) 80px, transparent 120px); }
body[data-holiday="holidays"] .season-sky i, body[data-season="winter"]:not([data-holiday]) .season-sky i { background: #fff; filter: drop-shadow(0 0 2px rgba(0, 0, 0, .35)); }
.season-sky[data-motion="burst"] i:nth-child(3n) { background: #fff; }

/* The page's own top text and buttons always stay above the sky */
body[data-season] .hero-inner, body[data-season] .page-hero > * { position: relative; z-index: 7; }
@media (max-width: 700px) {
  .season-sky { height: 460px; }
  .season-sky i:nth-child(n+7) { display: none; }
  body[data-holiday="halloween"] .season-sky i { width: calc(var(--s) * 1.2); height: calc(var(--s) * 1.2); }
  body[data-holiday="halloween"] .season-sky, body[data-holiday="halloween"].is-inner .season-sky { background: radial-gradient(circle at 88% 34px, #fff3cf 0 22px, rgba(255, 196, 92, .5) 23px, rgba(240, 127, 19, .15) 46px, transparent 70px); }
  body[data-holiday="halloween"] .season-sky::before, body[data-holiday="halloween"] .season-sky::after { width: 70px; height: 70px; }
}

/* Halloween: cobwebs in the top corners of the photo */
body[data-holiday="halloween"] .season-sky::before, body[data-holiday="halloween"] .season-sky::after {
  content: ""; position: absolute; top: 0; width: 150px; height: 150px; opacity: .55;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' fill='none' stroke='%23fff' stroke-width='1.1'%3E%3Cpath d='M0 0L100 100M0 0L100 45M0 0L45 100M0 0L100 10M0 0L10 100'/%3E%3Cpath d='M18 0Q14 14 0 18M38 0Q30 30 0 38M60 0Q48 48 0 60M84 0Q66 66 0 84'/%3E%3C/svg%3E") 0 0 / contain no-repeat;
}
body[data-holiday="halloween"] .season-sky::before { left: 0; }
body[data-holiday="halloween"] .season-sky::after { right: 0; transform: scaleX(-1); }
/* Christmas and the holiday season: a string of lights across the top */
body[data-holiday="holidays"] .season-sky::before {
  content: ""; position: absolute; left: 0; right: 0; top: 0; height: 22px;
  background: radial-gradient(circle at 12px 14px, #ffd23f 5px, transparent 6px) 0 0 / 96px 22px,
    radial-gradient(circle at 36px 10px, var(--season-accent) 5px, transparent 6px) 0 0 / 96px 22px,
    radial-gradient(circle at 60px 14px, #3fb8ff 5px, transparent 6px) 0 0 / 96px 22px,
    radial-gradient(circle at 84px 10px, #2fa866 5px, transparent 6px) 0 0 / 96px 22px,
    linear-gradient(#333, #333) 0 6px / 100% 1.5px no-repeat;
}

@media (prefers-reduced-motion: no-preference) {
  body[data-holiday="new_years"] .season-strip, body[data-holiday="new_years_eve"] .season-strip,
  body[data-holiday="independence"] .season-strip, body[data-holiday="holidays"] .season-sky::before { animation: season-twinkle 3s steps(2) infinite; }
  @keyframes season-twinkle { 50% { filter: brightness(1.25); } }
  .season-sky i { animation: season-drift var(--d) ease-in-out var(--dl) infinite alternate; }
  .season-sky[data-motion="fall"] i { top: -40px; animation: season-fall var(--d) linear var(--dl) infinite; }
  .season-sky[data-motion="rise"] i { top: auto; bottom: -40px; animation: season-rise var(--d) linear var(--dl) infinite; }
  .season-sky[data-motion="fly"] i { left: -60px; animation: season-fly calc(var(--d) + 3s) linear var(--dl) infinite; }
  .season-sky[data-motion="burst"] i { animation: season-burst calc(var(--d) / 3) ease-out var(--dl) infinite; }
  @keyframes season-drift { from { transform: translate(-14px, -8px) rotate(-12deg); } to { transform: translate(14px, 10px) rotate(12deg); } }
  @keyframes season-fall { from { transform: translate(0, 0) rotate(0); } 50% { transform: translate(30px, 300px) rotate(180deg); } to { transform: translate(-10px, 620px) rotate(360deg); } }
  @keyframes season-rise { from { transform: translateY(0) scale(.8); opacity: 0; } 15% { opacity: .8; } to { transform: translateY(-600px) scale(1.1); opacity: 0; } }
  @keyframes season-fly {
    0% { transform: translate(0, 0) scaleY(1); } 5% { transform: translate(5.5vw, -10px) scaleY(.7); } 10% { transform: translate(11vw, -18px) scaleY(1); }
    15% { transform: translate(16.5vw, -4px) scaleY(.7); } 20% { transform: translate(22vw, 6px) scaleY(1); } 25% { transform: translate(27.5vw, -4px) scaleY(.7); }
    30% { transform: translate(33vw, -14px) scaleY(1); } 35% { transform: translate(38.5vw, -2px) scaleY(.7); } 40% { transform: translate(44vw, 10px) scaleY(1); }
    45% { transform: translate(49.5vw, -6px) scaleY(.7); } 50% { transform: translate(55vw, -20px) scaleY(1); } 55% { transform: translate(60.5vw, -8px) scaleY(.7); }
    60% { transform: translate(66vw, 4px) scaleY(1); } 65% { transform: translate(71.5vw, -4px) scaleY(.7); } 70% { transform: translate(77vw, -12px) scaleY(1); }
    75% { transform: translate(82.5vw, -2px) scaleY(.7); } 80% { transform: translate(88vw, 8px) scaleY(1); } 90% { transform: translate(99vw, -4px) scaleY(.7); }
    100% { transform: translate(110vw, -16px) scaleY(1); }
  }
  @keyframes season-burst { 0% { transform: scale(.2) rotate(0); opacity: 0; } 20% { opacity: 1; } 70% { transform: scale(1.6) rotate(90deg); opacity: .9; } 100% { transform: scale(2) rotate(120deg); opacity: 0; } }
}
@media print {
  body[data-holiday] .hero-media::before, .season-sky { display: none; }
}
