:root{--safe-area-top: env(safe-area-inset-top);--safe-area-bottom: env(safe-area-inset-bottom);--color-bg: #faf7f0;--color-surface: #ffffff;--color-surface-alt: #f5f2eb;--color-border: #e8e4dc;--color-text: #2d2a26;--color-text-secondary: #8a847a;--color-text-muted: #b5b0a6;--color-positive: #4caf6a;--color-negative: #e25750;--color-accent: #d4943a;--color-primary: #4caf6a;--color-primary-hover: #429e5c;--color-bg-secondary: #f1eee7;--color-primary-light: #e6f5ea;--font-xs: 11px;--font-sm: 13px;--font-base: 15px;--font-lg: 18px;--font-xl: 22px;--font-2xl: 28px;--font-score: 40px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.06);--shadow-lg: 0 8px 24px rgba(0,0,0,.1)}html,body,#root{height:100%}*,*:before,*:after{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 20% 0%,#fffdf8 0%,transparent 45%),linear-gradient(180deg,#f8f5ee 0%,#f3efe7 100%);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;touch-action:pan-y pinch-zoom;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;overflow:hidden}input,select,textarea{-webkit-user-select:text;user-select:text}.container{max-width:520px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:0}.app-mobile{position:relative;overflow-x:hidden;height:100dvh;max-height:100dvh;display:flex;flex-direction:column;padding-top:max(10px,var(--safe-area-top));padding-bottom:max(10px,var(--safe-area-bottom))}.app-shell{flex:1;min-height:0;display:flex;flex-direction:column;border-radius:30px;background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.7);box-shadow:0 20px 45px #231c1224;overflow:hidden}.app-header{position:sticky;top:0;z-index:8;padding:14px var(--space-md) 10px;background:linear-gradient(180deg,#f8f5ef 0%,rgba(248,245,239,.88) 100%);border-bottom:1px solid rgba(232,228,220,.88)}.app-header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.app-title-wrap{display:flex;align-items:center;gap:10px;min-width:0}.app-title-icon{width:34px;height:34px;border-radius:11px;display:inline-flex;align-items:center;justify-content:center;font-size:20px;background:#efe9dd;box-shadow:inset 0 0 0 1px #ffffffb3}.app-title-text h1{margin:0;font-size:16px;line-height:1.2}.app-title-text p{margin:1px 0 0;font-size:12px;color:var(--color-text-secondary)}.app-connection-badge{border-radius:var(--radius-full);font-size:11px;font-weight:700;padding:4px 10px;color:#9a9388;border:1px solid #ddd7cb;background:#f6f2eb;flex-shrink:0}.app-connection-badge.online{color:#2f8f56;border-color:#4caf6a47;background:rgba(76,175,106,.14)}.app-room-meta{margin-top:8px;font-size:12px;color:var(--color-text-muted)}.app-content{flex:1;min-height:0;display:flex;overflow:hidden;overscroll-behavior-y:auto}.onboarding-footer{text-align:center;color:var(--color-text-muted);font-size:12px;padding:8px var(--space-md) calc(var(--space-md) + var(--safe-area-bottom))}@media (max-width: 640px){.app-mobile{padding-top:var(--safe-area-top);padding-bottom:0}.app-shell{border-radius:0;border:none;box-shadow:none;background:rgba(250,247,240,.95)}}.top-actions{display:flex;align-items:center;gap:var(--space-sm);padding:10px var(--space-md) 8px;overflow-x:auto;-webkit-overflow-scrolling:touch;background:transparent;flex-shrink:0;border-bottom:1px solid rgba(232,228,220,.6);touch-action:pan-x;scroll-snap-type:x proximity;scrollbar-width:none}.top-actions::-webkit-scrollbar{display:none}.icon-action{border:none;background:transparent;display:flex;flex-direction:column;align-items:center;gap:5px;padding:2px 0;cursor:pointer;transition:opacity .15s;min-width:62px;flex-shrink:0;scroll-snap-align:start}.icon-action:active{opacity:.6}.icon-action .icon{width:44px;height:44px;border-radius:var(--radius-md);background:rgba(255,255,255,.92);box-shadow:inset 0 0 0 1px #ffffffb3,0 4px 10px #0000000d;display:flex;align-items:center;justify-content:center;color:var(--color-text);transition:transform .15s,box-shadow .15s}.icon-action:active .icon{transform:scale(.93);box-shadow:none}.icon-action .label{font-size:var(--font-xs);color:var(--color-text-secondary);font-weight:600;white-space:nowrap}.wind-chip{margin:var(--space-md) auto var(--space-md);width:fit-content;background:var(--color-surface-alt);color:var(--color-accent);border-radius:var(--radius-full);padding:6px 20px;font-size:var(--font-sm);font-weight:600;letter-spacing:.5px}.room-bar{text-align:center;font-size:var(--font-xs);color:var(--color-text-muted);margin-bottom:-6px}.board-shell{flex:1;position:relative;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-y:auto;padding:0 10px;scrollbar-width:none;touch-action:pan-y pinch-zoom}.board-shell::-webkit-scrollbar{display:none}.board-shell.board-shell-fixed{overflow:hidden;overscroll-behavior:none;touch-action:manipulation;padding-left:4px;padding-right:4px}.mahjong-board{flex:1;display:flex;align-items:center;justify-content:center;padding:6px 4px;min-height:0}.mahjong-table{position:relative;flex-shrink:0;border-radius:28px;background:linear-gradient(145deg,#7f5a3a,#6a482e);padding:14px;box-shadow:inset 0 0 0 2px #ffffff1f,0 10px 30px #0000002e}.table-felt{position:absolute;top:14px;right:14px;bottom:14px;left:14px;border-radius:20px;background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.08),transparent 40%),radial-gradient(circle at 70% 75%,rgba(0,0,0,.1),transparent 45%),linear-gradient(135deg,#3b8b5f,#2f7650);box-shadow:inset 0 0 0 1px #ffffff24}.seat{width:clamp(80px,26%,128px);background:#ffffff;border-radius:16px;border:1.5px solid #2d2d2d;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:3px 4px silver,5px 6px #4a4a4a;padding:10px 6px;cursor:pointer;transition:transform .18s cubic-bezier(.25,.46,.45,.94),box-shadow .18s;position:absolute;z-index:2;transform:var(--seat-transform, none);overflow:hidden}.seat:empty{border:2.5px dashed rgba(255,255,255,.45);background:rgba(255,255,255,.12);box-shadow:none;min-height:110px;cursor:default}.seat:active{transform:var(--seat-transform, none) scale(.97) translateY(2px);box-shadow:1px 2px silver,2px 3px #4a4a4a}.seat-active:hover{filter:brightness(1.02);box-shadow:3px 5px silver,5px 7px #4a4a4a}.seat:before{content:"";position:absolute;top:0;left:0;right:0;height:40%;border-radius:14px 14px 0 0;background:linear-gradient(to bottom,rgba(255,255,255,.55),transparent);pointer-events:none}.seat:after{content:none}.seat-tap-hint{font-size:10px;color:var(--color-text-muted);opacity:0;margin-top:4px;transition:opacity .2s;letter-spacing:.5px}.seat-active:active .seat-tap-hint,.seat-active:hover .seat-tap-hint{opacity:1}@media (hover: none){.seat-active .seat-tap-hint{opacity:.6}}.seat-top{top:4%;left:50%;--seat-transform: translateX(-50%)}.seat-bottom{bottom:4%;left:50%;--seat-transform: translateX(-50%)}.seat-left{top:50%;left:4%;--seat-transform: translateY(-50%)}.seat-right{top:50%;right:4%;--seat-transform: translateY(-50%)}.seat-wind{font-size:12px;font-weight:800;color:#2d2d2d;background:#f0f0f0;border:1px solid #888;border-radius:999px;padding:2px 10px 3px;margin-bottom:4px;letter-spacing:1.1px}.avatar-wrap{position:relative;margin-bottom:4px}.avatar{font-size:26px;background:#fff;border:1.5px solid #4a4a4a;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:1px 2px #4a4a4a}.banker-badge{position:absolute;top:-6px;left:-12px;background:#d32f2f;border:1px solid #8b1a1a;color:#fff;font-size:11px;font-weight:800;padding:2px 7px;border-radius:6px;box-shadow:1px 2px #4a4a4a}.seat-name{font-size:14px;color:#2d2d2d;margin-bottom:2px;font-weight:700}.seat-score{font-size:34px;font-weight:800;line-height:1;color:#2d2d2d}.seat-score.pos{color:var(--color-positive)}.seat-score.neg{color:var(--color-negative)}.center-pot{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;z-index:3}.center-round-num{font-size:var(--font-xs);color:var(--color-text-muted);font-weight:500}.center-btn{background:#fff;border:1.5px solid #4a4a4a;border-radius:var(--radius-full);padding:10px 22px;font-size:var(--font-sm);color:#2d2d2d;box-shadow:2px 3px #4a4a4a;font-weight:700;white-space:nowrap;cursor:pointer;transition:transform .15s,box-shadow .15s}.center-btn:active{transform:scale(.97) translateY(2px);box-shadow:1px 1px #4a4a4a}@media (max-width: 640px){.wind-chip{margin:10px auto 8px}.room-bar{margin-bottom:2px}.mahjong-board{min-height:0;padding:4px 2px 2px}.mahjong-table{border-radius:22px;padding:10px}.table-felt{top:10px;right:10px;bottom:10px;left:10px;border-radius:16px}.seat{width:clamp(72px,26%,108px);padding:8px 4px}.avatar{width:38px;height:38px;font-size:22px}.seat-name{font-size:13px}.seat-score{font-size:30px}.center-btn{padding:8px 16px}}.bottom-tabs{background:rgba(255,255,255,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(232,228,220,.9);border-radius:22px;padding-bottom:0;display:grid;grid-template-columns:1fr 1fr;height:62px;flex-shrink:0;margin:6px 12px calc(10px + var(--safe-area-bottom));box-shadow:0 10px 24px #0000001f}.tab-btn{border:none;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--color-text-muted);font-size:var(--font-xs);font-weight:500;cursor:pointer;position:relative;transition:color .2s}.tab-btn .icon{font-size:22px;display:flex;align-items:center;justify-content:center}.tab-btn.active{color:var(--color-primary)}.tab-btn.active:after{content:"";position:absolute;top:6px;left:34%;right:34%;height:3px;background:var(--color-primary);border-radius:999px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:100;display:flex;align-items:flex-end;justify-content:center;padding-bottom:var(--safe-area-bottom);animation:overlayFadeIn .2s ease}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--color-bg);width:100%;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-lg) var(--space-md) var(--space-lg);position:relative;max-height:85vh;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch;animation:slideUp .3s cubic-bezier(.33,1,.68,1)}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal-overlay.modal-center{align-items:center;padding-bottom:0}.modal-overlay.modal-center .modal-content{width:90%;max-width:400px;border-radius:var(--radius-lg);max-height:90vh;animation:popIn .25s cubic-bezier(.33,1,.68,1)}@keyframes popIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-handle{width:36px;height:4px;background:var(--color-border);border-radius:var(--radius-full);margin:0 auto var(--space-md)}.modal-title{font-size:var(--font-xl);font-weight:700;color:var(--color-text);text-align:center;margin:0 0 var(--space-lg)}.modal-close-btn{position:absolute;top:10px;right:10px;width:32px;height:32px;border:1px solid var(--color-border);border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;transition:background-color .15s ease,color .15s ease}.modal-close-btn:hover{background:var(--color-bg-soft);color:var(--color-text)}.modal-close-btn:active{transform:translateY(1px)}.card{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md);box-shadow:var(--shadow-sm)}.card h2{font-size:var(--font-base);margin:0 0 var(--space-sm);color:var(--color-text);font-weight:600}.section-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);cursor:pointer}.section-header h3{font-size:var(--font-base);font-weight:600;color:var(--color-text);margin:0;flex:1}.section-header .section-icon{width:32px;height:32px;border-radius:var(--radius-sm);background:var(--color-surface-alt);display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary)}.section-header .chevron{color:var(--color-text-muted);transition:transform .2s}.section-header .chevron.open{transform:rotate(180deg)}.section-body{overflow:hidden;transition:max-height .25s ease}input,select{width:100%;padding:11px 12px;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-size:16px;color:var(--color-text);transition:border-color .15s;box-sizing:border-box}input:focus,select:focus{outline:none;border-color:var(--color-primary)}input::placeholder{color:var(--color-text-muted)}label{display:block;font-size:var(--font-sm);color:var(--color-text-secondary);font-weight:500}button.primary-btn{width:100%;background:var(--color-primary);color:#fff;border:none;padding:14px;border-radius:var(--radius-md);font-size:var(--font-lg);font-weight:600;margin-top:var(--space-md);cursor:pointer;transition:background .15s,transform .1s}button.primary-btn:active{background:var(--color-primary-hover);transform:scale(.98)}button.secondary-btn{width:100%;background:var(--color-surface-alt);color:var(--color-text);border:1.5px solid var(--color-border);padding:12px;border-radius:var(--radius-md);font-size:var(--font-base);font-weight:500;cursor:pointer;transition:background .15s,transform .1s}button.secondary-btn:active{background:var(--color-border);transform:scale(.98)}.hidden{display:none}.grid{display:grid;gap:10px;margin-bottom:10px}.grid.two{grid-template-columns:1fr 1fr}.grid.four{grid-template-columns:repeat(4,1fr)}.row{display:flex;gap:var(--space-sm);flex-wrap:wrap}.round-section{margin-bottom:var(--space-md)}.add-round-body{padding-bottom:20px}.add-round-sticky-footer{position:sticky;bottom:0;z-index:20;background:var(--color-bg);padding-top:10px;margin:0 calc(var(--space-md) * -1) calc(var(--space-lg) * -1);padding-left:var(--space-md);padding-right:var(--space-md);padding-bottom:calc(var(--space-md) + var(--safe-area-bottom));border-top:1px solid rgba(232,228,220,.8);box-shadow:0 -8px 20px #0000000f}.quick-note-row{display:flex;gap:8px;margin-bottom:10px}.quick-note-btn{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);border-radius:var(--radius-full);padding:7px 12px;font-size:var(--font-xs);font-weight:600;cursor:pointer}.quick-note-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#eaf5e8}.quick-adjust-btn{margin-top:0}.choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:14px}.choice-btn{border:none;border-radius:22px;padding:16px 10px;font-size:16px;font-weight:600;cursor:pointer}.modal-center .modal-title{font-size:18px}.choice-btn-round{background:#e5f4ef;color:#5db492}.choice-btn-adjust{background:#f5f1e8;color:#b08b4e}.special-adjust-layout{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.special-picker-col{border-radius:16px;background:#fbfbfc;border:1px solid #e6e1d7;overflow:hidden;text-align:center}.special-picker-arrow{border:none;background:transparent;width:100%;height:24px;color:#9c978f;display:flex;align-items:center;justify-content:center}.special-picker-value{height:56px;display:flex;align-items:center;justify-content:center;color:#a19c93;font-size:18px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.special-picker-value.current{color:#3b3834;font-size:24px;font-weight:600}.special-picker-value.prev,.special-picker-value.next{opacity:.9}.special-adjust-hint{text-align:center;color:var(--color-text-muted);font-size:12px;margin-bottom:8px}.special-adjust-summary{text-align:center;color:var(--color-text-secondary);font-size:18px;font-weight:600;margin-bottom:8px}.special-confirm-btn{width:100%;border:none;background:transparent;color:#63b68f;font-size:18px;font-weight:600;padding:6px 0 0;cursor:pointer}.special-confirm-btn:disabled{opacity:.35;cursor:default}.round-section-label{font-size:var(--font-sm);font-weight:600;color:var(--color-text);margin-bottom:var(--space-sm);display:flex;align-items:center;gap:var(--space-sm)}.fan-count-badge{background:var(--color-primary);color:#fff;font-size:11px;font-weight:700;min-width:20px;height:20px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}.direct-fan-row{display:flex;align-items:center;justify-content:flex-start;gap:10px;margin-bottom:6px}.direct-fan-label{margin:0;font-size:var(--font-sm);color:var(--color-text-secondary);white-space:nowrap}.dual-picker-row{display:flex;align-items:stretch;gap:12px}.picker-block{display:flex;flex-direction:column;gap:6px;flex:1}.round-section-label.picker-label{margin-bottom:0}.fan-slot-picker{width:100%;border-radius:16px;border:1px solid #d8d8d8;background:#fbfbfc;display:flex;flex-direction:column;align-items:stretch;overflow:hidden;flex-shrink:0;box-shadow:inset 0 1px #ffffffb3}.fan-slot-arrow{border:none;background:transparent;height:24px;display:flex;align-items:center;justify-content:center;color:#8d8a84;cursor:pointer}.fan-slot-arrow:active{background:rgba(0,0,0,.04)}.fan-slot-arrow:disabled{opacity:.25;cursor:default}.fan-slot-values{border-top:1px solid rgba(140,140,140,.18);border-bottom:1px solid rgba(140,140,140,.18);background:linear-gradient(to bottom,rgba(250,250,252,.98) 0%,#ffffff 50%,rgba(250,250,252,.98) 100%)}.fan-slot-value{width:100%;height:30px;border:none;background:transparent;text-align:center;color:#aaa59c}.fan-slot-value.near{font-size:24px;cursor:pointer}.fan-slot-value.near:active{opacity:.65}.fan-slot-value.near:disabled{opacity:.35;cursor:default}.fan-slot-value.current{font-size:38px;line-height:1;font-weight:600;color:var(--color-text);height:40px}.target-slot-picker{width:100%;border-radius:16px;border:1px solid #d8d8d8;background:#fbfbfc;display:flex;flex-direction:column;align-items:stretch;overflow:hidden;box-shadow:inset 0 1px #ffffffb3}.target-slot-values{border-top:1px solid rgba(140,140,140,.18);border-bottom:1px solid rgba(140,140,140,.18);background:linear-gradient(to bottom,rgba(250,250,252,.98) 0%,#ffffff 50%,rgba(250,250,252,.98) 100%)}.target-slot-value{width:100%;height:30px;border:none;background:transparent;display:flex;align-items:center;justify-content:center;gap:6px}.target-slot-value.near{cursor:pointer;opacity:.62}.target-slot-value.near:active{opacity:.45}.target-slot-value.current{height:40px;opacity:1}.target-slot-avatar{font-size:17px;line-height:1}.target-slot-name{font-size:17px;font-weight:600;color:#9f9a90}.target-slot-value.current .target-slot-name{color:var(--color-text);font-size:28px;letter-spacing:.5px}.target-slot-value.near .target-slot-avatar{display:none}.target-slot-value.near .target-slot-name{font-size:19px}@media (max-width: 420px){.dual-picker-row{gap:8px}.target-slot-name{font-size:15px}.target-slot-value.current .target-slot-name{font-size:24px}}.toggle-pattern-btn{width:100%;border:1.5px dashed var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);padding:9px 12px;font-size:var(--font-sm);font-weight:600;cursor:pointer;transition:border-color .15s,color .15s,background .15s;margin-bottom:var(--space-sm)}.toggle-pattern-btn:active{background:var(--color-surface-alt);border-color:var(--color-text-muted)}.fan-hint{font-size:var(--font-xs);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.player-picker{display:flex;gap:var(--space-sm)}.player-pick-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;transition:all .15s}.player-pick-btn:active{transform:scale(.95)}.player-pick-btn .pick-avatar{font-size:24px;line-height:1;width:36px;height:36px;border-radius:50%;background:var(--color-surface-alt);display:flex;align-items:center;justify-content:center}.player-pick-btn .pick-name{font-size:var(--font-xs);font-weight:500;color:var(--color-text-secondary)}.player-pick-btn.selected{border-color:var(--color-primary);background:#eaf5e8}.player-pick-btn.selected .pick-name{color:var(--color-primary);font-weight:600}.player-pick-btn.loser.selected{border-color:var(--color-negative);background:#fdf0ef}.player-pick-btn.loser.selected .pick-name{color:var(--color-negative);font-weight:600}.player-pick-btn.self-draw.selected{border-color:var(--color-accent);background:#fdf5ea}.player-pick-btn.self-draw.selected .pick-name{color:var(--color-accent);font-weight:600}.selected-fans{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:var(--space-sm)}.selected-fan-chip{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:var(--radius-full);background:#eaf5e8;color:var(--color-primary);border:1.5px solid var(--color-primary);font-size:var(--font-xs);font-weight:600;cursor:pointer;transition:all .15s}.selected-fan-chip:active{transform:scale(.93);opacity:.7}.fan-count-multi{font-size:11px;font-weight:700;opacity:.9}.chip-fan-value{opacity:.75;font-weight:500}.fan-search-wrap{position:relative;margin-bottom:var(--space-sm)}.fan-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--color-text-muted);pointer-events:none}.fan-search-input{width:100%;padding:10px 36px;border:1.5px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-surface);font-size:var(--font-sm);color:var(--color-text);box-sizing:border-box;transition:border-color .15s}.fan-search-input:focus{outline:none;border-color:var(--color-primary)}.fan-search-input::placeholder{color:var(--color-text-muted)}.fan-search-clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:var(--color-surface-alt);color:var(--color-text-muted);width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.fan-category-filter-row{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:var(--space-sm);padding-bottom:2px}.fan-category-filter-chip{border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);border-radius:var(--radius-full);padding:6px 12px;font-size:var(--font-xs);font-weight:600;white-space:nowrap;cursor:pointer}.fan-category-filter-chip.active{border-color:var(--color-primary);background:#eaf5e8;color:var(--color-primary)}.fan-list-scroll{display:flex;flex-direction:column;gap:10px;max-height:260px;overflow-y:auto;-webkit-overflow-scrolling:touch;margin-bottom:var(--space-sm);padding:2px}.fan-category-block{display:flex;flex-direction:column;gap:6px}.fan-category-title{font-size:var(--font-xs);font-weight:700;color:var(--color-text-secondary);padding-left:2px}.fan-category-items{display:flex;flex-wrap:wrap;gap:6px}.fan-pattern-btn{background:var(--color-surface);padding:7px 12px;border-radius:var(--radius-full);font-size:var(--font-xs);color:var(--color-text-secondary);border:1.5px solid var(--color-border);cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:3px;line-height:1}.fan-pattern-btn:active{transform:scale(.95)}.fan-pattern-btn.selected{background:#eaf5e8;color:var(--color-primary);border-color:var(--color-primary);font-weight:600}.fan-pattern-btn .fan-value{opacity:.65;font-weight:400}.fan-pattern-btn.selected .fan-value{opacity:.8}.fan-item-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:rgba(76,175,106,.14);font-size:10px;font-weight:700}.fan-empty{width:100%;text-align:center;padding:var(--space-lg) 0;font-size:var(--font-sm);color:var(--color-text-muted)}.extra-note-row{display:flex;gap:var(--space-md);align-items:flex-start}.extra-fan-group{flex-shrink:0}.note-group{flex:1;min-width:0}.note-input{width:100%;padding:9px 12px;border:1.5px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--font-sm);color:var(--color-text);box-sizing:border-box}.note-input:focus{outline:none;border-color:var(--color-primary)}.note-input::placeholder{color:var(--color-text-muted)}.stepper{display:flex;align-items:center;gap:0;background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.stepper-btn{border:none;background:transparent;padding:8px 12px;cursor:pointer;color:var(--color-text);display:flex;align-items:center;justify-content:center;transition:background .1s}.stepper-btn:active{background:var(--color-surface-alt)}.stepper-btn:disabled{opacity:.3;cursor:default}.stepper-value{min-width:32px;text-align:center;font-size:var(--font-base);font-weight:700;color:var(--color-text);border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);padding:6px 0}.score-preview{margin-top:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-surface);border:1.5px solid var(--color-border)}.preview-row{display:flex;justify-content:space-between;align-items:flex-end}.preview-item{display:flex;flex-direction:column;align-items:center;gap:4px}.preview-item .label{font-size:var(--font-xs);color:var(--color-text-muted)}.preview-item .value{font-size:var(--font-base);font-weight:700;color:var(--color-text)}.preview-item .value.accent{color:var(--color-accent)}.preview-item.total .value{color:var(--color-positive);font-size:var(--font-2xl);line-height:1}.confirm-round-btn:disabled{opacity:.45;cursor:default;transform:none!important}.records-container{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:auto;touch-action:pan-y pinch-zoom;padding:var(--space-md)}.records-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-xl) 0;color:var(--color-text-muted);gap:var(--space-sm)}.records-empty .empty-icon{font-size:48px;opacity:.3}.records-empty span{font-size:var(--font-sm)}.record-card{display:flex;align-items:stretch;background:var(--color-surface);border-radius:var(--radius-md);margin-bottom:var(--space-sm);box-shadow:var(--shadow-sm);overflow:hidden}.record-bar{width:4px;flex-shrink:0}.record-bar.win{background:var(--color-positive)}.record-bar.draw{background:var(--color-text-muted)}.record-bar.adjust{background:var(--color-accent)}.record-body{flex:1;padding:12px var(--space-md);display:flex;align-items:center;gap:var(--space-sm);min-width:0}.record-num{width:26px;height:26px;border-radius:50%;background:var(--color-surface-alt);display:flex;align-items:center;justify-content:center;font-size:var(--font-xs);font-weight:700;color:var(--color-text-secondary);flex-shrink:0}.record-info{flex:1;min-width:0}.record-headline{font-size:var(--font-sm);font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-detail{font-size:var(--font-xs);color:var(--color-text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.record-amount{font-size:var(--font-lg);font-weight:700;flex-shrink:0;padding-left:var(--space-sm)}.record-amount.pos{color:var(--color-positive)}.record-amount.neg{color:var(--color-text-muted)}.record-amount.accent{color:var(--color-accent)}.la-status-card{width:100%;min-width:0;max-width:100%;padding:var(--space-md);overflow-x:hidden}.la-status-empty{text-align:center;color:var(--color-text-muted);font-size:var(--font-sm);padding:var(--space-lg) var(--space-sm)}.la-status-winner{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-sm)}.la-status-winner .label{font-size:var(--font-xs);color:var(--color-text-muted)}.la-status-winner .value{font-size:var(--font-base);font-weight:700;color:var(--color-text)}.la-status-section-title{font-size:var(--font-xs);color:var(--color-text-muted);margin:10px 0 6px;font-weight:600}.la-status-table{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:10px;max-width:100%}.la-status-head,.la-status-row{display:grid;grid-template-columns:1.4fr .8fr .8fr;gap:var(--space-xs);align-items:center;padding:8px var(--space-sm);font-size:var(--font-sm)}.la-status-head span,.la-status-row span{min-width:0;padding:0 2px}.la-status-row span:first-child,.la-status-row-settle span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.la-status-head{background:var(--color-surface-alt);color:var(--color-text-secondary);font-weight:600}.la-status-row{border-top:1px solid var(--color-border);color:var(--color-text)}.la-status-head-score,.la-status-row-score{grid-template-columns:repeat(2,minmax(0,1fr))}.la-status-head-la,.la-status-row-la{grid-template-columns:1.25fr .7fr .7fr .8fr}.la-status-head-settle,.la-status-row-settle{grid-template-columns:repeat(3,minmax(0,1fr))}.la-status-head span:first-child,.la-status-row span:first-child{text-align:left}.la-status-head span:nth-child(2),.la-status-head span:nth-child(3),.la-status-row span:nth-child(2),.la-status-row span:nth-child(3){text-align:center}.la-status-head-la span:nth-child(4),.la-status-row-la span:nth-child(4){text-align:center}.amount-positive{color:var(--color-positive);font-weight:700}.amount-negative{color:var(--color-negative);font-weight:700}.la-surrender-btn{width:100%;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--font-xs);font-weight:600;padding:6px 8px;cursor:pointer}.la-surrender-btn:active{background:var(--color-surface-alt)}.room-join{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:clamp(20px,5vw,30px);padding-top:max(24px,7vh);overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:center;gap:var(--space-lg);scrollbar-width:none;overscroll-behavior-y:auto}.room-join::-webkit-scrollbar{display:none}.room-join-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.room-join-brand .logo{font-size:56px}.room-join-brand h1{font-size:var(--font-xl);font-weight:700;color:var(--color-text);margin:0}.room-join-brand p{font-size:var(--font-sm);color:var(--color-text-muted);margin:0}.room-join-actions{width:100%;max-width:340px;background:rgba(255,255,255,.82);border:1px solid rgba(232,228,220,.8);border-radius:18px;padding:16px;box-shadow:0 8px 22px #32291d14}.room-join-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-lg) 0;color:var(--color-text-muted);font-size:var(--font-sm)}.room-join-divider:before,.room-join-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.room-join-input-row{display:flex;gap:var(--space-sm)}.room-join-input-row input{flex:1}.room-join-input-row button{flex-shrink:0;padding:11px 20px;background:var(--color-surface-alt);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-base);font-weight:600;color:var(--color-text);cursor:pointer;transition:background .15s}.room-join-input-row button:active{background:var(--color-border)}.toast-container{position:fixed;bottom:calc(var(--safe-area-bottom, 0px) + 72px);left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);pointer-events:none}.toast{background:var(--color-text);color:#fff;padding:10px 20px;border-radius:var(--radius-full);font-size:var(--font-sm);font-weight:500;box-shadow:var(--shadow-lg);animation:toastIn .3s ease,toastOut .3s ease 2.7s forwards;pointer-events:auto}.toast.error{background:var(--color-negative)}.toast.info{background:var(--color-text)}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(10px)}}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-top:var(--space-lg)}.confirm-actions .cancel-btn{padding:12px;border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);font-size:var(--font-base);font-weight:500;color:var(--color-text-secondary);cursor:pointer}.confirm-actions .danger-btn{padding:12px;border:none;border-radius:var(--radius-md);background:var(--color-negative);font-size:var(--font-base);font-weight:600;color:#fff;cursor:pointer}.settings-section{border-bottom:1px solid var(--color-border);padding-bottom:var(--space-md);margin-bottom:var(--space-md)}.settings-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.settings-section .row{margin-top:var(--space-sm)}.settings-section button{padding:10px var(--space-md);border:none;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;font-size:var(--font-sm);font-weight:600;cursor:pointer;transition:background .15s}.settings-section button:active{background:var(--color-primary-hover)}.settings-section button.outline{background:transparent;border:1.5px solid var(--color-border);color:var(--color-text)}.inline-label{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-sm);color:var(--color-text-secondary);font-weight:500;margin-bottom:var(--space-sm)}.inline-label input,.inline-label select{flex:1}.emoji-picker-wrap{position:relative}.emoji-picker-trigger{width:48px;height:48px;border-radius:50%;border:2px solid var(--color-border);background:var(--color-bg-secondary);font-size:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;flex-shrink:0}.emoji-picker-trigger:active{transform:scale(.95)}.emoji-picker-dropdown{position:absolute;top:54px;left:0;z-index:200;background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000026;padding:10px;width:290px}.emoji-custom-row{display:flex;gap:6px;margin-bottom:8px}.emoji-custom-input{flex:1;font-size:16px;padding:6px 8px;border:1px solid var(--color-border);border-radius:8px}.emoji-custom-btn{padding:6px 12px;font-size:13px;border-radius:8px;border:none;background:var(--color-primary);color:#fff;font-weight:600;white-space:nowrap;cursor:pointer}.emoji-custom-btn:disabled{opacity:.4}.emoji-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:2px}.emoji-option{width:32px;height:32px;border:none;background:transparent;border-radius:6px;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.emoji-option:hover{background:var(--color-bg-secondary)}.emoji-option.selected{background:var(--color-primary-light)}.player-setup-list{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.player-setup-row{display:flex;align-items:center;gap:10px}.player-setup-row input{flex:1}.player-setup-input{flex:1;display:flex;flex-direction:column;gap:2px}.player-setup-input .wind-label{font-size:12px;color:var(--color-text-muted);font-weight:500}.settings-player-list{display:flex;flex-direction:column;gap:16px;margin-bottom:16px}.settings-player-row{display:flex;align-items:center;gap:12px;padding:12px 0;cursor:grab;transition:opacity .15s}.settings-player-row:active{cursor:grabbing}.settings-player-row.drag-over{opacity:.62}.settings-player-row.touch-dragging{-webkit-user-select:none;user-select:none}.settings-player-row.bench-seat{opacity:.65}.settings-drag-handle{color:var(--color-text-muted);flex-shrink:0;display:flex;touch-action:none;opacity:.6;cursor:grab}.settings-drag-handle:active{cursor:grabbing;color:var(--color-primary)}.settings-reorder-buttons{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.settings-section .settings-order-btn{width:24px;height:24px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;padding:0}.settings-section .settings-order-btn:active:not(:disabled){background:var(--color-surface-alt)}.settings-section .settings-order-btn:disabled{opacity:.3;cursor:default;background:var(--color-surface-alt)}.settings-avatar-wrap{flex-shrink:0}.settings-avatar-wrap .emoji-picker-trigger{width:48px;height:48px;border-radius:50%;border:1.5px solid var(--color-border);background:var(--color-surface);font-size:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.settings-avatar-wrap .emoji-picker-trigger:active{transform:scale(.95)}.settings-player-input-wrap{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.settings-wind-label{font-size:13px;color:var(--color-text-secondary);font-weight:500}.settings-player-input{width:100%;padding:12px 14px;border:1.5px solid var(--color-border);border-radius:12px;background:var(--color-surface);font-size:16px;color:var(--color-text);box-sizing:border-box;transition:border-color .15s}.settings-player-input:focus{outline:none;border-color:var(--color-primary)}.settings-player-input::placeholder{color:var(--color-text-muted)}.settings-section .settings-remove-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;padding:0;background:var(--color-surface-alt);color:var(--color-text-muted)}.settings-section .settings-remove-btn:hover,.settings-section .settings-remove-btn:active{color:var(--color-negative);background:rgba(226,87,80,.1)}.settings-hint{font-size:13px;color:var(--color-text-muted);margin:0 0 16px}.drag-player-list{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.drag-player-row{display:flex;align-items:center;gap:8px;padding:8px;border-radius:10px;background:var(--color-surface-alt);border:1px solid var(--color-border);cursor:grab;transition:box-shadow .15s,opacity .15s}.drag-handle{color:var(--color-text-muted);flex-shrink:0;display:flex;touch-action:none}.seat-wind-tag{font-size:12px;font-weight:700;color:#fff;background:var(--color-primary);border-radius:4px;padding:2px 6px;flex-shrink:0;min-width:24px;text-align:center}.seat-bench-tag{font-size:11px;font-weight:600;color:var(--color-text-muted);background:var(--color-border);border-radius:4px;padding:2px 6px;flex-shrink:0}.drag-player-input{flex:1;min-width:0}.icon-btn-sm{width:28px;height:28px;border-radius:50%;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;padding:0;background:var(--color-bg-secondary);color:var(--color-text-secondary)}.icon-btn-sm.danger{color:var(--color-negative)}.add-player-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:12px;border:1.5px dashed var(--color-border);border-radius:12px;background:transparent;color:var(--color-text-secondary);font-size:14px;cursor:pointer;margin-top:8px;transition:border-color .15s,color .15s}.add-player-btn:hover,.add-player-btn:active{border-color:var(--color-text-muted);color:var(--color-text)}.player-summary{display:flex;flex-direction:column;gap:6px}.player-summary-item{display:flex;align-items:center;gap:8px;font-size:15px}.hint{font-size:13px;color:var(--color-text-muted);margin:0 0 10px}
