@import url("./dashboard.css?v=20260723-12");

/* 浅色主题（默认）：html 无 data-theme 或 data-theme="light" 时生效 */
:root,
:root[data-theme="light"] {
  --canvas: #e9f0f3;
  --screen-background: radial-gradient(ellipse at 50% 24%, rgba(255, 255, 255, .98), transparent 42%), linear-gradient(135deg, #f4f7f8, #e4edf1);
  --panel: rgba(255, 255, 255, .93);
  --surface: rgba(237, 243, 246, .82);
  --ink: #173043;
  --data-ink: #38596a;
  --muted: #4a6373;
  --footer-ink: #758b95;
  --line: rgba(67, 99, 114, .14);
  --line-strong: rgba(67, 99, 114, .25);
  --accent: #1685cf;
  --accent-muted: #4b8baa;
  --accent-soft: rgba(22, 133, 207, .1);
  --accent-glow: rgba(22, 133, 207, .16);
  --brand-red: #e83b49;
  --normal: #24945f;
  --warning: #d47c11;
  --danger: #d82231;
  --normal-soft: rgba(36, 148, 95, .1);
  --warning-soft: rgba(212, 124, 17, .11);
  --danger-soft: rgba(216, 34, 49, .1);
  --market: #3d91e5;
  --research: #8660d8;
  --production: #4bad79;
  --supply: #ef9141;
  --quality: #d0a429;
  --support: #41afb4;
  --research-soft: rgba(134, 96, 216, .07);
  --research-line: rgba(134, 96, 216, .16);
  --research-card: rgba(247, 251, 252, .86);
  --research-card-border: rgba(65, 96, 111, .18);
  --research-card-shadow: inset 0 1px 0 rgba(255, 255, 255, .92), 0 3px 8px rgba(49, 76, 90, .07);
  --research-progress: #e8293d;
  --research-progress-track: rgba(69, 101, 116, .14);
  --research-progress-glow: 0 2px 5px rgba(232, 41, 61, .12);
  --research-table-head: #f4f8fa;
  --priority-red: #d8444d;
  --priority-orange: #cb6f24;
  --priority-yellow: #a87908;
  --priority-blue: #347eb6;
  --priority-red-soft: rgba(216, 68, 77, .055);
  --priority-orange-soft: rgba(203, 111, 36, .055);
  --priority-yellow-soft: rgba(168, 121, 8, .055);
  --priority-blue-soft: rgba(52, 126, 182, .055);
  --progress-track: rgba(42, 73, 89, .1);
  --bar-track: rgba(55, 88, 104, .08);
  --bar-shell-border: rgba(76, 108, 123, .12);
  --bar-track-shadow: rgba(48, 75, 89, .08);
  --bar-fill-shadow: 0 3px 7px rgba(48, 75, 89, .12);
  --people-dot-shadow: 0 1px 2px rgba(43, 71, 85, .13);
  --point: #1687e8;
  --point-muted: #1687e8;
  --point-stroke: rgba(255, 255, 255, .98);
  --point-halo: rgba(22, 138, 154, .16);
  --point-muted-halo: rgba(50, 127, 174, .14);
  --origin-halo: rgba(22, 135, 232, .2);
  --point-ring: rgba(255, 255, 255, .96);
  --point-shine: rgba(255, 255, 255, .98);
  --point-ring-shadow: drop-shadow(0 1px 2px rgba(22, 83, 126, .18));
  --point-shadow: drop-shadow(0 3px 2px rgba(47, 73, 87, .22)) drop-shadow(0 0 4px rgba(22, 135, 232, .18));
  --point-shadow-active: drop-shadow(0 5px 4px rgba(47, 73, 87, .28)) drop-shadow(0 0 7px rgba(22, 135, 232, .3));
  --map-label: #123448;
  --map-label-stroke: rgba(255, 255, 255, .98);
  --map-note: rgba(250, 253, 254, .97);
  --map-ocean: #eff6f8;
  --map-ambient: radial-gradient(circle at 50% 34%, rgba(255, 255, 255, .92), transparent 31%), radial-gradient(ellipse at 50% 48%, transparent 58%, rgba(83, 111, 126, .07) 100%), linear-gradient(180deg, rgba(255, 255, 255, .5), transparent 30%, rgba(100, 132, 146, .035));
  --map-depth-offset: 4px;
  --map-depth-opacity: .9;
  --map-depth-fill: #aebbc1;
  --map-silhouette-opacity: 1;
  --country-outline-fill: rgba(75, 139, 170, .055);
  --country-outline-stroke: #6f94a4;
  --country-outline-width: 1px;
  --country-outline-opacity: .74;
  --country-outline-filter: drop-shadow(0 1px .8px rgba(47, 73, 87, .1));
  --map-land: #cdd6da;
  --map-land-edge: rgba(53, 82, 95, .34);
  --map-graticule: rgba(62, 103, 121, .09);
  --map-equator: rgba(62, 103, 121, .16);
  --map-filter: contrast(1.16) brightness(.98) saturate(.42) drop-shadow(0 0 .3px rgba(48, 77, 89, .28));
  --map-blend: normal;
  --map-opacity: .98;
  --province-filter: brightness(.78) contrast(1.3) saturate(.55);
  --province-opacity: .54;
  --province-opacity-active: .9;
  --map-control: rgba(255, 255, 255, .98);
  --map-control-hover: rgba(22, 133, 207, .1);
  --map-tooltip: rgba(255, 255, 255, .98);
  --map-legend: rgba(255, 255, 255, .92);
  --map-floating: rgba(255, 255, 255, .9);
  --map-floating-border: rgba(73, 104, 120, .14);
  --floating-shadow: 0 1px 0 rgba(255, 255, 255, .95) inset, 0 4px 9px rgba(47, 73, 87, .11), 0 12px 24px rgba(47, 73, 87, .085);
  --map-label-card: rgba(255, 255, 255, .97);
  --map-label-card-border: rgba(73, 104, 120, .12);
  --map-label-card-ink: #172f3f;
  --map-label-card-muted: #6e8592;
  --map-label-card-shadow: drop-shadow(0 8px 16px rgba(47, 73, 87, .15));
  --map-label-card-shadow-active: drop-shadow(0 11px 20px rgba(47, 73, 87, .22));
  --logo-filter: brightness(0) saturate(100%) invert(16%) sepia(18%) saturate(1570%) hue-rotate(160deg) brightness(90%);
  --panel-radius: 8px;
  --panel-highlight: rgba(255, 255, 255, .92);
  --panel-backdrop: blur(5px) saturate(1.02);
  --panel-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 2px 5px rgba(48, 75, 89, .075), 0 8px 20px rgba(48, 75, 89, .085);
  --map-panel-border: rgba(55, 101, 124, .2);
  --map-panel-shadow: inset 0 1px 0 rgba(255, 255, 255, 1), 0 2px 6px rgba(48, 75, 89, .09), 0 16px 38px rgba(48, 75, 89, .16);
  --control-shadow: 0 2px 5px rgba(47, 73, 87, .09), 0 8px 18px rgba(47, 73, 87, .08);
  --tooltip-shadow: 0 12px 28px rgba(45, 70, 84, .2);
  --heading-surface: linear-gradient(90deg, rgba(22, 133, 207, .055), rgba(22, 133, 207, .012) 46%, transparent 78%);
  --metric-surface: linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(237, 243, 246, .72));
  --row-alt: rgba(40, 79, 99, .025);
  --control-active-shadow: inset 0 1px 0 rgba(255, 255, 255, .95), 0 0 0 1px rgba(22, 133, 207, .035), 0 4px 10px rgba(47, 73, 87, .1);
}

/* 深色主题：html[data-theme="dark"] 时生效 */
:root[data-theme="dark"] {
  --canvas: #06111a;
  --screen-background: radial-gradient(ellipse at 50% 30%, rgba(44, 176, 184, .13), transparent 39%), radial-gradient(circle at 50% 55%, rgba(20, 86, 111, .1), transparent 52%), linear-gradient(rgba(72, 120, 136, .026) 1px, transparent 1px), linear-gradient(90deg, rgba(72, 120, 136, .026) 1px, transparent 1px), #06111a;
  --panel: rgba(8, 24, 35, .93);
  --surface: rgba(255, 255, 255, .025);
  --ink: #edf5f6;
  --data-ink: #bdd0d5;
  --muted: #84a0ac;
  --footer-ink: #4d707c;
  --line: rgba(133, 171, 183, .14);
  --line-strong: rgba(133, 171, 183, .24);
  --accent: #5dd6d8;
  --accent-muted: #4e8995;
  --accent-soft: rgba(93, 214, 216, .11);
  --accent-glow: rgba(93, 214, 216, .28);
  --brand-red: #f15a62;
  --normal: #48c895;
  --warning: #efad46;
  --danger: #ef6664;
  --normal-soft: rgba(72, 200, 149, .12);
  --warning-soft: rgba(239, 173, 70, .13);
  --danger-soft: rgba(239, 102, 100, .13);
  --market: #4b9ce8;
  --research: #9a73e5;
  --production: #48b57b;
  --supply: #eb9145;
  --quality: #d2aa32;
  --support: #43b7ba;
  --research-soft: rgba(154, 115, 229, .08);
  --research-line: rgba(154, 115, 229, .2);
  --research-card: rgba(255, 255, 255, .022);
  --research-card-border: rgba(142, 174, 185, .17);
  --research-card-shadow: inset 0 1px 0 rgba(255, 255, 255, .025), 0 6px 15px rgba(0, 0, 0, .12);
  --research-progress: #f05261;
  --research-progress-track: rgba(164, 189, 198, .14);
  --research-progress-glow: 0 0 7px rgba(240, 82, 97, .22);
  --research-table-head: #0b202d;
  --priority-red: #e95b64;
  --priority-orange: #e89145;
  --priority-yellow: #d6ad3d;
  --priority-blue: #4b9dcc;
  --priority-red-soft: rgba(233, 91, 100, .09);
  --priority-orange-soft: rgba(232, 145, 69, .09);
  --priority-yellow-soft: rgba(214, 173, 61, .09);
  --priority-blue-soft: rgba(75, 157, 204, .09);
  --progress-track: rgba(255, 255, 255, .08);
  --bar-track: rgba(255, 255, 255, .055);
  --bar-shell-border: rgba(139, 183, 194, .18);
  --bar-track-shadow: rgba(0, 0, 0, .17);
  --bar-fill-shadow: 0 3px 7px rgba(0, 0, 0, .18);
  --people-dot-shadow: 0 0 4px rgba(124, 213, 218, .11);
  --point: #4bd1cb;
  --point-muted: #73b8d1;
  --point-stroke: rgba(244, 251, 252, .96);
  --point-halo: rgba(75, 209, 203, .17);
  --point-muted-halo: rgba(115, 184, 209, .15);
  --origin-halo: rgba(67, 180, 255, .28);
  --point-ring: rgba(185, 245, 248, .72);
  --point-shine: rgba(255, 255, 255, .9);
  --point-ring-shadow: drop-shadow(0 0 4px rgba(75, 209, 203, .3));
  --point-shadow: drop-shadow(0 3px 2px rgba(0, 0, 0, .38)) drop-shadow(0 0 5px rgba(75, 209, 203, .28));
  --point-shadow-active: drop-shadow(0 5px 3px rgba(0, 0, 0, .46)) drop-shadow(0 0 9px rgba(75, 209, 203, .5));
  --map-label: #e3eef1;
  --map-label-stroke: #07131c;
  --map-note: rgba(6, 19, 28, .96);
  --map-ocean: #071722;
  --map-ambient: radial-gradient(circle at 50% 35%, rgba(64, 199, 220, .12), transparent 27%), radial-gradient(ellipse at 50% 48%, transparent 52%, rgba(0, 4, 10, .35) 100%), linear-gradient(180deg, rgba(255, 255, 255, .025), transparent 28%, rgba(0, 0, 0, .1));
  --map-depth-offset: 5px;
  --map-depth-opacity: .92;
  --map-depth-fill: #081116;
  --map-silhouette-opacity: .94;
  --country-outline-fill: rgba(78, 137, 149, .09);
  --country-outline-stroke: #5b97a1;
  --country-outline-width: .9px;
  --country-outline-opacity: .8;
  --country-outline-filter: drop-shadow(0 0 2px rgba(93, 214, 216, .16));
  --map-land: #1a3038;
  --map-land-edge: rgba(151, 190, 200, .48);
  --map-graticule: rgba(134, 178, 192, .1);
  --map-equator: rgba(134, 178, 192, .18);
  --map-filter: invert(1) brightness(.88) contrast(1.16) saturate(.28) sepia(.14) hue-rotate(135deg) drop-shadow(0 0 .35px rgba(177, 211, 218, .35));
  --map-blend: normal;
  --map-opacity: .98;
  --province-filter: brightness(1.45) saturate(.7);
  --province-opacity: .66;
  --province-opacity-active: 1;
  --map-control: rgba(7, 22, 32, .96);
  --map-control-hover: rgba(93, 214, 216, .15);
  --map-tooltip: rgba(5, 15, 23, .96);
  --map-legend: rgba(6, 20, 29, .88);
  --map-floating: rgba(6, 19, 29, .88);
  --map-floating-border: rgba(135, 200, 211, .2);
  --floating-shadow: 0 1px 0 rgba(255, 255, 255, .035) inset, 0 8px 20px rgba(0, 0, 0, .32), 0 0 17px rgba(69, 210, 215, .075);
  --map-label-card: rgba(7, 23, 34, .94);
  --map-label-card-border: rgba(151, 206, 219, .24);
  --map-label-card-ink: #eef7f8;
  --map-label-card-muted: #8fa9b3;
  --map-label-card-shadow: drop-shadow(0 8px 14px rgba(0, 0, 0, .35)) drop-shadow(0 0 10px rgba(55, 202, 207, .08));
  --map-label-card-shadow-active: drop-shadow(0 11px 17px rgba(0, 0, 0, .42)) drop-shadow(0 0 14px rgba(55, 202, 207, .14));
  --logo-filter: none;
  --panel-radius: 8px;
  --panel-highlight: rgba(255, 255, 255, .045);
  --panel-backdrop: blur(14px) saturate(1.05);
  --panel-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 8px 22px rgba(0, 0, 0, .22);
  --map-panel-border: rgba(105, 218, 221, .24);
  --map-panel-shadow: inset 0 1px 0 rgba(255, 255, 255, .07), 0 0 0 1px rgba(93, 214, 216, .055), 0 0 30px rgba(55, 202, 207, .12), 0 18px 42px rgba(0, 0, 0, .3);
  --control-shadow: 0 0 0 1px rgba(93, 214, 216, .035), 0 6px 18px rgba(0, 0, 0, .24), 0 0 16px rgba(93, 214, 216, .06);
  --tooltip-shadow: 0 12px 30px rgba(0, 0, 0, .35), 0 0 18px rgba(93, 214, 216, .08);
  --heading-surface: linear-gradient(90deg, rgba(93, 214, 216, .055), rgba(93, 214, 216, .012) 46%, transparent 78%);
  --metric-surface: linear-gradient(180deg, rgba(255, 255, 255, .038), rgba(255, 255, 255, .014));
  --row-alt: rgba(255, 255, 255, .012);
  --control-active-shadow: inset 0 1px 0 rgba(255, 255, 255, .045), 0 0 0 1px rgba(93, 214, 216, .04), 0 5px 14px rgba(0, 0, 0, .2);
}

/* 深色背景为多层网格图案，需按层指定 background-size */
:root[data-theme="dark"] body { background-size: auto, 32px 32px, 32px 32px, auto; }
