*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#fff;background:#0d0505;height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden}#root{flex-direction:column;height:100dvh;display:flex}button{cursor:pointer;border:none;outline:none;font-family:inherit}input{outline:none;font-family:inherit}.login-page{background:#0d0505;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:0;padding:32px 24px;display:flex;overflow:hidden}.mafia-img-wrap{justify-content:center;align-items:flex-end;width:100%;max-width:280px;margin-bottom:-8px;display:flex;position:relative}.mafia-img{filter:grayscale()contrast(1.1)brightness(.9);-webkit-user-select:none;user-select:none;pointer-events:none;width:72%;max-width:200px;height:auto;display:block;-webkit-mask-image:linear-gradient(#000 78%,#0000 100%);mask-image:linear-gradient(#000 78%,#0000 100%)}.login-box{flex-direction:column;align-items:center;gap:6px;width:100%;max-width:280px;display:flex}.login-title{color:#8b0000;letter-spacing:10px;margin:0;font-size:64px;font-weight:900;line-height:1}.login-subtitle{color:#c22;letter-spacing:14px;margin-top:-4px;font-size:42px;font-weight:700;line-height:1}.login-desc{color:#444;letter-spacing:3px;text-transform:uppercase;margin-bottom:28px;font-size:11px}.login-error{color:#ff6b6b;text-align:center;margin-bottom:8px;font-size:13px}.login-loading{color:#666;font-size:13px}.login-btn-wrap{margin-top:8px}.google-btn{color:#e0e0e0;letter-spacing:.5px;cursor:pointer;background:#1a1a1a;border:1px solid #333;border-radius:4px;justify-content:center;align-items:center;gap:10px;width:240px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:500;transition:background .15s;display:flex}.google-btn:hover{background:#222}.google-btn:active{background:#111}.google-btn-icon{flex-shrink:0;width:20px;height:20px}@media (height<=640px){.login-page{padding:16px 24px}.mafia-img{max-width:140px}.login-title{letter-spacing:8px;font-size:48px}.login-subtitle{letter-spacing:10px;font-size:32px}.login-desc{margin-bottom:16px}}.home-page{flex-direction:column;flex:1;width:100%;max-width:480px;margin:0 auto;padding:20px;display:flex}.home-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.home-logo{color:#8b0000;letter-spacing:4px;font-size:18px;font-weight:900}.logout-btn{color:#555;background:0 0;border-radius:6px;padding:6px 12px;font-size:14px}.logout-btn:hover{color:#888}.profile-card{background:#1a0808;border:1px solid #2a1010;border-radius:16px;margin-bottom:16px;padding:24px}.player-name{margin-bottom:20px;font-size:22px;font-weight:700}.stats-row{justify-content:space-around;align-items:center;display:flex}.stat{flex-direction:column;flex:1;align-items:center;display:flex}.stat-value{color:#c22;font-size:28px;font-weight:900}.stat-label{color:#555;letter-spacing:2px;margin-top:4px;font-size:10px}.stat-divider{background:#2a1010;width:1px;height:40px}.online-row{align-items:center;gap:8px;margin-bottom:32px;padding:4px;display:flex}.online-dot{background:#4caf50;border-radius:50%;width:8px;height:8px}.online-text{color:#666;font-size:14px}.play-btn{color:#fff;letter-spacing:4px;background:#8b0000;border-radius:12px;margin-top:auto;padding:22px;font-size:20px;font-weight:900;transition:opacity .2s;box-shadow:0 4px 24px #8b000066}.play-btn:hover{opacity:.85}.game-page{background:#0d0505;flex-direction:column;flex:1;width:100%;max-width:480px;margin:0 auto;display:flex;overflow:hidden}.game-page.center{justify-content:center;align-items:center;gap:12px;padding:24px}.game-topbar{align-items:center;gap:16px;padding:16px 16px 8px;display:flex}.back-btn{color:#8b0000;background:0 0;font-size:16px}.topbar-title{color:#fff;font-size:16px;font-weight:700}.role-list{flex-direction:column;flex:1;gap:12px;padding:0 16px;display:flex}.role-card{text-align:left;background:#1a0808;border:1px solid #2a1010;border-radius:12px;align-items:center;gap:14px;padding:16px;transition:border-color .15s;display:flex}.role-card.selected{background:#2a0808;border-color:#8b0000}.role-icon{font-size:28px}.role-info{flex-direction:column;flex:1;display:flex}.role-name{font-size:15px;font-weight:700}.role-desc{color:#666;margin-top:3px;font-size:12px}.check{color:#8b0000;font-size:20px;font-weight:900}.find-btn{color:#fff;letter-spacing:3px;background:#8b0000;border-radius:12px;margin:16px;padding:18px;font-size:18px;font-weight:900}.queue-role{font-size:22px;font-weight:700}.spinner{border:4px solid #2a1010;border-top-color:#8b0000;border-radius:50%;width:48px;height:48px;margin:16px 0;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.queue-title{color:#fff;font-size:20px;font-weight:700}.queue-sub{color:#555;text-align:center;max-width:220px;font-size:13px}.cancel-btn{color:#666;background:0 0;border:1px solid #2a1010;border-radius:12px;margin-top:16px;padding:14px 32px;font-size:15px}.game-header{justify-content:space-between;align-items:center;padding:12px 16px 8px;display:flex}.phase-tag{letter-spacing:1px;color:#fff;border-radius:20px;padding:5px 12px;font-size:12px;font-weight:700}.phase-NIGHT{background:#8b0000}.phase-DAY{background:#2e7d32}.phase-VOTING{background:#e65100}.phase-INIT,.phase-GAMEOVER{background:#444}.my-role-badge{background:#1a0808;border-radius:20px;padding:5px 12px;font-size:12px;font-weight:700}.phase-msg{color:#bbb;text-align:center;background:#1a0808;border-radius:8px;margin:0 16px 8px;padding:10px;font-size:13px}.speaker-bar{color:#888;background:#060d06;border-radius:8px;margin:0 16px 8px;padding:10px;font-size:13px}.speaker-bar strong{color:#4caf50}.section-label{color:#444;letter-spacing:2px;margin-bottom:6px;padding:0 16px;font-size:10px}.player-list{flex-direction:column;flex:1;gap:8px;padding:0 16px;display:flex;overflow-y:auto}.player-row{background:#1a0808;border:1px solid #2a1010;border-radius:10px;justify-content:space-between;align-items:center;padding:14px;transition:border-color .15s;display:flex}.player-row.dead{opacity:.35}.player-row.targeted{border-color:#8b0000}.player-info{flex-direction:column;display:flex}.player-name{font-size:15px;font-weight:600}.player-role{margin-top:3px;font-size:11px}.action-btn{background:#2a0808;border:1px solid #3a1010;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;transition:background .15s;display:flex}.action-btn.active{background:#5a0000;border-color:#8b0000}.action-btn:hover{background:#3a0808}.chat-box{background:#080303;border-top:1px solid #1a0808;flex-direction:column;max-height:200px;display:flex}.chat-messages{flex-direction:column;flex:1;gap:3px;padding:10px 12px;display:flex;overflow-y:auto}.chat-row{flex-wrap:wrap;font-size:13px;display:flex}.chat-sender{color:#8b0000;margin-right:4px;font-weight:700}.chat-text{color:#ccc}.chat-input-row{gap:8px;padding:8px;display:flex}.chat-input{color:#fff;background:#1a0808;border:1px solid #2a1010;border-radius:20px;flex:1;padding:8px 14px;font-size:14px}.chat-input:disabled{opacity:.4}.send-btn{color:#fff;background:#8b0000;border-radius:20px;padding:8px 14px;font-size:13px;font-weight:700}.send-btn:disabled{opacity:.4}.gameover-emoji{font-size:72px}.gameover-title{letter-spacing:4px;font-size:42px;font-weight:900}.gameover-winner{font-size:18px;font-weight:700}.final-players{width:100%;max-width:320px;margin:16px 0}.final-row{border-bottom:1px solid #1a0808;justify-content:space-between;align-items:center;padding:12px 0;display:flex}.final-name{font-size:15px}.final-role{font-size:13px;font-weight:600}.leave-btn{color:#666;background:#1a0808;border:1px solid #2a1010;border-radius:12px;padding:14px 32px;font-size:15px}
