    /* ==================== CRT OVERLAY（全屏滤镜，覆盖整个页面） ==================== */
    .crt-overlay {
      position: fixed; inset: 0; z-index: 100001; pointer-events: none;
      overflow: hidden;
      transition: opacity 0.6s ease;
    }
    /* 开屏阶段不叠主页面的 CRT（开屏自带扫描线动画），进入主页后再淡入全屏 */
    html.js-boot:not(.boot-done) .crt-overlay { opacity: 0; }
    /* 弹窗（作品说明）打开时大幅减弱 CRT，避免干扰观看 */
    body.is-modal-open .crt-overlay { opacity: 0.2; }
    body.is-modal-open .crt-overlay__beam { opacity: 0; }
    /* 扫描线 */
    .crt-overlay::before {
      content: ""; position: absolute; inset: 0;
      background: repeating-linear-gradient(
        0deg,
        rgb(0 0 0 / 38%) 0px, rgb(0 0 0 / 38%) 1px,
        transparent 1px, transparent 3px
      );
    }
    /* 暗角 + 球面感 */
    .crt-overlay::after {
      content: ""; position: absolute; inset: 0;
      background:
        radial-gradient(130% 112% at 50% 48%,
          transparent 50%,
          rgb(0 0 0 / 18%) 74%,
          rgb(0 0 0 / 42%) 92%,
          rgb(0 0 0 / 62%) 100%);
    }
    /* 缓慢下移的回扫光带 */
    .crt-overlay__beam {
      position: absolute; left: 0; right: 0; top: -24vh; height: 24vh;
      background: linear-gradient(180deg,
        transparent 0%,
        rgb(255 255 255 / 3%) 42%,
        rgb(255 255 255 / 6%) 50%,
        rgb(255 255 255 / 3%) 58%,
        transparent 100%);
      animation: crt-beam 8s linear infinite;
      will-change: transform;
    }
    @keyframes crt-beam {
      from { transform: translateY(0); }
      to   { transform: translateY(124vh); }
    }
    @media (prefers-reduced-motion: reduce) {
      .crt-overlay__beam { animation: none; opacity: 0; }
    }

    /* ==================== PAGE WIPE（进入主页：红色扫描线向下揭示） ==================== */
    .page-wipe {
      display: none;
      position: fixed; inset: 0; z-index: 99997;
      background: var(--cyber-void-500);
      pointer-events: none;
    }
    html.js-boot .page-wipe { display: block; }
    .page-wipe::before {
      content: ""; position: absolute; left: 0; right: 0; top: 0;
      height: 4px;
      background: linear-gradient(90deg, transparent, var(--cyber-red-500) 16%, #ffffff 50%, var(--cyber-red-500) 84%, transparent);
      box-shadow:
        0 0 12px var(--cyber-red-500),
        0 0 40px color-mix(in srgb, var(--cyber-red-500) 60%, transparent),
        0 18px 64px color-mix(in srgb, var(--cyber-red-500) 32%, transparent);
    }
    html.boot-done .page-wipe {
      animation: page-wipe-down 1.2s var(--ease-cyber) 0.28s both;
    }
    @keyframes page-wipe-down {
      from { clip-path: inset(0 0 0 0); }
      to   { clip-path: inset(100% 0 0 0); }
    }

    /* ==================== GLITCH BLOCKS（内容边缘随机花屏） ==================== */
    .glitch-block {
      position: absolute; pointer-events: none; z-index: 20;
      background: var(--cyber-red-500);
      opacity: 0;
      animation: glitch-block-life 0.34s steps(5) forwards;
    }
    .glitch-block::before, .glitch-block::after {
      content: ""; position: absolute; inset: 0; mix-blend-mode: screen;
    }
    .glitch-block::before { background: var(--cyber-magenta-500); transform: translateX(-2px); opacity: 0.85; }
    .glitch-block::after  { background: var(--cyber-cyan-400); transform: translateX(2px); opacity: 0.85; }
    @keyframes glitch-block-life {
      0%   { opacity: 0; transform: scaleX(0.15); }
      18%  { opacity: 0.95; transform: scaleX(1); }
      75%  { opacity: 0.75; transform: translateY(-1px) scaleX(1); }
      100% { opacity: 0; transform: translateY(2px) scaleX(0.85); }
    }

    /* ==================== CURSOR GLITCH（光标附近闪动花屏故障块） ==================== */
    .cursor-glitch {
      position: fixed; left: 0; top: 0;
      width: 56px; height: 56px;
      transform: translate(-200px, -200px);
      pointer-events: none;
      z-index: 3;
      opacity: 0;
      transition: opacity 0.12s linear;
      mix-blend-mode: screen;
      will-change: transform, opacity;
    }
    .cursor-glitch.is-active { opacity: 1; }
    /* 开屏阶段不显示，避免叠加在引导层上 */
    html.js-boot:not(.boot-done) .cursor-glitch { opacity: 0; }
    .cursor-glitch::before,
    .cursor-glitch::after {
      content: ""; position: absolute; inset: 0;
    }
    .cursor-glitch::before {
      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 56 56' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
      background-size: 56px 56px;
      animation: cursor-glitch-snow 0.11s steps(3) infinite;
    }
    .cursor-glitch::after {
      background-image: repeating-conic-gradient(
        var(--cyber-red-500) 0% 25%,
        var(--cyber-cyan-400) 0% 50%,
        var(--cyber-magenta-500) 0% 75%,
        var(--cyber-green-500) 0% 100%
      );
      background-size: 14px 14px;
      opacity: 0.6;
      animation: cursor-glitch-mosaic 0.09s steps(4) infinite;
    }
    @keyframes cursor-glitch-snow {
      0%   { background-position: 0 0; }
      25%  { background-position: -18px 10px; }
      50%  { background-position: 10px -14px; }
      75%  { background-position: -12px -10px; }
      100% { background-position: 16px 12px; }
    }
    @keyframes cursor-glitch-mosaic {
      0%   { background-position: 0 0; }
      25%  { background-position: -7px 7px; }
      50%  { background-position: 9px -9px; }
      75%  { background-position: -11px -8px; }
      100% { background-position: 12px 10px; }
    }