
/* GOD MODE v1.4 — World Shock + platform demo. Day: golden throne room. Night: storm stage. Graphics frozen from v1.3. */
:root{--ink:#2a1c06;--ink2:#5b4519;--gold:#d9a521;--gold2:#f6d77a;--goldDeep:#8a5a06;--ivory:#fffaf0;--blue:#2f6bff;--electric:#7cc3ff;--red:#ff2a2a;--tdur:2.6s;
  font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);-webkit-text-size-adjust:100%}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#f6ead0}
body{overflow-x:hidden}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--blue);outline-offset:3px}

/* ---------- the throne room ---------- */
.scene{position:fixed;inset:0;z-index:0;overflow:hidden;background:#1c1204;--px:0;--py:0;contain:strict}
.L{position:absolute;inset:0;transition:opacity var(--tdur) ease,transform var(--tdur) ease,filter var(--tdur) ease}
.L canvas{display:block}
/* v1.3: Kyle's painting is the room. Positioned by throne.js (cover on tall screens, fit-height + extended sides on wide). */
.L-ext canvas{width:100%;height:100%;transform:scale(1.06)}
.L-room{inset:auto;transform:translate3d(calc(var(--px)*-8px),calc(var(--py)*-6px),0) scale(1.03);will-change:transform}
.room-img,.room-glow,.room-rays{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none;-webkit-user-drag:none}
.room-fx{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;user-select:none;mix-blend-mode:screen;opacity:0;transition:opacity .9s ease}
.room-fx.on{opacity:1}
.scene.tier-low .room-fx{display:none}
.scene.ext .room-fx{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.room-glow{mix-blend-mode:screen;opacity:.45;animation:sunBreathe 9s ease-in-out infinite alternate}
.room-rays{mix-blend-mode:screen;opacity:.8;animation:rayBreathe 11s ease-in-out infinite alternate}
.scene.ext .L-room::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:0 0 60px 30px rgba(28,18,4,.55)}
.scene.ext .room-img{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.L-dust canvas{display:block;width:100%;height:100%}
.L-cssdust{display:none;pointer-events:none}
.L-cssdust i{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(255,244,200,1) 0,rgba(255,206,110,.55) 40%,rgba(255,190,90,0) 70%);animation:moteDrift linear infinite,moteTwinkle ease-in-out infinite alternate;will-change:transform,opacity}
.scene:not(.gl) .L-cssdust,.scene.tier-low .L-cssdust{display:block}
.scene.tier-low .L-dust{display:none}
@keyframes sunBreathe{from{opacity:.32}to{opacity:.52}}
@keyframes rayBreathe{from{opacity:.5;transform:translate3d(0,0,0)}to{opacity:.9;transform:translate3d(-1.2%,0,0)}}
@keyframes moteDrift{from{transform:translate3d(0,0,0)}50%{transform:translate3d(18px,-60px,0)}to{transform:translate3d(-6px,-120px,0)}}
@keyframes moteTwinkle{from{filter:brightness(.6)}to{filter:brightness(1.3)}}
/* storm: the painting itself darkens and cools, storm clouds roll in over it */
.L-storm{background:radial-gradient(120% 80% at 50% 30%,rgba(10,18,48,.86),rgba(2,4,12,.96));opacity:0}
.L-night{opacity:0}
.L-cloudsFarN,.L-cloudsNearN{transform:translate3d(0,-6%,0) scale(1.25)}
.L-cloudsFarN canvas,.L-cloudsNearN canvas{width:200%!important;height:100%;animation:drift 40s linear infinite}
.L-cloudsNearN canvas{animation-duration:24s}
.scene.night .L-night,.scene.night .L-storm{opacity:1}
.scene.night .L-cloudsFarN,.scene.night .L-cloudsNearN{transform:none}
.scene.night .L-room,.scene.night .L-ext{filter:saturate(.35) brightness(.55)}
.scene.night .room-glow,.scene.night .room-rays,.scene.night .L-dust,.scene.night .L-cssdust,.scene.night .room-fx{opacity:0;transition:opacity var(--tdur) ease}
.scene.paused canvas,.scene.paused .room-glow,.scene.paused .room-rays,.scene.paused .L-cssdust i{animation-play-state:paused!important}
.reduced .L canvas,.reduced .room-glow,.reduced .room-rays{animation:none!important}
.reduced .L-cssdust,.reduced .L-dust{display:none!important}
.reduced .L{transform:none!important}
@keyframes drift{to{transform:translate3d(-50%,0,0)}}
@keyframes breathe{from{opacity:.75}to{opacity:1}}

/* ---------- banner + shell ---------- */
.demo-banner{position:sticky;top:0;z-index:20;display:flex;gap:.5rem;align-items:center;justify-content:center;padding:.45rem .8rem;font-size:.78rem;letter-spacing:.04em;
  background:linear-gradient(90deg,#fff3c9,#ffe39a,#fff3c9);color:#4a3205;border-bottom:1px solid rgba(138,90,6,.35)}
.demo-banner .lamp{width:8px;height:8px;border-radius:50%;background:#ff8a00;box-shadow:0 0 8px #ff8a00}
.demo-banner .short{display:none}
.shell{position:relative;z-index:2;max-width:980px;margin:0 auto;padding:0 18px 60px;transition:opacity .9s ease}
body:not([data-phase="day"]) .shell,body:not([data-phase="day"]) .demo-banner{opacity:0;pointer-events:none}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 0}
.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink)}
.brandmark{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;font-size:26px;color:#fff;background:linear-gradient(145deg,#ffe28a,#c98a10);box-shadow:0 6px 18px rgba(160,100,10,.35),inset 0 1px 0 #fff6}
.brandtext strong{display:block;font-size:1.15rem;letter-spacing:.12em}.brandtext em{font-style:normal;color:var(--goldDeep)}
.brandtext small{font-size:.68rem;letter-spacing:.2em;color:var(--ink2)}
.controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.chip{border:1px solid rgba(138,90,6,.4);background:rgba(255,250,236,.85);border-radius:999px;padding:.45rem .8rem;font-size:.75rem;letter-spacing:.06em;font-weight:600}
.chip[aria-pressed="true"]{background:#fff0bf;border-color:var(--gold)}
.chip.small{padding:.25rem .6rem;font-size:.68rem;margin-left:auto}
.hero{text-align:center;padding:5vh 0 3vh}
.kicker{display:inline-flex;gap:8px;align-items:center;font-size:.72rem;letter-spacing:.2em;font-weight:700;color:var(--goldDeep);background:rgba(255,250,236,.8);padding:.4rem .8rem;border-radius:999px;border:1px solid rgba(217,165,33,.45)}
.pulse{width:8px;height:8px;border-radius:50%;background:var(--gold);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{50%{box-shadow:0 0 0 6px rgba(217,165,33,0)}0%{box-shadow:0 0 0 0 rgba(217,165,33,.6)}}
h1{font-size:clamp(2.1rem,6.4vw,4.6rem);line-height:.98;margin:.4em 0 .25em;letter-spacing:-.01em;font-weight:900;color:#3a2604;text-shadow:0 2px 0 rgba(255,255,255,.7),0 10px 40px rgba(255,220,140,.8)}
h1 .gold{background:linear-gradient(180deg,#ffe48a,#c98a10 70%,#8a5a06);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}
h1 .shock{background:linear-gradient(90deg,#1d4fd8,#3f8cff,#1d4fd8);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}
.lede{max-width:600px;margin:0 auto;font-size:1.05rem;line-height:1.5;color:var(--ink2);background:rgba(255,250,236,.72);padding:.6rem .9rem;border-radius:12px}
.panel{background:linear-gradient(180deg,rgba(255,252,243,.93),rgba(255,245,222,.9));border:1px solid rgba(217,165,33,.45);border-radius:20px;padding:18px;margin:16px 0;
  box-shadow:0 18px 40px rgba(120,80,10,.16),inset 0 1px 0 #fff}
.section-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.section-head h2{margin:0;font-size:1.05rem;letter-spacing:.04em}.section-head h2 small{font-weight:500;color:var(--ink2);font-size:.75rem;margin-left:6px;letter-spacing:.08em}
.step{display:grid;place-items:center;min-width:32px;height:32px;border-radius:10px;font-weight:800;font-size:.8rem;color:#fff;background:linear-gradient(145deg,#f1c64a,#b07a0c)}
.tiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.tier{position:relative;display:flex;flex-direction:column;gap:4px;text-align:left;padding:16px;border-radius:16px;border:1.5px solid rgba(138,90,6,.25);background:#fffdf6;transition:transform .15s,box-shadow .15s,border-color .15s}
.tier:hover{transform:translateY(-2px)}
.tier.active{border-color:var(--gold);background:linear-gradient(180deg,#fff7da,#ffeab0);box-shadow:0 10px 26px rgba(217,165,33,.35),0 0 0 3px rgba(217,165,33,.25)}
.tier-amt{font-size:1.7rem;font-weight:900;color:#3a2604}.tier-per{font-size:.62rem;letter-spacing:.2em;color:var(--ink2)}
.tier-net{font-size:.85rem}.tier-net b{color:#1d4fd8}.tier-total{font-size:.78rem;color:var(--ink2)}
.tier-badge{position:absolute;top:10px;right:10px;font-size:.58rem;font-weight:800;letter-spacing:.12em;padding:.2rem .45rem;border-radius:6px;background:#1d4fd8;color:#fff}
.ledger{margin:0;display:grid;gap:2px}
.ledger .row{display:flex;justify-content:space-between;gap:12px;padding:.55rem .2rem;border-bottom:1px dashed rgba(138,90,6,.25)}
.ledger dt{color:var(--ink2)}.ledger dd{margin:0;font-weight:700;font-variant-numeric:tabular-nums}
.ledger .big dd{font-size:1.2rem}.ledger .gold dd{color:#1d4fd8;font-size:1.15rem}
.sim{display:inline-block;font-size:.6rem;font-weight:800;letter-spacing:.1em;padding:.12rem .4rem;border-radius:5px;background:#ffe9b0;color:#7a4c00;border:1px solid rgba(138,90,6,.35);vertical-align:middle}
.fine{font-size:.78rem;color:var(--ink2);line-height:1.45}
.modes{display:flex;gap:10px;flex-wrap:wrap}
.mode{flex:1;min-width:140px;padding:12px;border-radius:14px;border:1.5px solid rgba(138,90,6,.25);background:#fffdf6;font-weight:800;letter-spacing:.06em}
.mode small{display:block;font-weight:500;color:var(--ink2);font-size:.7rem}
.mode.active{border-color:var(--gold);background:#fff1c4}
.unleash{text-align:center;margin:26px 0}
.unleash-btn{position:relative;overflow:hidden;width:100%;max-width:640px;padding:22px 18px;border-radius:22px;border:2px solid #8a5a06;color:#fff;
  background:radial-gradient(120% 140% at 50% 0%,#3b6dff 0%,#1a2f8f 55%,#0b1440 100%);box-shadow:0 18px 50px rgba(29,79,216,.45),0 0 0 6px rgba(246,215,122,.55),inset 0 1px 0 #fff4;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.unleash-btn .label{position:relative;display:block;font-size:clamp(1rem,3.4vw,1.35rem);font-weight:900;letter-spacing:.08em;text-shadow:0 0 14px #9cd0ff}
.unleash-btn small{position:relative;display:block;margin-top:6px;font-size:.72rem;letter-spacing:.06em;color:#ffe7a3}
.unleash-btn .fill{position:absolute;inset:0;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,#f6d77a,#ffd24a);opacity:.55}
.unleash-btn.holding .fill{transform:scaleX(1);transition:transform .85s linear}
.hint{font-size:.78rem;color:var(--ink2);background:rgba(255,250,236,.75);display:inline-block;padding:.3rem .7rem;border-radius:8px}
.log-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.log-list li{padding:10px;border-radius:12px;background:#fffdf6;border:1px solid rgba(138,90,6,.18)}
.log-list li small{display:block;color:var(--ink2);font-size:.7rem}
.log-list .names{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;font-size:.78rem}
.log-list .names em{font-style:normal;color:#1d4fd8;font-weight:700}
.log-list .empty{color:var(--ink2);font-size:.85rem}
.foot{margin-top:30px;font-size:.78rem;color:var(--ink2);background:rgba(255,250,236,.85);padding:12px 14px;border-radius:14px;line-height:1.5}
.foot .credit{font-size:.7rem;opacity:.85}
.last-storm .ls-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.last-storm .ls-card{padding:10px;border-radius:12px;background:#fffdf6;border:1px solid rgba(217,165,33,.5);min-width:0}
.last-storm .ls-card b{display:block;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.last-storm .ls-card span{color:#1d4fd8;font-weight:800}
.last-storm .ls-card small{display:block;font-size:.58rem;letter-spacing:.06em;color:#7a4c00}
.last-storm .ls-head{font-weight:900;letter-spacing:.08em;margin:0 0 10px;color:#7a1010}
.last-storm .totals{margin-top:10px}

/* ---------- storm stage ---------- */
.stage{position:fixed;inset:0;z-index:50;color:#fff;overflow:hidden;font-family:inherit}
.stage[hidden]{display:none}
.backdrop{position:absolute;inset:0;opacity:0;background:radial-gradient(80% 70% at 50% 48%,#0b1530 0%,#03050c 60%,#000 100%)}
.globe-wrap{position:absolute;inset:0;will-change:transform}
.globe-wrap canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
#globeCanvas{opacity:0;will-change:opacity,transform}
.flash{position:absolute;inset:0;opacity:0;pointer-events:none;background:rgb(var(--fc,255,255,255))}
.hud{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:max(12px,env(safe-area-inset-top)) 16px 12px;background:linear-gradient(180deg,rgba(0,0,0,.55),transparent)}
.hud-left{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.hud-title{font-weight:900;letter-spacing:.16em;color:#ffd76a;font-size:.85rem}
.hud-count{font-weight:800;font-variant-numeric:tabular-nums;color:#bfe1ff}
.hud-phase{font-size:.68rem;letter-spacing:.2em;color:#9fb2d8;text-transform:uppercase}
.skip{border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.45);color:#fff;border-radius:999px;padding:.5rem .9rem;font-weight:700;letter-spacing:.08em;font-size:.75rem}
.big-kill{position:absolute;left:50%;top:76%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;width:min(92vw,900px)}
.bk{opacity:0;animation:bkIn calc(var(--bkd,1100ms)) cubic-bezier(.2,.9,.2,1) forwards}
.bk-name{font-size:clamp(26px,5.4vw,66px);font-weight:900;font-style:italic;letter-spacing:.01em;text-shadow:0 0 18px rgba(120,190,255,.95),0 4px 0 rgba(0,0,0,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bk-hit{font-size:clamp(16px,2.8vw,32px);font-weight:900;letter-spacing:.14em;color:#ffd84a;text-shadow:0 0 14px rgba(255,170,0,.8)}
.bk-pay{margin-top:4px;font-size:clamp(15px,2.4vw,26px);font-weight:800;color:#c8f0ff}
.bk-pay b{color:#fff;font-size:1.25em}
.bk.red .bk-name{text-shadow:0 0 22px rgba(255,40,40,1),0 4px 0 rgba(0,0,0,.5)}
.bk.red .bk-hit{color:#ff4a3a;text-shadow:0 0 16px rgba(255,30,30,.9)}
@keyframes bkIn{0%{opacity:0;transform:scale(2.1);filter:blur(6px)}12%{opacity:1;transform:scale(.96);filter:none}18%{transform:scale(1.02)}24%{transform:scale(1)}78%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translateY(-30px) scale(.82)}}
.reduced .bk{animation-name:bkInR}
@keyframes bkInR{0%{opacity:0}12%{opacity:1}80%{opacity:1}100%{opacity:0}}
.killfeed{position:absolute;right:14px;top:62px;list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;width:min(330px,46vw)}
.kf{display:grid;grid-template-columns:auto 1fr auto;gap:2px 8px;align-items:center;padding:7px 10px;border-radius:10px;background:rgba(6,12,30,.72);border:1px solid rgba(124,195,255,.35);border-left:3px solid var(--electric);font-size:.72rem;animation:kfIn .35s ease-out}
.kf.red{border-color:rgba(255,70,60,.5);border-left-color:var(--red)}
.kf-icon{color:#ffd76a;font-size:1rem}.kf-name{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kf-pay{font-weight:800;color:#bfe1ff;text-align:right}.kf-tag{grid-column:2/4;font-size:.56rem;letter-spacing:.08em;color:#ffcf6b}
@keyframes kfIn{from{opacity:0;transform:translateX(30px)}}
.floaters{position:absolute;inset:0;pointer-events:none}
.floater{position:absolute;transform:translate(-50%,-50%);font-weight:900;color:#fff;text-shadow:0 0 10px #4aa3ff;animation:float 1.6s ease-out forwards;white-space:nowrap}
.floater small{display:block;font-size:.6rem;letter-spacing:.14em;color:#ffd76a;text-align:center}
.floater.red{text-shadow:0 0 12px #ff2a2a}
@keyframes float{0%{opacity:0;transform:translate(-50%,-30%) scale(.7)}15%{opacity:1;transform:translate(-50%,-80%) scale(1.15)}100%{opacity:0;transform:translate(-50%,-260%) scale(1)}}
body[data-phase="darkness"] .killfeed,body[data-phase="darkness"] .hud{opacity:.25;transition:opacity .4s}
.finale{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:70px 14px 14px;pointer-events:none}
.finale[hidden]{display:none}
.finale-inner{pointer-events:auto;width:min(680px,100%);max-height:calc(100vh - 90px);overflow:auto;text-align:center;padding:18px 18px 16px;border-radius:22px;background:radial-gradient(120% 100% at 50% 0%,rgba(60,30,0,.6),rgba(8,4,0,.7));border:1px solid rgba(255,206,100,.55);box-shadow:0 0 60px rgba(255,170,40,.35);animation:finIn .9s cubic-bezier(.2,.9,.2,1) var(--findelay,1.1s) both}
.finale.leaving .finale-inner{transition:opacity .8s,transform .8s;opacity:0;transform:scale(.96)}
@keyframes finIn{from{opacity:0;transform:scale(1.25);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
.ws-title{margin:0;font-size:clamp(40px,9vw,96px);font-weight:900;letter-spacing:.06em;line-height:1;background:linear-gradient(180deg,#fff6cf 0%,#ffd24a 45%,#ff7a2a 80%,#ff2a2a 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 22px rgba(255,150,40,.7))}
.ws-sub{margin:.35em 0 0;font-weight:900;letter-spacing:.18em;font-size:clamp(13px,2.4vw,20px);color:#ffe7a3}
.ws-sub b{color:#fff}
.ws-helped{margin:.3em 0 .8em;font-weight:900;letter-spacing:.12em;font-size:clamp(15px,3vw,24px);color:#fff}
.ws-helped .sim,.stage .sim{background:rgba(255,215,106,.15);color:#ffd76a;border-color:rgba(255,215,106,.5)}
.finale-list{list-style:none;margin:0 0 10px;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.finale-list li{min-width:0;padding:8px 6px;border-radius:10px;background:rgba(255,200,90,.08);border:1px solid rgba(255,206,100,.3);font-size:.72rem}
.finale-list .n{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finale-list .a{display:block;color:#ffd76a;font-weight:900;font-size:.95rem}
.finale-list .kf-tag{display:block;font-size:.5rem;letter-spacing:.06em;color:#ffcf6b}
.totals{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:0}
.totals div{min-width:0;padding:8px;border-radius:10px;background:rgba(255,255,255,.06);border:1px solid rgba(255,206,100,.25)}
.totals dt{font-size:.6rem;letter-spacing:.1em;opacity:.85}.totals dd{margin:2px 0 0;font-weight:900;font-size:1.05rem;font-variant-numeric:tabular-nums}.totals small{font-size:.52rem;letter-spacing:.08em;color:#ffcf6b}
.last-storm .totals div{background:#fffdf6;border-color:rgba(217,165,33,.45)}.last-storm .totals small{color:#7a4c00}
.stage .fine{color:#e9d9b5;font-size:.7rem}
.gold-btn{border:0;border-radius:14px;padding:.75rem 1.2rem;font-weight:900;letter-spacing:.08em;color:#2a1c06;background:linear-gradient(180deg,#ffe48a,#d9a521);box-shadow:0 8px 24px rgba(217,165,33,.45)}
@media (max-width:700px){
  .demo-banner .long{display:none}.demo-banner .short{display:inline}
  .tiers{grid-template-columns:minmax(0,1fr)}
  .killfeed{left:10px;right:10px;width:auto;top:54px}
  .killfeed .kf:not(:nth-last-child(-n+2)){display:none}
  .big-kill{top:80%}
  .finale{padding-top:56px;align-items:flex-start}
  .finale-list{grid-template-columns:minmax(0,1fr)}
  .finale-list li{display:flex;justify-content:space-between;align-items:center;gap:6px;text-align:left}
  .totals{grid-template-columns:repeat(2,minmax(0,1fr))}
  .last-storm .ls-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .hud-phase{display:none}
}
@media (prefers-reduced-motion:reduce){.pulse{animation:none}}
body[data-phase="finale"] .killfeed,body[data-phase="dawn"] .killfeed{opacity:0;transition:opacity .6s}

/* v1.1 */
.chip.fx{border-color:rgba(255,206,100,.8);background:linear-gradient(180deg,rgba(255,214,120,.28),rgba(255,180,60,.12));font-weight:800}
.chip.fx[data-quality="medium"],.chip.fx[data-quality="low"]{border-color:rgba(160,160,160,.6);background:rgba(255,255,255,.08)}
.fx-toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:80;max-width:min(560px,92vw);padding:8px 14px;border-radius:12px;background:rgba(10,8,4,.86);color:#ffe3a3;border:1px solid rgba(255,206,100,.5);font-size:.78rem;text-align:center}
.fx-toast[hidden]{display:none}

/* ================= v1.4 platform UI (DOM only — scene/globe/lightning visuals unchanged) ================= */
.chip.acct{border-color:rgba(29,79,216,.45);background:rgba(255,255,255,.9);font-weight:800}
.viewnav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:-6px 0 6px}
.viewnav a{padding:.4rem .8rem;border-radius:999px;background:rgba(255,250,236,.88);border:1px solid rgba(138,90,6,.3);color:#3a2604;text-decoration:none;font-size:.78rem;font-weight:700;letter-spacing:.04em}
.viewnav a.on{background:linear-gradient(180deg,#fff2c4,#ffd970);border-color:var(--gold)}
.viewnav .nav-mode{margin-left:auto;font-size:.6rem;font-weight:800;letter-spacing:.12em;color:#7a4c00;background:rgba(255,233,176,.9);border:1px solid rgba(138,90,6,.3);padding:.2rem .5rem;border-radius:6px}
.tiers{grid-template-columns:repeat(2,minmax(0,1fr))}
.tier-name{font-size:.68rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:#8a5a06}
.tier-odds{margin-top:4px;font-size:.66rem;font-weight:800;letter-spacing:.06em;color:#1d4fd8}
.tier-odds.sure{color:#7a1010}
.tier-royal .tier-name{color:#6b3fa0}.tier-divine .tier-name{color:#1d4fd8}
/* Golden God Mode: the existing gold language, turned up — deep metal border, cream-to-gold body, embossed type. */
.tier-golden{border:2px solid #b8860b;background:linear-gradient(160deg,#fffbe9 0%,#ffeeb0 38%,#f7cf5c 72%,#e8b530 100%);box-shadow:inset 0 1px 0 #fff,inset 0 -2px 6px rgba(138,90,6,.25),0 6px 18px rgba(184,134,11,.25)}
.tier-golden .tier-name{color:#5a3a00;text-shadow:0 1px 0 rgba(255,255,255,.7)}
.tier-golden .tier-amt{background:linear-gradient(180deg,#7a4c00,#3a2604);-webkit-background-clip:text;background-clip:text;color:transparent}
.tier-golden .tier-net b{color:#5a3a00}
.tier-golden .tier-odds{display:inline-block;align-self:flex-start;padding:.18rem .45rem;border-radius:6px;background:#3a2604;color:#ffe08a;border:1px solid #ffd24a}
.tier-golden.active{border-color:#8a5a06;box-shadow:0 12px 30px rgba(184,134,11,.45),0 0 0 3px rgba(255,210,74,.55),inset 0 1px 0 #fff}
.unleash-btn.golden{border-color:#5a3a00;background:linear-gradient(180deg,#3a2604,#1c1204);box-shadow:0 10px 30px rgba(184,134,11,.45),inset 0 0 0 2px rgba(255,210,74,.6)}
.unleash-btn.golden .label{color:#ffe08a;text-shadow:0 0 12px rgba(255,200,80,.7)}
.drops-t{width:100%;border-collapse:collapse;font-size:.85rem}
.drops-t th,.drops-t td{text-align:left;padding:.45rem .3rem;border-bottom:1px dashed rgba(138,90,6,.25);vertical-align:top}
.drops-t thead th{font-size:.62rem;letter-spacing:.14em;color:var(--ink2)}
.drops-t .dr-golden th{color:#5a3a00}
.drops-note{font-size:.8rem;color:var(--ink2);margin:.7rem 0 0}
.ls-meta{font-size:.78rem;color:var(--ink2);margin:-4px 0 10px}
.proof{margin-top:10px;font-size:.74rem;color:var(--ink2)}.proof code{word-break:break-all;font-size:.66rem}
.ws-effect{margin:2px 0 8px;font-size:.72rem;font-weight:800;letter-spacing:.14em;color:#ffd76a}
.ws-title.calm{font-size:clamp(30px,7vw,64px)}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:0 0 12px}
.stats div{padding:10px;border-radius:12px;background:#fffdf6;border:1px solid rgba(217,165,33,.4);min-width:0}
.stats b{display:block;font-size:1.05rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stats small{font-size:.62rem;letter-spacing:.08em;color:var(--ink2)}
.pill{display:inline-block;font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:.12rem .42rem;border-radius:999px;border:1px solid;vertical-align:middle}
.pill.ok{color:#11612b;background:#e3f7e8;border-color:#8fd3a2}.pill.wait{color:#7a4c00;background:#fff1c9;border-color:#e8c46a}.pill.bad{color:#8a1010;background:#ffe3e0;border-color:#f0a39b}
.pill.off{color:#555;background:#f2f0ea;border-color:#d4cfc2}.pill.legend{color:#fff;background:linear-gradient(90deg,#a40e0e,#ff3b2a);border-color:#7a1010}
.log-list .names i{font-style:normal;font-size:.6rem;color:#7a4c00}
.empty a,.foot a{color:#1d4fd8}
.form{display:grid;gap:10px}
.form label{display:grid;gap:4px;font-size:.78rem;font-weight:700;color:var(--ink2)}
.form input,.form select{font:inherit;font-size:1rem;padding:.6rem .7rem;border-radius:10px;border:1px solid rgba(138,90,6,.4);background:#fffdf6;color:var(--ink);min-width:0}
.form label.check{display:flex;gap:8px;align-items:center;font-weight:600}
.form .modes{display:flex;gap:8px}.mode-r{flex:1;padding:10px;border-radius:12px;border:1px solid rgba(138,90,6,.3);background:#fffdf6;display:flex!important;gap:6px;align-items:center}
.form.grid2{grid-template-columns:repeat(2,minmax(0,1fr))}.form.grid2 .wide,.form.grid2 button,.form.grid2 .err{grid-column:1/-1}
.gold-btn{border:2px solid #8a5a06;border-radius:14px;padding:.75rem 1rem;font-weight:900;letter-spacing:.06em;background:linear-gradient(180deg,#ffe48a,#e2b23c);color:#2a1c06}
.gold-btn:disabled{opacity:.55}
.err{color:#a40e0e;font-size:.82rem;margin:0;min-height:1em}
.warnline{font-size:.8rem;background:#fff1c9;border:1px solid #e8c46a;border-radius:10px;padding:.5rem .7rem}
.demo-accts{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;font-size:.8rem}
.elig{font-weight:800;font-size:.85rem;margin:0}.elig.yes{color:#11612b}.elig.no{color:#8a1010}
.notes{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.notes li{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:10px;background:#fffdf6;border:1px solid rgba(138,90,6,.18);font-size:.82rem}
.notes li.unread{border-color:var(--gold);background:#fff7da}.notes li small{white-space:nowrap;color:var(--ink2);font-size:.66rem}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{width:100%;border-collapse:collapse;font-size:.78rem;min-width:560px}
.tbl th,.tbl td{text-align:left;padding:.4rem .35rem;border-bottom:1px dashed rgba(138,90,6,.22);vertical-align:top}
.tbl th{font-size:.6rem;letter-spacing:.12em;color:var(--ink2)}.tbl .chip.small{margin:0 4px 4px 0}
.checks{font-size:.78rem}
.m-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:12px}.m-actions.left{justify-content:flex-start}
.fx-lib{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}.fx-lib li{padding:8px 10px;border-radius:10px;background:#fffdf6;border:1px solid rgba(138,90,6,.18);font-size:.82rem}.fx-lib small{display:block;color:var(--ink2)}
.hist,.audit{margin:0;padding-left:1.2rem;font-size:.74rem;display:grid;gap:4px}.audit small{color:var(--ink2)}
.adm h3{font-size:.8rem;letter-spacing:.1em;margin:14px 0 6px}
.modal{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:14px;background:rgba(28,18,4,.55);backdrop-filter:blur(3px)}
.modal[hidden]{display:none}
.modal-card{width:min(560px,100%);max-height:calc(100vh - 28px);overflow:auto;margin:0}
.m-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.m-head h2{margin:0;font-size:1.2rem}
.m-head.golden h2{color:#5a3a00}.m-head.checkout h2 small{font-size:.65rem;letter-spacing:.1em;color:var(--ink2);display:block}
.co-amt{font-size:2rem;font-weight:900;margin:.3rem 0 0;font-variant-numeric:tabular-nums}.co-amt small{font-size:.8rem}
.co-desc{margin:0 0 10px;color:var(--ink2)}
.co-box{padding:12px;border-radius:12px;border:1px dashed #1d4fd8;background:#eef3ff;font-size:.82rem}
.ui-toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:70;max-width:calc(100vw - 28px);padding:.6rem 1rem;border-radius:12px;background:#2a1c06;color:#ffe9b0;font-size:.85rem;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.ui-toast.bad{background:#7a1010;color:#fff}
body.modal-open{overflow:hidden}
@media (min-width:900px){.tiers{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:560px){.form.grid2{grid-template-columns:1fr}.viewnav .nav-mode{margin-left:0}.notes li{flex-direction:column;gap:2px}.tier{padding:12px}.tier-amt{font-size:1.4rem}}

/* ---------- V1.0 Early Access (UI panels only; the scene is unchanged) ---------- */
body.ea .donor-only{display:none!important}
.ea-facts{margin:0 0 12px;padding-left:1.1rem;line-height:1.5;font-size:.92rem}.ea-facts li{margin:.2rem 0}
.ea-cta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.ea-cta .gold-btn{text-decoration:none;display:inline-block}.ea-cta .chip{text-decoration:none}
.hp{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}
.devbox{border:2px dashed #b46a00;background:#fff4d6;border-radius:12px;padding:10px 12px;font-size:.85rem;word-break:break-all}
.devbox b{display:block;letter-spacing:.08em;font-size:.72rem;color:#7a4c00;margin-bottom:4px}
.okline{font-size:.88rem;background:#e3f7e8;border:1px solid #8fd3a2;border-radius:10px;padding:.55rem .75rem;color:#11612b}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0 0 10px;font-size:.9rem}.kv dt{font-weight:800;color:var(--ink2)}.kv dd{margin:0;word-break:break-word}
.legal h3{margin:14px 0 4px;font-size:.95rem}.legal p,.legal li{font-size:.86rem;line-height:1.5}
.ts-box{min-height:66px}
.form .row{display:flex;flex-wrap:wrap;gap:8px}


/* ---------- v1.6 lab: OLED true blacks (only when <html class="lab-oled">; ?fx=original or ?oled=0 removes every rule below) ---------- */
.room-oled{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;user-select:none;mix-blend-mode:multiply}
.L canvas.room-oled{display:none} /* beats the generic ".L canvas{display:block}" (specificity); only shown while html.lab-oled */
html.lab-oled .L canvas.room-oled{display:block}
.scene.tier-low .L canvas.room-oled{display:none}
.scene.ext .room-oled{-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
html.lab-oled .L-storm{background:radial-gradient(120% 80% at 50% 30%,rgba(2,5,16,.9),rgba(0,0,0,.965))}
html.lab-oled .scene.night .L-room,html.lab-oled .scene.night .L-ext{filter:saturate(.3) brightness(.42)}
html.lab-oled .scene.night .L-cloudsFarN canvas{opacity:.62}
html.lab-oled .scene.night .L-cloudsNearN canvas{opacity:.56}
html.lab-oled .backdrop{background:radial-gradient(80% 70% at 50% 48%,#02040a 0%,#010206 38%,#000 58%,#000 100%)}
html.lab-oled .flash{background:radial-gradient(circle at 50% 46%,rgba(var(--fc,255,255,255),1) 0%,rgba(var(--fc,255,255,255),.7) 26%,rgba(var(--fc,255,255,255),.26) 58%,rgba(var(--fc,255,255,255),.05) 82%,rgba(var(--fc,255,255,255),0) 100%)}
html.lab-oled .hud{background:linear-gradient(180deg,rgba(0,0,0,.7),transparent)}


/* ======================================================================================================================
   v1.7 lab. Everything below is inert in ?fx=original (no html.lab-* classes) except the two unscoped helpers.
   ====================================================================================================================== */
/* visually hidden but read aloud (screen-reader sentence per recipient) */
.gm-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
#vibeBtn[disabled],#vibeBtn[aria-disabled="true"]{opacity:.55;cursor:not-allowed}

/* ---------- hidden developer performance monitor (built by fx-perf.js only when switched on) ---------- */
.perf-panel{position:fixed;left:8px;bottom:8px;z-index:200;width:min(290px,calc(100vw - 16px));padding:8px 10px 10px;border-radius:12px;background:rgba(0,0,0,.88);color:#e8e0c8;border:1px solid rgba(240,199,90,.55);font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;box-shadow:0 8px 28px rgba(0,0,0,.65);-webkit-user-select:text;user-select:text;text-align:left}
.perf-panel .ph{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;color:#f0c75a;letter-spacing:.14em}
.perf-panel .pb{display:flex;gap:4px}
.perf-panel button{font:inherit;color:#fff3d1;background:rgba(240,199,90,.14);border:1px solid rgba(240,199,90,.45);border-radius:6px;padding:3px 9px;min-height:30px;min-width:30px}
.perf-panel .pbody>div{display:flex;justify-content:space-between;gap:8px}
.perf-panel .pbody span{opacity:.72}
.perf-panel .pbody b{font-weight:600;text-align:right}
.perf-panel .pbody .hd{display:block;margin-top:6px;color:#f0c75a;letter-spacing:.1em;font-size:10px}
.perf-panel i{font-style:normal}.perf-panel i.ok{color:#7be08a}.perf-panel i.warn{color:#ffc94d}.perf-panel i.bad{color:#ff6a5a}
.perf-panel .pspark{display:block;width:100%;height:34px;margin-top:6px;border-radius:4px;background:rgba(255,255,255,.05)}
.perf-panel .pmsg{min-height:1.2em;margin-top:4px;color:#9fd0ff}

/* ---------- dark gold website theme (only with <html class="lab-theme">; the storm stage is not touched) ---------- */
html.lab-theme{--ink:#fff3d1;--ink2:#d9c590;--gold:#e6b93c;--gold2:#f6d77a;--goldDeep:#f0c75a;--ivory:#1a1208;--blue:#8ec1ff;
  --gm-line:rgba(230,185,60,.38);--gm-a:#1b130a;--gm-b:#0b0803;--gm-ca:#201709;--gm-cb:#120c04;--gm-link:#9cc8ff;--gm-blue:#8ec1ff;--gm-red:#ff9a8c;--gm-green:#8ee0a6;
  --gm-metal:linear-gradient(145deg,#f6d77a 0%,#9a6a0a 26%,#e6b93c 50%,#6b4505 76%,#d9a521 100%)}
html.lab-theme,html.lab-theme body{background-color:#050301}
html.lab-theme body{background:radial-gradient(130% 90% at 50% -10%,#2a1d07 0%,#0b0803 52%,#030201 100%) fixed #050301}
html.lab-theme ::selection{background:#e6b93c;color:#1a1208}
html.lab-theme code{color:#f6d77a}
html.lab-theme .demo-banner{background:linear-gradient(90deg,#070502,#1f1608 50%,#070502);color:#ffe6a0;border-bottom:1px solid rgba(240,199,90,.5);box-shadow:0 1px 0 rgba(0,0,0,.6),0 6px 18px rgba(0,0,0,.45)}
html.lab-theme .brandmark{color:#2a1c06;background:linear-gradient(145deg,#ffe9a0,#c98a10);box-shadow:0 6px 20px rgba(0,0,0,.55),0 0 0 1px rgba(255,226,140,.5),inset 0 1px 0 rgba(255,255,255,.6)}
html.lab-theme .chip{border-color:rgba(240,199,90,.5);background:rgba(20,14,6,.9);color:var(--ink);box-shadow:inset 0 1px 0 rgba(255,236,170,.12)}
html.lab-theme .chip[aria-pressed="true"]{background:linear-gradient(180deg,#3d2c0d,#241906);border-color:#f0c75a;color:#ffe9a8}
html.lab-theme .chip.acct{border-color:rgba(142,193,255,.55);background:rgba(20,14,6,.92);color:#cfe4ff}
html.lab-theme .chip.fx{border-color:rgba(240,199,90,.8);background:linear-gradient(180deg,rgba(240,199,90,.26),rgba(240,199,90,.1));color:#ffe9a8}
html.lab-theme .chip.fx[data-quality="medium"],html.lab-theme .chip.fx[data-quality="low"]{border-color:rgba(200,200,200,.6);background:rgba(20,14,6,.92);color:var(--ink)}
html.lab-theme .brand{padding:5px 14px 5px 5px;border-radius:16px;background:rgba(10,7,3,.82);border:1px solid rgba(240,199,90,.4);box-shadow:0 6px 18px rgba(0,0,0,.45)}
html.lab-theme .brandtext em{color:#f0c75a}
html.lab-theme .hero{position:relative;isolation:isolate}
html.lab-theme .hero::before{content:"";position:absolute;inset:-3% -8% -6%;z-index:-1;pointer-events:none;background:radial-gradient(closest-side at 50% 48%,rgba(6,4,1,.84) 0%,rgba(6,4,1,.72) 58%,rgba(6,4,1,0) 100%)}
html.lab-theme .kicker{color:#f0c75a;background:rgba(14,10,4,.86);border-color:rgba(240,199,90,.55)}
html.lab-theme h1{color:#fff3d1;text-shadow:0 2px 0 rgba(0,0,0,.65),0 10px 40px rgba(0,0,0,.85)}
html.lab-theme h1 .gold{background:linear-gradient(180deg,#fff0b0,#f0c75a 55%,#c98a10);-webkit-background-clip:text;background-clip:text;color:transparent}
html.lab-theme h1 .shock{background:linear-gradient(90deg,#7fb2ff,#cfe6ff,#7fb2ff);-webkit-background-clip:text;background-clip:text;color:transparent}
html.lab-theme .lede{color:#f0e2b8;background:rgba(12,8,3,.8);border:1px solid rgba(240,199,90,.22)}
html.lab-theme .panel{border:1px solid transparent;background-origin:border-box;
  background-image:linear-gradient(115deg,rgba(255,226,140,.08) 0,rgba(255,226,140,0) 34%),linear-gradient(180deg,var(--gm-a),var(--gm-b)),var(--gm-metal);
  background-clip:padding-box,padding-box,border-box;
  box-shadow:0 20px 48px rgba(0,0,0,.62),0 0 0 1px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,236,170,.16)}
html.lab-theme .step{color:#2a1c06;background:linear-gradient(145deg,#ffe48a,#c98a10);box-shadow:inset 0 1px 0 rgba(255,255,255,.5)}
html.lab-theme .tier{background:linear-gradient(180deg,var(--gm-ca),var(--gm-cb));border-color:rgba(230,185,60,.34);color:var(--ink)}
html.lab-theme .tier:hover{border-color:rgba(246,215,122,.75)}
html.lab-theme .tier.active{background:linear-gradient(180deg,#34250b,#1f1506);border-color:#f0c75a;box-shadow:0 10px 30px rgba(0,0,0,.55),0 0 0 3px rgba(240,199,90,.32),inset 0 1px 0 rgba(255,236,170,.22)}
html.lab-theme .tier-amt{color:var(--ink)}
html.lab-theme .tier-name{color:#f0c75a}
html.lab-theme .tier-net b,html.lab-theme .tier-odds,html.lab-theme .ledger .gold dd{color:var(--gm-blue)}
html.lab-theme .tier-odds.sure{color:var(--gm-red)}
html.lab-theme .tier-royal .tier-name{color:#cfaaff}
html.lab-theme .tier-divine .tier-name{color:var(--gm-blue)}
/* Golden God Mode stays the metallic gold hero tile, dark type on gold */
html.lab-theme .tier-golden{--ink:#2a1c06;--ink2:#5a3a00;border:2px solid #b8860b;background:linear-gradient(160deg,#fffbe9 0%,#ffeeb0 38%,#f7cf5c 72%,#e8b530 100%);box-shadow:inset 0 1px 0 #fff,inset 0 -2px 6px rgba(138,90,6,.25),0 8px 22px rgba(0,0,0,.55),0 0 24px rgba(255,200,60,.18)}
html.lab-theme .tier-golden.active{border-color:#fff0b0;background:linear-gradient(160deg,#fffbe9 0%,#ffeeb0 38%,#f7cf5c 72%,#e8b530 100%);box-shadow:0 12px 30px rgba(0,0,0,.6),0 0 0 3px rgba(255,210,74,.75),0 0 30px rgba(255,200,60,.35),inset 0 1px 0 #fff}
html.lab-theme .tier-golden .tier-name{color:#5a3a00}
html.lab-theme .tier-golden .tier-amt{color:transparent}
html.lab-theme .tier-golden .tier-net b{color:#5a3a00}
html.lab-theme .tier-golden .tier-odds{color:#ffe08a}
html.lab-theme .ledger .row,html.lab-theme .drops-t th,html.lab-theme .drops-t td,html.lab-theme .tbl th,html.lab-theme .tbl td{border-bottom-color:rgba(230,185,60,.24)}
html.lab-theme .drops-t .dr-golden th{color:#f0c75a}
html.lab-theme .sim{background:rgba(240,199,90,.14);color:#ffd76a;border-color:rgba(240,199,90,.5)}
html.lab-theme .mode,html.lab-theme .mode-r{background:linear-gradient(180deg,var(--gm-ca),var(--gm-cb));border-color:rgba(230,185,60,.34);color:var(--ink)}
html.lab-theme .mode.active{background:linear-gradient(180deg,#34250b,#1f1506);border-color:#f0c75a}
html.lab-theme .hint{color:var(--ink2);background:rgba(12,8,3,.8);border:1px solid rgba(240,199,90,.2)}
html.lab-theme .log-list li,html.lab-theme .notes li,html.lab-theme .fx-lib li,html.lab-theme .stats div,html.lab-theme .last-storm .ls-card,html.lab-theme .last-storm .totals div{background:linear-gradient(180deg,var(--gm-ca),var(--gm-cb));border-color:rgba(230,185,60,.3);color:var(--ink)}
html.lab-theme .notes li.unread{background:linear-gradient(180deg,#34250b,#1f1506);border-color:#f0c75a}
html.lab-theme .log-list .names em,html.lab-theme .last-storm .ls-card span{color:var(--gm-blue)}
html.lab-theme .log-list .names i,html.lab-theme .last-storm .ls-card small,html.lab-theme .last-storm .totals small{color:#e8c46a}
html.lab-theme .last-storm .ls-head{color:var(--gm-red)}
html.lab-theme .foot{background:rgba(12,8,3,.9);border:1px solid rgba(240,199,90,.22);color:var(--ink2)}
html.lab-theme .empty a,html.lab-theme .foot a{color:var(--gm-link)}
html.lab-theme .viewnav a{background:rgba(18,12,5,.92);border-color:rgba(240,199,90,.4);color:#ffe9a8}
html.lab-theme .viewnav a.on{background:linear-gradient(180deg,#4a350e,#2b1e07);border-color:#f0c75a;color:#fff3d1}
html.lab-theme .viewnav .nav-mode{color:#f0c75a;background:rgba(14,10,4,.9);border-color:rgba(240,199,90,.45)}
html.lab-theme .pill.ok{color:var(--gm-green);background:rgba(60,170,100,.16);border-color:rgba(110,210,150,.55)}
html.lab-theme .pill.wait{color:#ffd76a;background:rgba(240,199,90,.14);border-color:rgba(240,199,90,.5)}
html.lab-theme .pill.bad{color:var(--gm-red);background:rgba(255,90,70,.15);border-color:rgba(255,140,120,.55)}
html.lab-theme .pill.off{color:#cfc5a8;background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.22)}
html.lab-theme .form input,html.lab-theme .form select{background:#0f0a04;color:var(--ink);border-color:rgba(240,199,90,.5)}
html.lab-theme .form input::placeholder{color:#a89a74}
html.lab-theme input[type="checkbox"],html.lab-theme input[type="radio"]{accent-color:#e6b93c}
html.lab-theme .err{color:var(--gm-red)}
html.lab-theme .warnline{background:rgba(240,199,90,.12);border-color:rgba(240,199,90,.45);color:#ffe9b0}
html.lab-theme .elig.yes{color:var(--gm-green)}html.lab-theme .elig.no{color:var(--gm-red)}
html.lab-theme .modal{background:rgba(0,0,0,.74)}
html.lab-theme .m-head.golden h2{color:#f0c75a}
html.lab-theme .co-box{background:#0d1424;border-color:var(--gm-blue);color:var(--ink)}
html.lab-theme .ui-toast{background:#1b130a;color:#ffe9b0;border:1px solid rgba(240,199,90,.55);box-shadow:0 8px 24px rgba(0,0,0,.6)}
html.lab-theme .ui-toast.bad{background:#5a0f0f;color:#fff;border-color:rgba(255,140,120,.6)}
html.lab-theme .gold-btn{border-color:#fff0b0;background:linear-gradient(180deg,#ffe9a0,#d9a521);color:#241906;box-shadow:0 8px 24px rgba(0,0,0,.5),0 0 18px rgba(240,199,90,.25),inset 0 1px 0 rgba(255,255,255,.6)}
html.lab-theme .unleash-btn{border-color:#f0c75a;box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 0 6px rgba(240,199,90,.5),0 0 40px rgba(60,110,255,.3),inset 0 1px 0 #fff4}
html.lab-theme .unleash-btn.golden{border-color:#f0c75a;box-shadow:0 12px 34px rgba(0,0,0,.6),0 0 24px rgba(240,199,90,.4),inset 0 0 0 2px rgba(255,210,74,.6)}
html.lab-theme .tier-golden .tier-odds{border-color:#ffd24a}

/* ---------- better recipient cards (only with <html class="lab-ux">; the big centre-stage .bk strike notice keeps its v1.4 look) ---------- */
@keyframes gmKfIn{0%{opacity:0;transform:translateX(26px) scale(.97)}55%{opacity:1}100%{opacity:1;transform:none}}
@keyframes gmLiIn{0%{opacity:0;transform:translateY(12px) scale(.97)}100%{opacity:1;transform:none}}
html.lab-ux .killfeed{width:min(24rem,58vw);gap:.55rem;top:calc(var(--gm-hud-h,54px) + 8px)}
html.lab-ux .kf{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .6rem;padding:.65rem .8rem .6rem;border-radius:14px;font-size:1rem;line-height:1.25;color:#fff;
  background:linear-gradient(180deg,rgba(5,10,26,.95),rgba(0,0,0,.94));border:1px solid rgba(142,193,255,.5);border-left:4px solid var(--electric);
  box-shadow:0 10px 26px rgba(0,0,0,.65),0 0 20px rgba(70,140,255,.16);animation:gmKfIn .45s cubic-bezier(.2,.9,.2,1) both}
html.lab-ux .kf.red{border-color:rgba(255,130,110,.6);border-left-color:#ff4a3a;box-shadow:0 10px 26px rgba(0,0,0,.65),0 0 22px rgba(255,50,40,.2)}
html.lab-ux .kf-icon{display:none}
html.lab-ux .kf-name{flex:1 1 9rem;min-width:0;font-size:1.18rem;font-weight:800;color:#fff;white-space:normal;overflow:hidden;text-overflow:clip;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
html.lab-ux .kf.red .kf-name{text-shadow:0 0 14px rgba(255,60,50,.55)}
html.lab-ux .kf-pay{flex:0 0 auto;margin-left:auto;font-size:1.3rem;font-weight:900;color:#ffe08a;font-variant-numeric:tabular-nums;text-shadow:0 0 12px rgba(255,190,60,.4)}
html.lab-ux .kf-tag{flex:1 0 100%;grid-column:auto;font-size:.72rem;letter-spacing:.05em;line-height:1.3;color:#ffd76a}
html.lab-ux .floater small{font-size:.72rem;letter-spacing:.1em}
html.lab-ux .bk-pay .sim{font-size:max(11px,.46em);padding:.14em .5em}
html.lab-ux .stage .fine{font-size:.8rem}
html.lab-ux .finale{padding-top:max(70px,calc(var(--gm-hud-h,56px) + 14px))}
html.lab-ux .finale-inner{width:min(46rem,100%);max-height:calc(100vh - max(70px,calc(var(--gm-hud-h,56px) + 14px)) - 22px);max-height:calc(100dvh - max(70px,calc(var(--gm-hud-h,56px) + 14px)) - 22px);background:radial-gradient(120% 100% at 50% 0%,rgba(52,28,2,.9),rgba(6,3,0,.94))}
html.lab-ux .finale-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));gap:.55rem}
html.lab-ux .finale-list li{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.65rem .6rem;border-radius:14px;font-size:1rem;line-height:1.25;
  background:linear-gradient(180deg,rgba(255,206,100,.14),rgba(255,206,100,.05));border:1px solid rgba(255,206,100,.5);animation:gmLiIn .5s cubic-bezier(.2,.9,.2,1) both}
html.lab-ux .finale-list li:nth-child(1){animation-delay:calc(var(--findelay,1.1s) + .35s)}
html.lab-ux .finale-list li:nth-child(2){animation-delay:calc(var(--findelay,1.1s) + .43s)}
html.lab-ux .finale-list li:nth-child(3){animation-delay:calc(var(--findelay,1.1s) + .51s)}
html.lab-ux .finale-list li:nth-child(4){animation-delay:calc(var(--findelay,1.1s) + .59s)}
html.lab-ux .finale-list li:nth-child(5){animation-delay:calc(var(--findelay,1.1s) + .67s)}
html.lab-ux .finale-list .n{flex:1 1 7rem;min-width:0;max-width:100%;font-size:1.12rem;font-weight:800;color:#fff;white-space:normal;overflow:hidden;text-overflow:clip;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-align:center}
html.lab-ux .finale-list .a{font-size:1.4rem;font-weight:900;color:#ffe08a;font-variant-numeric:tabular-nums;white-space:nowrap}
html.lab-ux .finale-list .kf-tag{flex:1 0 100%;font-size:.7rem;letter-spacing:.05em;color:#ffd76a;text-align:center}
html.lab-ux .totals{gap:.5rem}
html.lab-ux .totals dt{font-size:.72rem;letter-spacing:.08em;opacity:1;color:#f0e2b8}
html.lab-ux .totals dd{font-size:1.2rem}
html.lab-ux .totals small{font-size:.7rem;letter-spacing:.06em}
html.lab-ux .last-storm .ls-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));gap:.6rem}
html.lab-ux .last-storm .ls-card{display:flex;flex-direction:column;gap:.12rem;padding:.7rem .75rem;border-radius:14px}
html.lab-ux .last-storm .ls-card b{font-size:1.08rem;white-space:normal;overflow:hidden;text-overflow:clip;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
html.lab-ux .last-storm .ls-card span{font-size:1.35rem;font-weight:900;font-variant-numeric:tabular-nums}
html.lab-ux .last-storm .ls-card small{font-size:.72rem;letter-spacing:.05em}
@media (max-width:700px){
  html.lab-ux .killfeed{left:10px;right:10px;width:auto}
  html.lab-ux .finale-list{grid-template-columns:minmax(0,1fr)}
  html.lab-ux .finale-list{gap:.4rem}
  html.lab-ux .finale-list li{flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:left;gap:0 .6rem;padding:.45rem .75rem .4rem}
  html.lab-ux .finale-list .n{text-align:left;font-size:1.08rem}
  html.lab-ux .finale-list .a{font-size:1.3rem}
  html.lab-ux .finale-list .kf-tag{text-align:left}
  html.lab-ux .finale{padding-top:max(56px,calc(var(--gm-hud-h,56px) + 10px))}
  html.lab-ux .finale-inner{padding:14px 12px 12px;max-height:calc(100vh - max(56px,calc(var(--gm-hud-h,56px) + 10px)) - 14px);max-height:calc(100dvh - max(56px,calc(var(--gm-hud-h,56px) + 10px)) - 14px)}
  html.lab-ux .totals dd{font-size:1.1rem}
  html.lab-ux .totals div{padding:.45rem .5rem}
}
@media (max-width:360px){html.lab-ux .kf-pay{flex:1 0 100%;margin-left:0}html.lab-ux .finale-list .a{flex:1 0 100%}}
@media (prefers-reduced-motion:reduce){html.lab-ux .kf,html.lab-ux .finale-list li{animation:none}}
html.reduced.lab-ux .kf,html.reduced.lab-ux .finale-list li{animation:none}

/* ---------- v1.8 lab. Everything below is new in v1.8 (pace + profile pictures + vibration check); nothing above this line changed ---------- */
/* readable pacing: the centre-stage notice stays fully opaque from 8 % to 90 % of its (longer) run, so a name is readable ~1.7 s before the next strike replaces it.
   `?pace=classic` removes html.pace-readable, which brings back the v1.7 keyframes untouched. */
@keyframes bkInRead{0%{opacity:0;transform:scale(2.1);filter:blur(6px)}8%{opacity:1;transform:scale(.96);filter:none}12%{transform:scale(1.02)}16%{transform:scale(1)}90%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translateY(-30px) scale(.82)}}
@keyframes bkInRR{0%{opacity:0}8%{opacity:1}90%{opacity:1}100%{opacity:0}}
html.pace-readable .bk{animation-name:bkInRead}
html.pace-readable.reduced .bk{animation-name:bkInRR}

/* recipient profile pictures: original generated demo art (fx-avatars.js), lab look only. Blue ring = lightning strike, red ring = WORLD SHOCK, gold ring = results. */
html:not(.lab-ux) .av{display:none}
html.lab-ux .av{display:block;box-sizing:border-box;flex:0 0 auto;width:var(--av-size,clamp(38px,2.75rem,54px));height:var(--av-size,clamp(38px,2.75rem,54px));border-radius:50%;object-fit:cover;background:#0b0803;
  border:2px solid var(--av-ring,#f0c75a);box-shadow:0 0 0 1px rgba(0,0,0,.65),0 0 14px var(--av-glow,rgba(240,199,90,.38));-webkit-user-drag:none;user-select:none}
html.lab-ux .av-blue{--av-ring:#7dbbff;--av-glow:rgba(80,160,255,.45)}
html.lab-ux .av-gold{--av-ring:#f0c75a;--av-glow:rgba(240,199,90,.4)}
html.lab-ux .av-red{--av-ring:#ff5a4a;--av-glow:rgba(255,60,50,.55)}
html.lab-ux .av.av-fb{background:radial-gradient(circle at 50% 38%,#f0c75a 0 20%,transparent 21%),radial-gradient(ellipse at 50% 108%,#f0c75a 0 46%,transparent 47%),#120c03}
/* strike feed card: picture on the left, name + payout beside it, label under the name. Same wrapping flex row as v1.7, so at 150-200 % text the amount drops under the name and the name keeps the full width (a grid would squeeze it) */
html.lab-ux .kf.has-av{--av-size:clamp(38px,2.75rem,54px);align-items:center;column-gap:.7rem}
html.lab-ux .kf.has-av .kf-tag{flex:1 0 calc(100% - var(--av-size) - .7rem);margin-left:calc(var(--av-size) + .7rem)}
/* centre-stage notice: picture beside the big name (two lines allowed so a long handle is never cut to "…") */
html.lab-ux .bk-who{display:flex;align-items:center;justify-content:center;gap:.6rem;min-width:0;max-width:100%}
html.lab-ux .bk-who .av{--av-size:clamp(46px,11vw,84px);border-width:3px}
html.lab-ux .bk-who .bk-name{flex:0 1 auto;min-width:0;padding-right:.12em;white-space:normal;overflow-wrap:anywhere;text-overflow:clip;line-height:1.1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* results screen + "last storm" cards */
html.lab-ux .finale-list li.has-av{--av-size:clamp(40px,2.9rem,56px)}
html.lab-ux .finale-list li.has-av .av{margin-bottom:.15rem}
html.lab-ux .last-storm .ls-card.has-av{--av-size:clamp(40px,2.75rem,52px)}
html.lab-ux .last-storm .ls-card.has-av .av{margin-bottom:.2rem}
@media (max-width:700px){
  html.lab-ux .finale-list li.has-av{--av-size:clamp(38px,2.6rem,48px);align-items:center;column-gap:.7rem;padding:.45rem .7rem}
  html.lab-ux .finale-list li.has-av .av{margin:0}
  html.lab-ux .finale-list li.has-av .a{margin-left:auto}
  html.lab-ux .finale-list li.has-av .kf-tag{flex:1 0 calc(100% - var(--av-size) - .7rem);margin-left:calc(var(--av-size) + .7rem)}
}

/* vibration check: chips stay visible and honest; the note slides up from the bottom and is dismissed with OK */
.chip[disabled]{opacity:.75}
.chip#vibeBtn[data-state="unsupported"],.chip#vibeBtn[data-state="no-touch"]{border-style:dashed}
.vibe-info{position:fixed;left:0;right:0;margin:0 auto;bottom:max(12px,env(safe-area-inset-bottom));z-index:90;width:min(30rem,calc(100vw - 20px));box-sizing:border-box;padding:14px 16px 12px;border-radius:16px;
  background:linear-gradient(180deg,#17110a,#050301);color:#fff;border:1px solid rgba(240,199,90,.65);border-left:5px solid var(--vi,#9ec9ff);box-shadow:0 14px 40px rgba(0,0,0,.75),0 0 24px rgba(240,199,90,.18);font-size:.95rem;line-height:1.4;animation:gmLiIn .3s ease-out both}
.vibe-info[hidden]{display:none}
.vibe-info[data-level="ok"]{--vi:#7dd3a0}.vibe-info[data-level="warn"]{--vi:#ffcf6b}.vibe-info[data-level="bad"]{--vi:#ff7a6a}.vibe-info[data-level="info"]{--vi:#9ec9ff}
.vibe-info .vi-head{display:block;font-size:1.05rem;font-weight:800;color:#fff}
.vibe-info .vi-tips{list-style:none;margin:.45rem 0 .5rem;padding:0;color:#f3e7c4}
.vibe-info .vi-tips li{margin:.2rem 0}
.vibe-info .vi-det{margin:.3rem 0 .6rem;font-size:.74rem;line-height:1.35;color:#d9c995;overflow-wrap:anywhere}
.vibe-info .vi-ok{min-height:44px;min-width:96px;padding:.5rem 1.2rem;border-radius:999px;border:1px solid #f0c75a;background:linear-gradient(180deg,#3d2c0d,#241906);color:#ffe9a8;font-weight:800;letter-spacing:.08em;font-size:.85rem}
@media (prefers-reduced-motion:reduce){.vibe-info{animation:none}}
html.reduced .vibe-info{animation:none}

/* ===== v1.9 lab. Everything below is new in v1.9: a compact live strike feed. Every rule is scoped to html.lab-ux .killfeed, so the Original look (v1.4 cards), the centre-stage notice and the finale results screen are untouched.
   Goals: the globe and the lightning stay the main attraction in blue and red storms alike. Card = small picture | name over a one-line label | amount, about 46 px high (v1.8: 98 px). Only the newest card is shown in full,
   the one before it as a slim dimmed line, older ones fold away (app.js trimFeed); a red WORLD SHOCK strike shows its recipient alone. ===== */
@keyframes gmKfOut{0%{opacity:.74;max-height:5rem;transform:none}100%{opacity:0;max-height:0;padding-top:0;padding-bottom:0;border-top-width:0;border-bottom-width:0;transform:translateX(-24px)}}
html.lab-ux .killfeed{--kf-av:clamp(30px,2.1rem,36px);gap:.3rem;width:min(21rem,58vw);top:calc(var(--gm-hud-h,54px) + 5px);align-items:stretch}
html.lab-ux .killfeed .kf[hidden]{display:none}
html.lab-ux .killfeed .kf{flex-wrap:wrap;align-items:center;gap:0 .55rem;padding:.3rem .7rem .3rem .45rem;border-radius:12px;font-size:1rem;line-height:1.18;border-left-width:3px;overflow:hidden;
  box-shadow:0 6px 16px rgba(0,0,0,.6),0 0 12px rgba(70,140,255,.14);transition:opacity .3s ease,padding .3s ease;animation:gmKfIn .4s cubic-bezier(.2,.9,.2,1) backwards}
html.lab-ux .killfeed .kf.red{box-shadow:0 6px 16px rgba(0,0,0,.6),0 0 14px rgba(255,50,40,.2)}
html.lab-ux .killfeed .kf.has-av{--av-size:var(--kf-av);column-gap:.55rem}
html.lab-ux .killfeed .kf .av{border-width:2px;transition:width .3s ease,height .3s ease;box-shadow:0 0 0 1px rgba(0,0,0,.65),0 0 8px var(--av-glow,rgba(240,199,90,.38))}
html.lab-ux .killfeed .kf-main{flex:1 1 7.5rem;min-width:0;display:block}
html.lab-ux .killfeed .kf-name{flex:none;font-size:1.02rem;line-height:1.18;display:-webkit-box}
html.lab-ux .killfeed .kf-pay{flex:0 0 auto;margin-left:auto;font-size:1.1rem;line-height:1.1}
html.lab-ux .killfeed .kf-tag,html.lab-ux .killfeed .kf.has-av .kf-tag{display:block;flex:none;margin:.06rem 0 0;font-size:max(9.5px,.6rem);letter-spacing:.04em;line-height:1.25;overflow:hidden;max-height:2.6em;transition:max-height .3s ease,opacity .25s ease,margin .3s ease}
html.lab-ux .killfeed .kt-n,html.lab-ux .killfeed .kt-mid{display:none}
/* the card before the newest one: slim, dimmed, no label (the HUD already counts 1/5 ... 5/5) */
html.lab-ux .killfeed .kf.kf-prev{opacity:.74;padding-top:.16rem;padding-bottom:.16rem;--av-size:24px}
html.lab-ux .killfeed .kf.kf-prev .kf-tag{max-height:0;opacity:0;margin-top:0}
html.lab-ux .killfeed .kf.kf-prev .kf-name{font-size:.96rem}
html.lab-ux .killfeed .kf.kf-prev .kf-pay{font-size:1rem}
/* older cards fade, slide and fold away; app.js then hides them (display:none) */
html.lab-ux .killfeed .kf.kf-out{animation:gmKfOut .38s ease-in forwards;pointer-events:none}
@media (max-width:700px){html.lab-ux .killfeed{left:10px;right:10px;width:auto}}
@media (max-width:360px){html.lab-ux .killfeed .kf{padding-right:.55rem;gap:0 .45rem}html.lab-ux .killfeed .kf-pay{flex:0 0 auto;margin-left:auto}}
@media (prefers-reduced-motion:reduce){html.lab-ux .killfeed .kf{animation:none;transition:none}html.lab-ux .killfeed .kf-out{display:none}}
html.reduced.lab-ux .killfeed .kf{animation:none;transition:none}
html.reduced.lab-ux .killfeed .kf-out{display:none}
