/* ===== base.css · CSS 变量 + reset + 排版基础 ===== */
:root {
  --bg: #f5f6f8;
  --card: #ffffff;
  --border: #e4e7ec;
  --text: #1a2233;
  --text2: #5b6472;
  --primary: #0040ed;            /* Gant 主色（玻璃态规范） */
  --primary-h: #0034c0;
  --primary-050: rgba(0, 64, 237, .06);   /* 主色衍生：hover/微背景 */
  --primary-100: rgba(0, 64, 237, .10);   /* 选中态背景 */
  --primary-200: rgba(0, 64, 237, .18);   /* 强调边框/聚焦环 */
  --primary-300: #5b86ff;                /* 高亮蓝 */
  --primary-600: #0034c0;                /* 深一档（hover/按下） */
  --success-050: rgba(22, 163, 74, .10);
  --warning-050: rgba(245, 158, 11, .14);
  --danger-050: rgba(220, 38, 38, .10);
  --info-050: rgba(35, 187, 255, .12);
  --green: #16a34a;
  --red: #dc2626;
  --yellow: #f59e0b;

  --t-holiday: #fef9c3;
  --t-rest: #dcfce7;
  --t-abnormal: #fee2e2;

  /* 布局变量 */
  --sidebar-w: 220px;
  --sidebar-w-collapsed: 64px;
  --topbar-h: 56px;
  --sidebar-bg: var(--card);
  --sidebar-item-active-bg: rgba(0, 64, 237, 0.08);
  --sidebar-item-hover-bg: rgba(0, 0, 0, 0.04);
  --content-padding: 20px;

  /* === Gant 毛玻璃设计令牌（融合层 glass.css 使用） === */
  --info: #23bbff;                                  /* 渐变辅助色，不可喧宾夺主 */
  --primary-grad: linear-gradient(135deg, #0040ed 0%, #23bbff 100%);
  --glass-bg: rgba(255, 255, 255, 0.62);            /* 毛玻璃容器：半透明白（提浓 .55→.62） */
  --glass-bg-strong: rgba(255, 255, 255, 0.82);     /* 输入/弹层等更实一点（.72→.82） */
  --glass-border-color: rgba(255, 255, 255, 0.78);  /* 白色描边（.75→.78） */
  --glass-blur: blur(18px);                         /* 10→18，更明显毛玻璃 */
  --shadow-float: 0 22px 70px rgba(16, 32, 64, 0.14);
  --shadow-sm: 0 1px 2px rgba(16,32,64,.06), 0 2px 8px rgba(16,32,64,.05);
  --shadow-md: 0 10px 30px -12px rgba(16,32,64,.22);
  --shadow-lg: 0 30px 70px -24px rgba(16,32,64,.32);
  --r-sm: 10px; --r-md: 12px; --r-lg: 16px; --r-xl: 20px; --r-pill: 999px;
  --bg-grad:
    radial-gradient(1100px 560px at 8% -10%, rgba(0, 64, 237, 0.18), transparent 58%),
    radial-gradient(900px 480px at 100% 0%, rgba(35, 187, 255, 0.20), transparent 52%),
    linear-gradient(180deg, #e9f1ff 0%, #d6e2fb 100%);
  --grid-line: rgba(255, 255, 255, 0.55);
  --surface2: rgba(0, 64, 237, 0.05);
}

[data-theme="dark"] {
  --bg: #12161f;
  --card: #1a2029;
  --border: #2a3240;
  --text: #e5e9f0;
  --text2: #98a2b3;
  --primary: #4d7cff;
  --primary-h: #6f9bff;
  --primary-050: rgba(91, 134, 255, .10);
  --primary-100: rgba(91, 134, 255, .18);
  --primary-200: rgba(91, 134, 255, .28);
  --primary-300: #8fb0ff;
  --primary-600: #4d7cff;
  --t-holiday: #4d4318;
  --t-rest: #14351f;
  --t-abnormal: #4a1f1f;

  --sidebar-item-active-bg: rgba(77, 124, 255, 0.16);
  --sidebar-item-hover-bg: rgba(255, 255, 255, 0.04);

  /* === Gant 毛玻璃设计令牌（暗色） === */
  --info: #23bbff;
  --primary-grad: linear-gradient(135deg, #0040ed 0%, #3b7bff 100%);
  --glass-bg: rgba(28, 36, 53, 0.60);               /* .55→.60 */
  --glass-bg-strong: rgba(34, 44, 64, 0.82);        /* .78→.82 */
  --glass-border-color: rgba(255, 255, 255, 0.14);
  --glass-blur: blur(18px);                         /* 10→18 */
  --shadow-float: 0 22px 70px rgba(0, 0, 0, 0.55);
  --shadow-sm: 0 1px 2px rgba(0,0,0,.30);
  --shadow-md: 0 12px 32px -14px rgba(0,0,0,.55);
  --shadow-lg: 0 30px 70px -24px rgba(0,0,0,.65);
  --r-sm: 10px; --r-md: 12px; --r-lg: 16px; --r-xl: 20px; --r-pill: 999px;
  --bg-grad:
    radial-gradient(1100px 560px at 8% -10%, rgba(0, 64, 237, 0.32), transparent 58%),
    radial-gradient(900px 480px at 100% 0%, rgba(35, 187, 255, 0.22), transparent 52%),
    linear-gradient(180deg, #0f1420 0%, #0a0e17 100%);
  --grid-line: rgba(255, 255, 255, 0.05);
  --surface2: rgba(77, 124, 255, 0.10);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg-grad);
  background-attachment: fixed;
  color: var(--text);
  min-height: 100vh;
}

h1 { font-size: 1.5rem; display: flex; align-items: center; gap: 10px; }
h2 { font-size: 1rem; }
label { display: block; font-size: .82rem; color: var(--text2); margin: 12px 0 5px; }
