* { box-sizing: border-box; }
    body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 14px; background: transparent; min-height: 100vh; }
    ::-webkit-scrollbar { width: 6px; height: 6px; }
    ::-webkit-scrollbar-track { background: transparent; }
    ::-webkit-scrollbar-thumb { background: #888; border-radius: 3px; }

    /* Driver.js 样式覆盖 */
    .driver-popover { border-radius: 16px !important; padding: 20px !important; box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25) !important; }
    .driver-popover-title { font-size: 16px !important; font-weight: 600 !important; }
    .driver-popover-description { font-size: 14px !important; color: #555 !important; line-height: 1.6 !important; }
    .driver-popover-footer button { border-radius: 10px !important; padding: 8px 20px !important; font-size: 13px !important; }
    .driver-popover-prev-btn { background: #f3f4f6 !important; color: #374151 !important; }
    .driver-popover-next-btn, .driver-popover-done-btn { background: #3b82f6 !important; color: #fff !important; }
    .driver-popover-close-btn { font-size: 20px !important; }
    .driver-popover-progress-text { font-size: 12px !important; color: #9ca3af !important; }

    /* 页面切换动画 */
    .page-content { animation: fadeIn 0.2s ease; }
    @keyframes fadeIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }

    /* 脉冲动画 */
    @keyframes pulse-ring { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(2); opacity: 0; } }

    /* 鼠标点击动画 */
    #fake-cursor { position: fixed; z-index: 99999; pointer-events: none; transition: all 0.6s cubic-bezier(0.22, 1, 0.36, 1); opacity: 0; }
    #fake-cursor svg { width: 24px; height: 24px; filter: drop-shadow(1px 2px 3px rgba(0,0,0,0.3)); }
    #fake-cursor.visible { opacity: 1; }
    .click-ripple {
      position: fixed; z-index: 99998; pointer-events: none;
      width: 30px; height: 30px; border-radius: 50%;
      border: 2px solid #3b82f6; background: rgba(59, 130, 246, 0.15);
      animation: clickRipple 0.6s ease-out forwards;
    }
    @keyframes clickRipple {
      0% { transform: scale(0.3); opacity: 1; }
      100% { transform: scale(2); opacity: 0; }
    }

    /* Toast 通知 */
    .toast {
      padding: 12px 20px; border-radius: 12px; font-size: 14px; font-weight: 500; pointer-events: auto;
      box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
      animation: toastIn 0.3s ease, toastOut 0.3s ease 2.5s forwards;
      display: flex; align-items: center; gap: 8px;
    }
    .toast-success { background: #ecfdf5; color: #059669; border: 1px solid #a7f3d0; }
    .toast-error { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }
    .toast-info { background: #eff6ff; color: #2563eb; border: 1px solid #bfdbfe; }
    @keyframes toastIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
    @keyframes toastOut { from { opacity: 1; } to { opacity: 0; } }

    /* 弹窗动画 */
    .modal-overlay { animation: modalBgIn 0.2s ease; }
    .modal-content { animation: modalIn 0.25s ease; }
    @keyframes modalBgIn { from { opacity: 0; } to { opacity: 1; } }
    @keyframes modalIn { from { opacity: 0; transform: scale(0.95) translateY(10px); } to { opacity: 1; transform: scale(1) translateY(0); } }

    /* 按钮点击效果 */
    button:active:not(:disabled) { transform: scale(0.97); }
    button { transition: all 0.15s ease; }

    /* 加载旋转 */
    @keyframes spin { to { transform: rotate(360deg); } }
    .animate-spin { animation: spin 1s linear infinite; }

    /* 配置行出现动画 */
    .config-line { opacity: 0; transform: translateX(-8px); transition: all 0.4s ease; }
    .config-line.show { opacity: 1; transform: translateX(0); }
    .config-check { opacity: 0; transition: opacity 0.3s ease 0.2s; }
    .config-line.show .config-check { opacity: 1; }
    /* 卡片变化高亮 */
    .cc-highlight { animation: ccFlash 0.6s ease; }
    @keyframes ccFlash { 0%,100% { box-shadow: none; } 50% { box-shadow: 0 0 0 3px rgba(139,92,246,0.3); } }
