/* ==========================================================================
   shell.css — 应用外壳：侧栏 / 移动端顶栏 / 抽屉 / 内容区 / 页头
   桌面端几何与线上一致：侧栏 200px、内容 padding 22/28。
   ========================================================================== */

/* ---------- 1. 外壳骨架 ---------- */
.app{display:flex;height:100dvh;overflow:hidden;position:relative}

/* ---------- 2. 侧栏（桌面） ---------- */
.sidebar{
  flex:0 0 var(--sidebar-w);width:var(--sidebar-w);
  display:flex;flex-direction:column;gap:4px;
  padding:18px 12px;background:var(--sidebar);border-right:1px solid var(--line);
  z-index:30;
}
.brand{
  display:flex;align-items:center;gap:8px;
  font-size:18px;font-weight:700;color:var(--gold);letter-spacing:1px;margin:0 0 18px;
  padding:0 4px;transition:var(--mid) var(--ease);
}
.brand .logo{font-size:19px;line-height:1;transition:transform var(--mid) var(--ease)}
.brand:hover .logo{transform:rotate(-12deg) scale(1.12)}

.nav-scroll{
  flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;
  display:flex;flex-direction:column;gap:0;
  scrollbar-width:thin;scrollbar-color:var(--line-3) transparent;
}
.nav-scroll::-webkit-scrollbar{width:6px}
.nav-scroll::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:3px}
.nav-scroll::-webkit-scrollbar-track{background:transparent}

.nav-group{display:flex;flex-direction:column;gap:4px}
.nav-group+.nav-group{margin-top:12px;padding-top:12px;border-top:1px solid var(--line-soft)}
.nav-label{font-size:10px;letter-spacing:1.4px;color:var(--ghost);text-transform:uppercase;padding:0 12px 4px}

.nav-item{
  position:relative;display:flex;align-items:center;gap:9px;
  padding:8px 12px;border-radius:var(--r-ctl);font-size:13px;color:var(--muted);
  transition:background var(--fast),color var(--fast),padding-left var(--mid) var(--ease);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;
}
.nav-item .ni{width:16px;text-align:center;flex:0 0 auto;font-size:13px;opacity:.85}
.nav-item .badge{
  margin-left:auto;font-size:10px;padding:1px 6px;border-radius:9px;
  background:var(--chip);border:1px solid var(--line);color:var(--muted);
}
.nav-item::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:0;border-radius:0 3px 3px 0;background:var(--gold);transition:height var(--mid) var(--ease);
}
.nav-item:hover,.nav-item.active{background:var(--panel);color:var(--text)}
.nav-item:hover{padding-left:15px}
.nav-item:hover::before{height:14px}
.nav-item.active{color:var(--gold)}
.nav-item.active::before{height:20px}
.nav-item .badge.hot{background:rgba(139,109,214,.2);border-color:var(--violet-line);color:#c3b0f0}

.userbox{margin-top:auto;border-top:1px solid var(--line);padding-top:12px;font-size:12px;color:var(--muted)}
.userbox .uname{display:flex;align-items:center;gap:8px;margin-bottom:9px;padding:0 2px}
.userbox .uname b{color:var(--text);font-weight:600;font-size:12.5px}
.userbox .btn{width:100%}

/* ---------- 3. 内容区 ---------- */
.content{flex:1 1 auto;min-width:0;min-height:0;height:100%;overflow:auto;padding:22px 28px;scroll-behavior:smooth;overscroll-behavior:contain}
.content.flat{padding:0;overflow:hidden}

/* 页头（房间页顶栏同款） */
.page-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px 14px;flex-wrap:wrap;
  padding:10px 14px;margin-bottom:12px;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r-card);
}
.page-head-info{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap;min-width:0}
.page-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.page-title{font-size:22px;font-weight:700;color:var(--gold);margin:0;line-height:1.35}
.page-sub{font-size:12px;color:var(--muted)}
.crumb{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.crumb a:hover{color:var(--gold)}
.crumb .sep{color:var(--ghost)}

/* 区块标题行 */
.block-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:18px 0 10px}
.block-head:first-child{margin-top:0}

/* ---------- 4. 移动端顶栏 + 抽屉 ---------- */
.appbar{
  display:none;position:sticky;top:0;z-index:40;height:var(--appbar-h);
  align-items:center;gap:10px;padding:0 14px;
  background:rgba(28,24,40,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.appbar .ab-title{font-size:15px;font-weight:700;color:var(--gold);letter-spacing:.5px}
.appbar .ab-spacer{flex:1}
.sidebar-mask{
  position:fixed;inset:0;background:rgba(8,6,14,.62);backdrop-filter:blur(2px);
  opacity:0;pointer-events:none;transition:opacity var(--mid);z-index:29;
}
body.drawer-open .sidebar-mask{opacity:1;pointer-events:auto}

/* ---------- 5. 滚动进度条 ---------- */
.scroll-progress{
  position:fixed;top:0;left:0;height:2px;width:100%;z-index:60;
  background:linear-gradient(90deg,var(--violet),var(--gold));
  transform:scaleX(0);transform-origin:0 50%;transition:transform .1s linear;
}

/* ---------- 6. 页间过渡遮罩 ---------- */
.route-fade{
  position:fixed;inset:0;background:var(--bg);z-index:80;opacity:0;pointer-events:none;
  transition:opacity var(--mid) var(--ease);
}
body.leaving .route-fade{opacity:1;pointer-events:auto}

/* ---------- 7. 响应式 ---------- */
@media (max-width:1180px){
  .content{padding:18px 20px}
}
@media (max-width:980px){
  .content{padding:16px 16px}
  .page-title{font-size:19px}
}
@media (max-width:760px){
  .app{flex-direction:column}
  .appbar{display:flex;flex:0 0 auto;position:relative;top:auto}
  .sidebar{
    position:fixed;left:0;top:0;bottom:0;width:min(78vw,240px);
    transform:translateX(-102%);transition:transform var(--mid) var(--ease);
    box-shadow:var(--sh-3);padding-top:16px;
  }
  /* 侧栏窄屏只留图标（与线上折叠态一致） */
  .nav-item{font-size:0;justify-content:center;padding:10px 0;gap:0}
  .nav-item .ni{font-size:16px;width:auto}
  .nav-item:hover{padding-left:0}
  .nav-item.active .ni{opacity:1}
  .nav-label{font-size:0;padding:0}
  .nav-label::before{content:"";display:block;height:1px;background:var(--line-soft);margin:6px 4px}
  .userbox .uname{justify-content:center}
  .userbox .uname b{display:none}
  .userbox .btn{font-size:0;padding:8px 0}
  .userbox .btn::before{content:"⏻";font-size:14px}
  body.drawer-open .sidebar{transform:none}
  .content{padding:14px 12px 28px}
  .page-title{font-size:17px}
  .page-head{padding:9px 11px}
  .brand{margin-bottom:14px}
}
