html,body{background:#f7f5f0;width:100%;margin:0;padding:0;overflow-x:hidden}body{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}html{overscroll-behavior:none}:root{--gold:#f5a623;--gold-light:#fff3dc;--green:#27ae60;--green-light:#e8f5e9;--red:#e74c3c;--red-light:#fdecea;--blue:#3498db;--blue-light:#e3f0fb;--bg:#f7f5f0;--card-bg:#fff;--text:#2c2416;--text-secondary:#8b7e6a;--border:#e0d8cc;--shadow:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001f;--radius:12px;--radius-sm:8px;--safe-bottom:env(safe-area-inset-bottom,0px);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;margin:0;overflow-x:hidden}#root{background:var(--bg);flex-direction:column;width:100%;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-family:inherit;font-size:16px;font-weight:600;transition:all .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{color:#fff;background:linear-gradient(135deg,#f5a623,#e8961a);box-shadow:0 2px 8px #f5a6234d}.btn-outline{background:var(--card-bg);color:var(--text);border:2px solid var(--border)}.btn-text{color:var(--text-secondary);background:0 0;padding:8px 12px;font-weight:500}.btn-large{width:100%;margin-bottom:10px;padding:16px 24px;font-size:18px}.btn-sm{padding:6px 10px;font-size:14px}.lobby{flex-direction:column;flex:1;gap:20px;padding:24px 16px;display:flex}.lobby-header{text-align:center;padding:32px 0 16px}.lobby-header h1{color:var(--text);margin-bottom:4px;font-size:28px;font-weight:800}.lobby-header h2{color:var(--text);font-size:22px;font-weight:700}.lobby-subtitle{color:var(--text-secondary);font-size:14px}.lobby-actions{flex-direction:column;flex:1;justify-content:center;padding:0 16px;display:flex}.lobby-loading{flex:1;justify-content:center;align-items:center;padding:48px;display:flex}.spinner{border:4px solid var(--border);border-top-color:var(--gold);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.join-form{flex-direction:column;gap:12px;padding:0 16px;display:flex}.room-input{text-align:center;letter-spacing:4px;font-weight:700;font-size:24px!important}.error-msg{color:var(--red);text-align:center;background:var(--red-light);border-radius:var(--radius-sm);padding:8px 12px;font-size:14px}.my-setup{padding:0 4px}.game-link{text-align:center;background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;padding:16px}.game-link-icon{margin-bottom:4px;font-size:32px}.game-link h3{margin-bottom:8px;font-size:15px;font-weight:600}.game-link-code{letter-spacing:6px;color:var(--gold);background:var(--gold-light);border-radius:var(--radius-sm);cursor:pointer;margin-bottom:4px;padding:8px 16px;font-size:32px;font-weight:800;transition:transform .15s}.game-link-code:active{transform:scale(.95)}.game-link-hint{color:var(--text-secondary);margin-bottom:12px;font-size:12px}.game-link-instruction{color:var(--text-secondary);margin-top:8px;font-size:12px}.player-setup{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px;padding:16px}.setup-title{text-align:center;margin-bottom:12px;font-size:16px;font-weight:700}.setup-fields{flex-direction:column;gap:12px;margin-top:12px;display:flex}.field-group{flex-direction:column;gap:4px;display:flex}.field-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:600}.field-input{border:2px solid var(--border);border-radius:var(--radius-sm);color:var(--text);background:var(--card-bg);padding:10px 14px;font-family:inherit;font-size:16px;transition:border-color .2s}.field-input:focus{border-color:var(--gold);outline:none}.field-hint{color:var(--text-secondary);font-size:11px}.avatar-picker{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.avatar-option{border-radius:var(--radius);background:var(--bg);cursor:pointer;border:3px solid #0000;flex-direction:column;align-items:center;gap:4px;padding:8px;font-family:inherit;transition:all .15s;display:flex}.avatar-option:active{transform:scale(.95)}.avatar-option.avatar-selected{border-color:var(--gold);background:var(--gold-light)}.avatar-label{color:var(--text-secondary);font-size:11px;font-weight:500}.calculator{min-height:100dvh;padding-bottom:var(--safe-bottom);flex-direction:column;flex:1;display:flex}.calc-topbar{background:var(--card-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.calc-room-badge{color:var(--gold);background:var(--gold-light);border-radius:12px;padding:4px 10px;font-size:13px;font-weight:600}.connection-banner{background:var(--red);color:#fff;text-align:center;padding:4px;font-size:12px}.calc-players{padding:12px 8px}.calc-players-scroll{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:8px;padding:0 4px;display:flex;overflow-x:auto}.calc-players-scroll::-webkit-scrollbar{display:none}.player-card{background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;scroll-snap-align:start;border:2px solid #0000;flex-shrink:0;align-items:center;gap:10px;min-width:140px;padding:10px 14px;transition:all .15s;display:flex}.player-card:active{transform:scale(.97)}.player-card.selected{border-color:var(--gold);background:var(--gold-light)}.player-card.is-me{background:#fffdf7}.player-card.flash{animation:.6s flashCard}@keyframes flashCard{0%,to{transform:scale(1)}25%{background:#ffeaa7;transform:scale(1.08)}75%{transform:scale(1.02)}}.player-card-info{flex-direction:column;display:flex}.player-card-name{align-items:center;gap:4px;font-size:14px;font-weight:600;display:flex}.player-card-me-tag{background:var(--blue);color:#fff;border-radius:8px;padding:1px 6px;font-size:10px}.player-card-balance{color:var(--gold);font-size:18px;font-weight:800}.calc-my-balance{text-align:center;background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);justify-content:space-between;align-items:center;margin:0 12px;padding:8px 16px;display:flex}.calc-my-label{color:var(--text-secondary);font-size:14px;font-weight:600}.calc-my-value{color:var(--text);font-size:24px;font-weight:800}.calc-input-display{text-align:center;min-height:52px;padding:12px 16px}.calc-input-value{color:var(--text);letter-spacing:1px;font-size:28px;font-weight:800}.calc-input-preview{color:var(--text-secondary);margin-top:2px;font-size:14px}.keypad{padding:8px 12px}.keypad-grid{flex-direction:column;gap:8px;display:flex}.keypad-row{gap:8px;display:flex}.keypad-btn{border-radius:var(--radius-sm);background:var(--card-bg);color:var(--text);box-shadow:var(--shadow);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;flex:1;padding:16px 8px;font-family:inherit;font-size:22px;font-weight:700;transition:all .1s}.keypad-btn:active{background:#eee;transform:scale(.95)}.keypad-btn.key-unit{color:var(--gold);font-size:16px;font-weight:800}.keypad-btn.key-unit.active-unit{background:var(--gold);color:#fff}.keypad-actions{gap:8px;margin-top:8px;display:flex}.key-dot{color:var(--text);flex:1;font-size:22px;font-weight:800}.key-delete{color:var(--text-secondary);flex:1;font-size:16px}.key-confirm{background:var(--gold);color:#fff;flex:2;font-size:18px}.key-confirm:disabled{opacity:.4;cursor:default}.calc-actions{padding:12px;padding-bottom:calc(12px + var(--safe-bottom));gap:12px;display:flex}.btn-action{border-radius:var(--radius);color:#fff;cursor:pointer;box-shadow:var(--shadow-lg);border:none;flex:1;padding:18px 16px;font-family:inherit;font-size:20px;font-weight:800;transition:all .15s}.btn-action:active{transform:scale(.96)}.btn-action:disabled{opacity:.35;cursor:default}.btn-subtract{background:linear-gradient(135deg,#e74c3c,#c0392b)}.btn-add{background:linear-gradient(135deg,#27ae60,#1e8449)}.tx-log{flex-direction:column;flex:1;min-height:100dvh;display:flex}.tx-log-header{background:var(--card-bg);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.tx-log-header h2{font-size:18px;font-weight:700}.tx-filter{-webkit-overflow-scrolling:touch;border-bottom:1px solid var(--border);background:var(--card-bg);gap:6px;padding:10px 12px;display:flex;overflow-x:auto}.tx-filter::-webkit-scrollbar{display:none}.tx-filter-btn{border:2px solid var(--border);background:var(--card-bg);cursor:pointer;white-space:nowrap;border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:6px 12px;font-family:inherit;font-size:13px;font-weight:600;transition:all .15s;display:flex}.tx-filter-btn.active{background:var(--text);color:#fff;border-color:var(--text)}.tx-list{flex:1;padding:8px 12px;overflow-y:auto}.tx-empty{text-align:center;color:var(--text-secondary);padding:48px 16px}.tx-empty-hint{margin-top:8px;font-size:13px}.tx-item{background:var(--card-bg);border-radius:var(--radius-sm);border-left:4px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:6px;padding:10px 12px;display:flex}.tx-item.add{border-left-color:var(--green)}.tx-item.subtract{border-left-color:var(--red)}.tx-item-left{align-items:center;gap:8px;display:flex}.tx-item-info{flex-direction:column;display:flex}.tx-item-name{font-size:14px;font-weight:600}.tx-item-time{color:var(--text-secondary);font-size:11px}.tx-item-right{text-align:right}.tx-item-amount{font-size:16px;font-weight:800}.tx-item-amount.add{color:var(--green)}.tx-item-amount.subtract{color:var(--red)}.tx-item-after{color:var(--text-secondary);font-size:11px}@media (width>=481px){.keypad-btn{padding:20px 12px;font-size:24px}.calc-players-scroll{flex-wrap:wrap;justify-content:center;overflow-x:visible}.player-card{min-width:auto}}
