/* v2.1 lab — THE DIVINE COLLECTION (ten cosmetic WORLD SHOCK variants). Append-only: every rule is scoped to html.dv-on / html.dv-<id> (set only while a collection run plays),
   to the room / GL canvases, to the result card of such a run, or to the private preview gallery (#dvGallery). Nothing here changes layout of the normal pages. */
.dv-room,.dv-gl{position:absolute;inset:0;width:100%;height:100%;display:none;pointer-events:none;will-change:transform,opacity}
.dv-room{opacity:0}
/* the globe canvas is opaque black outside the planet (WebGL, alpha off): screen-blending the whole globe layer lets the room show around the Earth; the room punches a black disc where the planet is */
html.dv-on #globeWrap{mix-blend-mode:screen}
.dv-gl{z-index:0}
.dv-gl.on{display:block}

/* ---- per-variant accent colours (names, rings, the "red" fifth-strike chip that the original paints crimson) */
html.dv-seraph{--dv-acc:#ffe9b0;--dv-acc2:#cfe3ff;--dv-glow:rgba(255,236,190,.7)}
html.dv-verdict{--dv-acc:#ffc247;--dv-acc2:#e08a1e;--dv-glow:rgba(255,176,50,.7)}
html.dv-eclipse{--dv-acc:#ff9a52;--dv-acc2:#d4552a;--dv-glow:rgba(255,120,50,.65)}
html.dv-hand{--dv-acc:#fff0cf;--dv-acc2:#ffd68a;--dv-glow:rgba(255,232,180,.7)}
html.dv-wrath{--dv-acc:#f6cf5b;--dv-acc2:#e5334a;--dv-glow:rgba(255,190,70,.7)}
html.dv-trumpet{--dv-acc:#ffd46a;--dv-acc2:#fff2c8;--dv-glow:rgba(255,205,100,.7)}
html.dv-ring{--dv-acc:#e9c46a;--dv-acc2:#9fb0ff;--dv-glow:rgba(240,205,120,.65)}
html.dv-halo{--dv-acc:#f4efe2;--dv-acc2:#ffd98a;--dv-glow:rgba(250,244,226,.7)}
html.dv-fracture{--dv-acc:#c9b8ff;--dv-acc2:#ffd27a;--dv-glow:rgba(170,150,255,.65)}
html.dv-judgment{--dv-acc:#ff5a3c;--dv-acc2:#ffc247;--dv-glow:rgba(255,80,50,.7)}
html.dv-on .av-red{--av-ring:var(--dv-acc);--av-glow:var(--dv-glow)}
html.dv-on .bk.red .bk-name{text-shadow:0 0 22px var(--dv-glow),0 4px 0 rgba(0,0,0,.55)}
html.dv-on .bk.red .bk-hit{color:var(--dv-acc);text-shadow:0 0 16px var(--dv-glow)}
html.dv-on .kf.red,html.dv-on.lab-ux .kf.red{border-color:var(--dv-glow);border-left-color:var(--dv-acc);box-shadow:0 10px 26px rgba(0,0,0,.65),0 0 22px var(--dv-glow)}
html.dv-on.lab-ux .kf.red .kf-name,html.dv-on.lab-ux .killfeed .kf.red .kf-name{text-shadow:0 0 14px var(--dv-glow)}
/* names and amounts stay legible over the lit room: a soft dark plate behind the recipient line */
html.dv-on .big-kill{text-shadow:0 2px 14px rgba(0,0,0,.85),0 0 3px rgba(0,0,0,.9)}

/* ---- result card: themed border + a few slow decorative motes (the card's text, names and amounts are untouched) */
.finale-inner.dv-card{position:relative}
.dv-motes{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}
.dv-motes i{position:absolute;bottom:-8px;width:var(--s,3px);height:var(--s,3px);border-radius:50%;background:var(--dv-acc,#ffe9a8);box-shadow:0 0 7px var(--dv-glow,rgba(255,230,160,.7));opacity:0;animation:dvRise linear infinite}
@keyframes dvRise{0%{transform:translate3d(0,0,0);opacity:0}12%{opacity:.85}70%{opacity:.55}100%{transform:translate3d(8px,-520px,0);opacity:0}}
.reduced .dv-motes{display:none}
@media (prefers-reduced-motion:reduce){.dv-motes{display:none}}
.finale-inner.dv-card>*:not(.dv-motes){position:relative}
.finale-inner.dv-card-seraph{border:1px solid rgba(255,246,222,.8);background:radial-gradient(120% 100% at 50% 0%,rgba(92,74,44,.78),rgba(10,7,3,.86));box-shadow:0 0 80px rgba(255,238,198,.42),inset 0 0 46px rgba(255,248,232,.12)}
.finale-inner.dv-card-verdict{border:2px solid #c99a2e;background:radial-gradient(120% 100% at 50% 0%,rgba(70,40,4,.88),rgba(8,4,0,.92));box-shadow:inset 0 0 0 4px rgba(14,7,0,.9),inset 0 0 0 5px rgba(240,190,70,.75),inset 0 0 30px rgba(255,170,40,.18),0 0 54px rgba(255,170,40,.42)}
.finale-inner.dv-card-eclipse{border:1px solid rgba(214,128,60,.85);background:radial-gradient(120% 100% at 50% 0%,rgba(54,18,12,.9),rgba(6,2,2,.94));box-shadow:0 0 60px rgba(224,120,50,.4),inset 0 0 36px rgba(160,60,20,.22),inset 0 0 0 1px rgba(255,190,110,.25)}
.finale-inner.dv-card-hand{border:1px solid rgba(255,242,212,.85);background:radial-gradient(120% 100% at 50% 0%,rgba(96,78,46,.78),rgba(10,7,3,.86));box-shadow:0 0 90px rgba(255,236,186,.46),inset 0 0 50px rgba(255,248,226,.14)}
.finale-inner.dv-card-wrath{border:2px solid #f0c24a;background:radial-gradient(120% 100% at 50% 0%,rgba(74,22,16,.86),rgba(9,3,2,.94));box-shadow:inset 0 0 0 4px rgba(12,4,2,.9),inset 0 0 0 5px rgba(229,51,74,.55),inset 0 0 28px rgba(240,194,74,.16),0 0 58px rgba(255,190,70,.4)}
.finale-inner.dv-card-wrath::before,.finale-inner.dv-card-wrath::after{content:"";position:absolute;top:8px;width:26px;height:26px;border:2px solid #f0c24a;pointer-events:none;opacity:.85}
.finale-inner.dv-card-wrath::before{left:8px;border-right:0;border-bottom:0;border-top-left-radius:12px}
.finale-inner.dv-card-wrath::after{right:8px;border-left:0;border-bottom:0;border-top-right-radius:12px}
.finale-inner.dv-card-trumpet{border:1px solid rgba(255,206,100,.85);background:radial-gradient(120% 100% at 50% 0%,rgba(84,52,10,.84),rgba(10,6,1,.9));box-shadow:0 0 70px rgba(255,200,90,.42),inset 0 0 40px rgba(255,236,170,.1)}
.finale-inner.dv-card-ring{border:1px solid rgba(233,196,106,.8);background:radial-gradient(120% 100% at 50% 0%,rgba(34,34,74,.82),rgba(5,5,14,.92));box-shadow:0 0 0 7px rgba(8,8,22,.7),0 0 0 8px rgba(233,196,106,.45),0 0 60px rgba(233,196,106,.32),inset 0 0 32px rgba(120,140,255,.14)}
.finale-inner.dv-card-halo{border:1px solid rgba(244,238,224,.9);background:radial-gradient(120% 100% at 50% 0%,rgba(80,74,60,.8),rgba(8,7,5,.88));box-shadow:0 -10px 60px rgba(255,250,236,.5),0 0 70px rgba(255,220,150,.3),inset 0 14px 40px rgba(255,252,240,.14)}
.finale-inner.dv-card-fracture{border:1px solid rgba(190,170,255,.5);background:radial-gradient(120% 100% at 50% 0%,rgba(30,22,64,.88),rgba(4,3,12,.94));box-shadow:0 0 56px rgba(150,130,255,.34),inset 0 0 0 1px rgba(255,210,122,.3),inset 0 0 34px rgba(100,90,220,.16)}
.finale-inner.dv-card-judgment{border:2px solid rgba(220,70,40,.9);background:radial-gradient(120% 100% at 50% 0%,rgba(66,10,6,.9),rgba(6,1,1,.95));box-shadow:inset 0 0 0 3px rgba(8,1,1,.92),inset 0 0 0 4px rgba(255,194,71,.6),0 0 64px rgba(255,70,40,.4)}
.ws-title.dv-title-seraph{background:linear-gradient(180deg,#fffaf0 0%,#ffe9b0 48%,#cfe3ff 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,236,190,.65))}
.ws-title.dv-title-verdict{background:linear-gradient(180deg,#fff0b8 0%,#ffc247 45%,#a8620c 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 20px rgba(255,170,40,.65))}
.ws-title.dv-title-eclipse{background:linear-gradient(180deg,#ffe2b0 0%,#ff9a52 45%,#8a2c14 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,110,40,.55))}
.ws-title.dv-title-hand{background:linear-gradient(180deg,#ffffff 0%,#fff0cf 45%,#ffd68a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(255,236,186,.7))}
.ws-title.dv-title-wrath{background:linear-gradient(180deg,#fff0b0 0%,#f6cf5b 40%,#e5334a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,170,60,.6))}
.ws-title.dv-title-trumpet{background:linear-gradient(180deg,#fffbe6 0%,#ffd46a 50%,#c27a14 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,205,100,.6))}
.ws-title.dv-title-ring{background:linear-gradient(180deg,#fff6d6 0%,#e9c46a 50%,#7f8cff 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 20px rgba(233,196,106,.55))}
.ws-title.dv-title-halo{background:linear-gradient(180deg,#ffffff 0%,#f4efe2 50%,#ffd98a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(255,250,236,.7))}
.ws-title.dv-title-fracture{background:linear-gradient(180deg,#f2eaff 0%,#c9b8ff 45%,#ffd27a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(160,140,255,.6))}
.ws-title.dv-title-judgment{background:linear-gradient(180deg,#fff0cf 0%,#ffc247 36%,#ff5a3c 74%,#9a1c10 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,70,40,.62))}

/* ---- private preview gallery (development only: only mounted when the build flag or ?gallery=1 is present) */
#dvGallery{position:fixed;z-index:200;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));font:600 13px/1.3 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:#f6e7bd}
#dvGallery .dvg-fab{min-height:44px;min-width:44px;padding:8px 14px;border-radius:999px;border:1px solid #c99a2e;background:rgba(18,10,2,.92);color:#ffd76a;font:inherit;font-weight:800;letter-spacing:.12em;cursor:pointer;box-shadow:0 6px 24px rgba(0,0,0,.55)}
#dvGallery .dvg-panel{position:absolute;right:0;bottom:56px;width:min(420px,calc(100vw - 20px));max-height:min(78vh,720px);overflow:auto;padding:12px;border-radius:16px;border:1px solid rgba(255,206,100,.55);background:rgba(14,8,1,.96);box-shadow:0 14px 50px rgba(0,0,0,.7)}
#dvGallery .dvg-panel[hidden]{display:none}
#dvGallery h2{margin:0 0 4px;font-size:.8rem;letter-spacing:.18em;color:#ffd76a}
#dvGallery .dvg-note{margin:0 0 8px;font-size:.72rem;color:#d8c58f}
#dvGallery .dvg-opts{display:grid;gap:6px;margin:0 0 10px;padding:0;list-style:none}
#dvGallery .dvg-opt{display:flex;gap:10px;align-items:center;width:100%;min-height:48px;text-align:left;padding:8px 10px;border-radius:12px;border:1px solid rgba(255,206,100,.28);background:rgba(255,200,90,.06);color:inherit;font:inherit;cursor:pointer}
#dvGallery .dvg-opt[aria-checked="true"]{border-color:#ffd76a;background:rgba(255,200,90,.18);box-shadow:0 0 0 2px rgba(255,215,106,.3)}
#dvGallery .dvg-opt b{display:block;font-size:.8rem;letter-spacing:.08em}
#dvGallery .dvg-opt small{display:block;font-weight:500;color:#cdb98a;font-size:.68rem}
#dvGallery .dvg-n{flex:0 0 26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#2a1a04;border:1px solid #c99a2e;color:#ffd76a;font-size:.72rem}
#dvGallery .dvg-row{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
#dvGallery .dvg-btn{min-height:44px;padding:8px 12px;border-radius:12px;border:1px solid rgba(255,206,100,.5);background:rgba(255,200,90,.1);color:#ffe9b0;font:inherit;font-weight:700;cursor:pointer}
#dvGallery .dvg-btn.go{background:linear-gradient(180deg,#ffd76a,#d79a1c);color:#2a1700;border-color:#ffd76a}
#dvGallery .dvg-btn[aria-pressed="true"]{background:rgba(255,200,90,.32);border-color:#ffd76a}
#dvGallery button:focus-visible{outline:3px solid #fff;outline-offset:2px}
#dvGallery .dvg-status{margin:6px 0 0;font-size:.7rem;color:#cdb98a;min-height:1.2em}
