:root{font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:#172033;background:#eef2f7}*{box-sizing:border-box}body{margin:0;min-height:100vh;display:grid;place-items:center;padding:24px}.app{width:min(980px,100%)}.card{background:#fff;border-radius:20px;padding:clamp(24px,5vw,48px);box-shadow:0 18px 50px rgba(31,42,68,.12)}.page{display:none}.page.active{display:block}.badge{display:inline-block;padding:6px 10px;border-radius:999px;background:#edf2ff;color:#364fc7;font-size:13px;font-weight:700}h1{font-size:clamp(30px,5vw,46px);margin:14px 0}h2{margin-top:30px}.notice{background:#f6f8fb;border-left:4px solid #4c6ef5;padding:14px 16px;border-radius:10px;margin:20px 0;line-height:1.6}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.field{display:block;font-weight:700;margin:12px 0;min-width:0}.field input,.field select,.field textarea{display:block;margin-top:10px}.field input,.field select,.field textarea{width:100%;font:inherit;padding:13px 14px;border:1px solid #ccd3df;border-radius:10px;background:#fff;color:#172033}.field textarea{resize:vertical}.required{color:#c92a2a}.span-2{grid-column:span 2}.section-note,.muted,.footnote{color:#687386}.section-note{margin-top:-8px}.primary,.secondary,.audio-btn,.option{font:inherit;border:0;border-radius:12px;cursor:pointer}.primary{width:100%;padding:14px 20px;background:#3154d5;color:#fff;font-weight:800;margin-top:18px}.primary:disabled{opacity:.45;cursor:not-allowed}.secondary{padding:10px 14px;background:#eef2ff;color:#2945a8;font-weight:700}.audio-btn{display:block;margin:24px auto;padding:16px 26px;background:#172033;color:#fff;font-weight:800}.options{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.option{padding:18px 8px;background:#f3f5f8;border:2px solid transparent;font-size:18px;font-weight:800}.option:hover{background:#e9edf4}.option.selected{border-color:#3154d5;background:#edf2ff;color:#2945a8}.progress-row,.result-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.progress{height:9px;background:#e8ecf2;border-radius:99px;overflow:hidden;margin-top:10px}.progress div{height:100%;width:0;background:#3154d5;transition:width .25s}.actions{display:flex;gap:8px;flex-wrap:wrap}.score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:26px 0}.metric{background:#f6f8fb;padding:18px;border-radius:14px}.metric span{display:block;color:#687386;font-size:13px}.metric strong{display:block;margin-top:8px;font-size:24px}.profile-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;background:#f8fafc;border:1px solid #e5e9ef;border-radius:14px;padding:18px}.profile-item{line-height:1.55;border-bottom:1px dashed #dce2ea;padding:7px 0}.profile-item b{color:#687386;font-size:13px;display:block}.table-wrap{overflow:auto;max-height:520px;border:1px solid #e5e9ef;border-radius:12px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e5e9ef;white-space:nowrap}thead{position:sticky;top:0;background:#fff}.correct{color:#198754;font-weight:800}.wrong{color:#c92a2a;font-weight:800}@media(max-width:680px){.form-grid,.profile-summary{grid-template-columns:1fr}.span-2{grid-column:auto}.options{grid-template-columns:repeat(3,1fr)}.score-grid{grid-template-columns:1fr}.result-head{align-items:flex-start;flex-direction:column}}
@media print{body{display:block;background:#fff;padding:0}.app{width:100%}.card{box-shadow:none;border-radius:0;padding:18px}.no-print{display:none!important}.table-wrap{max-height:none;overflow:visible;border:0}thead{position:static}.page{display:none!important}#resultPage.active{display:block!important}.profile-summary{break-inside:avoid}.score-grid{break-inside:avoid}th,td{font-size:10pt;padding:6px}h1{font-size:24pt}}

/* 基本信息区保持同一基线与等高输入框 */
#profileForm .form-grid:first-of-type{align-items:end}
#profileForm .form-grid:first-of-type .field{margin:10px 0}
#profileForm .form-grid:first-of-type input{min-height:52px}

/* 2.3 */
#testPage{position:relative;overflow:hidden;transition:background-color .22s ease,box-shadow .22s ease,transform .22s ease}
#testPage.feedback-correct{background:#eefaf2;box-shadow:0 18px 50px rgba(25,135,84,.18)}
#testPage.feedback-wrong{background:#fff2f2;box-shadow:0 18px 50px rgba(201,42,42,.16)}
.feedback-message{min-height:34px;text-align:center;font-weight:800;font-size:18px;margin:2px 0 12px;opacity:0;transform:translateY(4px);transition:opacity .16s ease,transform .16s ease}
.feedback-message.show{opacity:1;transform:translateY(0)}
.feedback-message.correct-message{color:#198754}
.feedback-message.wrong-message{color:#c92a2a}
.option.answer-correct{border-color:#198754;background:#e8f7ee;color:#12683f}
.option.answer-wrong{border-color:#c92a2a;background:#ffe7e7;color:#a61e1e}
.option.reveal-correct{border-color:#71c994;background:#f0fbf4;color:#12683f}
.option:disabled{cursor:default;opacity:.78}
.option.answer-correct:disabled,.option.answer-wrong:disabled,.option.reveal-correct:disabled{opacity:1}
.question-enter{animation:questionEnter .28s ease both}
.shake-soft{animation:shakeSoft .34s ease both}
@keyframes questionEnter{from{opacity:.35;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}
@keyframes shakeSoft{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
@media (prefers-reduced-motion:reduce){#testPage,.feedback-message{transition:none}.question-enter,.shake-soft{animation:none}}
.top-actions{display:flex;justify-content:flex-end}.admin-link{font-size:14px;font-weight:800;color:#526075;text-decoration:none;padding:8px 12px;border-radius:9px;background:#f1f3f5}.admin-link:hover{background:#e9edf4;color:#2945a8}.save-status{font-weight:700;padding:10px 13px;border-radius:10px}.save-status.pending{background:#fff8db;color:#8f6500}.save-status.saved{background:#e8f7ee;color:#12683f}.save-status.failed{background:#ffe7e7;color:#a61e1e}
.consent-row{display:flex;align-items:flex-start;gap:10px;margin:20px 0;padding:14px 16px;border:1px solid #dce2ea;border-radius:10px;background:#fbfcfe;line-height:1.6}.consent-row input{width:18px;height:18px;margin-top:3px;flex:none}.consent-row a{margin:0 4px;color:#3154d5;font-weight:700}.policy-list{line-height:1.8;padding-left:22px}.policy-actions{margin-top:28px}.policy-actions a{text-decoration:none;display:inline-block}
