.festival-brand-mark {
    display: inline-grid;
    place-items: center;
    width: 1.35rem;
    height: 1.55rem;
    margin-inline-start: .35rem;
    color: var(--brass-200);
    vertical-align: middle;
    opacity: .85;
}
.festival-brand-mark svg { display: block; width: 100%; height: 100%; }
.festival-brand-diyo { color: #F5BA55; filter: drop-shadow(0 0 7px rgba(244, 161, 35, .55)); }

.site-nav { isolation: isolate; }
.site-nav::after {
    content: '';
    position: absolute;
    inset-inline: 0;
    inset-block-end: 0;
    height: 3px;
    pointer-events: none;
    opacity: .78;
    background:
        repeating-linear-gradient(135deg, transparent 0 7px, rgba(255,255,255,.54) 7px 9px, transparent 9px 14px),
        linear-gradient(90deg, var(--brass), var(--forest), var(--brass));
    background-size: 32px 3px, 100% 100%;
}
body.festival-effects-on .site-nav::after { animation: festivalDhakaDrift 28s linear infinite; }
body.festival-effects-off .site-nav::after { opacity: 0 !important; animation: none; }
body.festival-effects-off .festival-brand-mark { display: none; }
body[data-festival-theme="dashain"] .main-nav a.is-active::after,
body[data-festival-theme="dashain"] .main-nav a:hover::after { height: 2px; background: #DC3545; }
body[data-festival-theme="tihar"] .logo-img { filter: drop-shadow(0 0 12px rgba(244, 168, 54, .25)); }
body[data-festival-theme="teej"] .site-nav::after {
    background:
        radial-gradient(circle, #1F9275 0 2px, transparent 2.5px) 0 0 / 16px 5px repeat-x,
        linear-gradient(90deg, #9C173D, #D5A342, #9C173D);
}
body[data-festival-theme="losar"] .site-nav::after {
    background: repeating-linear-gradient(90deg, #D7463D 0 18px, #E7B53A 18px 36px, #3477A9 36px 54px, #49865D 54px 72px);
    opacity: .64;
}
body[data-festival-theme="classic"] .site-nav::after,
body[data-festival-theme="custom"] .site-nav::after { opacity: .42; }

body.festival-effects-on[data-festival-theme="holi"] .hero::after {
    background:
        radial-gradient(32% 30% at 18% 70%, rgba(193, 38, 114, .18), transparent 100%),
        radial-gradient(32% 35% at 82% 68%, rgba(40, 97, 181, .18), transparent 100%),
        radial-gradient(90% 55% at 50% 108%, rgba(198,161,91,.22), transparent 62%);
}
body.festival-effects-on[data-festival-theme="tihar"] .hero { box-shadow: inset 0 -3px 0 rgba(224, 150, 37, .52); }
body.festival-effects-on[data-festival-theme="teej"] .hero { border-bottom: 2px solid rgba(190, 24, 93, .4); }

.wedding-festival-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr);
    align-items: center;
    gap: clamp(2rem, 7vw, 7rem);
}
.wedding-copy { max-width: 650px; }
.wedding-copy .kicker { color: var(--brass); }
.wedding-copy .kicker::before { background: var(--brass); }
.wedding-copy h2 { margin: 1rem 0; }
.wedding-copy p { max-width: 62ch; }
.festival-home-panel {
    position: relative;
    display: grid;
    justify-items: center;
    gap: 1.5rem;
    padding: clamp(1.4rem, 3vw, 2.5rem);
    border: 1px solid rgba(226, 215, 190, .2);
    border-radius: 16px;
    background:
        radial-gradient(circle at 12px 12px, rgba(198,161,91,.1) 1px, transparent 1.6px) 0 0 / 24px 24px,
        rgba(15, 15, 14, .22);
}
.festival-countdown { text-align: center; }
.festival-countdown-label { display: block; color: var(--brass-200); font-size: .68rem; letter-spacing: .08em; }
.festival-countdown-name { display: block; margin-block: .2rem .5rem; color: #fff; font-family: var(--font-display, Georgia, serif); font-size: 1.25rem; font-weight: 500; }
.festival-countdown-clock { display: flex; justify-content: center; gap: .55rem; }
.festival-countdown-clock > span { display: grid; min-width: 3.3rem; padding: .35rem .45rem; border: 1px solid rgba(198,161,91,.24); border-radius: 7px; background: rgba(0,0,0,.14); }
.festival-countdown-clock b { color: #fff; font-size: 1rem; font-variant-numeric: tabular-nums; }
.festival-countdown-clock small { color: rgba(250,246,238,.54); font-size: .58rem; text-transform: uppercase; }
.festival-footer-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 1.2rem 2rem;
    margin-block: 2rem 1.25rem;
    padding: 1.2rem;
    border: 1px solid rgba(226, 215, 190, .18);
    border-radius: 14px;
    background: rgba(255,255,255,.025);
}
.festival-footer-tools .festival-countdown { flex: 1 1 250px; }
.festival-preferences { display: flex; flex-wrap: wrap; gap: .55rem; }
.festival-preference {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    min-height: 2.5rem;
    padding: .5rem .8rem;
    border: 1px solid rgba(198,161,91,.38);
    border-radius: 999px;
    background: rgba(255,255,255,.035);
    color: rgba(250,246,238,.86);
    font: inherit;
    font-size: .73rem;
    cursor: pointer;
    transition: border-color .2s ease, background .2s ease, color .2s ease;
}
.festival-preference:hover,
.festival-preference[aria-pressed="true"] { border-color: var(--brass); background: rgba(198,161,91,.14); color: #fff; }
.festival-preference-icon { color: var(--brass-200); font-size: 1rem; }
footer { position: relative; overflow: hidden; }
footer::before {
    content: '';
    position: absolute;
    inset-inline: 0;
    inset-block-start: 0;
    height: 1px;
    background: repeating-linear-gradient(90deg, var(--brass) 0 9px, transparent 9px 13px, var(--forest) 13px 22px, transparent 22px 26px);
    opacity: .45;
}
body.festival-effects-off footer::before,
body.festival-effects-on[data-festival-theme="tihar"] footer::after {
    content: '';
    position: absolute;
    inset-inline: 8%;
    inset-block-end: 1.2rem;
    height: 24px;
    pointer-events: none;
    opacity: .58;
    background: radial-gradient(ellipse, rgba(255, 166, 38, .45), rgba(255, 140, 0, .12) 28%, transparent 72%) 0 50% / 80px 24px repeat-x;
    animation: festivalDiyoGlow 3.6s ease-in-out infinite alternate;
}
body.festival-effects-off .festival-home-panel::after { opacity: 0; }
body.festival-effects-on[data-festival-theme="teej"] .festival-home-panel::after,
body.festival-effects-on[data-festival-theme="dashain"] .festival-home-panel::after {
    content: '';
    position: absolute;
    inset: 5px;
    border: 1px solid rgba(198,161,91,.17);
    border-radius: 10px;
    pointer-events: none;
}
.wedding-festival-section .wedding-festival-grid { text-align: center; }
.wedding-festival-section .wedding-copy { margin-inline: auto; }

.festival-particle {
    position: fixed;
    z-index: 20;
    top: -18px;
    width: 11px;
    height: 16px;
    border-radius: 80% 12% 80% 12%;
    background: linear-gradient(135deg, rgba(239,167,44,.22), rgba(193,93,36,.58));
    opacity: .14;
    pointer-events: none;
    animation: festivalPetalFall 15s linear forwards;
}
.festival-particle[data-kind="powder"] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--particle-colour, #D94784);
    opacity: .11;
    filter: blur(1px);
    animation-name: festivalPowderDrift;
    animation-duration: 19s;
}
.festival-burst {
    position: fixed;
    z-index: 30;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    pointer-events: none;
    background: var(--burst-colour, #D94784);
    animation: festivalColourBloom .75s ease-out forwards;
}
@keyframes festivalPetalFall {
    to { transform: translate3d(28px, 110vh, 0) rotate(280deg); opacity: .035; }
}
@keyframes festivalPowderDrift {
    to { transform: translate3d(-24px, 105vh, 0) scale(2.3); opacity: .025; }
}
@keyframes festivalColourBloom {
    to { transform: scale(13); opacity: 0; }
}
@keyframes festivalDiyoGlow {
    from { opacity: .3; filter: blur(1px); }
    to { opacity: .66; filter: blur(3px); }
}
@keyframes festivalDhakaDrift {
    to { background-position: 32px 0, 0 0; }
}
@media (max-width: 680px) {
    .wedding-festival-grid { grid-template-columns: minmax(0, 1fr); }
    .wedding-copy { margin-inline: auto; }
    .festival-home-panel { width: 100%; }
    .festival-footer-tools { justify-content: center; text-align: center; }
    .festival-preferences { justify-content: center; }
}
@media (prefers-reduced-motion: reduce) {
    .festival-particle, .festival-burst { display: none !important; animation: none !important; }
    body[data-festival-theme="tihar"] footer::after,
    body.festival-effects-on .site-nav::after { animation: none; }
}
@media print {
    .festival-home-panel, .festival-footer-tools, .festival-particle, .festival-burst { display: none !important; }
}
