
        /* ==========================================================
           移动端点击反馈统一处理
           -webkit-tap-highlight-color 可继承，在 html 上声明一次即可覆盖
           页面内全部后代元素，无需逐个列举可点击元素，也不改动任何元素
           自身的背景色。仅关闭触摸时浏览器额外叠加的高亮蒙版，不影响
           ::selection、:disabled 与 :focus-visible，桌面端行为不变。
           ========================================================== */
        html {
            -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
            -webkit-tap-highlight-color: transparent;
        }


        /* 页面加载动画 */
        .page-loading-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255, 255, 255, 0.95);
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 9999;
            transition: opacity 0.3s ease, visibility 0.3s ease;
        }

        .page-loading-overlay.hidden {
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
        }

        .page-loading-spinner {
            text-align: center;
        }

        .page-loading-spinner .circular {
            width: 50px;
            height: 50px;
            animation: loading-rotate 2s linear infinite;
        }

        .page-loading-spinner .path {
            animation: loading-dash 1.5s ease-in-out infinite;
            stroke-dasharray: 90, 150;
            stroke-dashoffset: 0;
            stroke-width: 2;
            stroke: #409eff;
            stroke-linecap: round;
        }

        .page-loading-text {
            color: #409eff;
            font-size: 14px;
            font-weight: 500;
            margin-top: 12px;
        }

        @keyframes loading-rotate {
            100% { transform: rotate(360deg); }
        }

        @keyframes loading-dash {
            0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; }
            50% { stroke-dasharray: 90, 150; stroke-dashoffset: -40px; }
            100% { stroke-dasharray: 90, 150; stroke-dashoffset: -120px; }
        }

        /* 页面跳转遮罩 */
        .page-transition-overlay {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(255, 255, 255, 0.9);
            display: none;
            align-items: center;
            justify-content: center;
            z-index: 9998;
        }

        .page-transition-overlay.active {
            display: flex;
        }
