:root{--bg:#15171e;--panel:#181b24e0;--panel-solid:#1b1e28;--text:#e8eaf0;--muted:#9aa1b2;--accent:var(--gold);--accent-grad:linear-gradient(135deg, var(--gold-bright), var(--gold-deep));--gold:#e6c26a;--gold-bright:#f4dc95;--gold-deep:#d9a93f;--silver:#c1cad7;--silver-bright:#e8eef7;--silver-deep:#9aa6b8;--danger:#d8503e}body.theme-gold{--accent:var(--gold);--accent-grad:linear-gradient(135deg, var(--gold-bright), var(--gold-deep))}body.theme-silver{--accent:var(--silver);--accent-grad:linear-gradient(135deg, var(--silver-bright), var(--silver-deep))}*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;background:var(--bg);height:100%;color:var(--text);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;overflow:hidden}button{font:inherit;color:inherit;touch-action:manipulation;cursor:pointer}#scene{touch-action:none;width:100%;height:100%;display:block;position:fixed;top:0;bottom:0;left:0;right:0}#view-banner{top:calc(env(safe-area-inset-top,0px) + 72px);background:var(--panel);border:1px solid var(--accent);box-shadow:0 0 18px -6px var(--accent);color:var(--text);letter-spacing:.02em;white-space:nowrap;opacity:0;pointer-events:none;z-index:30;border-radius:999px;padding:8px 18px;font-size:15px;font-weight:600;transition:opacity .35s;position:fixed;left:50%;transform:translate(-50%)}#view-banner.show{opacity:1;pointer-events:auto}#view-banner:after{content:"  ·  tap to skip";color:var(--muted);font-size:.75em;font-weight:400}#rules-btn{top:calc(env(safe-area-inset-top,0px) + 85px);background:var(--panel);width:40px;height:40px;color:var(--silver);z-index:5;border:1px solid #2e3444;border-radius:12px;justify-content:center;align-items:center;display:flex;position:fixed;left:calc(50% - min(50%,380px) + 10px)}#rules-btn:active{border-color:var(--silver-deep);color:var(--silver-bright);background:#c1cad726}#rules-btn svg{display:block}#hud{pointer-events:none;max-width:760px;padding:calc(env(safe-area-inset-top,0px) + 10px) 10px calc(env(safe-area-inset-bottom,0px) + 10px);flex-direction:column;justify-content:space-between;margin:0 auto;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#topbar{pointer-events:auto;justify-content:space-between;align-items:flex-start;gap:8px;display:flex}#scoreboard,#turn-indicator{background:var(--panel);border-radius:10px;padding:8px 12px}#turn-indicator{flex-direction:column;align-items:flex-end;display:flex}.sb-main{align-items:center;gap:8px;display:flex}.sb-tile{background:#39415a;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;display:flex;overflow:hidden}.sb-tile .pattern-img{display:block}.sb-score{letter-spacing:.5px;font-size:21px;font-weight:800}.ti-badge{border:1.5px solid #0000;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:6px 12px 5px;display:flex}.ti-badge.ti-gold{border-color:var(--gold);box-shadow:0 0 10px #f4dc9566}.ti-badge.ti-silver{border-color:var(--silver);box-shadow:0 0 10px #e8eef759}.ti-pattern{background:#39415a;border-radius:10px;justify-content:center;align-items:center;width:46px;height:46px;display:flex;overflow:hidden}.ti-name{font-size:13px;font-weight:800}.ti-gold .ti-name{color:var(--gold-bright)}.ti-silver .ti-name{color:var(--silver-bright)}.sb-sub{color:var(--muted);margin-top:2px;font-size:11px}.ti-msg{color:var(--danger);max-width:44vw;margin-top:3px;font-size:11px}#bottombar{pointer-events:auto;flex-direction:column;gap:8px;display:flex}body.fx-playing #bottombar,body.fx-playing #scoreboard,body.fx-playing #turn-indicator,body.fx-playing #rules-btn,body.mode-lobby #hud,body.mode-lobby #rules-btn{display:none}#hand{background:var(--panel);border-radius:12px;gap:6px;padding:8px;display:flex}.hand-block{background:#232836;border:1px solid #2e3444;border-radius:10px;flex:1;justify-content:center;align-items:center;min-width:0;height:52px;padding:5px;display:flex;position:relative}.hand-block.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.hand-block.used{opacity:.28}.hand-block:disabled{cursor:default}.hand-badge{min-width:25px;height:22px;color:var(--muted);pointer-events:none;background:#2e3444;border:1px solid #2e3444;border-radius:999px;justify-content:center;align-items:center;padding:0 7px;font-size:13px;font-weight:800;line-height:20px;display:flex;position:absolute;top:-9px;right:-7px}.hand-block.selected .hand-badge{background:var(--accent-grad);border-color:var(--accent);color:#1a1a10}.dots{align-items:stretch;gap:4px;width:100%;height:100%;display:flex}.dots .pattern-img{object-fit:contain;flex:1 1 0;min-width:0;height:100%;display:block}.pattern-img{vertical-align:middle}.pts-draw{color:var(--muted)}#controls{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}#orientation{background:var(--panel);border-radius:12px;gap:6px;padding:8px;display:flex}.axis-btn{background:#232836;border:1px solid #2e3444;border-radius:10px;min-width:46px;height:48px;font-weight:700}.axis-btn.selected{background:var(--accent-grad);color:#1a1a10;border-color:var(--accent)}#confirm{background:var(--accent-grad);color:#1a1a10;border:none;border-radius:12px;flex:100%;height:64px;font-size:17px;font-weight:800}#confirm:disabled{color:#78809a;cursor:default;background:#3a4054}#nudge{background:var(--panel);border-radius:12px;gap:6px;padding:8px;display:flex}.nudge-btn{background:#232836;border:1px solid #2e3444;border-radius:10px;min-width:54px;height:48px;font-size:24px;font-weight:800}.nudge-btn:active{background:var(--accent-grad);border-color:var(--accent);color:#1a1a10}#modal{z-index:10;background:#0a0b10b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#modal.hidden{display:none}.modal-card{background:var(--panel-solid);border-radius:14px;width:100%;max-width:420px;padding:20px;animation:.3s ease-out card-in}.modal-card h2{align-items:center;gap:8px;margin-bottom:4px;font-size:20px;display:flex}#modal-subtitle{color:var(--muted);margin-bottom:14px;font-size:14px}#modal-subtitle.tight{margin-bottom:2px}#modal-difficulty{color:var(--muted);margin-bottom:14px;font-size:14px}#modal-difficulty.hidden{display:none}#modal-table{border-collapse:collapse;width:100%;margin-bottom:16px;font-size:14px}#modal-table th,#modal-table td{text-align:right;border-bottom:1px solid #2a2f3e;padding:7px 6px}#modal-table th:first-child,#modal-table td:first-child{text-align:left}#modal-table th:nth-child(2),#modal-table td:nth-child(2),#modal-table th:nth-child(3),#modal-table td:nth-child(3){text-align:center}#modal-table th{color:var(--muted);font-weight:600}#modal-table tr.totals td{border-bottom:none;font-weight:700}#modal-button{background:var(--accent-grad);color:#1a1a10;border:none;border-radius:12px;width:100%;height:52px;font-size:16px;font-weight:800}#modal-button:disabled{color:#78809a;cursor:default;background:#3a4054}#modal-button-replay{background:#232836;border:1px solid #2e3444;border-radius:12px;width:100%;height:38px;margin-top:10px;font-size:14px;font-weight:700}#modal-button-replay:disabled{color:#78809a;cursor:default}#modal-button-secondary{background:#232836;border:1px solid #2e3444;border-radius:12px;width:100%;height:44px;margin-top:10px;font-size:14px;font-weight:700}#rules-modal{z-index:40;background:#0a0b10b8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#rules-modal.hidden{display:none}.rules-card{width:min(92vw,620px);max-width:none;max-height:calc(100vh - 32px);flex-direction:column;max-height:calc(100dvh - 32px);display:flex;position:relative}#rules-close{background:#232836;border:1px solid #2e3444;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:18px;line-height:1;display:flex;position:absolute;top:12px;right:12px}.rules-card h2{padding-right:40px}#rules-content{scrollbar-width:none;touch-action:pan-y;overscroll-behavior:contain;min-height:0;padding-right:4px;overflow-y:auto}#rules-content::-webkit-scrollbar{display:none}#rules-content section{margin-top:14px}#rules-content section:first-child{margin-top:0}#rules-content h3{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:13px}#rules-content p,#rules-content li{color:var(--text);font-size:14px;line-height:1.5}#rules-content ul{margin:4px 0;padding-left:18px}#rules-content li{margin:2px 0}#room-badge{background:var(--panel);pointer-events:auto;border-radius:10px;align-items:center;gap:6px;padding:6px 10px;display:flex}#room-badge.hidden{display:none}#room-code-label{letter-spacing:2px;color:var(--accent);font-size:14px;font-weight:800}#share-btn,#leave-btn{background:#232836;border:1px solid #2e3444;border-radius:8px;height:30px;padding:0 10px;font-size:12px;font-weight:700}#computer-setup{flex-direction:column;align-items:center;gap:14px;animation:.3s ease-out card-in;display:flex}#computer-setup.hidden{display:none}#lobby-main{flex-direction:column;align-items:center;display:flex}#lobby-main.hidden{display:none}.setup-row{justify-content:space-between;align-items:center;gap:10px;width:100%;max-width:280px;display:flex}.setup-label{color:var(--muted);text-shadow:0 1px 8px #0009;font-size:13px;font-weight:700}.seg-stack{flex-direction:column;gap:6px;display:inline-flex}.seg{background:#15171e8c;border:1px solid #2e3444;border-radius:10px;display:inline-flex;overflow:hidden}.seg-btn{height:36px;color:var(--muted);background:0 0;border:none;padding:0 12px;font-size:13px;font-weight:700}.seg-btn.active{background:var(--accent-grad);color:#1a1a10}#hand.hand-disabled .hand-block:not(:disabled){opacity:.55}#lobby{z-index:20;background:0 0;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}#lobby.hidden{display:none}#pattern-wall{filter:blur(1px);width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0}.lobby-content{text-align:center;width:100%;max-width:420px;animation:.3s ease-out card-in;position:relative}@keyframes card-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}.lobby-logo{filter:drop-shadow(0 2px 10px #0000008c);width:min(360px,78vw);height:auto;margin:0 auto 28px;display:block}.lobby-primary{background:var(--accent-grad);width:100%;max-width:280px;height:60px;box-shadow:0 6px 24px -8px var(--accent);color:#1a1a10;letter-spacing:.5px;border:none;border-radius:14px;font-size:18px;font-weight:800}.lobby-secondary{border:1px solid var(--accent);width:100%;max-width:280px;height:44px;color:var(--accent);background:#15171e8c;border-radius:14px;margin-top:10px;font-size:15px;font-weight:700}.lobby-caption{color:var(--muted);text-shadow:0 1px 8px #0009;margin-top:14px;font-size:13px}#modal-table tr{opacity:0;animation:.35s ease-out forwards row-in;transform:translateY(6px)}@keyframes row-in{to{opacity:1;transform:none}}
