/* ============================================
   移动端适配补丁 - v20260820b
   加载在 style.css 之后，覆盖原有响应式规则
   ============================================ */

/* 强制 html/body 高度铺满，并设置与登录页一致的背景色兜底，防止微信浏览器出现白边 */
html, body {
  min-height: 100% !important;
  height: 100% !important;
  background: linear-gradient(135deg, #1e3a5f 0%, #2d5a87 50%, #3a7bd5 100%) !important;
  background-attachment: fixed !important;
}

/* 全屏固定背景层：确保背景覆盖整个视口（包括微信安全区域），不受内容滚动影响 */
.login-page::before {
  content: '' !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  height: -webkit-fill-available !important;
  background: linear-gradient(135deg, #1e3a5f 0%, #2d5a87 50%, #3a7bd5 100%) !important;
  z-index: -1 !important;
  pointer-events: none !important;
}

/* === 登录页移动端全屏适配（所有断点生效） === */
.login-page {
  min-height: 100vh !important;
  min-height: -webkit-fill-available !important;
  /* 微信内置浏览器 dvh 会把底部工具栏算进去，导致居中偏上，所以降级到 vh/fill-available */
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-sizing: border-box !important;
  padding: env(safe-area-inset-top, 0) 16px env(safe-area-inset-bottom, 0) 16px !important;
}

/* 登录卡片在 flex 容器中垂直/水平居中，并设置最大高度 */
.login-card {
  margin: auto !important;
  width: 100% !important;
  max-width: 420px !important;
  max-height: calc(100vh - 32px) !important;
  max-height: calc(100% - 32px) !important;
  overflow-y: auto !important;
  box-sizing: border-box !important;
}

/* 允许滚动（移动端需要页面可上下滚动） */
@media (max-width: 768px) {
  /* 登录页全屏 + 防止地址栏导致白边 */
  .login-page {
    min-height: 100vh !important;
    min-height: -webkit-fill-available !important;
    width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: env(safe-area-inset-top, 0) 16px env(safe-area-inset-bottom, 0) 16px !important;
  }

  /* 登录卡片：保持自适应高度，页面居中 */
  .login-card {
    width: calc(100% - 32px) !important;
    max-width: 420px !important;
    margin: auto !important;
    padding: var(--spacing-xl) var(--spacing-lg) !important;
    border-radius: 16px !important;
    box-shadow: 0 12px 40px rgba(0,0,0,0.25) !important;
    overflow-y: auto !important;
    box-sizing: border-box !important;
  }

  /* 登录 logo 与表单整体视觉居中 */
  .login-logo { margin-bottom: var(--spacing-xl) !important; text-align: center !important; }
  .login-logo .logo-icon {
    width: 60px !important; height: 60px !important; font-size: 30px !important;
    border-radius: 16px !important; margin: 0 auto !important;
  }
  .login-logo h2 { font-size: var(--font-size-xl) !important; margin-top: var(--spacing-md) !important; }
  .login-logo p { font-size: var(--font-size-sm) !important; }

  /* 表单间距 */
  .login-form { gap: var(--spacing-md) !important; }
  .login-form .form-group { gap: 6px !important; }
  .login-form label { font-size: var(--font-size-md) !important; }

  /* 防止 iOS 输入时自动缩放 */
  .login-form input[type="text"],
  .login-form input[type="password"] {
    font-size: 16px !important;
    padding: 12px 14px !important;
    border-radius: 8px !important;
  }

  /* 登录按钮 */
  .login-form .btn { padding: 14px !important; font-size: var(--font-size-md) !important; }

  html, body { overflow: auto !important; }
  .app-layout { height: auto !important; min-height: 100vh; overflow: visible !important; }
  .main-content { overflow: visible !important; }

  /* Header 改为两行，内容可换行 */
  .header {
    flex-wrap: wrap !important;
    height: auto !important;
    min-height: var(--header-height);
    padding: 8px var(--spacing-md) !important;
    gap: 6px;
  }
  .header-left { flex: 0 0 auto; }
  .header-title {
    font-size: var(--font-size-md) !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 120px;
  }
  .header-right {
    flex: 1 1 100% !important;
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    margin-top: 4px;
  }

  /* 用户信息紧凑 */
  .user-info { padding: 4px 8px !important; gap: 6px !important; }
  .user-info .user-role { display: none !important; }
  .user-info .user-name { font-size: var(--font-size-xs) !important; }
  .user-info .avatar { width: 28px !important; height: 28px !important; font-size: 12px !important; }
  .btn-logout { padding: 4px 8px !important; font-size: var(--font-size-xs) !important; }

  /* 内容区域 */
  .content-area { padding: var(--spacing-md) !important; }
  .kpi-grid { grid-template-columns: 1fr !important; }

  /* KPI 卡片 */
  .kpi-card { padding: var(--spacing-md) !important; }
  .kpi-card .kpi-value { font-size: var(--font-size-2xl) !important; }

  /* 表单单列 */
  .form-grid { grid-template-columns: 1fr !important; }

  /* 侧边栏宽度适配 */
  .sidebar { width: 80% !important; max-width: 300px !important; }

  /* Modal 全屏 */
  .modal {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 92vh !important;
    border-radius: 0 !important;
  }
  .modal-lg { max-width: 100% !important; }
  .modal-body { padding: var(--spacing-md) !important; }
  .modal-header { padding: var(--spacing-sm) var(--spacing-md) !important; }
  .modal-footer { padding: var(--spacing-sm) var(--spacing-md) !important; flex-wrap: wrap !important; }
  .modal-footer .btn { flex: 1; min-width: 80px; justify-content: center; }

  /* Tab 可横向滚动 */
  .tabs { overflow-x: auto; flex-wrap: nowrap; }
  .tab-item { white-space: nowrap; padding: 8px 14px; }

  /* mini stats 2列 */
  .mini-stats-row { grid-template-columns: repeat(2, 1fr) !important; gap: 8px !important; }
  .mini-stat-card { padding: var(--spacing-sm) var(--spacing-md) !important; gap: 8px !important; }
  .mini-stat-icon { width: 32px !important; height: 32px !important; font-size: 15px !important; }
  .mini-stat-value { font-size: 18px !important; }

  /* rate progress 紧凑 */
  .rate-progress-row { padding: 8px var(--spacing-md) !important; gap: 8px !important; }
  .rate-progress-values { min-width: 60px !important; }
  .rate-progress-current { font-size: 13px !important; }

  /* panel 内边距 */
  .panel-header { padding: var(--spacing-sm) var(--spacing-md) !important; }
  .panel-body { padding: var(--spacing-md) !important; }

  /* 图表高度 */
  .chart-body-rank, .chart-body-donut { height: 220px !important; }

  /* dashboard charts 单列 */
  .dashboard-charts { grid-template-columns: 1fr !important; }
  .summary-charts { grid-template-columns: 1fr !important; }

  /* toast 全宽 */
  .toast-container { left: var(--spacing-md); right: var(--spacing-md); }
  .toast { max-width: 100%; }

  /* 表格 */
  .data-table { font-size: var(--font-size-xs) !important; }
  .data-table th, .data-table td { padding: 6px 8px !important; }
}

@media (max-width: 480px) {
  /* 登录页超窄屏全屏 */
  .login-page {
    min-height: 100vh !important;
    min-height: -webkit-fill-available !important;
    padding: env(safe-area-inset-top, 0) 12px env(safe-area-inset-bottom, 0) 12px !important;
  }
  .login-card {
    width: calc(100% - 24px) !important;
    max-width: 420px !important;
    padding: var(--spacing-lg) var(--spacing-md) !important;
    border-radius: 12px !important;
    margin: auto !important;
    box-sizing: border-box !important;
  }
  .login-logo { margin-bottom: var(--spacing-lg) !important; }
  .login-logo .logo-icon { width: 52px !important; height: 52px !important; font-size: 26px !important; }
  .login-logo h2 { font-size: var(--font-size-lg) !important; }
  .login-form input[type="text"],
  .login-form input[type="password"] {
    padding: 12px 12px !important;
  }
  .header-title { max-width: 80px !important; font-size: 13px !important; }
  .header-right { gap: 4px !important; }
  .sync-indicator { padding: 3px 6px !important; font-size: 10px !important; }
  .sync-indicator i { font-size: 11px !important; }
  .sync-indicator .sync-text { display: none !important; }
  .user-info .user-name { display: none !important; }
  .user-info .avatar { width: 24px !important; height: 24px !important; font-size: 11px !important; }
  .btn-logout { padding: 4px 6px !important; font-size: 0 !important; }
  .btn-logout i { font-size: 14px; }
  .period-selector { gap: 4px !important; }
  .period-selector label { font-size: 10px !important; }
  .period-selector select { font-size: 11px !important; padding: 3px 20px 3px 6px !important; }
  .mini-stats-row { grid-template-columns: 1fr !important; }
  .sidebar { width: 85% !important; }
  .sidebar-brand h1 { font-size: var(--font-size-md) !important; }
  .content-area { padding: var(--spacing-sm) !important; }
  .kpi-card { padding: var(--spacing-sm) var(--spacing-md) !important; }
  .kpi-card .kpi-value { font-size: 20px !important; }
  .modal-body { padding: var(--spacing-sm) !important; }
}

/* 横屏小屏设备：限制卡片最大高度，避免被压扁 */
@media (max-height: 500px) and (orientation: landscape) {
  .login-card {
    min-height: auto !important;
    max-height: 95vh !important;
    padding: var(--spacing-md) var(--spacing-lg) !important;
  }
  .login-logo { margin-bottom: var(--spacing-md) !important; }
  .login-logo .logo-icon { width: 48px !important; height: 48px !important; font-size: 24px !important; }
  .login-form { gap: var(--spacing-sm) !important; }
}
