/* Design tokens: every color, shadow, radius and font stack. Other stylesheets only use var(--…). */
:root {
  /* Color Palette - Clean Academic */
  --bg: #f8fafc;
  --panel: #ffffff;
  --panel-subtle: #f1f5f9;
  --ink: #0f172a;
  --ink-secondary: #334155;
  --ink-abstract: #1e293b;
  --muted: #64748b;
  --faint: #94a3b8;
  --border: #e2e8f0;
  --border-soft: #edf1f6;
  --border-strong: #cbd5e1;
  --border-focus: #3b82f6;
  --scrollbar-thumb: #c5cedb;

  --accent: #2563eb;
  --accent-soft: #eff6ff;
  --accent-border: #bfdbfe;
  --accent-hover: #1d4ed8;
  --accent-highlight: #dbeafe;
  --on-accent: #fff;
  --control-hover-bg: #fafdff;
  --selected-bg: #fbfdff;

  --good: #059669;
  --good-soft: #ecfdf5;
  --good-border: #a7f3d0;
  --good-step: #e5f3ee;

  --warn: #b45309;
  --warn-soft: #fffbeb;
  --warn-border: #fde68a;
  --caution: #a16207;
  --pending-dot: #f59e0b;

  --danger: #dc2626;
  --danger-soft: #fef2f2;
  --danger-border: #fecaca;
  --stop: #a24343;

  --info: #2563eb;
  --info-soft: rgba(59, 130, 246, 0.1);
  --info-border: rgba(59, 130, 246, 0.35);

  /* Journal badge and journal multiselect */
  --badge-bg: #f1f4f8;
  --select-border: #dfe6ee;
  --select-divider: #e8edf5;
  --select-open-bg: #f8fbff;
  --select-toolbar-border: #eef2f7;
  --chevron: #8493ab;
  --option-text: #475569;
  --option-hover: #f5f7fc;

  /* Tag colors by classification dimension */
  --tag-topic-bg: #eff6ff;
  --tag-topic-text: #1d4ed8;
  --tag-topic-border: #dbeafe;

  --tag-method-bg: #faf5ff;
  --tag-method-text: #7e22ce;
  --tag-method-border: #f3e8ff;

  --tag-platform-bg: #f0fdf4;
  --tag-platform-text: #15803d;
  --tag-platform-border: #dcfce7;

  --tag-task-bg: #fdf4e6;
  --tag-task-text: #855f22;
  --tag-task-border: #f0dfbe;

  /* Classification chips in cards and the detail pane */
  --chip-topic-bg: #edf4fc;
  --chip-topic-text: #28578a;
  --chip-topic-border: #d7e3f1;
  --chip-method-bg: #f1edfb;
  --chip-method-text: #63439a;
  --chip-method-border: #e1d7f1;
  --chip-platform-bg: #edf7f2;
  --chip-platform-text: #24694e;
  --chip-platform-border: #d1e8da;
  --chip-secondary-bg: #f7f9fc;
  --chip-secondary-text: #5a7ba6;
  --chip-role-border: #d3deeb;
  --chip-role-text: #7a8ca3;
  --chip-selected-bg: #edf4fc;
  --chip-selected-text: #234b7b;
  --chip-selected-border: #c7d7ea;
  --untrusted-bg: #fff0d6;
  --untrusted-text: #955c0b;
  --untrusted-border: #ebd19e;

  /* Overlays */
  --overlay: rgba(15, 23, 42, 0.45);
  --backdrop: rgba(15, 23, 42, .32);
  --pulse-ring: rgba(37, 99, 235, 0.6);
  --pulse-ring-end: rgba(37, 99, 235, 0);

  /* Elevation & Shape */
  --shadow-sm: 0 1px 2px 0 rgba(15, 23, 42, 0.05);
  --shadow-md: 0 4px 6px -1px rgba(15, 23, 42, 0.07), 0 2px 4px -2px rgba(15, 23, 42, 0.05);
  --shadow-lg: 0 12px 24px -4px rgba(15, 23, 42, 0.12), 0 4px 8px -2px rgba(15, 23, 42, 0.06);
  --shadow-accent: 0 1px 2px rgba(37, 99, 235, 0.2);
  --shadow-pane: -2px 0 10px rgba(15, 23, 42, 0.03);
  --shadow-popover: 0 12px 40px rgba(15, 23, 42, .14), 0 2px 6px rgba(15, 23, 42, .04);
  --shadow-menu: 0 12px 36px rgba(15,23,42,.12), 0 2px 6px rgba(15,23,42,.04);
  --shadow-drawer: 8px 0 30px rgba(15, 23, 42, .12);

  --r-sm: 6px;
  --r-md: 10px;
  --r-lg: 14px;
  --r-full: 9999px;

  /* Type Scale: xs labels/badges, sm hints/chips, md body/controls, lg titles, xl panel titles, 2xl stats/hero */
  --fs-xs: 12px;
  --fs-sm: 13px;
  --fs-md: 14px;
  --fs-lg: 16px;
  --fs-xl: 18px;
  --fs-2xl: 22px;
  --lh-body: 1.5;
  --lh-title: 1.3;

  /* Font Stacks */
  --font-ui: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --font-serif: "Georgia", "Times New Roman", "Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;
}

/* Dark palette: same visual hierarchy with the lights inverted —
   bg darkest, panel lighter, ink lightest. The block below follows the
   system preference when the user has not forced a theme; the identical
   :root[data-theme="dark"] block at the end of this file serves the
   explicit choice. Keep the two blocks in sync. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0a101d;
    --panel: #101828;
    --panel-subtle: #1a2436;
    --ink: #e8eef8;
    --ink-secondary: #c7d2e4;
    --ink-abstract: #dbe2ef;
    --muted: #94a6c0;
    --faint: #61748d;
    --border: #26344b;
    --border-soft: #1e2a3e;
    --border-strong: #3a4b66;
    --border-focus: #60a5fa;
    --scrollbar-thumb: #36465e;

    --accent: #60a5fa;
    --accent-soft: rgba(96, 165, 250, 0.14);
    --accent-border: #2b4a72;
    --accent-hover: #93c5fd;
    --accent-highlight: #1c3050;
    --on-accent: #0a101d;
    --control-hover-bg: #16213a;
    --selected-bg: #152238;

    --good: #34d399;
    --good-soft: rgba(52, 211, 153, 0.12);
    --good-border: #1d4a3a;
    --good-step: #14261f;

    --warn: #fbbf24;
    --warn-soft: rgba(251, 191, 36, 0.1);
    --warn-border: #4a3a17;
    --caution: #dcb043;
    --pending-dot: #f59e0b;

    --danger: #f87171;
    --danger-soft: rgba(248, 113, 113, 0.1);
    --danger-border: #4a2429;
    --stop: #e28585;

    --info: #60a5fa;
    --info-soft: rgba(96, 165, 250, 0.1);
    --info-border: rgba(96, 165, 250, 0.35);

    --badge-bg: #1b2740;
    --select-border: #2a3a56;
    --select-divider: #223049;
    --select-open-bg: #182742;
    --select-toolbar-border: #1f2d46;
    --chevron: #7e93b5;
    --option-text: #b9c6dc;
    --option-hover: #1e2d49;

    --tag-topic-bg: #16233d;
    --tag-topic-text: #8fbaf9;
    --tag-topic-border: #2a4064;

    --tag-method-bg: #231a38;
    --tag-method-text: #c9aff0;
    --tag-method-border: #3c2f5e;

    --tag-platform-bg: #122619;
    --tag-platform-text: #85d0a4;
    --tag-platform-border: #244631;

    --tag-task-bg: #2b2113;
    --tag-task-text: #e3b878;
    --tag-task-border: #4a3a22;

    --chip-topic-bg: #152238;
    --chip-topic-text: #9db9de;
    --chip-topic-border: #293d5a;
    --chip-method-bg: #201833;
    --chip-method-text: #bba7e0;
    --chip-method-border: #382c55;
    --chip-platform-bg: #11231a;
    --chip-platform-text: #93c9ab;
    --chip-platform-border: #22422f;
    --chip-secondary-bg: #18202f;
    --chip-secondary-text: #97abc7;
    --chip-role-border: #2c3a52;
    --chip-role-text: #8b9cb5;
    --chip-selected-bg: #1a2b48;
    --chip-selected-text: #aac7ef;
    --chip-selected-border: #31517c;
    --untrusted-bg: #2d2416;
    --untrusted-text: #dcb26e;
    --untrusted-border: #48391f;

    --overlay: rgba(3, 7, 14, 0.62);
    --backdrop: rgba(3, 7, 14, 0.5);
    --pulse-ring: rgba(96, 165, 250, 0.55);
    --pulse-ring-end: rgba(96, 165, 250, 0);

    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.35);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.32);
    --shadow-lg: 0 12px 24px -4px rgba(0, 0, 0, 0.5), 0 4px 8px -2px rgba(0, 0, 0, 0.38);
    --shadow-accent: 0 1px 2px rgba(96, 165, 250, 0.28);
    --shadow-pane: -2px 0 10px rgba(0, 0, 0, 0.28);
    --shadow-popover: 0 12px 40px rgba(0, 0, 0, 0.55), 0 2px 6px rgba(0, 0, 0, 0.35);
    --shadow-menu: 0 12px 36px rgba(0, 0, 0, 0.52), 0 2px 6px rgba(0, 0, 0, 0.34);
    --shadow-drawer: 8px 0 30px rgba(0, 0, 0, 0.5);
  }
}

/* Explicit dark choice — identical to the prefers-color-scheme block above. */
:root[data-theme="dark"] {
  --bg: #0a101d;
  --panel: #101828;
  --panel-subtle: #1a2436;
  --ink: #e8eef8;
  --ink-secondary: #c7d2e4;
  --ink-abstract: #dbe2ef;
  --muted: #94a6c0;
  --faint: #61748d;
  --border: #26344b;
  --border-soft: #1e2a3e;
  --border-strong: #3a4b66;
  --border-focus: #60a5fa;
  --scrollbar-thumb: #36465e;

  --accent: #60a5fa;
  --accent-soft: rgba(96, 165, 250, 0.14);
  --accent-border: #2b4a72;
  --accent-hover: #93c5fd;
  --accent-highlight: #1c3050;
  --on-accent: #0a101d;
  --control-hover-bg: #16213a;
  --selected-bg: #152238;

  --good: #34d399;
  --good-soft: rgba(52, 211, 153, 0.12);
  --good-border: #1d4a3a;
  --good-step: #14261f;

  --warn: #fbbf24;
  --warn-soft: rgba(251, 191, 36, 0.1);
  --warn-border: #4a3a17;
  --caution: #dcb043;
  --pending-dot: #f59e0b;

  --danger: #f87171;
  --danger-soft: rgba(248, 113, 113, 0.1);
  --danger-border: #4a2429;
  --stop: #e28585;

  --info: #60a5fa;
  --info-soft: rgba(96, 165, 250, 0.1);
  --info-border: rgba(96, 165, 250, 0.35);

  --badge-bg: #1b2740;
  --select-border: #2a3a56;
  --select-divider: #223049;
  --select-open-bg: #182742;
  --select-toolbar-border: #1f2d46;
  --chevron: #7e93b5;
  --option-text: #b9c6dc;
  --option-hover: #1e2d49;

  --tag-topic-bg: #16233d;
  --tag-topic-text: #8fbaf9;
  --tag-topic-border: #2a4064;

  --tag-method-bg: #231a38;
  --tag-method-text: #c9aff0;
  --tag-method-border: #3c2f5e;

  --tag-platform-bg: #122619;
  --tag-platform-text: #85d0a4;
  --tag-platform-border: #244631;

  --tag-task-bg: #2b2113;
  --tag-task-text: #e3b878;
  --tag-task-border: #4a3a22;

  --chip-topic-bg: #152238;
  --chip-topic-text: #9db9de;
  --chip-topic-border: #293d5a;
  --chip-method-bg: #201833;
  --chip-method-text: #bba7e0;
  --chip-method-border: #382c55;
  --chip-platform-bg: #11231a;
  --chip-platform-text: #93c9ab;
  --chip-platform-border: #22422f;
  --chip-secondary-bg: #18202f;
  --chip-secondary-text: #97abc7;
  --chip-role-border: #2c3a52;
  --chip-role-text: #8b9cb5;
  --chip-selected-bg: #1a2b48;
  --chip-selected-text: #aac7ef;
  --chip-selected-border: #31517c;
  --untrusted-bg: #2d2416;
  --untrusted-text: #dcb26e;
  --untrusted-border: #48391f;

  --overlay: rgba(3, 7, 14, 0.62);
  --backdrop: rgba(3, 7, 14, 0.5);
  --pulse-ring: rgba(96, 165, 250, 0.55);
  --pulse-ring-end: rgba(96, 165, 250, 0);

  --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.35);
  --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.32);
  --shadow-lg: 0 12px 24px -4px rgba(0, 0, 0, 0.5), 0 4px 8px -2px rgba(0, 0, 0, 0.38);
  --shadow-accent: 0 1px 2px rgba(96, 165, 250, 0.28);
  --shadow-pane: -2px 0 10px rgba(0, 0, 0, 0.28);
  --shadow-popover: 0 12px 40px rgba(0, 0, 0, 0.55), 0 2px 6px rgba(0, 0, 0, 0.35);
  --shadow-menu: 0 12px 36px rgba(0, 0, 0, 0.52), 0 2px 6px rgba(0, 0, 0, 0.34);
  --shadow-drawer: 8px 0 30px rgba(0, 0, 0, 0.5);
}
