/* Seasonal themes. Inactive unless seasonal.js sets data-season on <html>. */
html[data-season]{overflow-x:clip}
html[data-season] body{overflow-x:clip}
html[data-season="thanksgiving"]{--season-bg:#2b1a0e;--season-text:#fdf6ec;--season-accent:#f59e0b}
html[data-season="christmas"]{--season-bg:#12261c;--season-text:#f6f8f4;--season-accent:#d4af37}

.season-banner{position:relative;z-index:1100;background:var(--season-bg);color:var(--season-text);padding:.3rem 1rem;font-family:'DM Sans',-apple-system,sans-serif;font-size:.8rem;line-height:1.35;letter-spacing:.01em;text-align:center;border-bottom:1px solid var(--season-accent)}
.season-banner__short{display:none}
@media (max-width:640px){.season-banner__long{display:none}.season-banner__short{display:inline}}

/* Pages with a fixed nav would hide the banner. Sticky with a negative margin keeps the
   same content position, and the nav still pins to the top on scroll. */
html[data-season] .nav{position:sticky!important;top:0!important;margin-bottom:-72px}
html[data-season] .announcement-banner~.nav{margin-bottom:0}

/* Accents. Logo, buttons, links and status colors stay as they are. */
html[data-season] .nav{border-bottom-color:var(--season-accent)}
html[data-season] .section-divider{background:var(--season-accent);opacity:.8}
html[data-season] .service-card::before{background:linear-gradient(90deg,transparent,var(--season-accent),transparent)}

/* Thanksgiving banner: gradient from deep orange to brown, small leaf icon. */
html[data-season="thanksgiving"] .season-banner{background:linear-gradient(90deg,#c2410c 0%,#9a3412 40%,#4a2511 100%)}
html[data-season="thanksgiving"] .season-banner::before{content:'';display:inline-block;width:.95em;height:.95em;margin-right:.45em;vertical-align:-.12em;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon fill='%23fdba74' points='12 1 13.8 5 16 4 15.3 9 18.5 7.5 18 10 22 9.5 20.5 13 22 14 17 17.5 17.5 19.5 12.6 18.8 12.6 23 11.4 23 11.4 18.8 6.5 19.5 7 17.5 2 14 3.5 13 2 9.5 6 10 5.5 7.5 8.7 9 8 4 10.2 5'/%3E%3C/svg%3E") center/contain no-repeat}

/* Home page hero. The layer sits behind the content, ignores clicks and stops above the blurred cards. */
.season-hero-layer{position:absolute;top:0;left:0;right:0;height:600px;z-index:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse 55% 75% at 22% 0%,rgba(234,88,12,.17),transparent 70%),radial-gradient(ellipse 40% 55% at 78% 0%,rgba(245,158,11,.09),transparent 70%)}
.season-leaves{position:absolute;inset:0;opacity:.8}
.season-leaf{position:absolute;top:-30px;background-position:center;background-size:contain;background-repeat:no-repeat;opacity:0;will-change:transform,opacity}
.season-leaf:nth-child(1),.season-leaf:nth-child(6),.season-leaf:nth-child(8),.season-leaf:nth-child(11),.season-leaf:nth-child(13){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon fill='%23ea580c' points='12 1 13.8 5 16 4 15.3 9 18.5 7.5 18 10 22 9.5 20.5 13 22 14 17 17.5 17.5 19.5 12.6 18.8 12.6 23 11.4 23 11.4 18.8 6.5 19.5 7 17.5 2 14 3.5 13 2 9.5 6 10 5.5 7.5 8.7 9 8 4 10.2 5'/%3E%3C/svg%3E")}
.season-leaf:nth-child(3),.season-leaf:nth-child(7),.season-leaf:nth-child(12){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23f59e0b' d='M12 1C6.5 5 4 10.5 5 15.5c.7 3 3 4.8 6.4 5.3V23h1.2v-2.2c3.4-.5 5.7-2.3 6.4-5.3C20 10.5 17.5 5 12 1z'/%3E%3C/svg%3E")}
.season-leaf:nth-child(2),.season-leaf:nth-child(5),.season-leaf:nth-child(10){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpolygon fill='%23b91c1c' points='12 1 13.8 5 16 4 15.3 9 18.5 7.5 18 10 22 9.5 20.5 13 22 14 17 17.5 17.5 19.5 12.6 18.8 12.6 23 11.4 23 11.4 18.8 6.5 19.5 7 17.5 2 14 3.5 13 2 9.5 6 10 5.5 7.5 8.7 9 8 4 10.2 5'/%3E%3C/svg%3E")}
.season-leaf:nth-child(4),.season-leaf:nth-child(9),.season-leaf:nth-child(14){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23a8541c' d='M12 1C6.5 5 4 10.5 5 15.5c.7 3 3 4.8 6.4 5.3V23h1.2v-2.2c3.4-.5 5.7-2.3 6.4-5.3C20 10.5 17.5 5 12 1z'/%3E%3C/svg%3E")}
@keyframes season-fall-a{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}6%{opacity:1}25%{transform:translate3d(26px,160px,0) rotate(70deg)}50%{transform:translate3d(0,320px,0) rotate(150deg)}75%{transform:translate3d(-26px,480px,0) rotate(230deg)}92%{opacity:1}100%{transform:translate3d(0,630px,0) rotate(310deg);opacity:0}}
@keyframes season-fall-b{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}6%{opacity:1}25%{transform:translate3d(-26px,160px,0) rotate(-70deg)}50%{transform:translate3d(0,320px,0) rotate(-150deg)}75%{transform:translate3d(26px,480px,0) rotate(-230deg)}92%{opacity:1}100%{transform:translate3d(0,630px,0) rotate(-310deg);opacity:0}}
@keyframes season-fall-na{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}6%{opacity:1}25%{transform:translate3d(5px,160px,0) rotate(70deg)}50%{transform:translate3d(0,320px,0) rotate(150deg)}75%{transform:translate3d(-5px,480px,0) rotate(230deg)}92%{opacity:1}100%{transform:translate3d(0,630px,0) rotate(310deg);opacity:0}}
@keyframes season-fall-nb{0%{transform:translate3d(0,0,0) rotate(0);opacity:0}6%{opacity:1}25%{transform:translate3d(-5px,160px,0) rotate(-70deg)}50%{transform:translate3d(0,320px,0) rotate(-150deg)}75%{transform:translate3d(5px,480px,0) rotate(-230deg)}92%{opacity:1}100%{transform:translate3d(0,630px,0) rotate(-310deg);opacity:0}}
.season-leaf:nth-child(1){left:58%;width:27px;height:27px;animation:season-fall-a 19s linear -3s infinite}
.season-leaf:nth-child(2){left:calc(50% - 11px);width:22px;height:22px;animation:season-fall-nb 23s linear -14s infinite}
.season-leaf:nth-child(3){left:72%;width:24px;height:24px;animation:season-fall-a 17s linear -9s infinite}
.season-leaf:nth-child(4){left:85%;width:30px;height:30px;animation:season-fall-b 22s linear -1s infinite}
.season-leaf:nth-child(5){left:64%;width:22px;height:22px;animation:season-fall-a 25s linear -19s infinite}
.season-leaf:nth-child(6){left:91%;width:24px;height:24px;animation:season-fall-b 20s linear -12s infinite}
.season-leaf:nth-child(7){left:79%;width:22px;height:22px;animation:season-fall-a 26s linear -6s infinite}
.season-leaf:nth-child(8){left:calc(50% - 10px);width:20px;height:20px;animation:season-fall-nb 21s linear -4s infinite}
.season-leaf:nth-child(9){left:1.2%;width:22px;height:22px;animation:season-fall-na 24s linear -8s infinite}
.season-leaf:nth-child(10){left:97%;width:23px;height:23px;animation:season-fall-nb 18s linear -15s infinite}
.season-leaf:nth-child(11){left:68%;width:26px;height:26px;animation:season-fall-a 21s linear -16s infinite}
.season-leaf:nth-child(12){left:1.4%;width:20px;height:20px;animation:season-fall-nb 20s linear -18s infinite}
.season-leaf:nth-child(13){left:97.2%;width:20px;height:20px;animation:season-fall-na 25s linear -2s infinite}
.season-leaf:nth-child(14){left:calc(50% - 11px);width:23px;height:23px;animation:season-fall-nb 19s linear -11s infinite}
.season-hero-layer--paused .season-leaf{animation-play-state:paused}
/* Narrow desktops have no side margin to spare. */
@media (max-width:1199px){.season-leaf:nth-child(9),.season-leaf:nth-child(10),.season-leaf:nth-child(12),.season-leaf:nth-child(13){display:none}}
/* Just above that the left margin is still too tight, so these two move over the terminal side. */
@media (min-width:1200px) and (max-width:1239px){.season-leaf:nth-child(9){left:61%}.season-leaf:nth-child(12){left:75%}}
/* Tablets: text fills the width, so use fewer and fainter leaves. Phones get the glow only. */
@media (max-width:768px){.season-hero-layer{height:560px}.season-leaves{opacity:.28}.season-leaf:nth-child(n+9){display:none}}
@media (prefers-reduced-motion:reduce),(max-width:640px){.season-leaf{display:none}}
