/* ============================================================
   MainLayout.css - 主布局样式（Task 1.2）

   结构：
     .xx-app-shell          全屏 flex 容器
     ├── header (xx-top-nav) 顶部导航（Header.tsx 管理）
     └── .xx-app-body       水平 flex 行
         ├── .xx-app-sidebar  左侧侧边栏（240px / 64px 折叠）
         └── .xx-app-content  主内容区（自适应）

   所有尺寸/颜色均使用 global.css 设计系统变量
   ============================================================ */

/* ── 应用外壳 ─────────────────────────────────────────────── */
.xx-app-shell {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  background: var(--bg-secondary);
  color: var(--text-primary);
  position: relative;
  z-index: 1;
}

/* ── 主体区域（侧边栏 + 内容） ────────────────────────────── */
.xx-app-body {
  display: flex;
  flex: 1;
  min-height: 0; /* 允许子元素收缩，防止溢出 */
}

/* ── 侧边栏 ───────────────────────────────────────────────── */
.xx-app-sidebar {
  width: 240px;
  flex-shrink: 0;
  position: sticky;
  top: 0;
  height: 100vh;
  background: rgba(255, 255, 255, 0.88);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border-right: 1px solid rgba(226, 232, 240, 0.9);
  display: flex;
  flex-direction: column;
  transition: width var(--transition-slow);
  overflow: hidden;
  z-index: var(--z-fixed);
}

/* 折叠态 —— 64px 图标栏 */
.xx-app-sidebar.xx-collapsed {
  width: 64px;
}

/* ── 侧边栏折叠按钮 ───────────────────────────────────────── */
.xx-sidebar-toggle {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: var(--space-sm) var(--space-md);
  border-bottom: 1px solid var(--border-light);
  height: 48px;
  flex-shrink: 0;
}

.xx-sidebar-toggle button {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  border: none;
  background: none;
  cursor: pointer;
  color: var(--text-secondary);
  padding: var(--space-xs) var(--space-sm);
  border-radius: var(--radius-xs);
  font-size: var(--font-size-sm);
  font-weight: var(--font-weight-medium);
  transition: var(--transition-colors);
  white-space: nowrap;
  overflow: hidden;
}

.xx-sidebar-toggle button:hover {
  color: var(--text-primary);
  background: var(--bg-tertiary);
}

/* 折叠时隐藏文字标签，仅保留图标居中 */
.xx-app-sidebar.xx-collapsed .xx-sidebar-toggle {
  justify-content: center;
  padding: var(--space-sm) var(--space-xs);
}

.xx-app-sidebar.xx-collapsed .xx-sidebar-toggle-label {
  display: none;
}

/* ── 侧边栏内容区 ─────────────────────────────────────────── */
.xx-sidebar-content {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  padding: var(--space-sm);
}

/* ── 主内容区 ─────────────────────────────────────────────── */
.xx-app-content {
  flex: 1;
  min-width: 0; /* 防止内容溢出 */
  overflow-y: auto;
  padding: var(--space-lg);
}

/* ── 移动端遮罩层（默认隐藏） ─────────────────────────────── */
.xx-sidebar-overlay {
  display: none;
}

/* ============================================================
   响应式 —— 平板（769px ~ 1024px）
   侧边栏默认折叠为图标栏
   ============================================================ */
@media (min-width: 769px) and (max-width: 1024px) {
  .xx-app-sidebar {
    width: 64px;
  }

  .xx-app-sidebar .xx-sidebar-toggle {
    justify-content: center;
    padding: var(--space-sm) var(--space-xs);
  }

  .xx-app-sidebar .xx-sidebar-toggle-label {
    display: none;
  }

  /* 展开态恢复完整宽度 */
  .xx-app-sidebar:not(.xx-collapsed) {
    width: 240px;
  }

  .xx-app-sidebar:not(.xx-collapsed) .xx-sidebar-toggle {
    justify-content: flex-end;
    padding: var(--space-sm) var(--space-md);
  }

  .xx-app-sidebar:not(.xx-collapsed) .xx-sidebar-toggle-label {
    display: inline;
  }
}

/* ============================================================
   响应式 —— 移动端（≤768px）
   侧边栏隐藏，由 Header 汉堡菜单控制显示
   ============================================================ */
@media (max-width: 768px) {
  .xx-app-sidebar {
    position: fixed;
    top: 56px; /* 移动端 Header 高度 */
    left: 0;
    bottom: 0;
    width: 240px;
    transform: translateX(-100%);
    transition: transform var(--transition-slow);
    box-shadow: none;
    z-index: calc(var(--z-fixed) - 1); /* 低于 Header 的汉堡按钮 */
  }

  /* 展开态：滑入 */
  .xx-app-sidebar:not(.xx-collapsed) {
    transform: translateX(0);
    box-shadow: var(--shadow-lg);
  }

  /* 展开时显示遮罩 */
  .xx-app-sidebar:not(.xx-collapsed) ~ .xx-sidebar-overlay,
  .xx-app-sidebar:not(.xx-collapsed) + .xx-app-content::before {
    display: none;
  }

  /* 遮罩层 —— 使用独立选择器 */
  .xx-sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: var(--bg-overlay);
    z-index: calc(var(--z-fixed) - 2);
    cursor: pointer;
  }

  /* 通过父级控制遮罩显示 */
  .xx-app-body:has(.xx-app-sidebar:not(.xx-collapsed)) > .xx-sidebar-overlay {
    display: block;
  }

  .xx-app-content {
    padding: var(--space-md);
  }
}
