vscode eva theme

{
  // ─── 编辑器核心 ──────────────────────────────────────────────
  "editor.fontSize": 15,
  "editor.fontFamily": "'Maple Mono', 'Comic Mono', 'Cascadia Code', 'LXGW WenKai Mono','Symbols Nerd Font'",
  "editor.fontLigatures": true,
  "editor.fontVariations": true,
  "editor.lineHeight": 1.6,
  "editor.letterSpacing": 0.4,
  "editor.codeLensFontFamily": "'Maple Mono', 'Comic Mono', 'Cascadia Code', 'LXGW WenKai Mono','Symbols Nerd Font'",

  // ─── 光标与动画 ──────────────────────────────────────────────
  "editor.cursorBlinking": "solid",
  "editor.cursorStyle": "line",
  "editor.cursorSmoothCaretAnimation": "on",
  "editor.cursorWidth": 2,
  "editor.smoothScrolling": true,
  "editor.linkedEditing": true,

  // ─── 格式化 ──────────────────────────────────────────────────
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.formatOnSave": true,
  "editor.formatOnPaste": true,
  // ✅ 已删除 "editor.autoIndentOnPaste" —— 不是有效的 VS Code 设置
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.organizeImports": "explicit",
  },
  "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

  // ─── 代码辅助 ────────────────────────────────────────────────
  "editor.suggestSelection": "first",
  "editor.acceptSuggestionOnEnter": "smart",
  "editor.suggest.showStatusBar": true,
  "editor.snippetSuggestions": "top",
  "editor.suggest.preview": true,
  "editor.quickSuggestionsDelay": 10,
  // ✅ 已删除 "editor.parameterHints.enabled" —— 默认即为 true,无需声明
  "editor.inlayHints.enabled": "on",
  "editor.inlayHints.fontSize": 11,

  // ─── 语义高亮 ────────────────────────────────────────────────
  "editor.semanticHighlighting.enabled": true,

  // ─── 视觉辅助 ────────────────────────────────────────────────
  "editor.renderWhitespace": "boundary",
  "editor.renderLineHighlight": "all",
  "editor.occurrencesHighlight": "multiFile",
  "editor.wordWrap": "off",
  "editor.minimap.enabled": true,
  "editor.minimap.renderCharacters": false,
  "editor.minimap.maxColumn": 80,
  "editor.stickyScroll.enabled": true,

  // ─── 括号与缩进 ──────────────────────────────────────────────
  "editor.bracketPairColorization.enabled": true,
  "editor.bracketPairColorization.independentColorPoolPerBracketType": true,
  "editor.guides.bracketPairs": "active",
  "editor.guides.highlightActiveIndentation": true,

  // ─── Unicode ─────────────────────────────────────────────────
  "editor.unicodeHighlight.allowedLocales": { "zh-hans": true },

  // ─── 文件管理 ────────────────────────────────────────────────
  "files.autoSave": "afterDelay",
  "files.autoSaveDelay": 1000,
  "files.autoGuessEncoding": true,
  "files.trimFinalNewlines": true,
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "files.readonlyFromPermissions": true,
  "explorer.fileNesting.enabled": true,
  "explorer.fileNesting.patterns": {
    "*.ts": "${capture}.js, ${capture}.js.map",
    // ✅ 已删除 "*.d.ts": "" —— 空值无意义,会导致 .d.ts 文件悬空嵌套
    "*.tsx": "${capture}.css, ${capture}.module.css",
    "package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, .npmrc",
    "tsconfig.json": "tsconfig.*.json",
    ".eslintrc*": ".eslintignore, .prettierrc*, .prettierignore",
  },

  // ─── 终端 ────────────────────────────────────────────────────
  "terminal.external.windowsExec": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
  "terminal.external.linuxExec": "zsh",
  "terminal.integrated.fontFamily": "'Maple Mono', 'Comic Mono', 'Cascadia Code', 'LXGW WenKai Mono','Symbols Nerd Font'",
  "terminal.integrated.fontSize": 15,
  "terminal.integrated.cursorStyle": "line",
  "terminal.integrated.cursorBlinking": true,
  "terminal.integrated.smoothScrolling": true,
  "terminal.integrated.rightClickBehavior": "default",
  "terminal.integrated.lineHeight": 1.2,

  // ─── 工作台 ──────────────────────────────────────────────────
  "workbench.colorTheme": "Eva 02 Theme",
  "workbench.iconTheme": "material-icon-theme",
  "workbench.productIconTheme": "icons-carbon",
  "workbench.startupEditor": "newUntitledFile",
  "workbench.editor.enablePreview": false,
  "workbench.editor.wrapTabs": false,
  "workbench.editor.decorations.badges": true,
  "workbench.tree.indent": 16,
  "workbench.list.smoothScrolling": true,
  "workbench.editor.tabSizing": "shrink",

  // ─── Material Icon Theme ─────────────────────────────────────
  "material-icon-theme.folders.color": "#E32828",
  "material-icon-theme.folders.theme": "classic",
  "material-icon-theme.opacity": 0.8,

  // ─── GlassIt 透明度(255 = 不透明,216 ≈ 85%) ───────────────
  "glassit.alpha": 216,

  // ─── EVA 02 Token 配色 ────────────────────────────────────────
  "editor.tokenColorCustomizations": {
    "[Eva 02 Theme]": {
      "textMateRules": [
        {
          "name": "关键字 (import/export/const/let/async/await)",
          "scope": [
            "keyword",
            "keyword.control",
            "keyword.operator.new",
            "storage.type",
            "storage.modifier",
          ],
          "settings": { "foreground": "#FF4444" },
        },
        {
          "name": "内置类型 (string/number/boolean/void)",
          "scope": ["support.type", "keyword.type", "storage.type.primitive"],
          "settings": { "foreground": "#FF6A00" },
        },
        {
          "name": "函数名 / 方法名",
          "scope": [
            "entity.name.function",
            "meta.function-call.generic",
            "support.function",
          ],
          "settings": { "foreground": "#EA8532" },
        },
        {
          "name": "类名 / 接口名 / 类型名",
          "scope": [
            "entity.name.type",
            "entity.name.class",
            "entity.other.inherited-class",
            "support.class",
          ],
          "settings": { "foreground": "#FF9D00" },
        },
        {
          "name": "变量 / 参数",
          "scope": [
            "variable",
            "variable.parameter",
            "variable.other.readwrite",
          ],
          "settings": { "foreground": "#E8E8E8" },
        },
        {
          "name": "对象属性 / 成员访问",
          "scope": [
            "variable.other.property",
            "variable.other.object.property",
            "support.variable.property",
            "meta.object-literal.key",
          ],
          "settings": { "foreground": "#00C8FF" },
        },
        {
          "name": "字符串",
          "scope": ["string", "string.quoted", "string.template"],
          "settings": { "foreground": "#52D053" },
        },
        {
          "name": "模板字符串插值 ${}",
          "scope": [
            "punctuation.definition.template-expression",
            "string.template punctuation.accessor",
          ],
          "settings": { "foreground": "#EA8532" },
        },
        {
          "name": "数字 / 常量",
          "scope": ["constant.numeric", "constant.language", "constant.other"],
          "settings": { "foreground": "#FF6A00" },
        },
        {
          "name": "操作符",
          "scope": [
            "keyword.operator",
            "keyword.operator.arithmetic",
            "keyword.operator.comparison",
            "keyword.operator.logical",
          ],
          "settings": { "foreground": "#FF4444" },
        },
        {
          "name": "装饰器 @",
          "scope": [
            "meta.decorator",
            "punctuation.decorator",
            "entity.name.function.decorator",
          ],
          "settings": { "foreground": "#FF2D78", "fontStyle": "italic" },
        },
        {
          "name": "CSS 属性名",
          "scope": [
            "support.type.property-name.css",
            "entity.other.attribute-name.css",
          ],
          "settings": { "foreground": "#00C8FF" },
        },
        {
          "name": "CSS 属性值 / 单位",
          "scope": [
            "support.constant.property-value.css",
            "keyword.other.unit.css",
            "constant.numeric.css",
          ],
          "settings": { "foreground": "#52D053" },
        },
        {
          "name": "CSS 选择器",
          "scope": [
            "entity.other.attribute-name",
            "entity.name.tag.css",
            "entity.other.attribute-name.class.css",
            "entity.other.attribute-name.id.css",
          ],
          "settings": { "foreground": "#EA8532" },
        },
        {
          "name": "注释",
          "scope": ["comment", "comment.line", "comment.block"],
          "settings": {
            "foreground": "#8A6060",
            "fontStyle": "italic bold",
            "fontFamily": "'FOT-Matisse Pro', 'Source Han Serif SC VF', serif",
          },
        },
        {
          "name": "标点 / 括号",
          "scope": [
            "punctuation",
            "meta.brace",
            "punctuation.definition.block",
          ],
          "settings": { "foreground": "#993333" },
        },
      ],
    },
  },

  // ─── EVA 02 窗体配色 ──────────────────────────────────────────
  "workbench.colorCustomizations": {
    // 标题栏
    "titleBar.activeBackground": "#9A0000",
    "titleBar.activeForeground": "#FFFFFF",
    "titleBar.inactiveBackground": "#4A0000",

    // 活动栏(CSS 接管背景,此处与 CSS .activitybar 对齐,作为加载前兜底)
    "activityBar.background": "#110202",
    "activityBar.foreground": "#FF6600",
    "activityBar.inactiveForeground": "#555555",
    "activityBarBadge.background": "#3CEB54",
    "activityBarBadge.foreground": "#000000",

    // 侧边栏
    "sideBar.background": "#121212",
    "sideBar.foreground": "#A0A0A0",
    "sideBarTitle.foreground": "#E32828",
    "sideBarSectionHeader.background": "#1A0A0A",

    // 标签页
    "editorGroupHeader.tabsBackground": "#050505",
    "tab.activeBackground": "#220808",
    "tab.activeForeground": "#FF6600",
    "tab.inactiveBackground": "#0D0D0D",
    "tab.inactiveForeground": "#555555",
    "tab.activeBorderTop": "#E32828",
    "tab.hoverBackground": "#1A0A0A",

    // 编辑器
    "editor.background": "#0A0A0A",
    "editor.lineHighlightBackground": "#1A0505",
    "editor.selectionBackground": "#E3282850",
    "editor.wordHighlightBackground": "#FF660025",
    "editor.wordHighlightStrongBackground": "#E3282840",
    // ✅ 已修正:原为 #3CEB54(绿色),与 CSS 光标红色冲突;CSS 加载失败时此值作为兜底
    "editorCursor.foreground": "#E32828",
    "editorLineNumber.foreground": "#333333",
    "editorLineNumber.activeForeground": "#FF6600",

    // 括号高亮(红 → 橙 → 绿)
    "editorBracketHighlight.foreground1": "#E32828",
    "editorBracketHighlight.foreground2": "#FF6600",
    "editorBracketHighlight.foreground3": "#3CEB54",
    "editorBracketHighlight.foreground4": "#E32828",
    "editorBracketHighlight.foreground5": "#FF6600",
    "editorBracketHighlight.foreground6": "#3CEB54",

    // 缩进线
    "editorIndentGuide.background1": "#2A2A2A",
    "editorIndentGuide.activeBackground1": "#E32828",

    // 迷你地图
    "minimap.background": "#080808",
    "minimapSlider.background": "#E3282830",
    "minimapSlider.hoverBackground": "#FF660060",
    "minimapSlider.activeBackground": "#3CEB5490",

    // Sticky Scroll
    "editorStickyScroll.background": "#110000",
    "editorStickyScrollHover.background": "#1A0505",

    // Inlay Hints
    "editorInlayHint.background": "#1A0A0A",
    "editorInlayHint.foreground": "#FF660099",

    // 状态栏(CSS 接管背景,此处与 CSS .statusbar 对齐,作为加载前兜底)
    "statusBar.background": "#1A0505",
    "statusBar.foreground": "#FF6600",
    "statusBar.noFolderBackground": "#0D0000",
    "statusBar.debuggingBackground": "#3CEB54",
    "statusBar.debuggingForeground": "#000000",

    // 面板(终端/输出)
    "panel.background": "#0F0F0F",
    "panelTitle.activeBorder": "#E32828",
    "panelTitle.activeForeground": "#FF6600",

    // 滚动条
    "scrollbarSlider.background": "#E3282820",
    "scrollbarSlider.hoverBackground": "#FF660050",
    "scrollbarSlider.activeBackground": "#E3282870",
  },

  "workbench.editor.empty.hint": "hidden",
  "vscode_custom_css.imports": [
    "file:///C:/Users/diana/Documents/WindowsPowerShell/vscode/eva-unit02.css",
    "file:///C:/Users/diana/Documents/WindowsPowerShell/vscode/eva-unit02.js",
    "file:///c:/Users/diana/.vscode/extensions/brandonkirbyson.vscode-animations-2.0.7/dist/updateHandler.js",
  ],
  "terminal.integrated.initialHint": false,
  "animations.Active": "Scale",
  "animations.Command-Palette": "Slide",
  "animations.Tabs": "Slide",
  "animations.Smooth-Mode": true,
  "animations.Install-Method": "Custom CSS and JS",
}

Plugins:

Carbon Product Icons
Material Icon Theme
Evangelion Theme
GlassIt-VSC
Custom CSS and JS Loader
VSCode Animations

Fonts:

Maple Mono
https://github.com/subframe7536/maple-font

Comic Mono
https://dtinth.github.io/comic-mono-font/

Cascadia Code
https://github.com/microsoft/cascadia-code

LXGW WenKai Mono
https://github.com/lxgw/LxgwWenkai

Symbols Nerd Font
https://github.com/ryanoasis/nerd-fonts

codicons
https://app.unpkg.com/@vscode/codicons@0.0.45/files/dist/codicon.ttf

位置: C:/Users/diana/Documents/WindowsPowerShell/vscode/

生效方法: 管理员启动vscode,ctrl+shift+p,reload custom css and js然后关掉重启vscode

eva-unit02.js

// ============================================
// EVA Unit-02 — JS v4
// 粒子拖尾 / 残影 / 连击计数器
// ============================================

(function () {
  "use strict";

  // ── 颜色常量(与 CSS --eva-red / --eva-orange 保持一致)──
  const EVA_RED = "#E32828"; // ✅ 统一主红,对应 CSS --eva-red
  const EVA_ORANGE = "#EA8532"; // ✅ 统一橙色,对应 CSS --eva-orange
  const EVA_COLORS = [
    EVA_RED, // 主红
    "#C0392B", // 深红(CSS --eva-red-dark)
    EVA_ORANGE, // 橙
    "#F39C12", // 黄橙
    "#FF6B6B", // 亮粉红(粒子专用,增加层次感)
    "#FF4500", // 橙红
  ];
  const MAX_PARTICLES = 150;

  const rand = (min, max) => Math.random() * (max - min) + min;
  const pickColor = () => EVA_COLORS[(Math.random() * EVA_COLORS.length) | 0];

  // ── 统一粒子池 + 单一 RAF 循环 ──────────────
  const particles = [];
  const afterimages = [];
  let rafId = null;

  function tick(now) {
    for (let i = particles.length - 1; i >= 0; i--) {
      const p = particles[i];
      const t = (now - p.start) / p.lifetime;
      if (t >= 1) {
        p.el.remove();
        particles.splice(i, 1);
        continue;
      }
      p.el.style.left = p.x + p.vx * t + "px";
      p.el.style.top = p.y + p.vy * t + 60 * t * t + "px";
      p.el.style.opacity = String(1 - t * t);
    }

    for (let i = afterimages.length - 1; i >= 0; i--) {
      const a = afterimages[i];
      const t = (now - a.start) / 300;
      if (t >= 1) {
        a.el.remove();
        afterimages.splice(i, 1);
        continue;
      }
      a.el.style.opacity = String(0.6 * (1 - t));
      a.el.style.transform = `scaleY(${1 - t * 0.5})`;
    }

    rafId =
      particles.length || afterimages.length
        ? requestAnimationFrame(tick)
        : null;
  }

  function ensureRAF() {
    if (!rafId) rafId = requestAnimationFrame(tick);
  }

  // ── 1. 粒子系统 ──────────────────────────────
  function spawnParticles(x, y, intensity = 1) {
    if (particles.length >= MAX_PARTICLES) return;

    const count = Math.min(
      (rand(6, 12) * intensity) | 0,
      MAX_PARTICLES - particles.length,
    );
    const now = performance.now();

    for (let i = 0; i < count; i++) {
      const isStreak = Math.random() > 0.5;
      const color = pickColor();
      const size = rand(2, isStreak ? 3 : 5);
      const length = isStreak ? rand(8, 20) : size;
      const angle = rand(0, Math.PI * 2);
      const speed = rand(30, 80) * intensity;
      const lifetime = rand(400, 700);

      const el = document.createElement("div");
      Object.assign(el.style, {
        position: "fixed",
        left: x + "px",
        top: y + "px",
        width: length + "px",
        height: size + "px",
        background: isStreak
          ? `linear-gradient(${angle}rad, ${color}, transparent)`
          : color,
        borderRadius: isStreak ? "0" : "50%",
        pointerEvents: "none",
        zIndex: "99999",
        opacity: "1",
        boxShadow: `0 0 ${size * 2}px ${color}`,
        transform: isStreak ? `rotate(${angle}rad)` : "none",
        transformOrigin: "left center",
        willChange: "left, top, opacity",
      });
      document.body.appendChild(el);

      particles.push({
        el,
        x,
        y,
        vx: Math.cos(angle) * speed,
        vy: Math.sin(angle) * speed,
        lifetime,
        start: now,
      });
    }

    ensureRAF();
  }

  // ── 2. 打字扫光残影 ──────────────────────────
  function spawnAfterimage(cursorEl) {
    const rect = cursorEl.getBoundingClientRect();
    if (!rect.width && !rect.height) return; // 光标不可见时跳过

    const el = document.createElement("div");
    Object.assign(el.style, {
      position: "fixed",
      left: rect.left + "px",
      top: rect.top + "px",
      width: rect.width + "px",
      height: rect.height + "px",
      background: EVA_RED, // ✅ 与 CSS --eva-red 一致
      opacity: "0.6",
      pointerEvents: "none",
      zIndex: "99998",
      boxShadow: `0 0 8px ${EVA_RED}`,
      willChange: "opacity, transform",
    });
    document.body.appendChild(el);
    afterimages.push({ el, start: performance.now() });
    ensureRAF();
  }

  // ── 3. 连击计数器 ────────────────────────────
  let comboCount = 0;
  let comboTimer = null;
  const COMBO_THRESHOLD = 10;

  function triggerComboEffect() {
    const el = document.createElement("div");
    Object.assign(el.style, {
      position: "fixed",
      top: "50%",
      left: "50%",
      transform: "translate(-50%, -50%) scale(0.5)",
      zIndex: "999997",
      pointerEvents: "none",
      fontFamily: "monospace",
      fontSize: "28px",
      fontWeight: "bold",
      color: EVA_RED, // ✅ 统一常量
      textShadow: `0 0 20px ${EVA_RED}, 0 0 40px ${EVA_ORANGE}`, // ✅ 统一常量
      letterSpacing: "4px",
      opacity: "0",
      transition: "transform 0.2s ease-out, opacity 0.5s ease-out",
    });
    el.textContent = `COMBO ×${comboCount}`;
    document.body.appendChild(el);

    requestAnimationFrame(() => {
      el.style.transform = "translate(-50%, -50%) scale(1)";
      el.style.opacity = "1";
    });

    setTimeout(() => {
      el.style.opacity = "0";
      el.style.transform = "translate(-50%, -60%) scale(1.2)";
      setTimeout(() => el.remove(), 500);
    }, 800);
  }

  // ── 事件:鼠标点击 ────────────────────────────
  document.addEventListener("mousedown", (e) => {
    if (e.target.closest(".monaco-editor, .editor-container")) {
      spawnParticles(e.clientX, e.clientY, 1.2);
    }
  });

  // ── 事件:键盘(缓存光标元素,避免每次 querySelector)──
  let cachedCursor = null;

  function getCursor() {
    if (!cachedCursor || !document.body.contains(cachedCursor)) {
      cachedCursor =
        document.querySelector(".cursor.monaco-mouse-cursor-text") ||
        document.querySelector(".cursor");
    }
    return cachedCursor;
  }

  document.addEventListener("keydown", (e) => {
    if (e.key.length !== 1 && e.key !== "Backspace" && e.key !== "Enter")
      return;

    const cursor = getCursor();
    if (cursor) {
      const rect = cursor.getBoundingClientRect();
      spawnParticles(
        rect.left + rect.width / 2,
        rect.top + rect.height / 2,
        e.key === "Enter" ? 2.5 : 0.6,
      );
      spawnAfterimage(cursor);
    }

    comboCount++;
    clearTimeout(comboTimer);
    comboTimer = setTimeout(() => {
      comboCount = 0;
    }, 1000);
    if (comboCount % COMBO_THRESHOLD === 0) triggerComboEffect();
  });
})();

eva-unit02.css

/* ============================================
   EVA Unit-02 — CSS v4
   驾驶舱 / 机甲 / 警戒状态 + 发光效果
   ============================================ */

/* ══ 0. 颜色变量 ════════════════════════════ */
:root {
  --eva-red: #e32828; /* ✅ 统一主红,与 settings / JS 保持一致 */
  --eva-red-dark: #c0392b;
  --eva-orange: #ea8532;
  --eva-green: #3ceb54;
  --eva-cyan: #00c8ff;
  --eva-red-rgb: 227, 40, 40; /* ✅ 更新为 #E32828 对应 RGB */
  --eva-dark-rgb: 192, 57, 43;
  --eva-orange-rgb: 234, 133, 50;
  --eva-green-rgb: 60, 235, 84;
  --eva-cyan-rgb: 0, 200, 255;
}

/* ══ 1. 光标 ════════════════════════════════ */
.cursor {
  background: var(--eva-red) !important;
  border-color: var(--eva-red) !important;
  border: none !important;
  width: 2px !important;
  box-shadow: 0 0 3px rgba(var(--eva-red-rgb), 0.8) !important; /* ✅ 修复:原写法缺 rgba(),无效 */
  animation: cursorPulse 1.2s ease-in-out infinite !important;
  transition:
    left 0.06s ease-out,
    top 0.06s ease-out !important;
}

@keyframes cursorPulse {
  0%,
  100% {
    transform: scaleY(1);
    box-shadow:
      0 0 4px 1px rgba(var(--eva-red-rgb), 1),
      0 0 10px 3px rgba(var(--eva-red-rgb), 0.7),
      0 0 20px 6px rgba(var(--eva-dark-rgb), 0.4);
  }
  50% {
    transform: scaleY(0.15);
    box-shadow:
      0 0 8px 3px rgba(var(--eva-red-rgb), 1),
      0 0 20px 8px rgba(var(--eva-red-rgb), 0.8),
      0 0 40px 14px rgba(var(--eva-dark-rgb), 0.5);
  }
}

/* ══ 2. 编辑器背景叠层 ══════════════════════ */

/* 红色网格暗纹 */
.monaco-editor .overflow-guard::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 99;
  background-image:
    linear-gradient(rgba(var(--eva-dark-rgb), 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(var(--eva-dark-rgb), 0.04) 1px, transparent 1px);
  background-size: 32px 32px;
}

/* CRT 扫描线 */
.monaco-editor .overflow-guard::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 100;
  background: repeating-linear-gradient(
    0deg,
    transparent 0px,
    transparent 2px,
    rgba(0, 0, 0, 0.06) 2px,
    rgba(0, 0, 0, 0.06) 4px
  );
  animation: scanlineScroll 8s linear infinite;
  will-change: background-position; /* ✅ 新增:提示 GPU 预备该属性 */
}

@keyframes scanlineScroll {
  to {
    background-position: 0 100px;
  }
}

/* ══ 3. 代码 Token 发光 ═════════════════════ */
.monaco-editor .view-lines {
  filter: brightness(1.04) !important;
}

span[class*="mtk"] {
  text-shadow: none !important;
  filter: none !important;
}

/* 关键字 #FF4444 → 红色发光 */
span[class*="mtk"][style*="#FF4444"] {
  text-shadow: 0 0 8px rgba(var(--eva-red-rgb), 0.65) !important;
}
/* 函数名 #EA8532 → 橙色发光 */
span[class*="mtk"][style*="#EA8532"] {
  text-shadow: 0 0 7px rgba(var(--eva-orange-rgb), 0.6) !important;
}
/* 类名/类型 #FF9D00 → 橙黄发光 */
span[class*="mtk"][style*="#FF9D00"] {
  text-shadow: 0 0 7px rgba(255, 157, 0, 0.55) !important;
}
/* 字符串 #52D053 → 绿色发光 */
span[class*="mtk"][style*="#52D053"] {
  text-shadow: 0 0 7px rgba(var(--eva-green-rgb), 0.5) !important;
}
/* 对象属性 #00C8FF → 青色发光 */
span[class*="mtk"][style*="#00C8FF"] {
  text-shadow: 0 0 6px rgba(var(--eva-cyan-rgb), 0.5) !important;
}
/* 注释 #8A6060 → 轻透明,不发光 */
span[class*="mtk"][style*="#8A6060"] {
  opacity: 0.7 !important;
}
/* 标点 #993333 → 极弱红色发光 */
span[class*="mtk"][style*="#993333"] {
  text-shadow: 0 0 2px rgba(var(--eva-red-rgb), 0.35) !important;
}

/* ══ 4. 选中 / 同名高亮 ═════════════════════ */
.monaco-editor .selected-text {
  background: rgba(var(--eva-dark-rgb), 0.4) !important;
}
.monaco-editor .selectionHighlight {
  background: rgba(var(--eva-red-rgb), 0.15) !important;
  border: 1px solid rgba(var(--eva-red-rgb), 0.5) !important;
}

/* ══ 5. 搜索高亮 ════════════════════════════ */
.monaco-editor .findMatch {
  background: rgba(var(--eva-orange-rgb), 0.18) !important;
  border: 1px solid rgba(var(--eva-orange-rgb), 0.45) !important;
}
.monaco-editor .currentFindMatch {
  background: rgba(var(--eva-red-rgb), 0.3) !important;
  border: 1px solid var(--eva-red) !important;
  box-shadow: 0 0 6px rgba(var(--eva-red-rgb), 0.5) !important;
}

/* ══ 6. 括号 / 缩进 / 错误波浪线 ═══════════ */
.monaco-editor .bracket-match {
  background: rgba(var(--eva-orange-rgb), 0.2) !important;
  border: 1px solid var(--eva-orange) !important;
  animation: bracketGlow 1.5s ease-in-out infinite !important;
}

@keyframes bracketGlow {
  0%,
  100% {
    box-shadow: 0 0 5px rgba(var(--eva-orange-rgb), 0.4);
  }
  50% {
    box-shadow: 0 0 12px rgba(var(--eva-orange-rgb), 0.75);
  }
}

.monaco-editor .lines-content .cigr {
  box-shadow: 1px 0 0 0 rgba(var(--eva-red-rgb), 0.08) !important;
}
.monaco-editor .lines-content .cigra {
  box-shadow: 1px 0 0 0 rgba(var(--eva-red-rgb), 0.25) !important;
}

.monaco-editor .squiggly-error {
  background: none !important;
  border-bottom: 2px solid var(--eva-red) !important;
  box-shadow: 0 2px 6px rgba(var(--eva-red-rgb), 0.5) !important;
}
.monaco-editor .squiggly-warning {
  background: none !important;
  border-bottom: 2px solid var(--eva-orange) !important;
  box-shadow: 0 2px 5px rgba(var(--eva-orange-rgb), 0.4) !important;
}

/* ══ 7. 行号 / 折叠 / 概览标尺 ═════════════ */
.monaco-editor .margin {
  border-right: 1px solid rgba(var(--eva-red-rgb), 0.1) !important;
}
.active-line-number {
  color: var(--eva-red) !important;
  text-shadow: 0 0 4px rgba(var(--eva-red-rgb), 0.6) !important;
  font-weight: bold !important;
}
.monaco-editor .cldr:hover {
  color: var(--eva-red) !important;
  opacity: 1 !important;
}
.monaco-editor .decorationsOverviewRuler {
  border-left: 1px solid rgba(var(--eva-red-rgb), 0.12) !important;
}

/* ══ 8. 滚动条 ══════════════════════════════ */
.monaco-scrollable-element > .scrollbar > .slider {
  background: rgba(var(--eva-red-rgb), 0.22) !important;
  border-radius: 2px !important;
  transition: background 0.2s !important;
}
.monaco-scrollable-element > .scrollbar > .slider:hover {
  background: rgba(var(--eva-red-rgb), 0.45) !important;
}
.monaco-scrollable-element > .scrollbar > .slider:active {
  background: rgba(var(--eva-red-rgb), 0.65) !important;
}

/* ══ 9. 标签页 ══════════════════════════════ */
.tab[aria-selected="true"] {
  border-top: 2px solid var(--eva-red) !important;
  background: rgba(var(--eva-dark-rgb), 0.18) !important;
  box-shadow: inset 0 -1px 0 rgba(var(--eva-red-rgb), 0.3) !important;
}

.tab {
  position: relative;
  overflow: hidden;
}
.tab::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 -100%;
  width: 60%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(var(--eva-red-rgb), 0.12),
    transparent
  );
  transition: left 0.45s ease;
}
.tab:hover::before {
  left: 150%;
}

/* ══ 10. 命令面板 / 输入框 ══════════════════ */
.quick-input-widget {
  border: 1px solid rgba(var(--eva-red-rgb), 0.55) !important;
  border-top: 2px solid var(--eva-red) !important;
  box-shadow:
    0 0 0 1px rgba(var(--eva-dark-rgb), 0.3),
    0 8px 40px rgba(var(--eva-dark-rgb), 0.6) !important;
  animation: panelAppear 0.15s ease-out !important;
}

@keyframes panelAppear {
  from {
    opacity: 0;
    transform: translateY(-6px) scaleY(0.97);
  }
  to {
    opacity: 1;
    transform: translateY(0) scaleY(1);
  }
}

.monaco-inputbox.synthetic-focus,
.monaco-inputbox:focus-within {
  outline: none !important;
  border-color: var(--eva-red) !important;
  box-shadow:
    0 0 0 1px var(--eva-red),
    0 0 10px rgba(var(--eva-red-rgb), 0.4) !important;
}

/* ══ 11. 状态栏 ═════════════════════════════ */
/* CSS 接管背景,settings 中 statusBar.background 已与此对齐 */
.statusbar {
  position: relative;
  border-top: 1px solid rgba(var(--eva-red-rgb), 0.5) !important;
  background: #1a0505 !important;
  display: flex !important;
  align-items: center !important;
}
.statusbar .statusbar-item {
  display: flex !important;
  align-items: center !important;
  height: 100% !important;
  line-height: normal !important;
}
.statusbar .statusbar-item .codicon,
.statusbar .statusbar-item a .codicon {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  vertical-align: middle !important;
}
.statusbar .codicon::before {
  display: flex !important;
  align-items: center !important;
  line-height: 1 !important;
  margin: 0 !important;
  position: relative !important;
  top: 0 !important;
}

/* 跑马灯装饰线 */
.statusbar::before {
  content: "";
  position: absolute;
  top: 0;
  left: -30%;
  width: 30%;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    var(--eva-red),
    var(--eva-orange),
    transparent
  );
  animation: statusMarquee 3s linear infinite;
  pointer-events: none;
}

@keyframes statusMarquee {
  from {
    left: -30%;
  }
  to {
    left: 110%;
  }
}

/* ══ 12. 活动栏 / 侧边栏 ════════════════════ */
/* CSS 接管背景,settings 中 activityBar.background 已与此对齐 */
.activitybar {
  border-right: 1px solid rgba(var(--eva-red-rgb), 0.3) !important;
  background: #110202 !important;
}

.action-item.checked .active-item-indicator:before {
  border-left: none !important;
  width: 3px !important;
  background: linear-gradient(
    180deg,
    var(--eva-red),
    var(--eva-orange)
  ) !important;
  box-shadow: 2px 0 10px rgba(var(--eva-red-rgb), 0.8) !important;
  animation: indicatorPulse 1.5s ease-in-out infinite !important;
}

@keyframes indicatorPulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}

.explorer-item:hover,
.monaco-list-row:hover {
  border-left: 2px solid rgba(var(--eva-red-rgb), 0.6) !important;
}
.monaco-list-row.selected {
  border-left: 2px solid var(--eva-red) !important;
  background: rgba(var(--eva-dark-rgb), 0.2) !important;
}

/* ══ 13. 终端 ═══════════════════════════════ */
.terminal .xterm-cursor-layer .xterm-cursor {
  background: var(--eva-red) !important;
  box-shadow: 0 0 10px rgba(var(--eva-red-rgb), 0.9) !important;
}

/* ══ 14. 通知弹窗 ═══════════════════════════ */
.notifications-toasts .notification-toast {
  border-left: 3px solid var(--eva-red) !important;
  box-shadow: -4px 0 20px rgba(var(--eva-dark-rgb), 0.5) !important;
  animation: toastSlide 0.2s ease-out !important;
}

@keyframes toastSlide {
  from {
    transform: translateX(16px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}