:root{--ink:#e8e2ff8c;--ink-strong:#f2eeffe6;--line:#e8e2ff2e;--glass:#1416208c;--accent:#ff4d3d;color:var(--ink);font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:13px}*{box-sizing:border-box}html,body{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;background:#050508;height:100%;margin:0;overflow:hidden}body.dragging,body.dragging *{cursor:grabbing!important}#stage{width:100%;height:100%;display:block;position:fixed;top:0;bottom:0;left:0;right:0}#ui{pointer-events:none;position:fixed;top:0;bottom:0;left:0;right:0}button{font:inherit;color:var(--ink);pointer-events:auto;cursor:pointer}header{top:max(14px, env(safe-area-inset-top));justify-content:space-between;align-items:center;gap:12px;display:flex;position:absolute;left:16px;right:16px}.title{letter-spacing:.12em;color:var(--ink-strong);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.title .num{color:var(--accent);margin-right:.6em}.actions{gap:8px;display:flex}.actions button{border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.1em;white-space:nowrap;border-radius:6px;min-width:34px;height:34px;padding:0 12px}.actions button:hover{color:var(--ink-strong);border-color:var(--ink)}.actions button:focus-visible{color:var(--ink-strong);border-color:var(--ink)}.sound{place-items:center;display:grid;padding:0!important}.sound svg{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.tray{left:50%;bottom:max(18px, env(safe-area-inset-bottom));border:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:12px;gap:10px;padding:8px;transition:border-color .2s,box-shadow .2s;display:flex;position:absolute;transform:translate(-50%)}body.over-tray .tray{border-color:var(--accent);box-shadow:0 0 24px -4px var(--accent)}.slot{border:1px solid var(--line);touch-action:none;cursor:grab;background:#ffffff08;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;width:76px;height:76px;display:flex;position:relative}.slot:hover{border-color:var(--ink);color:var(--ink-strong)}.slot svg{fill:#e6ecffd9;stroke:#ffffffe6;stroke-width:1px;filter:drop-shadow(0 0 4px #bed2ff99);width:34px;height:34px}.slot[data-kind=prism] svg{fill:#c8e1ff40;stroke-width:1.6px}.slot .name{letter-spacing:.12em;font-size:11px}.slot .count{background:var(--accent);color:#0b0b10;min-width:22px;height:22px;box-shadow:0 0 12px -2px var(--accent);border-radius:11px;padding:0 5px;font-size:11px;font-weight:700;line-height:22px;position:absolute;top:-8px;right:-8px}.slot.empty{opacity:.35;cursor:default}.slot.empty .count{box-shadow:none;background:#555}.readout{color:var(--ink-strong);letter-spacing:.05em;white-space:nowrap;background:#0a0a10bf;border-radius:4px;padding:3px 7px;font-size:11px;position:absolute;top:0;left:0}.fade{opacity:0;background:#030305;transition:opacity .7s;position:absolute;top:0;bottom:0;left:0;right:0}.fade.on{opacity:1}.end{opacity:0;flex-direction:column;justify-content:center;align-items:center;gap:22px;transition:opacity 1.2s;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}.end.shown{opacity:1}.end p{letter-spacing:.2em;color:var(--ink-strong);text-shadow:0 0 18px var(--accent);margin:0;font-size:20px}.again{letter-spacing:.2em;border:1px solid var(--line);background:var(--glass);border-radius:6px;padding:10px 22px;font-size:13px}.again:hover{color:var(--ink-strong);border-color:var(--ink)}@media (max-width:480px){.slot{width:66px;height:66px}}.slot[hidden]{display:none}.title .gen{color:var(--ink);letter-spacing:.06em;margin-left:.8em;font-size:11px}.actions button[hidden]{display:none}
