/* ============================================================
   DSH Anime Theme · 二次元樱花梦幻风
   ============================================================
   通过覆盖 DSH 的设计令牌(CSS 变量)实现全局换肤,
   附加樱花飘落场景层与圆体字体。纯 CSS,零 JS 依赖。
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Mochiy+Pop+One&family=Zen+Maru+Gothic:wght@400;500;700;900&display=swap');

:root {
  /* ---------- 字体 ---------- */
  --dsw-font-family: "Zen Maru Gothic", "M PLUS Rounded 1c", "Yuanti SC", "Hiragino Maru Gothic ProN", "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  --ds-font-family-code: "JetBrains Mono", "Fira Code", "SF Mono", Consolas, "PingFang SC", "Microsoft YaHei", monospace;

  /* ---------- 品牌色: 深蓝 → 樱花粉/紫罗兰 ---------- */
  --dsw-alias-brand-primary: #d63384;
  --dsw-alias-brand-primary-invert: #ffffff;
  --dsw-alias-brand-text: #d63384;

  /* ---------- 背景: 粉白 → 淡紫 ---------- */
  --dsw-alias-bg-base: #fff5fa;
  --dsw-alias-bg-layer-1: #ffeef6;
  --dsw-alias-bg-layer-2: #ffe4f0;
  --dsw-alias-bg-layer-3: #f8d8ec;
  --dsw-alias-bg-mask-1: rgba(255, 240, 248, 0.92);
  --dsw-alias-bg-mask-2: rgba(255, 232, 244, 0.96);
  --dsw-alias-bg-mask-3: rgba(244, 228, 255, 0.94);
  --dsw-alias-bg-mask-drop: rgba(255, 236, 246, 0.9);
  --dsw-alias-bg-mask-photo: rgba(255, 245, 250, 0.85);
  --dsw-alias-bg-module-platform: #fff0f8;
  --dsw-alias-bg-multi-select: #ffe9f4;
  --dsw-alias-bg-overlay: rgba(94, 44, 84, 0.4);
  --dsw-alias-bg-skeleton: #ffe0ee;

  /* ---------- 文字: 墨黑 → 深紫 ---------- */
  --dsw-alias-label-primary: #432a4d;
  --dsw-alias-label-primary-bluish: #5b3a6e;
  --dsw-alias-label-primary-dimmed: #6b4a7e;
  --dsw-alias-label-primary-foreground: #ffffff;
  --dsw-alias-label-primary-inverted: #ffffff;
  --dsw-alias-label-secondary: #7a5a8f;
  --dsw-alias-label-tertiary: #a583b8;
  --dsw-alias-label-caption: #b194c2;
  --dsw-alias-label-dimmed: #c3a8d4;

  /* ---------- 边框: 灰 → 粉紫 ---------- */
  --dsw-alias-border-l1: #f3d4e6;
  --dsw-alias-border-l2: #eec2dc;
  --dsw-alias-border-l3: #e8b0d2;
  --dsw-alias-border-l4: #dda8cf;
  --dsw-alias-border-inverted: #ffffff;
  --dsw-alias-border-inverted2: #fdeef7;
  --dsw-alias-border-l2-darkmode-thin: #eec2dc;

  /* ---------- 交互 ---------- */
  --dsw-alias-interactive-bg-active: #fad4ea;
  --dsw-alias-interactive-bg-hover: #ffdcee;
  --dsw-alias-interactive-bg-hover-accent: #f7c8e4;
  --dsw-alias-interactive-bg-hover-danger: #ffd9de;
  --dsw-alias-interactive-bg-hover-solid: #d63384;

  /* ---------- 按钮 ---------- */
  --dsw-alias-button-primary-fill: #d63384;
  --dsw-alias-button-primary-hover: #c2255c;
  --dsw-alias-button-primary-dimmed: rgba(214, 51, 132, 0.16);
  --dsw-alias-button-contrast-fill: #c2255c;
  --dsw-alias-button-elevated-fill: #ffe9f4;
  --dsw-alias-button-floating-fill: rgba(255, 244, 250, 0.92);
  --dsw-alias-button-floating-hover: #ffe4f0;
  --dsw-alias-button-ghost-active-fill: #ffdcee;
  --dsw-alias-button-ghost-active-hover: #ffd0e8;
  --dsw-alias-button-ghost-active-border: #ecb7d6;
  --dsw-alias-button-info-fill: #f3c9ff;
  --dsw-alias-button-info-hover: #e8b5ff;
  --dsw-alias-button-tool-bar-fill: #fff0f8;
  --dsw-alias-button-tool-bar-fill-invisible: rgba(255, 240, 248, 0);
  --dsw-alias-button-tool-bar-hover: #ffe0ef;

  /* ---------- 状态色: 少女系 ---------- */
  --dsw-alias-state-success-primary: #2fbf8f;
  --dsw-alias-state-success-secondary: #d5f5ea;
  --dsw-alias-state-success-tertiary: #b3ecdb;
  --dsw-alias-state-warn-primary: #f59f00;
  --dsw-alias-state-warn-secondary: #fff0cf;
  --dsw-alias-state-warn-tertiary: #ffe3a3;
  --dsw-alias-state-warn-label: #b87400;
  --dsw-alias-state-error-primary: #ff5c8a;
  --dsw-alias-state-error-secondary: #ffe0e8;
  --dsw-alias-state-business-primary: #a855f7;
  --dsw-alias-state-business-tertiary: #e9d5ff;

  /* ---------- 浮层 ---------- */
  --dsw-alias-tooltip-bg: #5b2a6e;
  --dsw-alias-toast-bg: rgba(91, 42, 110, 0.94);

  /* ---------- Markdown ---------- */
  --dsw-alias-markdown-code-block: #f7e9f4;
  --dsw-alias-markdown-code-block-banner: #f0d9ec;
  --dsw-alias-markdown-inline-code: #f3d3e9;
  --dsw-alias-markdown-code-segment-selected: rgba(214, 51, 132, 0.14);
  --dsw-alias-markdown-code-segment-unselected: rgba(214, 51, 132, 0.05);
  --dsw-alias-markdown-citation: #e8d5ff;
  --dsw-alias-markdown-placeholder: #cfa9c9;
  --dsw-alias-markdown-tag: #ffe3f1;

  /* ---------- 滚动条 ---------- */
  --dsw-alias-scrollbar-bg-l1: rgba(214, 51, 132, 0.12);
  --dsw-alias-scrollbar-bg-l2: rgba(214, 51, 132, 0.18);
  --dsw-alias-scrollbar-hover-l1: rgba(214, 51, 132, 0.25);
  --dsw-alias-scrollbar-hover-l2: rgba(214, 51, 132, 0.35);

  /* ---------- 静态品牌梯度(组件直用) ---------- */
  --dsw-static-deepseek-50: #fff0f8;
  --dsw-static-deepseek-100: #ffdcee;
  --dsw-static-deepseek-200: #fbb8dd;
  --dsw-static-deepseek-300: #f48fc9;
  --dsw-static-deepseek-400: #e862ad;
  --dsw-static-deepseek-450: #d63384;
  --dsw-static-deepseek-500: #d63384;
  --dsw-static-deepseek-600: #c2255c;
  --dsw-static-deepseek-700-delete: #a61e4d;
  --dsw-static-deepseek-800: #861f4d;
  --dsw-static-deepseek-900: #5c1130;

  /* ---------- 语法高亮(少女色板) ---------- */
  --shiki-token-constant: #c2255c;
  --shiki-token-string: #0ca678;
  --shiki-token-comment: #b08bb8;
  --shiki-token-keyword: #d6336c;
  --shiki-token-parameter: #e8590c;
  --shiki-token-function: #9c36b5;
  --shiki-token-string-expression: #0b7285;
  --shiki-token-punctuation: #9c6bb0;
  --shiki-token-link: #1971c2;
}

/* ---------- 页面整体渐变背景 ---------- */
html, body {
  background: linear-gradient(160deg, #fff0f8 0%, #f6e8ff 42%, #ffe3f1 100%) fixed !important;
}

/* ============================================================
   樱花场景层(由 index.html 注入的 .anime-scene 承载)
   ============================================================ */
.anime-scene {
  position: fixed;
  inset: 0;
  z-index: 40;
  pointer-events: none;
  overflow: hidden;
}

/* 柔光斑 */
.anime-glow {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  opacity: 0.5;
  animation: anime-glow-drift 16s ease-in-out infinite alternate;
}
.anime-glow.g1 { width: 460px; height: 460px; background: #ff9ecd; top: -140px; left: -100px; }
.anime-glow.g2 { width: 380px; height: 380px; background: #c9a7ff; bottom: -120px; right: -80px; animation-delay: -5s; }
.anime-glow.g3 { width: 300px; height: 300px; background: #ffd1ec; top: 40%; left: 55%; animation-delay: -10s; opacity: 0.35; }
@keyframes anime-glow-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(30px, 24px, 0) scale(1.12); }
}

/* 星星 */
.anime-star {
  position: absolute;
  color: #f7b1d9;
  font-size: 12px;
  text-shadow: 0 0 6px rgba(255, 160, 210, 0.9);
  animation: anime-star-twinkle 3.2s ease-in-out infinite;
}
.anime-star.s1  { top: 8%;  left: 12%; animation-delay: 0s; }
.anime-star.s2  { top: 18%; left: 88%; animation-delay: .7s; font-size: 9px; }
.anime-star.s3  { top: 64%; left: 5%;  animation-delay: 1.3s; font-size: 8px; }
.anime-star.s4  { top: 80%; left: 94%; animation-delay: 2s; font-size: 10px; }
.anime-star.s5  { top: 6%;  left: 62%; animation-delay: 1.7s; font-size: 8px; }
.anime-star.s6  { top: 48%; left: 96%; animation-delay: 2.6s; font-size: 11px; }
.anime-star.s7  { top: 92%; left: 40%; animation-delay: .4s; font-size: 7px; }
.anime-star.s8  { top: 30%; left: 2%;  animation-delay: 2.2s; font-size: 9px; }
@keyframes anime-star-twinkle {
  0%, 100% { opacity: .15; transform: scale(.7) rotate(0deg); }
  50%      { opacity: .95; transform: scale(1.15) rotate(20deg); }
}

/* 樱花花瓣 */
.anime-petal {
  position: absolute;
  top: -5vh;
  width: 16px;
  height: 20px;
  border-radius: 100% 0 100% 0;
  background: linear-gradient(135deg, #ffd9ec 0%, #ff8fc0 70%, #ff6fae 100%);
  box-shadow: 0 0 8px rgba(255, 130, 190, 0.55);
  opacity: 0.85;
  animation: anime-petal-fall linear infinite;
}
.anime-petal.p1  { left: 4%;  --dur: 12s; --delay: 0s;   --s: 1.0; --rot: 140deg; --sway: 12vw; }
.anime-petal.p2  { left: 14%; --dur: 15s; --delay: -3s;  --s: .75; --rot: -90deg; --sway: 9vw; }
.anime-petal.p3  { left: 26%; --dur: 13s; --delay: -7s;  --s: 1.2; --rot: 60deg;  --sway: 15vw; }
.anime-petal.p4  { left: 38%; --dur: 17s; --delay: -1s;  --s: .8;  --rot: -160deg;--sway: 8vw; }
.anime-petal.p5  { left: 52%; --dur: 14s; --delay: -11s; --s: 1.05;--rot: 100deg; --sway: 14vw; }
.anime-petal.p6  { left: 63%; --dur: 18s; --delay: -5s;  --s: .7;  --rot: -50deg; --sway: 10vw; }
.anime-petal.p7  { left: 74%; --dur: 12s; --delay: -9s;  --s: .95; --rot: 180deg; --sway: 13vw; }
.anime-petal.p8  { left: 85%; --dur: 16s; --delay: -2s;  --s: .8;  --rot: -120deg;--sway: 7vw; }
.anime-petal.p9  { left: 93%; --dur: 13s; --delay: -6s;  --s: 1.1; --rot: 70deg;  --sway: 11vw; }
.anime-petal.p10 { left: 8%;  --dur: 19s; --delay: -13s; --s: .65; --rot: -200deg;--sway: 16vw; }
@keyframes anime-petal-fall {
  0%   { transform: translate3d(0, -6vh, 0) rotate(0deg) scale(var(--s)); }
  100% { transform: translate3d(var(--sway), 108vh, 0) rotate(var(--rot)) scale(var(--s)); }
}
.anime-petal { animation-duration: var(--dur); animation-delay: var(--delay); }

/* ============================================================
   组件级微调
   ============================================================ */

/* 圆角按钮、输入框、卡片 */
button, input, textarea, select {
  border-radius: 12px !important;
}
button:active { transform: scale(0.97); }

/* 滚动条粉化 */
* { scrollbar-width: thin; scrollbar-color: #f0a8d0 #fff0f8; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: rgba(255, 240, 248, .6); }
*::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #ffb8dc, #e9a8ff);
  border-radius: 8px;
  border: 2px solid rgba(255, 240, 248, .8);
}
*::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #ff94cf, #d98cff); }

/* 选中文字 */
::selection { background: #ffc4e4; color: #5c1130; }

/* 链接 */
a { color: #d63384; }

/* 代码块圆角 */
pre, code { border-radius: 10px; }

/* Toast / tooltip 圆角 */
[role="tooltip"], [class*="toast"], [class*="Toast"] { border-radius: 14px !important; }

/* ============================================================
   暗色模式 · 二次元紫夜星空
   ============================================================ */
body[data-ds-dark-theme] {
  /* 品牌: 亮粉紫 */
  --dsw-alias-brand-primary: #f0659d;
  --dsw-alias-brand-primary-invert: #1c1026;
  --dsw-alias-brand-text: #f49cc2;

  /* 背景: 深紫层级 */
  --dsw-alias-bg-base: #150c24;
  --dsw-alias-bg-layer-1: #1e1133;
  --dsw-alias-bg-layer-2: #281743;
  --dsw-alias-bg-layer-3: #321d52;
  --dsw-alias-bg-mask-1: rgba(21, 12, 36, 0.92);
  --dsw-alias-bg-mask-2: rgba(30, 17, 51, 0.96);
  --dsw-alias-bg-mask-3: rgba(40, 23, 67, 0.94);
  --dsw-alias-bg-mask-drop: rgba(21, 12, 36, 0.9);
  --dsw-alias-bg-mask-photo: rgba(21, 12, 36, 0.85);
  --dsw-alias-bg-module-platform: #1e1133;
  --dsw-alias-bg-multi-select: #2c1a4a;
  --dsw-alias-bg-overlay: rgba(5, 2, 12, 0.55);
  --dsw-alias-bg-skeleton: #32204f;

  /* 文字 */
  --dsw-alias-label-primary: #f5e9fb;
  --dsw-alias-label-primary-bluish: #e3d0f2;
  --dsw-alias-label-primary-dimmed: #d4bce6;
  --dsw-alias-label-primary-foreground: #150c24;
  --dsw-alias-label-primary-inverted: #ffffff;
  --dsw-alias-label-secondary: #c4a7dc;
  --dsw-alias-label-tertiary: #9a7cb8;
  --dsw-alias-label-caption: #8a6aa8;
  --dsw-alias-label-dimmed: #7a5a98;

  /* 边框 */
  --dsw-alias-border-l1: #3a2358;
  --dsw-alias-border-l2: #4a2f6e;
  --dsw-alias-border-l3: #593c80;
  --dsw-alias-border-l4: #66438f;
  --dsw-alias-border-inverted: #150c24;
  --dsw-alias-border-inverted2: #2c1a4a;
  --dsw-alias-border-l2-darkmode-thin: #4a2f6e;

  /* 交互 */
  --dsw-alias-interactive-bg-active: #472a68;
  --dsw-alias-interactive-bg-hover: #3a2257;
  --dsw-alias-interactive-bg-hover-accent: #4a2f6e;
  --dsw-alias-interactive-bg-hover-danger: #572338;
  --dsw-alias-interactive-bg-hover-solid: #f0659d;

  /* 按钮 */
  --dsw-alias-button-primary-fill: #f0659d;
  --dsw-alias-button-primary-hover: #e14e8c;
  --dsw-alias-button-primary-dimmed: rgba(240, 101, 157, 0.18);
  --dsw-alias-button-contrast-fill: #e14e8c;
  --dsw-alias-button-elevated-fill: #2c1a4a;
  --dsw-alias-button-floating-fill: rgba(30, 17, 51, 0.92);
  --dsw-alias-button-floating-hover: #32204f;
  --dsw-alias-button-ghost-active-fill: #3a2257;
  --dsw-alias-button-ghost-active-hover: #432a63;
  --dsw-alias-button-ghost-active-border: #593c80;
  --dsw-alias-button-info-fill: #3b2358;
  --dsw-alias-button-info-hover: #4a2f6e;
  --dsw-alias-button-tool-bar-fill: #1e1133;
  --dsw-alias-button-tool-bar-fill-invisible: rgba(30, 17, 51, 0);
  --dsw-alias-button-tool-bar-hover: #2c1a4a;

  /* 状态色 */
  --dsw-alias-state-success-primary: #4ade9f;
  --dsw-alias-state-success-secondary: #123d2e;
  --dsw-alias-state-success-tertiary: #1c5842;
  --dsw-alias-state-warn-primary: #ffc24d;
  --dsw-alias-state-warn-secondary: #3f3210;
  --dsw-alias-state-warn-tertiary: #5c4915;
  --dsw-alias-state-warn-label: #ffd97a;
  --dsw-alias-state-error-primary: #ff7b9e;
  --dsw-alias-state-error-secondary: #4a1f2e;
  --dsw-alias-state-business-primary: #c79bff;
  --dsw-alias-state-business-tertiary: #3b2358;

  /* 浮层 */
  --dsw-alias-tooltip-bg: #f5e9fb;
  --dsw-alias-toast-bg: rgba(21, 12, 36, 0.95);

  /* Markdown */
  --dsw-alias-markdown-code-block: #221240;
  --dsw-alias-markdown-code-block-banner: #2c1a4a;
  --dsw-alias-markdown-inline-code: #3a2257;
  --dsw-alias-markdown-code-segment-selected: rgba(240, 101, 157, 0.16);
  --dsw-alias-markdown-code-segment-unselected: rgba(240, 101, 157, 0.06);
  --dsw-alias-markdown-citation: #3b2358;
  --dsw-alias-markdown-placeholder: #7a5a98;
  --dsw-alias-markdown-tag: #2c1a4a;

  /* 滚动条 */
  --dsw-alias-scrollbar-bg-l1: rgba(240, 101, 157, 0.15);
  --dsw-alias-scrollbar-bg-l2: rgba(240, 101, 157, 0.22);
  --dsw-alias-scrollbar-hover-l1: rgba(240, 101, 157, 0.3);
  --dsw-alias-scrollbar-hover-l2: rgba(240, 101, 157, 0.4);

  /* 静态品牌梯度 */
  --dsw-static-deepseek-50: #2c1a4a;
  --dsw-static-deepseek-100: #3a2257;
  --dsw-static-deepseek-200: #4a2f6e;
  --dsw-static-deepseek-300: #70499a;
  --dsw-static-deepseek-400: #8f5cb8;
  --dsw-static-deepseek-450: #f0659d;
  --dsw-static-deepseek-500: #f0659d;
  --dsw-static-deepseek-600: #e14e8c;
  --dsw-static-deepseek-700-delete: #c73a75;
  --dsw-static-deepseek-800: #a52f60;
  --dsw-static-deepseek-900: #7a2247;

  /* 语法高亮(暗色少女色板) */
  --shiki-token-constant: #ff9ecb;
  --shiki-token-string: #6ef2b8;
  --shiki-token-comment: #8a6aa8;
  --shiki-token-keyword: #ff8ab8;
  --shiki-token-parameter: #ffc078;
  --shiki-token-function: #c79bff;
  --shiki-token-string-expression: #7ce0f0;
  --shiki-token-punctuation: #9a7cb8;
  --shiki-token-link: #7cc0ff;
}

/* 暗色页面渐变 */
body[data-ds-dark-theme] {
  background: linear-gradient(160deg, #150c24 0%, #241543 45%, #150c24 100%) fixed !important;
}

/* 暗色滚动条 */
body[data-ds-dark-theme] *::-webkit-scrollbar-track { background: rgba(30, 17, 51, 0.6); }
body[data-ds-dark-theme] *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #70499a, #e14e8c);
  border-color: rgba(21, 12, 36, 0.8);
}
body[data-ds-dark-theme] * { scrollbar-color: #70499a #1e1133; }

/* 暗色选中 */
body[data-ds-dark-theme] ::selection { background: #4a2f6e; color: #f5e9fb; }
