:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#252235;background:#f4f2ed;font-synthesis:none;--muted:#807b88;--line:#e7e3df;--purple:#7154df;--lime:#d8f57b}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:10px;transition:background .16s,transform .16s;touch-action:manipulation}button:hover:not(:disabled){transform:translateY(-1px)}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ac91ff;outline-offset:3px}button:disabled{cursor:default;opacity:.45}button,select,input{-webkit-tap-highlight-color:transparent}header{height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw}.brand{text-decoration:none;color:#292137;font-weight:850;font-size:34px;letter-spacing:-2px;display:flex;align-items:center}.brand-mark{font-size:39px;color:var(--purple);margin-right:9px;line-height:1}.brand-dot{color:var(--purple)}.header-right{display:flex;align-items:center;gap:10px;font-size:12px;color:#6c6579}.live-dot{background:#80a763;width:6px;height:6px;border-radius:50%}.pill{border:1px solid #ded8e7;border-radius:6px;padding:6px 8px;font-size:10px;margin-left:10px;letter-spacing:1px}main{max-width:1260px;margin:0 auto;padding:32px 38px 24px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.8px;margin:0 0 10px;color:#8b7ba3}h1{font-size:27px;letter-spacing:-1px;font-weight:650;margin:0}h1 span{color:#8e8794;font-weight:400}.mode-tabs{display:flex;border:1px solid var(--line);padding:4px;gap:3px;border-radius:11px;background:#eeebe6}.mode-tabs button{background:transparent;color:#7a7382;padding:9px 18px;font-size:12px}.mode-tabs .active{background:#fff;color:#34283f;box-shadow:0 2px 5px #3520430a}.workspace{display:grid;grid-template-columns:minmax(400px,1.2fr) minmax(320px,1fr);gap:28px;align-items:start}.game-panel{background:#282036;color:#fff;border-radius:24px;padding:24px 24px 16px;box-shadow:0 18px 45px #30203817}.board-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.mode-label{display:block;color:#b8a9d1;font-size:9px;font-weight:750;letter-spacing:1.7px;margin-bottom:6px}.board-top strong{font-size:15px;font-weight:550;letter-spacing:-.3px}.bank{text-align:right;display:grid;grid-template-columns:auto auto;align-items:center;gap:5px 8px}.bank>span{grid-column:1 / 3;color:#b6a5c9;font-size:8px;letter-spacing:1.4px}.bank small{font-size:10px;color:#b9aad1}.bank #bank-dots{display:flex;gap:4px}.charge{height:9px;width:15px;border-radius:3px;background:#53435f}.charge.filled{background:#e7cbff;box-shadow:0 0 10px #d09fff50}.board-wrap{position:relative;isolation:isolate}.board-glow{position:absolute;inset:20%;background:#7752bc;border-radius:50%;filter:blur(60px);opacity:.18;z-index:-1}.grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;background:#211a2d;border-radius:14px;padding:10px;min-height:340px}.cell{padding:0;aspect-ratio:1.04;min-width:0;position:relative;display:flex;align-items:center;justify-content:center;background:#342b42;border:1px solid #44344f;border-radius:9px;color:#fff;overflow:hidden;transition:background .15s,box-shadow .15s}.cell:hover:not(:disabled){transform:none}.symbol{width:70%;height:70%;filter:drop-shadow(0 3px 1px #0003);transition:opacity .12s}.cell.empty .symbol{opacity:0}.cell.changed .symbol{animation:land .18s ease-out}.cell.winner{background:#75602b;box-shadow:inset 0 0 0 2px #ecda75,0 0 14px #ebc74b25}.cell.winner .symbol{animation:bounce .5s ease-in-out infinite alternate}.cell.boosted{background:#4b365f;border-color:#705089}.square-label{position:absolute;right:3px;top:2px;font-size:9px;font-weight:800;color:#ecd4ff;background:#3a2449c9;padding:2px 3px;border-radius:4px;line-height:1}.cell.winner .square-label{color:#ffefa2;background:#584521}.welcome{position:absolute;inset:0;background:#241b32d9;backdrop-filter:blur(3px);border-radius:14px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.welcome>span{font-size:57px;color:#d9f48a}.welcome h2{font-size:24px;letter-spacing:-.8px;margin:14px 0 5px}.welcome p{font-size:13px;line-height:1.7;color:#c0b0d1}.welcome button{background:#d9f48a;color:#302d25;padding:14px 24px;font-size:13px;font-weight:750;margin-top:10px}.welcome button span{margin-left:20px}.board-bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:13px 0 18px;color:#c0b0d1;font-size:10px;min-height:20px}#event-description{max-width:86%}#event-count{white-space:nowrap;color:#8b779d;font-size:9px}.win-strip{border-top:1px solid #49384f;display:flex;justify-content:space-between;align-items:center;padding:17px 4px 18px}.win-strip small{display:block;font-size:8px;letter-spacing:1.1px;color:#aa97bb;margin-bottom:5px}.win-strip strong{font-size:20px;font-weight:550;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.win-strip .current-win{text-align:center}.win-strip .current-win strong{font-size:29px;color:#d9f48a}.win-strip .current-win span{font-size:18px;margin-left:2px;color:#a3b872}.play-controls{display:grid;grid-template-columns:1fr 1.65fr 1fr;gap:9px}.spin-button{background:var(--lime);font-weight:800;font-size:16px;color:#30351e;display:flex;justify-content:center;gap:22px;align-items:center;height:52px;border-radius:12px;box-shadow:0 4px 0 #9cab55}.spin-button span{font-size:24px;line-height:1}.secondary{background:#41334f;color:#d1bddf;font-size:10px}.playback-controls{display:flex;gap:7px;align-items:center;margin-top:16px}.playback-controls button{background:transparent;color:#b8a3c9;font-size:10px;padding:5px 4px;white-space:nowrap}.playback-controls input{min-width:20px;width:100%;height:3px;accent-color:#d2b3fa}.card{border:1px solid var(--line);border-radius:16px;background:#fcfbf8;padding:21px}.card+.card{margin-top:16px}.section-label{display:flex;justify-content:space-between;gap:8px;font-size:8px;letter-spacing:1px;font-weight:750;color:#a19aa9}.section-label>span:last-child:not(:first-child){font-size:9px;font-weight:400;letter-spacing:0;color:#8e8796}.card h2{font-size:19px;letter-spacing:-.65px;font-weight:600;margin:12px 0 17px}.pair{width:100%;display:flex;align-items:center;text-align:left;background:transparent;border:1px solid #e9e4eb;padding:10px 12px;gap:13px;margin:8px 0;border-radius:11px;color:#322a3b}.pair.selected{border-color:#b4a0d6;background:#f2ecfa;box-shadow:0 0 0 1px #c6b6df55}.pair-art{display:flex;align-items:center;width:60px;flex-shrink:0}.pair-art svg{width:33px;height:33px;filter:drop-shadow(0 2px 0 #0001)}.pair-art svg+svg{margin-left:-5px}.pair-copy{flex:1}.pair-copy strong{font-size:12px;font-weight:650;display:block}.pair-copy small{font-size:10px;color:#938899;display:block;margin-top:3px}.radio{width:15px;height:15px;border:1px solid #cfc5d9;border-radius:50%;display:grid;place-items:center;font-size:10px;color:transparent}.selected .radio{background:var(--purple);border-color:var(--purple);color:white}.hint{font-size:10px;line-height:1.6;color:#9a919f;margin:13px 0 0}.buy-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.buy-grid button{background:#f0edeb;text-align:left;padding:13px 12px;border:1px solid transparent;color:#4a4053}.buy-grid button:hover{border-color:#b9a1d3}.buy-grid button span{display:block;font-size:10px;color:#938399;margin-bottom:9px}.buy-grid button strong{display:flex;justify-content:space-between;font-weight:600;font-size:15px}.buy-grid button b{font-weight:400;color:#a290b2}.session-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:18px 0 0}.session-stats strong{display:block;font-size:21px;letter-spacing:-.6px;font-weight:550;font-variant-numeric:tabular-nums}.session-stats small{display:block;font-size:9px;color:#9b91a2;margin-top:5px}.section-label button{background:transparent;color:#897394;font-size:9px;padding:0}details{margin-top:15px;border-top:1px solid var(--line);padding-top:12px}summary{font-size:10px;color:#8f819d;cursor:pointer}.settings{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}label{font-size:10px;color:#84718b;display:flex;flex-direction:column;gap:6px}input,select{padding:8px;border:1px solid #e0d7e7;border-radius:6px;background:#fff;color:#4a3a58;min-width:0}.settings button{grid-column:1/3;background:#e8dff1;color:#654c78;padding:10px;font-size:11px}.wide-button{background:var(--purple);color:white;padding:12px 16px;font-size:12px;font-weight:650}#bonus-prompt{background:#eee6fa;border-radius:10px;padding:12px;margin-top:10px}#bonus-prompt p{font-size:12px;line-height:1.5;margin:0 0 10px}#bonus-prompt button{width:100%}#quest-panel{display:flex;flex-wrap:wrap;gap:8px}.quest{flex:1;min-width:90px;font-size:10px;background:#f0e9f5;padding:9px;border-radius:8px}.quest strong{display:block;font-size:11px}.quest progress{width:100%;height:5px;accent-color:var(--purple);display:block;margin:7px 0 4px}.quest.unlocked{background:#e8edd9;color:#617733}.error{background:#f8dfe5;color:#992d49;border:1px solid #e4a7b7;padding:13px 16px;font-size:13px;border-radius:10px;margin-bottom:15px}.scenario-panel{margin-top:24px}.scenario-panel h2{margin-bottom:8px}.scenario-panel p:not(.eyebrow){font-size:12px;color:#9a8b9d}.palette{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.palette button{width:44px;height:44px;background:#e6dde9;padding:5px;border:2px solid transparent}.palette button.selected{border-color:var(--purple)}.palette svg{width:100%;height:100%}.scenario-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.scenario-controls input{width:110px}.scenario-controls>button:not(.wide-button){padding:10px;background:#e8e0ed;color:#685375;font-size:11px}.inspector{margin-top:24px}.inspector-title{display:flex;justify-content:space-between;align-items:center}.inspector-title button{background:#ece4f3;color:#6d4c82;padding:10px 15px;font-size:12px}.inspect-body{display:grid;grid-template-columns:1fr 1.2fr;gap:20px}.events{max-height:280px;overflow:auto}.event-row{display:flex;width:100%;text-align:left;gap:10px;background:transparent;color:#72647f;padding:9px;font-size:11px;border-radius:5px}.event-row.active{background:#e8def3;color:#58367a}.event-row small{color:#ab9bb6;width:25px;flex-shrink:0}pre{margin:0;background:#eee9f1;border-radius:10px;padding:14px;color:#725d82;font-size:11px;white-space:pre-wrap;overflow:auto;max-height:280px;line-height:1.7}footer{display:flex;justify-content:space-between;gap:20px;font-size:9px;color:#a298a9;margin-top:26px}dialog{border:1px solid #d9cde4;border-radius:20px;padding:28px;width:390px;max-width:90vw;background:#faf7fd;color:#342840;box-shadow:0 20px 90px #1a002955}dialog::backdrop{background:#21122a66;backdrop-filter:blur(3px)}dialog h2{letter-spacing:-.6px}dialog p{font-size:13px;color:#8e799a;line-height:1.7}.dialog-actions{display:flex;justify-content:space-between;gap:10px;margin-top:24px}.dialog-actions button:first-child{background:#ece5f2;color:#776080;padding:12px;font-size:12px}[hidden]{display:none!important}@keyframes land{from{transform:translateY(-8px);opacity:.5}to{transform:translateY(0);opacity:1}}@keyframes bounce{to{transform:scale(1.09)}}@media(min-width:1400px){main{padding-top:40px}.grid{gap:6px}.cell{aspect-ratio:1.03}}@media(max-width:900px){main{padding:24px}.workspace{gap:18px;grid-template-columns:minmax(340px,1.15fr) minmax(280px,1fr)}.game-panel{padding:18px}.card{padding:16px}h1{font-size:23px}h1 span{display:block}.intro{gap:12px}.mode-tabs button{padding:8px 12px}.header-right .pill{display:none}}@media(max-width:700px){header{height:68px;padding:0 20px}.brand{font-size:30px}.header-right{font-size:10px}main{padding:23px 14px}.intro{align-items:start;flex-direction:column;gap:17px;margin-bottom:18px}h1{font-size:25px}h1 span{display:inline}.workspace{display:flex;flex-direction:column}.game-panel{width:100%;max-width:560px;margin:auto}.grid{min-height:300px;gap:4px;padding:8px}.cell{border-radius:7px}.workspace aside{width:100%;display:grid;grid-template-columns:1fr;gap:14px}.card+.card{margin-top:0}.inspect-body{grid-template-columns:1fr}.inspector{margin-top:18px!important}.scenario-controls label{flex:1}.scenario-controls .wide-button{width:100%}footer{flex-direction:column;gap:8px}.section-label{font-size:9px}.card{padding:20px}.hint{font-size:11px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:360px){.win-strip strong{font-size:16px}.win-strip .current-win strong{font-size:23px}.win-strip small{font-size:7px}.game-panel{padding:15px}.board-top strong{font-size:12px}.grid{min-height:0}.square-label{font-size:8px}.welcome h2{font-size:20px}.welcome p{font-size:11px}.welcome>span{font-size:40px}.welcome button{padding:11px 18px}.header-right{font-size:9px}.live-dot{display:none}h1{font-size:23px}}
.board-top>div:first-child{min-width:0;flex:1;padding-right:12px}.bank{flex-shrink:0}#bank-count{white-space:nowrap}.board-top strong{display:block;line-height:1.35}@media(max-width:450px){.board-top strong{font-size:12px}.bank{gap:5px}.charge{width:11px}.bank>span{font-size:7px}}

/* The board is a real Pixi WebGL canvas; HTML stays in the surrounding controls. */
.grid{display:block;padding:0;min-height:0;overflow:hidden;line-height:0}.grid canvas{display:block;width:100%;height:auto;border-radius:14px;touch-action:pan-y}.board-a11y{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.board-a11y button{width:1px;height:1px;padding:0}.header-right #renderer-status{font-size:11px}.grid{aspect-ratio:528 / 601}#renderer-status{white-space:nowrap}

/* Reels alternative: richer candy-night presentation. */
body{background:radial-gradient(ellipse at 12% 8%,#e8def8 0,transparent 46%),radial-gradient(ellipse at 95% 75%,#f9e3d2 0,transparent 45%),#f7f2fa}
header{background:#faf5ffb8;border-bottom-color:#dfd2eb}.brand-mark{color:#9b68d4}h1{letter-spacing:-1.1px}.eyebrow{color:#9674b4}
.game-panel{background:linear-gradient(145deg,#34204e,#211332 65%,#392041);border:1px solid #a97bba88;box-shadow:0 18px 60px #67366a30,inset 0 1px #e9baff33}
.board-wrap{border:1px solid #bc86d044;border-radius:18px;padding:4px;background:#140d25;box-shadow:0 0 32px #bc65db20}.grid canvas{border-radius:12px}
.card{background:#fffcffb8;border-color:#dfd1e9;box-shadow:0 7px 22px #8a65900b}.pair.selected{background:#f0e3ff;border-color:#bb91d6;box-shadow:0 0 0 2px #cfa5e522}
.spin-button{background:linear-gradient(135deg,#ecffb4,#cde988);box-shadow:0 5px 0 #8eae51,0 8px 24px #c5ef5222}.spin-button:active{transform:translateY(2px)}
.edition-controls{display:flex;align-items:center;justify-content:space-between;margin-top:14px;color:#bfa4cc;font-size:9px;letter-spacing:1px}.edition-controls button{background:#ffffff10;border:1px solid #cda6de33;border-radius:20px;color:#e7d2ef;padding:7px 11px;font-size:10px;letter-spacing:0}
.charge.filled{background:#e8acff;box-shadow:0 0 9px #e0a0faaa}.welcome{background:#251735df;backdrop-filter:blur(6px)}.welcome>span{color:#edd388}.board-bottom{min-height:43px}
@media(max-width:450px){#renderer-status{white-space:normal;font-size:9px!important;max-width:130px}.edition-controls{letter-spacing:.3px}}

/* Focus base play on the board; selection belongs to bonus-entry dialogs. */
.active-lights{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;padding:12px 8px 15px;margin-bottom:12px;background:#160f24;border:1px solid #ffffff13;border-radius:15px}
.colour-light{text-align:center;color:#8f829f;font-size:9px;font-weight:650;letter-spacing:.3px}
.light-lens{display:grid;place-items:center;width:42px;height:42px;max-width:100%;margin:0 auto 7px;border:2px solid #51425d;border-radius:50%;background:#2b2038;box-shadow:inset 0 3px 9px #0008;transition:background .15s,border-color .15s,box-shadow .15s}
.light-lens svg{width:30px;height:30px;opacity:.23;filter:grayscale(1)}
.colour-light.on{color:var(--light)}.on .light-lens{border-color:var(--light);background:color-mix(in srgb,var(--light) 30%,#24182f);box-shadow:0 0 15px color-mix(in srgb,var(--light) 65%,transparent),inset 0 0 8px color-mix(in srgb,var(--light) 40%,transparent)}
.on .light-lens svg{opacity:1;filter:drop-shadow(0 0 4px var(--light))}.revealing .on .light-lens{animation:light-on var(--reveal-time,.65s) ease-out}
@keyframes light-on{0%{transform:scale(.82);filter:brightness(.3)}40%{transform:scale(1.12);filter:brightness(1.65)}100%{transform:scale(1);filter:brightness(1)}}
.bonus-controls{display:flex;gap:10px;margin-top:15px}.bonus-controls button{flex:1;background:#c197e521;border:1px solid #c197e56b;color:#edd8ff;padding:11px;font-size:12px;font-weight:700}
.modal-heading{display:flex;align-items:center;justify-content:space-between}.modal-heading p{margin:0}.modal-heading button{background:#eee5f4;color:#664b79;width:32px;height:32px;font-size:23px}
#bonus-menu,#character-dialog{width:460px}#character-dialog>.wide-button{width:100%;margin-top:14px}#quest-panel{margin-bottom:12px}.quest{color:#59406b}
.workspace{grid-template-columns:minmax(400px,630px) minmax(250px,1fr)}
@media(max-width:800px){.workspace{display:flex;flex-direction:column}.workspace aside{width:100%}.game-panel{width:100%;max-width:630px;margin:auto}}
@media(max-width:400px){.active-lights{gap:4px;padding:10px 5px}.light-lens{width:34px;height:34px}.light-lens svg{width:25px;height:25px}.colour-light{font-size:8px}}
