/* Full-width ReHeart puzzle: typography and scenery assemble as one composition. */
.full-puzzle-section{position:relative;margin:0 -2.5%;padding:0 0 22px;min-height:0;display:block}
.full-puzzle{position:relative;width:100%;aspect-ratio:1448/471;overflow:hidden;isolation:isolate;background:linear-gradient(115deg,#faf7f0 15%,#f1eadd 100%);}
.full-puzzle img.full-puzzle-final{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:1;display:block;}
.full-puzzle[data-playing="true"] img.full-puzzle-final{opacity:0;}
.full-puzzle[data-completed="true"] img.full-puzzle-final{opacity:1;transition:opacity 1.05s ease;}
.full-puzzle-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:2;}
.full-puzzle-svg.mobile{display:none}
.full-tile{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(var(--rot)) scale(.88);transform-box:fill-box;transform-origin:center;}
.full-tile-bg{fill:#faf8f3;stroke:#c6c9ba;stroke-width:1.15;}
.full-tile-image{opacity:0;filter:grayscale(1) saturate(.16) brightness(1.16);}
.full-tile-line{fill:none;stroke:rgba(222,211,189,.78);stroke-width:1.1;stroke-linejoin:round}
.full-puzzle[data-playing="true"] .full-tile{animation:full-piece-in 1.65s cubic-bezier(.18,.77,.23,1) both;animation-delay:var(--delay);}
.full-puzzle[data-playing="true"] .full-tile-image{animation:full-tile-color 2.6s ease-out both;animation-delay:calc(var(--delay) + .45s);}
.full-puzzle[data-completed="true"] .full-puzzle-svg{opacity:0;transition:opacity 1.1s ease;}
.full-puzzle-static-link{position:absolute;z-index:5;display:block;left:10%;top:66%;width:24%;height:13%;border-radius:48px;}
.full-puzzle-static-link:focus-visible{outline:3px solid #42654b;outline-offset:5px}
.full-puzzle-replay{position:absolute;right:17px;bottom:14px;z-index:6;padding:9px 12px;border:1px solid #c6bb9d;border-radius:35px;background:#fffaf1df;color:#37543b;font:600 11px/1.2 Georgia,serif;letter-spacing:.12em;cursor:pointer}
.full-puzzle-replay:hover{background:#fff}
.full-puzzle-title-accessible{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
@keyframes full-piece-in{0%{opacity:0;transform:translate(var(--tx),var(--ty)) rotate(var(--rot)) scale(.88)}30%{opacity:.85}100%{opacity:1;transform:translate(0,0) rotate(0) scale(1)}}
@keyframes full-tile-color{0%{opacity:0;filter:grayscale(1) saturate(.2) brightness(1.14)}30%{opacity:.55}100%{opacity:1;filter:none}}
@media(max-width:900px){
.full-puzzle-section{margin:0;padding:0 0 28px}
.full-puzzle{aspect-ratio:1/1}
.full-puzzle-svg.desktop{display:none}
.full-puzzle-svg.mobile{display:block}
.full-puzzle-static-link{left:9.4%;top:41%;width:43%;height:7.5%}
.full-puzzle-replay{right:10px;bottom:10px;font-size:10px;padding:8px 10px}
}
@media(prefers-reduced-motion:reduce){
.full-puzzle-svg,.full-puzzle-replay{display:none!important}
.full-puzzle img.full-puzzle-final{opacity:1!important;transition:none!important}
}

/* REHEART FINAL ASSEMBLY FLASH V2
   A short, luminous sunrise when the last piece has settled. */
.full-puzzle-finale{
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  overflow:hidden;
  opacity:0;
}
.full-puzzle-finale span{position:absolute;display:block;pointer-events:none;}
.finale-warmth{
  inset:0;
  background:
    radial-gradient(ellipse 33% 48% at 84% 48%,rgba(255,255,250,.98) 0%,rgba(255,247,215,.76) 22%,rgba(251,215,145,.36) 51%,transparent 82%),
    radial-gradient(ellipse 85% 85% at 71% 58%,rgba(255,248,230,.35),transparent 80%);
  mix-blend-mode:screen;
  opacity:0;
}
.finale-sunburst{
  left:84%;top:48%;
  width:48%;aspect-ratio:1;
  transform:translate(-50%,-50%) scale(.25);
  transform-origin:center;
  border-radius:50%;
  background:
    radial-gradient(circle,rgba(255,255,255,1) 0%,rgba(255,255,244,.96) 5%,rgba(255,244,193,.83) 12%,rgba(254,223,157,.34) 32%,transparent 66%);
  filter:blur(4px);
  mix-blend-mode:screen;
  opacity:0;
}
.finale-glint{
  left:84%;top:48%;
  width:31%;aspect-ratio:1;
  transform:translate(-50%,-50%) scale(.4);
  opacity:0;
  background:
    linear-gradient(90deg,transparent 0%,rgba(255,253,229,.06) 39%,rgba(255,255,245,.88) 49.7%,rgba(255,255,245,.88) 50.3%,rgba(255,253,229,.06) 61%,transparent 100%),
    linear-gradient(0deg,transparent 0%,rgba(255,253,229,.05) 40%,rgba(255,255,245,.86) 49.7%,rgba(255,255,245,.86) 50.3%,rgba(255,253,229,.05) 60%,transparent 100%);
  -webkit-mask-image:radial-gradient(circle,#000 0%,transparent 68%);
  mask-image:radial-gradient(circle,#000 0%,transparent 68%);
  mix-blend-mode:screen;
}
.full-puzzle[data-completed="true"] .full-puzzle-finale{opacity:1;}
.full-puzzle[data-completed="true"] .finale-warmth{animation:reheart-warm-flash 1.75s ease-out .05s both;}
.full-puzzle[data-completed="true"] .finale-sunburst{animation:reheart-sun-flash 1.65s cubic-bezier(.22,.64,.23,1) .07s both;}
.full-puzzle[data-completed="true"] .finale-glint{animation:reheart-star-flash 1.25s ease-out .10s both;}
@keyframes reheart-warm-flash{
  0%{opacity:0}
  15%{opacity:.45}
  31%{opacity:.88}
  48%{opacity:.40}
  100%{opacity:0}
}
@keyframes reheart-sun-flash{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.24)}
  23%{opacity:.98;transform:translate(-50%,-50%) scale(.78)}
  40%{opacity:.98;transform:translate(-50%,-50%) scale(1.20)}
  74%{opacity:.27;transform:translate(-50%,-50%) scale(1.65)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.85)}
}
@keyframes reheart-star-flash{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.33)}
  33%{opacity:1;transform:translate(-50%,-50%) scale(1.02)}
  68%{opacity:.55;transform:translate(-50%,-50%) scale(1.25)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.4)}
}
@media(max-width:900px){
  .finale-sunburst,.finale-glint{left:82%;top:53%;}
  .finale-warmth{background:radial-gradient(ellipse 52% 38% at 82% 53%,rgba(255,255,250,.98) 0%,rgba(255,246,212,.7) 28%,rgba(248,217,148,.25) 60%,transparent 90%);}
  .finale-sunburst{width:77%;}
  .finale-glint{width:43%;}
}
@media(prefers-reduced-motion:reduce){
  .full-puzzle-finale,.full-puzzle-finale span{display:none!important;animation:none!important}
}

/* Mobile: one cohesive square canvas with the headline and landscape together. */
@media(max-width:900px){
  .full-puzzle-section{padding-bottom:8px;}
  .full-puzzle{width:100%;aspect-ratio:1 / 1;overflow:hidden;}
  .full-puzzle img.full-puzzle-final{object-fit:fill;}
  .full-puzzle-svg.mobile{width:100%;height:100%;overflow:hidden;}
  .full-puzzle-static-link{left:9.4%;top:41%;width:43%;height:7.5%;border-radius:50px;}
  .finale-sunburst,.finale-glint{left:91%;top:80%;}
  .finale-warmth{background:radial-gradient(ellipse 50% 38% at 89% 80%,rgba(255,255,250,.97),rgba(255,248,215,.62) 26%,rgba(250,224,164,.24) 56%,transparent 88%);}
  .full-puzzle-replay{bottom:10px;right:10px;}
}
