:root{--bg:#22303B;--panel:#2B3B47;--ink:#EFE8D8;--line:rgba(239,232,216,.14);--paper:#F4EEDF;--paperInk:#27313A;--accent:#E3A94E;--crack:#E4604F;--gold:#E9C46A;--c0:#E3A94E;--c1:#D9707E;--c2:#7FB08A;--c3:#6FA7C7;--c4:#9B7FC0;--c5:#3E8F8A;--paperLine:rgba(39,49,58,.2);--serif:"Young Serif", Georgia, "Iowan Old Style", serif;--sans:"Outfit", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{margin:0;font-family:var(--sans);color:var(--ink);touch-action:manipulation;background:radial-gradient(120% 90% at 50% 12%,#2B3D4B 0%,var(--bg) 55%,#1B2731 100%);overflow:hidden;user-select:none;-webkit-user-select:none}#app{height:100dvh;max-width:560px;margin:0 auto;display:flex;flex-direction:column;touch-action:none;padding:calc(env(safe-area-inset-top) + 8px) 12px calc(env(safe-area-inset-bottom) + 10px)}header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 2px 6px}.brand{font-family:var(--serif);font-size:24px;letter-spacing:.5px;line-height:1}.brand small{font-family:var(--sans);font-size:12px;font-weight:600;color:var(--accent);vertical-align:middle;margin-left:6px}.hbtns{display:flex;gap:6px;align-items:center}.iconbtn{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.iconbtn:active{transform:scale(.94)}.hud{display:flex;align-items:baseline;gap:12px;padding:4px 4px 2px;min-height:40px}.score-b{display:flex;align-items:baseline;gap:7px}#score{font-family:var(--serif);font-size:32px;line-height:1}.score-b label{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.55}#chainPill{font-weight:700;font-size:13px;color:#1f262d;background:var(--accent);border-radius:999px;padding:3px 10px;opacity:0;transform:scale(.8);transition:all .25s ease}#chainPill.show{opacity:1;transform:scale(1)}#chainPill.hot{box-shadow:0 0 14px 2px #e3a94e8c}.hud-right{margin-left:auto;display:flex;gap:12px;font-size:13px;opacity:.85;font-weight:500}.hud-right b{font-weight:700}#score.goldscore{color:var(--gold);text-shadow:0 0 12px rgba(233,196,106,.4)}.hud-right .target{color:var(--accent)}.hud-right .target.met{color:var(--gold);font-weight:700}#boardWrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:4px 0}#board{width:100%;height:100%;max-width:520px;display:block}.cell{fill:#efe8d809;stroke:var(--line);stroke-width:1.2;stroke-dasharray:4 5}.cell.ok{fill:#efe8d812;stroke:#efe8d859;cursor:pointer}.cell.pending{stroke:var(--accent);stroke-width:2;stroke-dasharray:6 4;animation:march 1s linear infinite}@keyframes march{to{stroke-dashoffset:-20}}.tile.pop{animation:pop .3s cubic-bezier(.2,1.4,.4,1);transform-box:fill-box;transform-origin:center}@keyframes pop{0%{transform:scale(.55);opacity:0}to{transform:scale(1);opacity:1}}.fuse{stroke-linecap:round;animation:fusein .35s ease-out}@keyframes fusein{0%{opacity:0}to{opacity:1}}.ghost{pointer-events:none}.floaty{font-family:var(--serif);font-size:19px;paint-order:stroke;stroke:var(--bg);stroke-width:5px;animation:floaty 1s ease-out forwards;pointer-events:none}@keyframes floaty{0%{opacity:0;transform:translateY(6px)}15%{opacity:1}to{opacity:0;transform:translateY(-26px)}}.bubble{font-family:var(--serif);font-size:17px;paint-order:stroke;stroke:var(--bg);stroke-width:5px}.spark{animation:spark .6s ease-out forwards}@keyframes spark{0%{opacity:1;transform:scale(.3)}to{opacity:0;transform:scale(1.6)}}.tray{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:10px;display:flex;align-items:center;gap:10px;box-shadow:0 10px 30px #00000047}.hand{display:flex;gap:10px;flex:1;justify-content:center}.hand-tile{position:relative;width:72px;height:72px;border-radius:14px;border:1.5px solid var(--line);background:#00000024;cursor:pointer;padding:3px;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.hand-tile svg{width:100%;height:100%;display:block}.hand-tile.sel{border-color:var(--accent);transform:translateY(-5px);box-shadow:0 8px 16px #0000004d}.hand-tile.sel:after{content:"⟳";position:absolute;top:-9px;right:-8px;width:20px;height:20px;font-size:12px;background:var(--accent);color:#1f262d;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800}.hand-tile.empty{opacity:.22;pointer-events:none;border-style:dashed}.acts{display:grid;grid-template-columns:repeat(2,44px);gap:7px;justify-content:end}.acts button{position:relative;width:44px;height:36px;border-radius:11px;border:1px solid var(--line);background:#00000024;color:var(--ink);font-size:17px;cursor:pointer}.acts button:disabled{opacity:.3}.acts button:active:not(:disabled){transform:scale(.93)}.acts button.armed{border-color:var(--accent);box-shadow:0 0 10px #e3a94e73}.acts sup{position:absolute;top:-6px;right:-5px;font-size:10px;font-weight:800;background:var(--ink);color:var(--bg);border-radius:8px;padding:1px 5px}.oracle{display:flex;flex-direction:column;align-items:center;gap:1px;flex:0 0 auto;opacity:.8}.oracle .prevs{display:flex;gap:2px}.oracle svg{width:38px;height:38px;display:block}.oracle.deep svg{width:26px;height:26px}.oracle span{font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.7}.hand-tile.pocket{border-style:dashed;border-color:var(--accent)}.hand-tile.pocket.bare .pk{font-size:20px;opacity:.5}#mBack{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c121899;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}#mBack.show{opacity:1;pointer-events:auto}.mcard{background:var(--paper);color:var(--paperInk);width:100%;max-width:420px;max-height:86dvh;overflow:auto;border-radius:16px;padding:22px 22px 18px;box-shadow:0 24px 60px #00000080;transform:rotate(-.4deg)}.mcard h2{font-family:var(--serif);font-weight:400;font-size:26px;margin:0 0 4px}.mcard h3{font-family:var(--serif);font-weight:400;font-size:17px;margin:16px 0 6px}.mcard p{margin:7px 0;font-size:14.5px;line-height:1.5}.mcard .bignum{font-family:var(--serif);font-size:52px;line-height:1.05;margin:6px 0 2px}.mcard .sub{font-size:13.5px;opacity:.75;font-weight:500}.mcard pre.grid{font-size:17px;line-height:1.25;margin:12px auto;text-align:center;user-select:all;-webkit-user-select:all}.mrow{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}.btn{font:inherit;font-weight:700;font-size:14px;border:0;border-radius:11px;padding:11px 15px;cursor:pointer;background:var(--paperInk);color:var(--paper);flex:1;min-width:110px}.btn.gold{background:var(--accent);color:#2a2214}.btn.ghosty{background:transparent;border:1.5px solid var(--paperLine);color:var(--paperInk);flex:0 1 auto}.btn:active{transform:scale(.97)}.legend{display:flex;gap:14px;align-items:center;margin:10px 0}.legend svg{flex:0 0 auto}.legend span{font-size:13.5px;line-height:1.35}.palrow{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1.5px solid var(--paperLine);border-radius:12px;margin:8px 0;cursor:pointer}.palrow.active{border-color:var(--paperInk);background:#27313a0f}.palrow .dots{display:flex;gap:4px}.palrow .dots i{width:15px;height:15px;border-radius:5px;display:block}.palrow .pname{font-weight:600;font-size:14px;flex:1}.palrow .ptag{font-size:11.5px;font-weight:700;opacity:.6}.mosaic-wrap{margin:8px 0 2px;max-height:44dvh;overflow:auto;border-radius:10px}.stars{font-size:28px;letter-spacing:5px;color:var(--accent);line-height:1.1;margin:2px 0}.stars .dim{opacity:.22}.mcard .thresh span{white-space:nowrap;opacity:.75}.mcard .thresh .hit{color:var(--gold);opacity:1;font-weight:700}.goldtag{color:var(--gold)!important;opacity:1!important}.palrow.sealed{opacity:.62}.palrow.sealed .dots i{filter:saturate(.45)}.kstone{fill:var(--bg);stroke:var(--ink);stroke-width:1.7;opacity:.8;pointer-events:none}.brand small .edict{display:block;font-size:10.5px;opacity:.85;letter-spacing:.02em}#board{transition:filter .9s ease}#board.gilded{filter:drop-shadow(0 0 16px color-mix(in srgb,var(--gold) 42%,transparent))}body.neon #board.gilded{filter:drop-shadow(0 0 20px color-mix(in srgb,var(--gold) 60%,transparent))}.palrow .pico{font-size:20px;flex:0 0 auto;width:26px;text-align:center}.palrow .pname .pdesc{display:block;font-size:12px;font-weight:500;opacity:.65;line-height:1.3;margin-top:1px}.perfectbanner{background:linear-gradient(90deg,#e9c46a40,#e9c46a80,#e9c46a40);border-radius:9px;padding:7px 10px;font-weight:700;text-align:center;margin:8px 0 2px}a.linky{color:inherit;font-weight:700}#toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom) + 118px);transform:translate(-50%) translateY(10px);background:var(--paper);color:var(--paperInk);font-weight:600;font-size:13.5px;padding:9px 15px;border-radius:999px;box-shadow:0 8px 24px #0006;opacity:0;pointer-events:none;transition:all .22s ease;z-index:60;max-width:86vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%) translateY(0)}.confbit{position:fixed;top:-14px;width:9px;height:13px;z-index:55;pointer-events:none;animation:fall linear forwards}@keyframes fall{to{transform:translateY(105vh) rotate(560deg)}}@media (max-height:640px){#score{font-size:26px}.brand{font-size:20px}.hand-tile{width:60px;height:60px}.mcard .bignum{font-size:42px}}#banner{position:fixed;left:50%;top:32%;transform:translate(-50%,-50%);z-index:50;font-family:var(--serif);font-size:27px;letter-spacing:.05em;color:var(--gold);text-shadow:0 2px 12px rgba(0,0,0,.55);opacity:0;pointer-events:none;white-space:nowrap}#banner.show{animation:bannerIn .72s cubic-bezier(.2,1.3,.4,1) forwards}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.55)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}30%{transform:translate(-50%,-50%) scale(1)}76%{opacity:1}to{opacity:0;transform:translate(-50%,-58%) scale(1)}}body.neon{background:#07070f}body.neon:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:radial-gradient(60% 45% at 50% -6%,rgba(255,45,149,.24),transparent 65%),radial-gradient(55% 42% at 88% 108%,rgba(25,227,255,.17),transparent 62%),radial-gradient(50% 40% at 10% 106%,rgba(177,77,255,.16),transparent 60%);animation:neonBreathe 6.5s ease-in-out infinite alternate}@keyframes neonBreathe{0%{opacity:.65}to{opacity:1}}body.neon:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;opacity:.55;background:repeating-linear-gradient(0deg,rgba(255,255,255,.032) 0 1px,transparent 1px 3px)}body.neon #app{position:relative;z-index:2}body.neon .brand{color:#ff2d95;text-shadow:0 0 6px rgba(255,45,149,.95),0 0 18px rgba(255,45,149,.55),0 0 44px rgba(255,45,149,.35);animation:signFlicker 9s linear infinite}@keyframes signFlicker{0%,91.5%,93.2%,to{opacity:1}92%,93%{opacity:.4}}body.neon .brand small{color:#19e3ff;text-shadow:0 0 8px rgba(25,227,255,.85)}body.neon .tray,body.neon .iconbtn{border-color:#19e3ff38;box-shadow:0 0 0 1px #ff2d9512,0 10px 30px #0000008c}body.neon #chainPill{box-shadow:0 0 10px #ff2d95cc,0 0 26px #ff2d9573}body.neon #chainPill.hot{animation:pillPulse .48s ease-in-out infinite alternate}@keyframes pillPulse{0%{box-shadow:0 0 10px #ff2d95cc,0 0 24px #ff2d9580}to{box-shadow:0 0 18px #ff2d95,0 0 48px #ff2d95cc}}body.neon .bloom{filter:url(#bloom)}body.neon .hand-tile{background:#ffffff08}body.neon .hand-tile.sel{border-color:#19e3ff;box-shadow:0 0 12px #19e3ff99,0 8px 16px #00000073}body.neon .hand-tile.sel:after{background:#19e3ff;color:#001318}body.neon .cell.ok{stroke:#19e3ff80;fill:#19e3ff0d}body.neon .cell.pending{stroke:var(--gold)}body.neon #banner{font-style:italic;text-shadow:0 0 8px rgba(249,248,113,.9),0 0 30px rgba(249,248,113,.5),0 0 64px rgba(255,45,149,.45)}body.neon .mcard{border:1px solid rgba(25,227,255,.3);box-shadow:0 0 0 1px #ff2d9524,0 24px 70px #000000bf}body.neon .btn.gold{box-shadow:0 0 14px #ff2d958c}body.neon .perfectbanner{background:linear-gradient(90deg,#ff2d9547,#19e3ff66,#ff2d9547);color:#fff}body.neon #toast{border:1px solid rgba(25,227,255,.4);box-shadow:0 0 18px #19e3ff4d}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
