/* roulang page: index */
:root {
            --bg-base: #0b0f17;
            --bg-surface: #111827;
            --bg-card: #1e293b;
            --border-line: #334155;
            --primary-cyan: #06b6d4;
            --amber-highlight: #f59e0b;
            --emerald-pulse: #10b981;
        }
        body {
            background-color: var(--bg-base);
            color: #cbd5e1;
            font-family: 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
            -webkit-font-smoothing: antialiased;
        }
        /* 工控网格底纹 */
        .grid-blueprint {
            background-size: 32px 32px;
            background-image: 
                linear-gradient(to right, rgba(51, 65, 85, 0.18) 1px, transparent 1px),
                linear-gradient(to bottom, rgba(51, 65, 85, 0.18) 1px, transparent 1px);
        }
        /* 精密 1px 细线边框与微弱内发光 */
        .tech-border {
            border: 1px solid var(--border-line);
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
        }
        .tech-border-highlight:hover {
            border-color: var(--primary-cyan);
            box-shadow: 0 0 15px rgba(6, 182, 212, 0.15), inset 0 1px 0 rgba(6, 182, 212, 0.2);
        }
        /* 脉冲呼吸点动画 */
        @keyframes pulseDot {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.4; transform: scale(0.85); }
        }
        .pulse-active {
            animation: pulseDot 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
        }
        /* 导航 active 指示条与微型色点 */
        .nav-link-active {
            color: #f8fafc !important;
            position: relative;
        }
        .nav-link-active::after {
            content: '';
            position: absolute;
            bottom: -16px;
            left: 50%;
            transform: translateX(-50%);
            width: 18px;
            height: 2px;
            background-color: var(--primary-cyan);
            box-shadow: 0 0 6px var(--primary-cyan);
        }
        /* 伪终端日志滚动栏自定义 */
        .terminal-scroll::-webkit-scrollbar {
            width: 4px;
        }
        .terminal-scroll::-webkit-scrollbar-thumb {
            background: #334155;
            border-radius: 2px;
        }

/* roulang page: category1 */
:root {
      --bg-base: #0b0f17;
      --bg-surface: #111827;
      --bg-card: #1e293b;
      --border-line: #334155;
      --primary-cyan: #06b6d4;
      --amber-highlight: #f59e0b;
      --emerald-pulse: #10b981;
    }
    body {
      background-color: var(--bg-base);
      color: #cbd5e1;
      font-family: 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
      -webkit-font-smoothing: antialiased;
    }
    /* 工控网格底纹 */
    .grid-blueprint {
      background-size: 32px 32px;
      background-image: 
        linear-gradient(to right, rgba(51, 65, 85, 0.18) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(51, 65, 85, 0.18) 1px, transparent 1px);
    }
    /* 精密 1px 细线边框与微弱内发光 */
    .tech-border {
      border: 1px solid var(--border-line);
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
    }
    .tech-border-highlight:hover {
      border-color: var(--primary-cyan);
      box-shadow: 0 0 15px rgba(6, 182, 212, 0.15), inset 0 1px 0 rgba(6, 182, 212, 0.2);
    }
    /* 导航 active 指示条与微型色点 */
    .nav-link-active {
      color: #f8fafc !important;
      position: relative;
    }
    .nav-link-active::after {
      content: '';
      position: absolute;
      bottom: -16px;
      left: 50%;
      transform: translateX(-50%);
      width: 18px;
      height: 2px;
      background-color: var(--primary-cyan);
      box-shadow: 0 0 6px var(--primary-cyan);
    }
    /* 呼吸脉冲指示点 */
    .pulse-active {
      box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
      animation: pulse-ring 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
    }
    @keyframes pulse-ring {
      0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
      70% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }
      100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
    }
