/* LaunchPod seasonal header. Linked only when the Worker sets html[data-season] (see /seasonal/seasonal.js).
   Layout is never changed: same header height, same nav, no new boxes in the flow. Decoration is pseudo-elements
   with tiny inline SVG, pointer-events off. The CSS decoration is a fallback: it switches off when Graphics Bot's
   header art (data-season-art) or seasonal logo (data-season-logo) is present. */
html[data-season] header.site{isolation:isolate}
html[data-season] header.site>.nav{position:relative;z-index:1}
html[data-season] header.site a.logo{position:relative}
html[data-season] header.site::before,html[data-season] header.site::after,
html[data-season] header.site a.logo::before,html[data-season] header.site a.logo::after{content:none;position:absolute;pointer-events:none;background-repeat:no-repeat}
html[data-season] header.site::before,html[data-season] header.site::after{z-index:0}

/* dark header: white nav text (desktop only, the mobile menu panel stays white) */
html[data-season-tone=dark] header.site{border-bottom-color:rgba(255,255,255,.14);color:#fff}
html[data-season-tone=dark] header.site .burger span{background:#fff}
html[data-season-tone=dark] header.site .menu .sub,html[data-season-tone=dark] header.site .menu .sub a{color:var(--ink)}
html[data-season-tone=dark] header.site .menu>li>a[aria-current=page]{box-shadow:inset 0 -3px 0 #fff}
html[data-season-tone=dark] header.site .nav-right a.btn:not(.dc-nav){border-color:#fff}
@media (max-width:900px){
 html[data-season-tone=dark] header.site .menu{color:var(--ink)}
 html[data-season-tone=dark] header.site .menu>li>a[aria-current=page]{box-shadow:inset 0 -3px 0 var(--ink)}
}

/* header art slot (Graphics Bot): /assets/img/seasonal/<theme>/header.* and optional header-mobile.* */
html[data-season][data-season-art] header.site{background:#1a1a1a var(--season-art,none) center/cover no-repeat}
@media (max-width:900px){html[data-season][data-season-art] header.site{background-image:var(--season-art-m,var(--season-art,none))}}
html[data-season-art] header.site::before,html[data-season-art] header.site::after{display:none}
html[data-season][data-season-art][data-season-tone=light] header.site{background-color:#fff}
html[data-season-logo] header.site a.logo::before,html[data-season-logo] header.site a.logo::after{display:none}

/* ---------- Halloween: purple to burnt orange, cobweb corner, bats, pumpkin on the logo ---------- */
html[data-season=halloween] header.site{background:linear-gradient(100deg,#24103a 0%,#3a1658 55%,#6e2a0c 100%);border-bottom:1px solid #F49819}
html[data-season=halloween] header.site::before{content:"";left:0;top:0;width:74px;height:74px;opacity:.55;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 74 74' fill='none' stroke='%23fff' stroke-width='1'%3E%3Cpath d='M0 0L74 0M0 0L0 74M0 0L70 34M0 0L34 70M0 0L58 58'/%3E%3Cpath d='M16 0Q12 8 14 6Q10 12 0 16M32 0Q26 14 29 13Q22 26 12 26Q14 30 0 32M50 0Q42 20 45 18Q34 38 22 40Q24 46 0 50'/%3E%3C/svg%3E")}
html[data-season=halloween] header.site::after{content:"";right:36%;top:3px;width:66px;height:22px;opacity:.95;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 40' fill='%23000'%3E%3Cpath id='b' d='M10 12q4-6 8-2q2-3 4 0q4-4 8 2q-5-1-7 3q-2-2-3 0q-2-2-3 0q-2-4-7-3z'/%3E%3Cuse href='%23b' transform='translate(46 16) scale(.8)'/%3E%3Cuse href='%23b' transform='translate(86 2) scale(.65)'/%3E%3C/svg%3E");
 animation:lp-bob 4s ease-in-out infinite}
html[data-season=halloween] header.site a.logo::after{content:"";left:-6px;bottom:-6px;width:22px;height:22px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 22'%3E%3Cpath d='M11 6q1-4 3-4' stroke='%233b7a1a' stroke-width='2' fill='none'/%3E%3Cellipse cx='11' cy='13' rx='10' ry='8' fill='%23F49819'/%3E%3Cpath d='M11 5v16M6 7q-3 6 0 12M16 7q3 6 0 12' stroke='%23c96f05' fill='none'/%3E%3Cpath d='M6 11l2-2 2 2zM12 11l2-2 2 2zM7 15q4 3 8 0l-2 1-2-1-2 1z' fill='%23241000'/%3E%3C/svg%3E")}

/* ---------- Bonfire Night: night sky, firework bursts behind the logo ---------- */
html[data-season=bonfire] header.site{background:linear-gradient(180deg,#070b1f 0%,#141a44 100%)}
html[data-season=bonfire] header.site a.logo::before{content:"";left:-22px;top:-17px;width:74px;height:74px;z-index:-1;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-50 -50 100 100' stroke-linecap='round' stroke-width='3'%3E%3Cg stroke='%23F49819'%3E%3Cpath d='M0-14V-40M0 14V40M-14 0H-40M14 0H40M10-10L28-28M-10 10L-28 28M10 10L28 28M-10-10L-28-28'/%3E%3C/g%3E%3Cg fill='%23ffd36b'%3E%3Ccircle cx='0' cy='-46' r='3'/%3E%3Ccircle cx='0' cy='46' r='3'/%3E%3Ccircle cx='-46' cy='0' r='3'/%3E%3Ccircle cx='46' cy='0' r='3'/%3E%3C/g%3E%3C/svg%3E");
 background-size:100% 100%;animation:lp-burst 2.8s ease-out infinite}
html[data-season=bonfire] header.site a.logo::after{content:"";left:52%;top:-14px;width:62px;height:62px;z-index:-1;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-50 -50 100 100' stroke-linecap='round' stroke-width='3'%3E%3Cg stroke='%23E42688'%3E%3Cpath d='M0-14V-40M0 14V40M-14 0H-40M14 0H40M10-10L28-28M-10 10L-28 28M10 10L28 28M-10-10L-28-28'/%3E%3C/g%3E%3Cg stroke='%2347ABE1'%3E%3Cpath d='M5-13L15-37M-5 13L-15 37M-13-5L-37-15M13 5L37 15'/%3E%3C/g%3E%3C/svg%3E");
 background-size:100% 100%;animation:lp-burst 2.8s ease-out 1.4s infinite;opacity:0}
html[data-season=bonfire] header.site::before{content:"";inset:0;opacity:.7;
 background-image:radial-gradient(1px 1px at 12% 30%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 33% 70%,#fff 50%,transparent 51%),radial-gradient(1.5px 1.5px at 58% 22%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 76% 60%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 91% 28%,#fff 50%,transparent 51%)}

/* ---------- Christmas: deep green, snow across the header, Santa hat on the mic ---------- */
html[data-season=christmas] header.site{background:linear-gradient(180deg,#0b3324 0%,#114632 100%);border-bottom:1px solid #C31617}
html[data-season=christmas] header.site::before{content:"";inset:0;opacity:.9;
 background-image:radial-gradient(2px 2px at 20px 30px,#fff 60%,transparent 61%),radial-gradient(1.5px 1.5px at 70px 10px,#fff 60%,transparent 61%),radial-gradient(2.5px 2.5px at 110px 55px,#fff 60%,transparent 61%),radial-gradient(1.5px 1.5px at 150px 25px,#fff 60%,transparent 61%);
 background-size:180px 80px;background-repeat:repeat;animation:lp-snow 9s linear infinite}
html[data-season=christmas] header.site::after{content:"";inset:0;opacity:.6;
 background-image:radial-gradient(1.5px 1.5px at 40px 60px,#fff 60%,transparent 61%),radial-gradient(1px 1px at 120px 20px,#fff 60%,transparent 61%);
 background-size:140px 80px;background-repeat:repeat;animation:lp-snow 14s linear infinite}
html[data-season=christmas] header.site a.logo::after{content:"";left:17%;top:-30%;width:17%;aspect-ratio:1;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M3 22Q8 6 20 4Q27 4 27 14L22 12Q16 12 25 22Z' fill='%23C31617'/%3E%3Crect x='1' y='20' width='26' height='6' rx='3' fill='%23fff'/%3E%3Ccircle cx='26' cy='15' r='3.2' fill='%23fff'/%3E%3C/svg%3E");background-size:100% 100%}

/* ---------- New Year: black and gold, sparkle confetti ---------- */
html[data-season=newyear] header.site{background:linear-gradient(100deg,#0e0e10 0%,#1d1a12 100%);border-bottom:1px solid #c9a227}
html[data-season=newyear] header.site::before{content:"";inset:0;
 background-image:radial-gradient(2px 2px at 30px 20px,#e8c766 60%,transparent 61%),radial-gradient(1.5px 3px at 90px 58px,#f5dc8a 60%,transparent 61%),radial-gradient(2px 2px at 160px 34px,#c9a227 60%,transparent 61%),radial-gradient(1px 1px at 210px 66px,#fff 60%,transparent 61%);
 background-size:240px 78px;background-repeat:repeat;opacity:.8;animation:lp-twinkle 3s ease-in-out infinite alternate}
html[data-season=newyear] header.site a.logo::after{content:"";right:-14px;top:-8px;width:18px;height:18px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-10 -10 20 20'%3E%3Cpath d='M0-10L2-2L10 0L2 2L0 10L-2 2L-10 0L-2-2Z' fill='%23e8c766'/%3E%3C/svg%3E");background-size:100% 100%;animation:lp-twinkle 1.6s ease-in-out infinite alternate}

/* ---------- Valentine's (light): blush tint, small hearts ---------- */
html[data-season=valentines] header.site{background:linear-gradient(100deg,#fff 0%,#fdeef5 100%);border-bottom:1px solid #f6bfd8}
html[data-season=valentines] header.site a.logo::after{content:"";right:-14px;top:-6px;width:16px;height:16px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 18'%3E%3Cpath d='M10 17L2 9A5 5 0 0 1 10 3A5 5 0 0 1 18 9Z' fill='%23E42688'/%3E%3C/svg%3E");background-size:100% 100%}

/* ---------- Easter (light): spring tint, egg on the logo ---------- */
html[data-season=easter] header.site{background:linear-gradient(100deg,#fff 0%,#f3f8e8 100%);border-bottom:1px solid #cfe3a6}
html[data-season=easter] header.site a.logo::after{content:"";left:-6px;bottom:-4px;width:15px;height:19px;
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 19'%3E%3Cpath d='M7.5 1C3 1 1 8 1 12a6.5 6.5 0 0 0 13 0C14 8 12 1 7.5 1Z' fill='%2347ABE1'/%3E%3Cpath d='M1.5 10l3-2 3 2 3-2 3 2' stroke='%23fff' stroke-width='1.4' fill='none'/%3E%3C/svg%3E");background-size:100% 100%}

@keyframes lp-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes lp-burst{0%{opacity:0;transform:scale(.25)}25%{opacity:1}70%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.08)}}
@keyframes lp-snow{from{background-position:0 0}to{background-position:0 80px}}
@keyframes lp-twinkle{from{opacity:.45}to{opacity:1}}

/* mobile: smaller logo (30px high), keep the badges in proportion */
@media (max-width:900px){
 html[data-season=halloween] header.site::after{right:24%}
 html[data-season=halloween] header.site a.logo::after{width:17px;height:17px;left:-5px;bottom:-5px}
 html[data-season=bonfire] header.site a.logo::before{width:58px;height:58px;left:-16px;top:-14px}
 html[data-season=bonfire] header.site a.logo::after{width:50px;height:50px;top:-10px}
 html[data-season=newyear] header.site a.logo::after{width:14px;height:14px;right:-11px}
}
@media (prefers-reduced-motion:reduce){
 html[data-season] header.site::before,html[data-season] header.site::after,
 html[data-season] header.site a.logo::before,html[data-season] header.site a.logo::after{animation:none!important}
 html[data-season=bonfire] header.site a.logo::after{opacity:.85}
}
