/* nlr-victory.css — WP9 of the NLR SYSTEM port. Implements admin SPEC §5c (celebrations, PLAN D9).
 * The milestone envelope <dialog id="finalEnvelope"> (index.html), ported from NLC styles.css:118-186 as written
 * (envelope, fireworks, reveal, close button, reduced-motion rules). NLC's rank/LP block (#victoryRank) is not ported.
 * The old .victory flash is recoloured (shell §10 / admin §5c) and kept only as the fallback when <dialog> is missing.
 * No !important (D3). The dialog sits in the top layer, so no z-index is needed. */

/* ---------- 1. NLC envelope (styles.css:118-160) ---------- */
.final-envelope{width:min(92vw,560px);min-height:370px;border:1px solid #ddb94a;border-radius:25px;padding:32px;background:radial-gradient(circle at 50% 25%,#294361,#0f2038 72%);color:#fff;text-align:center;box-shadow:0 25px 90px #03102499;overflow:hidden;position:fixed}.final-envelope::backdrop{background:#071629ae;backdrop-filter:blur(5px)}.final-close{position:absolute;right:17px;top:12px;border:0;background:none;color:#fff;font-size:30px;cursor:pointer;z-index:5}.final-envelope-scene{perspective:850px;display:grid;place-items:center;min-height:300px}.final-envelope-button{position:relative;width:260px;height:170px;border:0;background:none;cursor:pointer;transform-style:preserve-3d;filter:drop-shadow(0 20px 28px #0008);transition:transform .5s}.final-envelope-button:hover{transform:rotateY(-10deg) rotateX(5deg) scale(1.05)}.envelope-front{position:absolute;inset:0;background:linear-gradient(145deg,#e9c966,#b88924);clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);border-radius:9px}.envelope-flap{position:absolute;inset:0;background:#f6d978;clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:top;transition:transform .7s;z-index:2}.final-envelope.open .envelope-flap{transform:rotateX(180deg)}.envelope-hint{position:absolute;left:0;right:0;bottom:-34px;color:#fff;font-weight:700}.final-envelope.open .final-envelope-scene{min-height:195px}.final-envelope-message{font-size:23px;line-height:1.45;font-weight:700;margin:8px 18px 22px;animation:envelope-message .5s ease both}@keyframes envelope-message{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.final-fireworks i{position:absolute;width:8px;height:8px;left:50%;top:20%;border-radius:50%;box-shadow:0 -48px #ffe785,35px -35px #f6ad55,48px 0 #fff,35px 35px #ec8ed8,0 48px #77ddff,-35px 35px #ffe785,-48px 0 #fff,-35px -35px #87deba;animation:firework 2s infinite;transform:translateZ(45px)}.final-fireworks i:nth-child(2){left:22%;top:37%;animation-delay:.4s;transform:scale(.7)}.final-fireworks i:nth-child(3){left:78%;top:35%;animation-delay:.8s;transform:scale(.65)}.final-fireworks i:nth-child(4){left:13%;top:70%;animation-delay:1.2s;transform:scale(.5)}.final-fireworks i:nth-child(5){left:85%;top:75%;animation-delay:1.6s;transform:scale(.6)}.final-fireworks i:nth-child(6){left:51%;top:75%;animation-delay:1s;transform:scale(.4)}@keyframes firework{0%,100%{opacity:0;scale:.25}35%,65%{opacity:1;scale:1}}@media(prefers-reduced-motion:reduce){.final-fireworks i,.final-envelope-message{animation:none}.final-envelope-button,.envelope-flap{transition:none}}

/* Success celebration floats over the app; the page stays visible. */
dialog.final-envelope{inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#fff;overflow:auto;text-align:center}
dialog.final-envelope::backdrop{background:transparent;backdrop-filter:none}
dialog.final-envelope:not([open]){display:none}
dialog.final-envelope[open]{display:grid;place-items:center}
.final-envelope .victory-content{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(92vw,700px);min-height:min(620px,100dvh);padding:48px 8px 35px;pointer-events:none;filter:drop-shadow(0 2px 3px #08192e)}
.final-envelope .victory-content button{pointer-events:auto}
.final-envelope .final-close{position:fixed;top:18px;right:24px;z-index:5;width:44px;height:44px;border:1px solid #fff7;border-radius:50%;background:#18294266;color:#fff;font-size:30px;line-height:1;box-shadow:0 2px 12px #07162966}
.final-envelope .final-close:hover,.final-envelope .final-close:focus-visible{background:#182942cc;outline:2px solid #fff}
.final-envelope .victory-eyebrow{margin:0 0 18px;color:#ffe690;font-size:clamp(27px,5vw,46px);font-weight:900;letter-spacing:.16em;text-shadow:0 2px 3px #071629,0 0 18px #9d5a14,0 0 34px #efbe48}
.final-envelope .final-envelope-scene{perspective:900px;min-height:205px;display:grid;place-items:center;width:100%}
.final-envelope .final-envelope-button{width:min(56vw,246px);height:min(37vw,160px);min-height:130px;transform-style:preserve-3d;animation:victory-envelope-spin 10s linear infinite;filter:drop-shadow(0 12px 15px #07162999)}
.final-envelope .final-envelope-button:hover{animation-play-state:paused;transform:none}
.final-envelope .envelope-back{position:absolute;inset:0;border-radius:12px;background:linear-gradient(135deg,#fff2ad,#d39a27);transform:translateZ(-3px)}
.final-envelope .envelope-front{background:linear-gradient(155deg,#f9db78 5%,#d2a132 85%);clip-path:polygon(0 0,50% 57%,100% 0,100% 100%,0 100%);transform:translateZ(3px);backface-visibility:visible}
.final-envelope .envelope-flap{background:linear-gradient(#fff1af,#e9bd53);clip-path:polygon(0 0,100% 0,50% 60%);transform-origin:top center;transform:translateZ(5px);backface-visibility:visible}
.final-envelope .envelope-seal{position:absolute;left:50%;top:51%;z-index:3;display:grid;place-items:center;width:32px;height:32px;border:2px solid #fff3ae;border-radius:50%;background:#b17b1c;color:#fff3ae;font-size:17px;transform:translate(-50%,-50%) translateZ(8px);box-shadow:0 2px 6px #70451377}
.final-envelope .victory-prompt{margin:3px 0 0;color:#fff;font-size:20px;font-weight:800;text-shadow:0 2px 4px #081629,0 0 12px #081629}
.final-envelope .victory-reveal{width:100%;max-width:680px;animation:victory-reveal .5s ease-out both}
.final-envelope .victory-title{margin:2px 0 8px;color:#ffe690;font-size:clamp(27px,5vw,43px);font-weight:900;letter-spacing:.02em;text-shadow:0 3px 4px #071629,0 0 20px #ad6515}
.final-envelope .victory-result{margin:0 auto 8px;font-size:clamp(17px,2.8vw,23px);font-weight:750;line-height:1.35;text-shadow:0 2px 4px #071629,0 0 15px #071629}
.final-envelope .final-envelope-message{margin:0 auto 20px;max-width:650px;font-size:clamp(19px,3vw,27px);line-height:1.35;font-weight:800;text-shadow:0 2px 4px #071629,0 0 18px #071629;animation:none}
.final-envelope.open .final-envelope-button{animation:none;transform:rotateY(0) scale(.78);transition:transform .6s ease-out}
.final-envelope.open .envelope-flap{transform:translateZ(5px) rotateX(180deg)}
.final-envelope.open .envelope-seal{opacity:0;transition:opacity .2s ease}
.final-envelope.open .final-envelope-scene{min-height:150px}
.final-envelope .final-fireworks{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:1}
.final-envelope .final-fireworks i{top:27%;left:15%;width:6px;height:6px;box-shadow:0 -38px #ffe785,27px -27px #f6ad55,38px 0 #fff,27px 27px #ec8ed8,0 38px #77ddff,-27px 27px #ffe785,-38px 0 #fff,-27px -27px #87deba;animation:firework 2.5s ease-in-out infinite}
.final-envelope .final-fireworks i:nth-child(2){left:80%;top:28%}.final-envelope .final-fireworks i:nth-child(3){left:25%;top:60%}.final-envelope .final-fireworks i:nth-child(4){left:75%;top:70%}.final-envelope .final-fireworks i:nth-child(5){left:48%;top:12%}.final-envelope .final-fireworks i:nth-child(6){left:8%;top:78%}.final-envelope .final-fireworks i:nth-child(7){left:92%;top:50%;animation-delay:2s}
@keyframes victory-envelope-spin{0%{transform:rotateY(0)}100%{transform:rotateY(360deg)}}
@keyframes victory-reveal{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@media(max-height:650px){.final-envelope .victory-content{padding:24px 8px;min-height:0}.final-envelope .final-envelope-scene{min-height:160px}.final-envelope.open .final-envelope-scene{min-height:120px}.final-envelope .victory-eyebrow{margin-bottom:5px}.final-envelope .final-envelope-message{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){.final-envelope .final-envelope-button,.final-envelope .victory-reveal,.final-envelope .final-fireworks i{animation:none}.final-envelope .envelope-flap,.final-envelope.open .final-envelope-button{transition:none}}

/* ---------- 2. NLC final round: large, transparent celebration, clear dismissal (styles.css:162-186) ---------- */
/* Large, transparent celebration with a clearly visible dismissal control. */
.final-envelope .victory-content{width:min(94vw,1120px);min-height:0;padding:35px 16px;filter:drop-shadow(0 2px 3px #08192e)}
.final-envelope .final-envelope-button{width:min(70vw,492px);height:min(45vw,320px);min-height:0}
.final-envelope .final-envelope-scene{min-height:360px}
.final-envelope.open .final-envelope-scene{min-height:210px}
.final-envelope.open .final-envelope-button{transform:scale(.65)}
.final-envelope .final-envelope-message{max-width:1060px;font-size:clamp(28px,3.7vw,54px);line-height:1.18;margin:12px auto 24px;text-wrap:balance}
.final-envelope .victory-title{font-size:clamp(28px,4vw,54px)}
.final-envelope .victory-eyebrow{font-size:clamp(30px,4.3vw,62px)}
.final-envelope .envelope-seal{width:58px;height:58px;font-size:30px}
.final-envelope .final-close{top:18px;right:22px;width:64px;height:64px;display:grid;place-items:center;background:#fff;color:#10263f;border:3px solid #d4ab32;font-size:48px;font-weight:800;box-shadow:0 4px 24px #0007;cursor:pointer}
.final-envelope .final-close:hover,.final-envelope .final-close:focus-visible{background:#ffe48a;color:#10263f;outline:3px solid #10263f;outline-offset:3px}
.final-envelope .victory-content{pointer-events:auto}
@media(max-height:820px){.final-envelope .final-envelope-scene{min-height:260px}.final-envelope.open .final-envelope-scene{min-height:130px}.final-envelope.open .final-envelope-button{transform:scale(.43)}.final-envelope .final-envelope-message{font-size:clamp(27px,3.4vw,46px);margin:8px auto 14px}.final-envelope .victory-content{padding:60px 12px 20px}}
@media(max-width:600px){.final-envelope .final-close{width:52px;height:52px;font-size:38px;top:12px;right:12px}.final-envelope .victory-content{padding-top:76px}.final-envelope .final-envelope-scene{min-height:230px}.final-envelope.open .final-envelope-scene{min-height:110px}.final-envelope.open .final-envelope-button{transform:scale(.65)}.final-envelope .final-envelope-message{font-size:28px}.final-envelope .victory-eyebrow{letter-spacing:.05em}}

.final-envelope .victory-content{filter:none}
.final-envelope .victory-eyebrow,.final-envelope .victory-title,.final-envelope .victory-result,.final-envelope .final-envelope-message,.final-envelope .victory-rank,.final-envelope .victory-prompt{paint-order:stroke fill;-webkit-text-stroke:1px #10263f;text-shadow:0 2px 3px #10263f77}
.final-envelope .victory-result,.final-envelope .victory-rank,.final-envelope .victory-prompt{-webkit-text-stroke:0;color:#10263f;text-shadow:0 1px 1px #fff,0 -1px 1px #fff,1px 0 1px #fff,-1px 0 1px #fff}

.final-envelope .victory-reveal{max-width:1060px}
.final-envelope.open .final-envelope-scene{padding-top:clamp(48px,10vw,100px)}
.final-envelope .final-envelope-message{color:#10263f;-webkit-text-stroke:1.5px #fff;text-shadow:0 2px 5px #ffffffcc}
.final-envelope .victory-reveal[hidden], .final-envelope .victory-prompt[hidden], .final-envelope .victory-eyebrow[hidden] { display: none; }

.final-envelope, .final-envelope .victory-content { font-family: Inter, system-ui, sans-serif; }

/* ---------- 3. fallback flash (no <dialog> support), recoloured navy/gold (admin §5c, NLC eyebrow treatment) ---------- */
.victory { z-index: 13000; background: rgba(2,10,20,.72); }
.victory b { font: 900 clamp(40px, 8vw, 84px) Montserrat, Inter, sans-serif; letter-spacing: .16em; color: #ffe690; text-shadow: 0 2px 3px #071629, 0 0 18px #9d5a14, 0 0 34px #efbe48; }
.victory span { display: block; margin-top: 10px; color: #fff; font: 600 18px Montserrat, Inter, sans-serif; text-shadow: 0 2px 4px #071629; }
/* closer alignment pass: NLC #victoryTitle is set in Montserrat */
.final-envelope .victory-title { font-family: Montserrat, Inter, sans-serif; }
