/* ================== 全局 ================== */
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
    font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
    background:
        radial-gradient(ellipse at top, #1a4d2e 0%, transparent 50%),
        radial-gradient(ellipse at bottom, #0f3220 0%, transparent 50%),
        linear-gradient(180deg, #0a2618 0%, #05110b 100%);
    color:#f1f5f9;
    min-height:100vh;
    overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{cursor:pointer;font-family:inherit}

/* ================== 按钮 ================== */
.btn{
    padding:12px 22px;font-size:15px;font-weight:600;border:none;border-radius:10px;
    transition:all .18s ease;display:inline-flex;align-items:center;justify-content:center;gap:6px;
    text-align:center;line-height:1.4;white-space:nowrap;
}
.btn-primary{
    background:linear-gradient(135deg,#d4a340,#b8860b);color:#0a1a10;
    box-shadow:0 4px 14px rgba(212,163,64,.35);
}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(212,163,64,.5)}
.btn-primary:active{transform:translateY(0)}
.btn-secondary{background:rgba(255,255,255,.08);color:#e2e8f0;border:1px solid rgba(255,255,255,.1)}
.btn-secondary:hover{background:rgba(255,255,255,.14)}
.btn-danger{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;border:none;box-shadow:0 2px 8px rgba(231,76,60,.3)}
.btn-danger:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(231,76,60,.5)}
.btn-outline{background:transparent;border:1px solid rgba(212,163,64,.5);color:#d4a340}
.btn-outline:hover{background:rgba(212,163,64,.1)}
.btn-block{display:flex;width:100%}
.btn.btn-disabled,
.btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.4);pointer-events:none}
.btn-lg{padding:14px 28px;font-size:16px}

/* ================== 容器 ================== */
.lobby-container{
    min-height:100vh;max-width:1200px;margin:0 auto;padding:20px;
    display:flex;flex-direction:column;
}

/* ================== 顶栏 ================== */
.lobby-header{
    display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:14px 20px;margin-bottom:20px;
    background:rgba(10,38,24,.7);border:1px solid rgba(212,163,64,.2);border-radius:14px;
    backdrop-filter:blur(10px);
    position:relative;z-index:10001;
}
.header-left{display:flex;align-items:center;gap:14px}
.logo{font-size:22px;font-weight:700;color:#d4a340;letter-spacing:1px;display:flex;align-items:center}
.logo .logo-img{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid rgba(212,163,64,.4);margin-right:8px;box-shadow:0 0 8px rgba(212,163,64,.2)}
.logo span{color:#fbbf24}
.sub-title{font-size:14px;color:#94a3b8;padding:3px 10px;border-left:1px solid rgba(148,163,184,.25)}

.header-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.my-info{display:flex;align-items:center;gap:10px;padding:6px 10px;background:rgba(255,255,255,.05);border-radius:10px;border:1px solid rgba(255,255,255,.08)}
.my-avatar{font-size:20px}
.my-avatar-clickable{cursor:pointer;transition:transform .15s}
.my-avatar-clickable:hover{transform:scale(1.2)}
.avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:8px}
.avatar-item{
    display:flex;align-items:center;justify-content:center;
    font-size:32px;width:64px;height:64px;border-radius:12px;
    background:rgba(255,255,255,.06);border:2px solid transparent;
    cursor:pointer;transition:all .18s;
}
.avatar-item:hover{background:rgba(212,163,64,.15);transform:scale(1.08)}
.avatar-item.selected{border-color:#d4a340;background:rgba(212,163,64,.2);box-shadow:0 0 12px rgba(212,163,64,.3)}
.nickname-display{
    color:#f1f5f9;font-size:15px;font-weight:600;
    padding:4px 6px;border-radius:6px;cursor:pointer;
    display:inline-block;min-width:60px;user-select:none;
}
.nickname-dropdown:hover .nickname-display{background:rgba(255,255,255,.08)}

/* 昵称下拉菜单 */
.nickname-dropdown{position:relative}
.nick-menu{
    position:absolute;top:100%;left:0;z-index:10000;
    min-width:160px;background:linear-gradient(180deg,#0f3d29,#0a2618);
    border:1px solid rgba(212,163,64,.3);border-radius:10px;
    box-shadow:0 8px 28px rgba(0,0,0,.5);overflow:hidden;
    display:none;margin-top:6px;
}
.nickname-dropdown:hover .nick-menu{display:block}
.nick-menu-item{
    padding:10px 16px;font-size:14px;color:#e2e8f0;cursor:pointer;
    transition:all .15s;white-space:nowrap;
}
.nick-menu-item:hover{background:rgba(212,163,64,.12);color:#fbbf24}
.nick-menu-item.nick-menu-danger:hover{background:rgba(231,76,60,.15);color:#e74c3c}
.nick-menu-item + .nick-menu-item{border-top:1px solid rgba(255,255,255,.05)}

/* 移动端抽屉菜单（默认隐藏） */
.mobile-menu-btn{display:none}
.drawer-mask{
    position:fixed;inset:0;z-index:99998;
    background:rgba(0,0,0,.5);opacity:0;visibility:hidden;
    transition:opacity .25s ease,visibility .25s;
}
.drawer-mask.show{opacity:1;visibility:visible}
.drawer{
    position:fixed;top:0;right:0;z-index:99999;
    width:260px;max-width:80vw;height:100vh;
    background:linear-gradient(180deg,#0f3d29,#0a2618);
    border-left:1px solid rgba(212,163,64,.3);
    transform:translateX(100%);
    transition:transform .25s ease;
    display:flex;flex-direction:column;
    box-shadow:-4px 0 24px rgba(0,0,0,.4);
}
.drawer.show{transform:translateX(0)}
.drawer-header{
    display:flex;align-items:center;gap:12px;
    padding:20px;border-bottom:1px solid rgba(212,163,64,.15);
}
.drawer-avatar{font-size:36px}
.drawer-nickname{font-size:18px;font-weight:700;color:#fbbf24;flex:1}
.drawer-close{
    background:none;border:none;color:#94a3b8;font-size:20px;cursor:pointer;
    padding:4px 8px;border-radius:6px;transition:all .15s;
}
.drawer-close:hover{background:rgba(255,255,255,.1);color:#f1f5f9}
.drawer-body{padding:10px 0;flex:1}
.drawer-item{
    display:flex;align-items:center;gap:14px;
    padding:14px 20px;font-size:16px;color:#e2e8f0;cursor:pointer;
    transition:all .15s;
}
.drawer-item:hover{background:rgba(212,163,64,.12);color:#fbbf24}
.drawer-item.drawer-item-danger:hover{background:rgba(231,76,60,.15);color:#e74c3c}
.drawer-icon{font-size:20px;width:24px;text-align:center}

/* ================== 主体 ================== */
.lobby-main{
    flex:1;display:grid;grid-template-columns:280px 1fr;gap:20px;align-items:start;
}

.section-title{
    font-size:16px;font-weight:700;color:#e2e8f0;margin-bottom:16px;
    padding-left:10px;border-left:3px solid #d4a340;
}

/* 左侧操作 */
.lobby-actions{
    background:rgba(10,38,24,.7);border:1px solid rgba(212,163,64,.2);border-radius:14px;
    padding:20px;position:sticky;top:20px;backdrop-filter:blur(8px);
}
.lobby-actions .btn-block{margin-bottom:12px}
.conn-status{
    margin-top:18px;padding:10px 12px;background:rgba(0,0,0,.3);border-radius:10px;
    display:flex;align-items:center;gap:8px;font-size:13px;color:#94a3b8;
    border:1px solid rgba(148,163,184,.1);
}
.status-dot{width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 8px currentColor}

/* 右侧房间列表 */
.lobby-rooms{
    background:rgba(10,38,24,.7);border:1px solid rgba(212,163,64,.2);border-radius:14px;
    padding:20px;backdrop-filter:blur(8px);min-height:500px;
    display:flex;flex-direction:column;
}
.rooms-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.rooms-count{font-size:13px;color:#94a3b8}
.room-list{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}

/* 房间项 */
.room-item{
    display:flex;align-items:center;justify-content:space-between;gap:16px;
    padding:14px 18px;background:linear-gradient(135deg,rgba(255,255,255,.04),rgba(212,163,64,.06));
    border:1px solid rgba(255,255,255,.08);border-radius:12px;
    transition:all .2s ease;
}
.room-item:hover{
    border-color:rgba(212,163,64,.4);transform:translateY(-1px);
    background:linear-gradient(135deg,rgba(255,255,255,.06),rgba(212,163,64,.1));
}
.room-item.room-playing{opacity:.82}

.room-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.room-name{font-size:16px;font-weight:700;color:#f1f5f9;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.room-id{font-size:12px;font-weight:500;color:#94a3b8;padding:2px 8px;background:rgba(0,0,0,.25);border-radius:6px;letter-spacing:1px}
.room-meta{display:flex;align-items:center;gap:14px;font-size:13px;color:#cbd5e1;flex-wrap:wrap}
.room-owner,.room-players{display:inline-flex;align-items:center;gap:4px}

.room-side{display:flex;align-items:center;gap:14px;flex-shrink:0}
.room-status{
    font-size:12px;padding:4px 10px;border-radius:999px;font-weight:600;letter-spacing:.5px;
}
.status-waiting{background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.3)}
.status-playing{background:rgba(239,68,68,.15);color:#f87171;border:1px solid rgba(239,68,68,.3)}

/* 空列表 */
.empty-rooms{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
    padding:40px 20px;color:#94a3b8;
}
.empty-icon{font-size:56px;opacity:.35}
.empty-text{font-size:15px}

/* ================== 弹窗 ================== */
.modal-mask{
    position:fixed;inset:0;z-index:100000;
    background:rgba(0,0,0,.6);backdrop-filter:blur(4px);
    display:flex;align-items:center;justify-content:center;padding:20px;
}
.modal-box{
    width:100%;max-width:440px;
    background:linear-gradient(180deg,#0f3d29,#0a2618);
    border:1px solid rgba(212,163,64,.3);border-radius:14px;
    padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.5);
    animation:modalIn .2s ease-out;
}
@keyframes modalIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.modal-title{font-size:18px;font-weight:700;color:#fbbf24;margin-bottom:18px}
.modal-room-name{font-size:14px;color:#94a3b8;font-weight:500}

.form-group{margin-bottom:14px}
.form-group label{display:block;font-size:13px;color:#cbd5e1;margin-bottom:6px;font-weight:500}
.form-input{
    width:100%;padding:12px 14px;font-size:15px;
    background:rgba(255,255,255,.06);color:#f1f5f9;
    border:1px solid rgba(255,255,255,.12);border-radius:10px;outline:none;
    transition:all .18s;
}
.form-input:focus{border-color:rgba(212,163,64,.7);background:rgba(255,255,255,.09);box-shadow:0 0 0 3px rgba(212,163,64,.15)}
.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}
.alert-text{font-size:15px;color:#f1f5f9;padding:10px 0 6px;line-height:1.6}

/* ================== 会员信息面板 ================== */
.profile-panel{padding:4px 0}
.profile-avatar-row{display:flex;align-items:center;gap:14px;padding:12px 16px;background:rgba(255,255,255,.05);border-radius:12px;margin-bottom:16px;border:1px solid rgba(212,163,64,.15)}
.profile-avatar{font-size:40px}
.profile-nickname{font-size:20px;font-weight:700;color:#fbbf24}
.profile-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.profile-stat-item{display:flex;flex-direction:column;align-items:center;padding:14px 8px;background:rgba(255,255,255,.04);border-radius:10px;border:1px solid rgba(255,255,255,.06)}
.profile-stat-label{font-size:13px;color:#94a3b8;margin-bottom:6px}
.profile-stat-value{font-size:24px;font-weight:700;color:#d4a340}

/* ================== 响应式 ================== */
@media (max-width: 900px){
    .lobby-main{grid-template-columns:1fr}
    .lobby-actions{position:static}
}
@media (max-width: 640px){
    .lobby-container{padding:12px}
    .lobby-header{flex-direction:row;align-items:center;gap:8px;padding:12px 14px}
    .header-left{justify-content:space-between}
    .header-right{flex-wrap:nowrap;justify-content:flex-end;gap:8px}
    .sub-title{display:none}
    .nickname-display{font-size:14px;min-width:50px}
    /* 移动端：隐藏PC端下拉和返回首页按钮 */
    .nickname-dropdown{display:none}
    .header-right .btn-secondary{display:none}
    /* 显示移动端菜单按钮 */
    .mobile-menu-btn{
        display:flex;align-items:center;justify-content:center;
        width:36px;height:36px;font-size:20px;color:#f1f5f9;
        background:rgba(255,255,255,.06);border:1px solid rgba(212,163,64,.25);
        border-radius:8px;cursor:pointer;transition:all .15s;
    }
    .mobile-menu-btn:hover{background:rgba(212,163,64,.15)}
    .room-item{flex-direction:column;align-items:stretch;gap:12px;padding:14px}
    .room-side{justify-content:space-between}
    .room-name{font-size:15px}
    .lobby-rooms{padding:16px;min-height:400px}
    .lobby-actions{padding:16px}
    .modal-box{padding:20px 16px}
    .modal-actions{flex-direction:column-reverse}
    .modal-actions .btn{width:100%}
}
/* 手机竖屏没有任何隐藏 container 的媒体查询，房间列表永远可见 */
