/* =====================================================================
   研行 · 学业跟踪 —— 主题与信息密度（新增文件）
   ① [data-theme="dark"] 覆盖 tokens.css / style.css 的设计令牌，实现深色主题；
   ② 对 style.css 中少数硬编码颜色做同域覆盖，保证深色下观感一致；
   ③ [data-density="compact"] 提供“紧凑”信息密度。
   本文件在 style.css 之后加载，不改动 tokens.css / style.css / app.py。
   ===================================================================== */

/* =====================================================================
   深色主题：令牌覆盖
   ===================================================================== */
[data-theme="dark"]{
  color-scheme: dark;

  /* 主色（深色下整体提亮，保证文字与描边对比度） */
  --primary-1:#17203a;
  --primary-2:#1d2b4d;
  --primary-3:#3b5bd9;
  --primary-4:#4f6ee6;
  --primary-5:#7f93ff;
  --primary-6:#6d81ff;
  --primary-7:#8fa0ff;
  --primary-8:#a7b4ff;
  --primary:#6d81ff;
  --primary-accent:#6d81ff;
  --primary-accent-hover:#8fa0ff;
  --primary-link:#8fa0ff;
  --primary-ring:#6d81ff;
  --primary-hover:#8fa0ff;
  --primary-active:#5b6fe6;
  --color-primary:#6d81ff;
  --color-primary-hover:#8fa0ff;

  /* 背景 / 表面 */
  --color-bg-1:#16181d;
  --color-bg-2:#16181d;
  --color-bg-3:#1b1e24;
  --color-bg-4:#0f1115;
  --color-bg-5:#23262e;
  --color-bg-7:#16181d;
  --color-bg-8:#16181d;
  --color-bg-9:#16181d;
  --color-bg-page:#0f1115;
  --color-bg-card:#16181d;
  --color-bg-hover:#23262e;
  --color-bg-active:#23262e;
  --color-bg-subtle:#16181d;
  --bg-4:#16181d;
  --bg-7:#16181d;
  --bg-hover:#23262e;
  --bg-subtle:#16181d;
  --divider:#262a33;

  --foundation-bg:#16181d;
  --foundation-background:#0f1115;
  --foundation-surface:#16181d;
  --foundation-surface-dim:#131519;
  --foundation-surface-bright:#16181d;
  --foundation-surface-container:#16181d;
  --foundation-surface-container-low:#131519;
  --foundation-surface-container-high:#1b1e24;
  --foundation-surface-container-highest:#23262e;
  --foundation-card:#16181d;
  --foundation-popover:#1b1e24;
  --foundation-rule:#262a33;
  --foundation-border:#262a33;
  --foundation-input:#23262e;
  --foundation-inverse-surface:#e8eaed;
  --foundation-inverse-on-surface:#16181d;

  --color-surface:#16181d;
  --color-surface-dim:#131519;
  --color-surface-variant:#1b1e24;
  --color-surface-container:#16181d;
  --color-surface-container-low:#131519;
  --color-surface-container-high:#1b1e24;
  --color-surface-container-highest:#23262e;
  --color-card:#16181d;
  --color-sidebar:#131519;

  /* 文本 */
  --text-fg:#e8eaed;
  --text-foreground:#e8eaed;
  --text-muted:#8b919c;
  --text-muted-foreground:#8b919c;
  --text-color-text-strong:#e8eaed;
  --text-color-text-regular:#c6ccd6;
  --text-color-text-subtle:#8b919c;
  --text-color-text-disabled:#5b616c;
  --color-text-1:#e8eaed;
  --color-text-2:#b7bdc7;
  --color-text-3:#8b919c;
  --color-text-4:#5b616c;
  --color-text-primary:#e8eaed;
  --color-text-secondary:#b7bdc7;
  --color-text-tertiary:#8b919c;
  --color-text-disabled:#5b616c;
  --color-text-placeholder:#8b919c;
  --color-text-muted:#8b919c;
  --color-muted-foreground:#8b919c;
  --text-1:#e8eaed;
  --text-2:#b7bdc7;
  --text-3:#8b919c;
  --text-disabled:#5b616c;

  /* 描边 */
  --color-border-2:#23262e;
  --color-border-3:#2a2e38;
  --color-border:#2a2e38;
  --color-border-light:#23262e;
  --color-outline:#2a2e38;
  --color-outline-variant:#23262e;
  --border-1:#23262e;
  --border-2:#2a2e38;
  --border-3:#2a2e38;
  --border-yuanliBorder-1:#23262e;
  --border-yuanliBorder-2:#262a33;
  --border-yuanliBorder-3:#2a2e38;
  --border-yuanliBorder-4:#3a404c;

  /* 语义标签底色（深色下压暗，避免刺眼） */
  --color-tag-success-bg:#152a1e;
  --color-tag-warning-bg:#2b2313;
  --color-tag-danger-bg:#2a1717;
  --color-tag-info-bg:#17203a;
  --success-1:#152a1e;
  --success-2:#152a1e;
  --warning-1:#2b2313;
  --warning-2:#2b2313;
  --danger-1:#2a1717;
  --danger-2:#2a1717;
  --link-1:#17203a;
  --link-2:#1d2b4d;
  --status-yuanliSuccess-2:#152a1e;
  --status-yuanliWarning-2:#2b2313;
  --status-yuanliDanger-2:#2a1717;
  --status-error-container:#2a1717;

  --state-hover:rgba(127,147,255,.12);
  --state-focus:rgba(127,147,255,.18);
  --state-press:rgba(127,147,255,.22);
  --state-drag:rgba(127,147,255,.22);

  /* 阴影：深色下加重 */
  --shadow-1:0 1px 2px rgba(0,0,0,.4);
  --shadow-2:0 2px 6px rgba(0,0,0,.45);
  --shadow-3:0 5px 15px rgba(0,0,0,.5),0 2px 4px rgba(0,0,0,.4);
  --shadow-4:0 15px 35px -2px rgba(0,0,0,.55),0 5px 15px rgba(0,0,0,.4);
  --shadow-5:0 24px 48px -4px rgba(0,0,0,.6),0 8px 20px rgba(0,0,0,.45);
  --shadow-sm:0 1px 2px rgba(0,0,0,.5);
  --shadow-md:0 4px 12px rgba(0,0,0,.5);
  --shadow-lg:0 8px 24px rgba(0,0,0,.55);
}

/* =====================================================================
   深色主题：对硬编码颜色的同域覆盖
   ===================================================================== */
[data-theme="dark"] ::selection{background:#1d2b4d;color:#eef1f5}
[data-theme="dark"] *::-webkit-scrollbar-thumb{background:#3a404c;background-clip:content-box}
[data-theme="dark"] *::-webkit-scrollbar-thumb:hover{background:#4a5160;background-clip:content-box}
[data-theme="dark"] .skip{background:#1b1e24;color:var(--color-text-1)}
[data-theme="dark"] .brand-name{color:#eef1f5}
[data-theme="dark"] .brand-name small{color:var(--color-text-3)}
[data-theme="dark"] .search-box,
[data-theme="dark"] .cd-chip{background:#16181d;border-color:var(--color-border-3)}
[data-theme="dark"] .search-box:focus-within{border-color:var(--primary-6)}
[data-theme="dark"] .content,
[data-theme="dark"] .page-header-comp{background:#16181d}
[data-theme="dark"] .page-header-title{color:#eef1f5}
[data-theme="dark"] .page-header-eyebrow-dot{background:#3a404c}

[data-theme="dark"] .btn{background:#23262e;color:var(--color-text-2)}
[data-theme="dark"] .btn:hover{background:#2b2f39;color:var(--color-text-1)}
[data-theme="dark"] .btn:active{background:#313641}
[data-theme="dark"] .btn:disabled{background:#1b1e24;color:var(--color-text-4)}
[data-theme="dark"] .btn.primary{background:var(--primary-6);color:#0f1115}
[data-theme="dark"] .btn.primary:hover{background:var(--primary-hover)}
[data-theme="dark"] .btn.primary:active{background:var(--primary-active)}
[data-theme="dark"] .btn.danger{box-shadow:0 0 0 .5px #5a2a2a}
[data-theme="dark"] .btn.ghost:hover,
[data-theme="dark"] .icon-btn:hover,
[data-theme="dark"] .nav-icon:hover{background:#23262e}
[data-theme="dark"] .page-header-btn{background:#23262e;color:var(--color-text-2)}
[data-theme="dark"] .page-header-btn:hover{background:#2b2f39;color:var(--color-text-1)}
[data-theme="dark"] .page-header-btn.primary{background:var(--primary-6);color:#0f1115}
[data-theme="dark"] .menu-item:hover{background:rgba(255,255,255,.05)}
[data-theme="dark"] .menu-item.is-active{background:#23262e}
[data-theme="dark"] .empty .link{background:#23262e;color:var(--color-text-1)}
[data-theme="dark"] .empty .link:hover{background:#2b2f39;color:var(--primary-6)}
[data-theme="dark"] .pill{background:#23262e;color:var(--color-text-2)}
[data-theme="dark"] .row:hover,
[data-theme="dark"] .row:focus-within{background:rgba(255,255,255,.035)}
[data-theme="dark"] .tab.is-active{background:#23262e}
[data-theme="dark"] .master-count{background:#23262e}
[data-theme="dark"] .master-item.is-active .master-count{background:#16181d}
[data-theme="dark"] .filter-more>summary,
[data-theme="dark"] .filter-more-body{background:#1b1e24}
[data-theme="dark"] .form-actions{background:#16181d}
[data-theme="dark"] .heat-cell{background:#23262e}
[data-theme="dark"] .heat-cell.lvl-1{background:#243056}
[data-theme="dark"] .heat-cell.lvl-2{background:#33477f}
[data-theme="dark"] .heat-cell.lvl-3{background:#4a63c9}
[data-theme="dark"] .sheet{background:#16181d}
[data-theme="dark"] .export-list a{background:#16181d}
[data-theme="dark"] .export-list a:hover{background:#1d2b4d}
[data-theme="dark"] .lan-qr,
[data-theme="dark"] .timer{background:#16181d}
[data-theme="dark"] .lan-ico,
[data-theme="dark"] .lan-url{background:#1b1e24;border-color:var(--color-border-3)}
[data-theme="dark"] .choice-trigger,
[data-theme="dark"] .choice-option{background:#16181d}
[data-theme="dark"] .choice-trigger:hover{border-color:#3a404c}
[data-theme="dark"] .choice-option.is-highlighted,
[data-theme="dark"] .choice-option:hover{background:#23262e}
[data-theme="dark"] .choice-panel{background:#1b1e24}
[data-theme="dark"] .upload-item{background:#1b1e24}
[data-theme="dark"] input,
[data-theme="dark"] textarea,
[data-theme="dark"] select{background:#16181d;border-color:var(--color-border-3);color:var(--color-text-1)}
[data-theme="dark"] input:hover,
[data-theme="dark"] textarea:hover,
[data-theme="dark"] select:hover{border-color:#3a404c}
[data-theme="dark"] input[type=file]{background:#1b1e24}
[data-theme="dark"] input[type=file]::file-selector-button{background:#23262e;color:var(--color-text-2);box-shadow:none}
[data-theme="dark"] .upload-zone,
[data-theme="dark"] .subject-template,
[data-theme="dark"] .source-details[open],
[data-theme="dark"] .streak,
[data-theme="dark"] .locate,
[data-theme="dark"] .lan-url,
[data-theme="dark"] .conflict pre{background:#1b1e24}
[data-theme="dark"] .stat{background:linear-gradient(158deg,#1b1e24 0%,#14161b 100%);border-color:var(--color-border-3)}
[data-theme="dark"] .bar-track{background:#23262e}
[data-theme="dark"] .seg-item.is-active{background:#23262e;color:var(--primary-6)}
[data-theme="dark"] dialog::backdrop{background:rgba(0,0,0,.6)}

/* =====================================================================
   信息密度：紧凑
   ===================================================================== */
[data-density="compact"] .row{padding:10px 16px}
[data-density="compact"] .section{margin-top:22px;padding-top:22px}
[data-density="compact"] .stat{padding:12px 16px}
[data-density="compact"] .stat-num{font-size:24px;line-height:30px}
[data-density="compact"] .menu-item{height:34px}
[data-density="compact"] .sheet-body{padding:18px 20px}
[data-density="compact"] .settings-panels{padding:18px 20px}
[data-density="compact"] .cols{gap:22px;margin-top:22px;padding-top:22px}
[data-density="compact"] .list.boxed .row{padding-left:16px;padding-right:16px}
[data-density="compact"] .guide-step,
[data-density="compact"] .weekly-prompt{padding:12px 0}
[data-density="compact"] .toolbar{padding:12px 0;margin-bottom:18px}
[data-density="compact"] .form-grid{gap:12px}
