        /* 不使用 body, *, html 选择器，全部基于类名/id 控制 */
        .app-root {
            min-height: 100vh;
            background: #f5f9fe;
            display: flex;
            justify-content: center;
            align-items: center;
            font-family: 'Segoe UI', 'Poppins', 'Inter', system-ui, sans-serif;
            padding: 24px;
            margin: 0;
        }

        /* 主卡片 */
        .test-card {
            max-width: 1400px;
            width: 100%;
            background: #ffffff;
            border-radius: 12px;
            box-shadow: 0 12px 30px rgba(0, 0, 0, 0.08);
            overflow: hidden;
            border: 1px solid #e6edf2;
        }

        /* 头部深蓝色辅助 - 居中 */
        .card-header {
            background: #1a3e4c;
            padding: 18px 32px;
            border-bottom: 2px solid #ffcf8a;
            text-align: center;
        }
        .card-header h1 {
            margin: 0;
            font-size: 1.8rem;
            font-weight: 700;
            color: white;
            letter-spacing: -0.3px;
        }
        .card-header p {
            margin: 5px 0 0;
            color: #cde7f0;
            font-size: 0.85rem;
        }

        /* 主体内容 */
        .card-body {
            padding: 28px 32px 36px;
        }

        /* 等级栏 */
        .level-section {
            margin-bottom: 24px;
            background: #fafdff;
            border-radius: 20px;
            padding: 12px 16px;
            border: 1px solid #e2ecf2;
        }
        .level-title {
            font-weight: 600;
            color: #1a3e4c;
            margin-bottom: 12px;
            font-size: 0.9rem;
            display: flex;
            align-items: center;
            gap: 12px;
            flex-wrap: wrap;
        }
        .level-badge {
            background: #eef3f8;
            padding: 4px 12px;
            border-radius: 40px;
            font-size: 0.8rem;
        }
        .level-group {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }
        .level-btn {
            background: #ffffff;
            border: 1px solid #cde0e8;
            color: #1f4b5c;
            font-weight: 600;
            font-size: 0.9rem;
            width: 52px;
            padding: 7px 0;
            border-radius: 40px;
            cursor: pointer;
            transition: all 0.2s;
            text-align: center;
            position: relative;
        }
        .level-btn.active {
            background: #1a3e4c;
            border-color: #1a3e4c;
            color: white;
            box-shadow: 0 2px 6px rgba(26,62,76,0.2);
        }
        /* 已通关的等级按钮样式 */
        .level-btn.completed {
            background: #e8f5e9;
            border-color: #4caf50;
            color: #2e7d32;
        }
        .level-btn.completed::after {
            content: "✓";
            margin-left: 4px;
            font-weight: bold;
            font-size: 0.8rem;
        }
        .level-btn:hover:not(.active) {
            background: #eef3fc;
            border-color: #8eb0c0;
        }

        /* 按钮组 */
        .action-group {
            display: flex;
            gap: 16px;
            margin-bottom: 28px;
        }
        .start-btn, .report-btn {
            flex: 1;
            border-radius: 48px;
            padding: 14px;
            font-weight: bold;
            font-size: 1rem;
            cursor: pointer;
            transition: 0.2s;
            font-family: inherit;
        }
        .start-btn {
            background: #1a3e4c;
            border: none;
            color: white;
        }
        .report-btn {
            background: white;
            border: 2px solid #1a3e4c;
            color: #1a3e4c;
        }
        .start-btn:active, .report-btn:active {
            transform: scale(0.97);
        }

        /* 闪现区域 */
        .flash-area {
            background: #fbfeff;
            border-radius: 20px;
            padding: 38px 20px;
            text-align: center;
            margin-bottom: 28px;
            border: 1px solid #e2edf2;
            box-shadow: inset 0 1px 2px #00000005, 0 2px 8px rgba(0,0,0,0.02);
            min-height: 170px;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        #dynamicNumber {
            font-size: 5rem;
            font-weight: 800;
            font-family: 'Courier New', 'Fira Mono', monospace;
            letter-spacing: 3px;
            color: #1a3e4c;
            transition: 0.05s linear;
        }
        .flash-placeholder {
            color: #a5c0ce;
            font-size: 1.4rem;
            font-weight: 500;
        }

        /* 统计栏 */
        .stats-row {
            background: #f9fdfe;
            border-radius: 18px;
            padding: 14px 20px;
            margin-bottom: 24px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            flex-wrap: wrap;
            gap: 12px;
            border: 1px solid #e2edf2;
        }
        .stats-group {
            display: flex;
            gap: 12px;
            flex-wrap: wrap;
            align-items: center;
        }
        .stat-card {
            background: #eef3f8;
            border-radius: 60px;
            padding: 4px 18px;
            display: inline-flex;
            align-items: baseline;
            gap: 6px;
        }
        .stat-label {
            color: #2c5a6e;
            font-weight: 500;
            font-size: 0.85rem;
        }
        .stat-value {
            font-size: 1.5rem;
            font-weight: 800;
            color: #1a3e4c;
            line-height: 1;
        }
        .target-info {
            background: #eef3f8;
            padding: 5px 14px;
            border-radius: 32px;
            color: #1f5e74;
            font-weight: 500;
            white-space: nowrap;
        }
        .target-info span {
            font-weight: 800;
            color: #e67e22;
            font-size: 1.2rem;
        }
        .status-badge {
            background: #eef3f8;
            padding: 6px 16px;
            border-radius: 32px;
            color: #1f5e74;
            font-size: 0.85rem;
            white-space: nowrap;
        }

        /* 输入+数字键盘 */
        .input-panel {
            display: flex;
            gap: 14px;
            margin-bottom: 20px;
            flex-wrap: wrap;
        }
        .answer-field {
            flex: 3;
            background: white;
            border: 2px solid #d4e2ea;
            border-radius: 48px;
            padding: 14px 20px;
            font-size: 1.4rem;
            font-weight: 600;
            color: #1a3e4c;
            text-align: center;
            font-family: monospace;
            outline: none;
        }
        .answer-field:focus {
            border-color: #7c9eae;
            box-shadow: 0 0 0 3px rgba(26,62,76,0.1);
        }
        .verify-btn {
            flex: 1;
            background: #1a3e4c;
            border: none;
            border-radius: 48px;
            padding: 0 12px;
            font-weight: bold;
            font-size: 1.1rem;
            color: white;
            cursor: pointer;
            transition: 0.15s;
        }
        .verify-btn:active {
            transform: scale(0.97);
            background: #0f2e3a;
        }
        .verify-btn:disabled {
            background: #c0d4e0;
            cursor: not-allowed;
            transform: none;
        }

        /* 数字键盘 - 一行三列 */
        .numpad {
            background: #ffffff;
            border-radius: 24px;
            padding: 12px 16px;
            margin-bottom: 24px;
            border: 1px solid #e2edf2;
        }
        .numpad-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
        }
        .num-key {
            background: #fcfefe;
            border: 1px solid #d4e2ea;
            border-radius: 48px;
            padding: 12px 0;
            font-size: 1.4rem;
            font-weight: 600;
            color: #1a3e4c;
            cursor: pointer;
            text-align: center;
            transition: 0.05s linear;
        }
        .num-key:active {
            background: #eef2f6;
            transform: scale(0.96);
        }
        .num-key.special {
            background: #eef3fc;
            color: #1f6c82;
        }
        .num-key.del-key {
            background: #fef2ed;
            border-color: #eed9cf;
        }

        /* 报告面板 */
        .report-panel {
            background: #fafeff;
            border-radius: 20px;
            padding: 20px;
            margin-top: 20px;
            border: 1px solid #e2edf2;
        }
        .report-title {
            font-weight: 700;
            font-size: 1.1rem;
            color: #1a3e4c;
            border-left: 4px solid #1a3e4c;
            padding-left: 14px;
            margin-bottom: 18px;
        }
        .report-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 16px;
            justify-content: flex-start;
        }
        .level-stat {
            background: white;
            border-radius: 16px;
            padding: 12px 14px;
            min-width: 130px;
            flex: 1 0 auto;
            text-align: center;
            box-shadow: 0 1px 4px rgba(0,0,0,0.03);
            border: 1px solid #e3edf2;
        }
        .level-stat h4 {
            margin: 0 0 8px;
            font-size: 0.95rem;
            color: #1f5e74;
        }
        .level-stat p {
            margin: 4px 0;
            font-size: 0.75rem;
            color: #456f82;
        }
        .complete-badge {
            color: #2c7a4d;
            font-weight: bold;
        }
        .reset-data {
            margin-top: 16px;
            text-align: right;
        }
        .reset-btn {
            background: none;
            border: none;
            color: #8da2b0;
            font-size: 0.7rem;
            cursor: pointer;
            text-decoration: underline;
        }

        button:disabled {
            opacity: 0.6;
            cursor: not-allowed;
        }

        @keyframes countPulse {
            0% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.2); opacity: 0.9; text-shadow: 0 0 6px #1a3e4c; }
            100% { transform: scale(1); opacity: 1; }
        }
        .countdown-animation {
            animation: countPulse 0.4s ease;
        }

        /* 响应式适配 */
        @media (max-width: 1024px) {
            .app-root { padding: 16px; }
            .test-card { max-width: 100%; }
            .card-header h1 { font-size: 1.5rem; }
            .card-body { padding: 24px 20px 28px; }
            .level-btn { width: 46px; font-size: 0.85rem; padding: 6px 0; }
            .action-group { gap: 12px; margin-bottom: 24px; }
            .start-btn, .report-btn { padding: 12px; font-size: 0.95rem; }
            .flash-area { padding: 28px 16px; min-height: 150px; }
            #dynamicNumber { font-size: 4rem; }
            .flash-placeholder { font-size: 1.2rem; }
            .stats-row { padding: 12px 16px; }
            .stat-value { font-size: 1.3rem; }
            .stat-card { padding: 4px 14px; }
            .target-info span { font-size: 1rem; }
            .answer-field { font-size: 1.2rem; padding: 12px 16px; }
            .verify-btn { font-size: 1rem; }
            .numpad-grid { gap: 10px; }
            .num-key { padding: 10px 0; font-size: 1.2rem; }
        }

        @media (max-width: 768px) {
            .app-root { padding: 12px; align-items: flex-start; }
            .card-header { padding: 14px 20px; }
            .card-header h1 { font-size: 1.3rem; }
            .card-header p { font-size: 0.7rem; }
            .card-body { padding: 20px 16px 24px; }
            .level-section { padding: 10px 12px; margin-bottom: 20px; }
            .level-title { font-size: 0.85rem; }
            .level-btn { width: 42px; font-size: 0.8rem; padding: 5px 0; }
            .action-group { flex-direction: column; gap: 12px; margin-bottom: 20px; }
            .start-btn, .report-btn { width: 100%; padding: 12px; font-size: 0.9rem; }
            .flash-area { padding: 24px 12px; min-height: 130px; margin-bottom: 20px; }
            #dynamicNumber { font-size: 3rem; letter-spacing: 2px; }
            .stats-row { flex-direction: column; align-items: stretch; gap: 10px; padding: 12px; }
            .stats-group { justify-content: space-between; width: 100%; }
            .stat-card { flex: 1; justify-content: center; text-align: center; }
            .target-info, .status-badge { text-align: center; width: 100%; box-sizing: border-box; }
            .input-panel { flex-direction: column; gap: 12px; }
            .answer-field { width: 100%; font-size: 1.1rem; padding: 12px; }
            .verify-btn { width: 100%; padding: 12px; font-size: 1rem; }
            .numpad { padding: 8px 12px; margin-bottom: 20px; }
            .numpad-grid { gap: 8px; }
            .num-key { padding: 8px 0; font-size: 1rem; }
            .report-panel { padding: 16px; }
            .report-title { font-size: 1rem; }
            .report-grid { flex-direction: column; gap: 10px; }
            .level-stat { width: 100%; min-width: auto; padding: 10px; }
        }

        @media (max-width: 480px) {
            .app-root { padding: 8px; }
            .card-header { padding: 12px 16px; }
            .card-header h1 { font-size: 1.1rem; }
            .card-body { padding: 16px 12px 20px; }
            .level-btn { width: 38px; font-size: 0.75rem; padding: 4px 0; }
            .flash-area { padding: 20px 8px; }
            #dynamicNumber { font-size: 2.5rem; letter-spacing: 1px; }
            .stat-value { font-size: 1.1rem; }
            .answer-field { font-size: 1rem; padding: 10px; }
            .num-key { padding: 6px 0; font-size: 0.9rem; }
        }