@keyframes pz-pop{0%{transform:scale(1.12) rotate(-3deg)}55%{transform:scale(.96) rotate(1.5deg)}to{transform:scale(1) rotate(0)}}@keyframes pz-hop{0%,to{transform:none}35%{transform:translateY(-14px) rotate(-3deg) scale(1.04)}70%{transform:translateY(1px) rotate(1.5deg)}}@keyframes pz-light{to{opacity:1}}@keyframes pz-spark{to{opacity:0;transform:translate(var(--x),var(--y)) scale(.2)}}@keyframes pz-glow{0%{opacity:0}25%{opacity:1}45%{opacity:.55}65%{opacity:.95}to{opacity:.7}}.puzzle-section{--vdiv:clamp(48px, 8vw, 110px);position:relative;overflow:hidden;background:#02280f;height:calc(var(--vdiv)*2 + clamp(110px,11vw,190px));-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1' preserveAspectRatio='none'%3E%3Cpath d='M0 1v-.902C.0497 .001 .105 .18 .16 .35c.0755 .233 .1455 .224 .222 .03c.063 -.16 .119 -.14 .173 .08c.0795 .324 .1562 .276 .24 .1c.0826 -.174 .143 .01 .205 .317V1H0Z'/%3E%3C/svg%3E"),linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1' preserveAspectRatio='none'%3E%3Cpath d='M0 0v.902C.0497 .999 .105 .82 .16 .65c.0755 -.233 .1455 -.224 .222 -.03c.063 .16 .119 .14 .173 -.08c.0795 -.324 .1562 -.276 .24 -.1c.0826 .174 .143 -.01 .205 -.317V0H0Z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1' preserveAspectRatio='none'%3E%3Cpath d='M0 1v-.902C.0497 .001 .105 .18 .16 .35c.0755 .233 .1455 .224 .222 .03c.063 -.16 .119 -.14 .173 .08c.0795 .324 .1562 .276 .24 .1c.0826 -.174 .143 .01 .205 .317V1H0Z'/%3E%3C/svg%3E"),linear-gradient(#000,#000),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1' preserveAspectRatio='none'%3E%3Cpath d='M0 0v.902C.0497 .999 .105 .82 .16 .65c.0755 -.233 .1455 -.224 .222 -.03c.063 .16 .119 .14 .173 -.08c.0795 -.324 .1562 -.276 .24 -.1c.0826 .174 .143 -.01 .205 -.317V0H0Z'/%3E%3C/svg%3E");-webkit-mask-size:100% var(--vdiv),100% calc(100% - var(--vdiv)*2 + 2px),100% var(--vdiv);mask-size:100% var(--vdiv),100% calc(100% - var(--vdiv)*2 + 2px),100% var(--vdiv);-webkit-mask-position:0 0,0 calc(var(--vdiv) - 1px),0 100%;mask-position:0 0,0 calc(var(--vdiv) - 1px),0 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.puzzle-stage{position:absolute;inset:0}.puzzle-svg{display:block;width:100%;height:100%;user-select:none;-webkit-user-select:none}.puzzle-svg .pz-piece.is-wall{pointer-events:none}.puzzle-svg .pz-edge{fill:none;stroke:rgba(2,32,14,.75);stroke-width:2.5;pointer-events:none}.puzzle-svg .pz-slot{fill:#02280f;stroke:rgba(230,255,85,.28);stroke-width:2;stroke-dasharray:5 7}.puzzle-svg .pz-slot.is-hot{stroke:#e6ff55;fill:rgba(230,255,85,.16);stroke-dasharray:none}.puzzle-svg .pz-piece.is-loose{cursor:grab;touch-action:none;filter:brightness(1.7) saturate(1.15) drop-shadow(0 8px 10px rgba(0,0,0,.5));transition:filter .2s}.puzzle-svg .pz-piece.is-loose:hover{filter:brightness(2) saturate(1.2) drop-shadow(0 10px 12px rgba(0,0,0,.55))}.puzzle-svg .pz-piece.is-drag{cursor:grabbing;filter:brightness(2) saturate(1.2) drop-shadow(0 16px 16px rgba(0,0,0,.6))}.puzzle-svg .pz-inner{transform-box:fill-box;transform-origin:center}.puzzle-svg .pz-piece.is-snap .pz-inner{animation:pz-pop .5s cubic-bezier(.3,1.6,.5,1)}.puzzle-svg .pz-piece.is-hop .pz-inner{animation:pz-hop .7s cubic-bezier(.3,1.5,.5,1) both;animation-delay:var(--d, 0s)}.puzzle-svg .pz-light{opacity:0}.puzzle-stage.is-done .pz-light{animation:pz-light 1.8s ease .2s forwards}.puzzle-msg,.puzzle-sparkle{position:absolute;pointer-events:none}.puzzle-msg{left:50%;top:50%;z-index:4;transform:translate(-50%,-50%) scale(.5);opacity:0;transition:opacity .4s 1.6s,transform .5s cubic-bezier(.3,1.6,.5,1) 1.6s}.puzzle-stage.is-done .puzzle-msg{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}.puzzle-msg button{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:0;background:#e6ff55;color:#02280f;cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.35);transition:transform .2s}.puzzle-msg button:hover{transform:rotate(-90deg) scale(1.08)}.puzzle-sparkle{width:10px;height:10px;border-radius:50%;z-index:3;animation:pz-spark .6s ease-out forwards}.puzzle-lift,.puzzle-stage::after{position:absolute;inset:0;z-index:2;pointer-events:none}.puzzle-lift.is-active{will-change:transform;cursor:grabbing}.puzzle-lift .puzzle-svg,.puzzle-lift .pz-piece{pointer-events:none}.puzzle-svg .pz-piece.is-drag{transition:none}.puzzle-svg .pz-edge{transition:stroke .6s ease,stroke-width .6s ease}.puzzle-stage.is-done .pz-edge{stroke:#e6ff55;stroke-width:3;transition-delay:var(--d, 0s)}.puzzle-stage::after{content:"";z-index:1;opacity:0;background:radial-gradient(ellipse 55% 75%at 50% 50%,rgba(230,255,85,.42),rgba(230,255,85,.12) 55%,transparent 75%);box-shadow:inset 0 0 70px 14px rgba(230,255,85,.55);mix-blend-mode:screen}.puzzle-stage.is-done::after{animation:pz-glow 3.2s ease .3s forwards}@media (prefers-reduced-motion:reduce){.puzzle-sparkle,.puzzle-stage.is-done .pz-light,.puzzle-stage.is-done::after,.puzzle-svg .pz-piece .pz-inner{animation:none!important}.puzzle-stage.is-done .pz-light{opacity:1}.puzzle-stage.is-done::after{opacity:.7}.puzzle-stage.is-done .pz-edge{transition:none}}