/* Portrait reference composition. The overlay fills the viewport while its
   foreground scales as one unit, including short phones and landscape. */
#victory-screen{padding:0;overflow:hidden;background:#4058bd;color:#fff}
/* Real image elements are eagerly decoded at boot, including when the
   dialog is hidden. The opaque background prevents the board bleeding through. */
#victory-screen .victory-background-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
#victory-screen img{pointer-events:none;user-select:none;-webkit-user-drag:none}
.victory-layout{position:absolute;left:50%;top:50%;width:947px;height:1850px;transform:translate(-50%,-50%) scale(var(--victory-scale,.4));transform-origin:center}
.victory-heading-art{position:absolute;left:0;top:190px;width:947px;height:465px;filter:drop-shadow(0 12px 8px #15385a85);pointer-events:none}
.victory-heading-art canvas{display:block;width:100%;height:100%}
#victory-heading-source{display:none!important}
.victory-feature{position:absolute;left:220px;top:688px;width:500px;height:165px}
.victory-feature h2{position:absolute;left:34px;top:5px;max-width:326px;height:66px;margin:0;padding:2px 20px 9px;display:grid;place-items:center;border-radius:24px 24px 0 0;background:#233f62;color:#fff;font-size:41px;line-height:1;white-space:nowrap;text-shadow:0 3px 1px #16283f}
.victory-feature h2:has(+ .victory-track[aria-valuenow="100"]){font-size:32px}
.victory-track{position:absolute;left:0;top:56px;width:405px;height:84px;border:11px solid #479def;border-radius:36px;background:linear-gradient(#132441,#273e70);box-shadow:0 0 0 2px #1a468b,inset 0 4px 3px #051735,0 4px 2px #263d73;overflow:hidden}
#victory-feature-fill{position:absolute;inset:3px auto 3px 3px;max-width:calc(100% - 6px);border-radius:22px;background:linear-gradient(#d3f559,#ace33b 24%,#86c72b 75%,#67ab22);box-shadow:inset 0 2px 3px #f6ffa4,inset 0 -4px 4px #427a25,0 0 0 2px #528424;transition:width .7s ease-out}
#victory-feature-percent{position:absolute;inset:0;display:grid;place-items:center;padding-right:45px;font-size:44px;line-height:1;-webkit-text-stroke:4px #4e732c;paint-order:stroke fill;text-shadow:0 3px 1px #3d6229}
.victory-feature-art{position:absolute;right:0;top:0;width:164px;height:164px;border-radius:36px;overflow:hidden;background:#4376c8;box-shadow:0 3px 3px #253b7977}
#victory-screen .victory-reward{position:absolute;margin:0;padding:0;overflow:hidden;border:2px solid #427630;color:white;opacity:1;filter:none;box-shadow:0 5px 5px #203d7580;transition:transform .12s,filter .12s}
#victory-screen .victory-reward:active:not(:disabled){transform:translateY(4px);filter:brightness(.97);box-shadow:0 2px 3px #203d7580}
#victory-screen .victory-double{left:235px;top:1105px;width:480px;height:164px;border-radius:44px;background:#9cd63c}
#victory-screen .victory-claim{left:309px;top:1315px;width:330px;height:140px;border-color:#2e80af;border-radius:43px;background:#40cde9}
#victory-screen .victory-reward b{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:76px;line-height:1;letter-spacing:0;-webkit-text-stroke:6px #35611f;paint-order:stroke fill;text-shadow:0 4px 1px #295325}
.victory-double b{left:290px;right:60px}
#victory-screen .victory-claim b{left:154px;right:40px;font-size:78px;-webkit-text-stroke-color:#317599;text-shadow:0 4px 1px #316b9e}
#victory-screen .victory-claim.victory-replay b{font-size:49px;right:19px;left:136px;-webkit-text-stroke-width:4px}
#victory-screen .victory-double:disabled{filter:saturate(.75);cursor:wait}
#victory-feedback{position:absolute;left:144px;top:1485px;width:660px;margin:0;text-align:center;font-size:29px;line-height:1.35;color:white;text-shadow:0 2px 2px #254f92}
@media(prefers-reduced-motion:reduce){#victory-feature-fill,#victory-screen .victory-reward{transition:none}}

/* Crop the original WEBP illustrations without relying on hidden CSS URL loads. */
.victory-feature-art img{position:absolute;left:-555px;top:-689px;width:947px;height:2048px;max-width:none}
#victory-screen .victory-double img{position:absolute;left:-21.8px;top:-29.7px;width:523.6px;height:219.5px;max-width:none}
#victory-screen .victory-claim img{position:absolute;left:-28.5px;top:-31px;width:384.3px;height:201.9px;max-width:none}

/* Room restoration occupies the former feature area, above both rewards. */
.victory-heading-art{top:95px}
.victory-feature{left:158px;top:615px;width:630px;height:620px}
.victory-feature h2{left:0;top:0;width:100%;max-width:none;height:64px;padding:0;background:none;font-size:44px}
#victory-room{position:absolute;left:0;top:78px;width:630px;height:420px;overflow:hidden;border-radius:32px;border:7px solid #85d9ff;box-shadow:0 7px 0 #263d85,0 12px 24px #15295660;background:#112347;isolation:isolate}
#victory-room img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(var(--room-after,.65));}
#victory-room img[hidden]{display:none}
#room-lights{position:absolute;inset:0;mix-blend-mode:screen;pointer-events:none}
.room-light{position:absolute;width:145px;height:145px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,#fff5bd 0%,#ffeaa5bb 4%,#ffc76665 17%,#ffb84424 43%,transparent 70%)}
.room-light::after{content:'';position:absolute;inset:47%;border-radius:50%;background:#fff6cc;box-shadow:0 0 10px 4px #ffe48a}
.room-light-new{animation:room-light-on 1.2s ease-out both}
.room-reveal img{animation:room-brighten 1.2s ease-out both}
.victory-feature .victory-track{left:42px;top:527px;width:546px;height:74px}
#victory-feature-percent{padding:0;font-size:40px}
#room-status{position:absolute;top:620px;left:-50px;width:730px;text-align:center;font-size:32px;margin:0;text-shadow:0 3px 2px #243e7c}
#victory-screen .victory-double{top:1310px}
#victory-screen .victory-claim{top:1510px}
#victory-feedback{top:1680px}
.room-progress-reveal{animation:room-progress 1.2s ease-out both}
@keyframes room-light-on{0%,25%{opacity:0;scale:.6}65%{opacity:1;scale:1.2}100%{opacity:1;scale:1}}
@keyframes room-brighten{from{filter:brightness(var(--room-before))}to{filter:brightness(var(--room-after))}}
@keyframes room-progress{from{width:var(--progress-before)}}
@media(prefers-reduced-motion:reduce){.room-light-new,.room-reveal img,.room-progress-reveal{animation:none}}

/* A one-time milestone burst after the final light comes on. */
#room-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:8}
#room-confetti i{position:absolute;left:var(--x);top:490px;width:14px;height:24px;border-radius:4px;opacity:0;animation:room-confetti-fall 3s var(--delay) ease-out both}
.room-completed #victory-room{animation:room-milestone-glow 2.6s .8s ease-out both;border-color:#ffe879}
.room-completed #victory-feature-label{color:#fff08a;animation:room-milestone-pop .7s .8s both}
.room-completed #room-status{color:#fff08a;animation:room-milestone-pop .7s 1s both}
@keyframes room-confetti-fall{0%{opacity:0;transform:translate(0,-160px) rotate(0)}12%{opacity:1}80%{opacity:1}100%{opacity:0;transform:translate(var(--drift),1130px) rotate(var(--turn))}}
@keyframes room-milestone-glow{0%,100%{transform:scale(1);box-shadow:0 7px 0 #263d85,0 0 24px #ffda5470}35%{transform:scale(1.045);box-shadow:0 7px 0 #263d85,0 0 85px 20px #ffdc78b0}65%{transform:scale(1.015);box-shadow:0 7px 0 #263d85,0 0 45px #ffdc7890}}
@keyframes room-milestone-pop{0%{transform:scale(.8);opacity:0}65%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){#room-confetti{display:none}.room-completed #victory-room,.room-completed #victory-feature-label,.room-completed #room-status{animation:none}}

#victory-room-picture{position:absolute;inset:0}
