/* =====================================================================
   IDEA FORGE — blueprint / mission-lab pixel UI over the Moon
   ===================================================================== */
:root{--bp-bg:rgba(8,24,62,.93);--bp-line:rgba(95,243,255,.09);--bp-line2:rgba(95,243,255,.18);--bp-edge:rgba(95,243,255,.55);--ff-a:#5ff3ff;--ff-b:#ff5fb4;--ff-gold:#ffd34d}

/* blueprint panel: fine + major grid, inset cyan edge, corner registration marks */
.bp{position:relative;background:
  linear-gradient(var(--bp-line) 1px,transparent 1px) 0 0/8px 8px,
  linear-gradient(90deg,var(--bp-line) 1px,transparent 1px) 0 0/8px 8px,
  linear-gradient(var(--bp-line2) 1px,transparent 1px) 0 0/40px 40px,
  linear-gradient(90deg,var(--bp-line2) 1px,transparent 1px) 0 0/40px 40px,
  var(--bp-bg);
  box-shadow:inset 0 0 0 2px var(--bp-edge),inset 0 0 40px rgba(20,80,160,.35);padding:16px 24px}
.bp::before,.bp::after{content:'';position:absolute;width:10px;height:10px;pointer-events:none;border:2px solid rgba(255,255,255,.7)}
.bp::before{left:4px;top:4px;border-right:0;border-bottom:0}.bp::after{right:4px;bottom:4px;border-left:0;border-top:0}
.fx-pick [hidden],.fx-poster [hidden]{display:none!important}
.ff-dim{color:var(--ink-3);font-size:16px;line-height:24px}
.ff-gold{color:var(--ff-gold)}.ff-red{color:#ff6f8f}
em{font-style:normal}
em.c{color:var(--ff-a)}em.p{color:var(--ff-b)}
@keyframes ffIn{from{opacity:0;transform:translateY(-14px) scale(.97)}}
.pr-in.bp,.ff-rev.pr-in,.ffh .pr-in{animation:ffIn .45s cubic-bezier(.2,1.4,.4,1) both}

/* stage under the toast band */
.g-forge .stage.ff-stage{top:160px;width:min(960px,94vw);max-height:calc(100vh - 168px);overflow-y:auto;overflow-x:hidden;padding:4px 4px 24px;scrollbar-width:thin;scrollbar-color:#2a4a8a transparent}
.ff-hud .pipcap{white-space:nowrap}

/* ---------- briefing ---------- */
.ff-brief{display:flex;flex-direction:column;gap:16px;padding:24px 32px}
.ff-bt{display:flex;align-items:center;gap:24px}
.ff-bulb{display:inline-block;animation:bulbGlow 1.6s ease-in-out infinite;filter:drop-shadow(0 0 8px rgba(255,211,77,.6))}
@keyframes bulbGlow{50%{filter:drop-shadow(0 0 18px rgba(255,211,77,.95)) brightness(1.15)}}
.ff-logo{font-size:48px;line-height:56px;letter-spacing:6px;margin-top:4px}
.ff-logo.big{font-size:64px;line-height:72px}
.ffh-final .ff-logo.big{font-size:48px;line-height:56px}
.ff-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.ff-steps li{display:flex;gap:12px;align-items:flex-start;background:rgba(4,14,40,.7);padding:12px;box-shadow:inset 0 0 0 2px rgba(95,243,255,.25);font-size:16px;line-height:24px}
.ff-steps b{flex:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--ff-a);color:#04102a;font-size:24px}
.ff-ladder{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ff-ladder span{display:flex;align-items:center;gap:8px;font-size:16px;color:var(--tc);padding:4px 10px;background:rgba(4,10,30,.75);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--tc) 45%,transparent);white-space:nowrap}
.ff-ladder small{margin-left:auto;font-size:16px;color:var(--ink-3)}
.ff-ladder i{width:12px;height:12px;background:var(--tc);box-shadow:0 0 8px var(--tc)}
.ff-ladder.big span{font-size:24px;padding:8px 16px}.ff-ladder.big i{width:16px;height:16px}
.ff-brief p{margin:0}
.ff-start,.ff-cont{align-self:center}

/* hazard-stripe primary buttons */
.ff-go,.ff-start,.ff-nextr,.ff-cont,.ffh-primary{border:6px solid transparent;background:linear-gradient(#141006,#141006) padding-box,repeating-linear-gradient(45deg,#ffd34d 0 8px,#2a1e04 8px 16px) border-box;color:#fff3c4;box-shadow:0 0 18px rgba(255,211,77,.35)}
.ff-go:hover,.ff-start:hover,.ff-nextr:hover,.ff-cont:hover,.ffh-primary:hover{box-shadow:0 0 30px rgba(255,211,77,.65)}
.ff-go:disabled{filter:grayscale(1) brightness(.6);cursor:not-allowed;box-shadow:none}
.btn:focus-visible,.ff-chg:focus-visible,.ff-in:focus-visible,.ff-hi:focus-visible{outline:4px solid #fff;outline-offset:2px}

/* ---------- incoming / miss ---------- */
.ff-incoming,.ff-miss{text-align:center;padding:40px 24px;display:flex;flex-direction:column;align-items:center;gap:16px}
.ff-incoming .label{animation:blink .5s steps(2) infinite}@keyframes blink{50%{opacity:.25}}
.ff-it{font-weight:700;font-size:40px;line-height:48px;letter-spacing:6px;color:#fff;text-shadow:-2px 0 #ff3d9a,2px 0 #2ef0ff}
.ff-miss p{max-width:520px;margin:0}

/* ---------- theme tile (periodic-table style) ---------- */
.ff-theme{display:inline-flex;align-items:center;gap:10px;flex:none}
.ff-theme b{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:32px;line-height:1;color:#04102a;background:var(--ff-gold);box-shadow:inset -4px -4px 0 #c8901a,0 0 12px rgba(255,211,77,.5)}
.ff-theme span{font-size:16px;letter-spacing:2px;text-transform:uppercase;color:#fff3c4}
.ff-theme.big b{width:64px;height:64px;font-size:48px}.ff-theme.big span{font-size:24px}

/* ---------- peer review ---------- */
.ff-empty{text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 24px}
.ff-empty p{margin:0;max-width:560px;font-size:16px;line-height:24px}
.ff-et{font-weight:700;font-size:32px;line-height:40px;letter-spacing:4px;color:#fff}
.ff-moon{animation:novaBob 3s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(200,196,230,.6))}
.ff-rev{display:flex;flex-direction:column;gap:12px}
.ff-revtop{display:flex;justify-content:space-between}
.ff-paper{position:relative;padding:20px 28px;background:repeating-linear-gradient(0deg,rgba(40,80,160,.12) 0 1px,transparent 1px 24px),#f1ecdc;color:#1a1640;box-shadow:inset 0 0 0 2px #c9bf9e;overflow:hidden;transition:filter .3s}
.ff-paper::before{content:'';position:absolute;left:44px;top:0;bottom:0;width:2px;background:rgba(255,95,122,.45)}
.ff-pid{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-weight:700;font-size:16px;letter-spacing:2px;color:#3a3470;padding-left:28px}
.ff-pcall{font-size:16px;line-height:24px;margin-top:8px;color:#4a4478;padding-left:28px}
.ff-pcall .label{color:#8a82b8;font-size:16px;letter-spacing:2px}
.ff-paper .ff-pcombo{padding-left:28px}
.ff-pcombo{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:12px;font-weight:700;font-size:24px;line-height:32px}
.ff-pcombo i{font-style:normal;color:#8a82b8}
.ff-pm{color:#0a6c8a}.ff-pp{color:#b0206a}
.ff-empty .ff-pcombo{justify-content:center}.ff-empty .ff-pm{color:var(--ff-a)}.ff-empty .ff-pp{color:var(--ff-b)}.ff-empty .ff-pcombo i{color:#fff}
.ff-phyp{font-size:16px;line-height:24px;margin-top:8px;color:#2a2650;padding-left:28px}
.ff-paper .ff-dim{color:#7a74a8}
.ff-ptiers{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding-left:28px}
.ff-ptiers .ff-chip{background:#1a1640;animation:iconPop .4s cubic-bezier(.2,1.7,.35,1) both}
.ff-pstamp{position:absolute;right:20px;top:50%;pointer-events:none;opacity:0}
.ff-pstamp b{display:block;font-weight:700;font-size:40px;line-height:48px;letter-spacing:4px;color:var(--sc);border:6px double var(--sc);padding:2px 14px;background:rgba(241,236,220,.75);mix-blend-mode:multiply}
.ff-pstamp.on{animation:pStamp .4s cubic-bezier(.5,0,.6,1.4) forwards}
@keyframes pStamp{0%{opacity:0;transform:translateY(-50%) scale(2.4) rotate(-20deg)}100%{opacity:.92;transform:translateY(-50%) scale(1) rotate(-12deg)}}
.ff-paper.v-reject{filter:saturate(.6)}
.ff-r2{display:flex;align-items:center;gap:16px;padding:8px 16px;background:rgba(10,7,30,.88);box-shadow:inset 0 0 0 2px #3a2a6a}
.ff-r2f{flex:none;display:flex}
.ff-r2.talk .ff-r2f{animation:r2talk .3s steps(2) 4}@keyframes r2talk{50%{transform:translateY(-3px) rotate(-4deg)}}
.ff-r2s{display:flex;flex-direction:column;font-size:16px;line-height:24px;color:var(--ink-2)}
.ff-r2s b{color:#ff8fc8;letter-spacing:4px}
.ff-r2.talk .ff-r2s span{color:#fff;animation:fadeUp .3s both}
.ff-votes{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.ff-v{min-height:56px;font-size:16px;letter-spacing:3px;padding:12px 8px}
.ff-v.fund{border-color:#2ee6a8;box-shadow:0 0 14px rgba(46,230,168,.35)}
.ff-v.revise{border-color:#ff8a3c;box-shadow:0 0 14px rgba(255,138,60,.35)}
.ff-v.reject{border-color:#ff5f7a;box-shadow:0 0 14px rgba(255,95,122,.35)}
.ff-v:disabled{opacity:.35;cursor:default}
.ff-v.chosen{opacity:1;filter:brightness(1.3);transform:scale(1.04)}
.ff-votes.done{grid-template-columns:1fr 2fr}.ff-votes.done .ff-v:not(.chosen){display:none}.ff-votes.done .ff-v.chosen{transform:none}
.ff-nx{min-height:56px;animation:fadeUp .3s both}

/* ---------- live: host big screen ---------- */
.ffh{width:min(1320px,96vw);display:flex;flex-direction:column;align-items:center;gap:16px;padding-bottom:24px}
.ffh-intro{width:min(1100px,100%);display:flex;flex-direction:column;gap:24px;padding:32px 40px;margin-top:2vh}
.ffh-lead{font-size:24px;line-height:40px;margin:0;max-width:1000px}
.ffh-btns{display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:wrap}
.ffh-build{width:100%;display:flex;flex-direction:column;gap:16px}
.ffh-call{padding:24px 32px 16px}
.ffh-call .ff-q{font-size:48px;line-height:64px;margin-top:16px}
.ffh-call .label{font-size:24px}
.ffh-bay{padding:16px 24px}
.ffh-bayh{display:flex;justify-content:space-between;align-items:center}
.ffh-cnt{font-size:40px;color:var(--ff-gold)}
.ffh-mods{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;min-height:56px}
.ffh-mod{display:inline-flex;align-items:center;gap:10px;font-size:24px;padding:8px 16px;color:var(--ink-3);background:rgba(4,10,30,.7);box-shadow:inset 0 0 0 2px #2a3a70}
.ffh-mod i{width:16px;height:16px;background:#2a3a70}
.ffh-mod.in{color:#fff;box-shadow:inset 0 0 0 2px var(--ff-a),0 0 16px rgba(95,243,255,.4);animation:lockIn .5s cubic-bezier(.2,1.7,.4,1)}
.ffh-mod.in i{background:var(--ff-a);box-shadow:0 0 8px var(--ff-a)}
.ffh-reveal{width:100%;display:flex;flex-direction:column;gap:16px}
.ffh-rh{display:flex;gap:24px;align-items:baseline;padding:12px 24px}
.ffh-rh .label{flex:none}.ffh-rq{font-size:24px;line-height:32px;color:#fff}
.ffh-wall{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.ffh-wall.n1{grid-template-columns:minmax(0,560px);justify-content:center}.ffh-wall.n2,.ffh-wall.n4{grid-template-columns:repeat(2,minmax(0,560px));justify-content:center}
.ffh-card{--tc:#aeb6cc;padding:16px 20px;display:flex;flex-direction:column;gap:8px;opacity:0;transform:translateY(20px) scale(.95);box-shadow:inset 0 0 0 3px var(--tc)}
.ffh-card.on{opacity:1;transform:none;transition:transform .45s cubic-bezier(.2,1.6,.4,1),opacity .2s}
.ffh-card.top{box-shadow:inset 0 0 0 4px var(--ff-gold),0 0 40px rgba(255,211,77,.55);order:-1;padding-top:22px}
.ffh-card{overflow:visible;clip-path:none}
.ffh-ch{display:flex;align-items:center;gap:12px}
.ffh-rank{font-weight:700;font-size:24px;color:var(--ink-3)}.ffh-who{flex:1;font-size:24px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ffh-pts{font-size:32px;color:var(--pink);text-shadow:0 0 12px rgba(255,95,180,.6)}
.ffh-combo{font-weight:700;font-size:24px;line-height:32px;display:flex;flex-wrap:wrap;gap:4px 10px}
.ffh-combo span{color:var(--tc)}.ffh-combo i{font-style:normal;color:#fff}
.ffh-cf{display:flex;gap:8px;flex-wrap:wrap}
.ffh-st{font-weight:700;font-size:16px;letter-spacing:2px;padding:2px 10px;border:3px double currentColor}
.ffh-st.un{color:var(--ff-gold)}.ffh-st.sc{color:#ff5f7a}.ffh-st.rp{color:#aeb6cc}
.ffh-crown{position:absolute;left:16px;top:-12px;background:var(--ff-gold);color:#2a1800;font-weight:700;font-size:16px;letter-spacing:2px;padding:2px 10px;transform:rotate(4deg)}
.ffh-more{text-align:center}
.ffh-final{width:min(900px,100%);display:flex;flex-direction:column;gap:16px;align-items:center;padding:32px 40px;margin-top:2vh}
.ffh-board{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:6px}
.ffh-board li{display:grid;grid-template-columns:48px minmax(0,240px) 1fr 96px;gap:12px;align-items:center;font-size:24px;padding:6px 12px;background:rgba(4,10,30,.7);border-left:4px solid transparent;animation:fadeUp .4s both}
.ffh-board li.top1{border-left-color:var(--ff-gold)}.ffh-board li.top2{border-left-color:#c9d0e0}.ffh-board li.top3{border-left-color:#ff9a3c}
.ffh-board .rk{color:var(--ink-3)}.ffh-board .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ffh-board .bar{height:16px;background:#0e1a40}.ffh-board .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--ff-a),var(--ff-gold));animation:growX .8s cubic-bezier(.2,1,.4,1) both}
@keyframes growX{from{width:0}}
.ffh-board b{text-align:right;color:var(--ff-gold)}
.ffh-board li.empty{display:block;text-align:center;color:var(--ink-3)}

/* ---------- live: phone ---------- */
.ffp-box{width:min(560px,100%);display:flex;flex-direction:column;gap:12px;margin-top:32px}
.ffp-rank{font-size:16px;color:var(--cyan)}
.ffp-score{font-weight:700;font-size:64px;line-height:72px;color:var(--ff-gold);text-shadow:-3px 0 rgba(255,61,154,.7),3px 0 rgba(46,240,255,.7),0 0 24px rgba(255,211,77,.7)}
.ffp-score span{font-size:24px;color:var(--ink-2);margin-left:8px;text-shadow:none}


/* =====================================================================
   DEAL · TAP · REVEAL
   ===================================================================== */
.fx-pop{animation:ffIn .45s cubic-bezier(.2,1.4,.4,1) both}
.ff-call{padding:16px 24px 16px;transition:opacity .3s}
.ff-calltop{display:flex;align-items:center;gap:16px}
.ff-rl{margin-left:auto}
.ff-q{font-size:32px;line-height:40px;margin-top:12px;color:#fff;text-wrap:balance}
.ff-ring{--p:100%;position:relative;width:56px;height:56px;flex:none;display:flex;align-items:center;justify-content:center;background:conic-gradient(var(--ff-gold) var(--p),#13254e 0);clip-path:polygon(0 8px,8px 8px,8px 0,calc(100% - 8px) 0,calc(100% - 8px) 8px,100% 8px,100% calc(100% - 8px),calc(100% - 8px) calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,8px calc(100% - 8px),0 calc(100% - 8px))}
.ff-ring::after{content:'';position:absolute;inset:4px;background:#07163a;clip-path:inherit}
.ff-ring b{position:relative;z-index:1;font-size:24px;color:#fff}
.ff-ring.low{background:conic-gradient(#ff5f7a var(--p),#13254e 0);animation:lowpulse .5s steps(2) infinite}
.ff-ring.done{opacity:.35}
@keyframes lowpulse{50%{filter:brightness(1.8)}}
.ff-ring.big{width:96px;height:96px}.ff-ring.big b{font-size:48px}.ff-ring.big::after{inset:6px}
.btn:focus-visible,.fx-card:focus-visible,.fx-ownb:focus-visible,.fx-dcard:focus-visible{outline:4px solid #fff;outline-offset:3px}

/* intro + transmission */
.fx-intro{width:min(760px,100%);align-self:center;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:40px 32px 32px;margin-top:4vh}
.fx-intro .ff-bulb svg{display:block}
.fx-one{margin:4px 0 12px;font-size:32px;line-height:48px;color:#fff}
.fx-intro .ff-start{min-width:280px}
.fx-tx{text-align:center;padding:40px 24px;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:6vh;animation:fxTx .8s cubic-bezier(.2,1.4,.4,1) both}
@keyframes fxTx{0%{opacity:0;transform:scaleY(.05) scaleX(1.2)}35%{opacity:1;transform:scaleY(.05) scaleX(1)}100%{transform:none}}
.fx-tx .label{animation:blink .5s steps(2) infinite}@keyframes blink{50%{opacity:.25}}
.fx-tx.grand,.fx-pick.grand .fx-call{box-shadow:inset 0 0 0 4px var(--ff-gold),0 0 40px rgba(255,211,77,.45),inset 0 0 60px rgba(255,180,40,.18)}
.fx-tx.grand .ff-it{color:#ffe89a;text-shadow:-3px 0 #ff3d9a,3px 0 #2ef0ff,0 0 24px rgba(255,211,77,.9);font-size:48px;line-height:56px}
.fx-x2{font-weight:700;font-size:64px;line-height:72px;color:var(--ff-gold);text-shadow:0 0 24px rgba(255,211,77,.9);animation:novaLetter .8s cubic-bezier(.2,1.9,.35,1) .2s both,novaBob 1s ease-in-out 1s infinite}
.fx-grand{margin:-16px -24px 12px;padding:4px 24px;font-weight:700;font-size:16px;letter-spacing:6px;color:#2a1800;background:repeating-linear-gradient(45deg,#ffd34d 0 12px,#ffc21a 12px 24px);text-align:center;animation:grandSlide 6s linear infinite;background-size:68px 68px}
@keyframes grandSlide{to{background-position:68px 0}}

/* picker */
.fx-pick{display:flex;flex-direction:column;gap:16px}
.fx-pick > *{transition:opacity .3s}
.fx-pick.dim > *{opacity:.12}
.fx-pick.docking .ff-q{font-size:24px;line-height:32px;margin-top:6px}
.fx-meter{display:flex;align-items:center;gap:6px}
.fx-ml{font-size:16px;letter-spacing:2px;color:var(--ink-3);text-transform:uppercase}
.fx-meter i{width:16px;height:16px;background:#1a1a48;box-shadow:inset 0 0 0 2px #3a2a6a}
.fx-meter i.on{background:#c07cff;box-shadow:0 0 10px #c07cff,inset 0 0 0 2px #e8d0ff;animation:pipPop .5s cubic-bezier(.2,1.7,.35,1)}
.fx-meter.full .fx-ml{color:#e0c0ff;animation:novaHue 1s linear infinite}
.fx-meter.full i{animation:stratoGlow .5s ease-in-out infinite}

.fx-slots{display:grid;grid-template-columns:1fr 56px 1fr;align-items:stretch}
.fx-slot{--tc:#3a4a8a;position:relative;min-height:96px;padding:10px 16px;display:flex;flex-direction:column;justify-content:center;gap:4px;background:rgba(6,16,46,.88);box-shadow:inset 0 0 0 2px var(--tc);outline:2px dashed rgba(95,243,255,.25);outline-offset:-8px;transition:transform .38s cubic-bezier(.6,0,.9,.4),box-shadow .3s;min-width:0}
.fx-slot.filled{outline:0}
.fx-sl{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;letter-spacing:4px;color:var(--ink-3)}
.fx-sl b{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;background:var(--ff-a);color:#04102a;letter-spacing:0}
.s-p .fx-sl b{background:var(--ff-b)}
.fx-sv{display:flex;align-items:center;gap:12px;min-height:48px;min-width:0}
.fx-q{font-weight:700;font-size:32px;color:#2a3a70;animation:blink 1.2s steps(2) infinite}
.fx-ti{flex:none;display:flex}.fx-ti canvas{display:block}
.fx-st{display:flex;flex-direction:column;min-width:0}
.fx-sn{font-weight:700;font-size:24px;line-height:32px;color:#fff;overflow-wrap:anywhere}
.fx-tt{font-weight:700;font-size:16px;letter-spacing:3px;color:var(--tc);opacity:0}
.fx-tt i{font-style:normal;color:#fff;margin-left:6px}
.fx-slot.land{animation:fxLand .32s cubic-bezier(.2,1.8,.4,1)}
@keyframes fxLand{0%{transform:scale(1.08) translateY(-6px);filter:brightness(2.4)}60%{transform:scale(.97) translateY(2px)}}
.fx-slot.lit{box-shadow:inset 0 0 0 3px var(--tc),0 0 26px color-mix(in srgb,var(--tc) 55%,transparent);animation:fxFlipX .45s cubic-bezier(.2,1.5,.4,1)}
.fx-slot.lit .fx-tt{opacity:1;animation:fadeUp .3s .15s both}
.fx-slot.lit.t-deep .fx-tt,.fx-slot.lit.t-nova .fx-tt{text-shadow:-1px 0 #ff3d9a,1px 0 #2ef0ff,0 0 10px var(--tc)}
.fx-slot.lit.t-nova{animation:fxFlipX .45s cubic-bezier(.2,1.5,.4,1),novaAura 1.2s ease-in-out .5s infinite}
.fx-slot.lit.t-nova .fx-tt{animation:novaHue 1.4s linear infinite}
@keyframes fxFlipX{0%{transform:perspective(600px) rotateX(85deg);filter:brightness(2.5)}100%{transform:none}}
.fx-port{position:absolute;top:50%;width:8px;height:28px;margin-top:-14px;background:var(--tc);box-shadow:0 0 8px var(--tc)}
.s-m .fx-port{right:-8px}.s-p .fx-port{left:-8px}
.fx-seam{position:relative;display:flex;align-items:center;justify-content:center}
.fx-seam b{font-weight:700;font-size:40px;color:#fff;text-shadow:-2px 0 var(--ff-b),2px 0 var(--ff-a);transition:opacity .2s,transform .3s}
.fx-pick.docking .s-m{transform:translateX(28px)}.fx-pick.docking .s-p{transform:translateX(-28px)}
.fx-pick.docking .fx-seam b{opacity:0;transform:scale(.3)}
.fx-pick.clamp .fx-seam::after{content:'';position:absolute;left:50%;top:-14px;bottom:-14px;width:14px;margin-left:-7px;background:#fff;box-shadow:0 0 24px #fff,0 0 60px var(--ff-gold);animation:seamFlash .7s ease-out both}
@keyframes seamFlash{0%{opacity:1;transform:scaleY(1.4)}100%{opacity:0;transform:scaleY(1)}}
.fx-pick.clamp .fx-slots{animation:clampJolt .3s steps(3)}
@keyframes clampJolt{33%{transform:translateY(5px)}66%{transform:translateY(-2px)}}
.fx-pick.bt .fx-slots{animation:btGlow 1s ease-in-out 2}@keyframes btGlow{50%{filter:drop-shadow(0 0 16px #c07cff) brightness(1.3)}}

/* hand of cards */
.fx-hand{display:flex;flex-direction:column;gap:12px}
.fx-hl{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.fx-ht{font-weight:700;font-size:24px;letter-spacing:4px;text-transform:uppercase;color:#fff;text-shadow:0 0 12px rgba(0,0,0,.8)}
.fx-hint{font-size:16px;color:var(--ink-2);background:rgba(6,14,40,.75);padding:0 8px}
.fx-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;perspective:900px}
.fx-card{--kc:var(--ff-a);position:relative;height:168px;padding:0;border:0;background:none;cursor:pointer;font-family:var(--px);color:var(--ink);text-align:left;animation:fxDeal .5s cubic-bezier(.2,1.1,.4,1) calc(var(--d) * 90ms) both;transition:transform .15s}
.k-p .fx-card{--kc:var(--ff-b)}
@keyframes fxDeal{0%{opacity:0;transform:translate(calc((1.5 - var(--d)) * 140px),300px) rotate(calc((var(--d) - 1.5) * -10deg)) scale(.7)}60%{opacity:1}100%{transform:none}}
.fx-in{position:absolute;inset:0;transform-style:preserve-3d;animation:fxFlip .42s cubic-bezier(.3,1.4,.5,1) calc(var(--d) * 90ms + 300ms) both}
@keyframes fxFlip{0%{transform:rotateY(180deg)}100%{transform:rotateY(0)}}
.fx-face,.fx-back{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.fx-face{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:14px 12px;background:linear-gradient(var(--bp-line) 1px,transparent 1px) 0 0/8px 8px,linear-gradient(90deg,var(--bp-line) 1px,transparent 1px) 0 0/8px 8px,linear-gradient(160deg,rgba(14,34,84,.97),rgba(6,14,44,.97));box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--kc) 70%,transparent),inset 0 -6px 0 rgba(0,0,0,.35);overflow:hidden}
.fx-face::before{content:'';position:absolute;left:0;top:0;width:24px;height:6px;background:var(--kc)}
.fx-back{transform:rotateY(180deg);display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(45deg,rgba(95,243,255,.12) 0 6px,transparent 6px 12px),#0a1a44;box-shadow:inset 0 0 0 3px var(--kc)}
.fx-back i{font-style:normal;font-weight:700;font-size:48px;color:var(--kc);text-shadow:0 0 14px var(--kc)}
.fx-cn{font-weight:700;font-size:24px;line-height:32px;color:#fff;hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
.fx-cs{font-size:16px;line-height:24px;color:var(--ink-2)}
.fx-card:hover:not([disabled]){transform:translateY(-8px)}
.fx-card:hover:not([disabled]) .fx-face{box-shadow:inset 0 0 0 3px var(--kc),0 0 24px color-mix(in srgb,var(--kc) 55%,transparent)}
.fx-card:active:not([disabled]){transform:translateY(-2px) scale(.97)}
.fx-card.shim .fx-face::after{content:'';position:absolute;top:-20%;bottom:-20%;width:34%;left:-50%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.16),transparent);animation:shimmer 2.6s ease-in-out calc(var(--d) * 300ms + 900ms) infinite}
@keyframes shimmer{0%{left:-50%}45%,100%{left:130%}}
.fx-hand.taken .fx-card:not(.chosen){animation:fxDrop .45s cubic-bezier(.5,0,.8,.4) forwards}
@keyframes fxDrop{to{opacity:0;transform:translateY(60px) rotate(calc((var(--d) - 1.5) * 8deg)) scale(.85)}}
.fx-hand.taken .fx-own{opacity:0;transition:opacity .2s}
.fx-ghost,.fx-ghost *{animation:none!important;transition:none!important}
.fx-ghost .fx-face{box-shadow:inset 0 0 0 3px var(--kc,#5ff3ff),0 0 40px color-mix(in srgb,var(--kc,#5ff3ff) 70%,transparent)}
.fx-pick.auto .fx-hl::after{content:'AUTOPILOT';font-weight:700;font-size:16px;letter-spacing:4px;color:#ff8a3c;animation:blink .4s steps(2) infinite}
.fx-own{display:flex;flex-direction:column;align-items:center;gap:8px}
.fx-ownb{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:6px 16px;font-family:var(--px);font-size:16px;color:var(--ink-2);background:rgba(6,14,40,.8);border:2px dashed #3a4a8a;cursor:pointer}
.fx-ownb:hover{color:#fff;border-color:var(--ff-a)}
.fx-ownbox{position:relative;width:min(520px,100%)}
.fx-ownrow{display:flex;gap:8px}.fx-oin{font-size:16px;padding:8px 12px;border-width:3px;min-height:48px}.fx-oback{flex:none;padding:8px 12px}
.fx-olist{position:absolute;left:0;right:0;bottom:100%;margin:0 0 4px;padding:4px;list-style:none;z-index:8;background:#06102e;box-shadow:0 0 0 2px var(--ff-a),0 -12px 32px rgba(0,0,0,.6)}
.fx-olist li{min-height:44px;display:flex;align-items:center;padding:6px 10px;font-size:16px;cursor:pointer;color:var(--ink-2)}
.fx-olist li.on{background:#123060;color:#fff}
.fx-omsg{font-size:16px;color:#ff8fc8;text-align:center}

/* reveal: radar + stamp + tally */
.fx-reveal{display:flex;flex-direction:column;align-items:center;gap:12px}
.fx-radar{width:min(760px,100%);min-height:128px;display:grid;grid-template-columns:120px 1fr;grid-template-rows:auto 1fr;column-gap:24px;row-gap:8px;align-items:center;padding:16px 24px;animation:ffIn .35s cubic-bezier(.2,1.4,.4,1) both}
.fx-scope{grid-row:1/3;position:relative;width:104px;height:104px;border-radius:50%;background:radial-gradient(circle,#0b2a40 0,#04121e 70%);box-shadow:inset 0 0 0 2px #2ee6a8,0 0 18px rgba(46,230,168,.35);overflow:hidden}
.fx-ring1,.fx-ring2{position:absolute;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(46,230,168,.4)}
.fx-ring1{inset:18px}.fx-ring2{inset:36px}
.fx-scope::before,.fx-scope::after{content:'';position:absolute;background:rgba(46,230,168,.3)}
.fx-scope::before{left:50%;top:0;bottom:0;width:1px}.fx-scope::after{top:50%;left:0;right:0;height:1px}
.fx-sweep{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,rgba(46,230,168,.75),rgba(46,230,168,0) 70deg,transparent 360deg);animation:sweep .9s linear infinite}
@keyframes sweep{to{transform:rotate(360deg)}}
.fx-blip{position:absolute;width:8px;height:8px;margin:-4px 0 0 -4px;background:#ff5f7a;box-shadow:0 0 10px #ff5f7a;opacity:0;animation:blipIn .4s steps(2) both}
@keyframes blipIn{from{opacity:0;transform:scale(2.5)}to{opacity:1}}
.fx-radar.done .fx-sweep{animation-play-state:paused;opacity:.25}
.fx-radar.r-un .fx-scope{box-shadow:inset 0 0 0 2px var(--ff-gold),0 0 26px rgba(255,211,77,.6)}
.fx-radar.r-sc .fx-scope{box-shadow:inset 0 0 0 2px #ff5f7a,0 0 26px rgba(255,95,122,.6)}
.fx-rtx{display:flex;flex-direction:column}
.fx-rt{font-weight:700;font-size:24px;letter-spacing:4px;color:#c8ffe8}
.fx-dots{display:inline-block;animation:blink .4s steps(2) infinite}
.fx-radar.done .fx-rt{color:var(--ink-2);font-size:16px;letter-spacing:2px}.fx-rt small{font-size:16px;font-weight:400;letter-spacing:0;color:var(--ink-3)}
.fx-stamp{min-height:0;padding:4px 0 2px 8px}
.fx-stamp b,.fx-stamp span{display:none}
.fx-stamp.on b{display:inline-block;font-weight:700;font-size:48px;line-height:56px;letter-spacing:4px;padding:2px 16px;border:6px double currentColor;white-space:nowrap;animation:stampSlam .42s cubic-bezier(.5,0,.6,1.4) both}
.fx-stamp.on span{display:block;font-size:16px;color:var(--ink-2);animation:fadeUp .3s .35s both}
@keyframes stampSlam{0%{opacity:0;transform:scale(3) rotate(-16deg)}70%{opacity:1;transform:scale(.9) rotate(-4deg)}100%{opacity:1;transform:scale(1) rotate(-4deg)}}
.fx-stamp.un b{color:var(--ff-gold);background:rgba(60,40,0,.5);text-shadow:0 0 18px rgba(255,211,77,.8);box-shadow:0 0 30px rgba(255,211,77,.45)}
.fx-stamp.sc b{color:#ff5f7a;background:rgba(60,0,16,.55);text-shadow:0 0 12px rgba(255,95,122,.7)}
.fx-stamp.rp b{color:#aeb6cc;font-size:32px;line-height:40px;border-width:4px}
.fx-radar.wobble .fx-stamp b{animation:stampSlam .42s cubic-bezier(.5,0,.6,1.4) both,wob .5s ease-in-out .45s 3}
@keyframes wob{0%,100%{transform:rotate(-4deg)}25%{transform:rotate(-9deg) translateX(-4px)}75%{transform:rotate(2deg) translateX(4px)}}
.fx-radar.jackpot{animation:ffIn .35s both,novaAura 1.2s ease-in-out infinite}
.fx-radar.jackpot .fx-stamp b{animation:stampSlam .42s cubic-bezier(.5,0,.6,1.4) both,novaHue 1.2s linear .5s infinite}
.fx-tally{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 10px;min-height:48px}
.fx-chip{display:inline-flex;align-items:baseline;gap:8px;font-size:16px;padding:6px 12px;color:var(--ink-2);background:rgba(6,12,36,.92);box-shadow:inset 0 0 0 2px var(--tc);animation:chipPop .4s cubic-bezier(.2,1.8,.4,1) both}
.fx-chip b{font-weight:700;font-size:24px;color:var(--tc)}
.fx-chip.big{color:#fff;font-weight:700;letter-spacing:2px;box-shadow:inset 0 0 0 3px var(--tc),0 0 18px color-mix(in srgb,var(--tc) 60%,transparent)}
.fx-chip.gold{background:rgba(60,40,0,.8)}
@keyframes chipPop{0%{opacity:0;transform:translateY(16px) scale(.6)}100%{opacity:1;transform:none}}
.fx-tot{display:inline-flex;align-items:baseline;gap:10px;margin-left:8px;padding-left:16px;border-left:2px solid #2a3a70}
.fx-tot b{font-weight:700;font-size:40px;line-height:48px;color:var(--pink);text-shadow:-2px 0 rgba(255,61,154,.6),2px 0 rgba(46,240,255,.6),0 0 18px rgba(255,95,180,.7);min-width:128px;text-align:left}
.fx-tot.pop b{animation:bump .4s cubic-bezier(.2,1.8,.4,1)}
.ffp-rank{font-size:16px;color:var(--cyan)}

/* why it works (optional) */
.fx-why{position:relative;width:min(760px,100%);display:flex;flex-direction:column;gap:6px;padding:10px 20px 14px;animation:ffIn .35s cubic-bezier(.2,1.4,.4,1) both;transition:opacity .3s,transform .3s}
.fx-why.closed{opacity:0;transform:translateY(-8px);pointer-events:none}
.fx-wl{display:flex;justify-content:space-between;align-items:baseline}
.fx-wb{font-size:24px;color:#2ee6a8;text-shadow:0 0 10px rgba(46,230,168,.6)}
.fx-wshell{font-size:16px;line-height:24px;color:var(--ink-2)}
.fx-wrow{display:flex;gap:8px}
.fx-win{font-size:16px;padding:8px 12px;border-width:3px;min-height:48px;border-color:#2ee6a8}
.fx-wgo{flex:none;border-color:#2ee6a8}.fx-wskip{flex:none}
.fx-wbar{position:absolute;left:0;bottom:0;height:4px;width:100%;background:#2ee6a8;transform-origin:left;animation:wbar var(--s) linear both}
.fx-why.typing .fx-wbar{display:none}
@keyframes wbar{to{transform:scaleX(0)}}

/* poster + review deck + phone waits */
.fx-poster{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:32px 32px 28px;margin-top:2vh;box-shadow:inset 0 0 0 3px var(--tc),0 0 40px color-mix(in srgb,var(--tc) 40%,transparent),inset 0 0 40px rgba(20,80,160,.35)}
.fx-pc{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:4px 16px;font-weight:700;font-size:40px;line-height:48px}
.fx-pc .c{color:var(--ff-a)}.fx-pc .p{color:var(--ff-b)}.fx-pc i{font-style:normal;color:#fff}
.fx-pmeta{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px}
.fx-ptier{display:flex}
.ff-chip{display:inline-block;font-size:16px;line-height:24px;padding:2px 10px;color:var(--tc);background:rgba(4,10,30,.8);box-shadow:inset 0 0 0 2px var(--tc);white-space:nowrap}
.fx-pst{font-weight:700;font-size:24px;letter-spacing:3px;padding:0 10px;border:4px double currentColor;transform:rotate(-4deg)}
.fx-pst.un{color:var(--ff-gold)}.fx-pst.sc{color:#ff5f7a}.fx-pst.rp{color:#aeb6cc}
.fx-ppts{font-size:32px;color:var(--pink)}
.fx-pwhy{font-size:16px;line-height:24px;color:var(--ink-2);max-width:680px}
.fx-ptot{display:flex;align-items:baseline;gap:12px}.fx-ptot b{font-size:48px;line-height:56px;color:var(--ff-gold);text-shadow:0 0 18px rgba(255,211,77,.7)}
.fx-pbtns{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.fx-deck{display:flex;flex-direction:column;gap:12px;width:min(640px,100%);margin:0 auto}
.fx-dtop{display:flex;justify-content:space-between}
.fx-dcard{--lean:0;cursor:grab;touch-action:pan-y;user-select:none;animation:ffIn .4s cubic-bezier(.2,1.4,.4,1) both;transition:transform .25s}
.fx-dcard.drag{transition:none;cursor:grabbing}
.fx-dcard::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(255,95,122,calc(max(0,var(--lean) * -1) * .35)),transparent 40%,transparent 60%,rgba(46,230,168,calc(max(0,var(--lean)) * .35)))}
.fx-dcard.outR{animation:outR .34s ease-in forwards}.fx-dcard.outL{animation:outL .34s ease-in forwards}
@keyframes outR{to{transform:translateX(120vw) rotate(20deg)}}@keyframes outL{to{transform:translateX(-120vw) rotate(-20deg)}}
.fx-dbtns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fx-dbtns .btn{min-height:56px;font-size:24px}
.fx-rj{border-color:#ff5f7a;box-shadow:0 0 14px rgba(255,95,122,.35)}.fx-fd{border-color:#2ee6a8;box-shadow:0 0 14px rgba(46,230,168,.35)}
.fx-sent{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:20px}
.fx-sent b{font-size:24px;letter-spacing:3px;color:#fff;animation:blink 1s steps(2) infinite}

/* ---------- phones ---------- */
.fx-pick.compact .ff-q,.fx-pick.compact .fx-cn,.fx-pick.compact .fx-sn{font-size:16px;line-height:24px}
@media (max-width:700px){
  .g-forge .stage.ff-stage{top:156px;width:94vw;max-height:calc(100vh - 160px);padding:2px 2px 16px}
  .bp{padding:12px 14px}.bp::before,.bp::after{width:8px;height:8px}
  .ff-logo{font-size:32px;line-height:40px;letter-spacing:2px}.ff-logo.big{font-size:40px;line-height:48px}
  .fx-intro{padding:28px 16px 24px}.fx-one{font-size:24px;line-height:32px}.fx-intro .ff-start{min-width:0;width:100%}
  .ff-it{font-size:32px;line-height:40px;letter-spacing:3px}.fx-tx.grand .ff-it{font-size:32px;line-height:40px}.fx-x2{font-size:48px;line-height:56px}
  .ff-theme b{width:32px;height:32px;font-size:24px}.ff-theme.big b{width:48px;height:48px;font-size:40px}.ff-theme span{font-size:16px;letter-spacing:1px}
  .ff-rl,.fx-ml{display:none}.ff-ring{width:48px;height:48px}
  .ff-calltop{gap:8px}.ff-theme{flex:1;min-width:0}.ff-theme span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .fx-tt,.fx-sn{overflow-wrap:anywhere}.fx-tt{font-weight:400}
  .fx-meter{margin-left:auto}.fx-meter i{width:12px;height:12px}
  .ff-call{padding:10px 14px}.ff-q{font-size:16px;line-height:24px;margin-top:6px}
  .fx-grand{margin:-10px -14px 8px;padding:2px 8px;letter-spacing:3px}
  .fx-pick{gap:10px}
  .fx-pick.docking .ff-q{display:none}
  .fx-slots{grid-template-columns:1fr 16px 1fr}
  .fx-slot{min-height:76px;padding:6px 6px 8px;outline-offset:-5px}
  .fx-sl{font-size:16px;letter-spacing:2px;gap:6px}.fx-sl b{width:20px;height:20px}
  .fx-sv{gap:6px;min-height:40px}.fx-sn{font-size:16px;line-height:20px}.fx-tt{letter-spacing:0;display:flex;flex-wrap:wrap;column-gap:6px}.fx-tt i{margin-left:0}.fx-ti{display:none}
  .fx-q{font-size:24px}.fx-seam b{font-size:24px}
  .fx-pick.docking .s-m{transform:translateX(8px)}.fx-pick.docking .s-p{transform:translateX(-8px)}
  .fx-ht{font-size:16px;letter-spacing:3px}.fx-hint{display:none}
  .fx-cards{grid-template-columns:1fr 1fr;gap:8px}
  .fx-card{height:112px}
  @keyframes fxDeal{0%{opacity:0;transform:translate(calc((.5 - var(--c)) * 90px),340px) rotate(calc((var(--d) - 1.5) * -10deg)) scale(.7)}60%{opacity:1}100%{transform:none}}
  .fx-face{padding:10px 6px 10px 8px;gap:4px}.fx-cn{font-size:16px;line-height:24px}.fx-cs{font-size:16px;line-height:20px}
  .fx-back i{font-size:32px}
  .fx-radar{grid-template-columns:64px 1fr;column-gap:12px;padding:10px 12px;min-height:0}.fx-scope{width:64px;height:64px}.fx-ring1{inset:10px}.fx-ring2{inset:22px}
  .fx-rt{font-size:16px;letter-spacing:2px}
  .fx-stamp{padding:2px 0 0 0}.fx-stamp.on b{font-size:24px;line-height:32px;padding:0 8px;border-width:4px;letter-spacing:2px}.fx-rt small{display:none}.fx-stamp.on span{display:none}.fx-stamp.rp b{font-size:24px;line-height:32px}
  .fx-chip{padding:4px 8px}.fx-chip b{font-size:16px}.fx-tot b{font-size:32px;line-height:40px;min-width:72px}.fx-tot{margin-left:0;padding-left:10px}
  .fx-why{padding:10px 12px 14px}.fx-wrow{flex-wrap:wrap}.fx-win{flex:1 1 100%}.fx-wgo,.fx-wskip{flex:1}
  .fx-poster{padding:20px 14px}.fx-pc{font-size:24px;line-height:32px}.fx-ptot b{font-size:40px;line-height:48px}.fx-pbtns{flex-direction:column;width:100%}.fx-pbtns .btn{width:100%;font-size:16px;padding:14px 12px}
  .ff-paper{padding:14px}.ff-paper::before{left:20px}.ff-pid,.ff-pcall,.ff-paper .ff-pcombo,.ff-phyp,.ff-ptiers{padding-left:16px}.ff-pcombo{font-size:16px;line-height:24px}
  .ff-pstamp{right:8px;top:auto;bottom:12px}.ff-pstamp b{font-size:24px;line-height:32px;border-width:4px}
  .ff-pstamp.on{animation-name:pStampM}@keyframes pStampM{0%{opacity:0;transform:scale(2.4) rotate(-20deg)}100%{opacity:.92;transform:scale(1) rotate(-12deg)}}
  .fx-dbtns .btn{font-size:16px}.ff-r2{padding:8px 12px;gap:12px}.ff-r2f svg{width:32px;height:32px}
  .ff-et{font-size:24px;line-height:32px}
  .ffh-board li{grid-template-columns:32px 1fr 64px;font-size:16px}.ffh-board .bar{display:none}
}

/* review deck stamp sits bottom-right so the combo stays readable */
.fx-dcard .ff-pstamp{top:auto;bottom:10px;right:14px}
.fx-dcard .ff-pstamp b{font-size:32px;line-height:40px;border-width:5px}
.fx-dcard .ff-pstamp.on{animation-name:pStampM}
@keyframes pStampM{0%{opacity:0;transform:scale(2.4) rotate(-20deg)}100%{opacity:.92;transform:scale(1) rotate(-10deg)}}
.fx-dcard .ff-pcombo{font-size:32px;line-height:40px}
.fx-dcard{padding:24px 28px 56px}
@media (max-width:700px){.fx-dtop .label{letter-spacing:2px}.fx-dtop .label:last-child{display:none}.fx-dbtns .btn{letter-spacing:2px;padding:8px}.fx-pbtns .btn{letter-spacing:2px}.fx-dcard .ff-pcombo{font-size:24px;line-height:32px}.fx-dcard{padding:16px 14px 52px}.fx-dcard .ff-pstamp b{font-size:24px;line-height:32px}}
