/* sketch-v6 · 三维主题系统 v2
 * 维度一：配色 (data-palette) —— 15 套调色板，逐个优化
 * 维度二：界面效果 (data-surface) —— none / frost / liquid（暗调自适应）
 * 维度三：线条效果 (data-stroke) —— normal / glow / hand
 * 主题方向 (data-mood)：bright(明亮默认) / dark(暗调) / hand(手绘) —— 一键预设三维组合
 */

/* ===== 基础变量（明亮默认）===== */
:root {
  --font-main: "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", system-ui, sans-serif;
  --font-hand: "Kalam", "Comic Sans MS", "Chalkboard SE", "Segoe Print", "Bradley Hand", cursive;
  /* 表面层 */
  --bg: #f5f5f7;
  --surface: #ffffff;
  --surface-muted: #fafafa;
  --border: #e8e8e8;
  --border-light: #f0f0f0;
  --grid: #000;
  /* 文字 */
  --text: #1d1d1f;
  --text-muted: #86868b;
  --text-light: #aeaeb2;
  /* 品牌 */
  --brand: #007aff;
  --brand-soft: #e8f4fd;
  --brand-on: #fff;
  /* 效果色（亮/暗自动切换） */
  --surface-highlight: rgba(255,255,255,0.35);
  --surface-shadow: rgba(0,0,0,0.06);
  --overlay-bg: rgba(0,0,0,0.4);
  --glass-border: rgba(255,255,255,0.18);
  /* 网格/图表 */
  --grid-soft: rgba(0,0,0,0.08);
  /* 语义色 */
  --success: #34c759;
  --danger: #ff3b30;
  --warning: #ff9500;
  /* 分类色 */
  --cat-career: #ff9500;
  --cat-finance: #5ac864;
  --cat-social: #5856d6;
  --cat-health: #ff3b30;
  --cat-recreation: #ffcc00;
  --cat-family: #af52de;
  --cat-growth: #00c7be;
  --cat-actual: #5e5ce6;
  --cat-other: #8e8e93;
  /* 布局 */
  --row-h: 44px;
  --pm-row-h: 60px;
  /* 线条 */
  --stroke-w: 1px;
  --stroke-style: solid;
  --stroke-glow: none;
  /* 装饰 */
  --deco-opacity: 0;
  --deco-display: none;
}

/* ====== 配色方案 (data-palette) ====== */
/* 默认（明亮蓝）—— 优化：更柔和的蓝，更清晰的层次 */
[data-palette="default"] {
  --bg: #f2f4f8;
  --surface: #ffffff;
  --surface-muted: #f7f8fa;
  --border: #dce0e8;
  --border-light: #eceff4;
  --grid: #d0d5de;
  --text: #1c2230;
  --text-muted: #7a8499;
  --text-light: #a8b0c0;
  --brand: #2563eb;
  --brand-soft: #dbeafe;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.07);
  --success: #22c55e;
  --danger: #ef4444;
  --warning: #f59e0b;
  --cat-career: #f59e0b; --cat-finance: #22c55e; --cat-social: #6366f1; --cat-health: #ef4444;
  --cat-recreation: #eab308; --cat-family: #a855f7; --cat-growth: #06b6d4; --cat-actual: #8b5cf6;
  --cat-other: #94a3b8;
}

/* 晨雾 —— 优化：灰绿更沉稳，纸张质感增强 */
[data-palette="mist"] {
  --bg: #edecea;
  --surface: #f8f7f4;
  --surface-muted: #e4e2dd;
  --border: #d5d2ca;
  --border-light: #e2dfd8;
  --grid: #c5c1b6;
  --text: #2c2a26;
  --text-muted: #6e6a60;
  --text-light: #a09b8e;
  --brand: #4a7258;
  --brand-soft: #dfe8e2;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.08);
  --success: #4a8a5e;
  --danger: #b85040;
  --warning: #b88838;
  --cat-career: #a86e40; --cat-finance: #6a8a54; --cat-social: #646898; --cat-health: #a85850;
  --cat-recreation: #a89848; --cat-family: #887098; --cat-growth: #588a7e; --cat-actual: #5e6498;
  --cat-other: #807a70;
}

/* 清冷 —— 优化：冷蓝灰更通透 */
[data-palette="cool"] {
  --bg: #eaeef2;
  --surface: #f6f9fb;
  --surface-muted: #e2e8ee;
  --border: #ced6e0;
  --border-light: #dfe5ec;
  --grid: #bcc6d2;
  --text: #242d38;
  --text-muted: #6b7886;
  --text-light: #98a4b2;
  --brand: #3b6d9a;
  --brand-soft: #dae6f0;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.07);
  --success: #448068;
  --danger: #b05048;
  --warning: #a88038;
  --cat-career: #a07858; --cat-finance: #5c8068; --cat-social: #5a6898; --cat-health: #9e5858;
  --cat-recreation: #9e9048; --cat-family: #7e7498; --cat-growth: #4e8886; --cat-actual: #586696;
  --cat-other: #74808c;
}

/* 抹茶 —— 优化：绿色更鲜活有层次 */
[data-palette="matcha"] {
  --bg: #eef0e4;
  --surface: #f7f9f0;
  --surface-muted: #e3e7d6;
  --border: #d0d6bc;
  --border-light: #dfe4d0;
  --grid: #c0c8a8;
  --text: #2d3225;
  --text-muted: #687058;
  --text-light: #98a282;
  --brand: #5a9440;
  --brand-soft: #e0ead2;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.07);
  --success: #4a9e50;
  --danger: #b85048;
  --warning: #b88e38;
  --cat-career: #a88040; --cat-finance: #5a9440; --cat-social: #507898; --cat-health: #ae5448;
  --cat-recreation: #a09e38; --cat-family: #807898; --cat-growth: #389888; --cat-actual: #507298;
  --cat-other: #78866c;
}

/* 地中海 —— 优化：蓝色更澄澈 */
[data-palette="mediterranean"] {
  --bg: #f2f4f0;
  --surface: #ffffff;
  --surface-muted: #eaeee8;
  --border: #d6dcd4;
  --border-light: #e4e8e2;
  --grid: #c6cec2;
  --text: #243035;
  --text-muted: #647478;
  --text-light: #94a2a6;
  --brand: #1a6888;
  --brand-soft: #dceaf0;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.07);
  --success: #448464;
  --danger: #bc6844;
  --warning: #c09840;
  --cat-career: #b87044; --cat-finance: #449068; --cat-social: #4074ac; --cat-health: #b85844;
  --cat-recreation: #b89a4c; --cat-family: #8470a8; --cat-growth: #3890a0; --cat-actual: #4c6ca0;
  --cat-other: #889898;
}

/* 新中式 —— 优化：朱砂更正，宣纸更温润 */
[data-palette="chinese"] {
  --bg: #efeae0;
  --surface: #f8f5ee;
  --surface-muted: #e5e0d4;
  --border: #d0c9b8;
  --border-light: #ddd6c8;
  --grid: #c0b8a4;
  --text: #282622;
  --text-muted: #706a5c;
  --text-light: #9e9684;
  --brand: #9c3828;
  --brand-soft: #f0ddd4;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.08);
  --success: #507050;
  --danger: #802828;
  --warning: #8e7028;
  --cat-career: #985428; --cat-finance: #50703e; --cat-social: #40547e; --cat-health: #a03428;
  --cat-recreation: #b09028; --cat-family: #6e4060; --cat-growth: #387a6c; --cat-actual: #3c4a80;
  --cat-other: #646054;
}

/* 日式侘寂 —— 优化：枯色更雅致 */
[data-palette="wabisabi"] {
  --bg: #ede8de;
  --surface: #f6f2ea;
  --surface-muted: #e2dcd0;
  --border: #d4ccc0;
  --border-light: #e0d9cc;
  --grid: #c4baa6;
  --text: #343028;
  --text-muted: #7a7264;
  --text-light: #a09888;
  --brand: #6e5e46;
  --brand-soft: #eae4da;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.08);
  --success: #6e7e58;
  --danger: #8e5e48;
  --warning: #a07e4e;
  --cat-career: #985e34; --cat-finance: #5e6e40; --cat-social: #5e6882; --cat-health: #8c5040;
  --cat-recreation: #a08e40; --cat-family: #786480; --cat-growth: #4e7a66; --cat-actual: #505e7a;
  --cat-other: #746e62;
}

/* 波普 —— 优化：撞色更和谐 */
[data-palette="pop"] {
  --bg: #fff6ea;
  --surface: #ffffff;
  --surface-muted: #ffeeda;
  --border: #ffd0b8;
  --border-light: #ffe0cc;
  --grid: #ffc0a4;
  --text: #1a1a2e;
  --text-muted: #6a6a7a;
  --text-light: #a0a0b0;
  --brand: #e8345c;
  --brand-soft: #ffdce4;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.06);
  --success: #00b87c;
  --danger: #e82828;
  --warning: #ffab00;
  --cat-career: #ff7028; --cat-finance: #00c48c; --cat-social: #3468ff; --cat-health: #ff2844;
  --cat-recreation: #ffc000; --cat-family: #9838ff; --cat-growth: #00c4b4; --cat-actual: #4050ff;
  --cat-other: #8a8a9a;
}

/* 猛男粉 —— 优化：玫粉更高级 */
[data-palette="machopink"] {
  --bg: #fcecf0;
  --surface: #fff4f7;
  --surface-muted: #fadce4;
  --border: #f5c4d0;
  --border-light: #fad4dd;
  --grid: #f0aebf;
  --text: #34202c;
  --text-muted: #8e6474;
  --text-light: #b898a4;
  --brand: #d63870;
  --brand-soft: #fcd8e4;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.06);
  --success: #289060;
  --danger: #c8383e;
  --warning: #cc9028;
  --cat-career: #d47040; --cat-finance: #5c9460; --cat-social: #6c80b4; --cat-health: #c84458;
  --cat-recreation: #c49840; --cat-family: #a45e9e; --cat-growth: #4e9e96; --cat-actual: #7e60b4;
  --cat-other: #94808a;
}

/* 极简 —— 优化：黑白更纯粹 */
[data-palette="mono"] {
  --bg: #f6f6f6;
  --surface: #ffffff;
  --surface-muted: #eeeeee;
  --border: #dedede;
  --border-light: #e8e8e8;
  --grid: #cccccc;
  --text: #181818;
  --text-muted: #606060;
  --text-light: #a0a0a0;
  --brand: #222222;
  --brand-soft: #ececec;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.08);
  --success: #2a7248;
  --danger: #a83e38;
  --warning: #a87428;
  --cat-career: #807060; --cat-finance: #6e7e68; --cat-social: #6e7888; --cat-health: #88746e;
  --cat-recreation: #888068; --cat-family: #787084; --cat-growth: #6e8480; --cat-actual: #707088;
  --cat-other: #a0a0a0;
}

/* 暖纸 —— 优化：暖棕更沉稳 */
[data-palette="warm"] {
  --bg: #f0ebe2;
  --surface: #f8f4ec;
  --surface-muted: #e8e2d8;
  --border: #d0c8b8;
  --border-light: #ddd6c8;
  --grid: #c0b4a2;
  --text: #383024;
  --text-muted: #807462;
  --text-light: #a89c88;
  --brand: #b04818;
  --brand-soft: #f4e0d0;
  --brand-on: #fff;
  --grid-soft: rgba(0,0,0,0.08);
  --success: #5e8020;
  --danger: #b82828;
  --warning: #c89028;
  --cat-career: #a05824; --cat-finance: #6e7a48; --cat-social: #5e6888; --cat-health: #9e5040;
  --cat-recreation: #9e8e40; --cat-family: #7e6478; --cat-growth: #4e7e68; --cat-actual: #58608e;
  --cat-other: #807a6e;
}

/* ====== 暗调配色 (data-mood="dark" 时覆盖) ====== */
/* 暗调基底（固定）：深邃但不沉闷。明亮配色在暗调下统一走此基底，暗调专属配色见下方变体 */
[data-mood="dark"] {
  --bg: #12141a;
  --surface: #1e2129;
  --surface-muted: #171a21;
  --border: #323642;
  --border-light: #262a34;
  --grid: #3e4250;
  --text: #e8ebf2;
  --text-muted: #8890a4;
  --text-light: #5a6074;
  --brand: #5b9bf5;
  --brand-soft: #1e3a5f;
  --brand-on: #0d1520;
  --surface-highlight: rgba(255,255,255,0.06);
  --surface-shadow: rgba(0,0,0,0.3);
  --overlay-bg: rgba(0,0,0,0.65);
  --glass-border: rgba(255,255,255,0.08);
  --grid-soft: rgba(255,255,255,0.08);
  --success: #4ade80;
  --danger: #f87171;
  --warning: #fbbf24;
  --cat-career: #fbbf24; --cat-finance: #4ade80; --cat-social: #818cf8; --cat-health: #f87171;
  --cat-recreation: #facc15; --cat-family: #c084fc; --cat-growth: #22d3ee; --cat-actual: #a78bfa;
  --cat-other: #6b7280;
}
/* 暗调下的配色变体 */
[data-mood="dark"][data-palette="default"] {
  --brand: #60a5fa;
  --brand-soft: #1e3a5c;
}
[data-mood="dark"][data-palette="midnight"] {
  --bg: #0c1018;
  --surface: #161d28;
  --surface-muted: #10151d;
  --border: #27303d;
  --border-light: #1d2430;
  --grid: #323d4d;
  --text: #dde4ee;
  --text-muted: #8a98ac;
  --text-light: #546072;
  --brand: #7ab8ff;
  --brand-soft: #1a3050;
  --brand-on: #060f1a;
  --cat-career: #ffb040; --cat-finance: #40e080; --cat-social: #60b0ff; --cat-health: #ff7070;
  --cat-recreation: #ffd860; --cat-family: #c890ff; --cat-growth: #40e0d0; --cat-actual: #80a0ff;
  --cat-other: #708090;
}
[data-mood="dark"][data-palette="cyberpunk"] {
  --bg: #080a14;
  --surface: #12182e;
  --surface-muted: #0c1024;
  --border: #242c50;
  --border-light: #1a2040;
  --grid: #303860;
  --text: #e0e4ff;
  --text-muted: #8088c0;
  --text-light: #4c5480;
  --brand: #ff40b0;
  --brand-soft: #3a0e28;
  --brand-on: #fff;
  --success: #00e8a4;
  --danger: #ff3060;
  --warning: #ffc000;
  --cat-career: #ff9830; --cat-finance: #00e8a4; --cat-social: #7870ff; --cat-health: #ff3060;
  --cat-recreation: #ffc000; --cat-family: #d050ff; --cat-growth: #00e0d4; --cat-actual: #5080ff;
  --cat-other: #505880;
}

/* 黑客帝国 —— 暗调专属：黑底绿字，配合 data-stroke="glow" 呈绿光，底层为数字雨 */
[data-mood="dark"][data-palette="matrix"] {
  --bg: #050805;
  --surface: #0c120c;
  --surface-muted: #090d09;
  --border: #1a261a;
  --border-light: #141d14;
  --grid: #223522;
  --text: #c4f0c4;
  --text-muted: #4f8f4f;
  --text-light: #2e5c2e;
  --brand: #00ff41;
  --brand-soft: #0a2a12;
  --brand-on: #001405;
  --surface-highlight: rgba(0,255,65,0.08);
  --surface-shadow: rgba(0,0,0,0.5);
  --overlay-bg: rgba(2,12,4,0.72);
  --glass-border: rgba(0,255,65,0.18);
  --grid-soft: rgba(0,255,65,0.14);
  --success: #00cc66;
  --danger: #ff4d4d;
  --warning: #d4b04c;
  --cat-career: #c4d04a; --cat-finance: #00ff41; --cat-social: #3fb9a0; --cat-health: #ff4d4d;
  --cat-recreation: #d4d04a; --cat-family: #9a8ad0; --cat-growth: #5aff8a; --cat-actual: #4ac0d0;
  --cat-other: #3a5a3a;
}

/* 暗调专属配色的明亮版本（饱和度更高，明亮下切换可明显辨识） */
[data-palette="midnight"] {
  --bg: #dbe6f5;
  --surface: #f2f7fe;
  --surface-muted: #e6eef9;
  --border: #c2d2e6;
  --border-light: #d6e2f2;
  --grid: #aebfd8;
  --text: #18263a;
  --text-muted: #4c6284;
  --text-light: #7e93b3;
  --brand: #2f6bd0;
  --brand-soft: #d5e5fa;
  --brand-on: #fff;
  --grid-soft: rgba(30,60,120,0.10);
  --success: #2f9a62;
  --danger: #cf544e;
  --warning: #c08f38;
  --cat-career: #cf8748; --cat-finance: #2f9a62; --cat-social: #4a6cc4; --cat-health: #cf544e;
  --cat-recreation: #cfa83a; --cat-family: #966ebc; --cat-growth: #2ea498; --cat-actual: #4a6cc4;
  --cat-other: #6e80a0;
}
[data-palette="cyberpunk"] {
  --bg: #e4e0f7;
  --surface: #f5f3fd;
  --surface-muted: #e2dff6;
  --border: #c2c2e8;
  --border-light: #d8d6f3;
  --grid: #a8a8dc;
  --text: #171738;
  --text-muted: #54548c;
  --text-light: #8686b4;
  --brand: #c02ea6;
  --brand-soft: #f4d6ee;
  --brand-on: #fff;
  --grid-soft: rgba(80,40,160,0.10);
  --success: #00a06e;
  --danger: #e04258;
  --warning: #d89a00;
  --cat-career: #e08038; --cat-finance: #00a06e; --cat-social: #5a58d8; --cat-health: #e04258;
  --cat-recreation: #d89a00; --cat-family: #b840d0; --cat-growth: #00b0a4; --cat-actual: #4078d8;
  --cat-other: #68689a;
}
[data-palette="matrix"] {
  --bg: #ddeee0;
  --surface: #f0f8f2;
  --surface-muted: #dceadf;
  --border: #b6d2b4;
  --border-light: #cde2ce;
  --grid: #9cc0a0;
  --text: #18291c;
  --text-muted: #47714f;
  --text-light: #74a07c;
  --brand: #16a34a;
  --brand-soft: #d6efdc;
  --brand-on: #fff;
  --grid-soft: rgba(30,120,60,0.12);
  --success: #22965a;
  --danger: #cf5448;
  --warning: #b39230;
  --cat-career: #9ea828; --cat-finance: #16a34a; --cat-social: #2f947e; --cat-health: #cf5448;
  --cat-recreation: #a89e30; --cat-family: #7e6cb0; --cat-growth: #2fb45e; --cat-actual: #2f94a8;
  --cat-other: #5c805e;
}

/* ====== 手绘基底 (data-mood="hand") ====== */
[data-mood="hand"] {
  --font-main: var(--font-hand);
  --bg: #faf6ed;
  --surface: #fffdf7;
  --surface-muted: #f3ecd8;
  --border: #c8b888;
  --border-light: #ddd0a8;
  --grid: #c8b888;
  --text: #3a3020;
  --text-muted: #887858;
  --text-light: #b0a080;
  --brand: #5a7a4a;
  --brand-soft: #e8eed8;
  --brand-on: #fff;
  --grid-soft: rgba(80,60,20,0.10);
  --surface-highlight: rgba(255,255,255,0.5);
  --surface-shadow: rgba(80,60,20,0.08);
  --overlay-bg: rgba(60,50,30,0.45);
  --glass-border: rgba(140,120,80,0.2);
  --success: #6a9a4a;
  --danger: #c05040;
  --warning: #d0a040;
  --cat-career: #d09040; --cat-finance: #6a9a4a; --cat-social: #6078a8; --cat-health: #c05040;
  --cat-recreation: #c0a840; --cat-family: #9868a8; --cat-growth: #4a9a8a; --cat-actual: #7070b8;
  --cat-other: #908870;
  /* 手绘特有 */
  --stroke-w: 1.5px;
  --stroke-style: solid;
  --deco-opacity: 1;
  --deco-display: block;
}

/* ====== 界面效果 (data-surface) ====== */
/* 毛玻璃（明亮/暗调自适应）*/
[data-surface="frost"] .left-panel,
[data-surface="frost"] .right-panel {
  background: color-mix(in srgb, var(--surface) 78%, transparent) !important;
  backdrop-filter: blur(12px) saturate(120%);
  -webkit-backdrop-filter: blur(12px) saturate(120%);
  border-color: color-mix(in srgb, var(--border) 60%, transparent) !important;
}
[data-surface="frost"] .cal-toolbar {
  background: color-mix(in srgb, var(--surface) 82%, transparent) !important;
  backdrop-filter: blur(12px) saturate(120%);
  -webkit-backdrop-filter: blur(12px) saturate(120%);
}
[data-surface="frost"] .modal-overlay {
  background: var(--overlay-bg) !important;
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}
[data-surface="frost"] .modal-box {
  background: color-mix(in srgb, var(--surface) 85%, transparent) !important;
  backdrop-filter: blur(14px) saturate(130%);
  -webkit-backdrop-filter: blur(14px) saturate(130%);
  border: 1px solid var(--glass-border) !important;
}
[data-surface="frost"] .evt-popover {
  background: color-mix(in srgb, var(--surface) 88%, transparent) !important;
  backdrop-filter: blur(16px) saturate(150%);
  -webkit-backdrop-filter: blur(16px) saturate(150%);
}

/* 液态玻璃（明亮/暗调自适应 —— 关键修复：用CSS变量替代硬编码白色高光）*/
[data-surface="liquid"] .left-panel,
[data-surface="liquid"] .right-panel {
  background: color-mix(in srgb, var(--surface) 60%, transparent) !important;
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  border-color: var(--glass-border) !important;
  box-shadow: 0 0 20px var(--surface-shadow), inset 1px 0 0 var(--surface-highlight);
}
[data-surface="liquid"] .left-panel {
  box-shadow: 4px 0 20px var(--surface-shadow), inset -1px 0 0 var(--surface-highlight);
}
[data-surface="liquid"] .right-panel {
  box-shadow: -4px 0 20px var(--surface-shadow), inset 1px 0 0 var(--surface-highlight);
}
[data-surface="liquid"] .cal-toolbar {
  background: color-mix(in srgb, var(--surface) 65%, transparent) !important;
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  border-bottom: 1px solid var(--glass-border) !important;
  box-shadow: 0 1px 0 var(--surface-highlight);
}
[data-surface="liquid"] .modal-overlay {
  background: color-mix(in srgb, var(--overlay-bg) 80%, transparent) !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
[data-surface="liquid"] .modal-box {
  background: color-mix(in srgb, var(--surface) 70%, transparent) !important;
  backdrop-filter: blur(22px) saturate(170%);
  -webkit-backdrop-filter: blur(22px) saturate(170%);
  border: 1px solid var(--glass-border) !important;
  box-shadow: 0 8px 40px var(--surface-shadow), inset 0 1px 0 var(--surface-highlight);
}
[data-surface="liquid"] .evt-popover {
  background: color-mix(in srgb, var(--surface) 74%, transparent) !important;
  backdrop-filter: blur(22px) saturate(180%);
  -webkit-backdrop-filter: blur(22px) saturate(180%);
  border: 1px solid var(--glass-border) !important;
  box-shadow: 0 4px 20px var(--surface-shadow), inset 0 1px 0 var(--surface-highlight);
  border-radius: 10px;
}
[data-surface="liquid"] .evt:hover {
  backdrop-filter: blur(6px) brightness(1.05);
  -webkit-backdrop-filter: blur(6px) brightness(1.05);
}
[data-surface="liquid"] .gantt-bar:hover {
  backdrop-filter: blur(3px) brightness(1.05);
  -webkit-backdrop-filter: blur(3px) brightness(1.05);
}

/* ====== 线条效果 (data-stroke) ====== */
/* 发光效果 */
[data-stroke="glow"] {
  --stroke-glow: 0 0 6px color-mix(in srgb, var(--brand) 40%, transparent), 0 0 12px color-mix(in srgb, var(--brand) 20%, transparent);
}
[data-stroke="glow"] .tab-btn.active,
[data-stroke="glow"] .modal-btn.primary,
[data-stroke="glow"] .evt:hover {
  box-shadow: var(--stroke-glow);
}
[data-stroke="glow"] .evt {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.2), 0 0 4px color-mix(in srgb, var(--evt-color, var(--brand)) 25%, transparent);
}
[data-stroke="glow"] .evt.selected,
[data-stroke="glow"] .gantt-bar.selected {
  box-shadow: 0 0 0 2px var(--brand), 0 0 12px color-mix(in srgb, var(--brand) 50%, transparent);
}
[data-stroke="glow"] .gantt-bar {
  box-shadow: 0 0 4px color-mix(in srgb, var(--cat-career) 20%, transparent);
}
[data-stroke="glow"] .v-resizer:hover::before,
[data-stroke="glow"] .toolbar-btn:hover,
[data-stroke="glow"] .zoom-chip:hover {
  box-shadow: 0 0 8px color-mix(in srgb, var(--brand) 35%, transparent);
}
[data-stroke="glow"] .checkin-mark.done,
[data-stroke="glow"] .checkin-mark.pass {
  box-shadow: 0 0 6px color-mix(in srgb, var(--success) 50%, transparent);
}
/* 发光扩展（3.1）：交互元素 hover/激活发光 */
[data-stroke="glow"] .mood-btn.active,
[data-stroke="glow"] .setting-row:hover,
[data-stroke="glow"] .right-group-title:hover,
[data-stroke="glow"] .btn-ghost:hover,
[data-stroke="glow"] .modal-btn:hover,
[data-stroke="glow"] .mini-cal-cell:hover,
[data-stroke="glow"] .tpl-item:hover,
[data-stroke="glow"] .proj-card:hover,
[data-stroke="glow"] .import-option:hover,
[data-stroke="glow"] .apply-mode-opt:hover {
  box-shadow: var(--stroke-glow);
}
[data-stroke="glow"] .checkin-mark.done {
  box-shadow: 0 0 10px color-mix(in srgb, var(--success) 55%, transparent);
}

/* 手绘线条 —— 不规则边框模拟手绘感 */
[data-stroke="hand"] {
  --stroke-w: 1.5px;
  --stroke-style: solid;
}
[data-stroke="hand"] .left-panel,
[data-stroke="hand"] .right-panel,
[data-stroke="hand"] .cal-toolbar,
[data-stroke="hand"] .modal-box,
[data-stroke="hand"] .evt-popover {
  border-radius: 6px 8px 7px 9px;
  border-width: 1.5px;
}
[data-stroke="hand"] .tab-btn {
  border-radius: 5px 7px 6px 8px;
  border-width: 1.5px;
}
[data-stroke="hand"] .toolbar-btn,
[data-stroke="hand"] .zoom-chip,
[data-stroke="hand"] .modal-btn,
[data-stroke="hand"] .btn-ghost,
[data-stroke="hand"] .setting-select {
  border-radius: 4px 6px 5px 7px;
  border-width: 1.5px;
}
[data-stroke="hand"] .evt {
  border-radius: 3px 6px 4px 5px;
  border-width: 1.5px 1.5px 1.5px 3px;
  border-left-style: solid;
}
[data-stroke="hand"] .gantt-bar {
  border-radius: 3px 6px 5px 4px;
  border-width: 1.5px;
}
[data-stroke="hand"] .proj-card,
[data-stroke="hand"] .tpl-item {
  border-radius: 4px 7px 5px 6px;
  border-width: 1.5px;
}
[data-stroke="hand"] .modal-input,
[data-stroke="hand"] .modal-select,
[data-stroke="hand"] .toolbar-search,
[data-stroke="hand"] .toolbar-filter {
  border-radius: 3px 5px 4px 6px;
  border-width: 1.5px;
}
[data-stroke="hand"] .checkin-mark {
  border-width: 2px;
  border-radius: 48% 52% 50% 50%;
}
[data-stroke="hand"] .v-resizer::before {
  border-radius: 2px 4px 3px 5px;
}
[data-stroke="hand"] .ms-check,
[data-stroke="hand"] .ms-item-check {
  border-radius: 48% 52% 50% 50%;
  border-width: 2px;
}
/* 手绘风格：轻微旋转偏移，增加手绘感 */
[data-stroke="hand"] .proj-card:nth-child(odd) { transform: rotate(-0.15deg); }
[data-stroke="hand"] .proj-card:nth-child(even) { transform: rotate(0.15deg); }
[data-stroke="hand"] .tpl-item:nth-child(odd) { transform: rotate(-0.1deg); }
[data-stroke="hand"] .tpl-item:nth-child(even) { transform: rotate(0.1deg); }
[data-stroke="hand"] .zoom-chip { transform: rotate(-0.3deg); }
[data-stroke="hand"] .evt:nth-child(3n) { border-radius: 4px 5px 6px 3px; }
[data-stroke="hand"] .evt:nth-child(3n+1) { border-radius: 3px 6px 4px 5px; }
[data-stroke="hand"] .evt:nth-child(3n+2) { border-radius: 5px 3px 6px 4px; }
/* 手绘风格：网格线微微偏移（通过background-position实现轻微不规则感）*/
[data-stroke="hand"] .tm-day-body {
  background-size: 100% 80px;
  background-position: 0 0, 0 0;
}
