: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)}.loading-spinner-wrap{display:inline-flex;align-items:center;gap:var(--space-sm)}.loading-spinner-wrap--labeled{flex-wrap:wrap;justify-content:center}.loading-spinner{display:inline-block;flex-shrink:0;border:2px solid rgba(45,42,38,.12);border-top-color:var(--color-accent);border-radius:50%;animation:loading-spin .65s linear infinite;vertical-align:middle}.loading-spinner--on-primary{border-color:#ffffff59;border-top-color:#fff}.loading-spinner-text{font-size:var(--font-sm);color:var(--color-text-secondary)}.loading-spinner-wrap--stack{flex-direction:column;gap:var(--space-md)}.loading-spinner-text--inverse{color:#fffffff2;font-weight:600}@keyframes loading-spin{to{transform:rotate(360deg)}}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)}}.pwa-standalone .bottom-tabs{border-radius:0;padding-bottom:env(safe-area-inset-bottom,0px);height:calc(56px + env(safe-area-inset-bottom,0px));margin:0;border-left:none;border-right:none;border-bottom:none;box-shadow:0 -4px 16px #0000000f}.top-actions{display:flex;align-items:flex-start;gap:var(--space-sm);padding:10px var(--space-md) 8px;overflow:hidden;background:transparent;flex-shrink:0;border-bottom:1px solid rgba(232,228,220,.6)}.top-actions-scroll-wrap{position:relative;flex:1;min-width:0}.top-actions-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x;scroll-snap-type:x proximity;scrollbar-width:none}.top-actions-scroll::-webkit-scrollbar{display:none}.top-actions-scroll-inner{display:flex;align-items:center;gap:var(--space-sm);width:max-content;min-height:100%}.top-actions-scroll-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .22s ease;z-index:1;display:flex;align-items:center;justify-content:center}.top-actions-scroll-fade--visible{opacity:1}.top-actions-scroll-fade--left{left:0;background:linear-gradient(to right,rgba(250,247,240,.95),transparent)}.top-actions-scroll-fade--right{right:0;background:linear-gradient(to left,rgba(250,247,240,.95),transparent)}.scroll-chevron{font-size:16px;font-weight:700;color:var(--color-text-muted);line-height:1}.top-actions-scroll-fade--right .scroll-chevron{animation:scroll-hint-right 1.5s ease-in-out infinite}.top-actions-scroll-fade--left .scroll-chevron{animation:scroll-hint-left 1.5s ease-in-out infinite}@keyframes scroll-hint-right{0%,to{transform:translate(0)}50%{transform:translate(3px)}}@keyframes scroll-hint-left{0%,to{transform:translate(0)}50%{transform:translate(-3px)}}.conn-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;align-self:flex-start;margin-top:4px;transition:background-color .4s,box-shadow .4s}.conn-dot--on{background:#4ade80;box-shadow:0 0 0 2px #4ade8040}.conn-dot--offline{background:#f87171;box-shadow:0 0 0 2px #f8717140}.conn-dot--off{background:#f87171;box-shadow:0 0 0 2px #f8717140;animation:conn-pulse 1.4s ease-in-out infinite}.top-actions-conn{display:flex;align-items:center;justify-content:center;flex-shrink:0;align-self:flex-start;margin-top:2px;min-height:22px;min-width:22px}.top-actions-conn .loading-spinner{border-color:#d4943a40;border-top-color:var(--color-accent)}@keyframes conn-pulse{0%,to{opacity:1}50%{opacity:.35}}.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-weight:800;padding:2px 5px 3px;border-radius:6px;box-shadow:1px 2px #4a4a4a;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;min-width:22px}.banker-badge-wind{font-size:11px}.banker-badge-streak{font-size:10px;font-weight:800;margin-top:1px;letter-spacing:-.02em}.banker-badge-solo{padding:2px 7px}.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}@media (max-width: 640px){.bottom-tabs{margin:0;border-radius:26px 26px 0 0;border-left:none;border-right:none;border-bottom:none;padding-bottom:var(--safe-area-bottom);height:calc(62px + var(--safe-area-bottom));background:rgba(255,255,255,.95);box-shadow:0 -4px 16px #0000000f}}.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;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) calc(var(--space-lg) + var(--safe-area-bottom));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-stack{z-index:110}.modal-overlay.modal-center .modal-content{width:90%;max-width:400px;border-radius:var(--radius-lg);padding-bottom:var(--space-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.offline-btn{width:100%;background:transparent;color:var(--color-text);border:1.5px solid var(--color-border);padding:13px;border-radius:var(--radius-md);font-size:var(--font-base);font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,transform .1s;letter-spacing:.3px}button.offline-btn:active{background:var(--color-surface-alt);border-color:var(--color-text-muted);transform:scale(.98)}button.primary-btn--loading{display:flex;align-items:center;justify-content:center;gap:10px}button.primary-btn--loading .loading-spinner-text,button.primary-btn--loading>span:last-child{color:#fff}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-label-with-help{justify-content:flex-start;gap:6px}.fan-help-icon-btn{border:none;background:transparent;color:var(--color-text-secondary);padding:2px;margin:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;flex-shrink:0}.fan-help-icon-btn:hover{color:var(--color-primary);background:rgba(0,0,0,.05)}.fan-catalog-help-hint{font-size:var(--font-xs);color:var(--color-text-secondary);line-height:1.45;margin:0 0 var(--space-md);text-align:left}.fan-help-selected{margin-bottom:var(--space-sm)}.fan-help-catalog-scroll{max-height:min(38vh,260px);margin-bottom:var(--space-md)}.fan-catalog-help-footer{border-top:1px solid rgba(232,228,220,.9);padding-top:var(--space-md);margin-top:var(--space-sm)}.fan-catalog-help-total{font-size:var(--font-base);color:var(--color-text);margin-bottom:var(--space-sm);text-align:center}.fan-catalog-help-total strong{font-size:22px;color:var(--color-primary)}.fan-catalog-help-actions{display:flex;gap:10px}.fan-catalog-help-actions .primary-btn,.fan-catalog-help-actions .secondary-btn{flex:1;margin:0}.fan-help-clear-btn{flex:0 0 auto;min-width:72px}.fan-mode-bar{display:flex;justify-content:flex-end;margin-bottom:var(--space-sm)}.fan-mode-switch-btn{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-xs);padding:6px 10px;margin:0}.fan-editor-scroll{max-height:min(50vh,360px);overflow-y:auto;padding-right:4px;margin-bottom:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm)}.fan-editor-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:10px;background:rgba(0,0,0,.02);border:1px solid rgba(0,0,0,.04);transition:opacity .12s ease,background .12s ease}.fan-editor-row.hidden{opacity:.45;background:rgba(0,0,0,.01)}.fan-editor-row.custom{background:rgba(250,200,120,.08);border-color:#c88c3c26;flex-wrap:wrap}.fan-editor-name{flex:1 1 auto;min-width:0;display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:var(--font-sm);color:var(--color-text)}.fan-editor-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:999px;background:var(--color-primary, #b45309);color:#fff;white-space:nowrap}.fan-editor-formula{font-size:11px;color:var(--color-text-secondary)}.fan-editor-controls{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.fan-editor-num{width:58px;padding:4px 6px;text-align:right;font-variant-numeric:tabular-nums}.fan-editor-unit{font-size:var(--font-xs);color:var(--color-text-secondary)}.fan-editor-action{border:1px solid rgba(0,0,0,.08);background:#fff;color:var(--color-text-secondary);width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin-left:2px}.fan-editor-action:hover{color:var(--color-primary);border-color:#00000026}.fan-editor-action.hidden-action{color:#b45309}.fan-editor-action.danger:hover{color:#c0392b;border-color:#c0392b4d}.fan-editor-custom-fields{display:flex;flex:1 1 200px;min-width:0;gap:6px;flex-wrap:wrap}.fan-editor-text{min-width:0;flex:1 1 100px;padding:4px 8px;font-size:var(--font-sm);border:1px solid rgba(0,0,0,.12);border-radius:8px;background:#fff}.fan-editor-cat{flex:0 1 90px}.fan-editor-empty{font-size:var(--font-xs);color:var(--color-text-secondary);margin:4px 0 8px;text-align:center;padding:8px;border-radius:8px;background:rgba(0,0,0,.02)}.fan-editor-count{font-size:var(--font-xs);color:var(--color-text-secondary);font-weight:400;margin-left:4px}.fan-editor-add{width:100%;margin:8px 0 0;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:var(--font-sm);padding:8px}.fan-editor-footer{border-top:1px solid rgba(232,228,220,.9);padding-top:var(--space-md);margin-top:var(--space-sm);display:flex;flex-direction:column;gap:2px}.fan-editor-footer-row{display:flex;gap:10px;align-items:center}.fan-editor-footer-row>button{flex:1 1 0;width:auto;margin:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:0}.fan-editor-save{margin:0;display:inline-flex;align-items:center;justify-content:center;gap:6px}.fan-editor-top{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin-bottom:var(--space-sm)}.fan-editor-hint{margin:0}.fan-editor-reset-link{align-self:flex-end;display:inline-flex;align-items:center;gap:4px;padding:2px 6px;margin:0;background:transparent;border:none;color:var(--color-text-muted, #7a7468);font-size:var(--font-xs);cursor:pointer;border-radius:6px;white-space:nowrap}.fan-editor-reset-link:hover{color:var(--color-text);background:var(--color-surface-alt)}.fan-editor-reset-link:active{transform:scale(.97)}.settings-fan-actions{display:flex;flex-direction:column;gap:8px}.settings-fan-actions>button{margin:0;width:100%}.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;touch-action:none;-webkit-user-select:none;user-select:none}.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;touch-action:none;-webkit-user-select:none;user-select:none}.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)}.record-card-clickable{cursor:pointer;transition:background .15s}.record-card-clickable:active{background:var(--color-surface-alt)}.record-detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;z-index:300;padding:0 0 env(safe-area-inset-bottom,0)}.record-detail-modal{background:var(--color-surface);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:480px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px);box-shadow:0 -4px 32px #00000040;animation:sheet-up .2s ease}.record-detail-header{display:flex;align-items:center;gap:var(--space-sm);padding:16px var(--space-md) 12px;border-bottom:1px solid var(--color-border)}.record-detail-num{font-size:var(--font-xs);font-weight:700;color:var(--color-text-secondary);background:var(--color-surface-alt);border-radius:var(--radius-sm);padding:2px 7px}.record-detail-title{flex:1;font-size:var(--font-md);font-weight:700;color:var(--color-text)}.record-detail-close{background:none;border:none;color:var(--color-text-muted);padding:4px;cursor:pointer;display:flex;align-items:center;border-radius:var(--radius-sm)}.record-detail-rows{padding:12px var(--space-md) 4px;display:flex;flex-direction:column;gap:10px}.record-detail-row{display:flex;align-items:flex-start;gap:var(--space-sm)}.record-detail-row-label{font-size:var(--font-xs);color:var(--color-text-secondary);min-width:64px;flex-shrink:0;padding-top:1px}.record-detail-row-value{font-size:var(--font-sm);color:var(--color-text);line-height:1.5;word-break:break-all}.record-detail-row.highlight .record-detail-row-label{color:var(--color-text-muted)}.record-detail-row.highlight .record-detail-row-value{font-size:var(--font-md);font-weight:700;color:var(--color-positive)}.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-winner-section{margin-top:var(--space-sm)}.la-winner-section-title{font-size:var(--font-xs);font-weight:600;color:var(--color-text-muted);margin-bottom:4px;padding-bottom:4px;border-bottom:1px solid var(--color-border)}.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.2fr .65fr .75fr .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{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:clamp(14px,3vh,26px) clamp(16px,5vw,30px);padding-top:max(clamp(36px,10vh,64px),var(--safe-area-top));padding-bottom:max(12px,var(--safe-area-bottom));overflow:hidden;text-align:center;gap:var(--space-md)}.room-join-top{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:var(--space-md);width:100%}.room-join-middle{flex:1 1 0;min-height:0;width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);overflow:hidden}.room-fan-editor-btn{background:rgba(255,250,240,.9)}.room-join-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);background:rgba(250,247,240,.82);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:inherit}.room-join-loading-overlay .loading-spinner-wrap--stack{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg) var(--space-xl);box-shadow:var(--shadow-md)}.room-join-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.room-join-brand .logo{font-size:clamp(44px,11vw,52px);line-height:1}.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)}.room-join-profile{width:100%;max-width:340px;display:flex;justify-content:center}.room-join-welcome{display:flex;align-items:center;gap:var(--space-sm);background:rgba(255,255,255,.7);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:7px 14px;font-size:var(--font-sm);color:var(--color-text-secondary)}.room-join-welcome-text strong{color:var(--color-text)}.room-join-edit-name{background:none;border:none;padding:0;font-size:var(--font-xs);color:var(--color-accent);cursor:pointer;font-weight:500}.room-join-set-name{background:none;border:1px dashed var(--color-border);border-radius:var(--radius-full);padding:6px 16px;font-size:var(--font-sm);color:var(--color-text-muted);cursor:pointer;transition:border-color .15s,color .15s}.room-join-set-name:hover{border-color:var(--color-accent);color:var(--color-accent)}.room-join-name-row{display:flex;gap:var(--space-sm);width:100%}.room-join-name-row input{flex:1;min-width:0}.room-join-name-row button{flex-shrink:0;padding:10px 16px;background:var(--color-primary);border:none;border-radius:var(--radius-sm);font-size:var(--font-sm);font-weight:600;color:#fff;cursor:pointer;transition:background .15s}.room-join-name-row button:disabled{opacity:.4;cursor:default}.room-join-name-cancel{background:var(--color-surface-alt)!important;color:var(--color-text-secondary)!important;border:1.5px solid var(--color-border)!important}.room-join-recent{width:100%;max-width:340px;flex:1 1 0;min-height:0;display:flex;flex-direction:column;gap:var(--space-sm);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-width:none;padding:var(--space-xs) 0 var(--space-sm);text-align:left}.room-join-recent::-webkit-scrollbar{display:none}.room-join-recent-title{font-size:var(--font-sm);font-weight:600;color:var(--color-text-secondary);text-align:left;padding:0 2px}.room-history-list{display:flex;flex-direction:column;gap:var(--space-sm)}.room-history-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);background:rgba(255,255,255,.82);border:1px solid rgba(232,228,220,.8);border-radius:var(--radius-md);padding:10px 12px;box-shadow:var(--shadow-sm)}.room-history-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}.room-history-header{display:flex;align-items:center;gap:var(--space-sm)}.room-history-code{font-size:var(--font-base);font-weight:700;color:var(--color-text);letter-spacing:.04em;font-family:SF Mono,Fira Code,monospace}.room-history-time{font-size:var(--font-xs);color:var(--color-text-muted);margin-left:auto}.room-history-players{font-size:var(--font-xs);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-history-actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.room-history-rejoin{padding:7px 12px;background:var(--color-primary);border:none;border-radius:var(--radius-sm);font-size:var(--font-xs);font-weight:600;color:#fff;cursor:pointer;white-space:nowrap;transition:background .15s}.room-history-rejoin:active{background:var(--color-primary-hover)}.room-history-remove{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);font-size:11px;color:var(--color-text-muted);cursor:pointer;transition:background .15s,color .15s}.room-history-remove:active{background:var(--color-surface-alt);color:var(--color-negative)}.room-history-btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:10px 20px;background:rgba(255,255,255,.82);border:1.5px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--font-sm);font-weight:600;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,border-color .15s}.room-history-btn:active{background:var(--color-surface-alt);border-color:var(--color-text-muted)}.room-history-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;background:var(--color-primary);color:#fff;border-radius:var(--radius-full);font-size:11px;font-weight:700;line-height:1}.room-history-empty{text-align:center;padding:var(--space-xl) var(--space-md);color:var(--color-text-muted);font-size:var(--font-sm)}.room-join-contact{flex-shrink:0;width:100%;max-width:340px;text-align:center;padding-top:var(--space-sm);padding-bottom:max(var(--space-sm),var(--safe-area-bottom))}.room-join-contact a{font-size:var(--font-sm);color:var(--color-text-secondary);text-decoration:underline;text-underline-offset:3px}.room-join-contact a:active{color:var(--color-primary)}.room-join-identity{width:100%;max-width:340px;display:flex;justify-content:center;min-height:36px}.room-join-identity-loading{display:flex;align-items:center;justify-content:center;min-height:36px;padding:8px 0}.room-join-identity-loading .loading-spinner-text{font-size:var(--font-xs);color:var(--color-text-muted)}.room-join-logged-in{display:flex;align-items:center;gap:var(--space-sm);background:rgba(255,255,255,.7);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:7px 14px;font-size:var(--font-sm)}.room-join-avatar{font-size:16px;line-height:1}.room-join-username{font-weight:600;color:var(--color-text);flex:1}.room-join-logout{background:none;border:none;padding:0;font-size:var(--font-xs);color:var(--color-text-muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.room-join-guest{display:flex;align-items:center;gap:var(--space-sm)}.room-join-local-name{font-size:var(--font-sm);color:var(--color-text-secondary);cursor:pointer;padding:6px 10px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:rgba(255,255,255,.6)}.room-join-login-btn{background:var(--color-accent);border:none;border-radius:var(--radius-full);padding:7px 18px;font-size:var(--font-sm);font-weight:600;color:#fff;cursor:pointer;transition:opacity .15s}.room-join-login-btn:active{opacity:.82}.auth-modal{padding:var(--space-lg) var(--space-md) var(--space-md)}.auth-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-lg)}.auth-modal-tabs{display:flex;gap:0;background:var(--color-surface-alt);border-radius:var(--radius-full);padding:3px}.auth-modal-tabs button{background:none;border:none;border-radius:var(--radius-full);padding:6px 20px;font-size:var(--font-sm);font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s}.auth-modal-tabs button.active{background:var(--color-surface);color:var(--color-text);font-weight:600;box-shadow:var(--shadow-sm)}.auth-modal-form{display:flex;flex-direction:column;gap:var(--space-md)}.auth-error{background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius-sm);padding:10px 12px;font-size:var(--font-sm);color:var(--color-negative);text-align:center}.auth-modal-switch{margin:var(--space-md) 0 0;text-align:center;font-size:var(--font-sm);color:var(--color-text-secondary)}.auth-modal-switch button{background:none;border:none;padding:0 0 0 4px;font-size:var(--font-sm);font-weight:600;color:var(--color-accent);cursor:pointer}.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-contact-footer{text-align:center;padding:var(--space-md) var(--space-sm) var(--space-lg)}.settings-contact-footer a{font-size:var(--font-sm);color:var(--color-text-secondary);text-decoration:underline;text-underline-offset:3px}.settings-contact-footer a:active{color:var(--color-primary)}.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:22px;margin-bottom:16px}.settings-player-group-head{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.settings-player-group-title{font-size:15px;font-weight:800;color:var(--color-text);letter-spacing:.02em}.settings-player-group-note{font-size:12px;line-height:1.45;color:var(--color-text-muted);font-weight:500}.settings-player-group-rows-table{border:1.5px solid var(--color-primary);border-radius:14px;background:linear-gradient(180deg,var(--color-primary-light) 0%,var(--color-surface) 55%);box-shadow:0 1px 2px #0000000f;overflow:hidden}.settings-player-group-rows-bench{border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface-alt);overflow:hidden}.settings-player-group-rows .settings-player-row{padding-left:12px;padding-right:12px}.settings-player-group-rows .settings-player-row+.settings-player-row{border-top:1px solid rgba(0,0,0,.08)}.settings-player-group-rows-bench .settings-player-row+.settings-player-row{border-top-color:var(--color-border)}.settings-wind-label-table{font-weight:800;color:var(--color-text);display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-on-table-tag{font-size:10px;font-weight:800;letter-spacing:.06em;color:var(--color-primary);background:var(--color-primary-light);border:1px solid var(--color-primary);opacity:.95;padding:2px 7px;border-radius:999px;line-height:1.2}.settings-player-list-readonly,.settings-player-row-readonly{cursor:default}.settings-drag-handle-readonly{opacity:.38;cursor:default;pointer-events:none}.settings-avatar-readonly{cursor:default;pointer-events:none;-webkit-user-select:none;user-select:none}.settings-player-row-readonly .settings-player-input{background:var(--color-surface-alt);color:var(--color-text)}.settings-edit-arrangement-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;width:100%}.settings-player-arrangement-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;align-items:stretch}.settings-player-arrangement-actions .secondary-btn,.settings-player-arrangement-actions .primary-btn{flex:1;min-width:0;width:auto;margin-top:0;min-height:48px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0 14px}.settings-to-bench-btn{flex-shrink:0;align-self:center;font-size:12px;font-weight:700;padding:8px 10px;line-height:1.2;white-space:nowrap;border-radius:10px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer}.settings-to-bench-btn:active{background:var(--color-surface-alt)}.settings-player-group-rows-table .settings-player-row{flex-wrap:wrap;row-gap:8px}@media (min-width: 420px){.settings-player-group-rows-table .settings-player-row{flex-wrap:nowrap}}.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:1}.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}.winner-select-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.winner-select-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 12px;border-radius:12px;border:1.5px solid var(--color-border);background:var(--color-bg-secondary);cursor:pointer;flex:1;min-width:60px;transition:border-color .15s,background .15s,box-shadow .15s}.winner-select-btn.selected{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 12%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-primary) 25%,transparent)}.winner-btn-avatar{font-size:20px;line-height:1}.winner-btn-name{font-size:13px;font-weight:600;color:var(--color-text)}.winner-select-btn.selected .winner-btn-name{color:var(--color-primary)}.winner-multi-warning{margin-top:6px;font-size:12px;color:var(--color-negative)}.winner-fan-tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.winner-fan-tabs-after-pickers{margin-top:12px;margin-bottom:0}.winner-fan-tab{display:flex;align-items:center;gap:5px;padding:6px 10px;border-radius:20px;border:1.5px solid var(--color-border);background:var(--color-bg-secondary);cursor:pointer;font-size:13px;color:var(--color-text-secondary);transition:border-color .15s,background .15s,color .15s;flex-shrink:0}.winner-fan-tab.active{border-color:var(--color-primary);background:color-mix(in srgb,var(--color-primary) 12%,transparent);color:var(--color-primary)}.winner-fan-tab-avatar{font-size:15px;line-height:1}.winner-fan-tab-name{font-weight:600}.winner-fan-tab-count{font-size:12px;opacity:.8}.ai-detect-icon-btn{color:var(--color-primary)}.ai-detect-icon-btn:hover{background:var(--color-primary-light)}.ai-tabs{display:flex;gap:6px;margin-bottom:10px;border-bottom:1px solid var(--color-border)}.ai-tab{display:inline-flex;align-items:center;gap:6px;background:transparent;border:none;padding:8px 12px;font-size:var(--font-sm);color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500}.ai-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);font-weight:600}.ai-privacy-note{font-size:var(--font-xs);color:var(--color-text-secondary);background:var(--color-surface-alt);padding:6px 10px;border-radius:var(--radius-md);margin:0 0 10px}.ai-photo-pane,.ai-structured-pane{display:flex;flex-direction:column;gap:12px;max-height:60vh;overflow-y:auto;padding-right:2px}.ai-photo-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1.5px dashed var(--color-border);border-radius:var(--radius-md);padding:22px 16px;background:var(--color-surface-alt);color:var(--color-text-secondary);cursor:pointer;font-size:var(--font-sm)}.ai-photo-drop:hover{border-color:var(--color-primary);color:var(--color-primary)}.ai-photo-drop-hint{font-size:var(--font-xs);opacity:.8}.ai-photo-preview-wrap{position:relative;border-radius:var(--radius-md);overflow:hidden;background:#000}.ai-photo-preview{display:block;width:100%;max-height:260px;object-fit:contain}.ai-photo-clear{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:50%;border:none;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.ai-file-input{display:none}.ai-field{display:flex;flex-direction:column;gap:4px}.ai-field-label{font-size:var(--font-xs);color:var(--color-text-secondary);font-weight:500}.ai-text-input,.ai-select{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:8px 10px;font-size:var(--font-sm);background:var(--color-surface);color:inherit}.ai-text-input:focus,.ai-select:focus{outline:none;border-color:var(--color-primary)}.ai-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ai-section{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px;background:var(--color-surface);display:flex;flex-direction:column;gap:8px}.ai-section-title,.ai-section-title-row .ai-section-title{font-size:var(--font-sm);font-weight:600;color:var(--color-text-secondary)}.ai-section-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.ai-meld-add-row{display:inline-flex;gap:4px;flex-wrap:wrap}.ai-meld-add-btn{padding:4px 8px;font-size:var(--font-xs);display:inline-flex;align-items:center;gap:3px}.ai-chip-row{display:flex;flex-wrap:wrap;gap:4px;min-height:28px;align-items:center}.ai-empty{font-size:var(--font-xs);color:var(--color-text-secondary);opacity:.8}.ai-mini-tile{display:inline-flex;align-items:center;gap:3px;padding:4px 7px;border-radius:var(--radius-full);background:var(--color-surface-alt);border:1px solid var(--color-border);font-size:var(--font-xs);font-weight:600;cursor:pointer;color:inherit}.ai-mini-tile.winning{background:var(--color-primary-light);color:var(--color-primary);border-color:var(--color-primary)}.ai-tile-keypad{display:flex;flex-direction:column;gap:4px;padding-top:4px;border-top:1px dashed var(--color-border)}.ai-tile-row{display:flex;align-items:center;gap:6px}.ai-tile-row-label{width:22px;text-align:center;font-size:var(--font-xs);color:var(--color-text-secondary);font-weight:600}.ai-tile-row-btns{display:flex;flex-wrap:wrap;gap:4px;flex:1}.ai-tile-btn{position:relative;min-width:30px;padding:5px 6px;border-radius:8px;border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-sm);font-weight:600;cursor:pointer;color:inherit;line-height:1}.ai-tile-btn:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary)}.ai-tile-btn.honor{min-width:32px}.ai-tile-btn-suit{font-size:9px;opacity:.7;margin-left:1px}.ai-flower-row,.ai-flag-row{display:flex;flex-wrap:wrap;gap:4px}.ai-flower-chip{padding:4px 10px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-xs);cursor:pointer;color:inherit;font-weight:600}.ai-flower-chip.active{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary)}.ai-flag-chip{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-full);border:1px solid var(--color-border);background:var(--color-surface);font-size:var(--font-xs);cursor:pointer;-webkit-user-select:none;user-select:none}.ai-flag-chip input{display:none}.ai-flag-chip.active{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary);font-weight:600}.ai-meld-row{border:1px dashed var(--color-border);border-radius:var(--radius-md);padding:8px;display:flex;flex-direction:column;gap:6px;background:var(--color-surface-alt)}.ai-meld-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ai-meld-kind{font-size:var(--font-xs);font-weight:700;color:var(--color-primary);background:var(--color-primary-light);border-radius:var(--radius-full);padding:2px 8px}.ai-meld-tiles{display:inline-flex;flex-wrap:wrap;gap:4px;flex:1}.ai-meld-delete{border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;padding:2px}.ai-meld-delete:hover{color:#c0392b}.ai-submit-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin-top:4px}.ai-spin{animation:aiSpin 1s linear infinite}@keyframes aiSpin{to{transform:rotate(360deg)}}.ai-error{display:inline-flex;align-items:center;gap:6px;background:#fff4f2;color:#c0392b;border:1px solid #f0c9c1;border-radius:var(--radius-md);padding:6px 10px;font-size:var(--font-xs);margin-top:8px}.ai-result{margin-top:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px;background:var(--color-surface-alt);display:flex;flex-direction:column;gap:8px}.ai-result-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.ai-result-title{font-size:var(--font-sm);font-weight:700;color:var(--color-primary)}.ai-confidence{font-size:var(--font-xs);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:2px 8px}.ai-confidence.low{color:#c0392b;border-color:#f0c9c1;background:#fff4f2}.ai-confidence-warn{font-size:var(--font-xs);color:#c0392b}.ai-result-chips{display:flex;flex-wrap:wrap;gap:4px}.ai-result-chip.muted{opacity:.45;filter:grayscale(.4)}.ai-reasoning{font-size:var(--font-xs);color:var(--color-text-secondary)}.ai-reasoning summary{cursor:pointer;font-weight:600}.ai-reasoning p{margin:6px 0 0;white-space:pre-wrap;line-height:1.5}.ai-result-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px}.ai-result-total{font-size:var(--font-sm)}.ai-result-total strong{color:var(--color-primary);font-size:16px;margin:0 2px}.broadcast-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;background:radial-gradient(ellipse 120% 80% at 50% 20%,#1a2830 0%,#0c1014 55%,#060809 100%);color:#f2f6f4;padding:0;box-sizing:border-box;overflow:hidden}.broadcast-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;flex-shrink:0;position:relative;z-index:4;padding:clamp(12px,2.5vw,28px);padding-bottom:clamp(14px,2.2vw,22px);background:linear-gradient(180deg,#0a0e11 0%,#0d1216 70%,rgba(10,14,17,.96) 100%);border-bottom:1px solid rgba(255,255,255,.1);box-shadow:0 8px 24px #00000059}.broadcast-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:clamp(12px,2vw,28px);font-weight:700;letter-spacing:.04em}.broadcast-room{font-size:clamp(1rem,2.2vw,1.75rem);color:#9ec9b0}.broadcast-wind{font-size:clamp(1.35rem,3.2vw,2.75rem);color:#e8f5ef;text-shadow:0 0 24px rgba(76,175,106,.35)}.broadcast-round{font-size:clamp(1.1rem,2.4vw,2rem);color:#b8d4c8}.broadcast-close{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border-radius:12px;border:2px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;font-size:clamp(1rem,1.8vw,1.25rem);font-weight:700;cursor:pointer;transition:background .15s,border-color .15s}.broadcast-close:hover{background:rgba(255,255,255,.14);border-color:#ffffff59}.broadcast-close:active{transform:scale(.98)}.broadcast-scroll{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:clamp(14px,2.5vw,28px);padding-top:clamp(16px,2.5vw,28px);display:flex;flex-direction:column;gap:clamp(20px,3vw,32px)}.broadcast-seats{flex:0 0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(10px,2vw,24px);align-content:start}@media (max-width: 720px){.broadcast-seats{grid-template-columns:repeat(2,1fr)}}.broadcast-seat{display:flex;flex-direction:column;align-items:center;text-align:center;padding:clamp(12px,2vw,22px) clamp(6px,1.2vw,14px);border-radius:clamp(14px,1.8vw,22px);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 1px #ffffff0f;min-width:0;overflow:hidden}.broadcast-seat-wind{font-size:clamp(1.1rem,2.4vw,2rem);font-weight:800;color:#7eb89a;margin-bottom:clamp(6px,1.2vw,12px);line-height:1;flex-shrink:0}.broadcast-avatar-wrap{position:relative;margin-bottom:clamp(8px,1.5vw,16px)}.broadcast-avatar-wrap--empty{opacity:.45}.broadcast-avatar{display:flex;align-items:center;justify-content:center;width:clamp(72px,14vw,140px);height:clamp(72px,14vw,140px);font-size:clamp(2.25rem,6vw,4.5rem);border-radius:50%;background:linear-gradient(160deg,#2a3840 0%,#1a2228 100%);border:3px solid rgba(255,255,255,.18);box-shadow:0 4px 20px #00000073}.broadcast-avatar--empty{font-size:clamp(1.5rem,4vw,2.5rem);color:#ffffff59}.broadcast-banker-badge{position:absolute;top:-6px;right:-6px;left:auto;background:#c62828;border:2px solid #7f1515;color:#fff;border-radius:10px;padding:4px 8px 5px;display:flex;flex-direction:column;align-items:center;line-height:1;box-shadow:0 2px 8px #0006;z-index:2}.broadcast-banker-wind{font-size:clamp(.7rem,1.4vw,1rem);font-weight:800}.broadcast-banker-lian{font-size:clamp(.65rem,1.2vw,.9rem);font-weight:800;margin-top:2px}.broadcast-name{font-size:clamp(1rem,2.2vw,2.1rem);font-weight:800;color:#f5faf7;margin-bottom:clamp(6px,1.2vw,12px);line-height:1.15;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.broadcast-name--empty{color:#fff6;font-weight:600}.broadcast-score{font-size:clamp(1.85rem,min(5.5vw,11vh),4.25rem);font-weight:900;line-height:1;letter-spacing:-.02em;flex-shrink:0;max-width:100%}.broadcast-score--pos{color:#7fd4a8;text-shadow:0 0 12px rgba(76,175,106,.22)}.broadcast-score--neg{color:#f0a4a4;text-shadow:0 0 12px rgba(244,67,54,.18)}.broadcast-score--empty{color:#ffffff59;font-size:clamp(1.5rem,4vw,3rem)}.broadcast-footer{margin:0;padding-bottom:clamp(8px,1.5vw,16px);text-align:center;font-size:clamp(.8rem,1.5vw,1.1rem);color:#ffffff61;font-weight:500;flex-shrink:0}.broadcast-recent{flex:0 0 auto;position:relative;z-index:2;isolation:isolate;padding:clamp(14px,2vw,22px) clamp(14px,2vw,22px);border-radius:clamp(14px,1.5vw,20px);background:#0e1318;border:1px solid rgba(255,255,255,.14);box-shadow:0 4px 20px #00000059}.broadcast-recent-title{margin:0 0 clamp(10px,1.5vw,16px);font-size:clamp(.95rem,1.8vw,1.35rem);font-weight:800;letter-spacing:.08em;color:#ffffff8c;text-transform:none}.broadcast-recent-empty{margin:0;font-size:clamp(.9rem,1.6vw,1.15rem);color:#ffffff59;text-align:center;padding:8px 0 4px}.broadcast-recent-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:clamp(10px,1.5vw,16px)}.broadcast-recent-item{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:8px 16px;padding:clamp(10px,1.5vw,14px) clamp(12px,1.8vw,18px);border-radius:12px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}.broadcast-recent-item--round{border-left:4px solid #4caf6a}.broadcast-recent-item--draw{border-left:4px solid rgba(255,255,255,.35)}.broadcast-recent-main{flex:1;min-width:0;text-align:left}.broadcast-recent-headline{font-size:clamp(1rem,2.2vw,1.65rem);font-weight:800;color:#f0faf4;line-height:1.25}.broadcast-recent-detail{margin-top:6px;font-size:clamp(.8rem,1.5vw,1.1rem);font-weight:500;color:#ffffff8c;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.broadcast-recent-amount{flex-shrink:0;font-size:clamp(1.1rem,2.4vw,1.85rem);font-weight:800;color:#9edbb8;line-height:1.2}.broadcast-recent-amount--muted{color:#ffffff47;font-weight:600}
