/* Light sits over the photograph, below captions, in the same moving frame. */
.festi-light-layer{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;mix-blend-mode:screen;contain:paint}
.festi-light-plane{position:absolute;left:0;top:0;transform-origin:0 0;pointer-events:none}
.festi-light-plane>i{position:absolute;display:block;pointer-events:none}
.festi-light-glow{border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(ellipse,#fff4c98c 0%,#ffd48155 8%,#ffb04728 32%,transparent 68%);animation:festi-flame-breathe var(--flicker,2.7s) ease-in-out var(--phase,0s) infinite alternate}
.festi-light-sun{transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,#fff9dd5e 0%,#ffe6aa36 12%,#f7c06b1f 36%,transparent 70%);animation:festi-sun-breathe 9s ease-in-out infinite alternate}
.festi-light-rays{transform-origin:50% 0;transform:translateX(-50%) rotate(var(--ray-angle));background:conic-gradient(from 154deg at 50% 0%,transparent 0deg,#ffeac62c 3deg,transparent 6deg,#ffecc620 9deg,transparent 12deg,#fff2cb2e 15deg,transparent 19deg,#ffdaac21 23deg,transparent 27deg,#fff2d422 30deg,transparent 35deg);mask-image:linear-gradient(#0009,#000 22%,transparent 94%);filter:blur(6px);animation:festi-rays-drift 11s ease-in-out infinite alternate}
.festi-light-water{transform:translate(-50%,-50%);background:repeating-linear-gradient(0deg,transparent 0 5px,#ffdb8c33 6px 7px,transparent 8px 12px);mask-image:radial-gradient(ellipse,#0009,transparent 68%);animation:festi-water-glint 5s ease-in-out infinite alternate}
.festi-light-stage{transform-origin:50% 0;transform:rotate(var(--beam-angle));background:linear-gradient(180deg,#f8ddb967,transparent 90%);clip-path:polygon(46% 0,54% 0,100% 100%,0 100%);filter:blur(14px);opacity:.3;animation:festi-stage-sway 10s ease-in-out var(--phase) infinite alternate}
.festi-moment-scene:not(.is-active) .festi-light-plane>i,
.festi-moments.is-paused .festi-light-plane>i,
.festi-lights-paused .festi-light-plane>i,
.festi-lights-paused .festi-story-scene{animation-play-state:paused}
@keyframes festi-flame-breathe{0%{opacity:.38;transform:translate(-50%,-50%) scale(.92)}37%{opacity:.79}68%{opacity:.52}100%{opacity:.9;transform:translate(-50%,-50%) scale(1.07)}}
@keyframes festi-sun-breathe{from{opacity:.4;transform:translate(-50%,-50%) scale(.95)}to{opacity:.85;transform:translate(-50%,-50%) scale(1.06)}}
@keyframes festi-rays-drift{from{opacity:.32;transform:translateX(-50%) rotate(calc(var(--ray-angle) - 2deg))}to{opacity:.72;transform:translateX(-50%) rotate(calc(var(--ray-angle) + 2deg))}}
@keyframes festi-water-glint{from{opacity:.25;transform:translate(-50%,-50%) scaleX(.93)}to{opacity:.65;transform:translate(-50%,-48%) scaleX(1.04)}}
@keyframes festi-stage-sway{from{opacity:.12;transform:rotate(calc(var(--beam-angle) - 8deg))}to{opacity:.34;transform:rotate(calc(var(--beam-angle) + 8deg))}}

/* The editorial story: a readable introduction and a coordinated three-image gallery. */
html[data-festi-design=celebration] #inspiration.festi-light-story{position:relative;isolation:isolate;background:radial-gradient(ellipse at 15% 5%,#f6dfad66,transparent 54%),#f3eddf;padding-block:64px;gap:48px;grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr)}
.festi-light-story .editorial-copy{max-width:480px;margin-inline:auto 0}
.festi-light-story .editorial-copy .eyebrow{font-size:9px;line-height:1.8;letter-spacing:2.5px;max-width:340px;color:#846331}
.festi-light-story .editorial-copy h2{font:400 clamp(36px,3.4vw,54px)/1.06 var(--serif);letter-spacing:-1.2px;color:#17343e;margin:20px 0}
.festi-light-story .editorial-copy h2 em{font-weight:400;font-style:italic;color:#9e7736}
.festi-light-story .editorial-copy p{font-size:14px;line-height:1.85;max-width:385px;color:#62675d}
.festi-light-story .editorial-copy .link{display:inline-flex;align-items:center;gap:22px;min-height:48px;padding:14px 24px;margin-bottom:12px;background:linear-gradient(120deg,#b69254,#927039);border:1px solid #aa864b;color:#fffdf5;box-shadow:0 8px 25px #9d773c17}
.festi-light-story .editorial-copy .link svg{width:20px;height:20px}
html[data-festi-design=celebration] .festi-light-story .editorial-gallery{display:grid;grid-template-columns:1.15fr .85fr;grid-template-rows:1fr 1fr;gap:14px;height:470px;max-width:810px;border-radius:0;overflow:visible;width:100%}
.festi-light-story .editorial-gallery .festi-story-photo{isolation:isolate;min-width:0;min-height:0;border-radius:20px;overflow:hidden;margin:0;position:relative;background:#253932;box-shadow:0 10px 24px #39352112}
.festi-light-story .editorial-gallery .festi-story-photo-0{grid-row:1 / 3}
.festi-story-scene{position:absolute;inset:0;overflow:hidden;animation:festi-story-breathe 18s ease-in-out infinite alternate;transform-origin:50% 45%}
.festi-story-scene>img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:50% 45%}
.festi-story-photo-0 .festi-story-scene>img{object-position:51% 42%}
.festi-light-story .editorial-gallery figcaption{position:absolute;z-index:2;inset:auto 0 0;padding:46px 18px 20px;background:linear-gradient(transparent,#092631c4);color:#fff8e8;font:400 20px/1.15 var(--serif);letter-spacing:0}
.festi-light-story .editorial-gallery .festi-story-photo-0 figcaption{font-size:28px;padding:65px 22px 24px}
.festi-story-note{display:block;color:#736c5d;font-size:10px;line-height:1.7;margin-top:10px}
.festi-story-toggle{display:flex;align-items:center;width:fit-content;min-height:44px;padding:8px 0;margin:0;border:0;background:none;color:#765b30;text-decoration:underline;text-underline-offset:4px;font:500 11px/1.5 'DM Sans',sans-serif;cursor:pointer}
.festi-story-toggle[hidden]{display:none}
.festi-story-toggle:focus-visible{outline:2px solid #947241;outline-offset:3px}
.festi-lit-mood{isolation:isolate}
.festi-lit-mood .festi-story-scene{z-index:-1}
.festi-lit-mood:hover .festi-story-scene>img{transform:none}
.festi-lit-mood::after{z-index:0;pointer-events:none}
.festi-lit-mood>span{z-index:2}
@keyframes festi-story-breathe{from{transform:scale(1.005)}to{transform:scale(1.045)}}
:root[data-festi-theme=dark] #inspiration.festi-light-story{background:radial-gradient(ellipse at 15% 5%,#aa814016,transparent 54%),#1d3340}
:root[data-festi-theme=dark] .festi-light-story .editorial-copy h2{color:#f7ebd6}
:root[data-festi-theme=dark] .festi-light-story .editorial-copy :is(h2 em,.eyebrow){color:#e4bf7c}
:root[data-festi-theme=dark] .festi-light-story .editorial-copy p{color:#d1d9d5}
:root[data-festi-theme=dark] :is(.festi-story-toggle,.festi-story-note){color:#e1c493}
@media(max-width:900px){
 html[data-festi-design=celebration] #inspiration.festi-light-story{grid-template-columns:1fr;gap:28px;padding-block:44px}
 .festi-light-story .editorial-copy{max-width:680px;width:100%;margin:0}
 .festi-light-story .editorial-copy p{max-width:520px}
 html[data-festi-design=celebration] .festi-light-story .editorial-gallery{height:430px;max-width:none}
}
@media(max-width:540px){
 html[data-festi-design=celebration] #inspiration.festi-light-story{padding:38px 5%;gap:24px}
 .festi-light-story .editorial-copy h2{font-size:38px;line-height:1.12;letter-spacing:-1px}
 .festi-light-story .editorial-copy p{font-size:13px;line-height:1.8;margin-block:19px}
 html[data-festi-design=celebration] .festi-light-story .editorial-gallery{height:auto;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:11px}
 .festi-light-story .editorial-gallery .festi-story-photo{height:185px;border-radius:17px}
 .festi-light-story .editorial-gallery .festi-story-photo-0{height:auto;aspect-ratio:1.2;grid-column:1 / 3;grid-row:auto}
 .festi-light-story .editorial-gallery figcaption{font-size:19px;padding:42px 13px 16px}
 .festi-light-story .editorial-gallery .festi-story-photo-0 figcaption{font-size:27px}
}
@media(prefers-reduced-motion:reduce){.festi-light-plane>i,.festi-story-scene{animation:none!important}.festi-light-glow,.festi-light-sun,.festi-light-rays{opacity:.4}}
