/*
 * Twinclue overlay. Drawn on a 1920 x 1080 canvas (OBS browser source); one rem is 1/120 of the width, so 16 px at
 * 1920 and 10.7 px at 1280, and the layout is identical at every canvas width. Text minimums at 1920: 14 px
 * (0.875rem) everywhere, 16 px for the call to action and hook.
 *
 * States on .overlay: is-idle, is-active, is-revealed (round finished), is-centered (the 8 second centre-stage
 * reveal), is-won; side-a or side-b; preview when opened directly in a browser.
 */
/* No color-scheme here: a dark scheme makes Chrome paint an opaque backdrop when the overlay is embedded in a light page. */
:root{--a:#2dd4bf;--b:#fb8a7a;--gold:#fde68a;--paper:#f7fafc;--text:#e6eef3;--muted:#b9c7d2;
  --surface-1:rgba(24,38,58,.93);--surface-2:rgba(10,18,30,.95);--chip:rgba(255,255,255,.08);--line:rgba(255,255,255,.12);
  --ease:cubic-bezier(.22,.8,.24,1)}
*{box-sizing:border-box}
html{font-size:calc(100vw / 120)}
html,body{width:100%;height:100%;margin:0;background:transparent;color:var(--paper);font-family:Inter,"SF Pro Display",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overflow:hidden}
.overlay{position:fixed;inset:0;pointer-events:none}
[hidden]{display:none!important}

/* ---------- Preview stage (browser only) ---------- */
.stage{position:fixed;inset:0;overflow:hidden;background:linear-gradient(135deg,#070d18 0%,#121a33 45%,#1b1230 100%)}
.stage::before,.stage::after{content:"";position:absolute;width:70rem;height:70rem;border-radius:50%;filter:blur(4rem);opacity:.55;animation:drift 26s ease-in-out infinite alternate}
.stage::before{left:-18rem;top:-26rem;background:radial-gradient(circle,rgba(45,212,191,.55),transparent 62%)}
.stage::after{right:-20rem;bottom:-30rem;background:radial-gradient(circle,rgba(251,138,122,.5),transparent 62%);animation-delay:-13s}
.stage-glow{position:absolute;inset:0;background:radial-gradient(60rem 30rem at 50% 115%,rgba(167,139,250,.22),transparent 70%),repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 2px,transparent 2px 4px)}
.stage-frame{position:absolute;inset:5.5rem 3rem 3rem;border:2px dashed rgba(255,255,255,.1);border-radius:1.6rem;display:grid;place-items:center}
.stage-frame span{font-size:2.4rem;font-weight:800;letter-spacing:.35em;text-transform:uppercase;color:rgba(255,255,255,.07)}
.preview-banner{position:fixed;top:1.4rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:.75rem;max-width:calc(100vw - 16rem);padding:.55rem .6rem .55rem 1.1rem;border-radius:99rem;
  background:rgba(8,14,24,.78);border:1px solid var(--line);box-shadow:0 .6rem 2rem rgba(0,0,0,.35);backdrop-filter:blur(.8rem);font-size:.9rem;color:var(--text);white-space:nowrap;z-index:8}
.preview-banner>span:nth-child(2){overflow:hidden;text-overflow:ellipsis}
.preview-banner b{padding:.25rem .65rem;border-radius:99rem;font-size:.875rem;letter-spacing:.08em;background:var(--chip);color:#fff}
.preview-banner #preview-side{color:#06231f;background:var(--accent-solid,var(--a))}
.side-b .preview-banner #preview-side{color:#2b0d08;background:var(--b)}
.preview-dot{width:.55rem;height:.55rem;border-radius:50%;background:linear-gradient(135deg,var(--a),var(--b));flex:none}

.demo-tag{position:fixed;top:1.5rem;right:1.75rem;padding:.45rem .95rem;border-radius:99rem;background:#facc15;color:#1b2531;font-weight:900;letter-spacing:.12em;font-size:.95rem;box-shadow:0 .25rem 1rem #0005;z-index:9}

/* ---------- Card ---------- */
.card{--accent:var(--a);--w:40rem;position:absolute;bottom:2.25rem;left:2.25rem;width:var(--w);max-height:calc(100vh - 4.5rem);overflow:hidden;
  padding:1.25rem 1.5rem 1.15rem 1.75rem;border-radius:1.35rem;
  background:linear-gradient(160deg,var(--surface-1),var(--surface-2) 62%) padding-box,linear-gradient(160deg,color-mix(in srgb,var(--accent),transparent 35%),rgba(255,255,255,.08) 45%,rgba(255,255,255,.04)) border-box;
  border:1px solid transparent;box-shadow:0 1.6rem 3.6rem rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.09);backdrop-filter:blur(1rem) saturate(1.2);
  transition:left .7s var(--ease),bottom .7s var(--ease),width .7s var(--ease),transform .7s var(--ease),padding .5s var(--ease);z-index:5}
.card::before{content:"";position:absolute;left:0;top:1.1rem;bottom:1.1rem;width:.3rem;border-radius:0 .3rem .3rem 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent),transparent 60%))}
.card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(26rem 9rem at 12% -10%,color-mix(in srgb,var(--accent),transparent 82%),transparent 70%)}
.card>*{position:relative;z-index:1}
.side-b .card{--accent:var(--b);left:calc(100% - 2.25rem - var(--w));padding:1.25rem 1.75rem 1.15rem 1.5rem}
.side-b .card::before{left:auto;right:0;border-radius:.3rem 0 0 .3rem}
.side-b .card::after{background:radial-gradient(26rem 9rem at 88% -10%,color-mix(in srgb,var(--accent),transparent 82%),transparent 70%)}

/* Idle: a compact pill, not an empty card. */
.is-idle .card{width:auto;left:2.25rem;padding:.55rem .7rem .55rem 1.1rem;border-radius:1.6rem}
.side-b.is-idle .card{left:auto;right:2.25rem;padding:.55rem 1.1rem .55rem .7rem}
.is-idle .card::before{display:none}
.is-idle .status-pill{display:none}
.idle-badge{display:none}
.is-idle .idle-badge{display:flex;align-items:center;gap:.45rem}
.idle-badge span{font-size:.875rem;font-weight:900;letter-spacing:.1em;color:var(--text);padding-right:.2rem}
.idle-badge b{font-size:.875rem;padding:.3rem .7rem;border-radius:99rem;background:var(--chip);color:#fff;white-space:nowrap}
.idle-badge b:last-child{background:color-mix(in srgb,var(--accent),transparent 78%)}

/* ---------- Top row ---------- */
.topline{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;min-width:0}
.brand{display:flex;align-items:center;gap:.6rem;margin-right:auto}
.brand img{width:2rem;height:2rem;filter:drop-shadow(0 .2rem .5rem rgba(0,0,0,.35))}
.wordmark{font-size:1.05rem;font-weight:900;letter-spacing:.24em;color:#fff}
.wordmark em{font-style:normal;background:linear-gradient(90deg,var(--a),var(--b));-webkit-background-clip:text;background-clip:text;color:transparent}
.status-pill{display:flex;align-items:center;gap:.45rem;padding:.32rem .8rem;border-radius:99rem;font-size:.875rem;font-weight:900;letter-spacing:.1em;white-space:nowrap;max-width:100%;overflow:hidden;background:var(--chip);color:var(--text)}
.status-pill span{overflow:hidden;text-overflow:ellipsis}
.status-pill[data-state=active]{background:rgba(239,68,68,.16);color:#fecaca;box-shadow:inset 0 0 0 1px rgba(248,113,113,.4)}
.status-pill[data-state=won]{color:#0b1520;background:linear-gradient(90deg,#5eead4,#fdba9f)}
.status-pill[data-state=timed-out]{color:#fff;background:#8a5a26}
.status-pill[data-state=unscored]{color:#1b2531;background:#fbbf24}
.live-dot{display:none;width:.6rem;height:.6rem;border-radius:50%;background:#ef4444;box-shadow:0 0 0 0 rgba(239,68,68,.7);animation:live 1.6s ease-out infinite;flex:none}
.status-pill[data-state=active] .live-dot{display:block}

/* ---------- Active round ---------- */
.play{padding-top:.85rem}
.clue-head{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem .7rem;font-size:.875rem;font-weight:900;letter-spacing:.12em}
.community{color:var(--accent)}
.category{color:#fff;text-transform:uppercase;padding:.12rem .55rem;border-radius:.45rem;background:var(--chip)}
.category:empty{display:none}
.phase{color:var(--muted);margin-left:auto}
.clue{font-size:2.15rem;line-height:1.15;letter-spacing:-.02em;font-weight:850;margin:.6rem 0 .7rem;text-wrap:pretty;overflow-wrap:anywhere;text-shadow:0 .1rem .8rem rgba(0,0,0,.25)}
.hook{font-size:1rem;line-height:1.35;color:var(--text);margin:0 0 .25rem}
.cta{display:inline-block;font-size:1.05rem;line-height:1.25;font-weight:900;margin:0 0 .8rem;padding:.3rem .7rem;border-radius:.55rem;color:#fff;background:color-mix(in srgb,var(--accent),transparent 80%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent),transparent 55%)}

.hint{display:flex;align-items:baseline;gap:.6rem;margin:-.2rem 0 .75rem;padding:.4rem .7rem;border-radius:.6rem;background:rgba(255,255,255,.05);font-size:.9rem;color:var(--text)}
.hint-label{flex:none;font-size:.875rem;font-weight:900;letter-spacing:.12em;color:var(--muted)}
.hint-text{margin:0;line-height:1.35}
.hint.unlocked{position:relative;overflow:hidden;background:linear-gradient(90deg,rgba(253,230,138,.16),rgba(253,230,138,.06));box-shadow:inset 0 0 0 1px rgba(253,230,138,.45);font-size:1.05rem;font-weight:800;color:#fff;animation:hint-in .7s var(--ease) both}
.hint.unlocked .hint-label{color:var(--gold)}
.hint.unlocked::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translateX(-100%);animation:hint-sweep 1.6s .3s var(--ease) both}
.meters{display:flex;align-items:stretch;gap:.5rem}
.meter{flex:1;min-width:0;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.1rem .55rem;padding:.5rem .65rem;border-radius:.75rem;background:rgba(255,255,255,.05);color:var(--a)}
.meter-b{color:var(--b)}
.side-a .meter-a,.side-b .meter-b{background:color-mix(in srgb,var(--accent),transparent 88%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent),transparent 60%)}
.meter>b{grid-row:1/3;font-size:1.2rem}
.meter>span{font-size:.875rem;color:#fff;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meter small{font-size:.875rem;color:var(--muted);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-mark{flex:none;width:1.8rem;display:grid;place-items:center;opacity:.7}
.link-mark img{width:1.5rem}

.vote-bars{display:flex;flex-direction:column;gap:.35rem;padding:.65rem 0 0}
.vote-bar{display:grid;grid-template-columns:minmax(0,1fr) 34% 2.4rem;align-items:center;gap:.7rem;font-size:.9rem;font-weight:800;color:#fff}
.vote-bar>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vote-bar>i{height:.55rem;border-radius:99rem;background:rgba(255,255,255,.1);overflow:hidden}
.vote-bar>i em{display:block;width:100%;height:100%;transform-origin:left center;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent),white 10%),var(--accent));box-shadow:0 0 .8rem color-mix(in srgb,var(--accent),transparent 50%);transition:transform .6s var(--ease)}
.vote-bar>b{text-align:right;font-variant-numeric:tabular-nums}
.vote-bar-other{color:var(--muted)}
.vote-bar-other>i em{background:#94a3b8;box-shadow:none}

.footer{display:flex;align-items:center;gap:.75rem;margin-top:.65rem}
.ticker{flex:1;display:flex;gap:.4rem;list-style:none;padding:0;margin:0;min-width:0;overflow:hidden}
.ticker li{display:flex;gap:.3rem;flex:0 1 auto;max-width:50%;min-width:0;padding:.28rem .6rem;border-radius:99rem;background:rgba(255,255,255,.11);color:#fff;font-size:.875rem;font-weight:650;animation:tick-in .5s var(--ease) both}
.ticker li b,.ticker li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ticker li b{flex:0 0 auto;max-width:70%}
.ticker li span{flex:0 1 auto;min-width:0}
.ticker li b{color:color-mix(in srgb,var(--accent),white 25%)}
.wait-message{margin:.45rem 0 0;color:var(--text);font-size:.875rem;font-weight:800}
.timer-wrap{position:relative;width:3.2rem;height:3.2rem;flex:none;display:grid;place-items:center;font-size:1.2rem;font-weight:900;font-variant-numeric:tabular-nums;color:#fff}
.timer-wrap svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.timer-track{fill:none;stroke:rgba(255,255,255,.12);stroke-width:4}
.timer-ring{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-dasharray:131.95;stroke-dashoffset:0;transition:stroke-dashoffset .25s linear,stroke .3s ease}
.timer-wrap .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.card.urgent .timer-ring{stroke:#fbbf24}
.card.urgent .timer-wrap{color:#fde68a;animation:urgent .8s ease-in-out infinite alternate}

/* ---------- Reveal ---------- */
.reveal{padding-top:.9rem;animation:appear .5s var(--ease) both}
.reveal-head{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .8rem;min-height:0}
.kicker{font-size:.95rem;font-weight:900;letter-spacing:.18em;color:var(--text)}
.kicker:empty{display:none}
.is-won .kicker{background:linear-gradient(90deg,var(--a),var(--gold),var(--b));-webkit-background-clip:text;background-clip:text;color:transparent}
.verdict{margin:0;padding:.42rem .95rem;border-radius:99rem;font-size:1rem;font-weight:900;line-height:1.3;background:#fbbf24;color:#1b2531;box-shadow:0 .4rem 1.2rem rgba(251,191,36,.25)}
.answer-line{display:flex;flex-direction:column;gap:.1rem;margin-top:.5rem}
.answer-line span{font-size:.875rem;letter-spacing:.2em;font-weight:900;color:var(--muted)}
.answer-line h1::first-letter{text-transform:uppercase}
.answer-line h1{font-size:2.4rem;line-height:1.02;letter-spacing:-.02em;margin:0 0 .7rem;overflow-wrap:anywhere}
.is-won .answer-line h1{background:linear-gradient(90deg,#99f6e4,#fff 45%,#fecaca);-webkit-background-clip:text;background-clip:text;color:transparent}
.halves{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:.7rem}
.halves article{border-radius:.85rem;padding:.65rem .85rem;min-width:0}
.halves .half-a{background:linear-gradient(160deg,rgba(45,212,191,.16),rgba(45,212,191,.05));box-shadow:inset 0 0 0 1px rgba(45,212,191,.38)}
.halves .half-b{background:linear-gradient(160deg,rgba(251,138,122,.16),rgba(251,138,122,.05));box-shadow:inset 0 0 0 1px rgba(251,138,122,.38)}
.halves b{font-size:.875rem;letter-spacing:.12em}
.halves .half-a b{color:var(--a)}
.halves .half-b b{color:var(--b)}
.halves p{font-size:1.05rem;line-height:1.35;margin:.3rem 0 0;color:#fff}
.also-fits{margin:0 0 .7rem;padding:.65rem .9rem;border-radius:.85rem;background:rgba(255,255,255,.06);border-left:.3rem solid var(--accent);font-size:1.15rem;line-height:1.35;font-weight:700;color:#fff}
.also-fits strong{color:var(--accent);font-weight:900}
.results{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.result{display:grid;gap:.15rem;padding:.6rem .85rem;border-radius:.85rem;background:rgba(255,255,255,.05);min-width:0}
.result>b{font-size:.875rem;letter-spacing:.12em}
.result-a>b{color:var(--a)}
.result-b>b{color:var(--b)}
.result-answer{display:flex;align-items:center;gap:.5rem;font-size:1.25rem;font-weight:900;color:#fff;min-width:0}
.result-answer .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mark{flex:none;padding:.12rem .5rem;border-radius:.45rem;font-size:.875rem;font-weight:900}
.mark.right{background:#34d399;color:#052016}
.mark.wrong{background:#fca5a5;color:#3b0a0a}
.result small{font-size:.875rem;color:var(--muted);font-weight:700}
.solve-time{font-size:.875rem;margin:.65rem 0 0;color:var(--muted)}

/* After the centre-stage moment the card settles back into its corner with just the result. */
.is-revealed:not(.is-centered) .halves,.is-revealed:not(.is-centered) .also-fits{display:none}

/* ---------- Centre stage ---------- */
.scrim{position:fixed;inset:0;background:radial-gradient(70rem 42rem at 50% 50%,rgba(4,8,15,.62),rgba(4,8,15,.18) 75%,transparent);opacity:0;transition:opacity .6s ease;z-index:4}
.is-centered .scrim{opacity:1}
.is-centered .card,.side-b.is-centered .card{--w:66rem;left:calc(50% - var(--w) / 2);bottom:50%;transform:translateY(50%);padding:2rem 2.4rem 1.8rem;border-radius:1.8rem;max-height:calc(100vh - 7rem);
  background:linear-gradient(160deg,rgba(26,42,64,.95),rgba(10,17,29,.97) 62%) padding-box,linear-gradient(120deg,var(--a),rgba(255,255,255,.18) 50%,var(--b)) border-box;border:2px solid transparent;
  box-shadow:0 2.5rem 6rem rgba(0,0,0,.6),0 0 5rem color-mix(in srgb,var(--accent),transparent 80%)}
.is-centered .card::before{display:none}
.is-centered .card::after{background:radial-gradient(40rem 14rem at 50% -20%,rgba(255,255,255,.08),transparent 70%)}
.is-centered .answer-line{align-items:center;text-align:center}
.is-centered .answer-line h1{font-size:4.4rem;margin-bottom:1rem}
.is-centered .reveal-head{justify-content:center}
.is-centered .halves p{font-size:1.3rem}
.is-centered .also-fits{font-size:1.3rem}
.is-centered .result-answer{font-size:1.5rem}
.is-centered .solve-time{text-align:center}

/* The swap moment: a bold banner on both overlays at the same server time. */
.swap-banner{position:fixed;left:50%;top:7rem;transform:translate(-50%,-1.5rem) scale(.96);opacity:0;visibility:hidden;z-index:7;display:grid;justify-items:center;gap:.15rem;
  padding:1rem 2.4rem 1.05rem;border-radius:1.4rem;text-align:center;background:linear-gradient(100deg,rgba(13,40,44,.96),rgba(22,26,46,.96) 50%,rgba(52,22,26,.96)) padding-box,linear-gradient(90deg,var(--a),var(--gold),var(--b)) border-box;
  border:2px solid transparent;box-shadow:0 1.4rem 3.4rem rgba(0,0,0,.55),0 0 4rem rgba(253,230,138,.18);transition:opacity .35s var(--ease),transform .5s var(--ease),visibility 0s .5s}
.swap-banner span{font-size:.95rem;font-weight:900;letter-spacing:.3em;color:var(--gold)}
.swap-banner strong{font-size:3.4rem;line-height:1;font-weight:900;letter-spacing:.04em;background:linear-gradient(90deg,#99f6e4,#fff 50%,#fecaca);-webkit-background-clip:text;background-clip:text;color:transparent}
.swap-banner small{font-size:1.05rem;font-weight:700;color:var(--text)}
.is-swapping .swap-banner{opacity:1;visibility:visible;transform:translate(-50%,0) scale(1);transition:opacity .35s var(--ease),transform .5s var(--ease),visibility 0s;animation:swap-pulse 1s ease-in-out .5s 3}
@keyframes swap-pulse{50%{box-shadow:0 1.4rem 3.4rem rgba(0,0,0,.55),0 0 6rem rgba(253,230,138,.38)}}

/* A CSS-only confetti burst from behind the centred card on a win. */
.burst{position:fixed;left:50%;top:50%;width:0;height:0;z-index:4;display:none}
.is-won.is-centered .burst{display:block}
.burst i{position:absolute;left:0;top:0;width:calc(.7rem * var(--s));height:calc(1.1rem * var(--s));border-radius:.15rem;background:var(--c);opacity:0;animation:confetti 2.8s cubic-bezier(.16,.8,.3,1) var(--d) infinite}
.burst i:nth-child(3n){border-radius:50%;height:calc(.7rem * var(--s))}
.burst i:nth-child(1){--x:39.4rem;--y:0.8rem;--r:446deg;--d:0.82s;--c:var(--a);--s:0.90}
.burst i:nth-child(2){--x:29.9rem;--y:5.2rem;--r:276deg;--d:0.48s;--c:var(--b);--s:0.72}
.burst i:nth-child(3){--x:30.9rem;--y:10.7rem;--r:529deg;--d:0.12s;--c:#fde68a;--s:0.99}
.burst i:nth-child(4){--x:23.3rem;--y:13.5rem;--r:338deg;--d:0.71s;--c:#ffffff;--s:0.61}
.burst i:nth-child(5){--x:14.9rem;--y:17.7rem;--r:618deg;--d:0.27s;--c:#a78bfa;--s:0.86}
.burst i:nth-child(6){--x:6.4rem;--y:16.4rem;--r:226deg;--d:0.64s;--c:var(--a);--s:0.78}
.burst i:nth-child(7){--x:-2.5rem;--y:22.1rem;--r:495deg;--d:0.05s;--c:var(--b);--s:0.95}
.burst i:nth-child(8){--x:-9.6rem;--y:16.1rem;--r:301deg;--d:0.55s;--c:#fde68a;--s:0.66}
.burst i:nth-child(9){--x:-17.9rem;--y:16.7rem;--r:702deg;--d:0.35s;--c:#ffffff;--s:0.91}
.burst i:nth-child(10){--x:-26.1rem;--y:12.6rem;--r:259deg;--d:0.88s;--c:#a78bfa;--s:0.58}
.burst i:nth-child(11){--x:-33.9rem;--y:8.9rem;--r:587deg;--d:0.19s;--c:var(--a);--s:0.83}
.burst i:nth-child(12){--x:-35.7rem;--y:3.1rem;--r:362deg;--d:0.6s;--c:var(--b);--s:0.97}
.burst i:nth-child(13){--x:-38.6rem;--y:-2.5rem;--r:431deg;--d:0.3s;--c:#fde68a;--s:0.74}
.burst i:nth-child(14){--x:-31.9rem;--y:-8.4rem;--r:205deg;--d:0.77s;--c:#ffffff;--s:0.88}
.burst i:nth-child(15){--x:-27.2rem;--y:-14.1rem;--r:654deg;--d:0.09s;--c:#a78bfa;--s:0.63}
.burst i:nth-child(16){--x:-18.6rem;--y:-17.4rem;--r:317deg;--d:0.5s;--c:var(--a);--s:0.94}
.burst i:nth-child(17){--x:-9.7rem;--y:-21.9rem;--r:540deg;--d:0.23s;--c:var(--b);--s:0.69}
.burst i:nth-child(18){--x:-1.4rem;--y:-17.5rem;--r:248deg;--d:0.67s;--c:#fde68a;--s:0.85}
.burst i:nth-child(19){--x:7.7rem;--y:-21.3rem;--r:476deg;--d:0.41s;--c:#ffffff;--s:0.6}
.burst i:nth-child(20){--x:16.4rem;--y:-16.6rem;--r:689deg;--d:0.14s;--c:#a78bfa;--s:0.98}
.burst i:nth-child(21){--x:24.1rem;--y:-14.6rem;--r:283deg;--d:0.85s;--c:var(--a);--s:0.76}
.burst i:nth-child(22){--x:29.6rem;--y:-9.3rem;--r:612deg;--d:0.37s;--c:var(--b);--s:0.92}
.burst i:nth-child(23){--x:37.3rem;--y:-6.6rem;--r:394deg;--d:0.02s;--c:#fde68a;--s:0.67}
.burst i:nth-child(24){--x:36.2rem;--y:-1.7rem;--r:520deg;--d:0.58s;--c:#ffffff;--s:0.81}

@keyframes confetti{0%{opacity:0;transform:translate(0,0) rotate(0) scale(.4)}8%{opacity:1}70%{opacity:1}100%{opacity:0;transform:translate(var(--x),calc(var(--y) + 9rem)) rotate(var(--r)) scale(1)}}
@keyframes hint-in{0%{opacity:0;transform:scale(.96)}60%{opacity:1;transform:scale(1.02)}100%{transform:none}}
@keyframes hint-sweep{to{transform:translateX(100%)}}
@keyframes live{0%{box-shadow:0 0 0 0 rgba(239,68,68,.7)}100%{box-shadow:0 0 0 .55rem rgba(239,68,68,0)}}
@keyframes drift{from{transform:translate(0,0) scale(1)}to{transform:translate(14rem,8rem) scale(1.15)}}
@keyframes appear{from{opacity:0;transform:translateY(.6rem)}to{opacity:1;transform:none}}
@keyframes tick-in{from{opacity:0;transform:translateY(.3rem)}to{opacity:1;transform:none}}
@keyframes urgent{from{transform:scale(1)}to{transform:scale(1.08)}}
/* Reduced motion: nothing moves. The win confetti becomes a still scatter around the reveal. */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.burst i{opacity:.9;transform:translate(calc(var(--x) * .92),calc(var(--y) * 1.05)) rotate(var(--r))}}
