:root{--bg: var(--tg-bg-color, #ffffff);--text: var(--tg-text-color, #1c1c1e);--hint: var(--tg-hint-color, #8e8e93);--link: var(--tg-link-color, #007aff);--accent: var(--tg-button-color, #2481cc);--accent-text: var(--tg-button-text-color, #ffffff);--secondary: var(--tg-secondary-bg-color, #f2f2f7);--section-bg: var(--tg-section-bg-color, #ffffff);--radius: 14px;--shadow: 0 1px 2px rgba(0, 0, 0, .04), 0 4px 16px rgba(0, 0, 0, .04);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100vh;background:var(--bg);color:var(--text)}.screen{padding:20px 16px 40px;max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.title{font-size:28px;font-weight:700;margin:0 0 4px;letter-spacing:-.02em}.lead{color:var(--text);margin:0;line-height:1.5;opacity:.8}.hint{color:var(--hint);margin:0;font-size:14px;line-height:1.4}.prose{white-space:pre-wrap;line-height:1.55;margin:0}.stack{display:flex;flex-direction:column;gap:10px}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 16px;border:0;border-radius:var(--radius);font-size:16px;font-weight:600;cursor:pointer;font-family:inherit;transition:transform .06s ease,opacity .15s ease}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-text)}.btn-ghost{background:var(--secondary);color:var(--text)}.badge{background:#ffffff47;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:600}.btn-ghost .badge{background:#007aff26;color:var(--accent)}.link{color:var(--link);word-break:break-all}.game-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.game-title{font-size:18px;font-weight:700}.pill{font-size:13px;font-weight:600;padding:6px 12px;border-radius:999px;white-space:nowrap}.pill-user{background:#2481cc1f;color:var(--accent)}.pill-bot{background:#ff9f0a26;color:#ff9f0a}.pill-win{background:#34c7592e;color:#34c759}.pill-loss{background:#ff3b3026;color:#ff3b30}.bot-msg{background:#ff9f0a1f;border-left:3px solid #ff9f0a;border-radius:10px;padding:10px 14px;font-size:14px;animation:fade-in .25s ease}.board{display:flex;flex-direction:column;gap:12px;padding:16px;background:var(--secondary);border-radius:var(--radius)}.row{display:flex;align-items:center;gap:12px;padding:12px;background:var(--bg);border-radius:12px;box-shadow:var(--shadow);min-height:56px}.row-empty{opacity:.5}.row-num{font-weight:700;font-size:15px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--secondary);border-radius:8px;flex-shrink:0}.row-objects{display:flex;flex-wrap:wrap;gap:4px;flex:1}.empty-mark{color:var(--hint);font-size:14px;align-self:center}.clip{font-size:26px;line-height:1;background:transparent;border:0;padding:4px 6px;border-radius:8px;cursor:pointer;font-family:inherit;transition:background .12s ease,transform .08s ease;-webkit-tap-highlight-color:transparent}.clip:active:not(:disabled){transform:scale(.85)}.clip:disabled{cursor:not-allowed}.clip-pending{background:#ff3b302e;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.pending-bar{display:flex;flex-direction:column;gap:10px;padding:14px 16px;background:var(--section-bg);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid rgba(0,0,0,.05);animation:fade-in .2s ease}.pending-text{font-size:15px}.pending-actions{display:flex;gap:8px}.pending-actions .btn{flex:1}.banner{padding:24px 20px;border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;animation:fade-in .3s ease}.banner-win{background:#34c7591f}.banner-loss{background:#ff3b301a}.banner-emoji{font-size:40px}.banner-title{font-size:18px;font-weight:700}.banner-win .banner-title{color:#34c759}.banner-loss .banner-title{color:#ff3b30}.banner-actions{display:flex;flex-direction:column;gap:8px;width:100%}.rules-section{background:var(--secondary);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.rules-h{font-size:16px;font-weight:700;margin:0}.rules-p{font-size:15px;line-height:1.5;margin:0}.rules-hint{font-size:14px;color:var(--hint)}.rules-board{display:flex;flex-direction:column;gap:6px;background:var(--bg);padding:10px;border-radius:10px;box-shadow:var(--shadow)}.rules-board-row{display:flex;align-items:center;gap:8px;min-height:32px}.rules-board-num{width:22px;height:22px;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;background:var(--secondary);border-radius:6px;flex-shrink:0}.rules-pile{display:flex;flex-wrap:wrap;gap:2px}.rules-clip{font-size:18px;line-height:1}.rules-clip-take{background:#ff3b3033;border-radius:4px;padding:0 2px}.rules-step{display:flex;flex-direction:column;gap:8px;margin-top:4px}.rules-step-label{font-size:13px;font-weight:600;color:var(--hint)}.rules-arrow{text-align:center;font-size:13px;color:var(--accent);font-weight:600;padding:4px 0}.sol-code{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;background:var(--bg);padding:1px 6px;border-radius:4px;font-size:.92em;border:1px solid rgba(0,0,0,.06)}.rules-section .sol-code{background:#0000000a}.sol-list{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:6px;font-size:15px;line-height:1.5}.sol-pre{background:var(--bg);border:1px solid rgba(0,0,0,.06);border-radius:8px;padding:10px 12px;margin:4px 0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:13px;line-height:1.5;white-space:pre;overflow-x:auto}.sol-xor-table{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin:4px 0}.sol-xor-table>div{background:var(--bg);border-radius:6px;padding:6px 10px;text-align:center}.sol-graph{width:100%;max-width:360px;height:auto;margin:6px auto;display:block;color:var(--accent)}.sol-graph .graph-node circle{fill:var(--bg);stroke:currentColor;stroke-width:2}.sol-graph .graph-terminal circle{fill:var(--secondary);stroke:var(--hint)}.sol-graph .graph-W circle{fill:#4caf501f;stroke:#4caf50}.sol-graph .graph-L circle{fill:#e74c3c24;stroke:#e74c3c}.sol-graph text{fill:var(--text);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,monospace;font-size:14px;font-weight:600}.sol-graph text.tag{font-size:11px;font-weight:800;letter-spacing:.5px}.sol-graph .graph-W text.tag{fill:#2e8540}.sol-graph .graph-L text.tag{fill:#c0392b}
