/* Festive season hero (home page top). Loaded only while FESTIVE = True in build/build.py. */
.fest{position:relative;min-height:100vh;min-height:100svh;padding:clamp(96px,13vh,130px) var(--pad) clamp(40px,6vh,64px);display:flex;align-items:center;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,#fff7ee 0%,#fdeede 100%)}
.fest-bg{position:absolute;inset:0;z-index:-2;background:
  radial-gradient(48% 60% at 78% 52%,rgba(255,122,0,.30),transparent 70%),
  radial-gradient(40% 45% at 6% 100%,rgba(229,50,27,.16),transparent 70%),
  radial-gradient(30% 30% at 50% 0%,rgba(255,190,60,.22),transparent 70%);animation:festBg 9s ease-in-out infinite alternate}
@keyframes festBg{to{filter:hue-rotate(-8deg) saturate(1.15)}}
.fest-fx{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}

.fest-copy{position:relative;z-index:6;width:min(50%,720px);max-width:100%}
.fest-in{opacity:0;transform:translateY(26px);animation:festIn .95s var(--ease) forwards;animation-delay:calc(var(--d,0s) + .55s)}
@keyframes festIn{to{opacity:1;transform:none}}
.fest .eyebrow{letter-spacing:.3em;font-size:clamp(11px,1vw,13px);color:#e5321b}
.fest-h1{font-family:var(--serif);font-weight:400;font-size:clamp(40px,5.15vw,92px);line-height:.98;letter-spacing:-.03em;margin:clamp(14px,2.4vh,26px) 0 clamp(12px,2vh,22px)}
.fest-h1 .fl{display:block}
.fest-h1 em{font-style:normal;background:linear-gradient(100deg,#e5321b 0%,#ff5a1f 40%,#ffa11a 60%,#ff5a1f 80%,#e5321b 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;padding:0 .08em .28em 0;margin-bottom:-.28em;animation:festSheen 4.5s linear infinite;filter:drop-shadow(0 6px 22px rgba(255,90,20,.38))}
@keyframes festSheen{to{background-position:-220% 0}}
.fest-lede{font-size:clamp(15px,1.45vw,21px);color:var(--mute);max-width:30em;text-wrap:balance;margin-bottom:clamp(16px,2.6vh,28px)}

.fest-price{position:relative;display:inline-block;padding:clamp(14px,2.2vh,22px) clamp(24px,3vw,44px) clamp(16px,2.4vh,26px);border-radius:26px 78px 26px 26px;color:#fff;overflow:hidden;
  background:linear-gradient(135deg,#ff6a1a 0%,#e5321b 55%,#c4200f 100%);box-shadow:0 30px 60px -22px rgba(229,50,27,.75),0 0 0 1px rgba(255,255,255,.25) inset,0 0 60px rgba(255,120,30,.35);animation:festIn .95s var(--ease) calc(var(--d,0s) + .55s) forwards,festPulse 3.2s ease-in-out 2s infinite}
@keyframes festPulse{50%{box-shadow:0 34px 70px -20px rgba(229,50,27,.9),0 0 0 1px rgba(255,255,255,.3) inset,0 0 90px rgba(255,150,40,.6)}}
.fp-top{display:block;font-size:clamp(11px,1.05vw,14px);font-weight:700;letter-spacing:.26em;text-transform:uppercase;opacity:.95}
.fp-main{display:flex;align-items:flex-end;gap:clamp(8px,1vw,14px);line-height:1}
.fp-rs,.fp-num{font-family:var(--sans);font-weight:800;font-size:clamp(54px,7.6vw,128px);letter-spacing:-.04em;line-height:1;text-shadow:0 6px 24px rgba(120,10,0,.35)}
.fp-rs{font-size:clamp(44px,6.2vw,104px);margin-right:-.02em;align-self:flex-end}
.fp-unit{font-weight:800;font-size:clamp(15px,1.9vw,30px);letter-spacing:.06em;text-transform:uppercase;line-height:1.15;padding-bottom:.35em}
.fp-shine{position:absolute;top:0;bottom:0;left:-40%;width:36%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:festShine 3.6s ease-in-out 1.6s infinite}
@keyframes festShine{0%{left:-40%}55%,100%{left:130%}}
.fest-diya{position:absolute;right:clamp(10px,1.4vw,22px);top:clamp(6px,1vh,12px);width:clamp(54px,6vw,92px);opacity:.95}
.fest-diya .flame{transform-origin:60px 40px;animation:flame .9s ease-in-out infinite alternate}
.fest-diya .glow{animation:glow 1.8s ease-in-out infinite alternate}
@keyframes flame{0%{transform:scale(1,1) rotate(-2deg)}100%{transform:scale(.92,1.1) rotate(2deg)}}
@keyframes glow{to{opacity:.55}}
.fest-terms{font-size:11px;color:var(--dim);margin:8px 0 clamp(14px,2.4vh,24px);letter-spacing:.04em}
.fest-ctas{display:flex;gap:14px;flex-wrap:wrap}
.fest-ctas .btn:first-child{background:linear-gradient(120deg,#ff5a1f,#e5321b);box-shadow:0 14px 38px -10px rgba(229,50,27,.75);animation:festBtn 2.6s ease-in-out infinite}
@keyframes festBtn{50%{box-shadow:0 14px 46px -4px rgba(255,100,30,.95)}}
.fest-points{display:flex;gap:clamp(16px,3vw,40px);flex-wrap:wrap;margin-top:clamp(16px,3vh,30px);padding-top:18px;border-top:1px solid var(--line)}
.fest-points li{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);font-weight:600;display:flex;align-items:center;gap:10px}
.fest-points li::before{content:"";width:6px;height:6px;border-radius:50%;background:#e5321b}

/* right side artwork */
.fest-art{position:absolute;z-index:3;top:0;right:0;bottom:0;width:52%;pointer-events:none}
.fest-art a,.fest-art img{pointer-events:auto}
.fest-arch{position:absolute;top:clamp(88px,12vh,118px);bottom:clamp(30px,5vh,54px);left:2%;right:clamp(20px,4vw,72px);border-radius:999px 999px 34px 34px;overflow:hidden;box-shadow:0 50px 90px -40px rgba(120,40,0,.6),0 0 0 8px rgba(255,255,255,.6),0 0 0 9px rgba(255,150,40,.4);animation:festArch 1.3s var(--ease) .5s both}
@keyframes festArch{from{clip-path:inset(100% 0 0 0 round 999px 999px 34px 34px);transform:scale(.97)}to{clip-path:inset(0 0 0 0 round 999px 999px 34px 34px);transform:none}}
.fest-arch img{width:100%;height:100%;object-fit:cover;object-position:44% 50%;animation:festKen 16s ease-in-out infinite alternate}
@keyframes festKen{to{transform:scale(1.08) translate(-1.5%,1%)}}
.fest-tint{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,170,40,.20),rgba(255,90,20,.16) 60%,rgba(120,30,0,.28));mix-blend-mode:multiply}
.fest-tint::after{content:"";position:absolute;inset:0;background:radial-gradient(40% 30% at 70% 12%,rgba(255,225,140,.55),transparent 70%);animation:festTw 3s ease-in-out infinite alternate}
@keyframes festTw{to{opacity:.35}}

.garland{--fs:44%;position:absolute;top:-8px;left:0;width:clamp(18px,1.8vw,28px);height:var(--gh);transform-origin:50% 0;animation:sway 5s ease-in-out infinite;z-index:5;filter:drop-shadow(0 6px 8px rgba(120,40,0,.3));
  background:linear-gradient(#d9a03a,#d9a03a) 50% 0/2px var(--fs) no-repeat}
.garland::before{content:"";position:absolute;left:0;right:0;top:var(--fs);bottom:0;background:radial-gradient(ellipse closest-side,#ffe9a0 0,#ffc21f 28%,#ff8a14 62%,#e5521a 90%,transparent 96%) 0 0/100% clamp(18px,2vw,27px) repeat-y}
.garland.g1{left:3%;--gh:82%}
.garland.g2{left:auto;right:calc(clamp(20px,4vw,72px) + 4px);--gh:74%;--fs:50%;animation-delay:-1.8s;animation-duration:6s}
.garland.g3{left:calc(3% + clamp(24px,2.6vw,40px));--gh:68%;--fs:56%;animation-delay:-3s}
.garland.g3::before{background-image:radial-gradient(ellipse closest-side,#fff 0,#ffd0d6 25%,#e4325a 62%,#a8143a 92%,transparent 96%)}
@keyframes sway{0%,100%{transform:rotate(1.6deg)}50%{transform:rotate(-1.6deg)}}

.fest-sparkles{position:absolute;inset:0;z-index:5}
.spk{position:absolute;width:var(--s,14px);height:var(--s,14px);background:#ffd24a;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);filter:drop-shadow(0 0 6px rgba(255,170,30,.9));animation:spk var(--t,2.6s) ease-in-out var(--dl,0s) infinite}
@keyframes spk{0%,100%{transform:scale(.2) rotate(0);opacity:0}50%{transform:scale(1) rotate(45deg);opacity:1}}

.fest-dooie{position:absolute;z-index:7;right:clamp(0px,.4vw,10px);bottom:clamp(8px,2vh,24px);height:clamp(300px,62vh,640px);width:auto;filter:drop-shadow(0 30px 34px rgba(80,40,10,.34));transform-origin:50% 100%;animation:dooieIn 1s var(--ease) 1.1s both,dooieBob 3.4s ease-in-out 2.1s infinite}
@keyframes dooieIn{from{opacity:0;transform:translateY(60px) scale(.9)}to{opacity:1;transform:none}}
@keyframes dooieBob{50%{transform:translateY(-8px) rotate(-1deg)}}
.fest-badge{position:absolute;z-index:8;right:clamp(4px,1.6vw,34px);top:clamp(104px,17vh,160px);width:clamp(74px,8vw,116px);height:clamp(74px,8vw,116px);border-radius:50%;display:grid;place-items:center;text-align:center;font-size:clamp(11px,1.15vw,16px);font-weight:800;line-height:1.15;letter-spacing:.06em;text-transform:uppercase;color:#7a1200;background:radial-gradient(circle at 35% 30%,#fff2b8,#ffc21f 55%,#f08a10);box-shadow:0 14px 30px -8px rgba(160,70,0,.55),0 0 0 4px rgba(255,255,255,.7);animation:badge 5s ease-in-out infinite}
@keyframes badge{0%,100%{transform:rotate(-10deg) scale(1)}50%{transform:rotate(6deg) scale(1.07)}}

/* scrolling offer strip */
.fest-strip{position:relative;z-index:5;overflow:hidden;background:linear-gradient(90deg,#e5321b,#ff6a1a 50%,#e5321b);color:#fff;padding:13px 0;box-shadow:0 -1px 0 rgba(255,255,255,.35) inset}
.fest-track{display:flex;width:max-content;align-items:center;gap:clamp(18px,3vw,44px);animation:festMarq 42s linear infinite;padding-left:clamp(18px,3vw,44px)}
.fest-track span{font-weight:700;font-size:clamp(12px,1.1vw,15px);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.fest-track i{display:block;width:14px;height:14px;color:#ffe27a;flex:none}
.fest-track svg{width:100%;height:100%;fill:currentColor}
.fest-strip:hover .fest-track{animation-play-state:paused}
@keyframes festMarq{to{transform:translateX(-25%)}}

@media(max-width:980px){
  .fest{display:block;min-height:0;padding:96px var(--pad) 0}
  .fest-copy{width:100%}
  .fest-h1{font-size:clamp(40px,11.4vw,68px)}
  .fest-price{border-radius:22px 60px 22px 22px}
  .fest-art{position:relative;width:100%;height:clamp(430px,118vw,640px);margin-top:26px;right:auto;top:auto;bottom:auto}
  .fest-arch{top:34px;bottom:0;left:6%;right:12%}
  .fest-dooie{height:min(72%,420px);right:0;bottom:0}
  .fest-badge{right:0;top:22px}
  .garland.g2{right:calc(12% + 4px)}.garland.g1{left:8%}.garland.g3{left:calc(8% + 26px)}
  .fest-points{display:none}
  .fest-terms{margin-bottom:16px}
}
@media(max-width:460px){.fest-ctas .btn-ghost{display:none}}
@media(prefers-reduced-motion:reduce){
  .fest *,.fest-strip *{animation:none!important}
  .fest-in{opacity:1;transform:none}
  .fest-fx,.fest-sparkles{display:none}
}
