:root{--bg:#0a0810;--bg2:#13101a;--bg3:#1c1828;--border:#2a2438;--border2:#3a3050;--gold:#f0c840;--gold2:#c8a020;--text:#e0d8f0;--text2:#8880a0;--text3:#504860;--green:#40c060;--red:#e04040;--blue:#4090e0;--purple:#9050e0;--radius:8px;--shadow:0 4px 24px #00000080}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.5;overflow:hidden}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--bg2)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 18px;font-family:inherit;font-size:13px;font-weight:600;transition:all .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn-primary{background:var(--gold);color:#1a1000;border-color:var(--gold2)}.btn-primary:hover{background:#f8d850}.btn-ghost{color:var(--text2);border-color:var(--border2);background:0 0}.btn-ghost:hover{background:var(--bg3);color:var(--text)}.btn-danger{color:var(--red);background:#3a1010;border-color:#5a1818}.btn-danger:hover{background:#4a1414}.btn-green{color:var(--green);background:#103020;border-color:#205030}.btn-green:hover{background:#184028}.btn-sm{padding:5px 12px;font-size:12px}.btn-block{width:100%}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.input{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius);width:100%;color:var(--text);padding:10px 14px;font-family:inherit;font-size:14px;transition:border-color .15s}.input:focus{border-color:var(--gold2);outline:none}.input::placeholder{color:var(--text3)}.form-group{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.form-label{color:var(--text2);font-size:12px;font-weight:500}.form-error{color:var(--red);margin-top:4px;font-size:12px}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:inline-flex}.avatar-sm{width:28px;height:28px;font-size:11px}.avatar-md{width:38px;height:38px;font-size:14px}.avatar-lg{width:52px;height:52px;font-size:18px}.avatar-xl{width:72px;height:72px;font-size:26px}.avatar-wrap{display:inline-block;position:relative}.online-dot{background:var(--green);border:2px solid var(--bg2);border-radius:50%;width:10px;height:10px;position:absolute;bottom:1px;right:1px}.nav-layout{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--bg2);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;min-width:220px;padding:0;transition:width .2s;display:flex}@media (width<=600px){.sidebar{width:56px;min-width:56px}.sidebar .nav-label,.sidebar .nav-brand-text{display:none}}.nav-brand{border-bottom:1px solid var(--border);color:var(--gold);letter-spacing:1px;align-items:center;gap:8px;padding:16px;font-size:15px;font-weight:900;display:flex}.nav-items{flex-direction:column;flex:1;gap:2px;padding:8px;display:flex;overflow-y:auto}.nav-item{color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;width:100%;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:all .12s;display:flex}.nav-item:hover{background:var(--bg3);color:var(--text)}.nav-item.active{color:var(--gold);background:#1e1830}.nav-icon{text-align:center;flex-shrink:0;width:20px;font-size:18px}.nav-badge{background:var(--red);color:#fff;text-align:center;border-radius:10px;min-width:18px;margin-left:auto;padding:1px 6px;font-size:10px;font-weight:700}.nav-footer{border-top:1px solid var(--border);padding:12px}.nav-user{cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:8px;display:flex}.nav-user:hover{background:var(--bg3)}.nav-user-info{flex:1;min-width:0}.nav-username{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.nav-status{color:var(--green);font-size:11px}.page-content{flex:1;overflow:hidden auto}.auth-page{background:radial-gradient(ellipse at center, #1a1428 0%, var(--bg) 70%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;width:100%;max-width:400px;padding:32px;box-shadow:0 8px 48px #0009}.auth-title{color:var(--gold);text-align:center;letter-spacing:1px;margin-bottom:6px;font-size:22px;font-weight:900}.auth-sub{color:var(--text3);text-align:center;margin-bottom:24px;font-size:12px}.auth-divider{color:var(--text3);align-items:center;gap:10px;margin:16px 0;font-size:12px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-links{color:var(--text2);justify-content:space-between;margin-top:16px;font-size:12px;display:flex}.auth-links a{color:var(--gold2);text-decoration:none}.auth-links a:hover{color:var(--gold)}.page-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:20px 24px 16px;display:flex}.page-title{color:var(--text);flex:1;font-size:18px;font-weight:700}.chat-layout{height:100%;display:flex;overflow:hidden}.chat-sidebar{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:260px;display:flex}@media (width<=700px){.chat-sidebar{width:100%}.chat-main:not(.active){display:none}}.chat-list{flex:1;overflow-y:auto}.chat-item{cursor:pointer;border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:12px 16px;transition:background .1s;display:flex}.chat-item:hover{background:var(--bg3)}.chat-item.active{background:#1e1830}.chat-item-info{flex:1;min-width:0}.chat-item-name{color:var(--text);font-size:13px;font-weight:600}.chat-item-preview{color:var(--text3);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.chat-unread{background:var(--red);color:#fff;border-radius:10px;padding:1px 6px;font-size:10px;font-weight:700}.chat-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:12px 16px;display:flex}.chat-messages{flex-direction:column;flex:1;gap:8px;padding:12px 16px;display:flex;overflow-y:auto}.chat-bubble{word-break:break-word;border-radius:12px;max-width:70%;padding:8px 12px;font-size:13px;line-height:1.4}.chat-bubble.mine{background:#201840;border-bottom-right-radius:3px;margin-left:auto}.chat-bubble.theirs{background:var(--bg3);border-bottom-left-radius:3px}.chat-bubble-meta{color:var(--text3);margin-top:2px;font-size:10px}.chat-input-row{border-top:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;display:flex}.typing-indicator{color:var(--text3);min-height:20px;padding:4px 16px;font-size:11px}.lobby-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;padding:20px;display:grid}.lobby-card{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius);cursor:pointer;padding:16px;transition:border-color .15s,transform .12s}.lobby-card:hover{border-color:var(--gold2);transform:translateY(-2px)}.lobby-card-name{color:var(--text);margin-bottom:6px;font-weight:700}.lobby-meta{color:var(--text3);flex-wrap:wrap;gap:12px;font-size:11px;display:flex}.lobby-badge{border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.badge-classic{color:var(--blue);background:#102030}.badge-tournament{color:var(--purple);background:#201030}.badge-chaos{color:var(--red);background:#301010}.badge-easy{color:var(--green);background:#103010}.badge-normal{color:var(--gold);background:#202010}.badge-hard{color:#ff8060;background:#301010}.badge-expert{color:#e060e0;background:#200830}.badge-horror{color:var(--red);background:#300808}.lobby-room{max-width:700px;margin:0 auto;padding:20px}.player-list{flex-direction:column;gap:8px;margin:16px 0;display:flex}.player-row{background:var(--bg3);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex}.player-ready{margin-left:auto;font-size:12px;font-weight:600}.player-ready.yes{color:var(--green)}.player-ready.no{color:var(--text3)}.qr-modal{z-index:500;background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.qr-box{background:var(--bg2);border:1px solid var(--border2);text-align:center;border-radius:12px;width:90%;max-width:320px;padding:28px}.qr-box img{width:200px;height:200px;margin:16px auto;display:block}.qr-code-text{letter-spacing:4px;color:var(--gold);margin:8px 0;font-size:24px;font-weight:900}.game-page{z-index:100;background:#000;position:fixed;inset:0}.game-iframe{border:none;width:100%;height:100%}.game-overlay{border:1px solid var(--border2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:200;background:#0a0814e0;border-radius:8px;min-width:180px;padding:10px 14px;position:absolute;top:10px;right:10px}.game-overlay-title{color:var(--text3);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px;font-size:10px}.player-stat-row{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:4px 0;font-size:12px;display:flex}.player-stat-row:last-child{border-bottom:none}.ps-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.ps-wave{color:var(--gold);text-align:right;width:40px;font-weight:700}.ps-lives{color:var(--red);text-align:right;width:30px}.ps-dead{color:var(--text3);text-decoration:line-through}.ps-winner{color:var(--gold)}.game-over-overlay{z-index:300;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000000d9;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.go-title{color:var(--gold);font-size:36px;font-weight:900}.rankings{flex-direction:column;gap:8px;min-width:240px;display:flex}.ranking-row{background:var(--bg3);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex}.ranking-pos{width:28px;font-size:18px}.friends-page{flex-direction:column;height:100%;padding:0;display:flex}.search-bar{border-bottom:1px solid var(--border);padding:16px 20px}.friends-list{flex:1;padding:8px;overflow-y:auto}.friend-row{border-bottom:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex}.friend-row:hover{background:var(--bg3)}.friend-name{flex:1;font-weight:600}.friend-status{color:var(--text3);font-size:11px}.profile-page{max-width:600px;margin:0 auto;padding:24px}.profile-header{align-items:center;gap:16px;margin-bottom:24px;display:flex}.profile-stats{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px;display:grid}.stat-card{background:var(--bg3);text-align:center;border-radius:8px;padding:14px}.stat-val{color:var(--gold);font-size:22px;font-weight:800}.stat-lbl{color:var(--text3);margin-top:2px;font-size:11px}.lb-table{border-collapse:collapse;width:100%}.lb-table th,.lb-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 16px}.lb-table th{color:var(--text3);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.lb-table tr:hover td{background:var(--bg3)}.lb-rank{color:var(--gold);width:40px;font-weight:800}.lb-rank.top1{color:gold;font-size:16px}.lb-rank.top2{color:silver}.lb-rank.top3{color:#cd7f32}.alert{border-radius:6px;align-items:flex-start;gap:8px;margin-bottom:12px;padding:12px 16px;font-size:13px;display:flex}.alert-error{color:#ffb0a0;background:#2a0c0c;border:1px solid #5a1818}.alert-success{color:#a0ffb0;background:#0c2a0c;border:1px solid #185818}.alert-info{color:#a0c8ff;background:#0c1a2a;border:1px solid #183858}.loading-screen{height:100vh;color:var(--text3);justify-content:center;align-items:center;font-size:24px;display:flex}.empty-state{text-align:center;color:var(--text3);padding:48px;font-size:14px}.empty-state .empty-icon{margin-bottom:12px;font-size:40px}.section-title{color:var(--text3);text-transform:uppercase;letter-spacing:1px;padding:12px 20px 6px;font-size:13px;font-weight:600}.divider{background:var(--border);height:1px;margin:8px 0}.tag{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);border-radius:4px;padding:2px 8px;font-size:11px;display:inline-block}.flex-center{justify-content:center;align-items:center;display:flex}.flex-gap{align-items:center;gap:8px;display:flex}.mt-auto{margin-top:auto}.model3d-field{background:var(--bg2);border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:6px;display:inline-flex}.model3d-field:hover{border-color:var(--border2)}.model3d-thumb{background:var(--bg);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex;overflow:hidden}.model3d-thumb model-viewer{--poster-color:transparent;width:100%;height:100%}.model3d-field-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:13px;font-weight:600;overflow:hidden}.model3d-field-chevron{color:var(--text2);font-size:11px}.model3d-modal-bg{z-index:500;background:#000c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.model3d-modal-card{background:var(--bg2);border:1px solid var(--border2);border-radius:12px;flex-direction:column;gap:10px;width:100%;max-width:460px;max-height:82vh;padding:20px;display:flex}.model3d-modal-header{justify-content:space-between;align-items:center;display:flex}.model3d-modal-title{color:var(--text);font-size:15px;font-weight:800}.model3d-modal-body{padding-right:4px;overflow-y:auto}.model3d-section{border-top:1px solid var(--border);margin-top:10px;padding-top:8px}.model3d-section:first-child{border-top:none;margin-top:0;padding-top:0}.model3d-section-label{color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:10px}.model3d-chip-row{flex-wrap:wrap;gap:6px;display:flex}.model3d-chip{background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:16px;align-items:center;gap:4px;padding:6px 10px;font-size:12px;display:inline-flex}.model3d-chip:hover{border-color:var(--border2)}.model3d-chip.active{background:var(--gold);border-color:var(--gold2);color:#1a1000;font-weight:700}.model3d-preview-wrap{background:var(--bg);border:1px solid var(--border);border-radius:12px;align-self:center;margin-top:8px;overflow:hidden}
