*{box-sizing:border-box}body{color:#1e293b;-webkit-font-smoothing:antialiased;background:#eff6ff;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}#root{min-height:100vh}h1,h2,h3{color:#1e3a5f;margin:0 0 8px}a{color:#60a5fa}input[type=text],input[type=password],input[type=number]{color:#1e293b;background:#fff;border:1px solid #bfdbfe;border-radius:8px;padding:8px 12px;font-size:14px}input:focus{border-color:#3b82f6;outline:none}button{cursor:pointer;color:#fff;background:#3b82f6;border:none;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:600;transition:background .15s}button:hover:not(:disabled){background:#2563eb}button:disabled{opacity:.5;cursor:not-allowed}.page-center{text-align:center;background:#fff;border-radius:16px;max-width:400px;margin:60px auto;padding:32px;box-shadow:0 4px 24px #0000001a}.page-center h2{margin-bottom:20px}.form-group{margin-bottom:12px}.form-group input{width:100%}.form-group label{text-align:left;color:#64748b;margin-bottom:4px;font-size:13px;display:block}.btn-row{justify-content:center;gap:8px;margin-top:16px;display:flex}.error-msg{color:#f87171;margin-top:12px;font-size:13px}.success-msg{color:#4ade80;margin-top:12px;font-size:13px}.text-muted{color:#64748b;font-size:14px}.text-gold{color:#d97706;font-weight:600}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}hr{border:none;border-top:1px solid #e2e8f0;margin:20px 0}.section{text-align:left;margin-bottom:20px}.section h3{margin-bottom:8px;font-size:15px}.inline-group{align-items:center;gap:8px;display:flex}.leaderboard-table{border-collapse:collapse;width:100%;margin-top:8px}.leaderboard-table th,.leaderboard-table td{text-align:left;border-bottom:1px solid #e2e8f0;padding:6px 12px;font-size:14px}.leaderboard-table th{color:#64748b;font-size:13px;font-weight:600}.leaderboard-table td{color:#1e293b}.leaderboard-table tr.highlight td{color:#2563eb;font-weight:600}.home-container{max-width:800px;margin:40px auto;padding:0 24px}.home-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.home-header h2{margin:0}.home-subtitle{color:#64748b;margin:0 0 24px}.game-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px;display:grid}.game-card{cursor:pointer;text-align:center;background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:24px;transition:transform .15s,box-shadow .15s}.game-card:hover{border-color:#3b82f6;transform:translateY(-4px);box-shadow:0 8px 24px #0000001a}.game-icon{margin-bottom:12px;font-size:48px;display:block}.game-card h3{color:#1e3a5f;margin:0 0 8px}.game-card p{color:#64748b;margin:0;font-size:14px;line-height:1.4}.profile-container{max-width:500px;margin:40px auto;padding:0 24px}.profile-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.profile-header h2{margin:0}.profile-section{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:16px;padding:20px}.profile-section h3{color:#1e3a5f;margin:0 0 12px;font-size:15px}.profile-section .form-group{margin-bottom:10px}.profile-section .form-group input{width:100%}.balance-table{border-collapse:collapse;width:100%}.balance-table th,.balance-table td{text-align:left;border-bottom:1px solid #e2e8f0;padding:8px 12px}.balance-table th{color:#64748b;font-size:13px;font-weight:600}.balance-table td{color:#1e293b;font-size:14px}.game-container{max-width:900px;margin:0 auto;padding:20px}.game-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:16px;display:flex}.game-header .room-info{color:#9ca3af;font-size:14px}.game-header .balance{color:#f4a261;font-size:14px;font-weight:600}.table{background:linear-gradient(135deg,#0f5132 0%,#1a7a4c 50%,#0f5132 100%);border:6px solid #2d1f0e;border-radius:20px;min-height:300px;padding:32px 24px;box-shadow:inset 0 2px 20px #0006,0 8px 32px #0000004d}.deck-info{text-align:center;color:#ffffff80;margin-bottom:20px;font-size:12px}.hand-area{text-align:center;margin-bottom:24px}.hand-area.active{position:relative}.hand-area.active:before{content:"";pointer-events:none;border:2px solid #ffd70066;border-radius:12px;position:absolute;inset:-8px}.hand-label{color:#fffc;margin-bottom:8px;font-size:13px;font-weight:500}.hand-label .name{color:#fff;font-weight:700}.hand-label .value{color:gold;margin-left:6px}.hand-label .bet{color:#f4a261;margin-left:8px;font-size:12px}.hand-label .timer{color:#fbbf24;margin-left:8px;animation:1s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.hand-label .dealer-tag{color:#ffffff80;font-size:12px}.cards{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.card{box-sizing:border-box;background:#fff;border-radius:7px;flex-direction:column;justify-content:space-between;width:56px;height:80px;padding:4px 6px;font-weight:700;transition:transform .2s;display:inline-flex;position:relative;box-shadow:0 2px 6px #00000059}.card:hover{transform:translateY(-2px)}.card.red{color:#dc2626}.card.black{color:#1e293b}.card-corner{flex-direction:column;align-items:center;line-height:1;display:flex}.card-corner.top{align-self:flex-start}.card-corner.bottom{align-self:flex-end;transform:rotate(180deg)}.card-rank{font-size:14px}.card-suit{font-size:11px}.card-center{text-align:center;font-size:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.dealer-area .card{width:44px;height:64px}.dealer-area .card-rank{font-size:12px}.dealer-area .card-suit{font-size:9px}.dealer-area .card-center{font-size:18px}.my-hand{margin-bottom:16px}.my-hand .card{width:64px;height:92px}.my-hand .card-rank{font-size:16px}.my-hand .card-suit{font-size:12px}.my-hand .card-center{font-size:26px}.others-row{flex-wrap:wrap;justify-content:center;gap:16px;margin-bottom:8px;display:flex}.other-player{text-align:center;background:#00000026;border-radius:10px;min-width:80px;padding:8px 12px;position:relative}.other-player.active{background:#ffd7001a;outline:1px solid #ffd70066}.other-label{color:#fffc;margin-bottom:4px;font-size:12px;font-weight:500}.other-label .name{color:#fff;font-weight:600}.other-label .value{color:gold;margin-left:4px}.other-label .bet{color:#f4a261;margin-left:4px;font-size:11px}.other-label .timer{color:#fbbf24;margin-left:4px;animation:1s infinite pulse}.mini-cards{flex-wrap:wrap;justify-content:center;gap:3px;display:flex}.mini-card{background:#ffffffe6;border-radius:3px;padding:1px 3px;font-size:13px;font-weight:700;line-height:1.2}.mini-card.red{color:#dc2626}.mini-card.black{color:#1e293b}.table-divider{background:#ffffff26;height:1px;margin:8px 0 20px}.result-badge{border-radius:12px;margin-top:6px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.result-badge.win{color:#4ade80;background:#22c55e33}.result-badge.lose{color:#f87171;background:#ef444433}.result-badge.push{color:#facc15;background:#facc1533}.winnings{margin-left:4px;font-size:12px}.actions{justify-content:center;gap:10px;margin-top:20px;display:flex}.btn{cursor:pointer;border:none;border-radius:8px;padding:8px 20px;font-size:14px;font-weight:600;transition:all .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff;background:#3b82f6}.btn-primary:hover:not(:disabled){background:#2563eb}.btn-success{color:#fff;background:#22c55e}.btn-success:hover:not(:disabled){background:#16a34a}.btn-danger{color:#fff;background:#ef4444}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-warning{color:#fff;background:#f59e0b}.btn-warning:hover:not(:disabled){background:#d97706}.btn-outline{color:#9ca3af;background:0 0;border:1px solid #4b5563}.btn-outline:hover:not(:disabled){color:#e5e7eb;background:#ffffff0d}.betting-area{text-align:center;padding:24px}.betting-title{color:gold;margin-bottom:16px;font-size:18px;font-weight:700}.betting-players{flex-wrap:wrap;justify-content:center;gap:24px;margin-bottom:20px;display:flex}.betting-player{background:#0003;border-radius:10px;min-width:100px;padding:10px 16px}.betting-player .name{color:#fff;margin-bottom:4px;font-size:13px;font-weight:600}.betting-player .status{color:#9ca3af;font-size:12px}.betting-player .status.placed{color:#4ade80}.bet-input-group{justify-content:center;align-items:center;gap:8px;margin-top:12px;display:flex}.bet-input{color:#fff;text-align:center;background:#1f2937;border:2px solid #4b5563;border-radius:8px;width:80px;padding:8px 12px;font-size:16px;font-weight:600}.bet-input:focus{border-color:#fbbf24;outline:none}.lobby-area{background:#00000026;border-radius:12px;margin-top:20px;padding:16px}.player-list{flex-wrap:wrap;justify-content:center;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.player-list li{color:#e5e7eb;background:#ffffff0d;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.player-list .kick-btn{color:#f87171;cursor:pointer;background:#ef44444d;border:none;border-radius:4px;padding:2px 8px;font-size:11px}.player-list .kick-btn:hover{background:#ef444480}.room-lobby{text-align:center;background:#1f2937;border-radius:16px;max-width:400px;margin:40px auto;padding:32px;box-shadow:0 4px 24px #0000004d}.room-lobby h2{color:#fff;margin:0 0 4px}.room-lobby .sub{color:#9ca3af;margin-bottom:20px;font-size:14px}.av-container{max-width:600px;margin:0 auto;padding:16px}.av-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.av-header .room-info{color:#64748b;font-size:14px}.role-badge{border-radius:20px;padding:4px 10px;font-size:13px;font-weight:600}.role-badge.good{color:#166534;background:#dcfce7}.role-badge.evil{color:#991b1b;background:#fce7e7}.btn-small{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;font-size:12px}.btn-small:hover{background:#f1f5f9}.night-info-bar{text-align:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-bottom:8px;padding:6px 12px;font-size:13px;display:flex}.night-info-hint{color:#64748b}.night-info-player{color:#1e293b;font-weight:600}.night-info-role{color:#64748b;font-weight:400}.mission-track{justify-content:center;gap:12px;margin-bottom:8px;display:flex}.mission-dot{color:#475569;background:#e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.mission-dot.current{outline-offset:2px;outline:3px solid #3b82f6}.mission-dot.success{color:#fff;background:#22c55e}.mission-dot.fail{color:#fff;background:#ef4444}.reject-track{text-align:center;color:#64748b;margin-bottom:16px;font-size:13px}.reject-dot{vertical-align:middle;background:#e2e8f0;border-radius:50%;width:12px;height:12px;margin:0 3px;display:inline-block}.reject-dot.active{background:#ef4444}.av-players{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:16px;display:flex}.av-player{text-align:center;background:#fff;border:2px solid #e2e8f0;border-radius:10px;padding:8px 14px;font-size:14px;transition:all .15s}.av-player.me{background:#eff6ff;border-color:#3b82f6}.av-player.leader{border-color:#f59e0b}.av-player.on-team{background:#fef3c7;border-color:#f59e0b}.av-player.selected{background:#dbeafe;border-color:#3b82f6}.av-player.clickable{cursor:pointer}.av-player.clickable:hover{transform:scale(1.05)}.player-name{color:#1e293b;font-weight:600}.me-tag{color:#3b82f6;margin-left:4px;font-size:11px}.av-night{text-align:center;padding:32px 16px}.role-card{border-radius:16px;margin:16px 0;padding:24px 32px;display:inline-block}.role-card.good{background:#dcfce7;border:2px solid #22c55e}.role-card.evil{background:#fce7e7;border:2px solid #ef4444}.role-emoji{margin-bottom:8px;font-size:48px;display:block}.role-card h3{color:#1e293b;margin:0 0 4px}.role-team{margin:0 0 4px;font-weight:600}.role-desc{color:#64748b;margin:0;font-size:13px}.night-info{margin:16px 0}.night-hint{color:#64748b;margin-bottom:8px;font-size:14px}.night-players{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.night-player{color:#92400e;background:#fef3c7;border-radius:8px;padding:4px 12px;font-size:14px;font-weight:600}.av-actions{text-align:center}.action-panel{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-top:8px;padding:16px}.action-panel p{color:#475569;margin:0 0 12px}.waiting{color:#94a3b8;font-style:italic}.game-over{text-align:center;padding:16px}.good-win{color:#16a34a}.evil-win{color:#dc2626}.roles-reveal{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px;display:flex}.role-reveal{border-radius:8px;padding:6px 12px;font-size:13px}.role-reveal.good{background:#dcfce7}.role-reveal.evil{background:#fce7e7}.history-panel{text-align:left;background:#fff;border:1px solid #e2e8f0;border-radius:12px;max-height:400px;margin-bottom:16px;padding:16px;overflow-y:auto}.history-panel h3{justify-content:space-between;align-items:center;margin:0 0 12px;display:flex}.history-mission{margin-bottom:12px}.history-mission h4{color:#1e293b;margin:0 0 6px;font-size:14px}.history-proposal{background:#f8fafc;border-radius:8px;margin-bottom:6px;padding:8px 12px;font-size:13px}.proposal-header{margin-bottom:4px}.proposal-team{color:#475569;margin-bottom:4px}.proposal-votes{flex-wrap:wrap;gap:4px;margin-bottom:4px;display:flex}.vote-chip{border-radius:4px;padding:2px 8px;font-size:12px}.vote-chip.approve{color:#166534;background:#dcfce7}.vote-chip.reject{color:#991b1b;background:#fce7e7}.badge-approve{color:#166534;background:#dcfce7;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600}.badge-reject{color:#991b1b;background:#fce7e7;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600}.proposal-mission-result{margin-top:4px}.av-player-list{margin:0 0 12px;padding:0;list-style:none}.av-player-list li{color:#1e293b;border-bottom:1px solid #e2e8f0;align-items:center;gap:8px;padding:6px 0;font-size:14px;display:flex}.seat-number{color:#94a3b8;min-width:18px;font-size:12px}.player-actions{align-items:center;gap:4px;margin-left:auto;display:flex}.move-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:4px;padding:1px 6px;font-size:12px;line-height:1}.move-btn:hover:not(:disabled){background:#f1f5f9}.move-btn:disabled{opacity:.25;cursor:default}.av-player-list .kick-btn{color:#991b1b;cursor:pointer;background:#fce7e7;border:none;border-radius:4px;padding:2px 8px;font-size:11px}.role-config{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.role-config-side{flex-direction:column;align-items:center;gap:4px;min-width:120px;display:flex}.side-label{text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;font-size:12px;font-weight:700}.good-label{color:#16a34a}.evil-label{color:#dc2626}.role-chip{border-radius:6px;padding:4px 10px;font-size:13px;font-weight:500}.role-chip.good{color:#166534;background:#dcfce7}.role-chip.evil{color:#991b1b;background:#fce7e7}.role-toggles{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.role-toggle{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:6px 12px;font-size:13px;transition:all .15s}.role-toggle:disabled{opacity:.3;cursor:default}.role-toggle.active{color:#fff;background:#3b82f6;border-color:#3b82f6}.role-adjust-section{flex-direction:column;align-items:center;gap:8px;margin-top:10px;display:flex}.role-adjust-row{align-items:center;gap:6px;display:flex}.role-adjust-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;padding:0;font-size:15px;font-weight:700;display:flex}.role-adjust-btn:hover:not(:disabled){background:#f1f5f9}.role-adjust-btn:disabled{opacity:.3;cursor:default}.role-adjust-label{color:#475569;text-align:center;min-width:100px;font-size:13px}
