/* Festival greeting card. Placed right after the site header and styled with the theme's own colours (--primary, --gold). */
.ngf-fest:not(.ngf-fest--pending){animation:ngf-in .7s cubic-bezier(.2,.8,.2,1) both}
.ngf-fest{--ngf-gold:var(--gold,#d6a147);--ngf-r:16px;max-width:1200px;margin:14px auto;padding:0 20px;font-family:system-ui,-apple-system,"Segoe UI","Noto Sans Tamil",Roboto,Arial,sans-serif}
.ngf-fest[hidden]{display:none}
.ngf-fest--pending{visibility:hidden;height:0;overflow:hidden;margin:0;animation:ngf-reveal 0s linear 1.5s forwards}
.ngf-fest__card{position:relative;overflow:hidden;display:flex;align-items:center;gap:18px 22px;flex-wrap:wrap;padding:18px 54px 18px 22px;border-radius:var(--ngf-r);color:#fff;background:var(--ngf-c);background:linear-gradient(115deg,var(--ngf-c) 0%,color-mix(in srgb,var(--ngf-c) 60%,#000) 100%);border-bottom:4px solid var(--ngf-gold);box-shadow:0 6px 18px rgba(0,0,0,.18);transition:transform .3s ease,box-shadow .3s ease}
.ngf-fest__card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(0,0,0,.28)}
html[data-mode="dark"] .ngf-fest__card{background:linear-gradient(115deg,color-mix(in srgb,var(--ngf-c) 55%,#000) 0%,#0b1a33 100%);border:1px solid var(--border,#334155);border-bottom:4px solid var(--ngf-gold)}
/* gold light sweep */
.ngf-fest__card::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-20deg);animation:ngf-sweep 5s ease-in-out 1s infinite;pointer-events:none}
.ngf-fest__card:hover::after{animation-duration:1.4s}
/* rising emoji and sparkles */
.ngf-fest__fx{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.ngf-fest__p{position:absolute;bottom:-30px;left:var(--x);font-size:var(--s);opacity:0;animation:ngf-rise var(--t) linear var(--d) infinite}
.ngf-fest__card:hover .ngf-fest__p{animation-duration:calc(var(--t) * .6)}
.ngf-fest__emoji{position:relative;font-size:46px;line-height:1;filter:drop-shadow(0 3px 6px rgba(0,0,0,.35));animation:ngf-sway 3.2s ease-in-out infinite;transform-origin:50% 90%}
.ngf-fest__card:hover .ngf-fest__emoji{animation:ngf-pop .6s ease both,ngf-sway 3.2s ease-in-out .6s infinite}
.ngf-fest__body{position:relative;display:flex;flex-direction:column;gap:2px;flex:1 1 260px;min-width:0}
.ngf-fest__title{font-size:clamp(1.25rem,3vw,1.75rem);line-height:1.2;letter-spacing:.2px;text-shadow:0 1px 3px rgba(0,0,0,.3)}
.ngf-fest__ta{font-size:clamp(1rem,2.4vw,1.2rem);color:var(--ngf-gold);font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.ngf-fest__text{font-size:.95rem;opacity:.92;margin-top:2px}
.ngf-fest__offer{position:relative;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ngf-fest__pct{background:var(--ngf-gold);color:#0f2a52;border-radius:999px;padding:6px 14px;font-weight:700;font-size:.9rem;box-shadow:0 2px 8px rgba(0,0,0,.25);animation:ngf-beat 2s ease-in-out infinite}
.ngf-fest__pct b{font-size:1.25rem}
.ngf-fest__code{display:inline-flex;flex-direction:column;align-items:center;gap:0;background:#fff;color:#0f2a52;border:2px dashed var(--ngf-gold);border-radius:10px;padding:5px 16px;cursor:pointer;line-height:1.2;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.ngf-fest__code:hover,.ngf-fest__code:focus-visible{transform:rotate(-2deg) scale(1.06);box-shadow:0 6px 14px rgba(0,0,0,.3)}
.ngf-fest__codetxt{font:800 1.1rem/1.2 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em}
.ngf-fest__code small{font-size:.65rem;color:#64748b}
.ngf-fest__code.is-copied{background:#dcfce7}
.ngf-fest__cta{display:inline-flex;align-items:center;gap:8px;background:var(--ngf-gold);color:#0f2a52!important;text-decoration:none;font-weight:700;border-radius:999px;padding:10px 20px;box-shadow:0 3px 10px rgba(0,0,0,.25);transition:transform .2s ease,box-shadow .2s ease,gap .2s ease}
.ngf-fest__cta i{font-style:normal;transition:transform .2s ease}
.ngf-fest__cta:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,0,0,.35);gap:12px}
.ngf-fest__cta:hover i{transform:translateX(4px)}
.ngf-fest__close{position:absolute;right:10px;top:10px;width:32px;height:32px;border-radius:50%;background:rgba(0,0,0,.2);border:0;color:#fff;font-size:22px;line-height:1;cursor:pointer;transition:background .2s ease,transform .2s ease}
.ngf-fest__close:hover{background:rgba(0,0,0,.45);transform:rotate(90deg)}
.ngf-fest.is-leaving{animation:ngf-out .35s ease forwards}
@keyframes ngf-reveal{to{visibility:visible;height:auto;overflow:visible;margin:14px auto}}
@keyframes ngf-in{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}
@keyframes ngf-out{to{opacity:0;transform:translateY(-10px);height:0;margin:0}}
@keyframes ngf-sweep{0%,60%{left:-60%}100%{left:130%}}
@keyframes ngf-rise{0%{transform:translateY(0) rotate(0);opacity:0}10%{opacity:.85}90%{opacity:.5}100%{transform:translateY(-190px) rotate(40deg);opacity:0}}
@keyframes ngf-sway{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
@keyframes ngf-pop{0%{transform:scale(1)}50%{transform:scale(1.3) rotate(-10deg)}100%{transform:scale(1)}}
@keyframes ngf-beat{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
@media (max-width:640px){.ngf-fest{padding:0 10px}.ngf-fest__card{padding:16px 46px 16px 16px;justify-content:center;text-align:center}.ngf-fest__body{flex-basis:100%;align-items:center}.ngf-fest__emoji{font-size:38px}.ngf-fest__offer{justify-content:center}.ngf-fest__text{display:none}}
@media (prefers-reduced-motion:reduce){.ngf-fest,.ngf-fest *,.ngf-fest__card::after{animation:none!important;transition:none!important}.ngf-fest__fx{display:none}}

/* Offer card: a ticket-style discount badge, countdown and code */
.ngf-fest--promo .ngf-fest__card{background:linear-gradient(115deg,#0f2a52 0%,var(--ngf-c) 100%);border-bottom-color:var(--ngf-gold)}
html[data-mode="dark"] .ngf-fest--promo .ngf-fest__card{background:linear-gradient(115deg,#08142a 0%,color-mix(in srgb,var(--ngf-c) 70%,#000) 100%)}
.ngf-fest__pct--big{position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:92px;padding:10px 14px;border-radius:14px;line-height:1;animation:ngf-beat 2s ease-in-out infinite}
.ngf-fest__pct--big b{font-size:2rem}
.ngf-fest__pct--big i{font-style:normal;font-size:.8rem;letter-spacing:.2em;font-weight:800}
.ngf-fest__text--show{display:block}
.ngf-fest__left{display:inline-block;margin-left:6px;padding:2px 10px;border-radius:999px;background:rgba(255,255,255,.18);font-weight:700;font-size:.82rem;animation:ngf-beat 1.8s ease-in-out infinite}
/* Referral card: calm surface card in the theme's own colours (always visible, so quieter than the offer) */
.ngf-fest--ref .ngf-fest__card{background:#fff;color:var(--text-main,#334155);border:1px solid var(--border,#e5e7eb);border-left:6px solid var(--ngf-gold);border-bottom:1px solid var(--border,#e5e7eb);box-shadow:0 2px 12px rgba(15,42,82,.08)}
html[data-mode="dark"] .ngf-fest--ref .ngf-fest__card{background:#1e293b;border:1px solid var(--border,#334155);border-left:6px solid var(--ngf-gold)}
.ngf-fest--ref .ngf-fest__card::after{display:none}
.ngf-fest--ref .ngf-fest__title{color:var(--primary,#163563);text-shadow:none;font-size:clamp(1.05rem,2.6vw,1.3rem)}
html[data-mode="dark"] .ngf-fest--ref .ngf-fest__title{color:var(--gold,#d6a147)}
.ngf-fest--ref .ngf-fest__emoji{font-size:34px;filter:none}
.ngf-fest--ref .ngf-fest__close{background:rgba(0,0,0,.08);color:var(--text-main,#334155)}
.ngf-fest--ref .ngf-fest__code{background:#f8f6f0}
html[data-mode="dark"] .ngf-fest--ref .ngf-fest__code{color:#0f2a52}

/* Referral card sits just before the footer; without JavaScript it simply stays hidden (it would otherwise appear at the top). */
.ngf-fest--foot.ngf-fest--pending{animation:none}
.ngf-fest--foot:not(.ngf-fest--pending){margin-top:28px;margin-bottom:22px}
