:root{--ink:#2b2147;--panel:#fffaf0f0;--accent:#6a4fd8;--accent-ink:#fff;--muted:#6b6386}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);-webkit-tap-highlight-color:transparent;background:#6f7fc0;margin:0;font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,sans-serif}body.in-room{overflow:hidden}body.in-lobby{background:linear-gradient(#6f7fc0,#9a8fd6);min-height:100%}[hidden]{display:none!important}#stage{touch-action:none;position:fixed;inset:0}#stage canvas{display:block}body.in-lobby #stage{display:none}body.in-room #stage{bottom:var(--panel-h,140px)}body.in-room.board-2d #stage{top:var(--top-h,0px)}.top{z-index:5;padding:max(8px, env(safe-area-inset-top)) 12px 8px;color:#fff;background:linear-gradient(#2b21478c,#2b214700);align-items:center;gap:10px;display:flex;position:fixed;top:0;left:0;right:0}.top b{font-size:17px}.top .back{color:#fff;font-size:14px;text-decoration:none}.top .lap{background:var(--panel);color:var(--ink);border-radius:999px;margin-left:auto;padding:3px 10px;font-size:12px;font-weight:700}.mini{background:var(--accent);color:#fff;font:inherit;border:0;border-radius:999px;min-height:30px;padding:5px 10px;font-size:12px;font-weight:700}.lap[hidden]+.mini{margin-left:auto}.sheet{color:#fff;max-width:560px;margin:0 auto;padding:64px 16px 32px;position:relative}.lobby .lead{font-size:15px;line-height:1.6}.lobby h2{margin:22px 0 8px;font-size:15px}.rooms{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rooms li{background:var(--panel);color:var(--ink);border-radius:10px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.rooms li .who{flex:1}.rooms li .n{color:var(--muted);font-size:12px}.rooms li a{color:var(--accent);font-weight:700;text-decoration:none}.rooms li.empty{color:var(--muted)}.howto{padding-left:1.2em;font-size:14px;line-height:1.7}.note{min-height:1em;font-size:13px}.fine{opacity:.9;font-size:12px;line-height:1.5}.fine.strong{background:#ffffff29;border-radius:8px;padding:6px 10px}.panel .fine.strong{color:var(--ink);background:#f1ecff}.btn{min-height:46px;font:inherit;cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;padding:0 16px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex;box-shadow:0 2px 6px #00000026}.btn.main{background:var(--accent);color:var(--accent-ink)}.btn.sub{color:var(--ink);background:#fff}.btn:disabled{opacity:.5;cursor:default}.lobby .btn.main{width:100%}.seg{align-items:center;gap:6px;margin:0 0 8px;display:flex}.seg .lb{color:var(--muted);font-size:13px;font-weight:700}.seg button{min-height:44px;color:var(--ink);font:inherit;cursor:pointer;background:#fff;border:2px solid #cfc6ea;border-radius:12px;flex:1;font-size:15px;font-weight:700}.seg button[aria-checked=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.seg button:disabled{opacity:.45;cursor:default}.players{z-index:4;top:calc(max(8px, env(safe-area-inset-top)) + 38px);pointer-events:none;grid-template-columns:1fr 1fr;gap:4px;display:grid;position:fixed;left:8px;right:8px}.pl{background:var(--panel);border:2px solid #0000;border-radius:10px;align-items:center;gap:6px;min-width:0;padding:4px 8px;font-size:12px;display:flex}.pl i{border-radius:50%;flex:none;width:12px;height:12px;box-shadow:0 0 0 1px #0003}.pl .nm{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pl .v{font-variant-numeric:tabular-nums;font-weight:700}.pl .tg{color:var(--muted);font-size:10px}.pl .timer{color:#c2410c;font-variant-numeric:tabular-nums;font-size:11px}.pl.turn{border-color:#f5c84b;box-shadow:0 0 0 2px #f5c84b59}.pl.me .nm{font-weight:700}.pl.out{opacity:.5}.toast{z-index:6;left:50%;bottom:calc(var(--panel-h,140px) + 12px);color:#fff;pointer-events:none;text-align:center;background:#2b2147e6;border-radius:12px;width:max-content;max-width:calc(100% - 24px);margin:0;padding:8px 14px;font-size:14px;line-height:1.45;position:fixed;transform:translate(-50%)}.dice{z-index:6;pointer-events:none;gap:10px;display:flex;position:fixed;top:42%;left:50%;transform:translate(-50%,-50%)}.dice i{color:#fff;text-shadow:0 3px #3b2a6a,0 0 12px #00000059;font-size:64px;font-style:normal;line-height:1}.card{z-index:4;right:8px;top:calc(max(8px, env(safe-area-inset-top)) + 104px);background:var(--panel);border-radius:12px;width:min(240px,100% - 16px);padding:8px 10px;font-size:13px;position:fixed;box-shadow:0 2px 8px #0003}.card b{font-size:15px;display:block}.card .tag{color:#fff;text-shadow:0 1px 1px #0006;border-radius:6px;margin-top:2px;padding:1px 6px;font-size:11px;display:inline-block}.card p{white-space:pre-line;margin:4px 0 0;line-height:1.5}.panel{z-index:5;background:var(--panel);max-height:58vh;padding:10px 12px max(12px, env(safe-area-inset-bottom));border-radius:16px 16px 0 0;position:fixed;bottom:0;left:0;right:0;overflow:auto;box-shadow:0 -2px 12px #0000002e}.status{min-height:1.5em;margin:0 0 8px;font-size:14px;line-height:1.5}.row{flex-wrap:wrap;gap:8px;display:flex}.row .btn{flex:auto}.bid{align-items:center;gap:4px;font-size:18px;font-weight:700;display:inline-flex}.bid input{width:96px;min-height:46px;font:inherit;border:2px solid #cfc6ea;border-radius:10px;padding:0 8px;font-size:18px}.seats{grid-template-columns:1fr 1fr;gap:4px;margin:0 0 8px;padding:0;font-size:13px;list-style:none;display:grid}.seats li{background:#fff;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;display:flex}.seats li i{border-radius:50%;flex:none;width:12px;height:12px}.wait .row+.row{margin-top:8px}.result table{border-collapse:collapse;width:100%;margin-top:4px;font-size:14px}.result th,.result td{text-align:left;border-bottom:1px solid #e4def5;padding:5px 6px}.result tr.first td{background:#fff6d6;font-weight:700}.watch{color:var(--muted);margin:8px 0 0;font-size:12px}#to-lobby{width:100%;margin-top:8px}.rate-pop{color:#fff3b0;pointer-events:none;white-space:nowrap;-webkit-text-stroke:2px #3b2a6a;paint-order:stroke;text-shadow:0 3px #3b2a6a;will-change:transform, opacity;font-size:34px;font-weight:900;position:absolute;top:0;left:0}.rate-pop--out{transition:opacity .6s;opacity:0!important}@media (min-width:720px){.players{grid-template-columns:repeat(4,1fr);width:760px;left:50%;right:auto;transform:translate(-50%)}.panel{width:640px;left:50%;right:auto;transform:translate(-50%)}.card{top:calc(max(8px, env(safe-area-inset-top)) + 80px)}}@media (prefers-reduced-motion:reduce){.rate-pop--out{transition:none}}
