:root{--ex-primary:#2563eb;--ex-primary-dark:#1d4ed8;--ex-danger:#dc2626;--ex-success:#16a34a;--ex-warning:#d97706;--ex-bg:#f1f5f9;--ex-card:#ffffff;--ex-border:#e2e8f0;--ex-text:#0f172a;--ex-muted:#64748b;--ex-radius:12px}*{box-sizing:border-box}body.ex-body{margin:0;background:var(--ex-bg);color:var(--ex-text);font-family:Segoe UI,Roboto,Arial,sans-serif;min-height:100vh}.ex-center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.ex-card{background:var(--ex-card);border-radius:var(--ex-radius);box-shadow:0 10px 30px #0f172a14;padding:32px}.ex-login-card{width:100%;max-width:380px}.ex-login-card h1{font-size:22px;margin:0 0 4px}.ex-login-card p{color:var(--ex-muted);margin:0 0 24px;font-size:14px}.ex-field{margin-bottom:16px}.ex-field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}.ex-field input{width:100%;padding:11px 14px;border:1px solid var(--ex-border);border-radius:8px;font-size:14px}.ex-field input:focus{outline:none;border-color:var(--ex-primary);box-shadow:0 0 0 3px #2563eb26}.ex-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:25px;padding:9px 18px;font-size:14px;font-weight:600;cursor:pointer;transition:.15s}.ex-btn-primary{background:var(--ex-primary);color:#fff;width:100%}.ex-btn-primary:hover{background:var(--ex-primary-dark)}.ex-btn-primary:disabled{opacity:.6;cursor:not-allowed}.ex-btn-outline{background:#fff;border:1px solid var(--ex-border);color:var(--ex-text)}.ex-btn-warning-hover:hover{background:#fffbeb;border-color:var(--ex-warning);color:#92400e}.ex-btn-danger-hover:hover{background:#fee2e2;border-color:var(--ex-danger);color:#991b1b}.ex-btn-success{background:var(--ex-success);color:#fff}.ex-btn-success:hover{background:#15803d}.ex-btn-success:disabled{opacity:.6;cursor:not-allowed}.ex-alert{padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}.ex-alert-danger{background:#fee2e2;color:#991b1b}.ex-alert-success{background:#dcfce7;color:#166534}.ex-alert-warning{background:#fef3c7;color:#92400e}.ex-wait-wrap{max-width:1100px;margin:0 auto;padding:15px}.ex-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.ex-topbar h2{margin:0;font-size:18px}.ex-grid{display:grid;grid-template-columns:320px 1fr;gap:15px}@media(max-width:860px){.ex-grid{grid-template-columns:1fr}}.ex-section-title{font-size:14px;font-weight:700;margin:0 0 14px;color:var(--ex-muted);text-transform:uppercase;letter-spacing:.04em}.ex-avatar-box{width:150px;height:150px;border-radius:50%;background:#e2e8f0;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:3px solid var(--ex-border)}.ex-avatar-box img,.ex-avatar-box video{width:100%;height:100%;object-fit:cover}.ex-info-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--ex-border);font-size:14px}.ex-info-row span:first-child{color:var(--ex-muted)}.ex-device-row{display:flex;align-items:center;justify-content:space-between;padding:14px;border:1px solid var(--ex-border);border-radius:10px;margin-bottom:12px}.ex-device-row-col{flex-direction:column;align-items:stretch}.ex-device-row-top{display:flex;align-items:center;justify-content:space-between}.ex-mic-panel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--ex-border)}.ex-mic-countdown{font-size:13px;font-weight:600;color:var(--ex-danger)}.ex-mic-panel audio{height:36px;flex:1 1 220px;min-width:200px;max-width:100%}@media(max-width:520px){.ex-mic-panel audio{flex-basis:100%}}.ex-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600}.ex-badge-ok{background:#dcfce7;color:#166534}.ex-badge-pending{background:#fef3c7;color:#92400e}.ex-start-box{margin-top:20px;text-align:center;padding:20px;border:1px dashed var(--ex-border);border-radius:10px}.ex-scroll-hint{display:flex;flex-direction:column;align-items:center;gap:4px;width:fit-content;margin:18px auto 0;padding:10px 22px;border:transparent;border-radius:16px;background:transparent;color:var(--ex-primary-dark);font-size:12.5px;font-weight:600;cursor:pointer;transition:.2s}.ex-scroll-hint:hover{background:linear-gradient(135deg,#eff6ff,#e0e7ff);box-shadow:0 4px 14px #2563eb2e;transform:translateY(-1px)}.ex-scroll-hint svg{animation:ex-bounce 1.6s ease-in-out infinite}@keyframes ex-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.ex-skill-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}@media(max-width:720px){.ex-skill-list{grid-template-columns:1fr}}.ex-wait-wrap .ex-skill-list{counter-reset:sk}.ex-wait-wrap .ex-skill-list .ex-skill-head{counter-increment:sk}.ex-wait-wrap .ex-skill-list .ex-skill-head:before{content:counter(sk);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:22px;height:22px;margin-right:8px;border-radius:50%;background:#dbe5fb;color:#2f4fc4;font-size:12px;font-weight:700}.ex-skill-item{display:flex;align-items:stretch;flex-wrap:wrap;background:#f8fafc;border-radius:8px;overflow:hidden}.ex-skill-head{flex-shrink:0;display:flex;align-items:center;gap:4px;padding:10px 16px;border-right:1px solid var(--ex-border)}.ex-skill-name{font-size:14px;font-weight:700;white-space:nowrap}.ex-skill-time{font-weight:400;color:var(--ex-muted);font-size:12px;white-space:nowrap}.ex-skill-children{display:flex;flex-wrap:wrap;align-items:center;flex:1}.ex-skill-child{padding:10px 14px;font-size:13px;border-right:1px solid var(--ex-border)}.ex-skill-child:last-child{border-right:none}.ex-note-list p{margin:0 0 10px;font-size:14px;line-height:1.6;color:#334155}.ex-note-list p:last-child{margin-bottom:0}.ex-exam-body{margin:0;padding:0;background:#f8fafc;height:100vh;overflow:hidden;-webkit-user-select:none;user-select:none;font-family:Segoe UI,Roboto,Arial,sans-serif}.ex-exam-shell{display:flex;flex-direction:column;height:100vh}.ex-exam-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:8px 20px;background:#fff;border-bottom:1px solid var(--ex-border);flex-shrink:0}.ex-header-left{min-width:0}.ex-exam-header .ex-candidate-info{font-weight:700;font-size:14px;line-height:1.4}.ex-exam-header .ex-candidate-info small{font-weight:500;font-size:12px;color:var(--ex-muted)}.ex-header-center{display:flex;align-items:center;gap:24px}.ex-header-progress{width:100%;min-width:340px;max-width:400px}.ex-header-right{display:flex;align-items:center;gap:16px;justify-self:end}.ex-header-progress-row{display:flex;align-items:baseline;justify-content:space-between;font-size:15px;font-weight:500;color:#52525b;margin-bottom:6px}.ex-header-progress-row #exProgressPercent{color:#52525b;font-weight:500}.ex-header-progress-row .ex-progress-num{font-size:19px;font-weight:600}.ex-header-progress-row #exProgressLabel.ex-progress-done,.ex-header-progress-row #exProgressPercent.ex-progress-done{color:#6c47ff}.ex-header-progress-bar{width:100%;height:6px;border-radius:999px;background:var(--ex-border);overflow:hidden}.ex-header-progress-fill{display:block;height:100%;background:#6c47ff;border-radius:999px;transition:width .25s ease}.ex-record-countdown-wrap{display:flex;justify-content:center;padding:10px 20px 0;flex-shrink:0}.ex-record-countdown-banner{display:inline-flex;align-items:center;gap:10px;padding:10px 24px;background:#6c47ff14;border:1.5px solid #6c47ff;border-radius:999px;color:#6c47ff;font-size:15px;font-weight:700}.ex-record-countdown-banner i{font-size:20px}.ex-record-countdown-banner b{font-size:19px}.ex-timer{display:inline-flex;align-items:center;gap:7px;font-size:20px;font-weight:700;padding:5px 18px;border-radius:999px;background:#6c47ff10;color:#6c47ff;border:1px solid #6c47ff;flex-shrink:0}.ex-timer i{font-size:17px}.ex-timer.ex-timer-danger{background:#fee2e2;color:var(--ex-danger);border-color:#fecaca}.ex-header-finish-btn{width:auto;flex-shrink:0;background:#6c47ff}.ex-header-finish-btn:hover{background:#5b39e0}.ex-retake-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;background:#fef3c7;color:#92400e;font-weight:600;font-size:13px;white-space:nowrap}.ex-time-added-popup,.ex-save-notice{font-size:15px;font-weight:600;padding:6px 14px;border-radius:8px;background:#dcfce7;color:#166534;flex-shrink:0;animation:ex-time-added-in .2s ease-out}@keyframes ex-time-added-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.ex-exam-main{flex:1;display:flex;overflow:hidden}.ex-question-pane{flex:1;overflow-y:auto;padding:28px 32px 40px}@media(max-width:900px){.ex-question-pane{padding:20px 16px 28px}}@media(max-width:520px){.ex-question-pane{padding:14px 10px 20px}}.ex-content-wrap{margin:0 auto;background:var(--ex-card);border-radius:var(--ex-radius);box-shadow:0 1px 3px #0f172a0f;padding:20px 32px}.ex-content-wrap.ex-single-col{max-width:75%}.ex-content-wrap.ex-split-col{max-width:none}@media(max-width:900px){.ex-content-wrap{max-width:100%;padding:20px}}.ex-quiz-group{margin-bottom:32px;padding-bottom:0;border-bottom:1px dashed var(--ex-border)}.ex-quiz-group:last-child{border-bottom:none;margin-bottom:0}.ex-question-block{margin-bottom:20px}.ex-question-block:last-child{margin-bottom:0}.ex-question-locked{opacity:.1;pointer-events:none}.ex-locked-badge{display:flex;align-items:center;gap:6px;width:fit-content;margin-bottom:8px;padding:4px 12px;border-radius:999px;background:#f1f5f9;color:var(--ex-muted);font-size:13px;font-weight:600}.ex-question-group{margin-bottom:6px}.ex-question-desc{margin-bottom:6px;color:var(--ex-muted)}.ex-question-content{margin-bottom:10px}.ex-question-numbered{display:flex;align-items:baseline;gap:6px}.ex-question-index{flex-shrink:0;font-weight:600;white-space:nowrap}.ex-question-index-content{flex:1;min-width:0}.ex-question-highlight{border-radius:5px;animation:ex-question-flash 1.5s ease-out}@keyframes ex-question-flash{0%{background:#fef9c3;box-shadow:0 0 0 4px #fef08a}to{background:transparent;box-shadow:none}}.ex-question-content,.ex-question-content *:not(mjx-container):not(mjx-container *),.ex-answer-text,.ex-answer-text *:not(mjx-container):not(mjx-container *),.ex-question-group,.ex-question-group *:not(mjx-container):not(mjx-container *),.ex-question-desc,.ex-question-desc *:not(mjx-container):not(mjx-container *),.ex-question-split-left,.ex-question-split-left *:not(mjx-container):not(mjx-container *){font-family:Segoe UI,Roboto,Arial,sans-serif!important}.ex-exam-body p{margin:5px 0!important}.ex-answer-option{display:flex;align-items:center;gap:8px;margin-bottom:5px;position:relative;margin-left:10px}.ex-answer-option input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.ex-answer-letter{flex-shrink:0;box-sizing:border-box;width:35px;height:35px;border-radius:50%;outline:1.5px solid var(--ex-border);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:14px;color:var(--ex-text);transition:.15s}.ex-answer-text{display:inline-block;box-sizing:border-box;min-height:34px;min-width:72px;padding:6px 22px;outline:1.5px solid var(--ex-border);border-radius:18px;overflow-wrap:anywhere;color:var(--ex-text);transition:.15s;cursor:pointer}.ex-answer-text:hover{outline-color:#6c47ff}.ex-answer-option.ex-selected .ex-answer-letter,.ex-answer-option.ex-selected .ex-answer-text{outline-color:#6c47ff;color:#6c47ff;background:#6c47ff10}.ex-fill-input{width:100%;padding:12px;border-radius:8px;font-size:15px}.ex-fill-textarea{resize:vertical;font-family:inherit;line-height:1.5;margin-top:30px}.ex-question-split{display:grid;grid-template-columns:1fr 1fr;gap:28px}.ex-question-split-left{border-right:1px solid var(--ex-border);padding-right:28px;max-height:calc(100vh - 190px);overflow-y:auto;position:sticky;top:0}.ex-question-split-right{min-width:0}@media(max-width:860px){.ex-question-split{grid-template-columns:1fr}.ex-question-split-left{position:static;border-right:none;border-bottom:1px solid var(--ex-border);padding-right:0;padding-bottom:20px;max-height:none}}.ex-word-count{margin-top:8px;width:fit-content;margin-left:auto;padding:5px 14px;border-radius:999px;background:#f1f5f9;font-size:14px;font-weight:700;color:var(--ex-text)}.ex-audio-player{display:flex;align-items:center;gap:10px;padding:5px 10px;border:1px solid var(--ex-border);border-radius:37px;background:#f8fafc;margin-bottom:20px}.ex-audio-play-btn{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:none;background:var(--ex-primary);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px}.ex-audio-play-btn:disabled{opacity:.5;cursor:not-allowed;background:var(--ex-muted)}.ex-audio-time-current,.ex-audio-time-duration{font-size:18px;color:var(--ex-muted);flex-shrink:0;min-width:38px}.ex-audio-progress-bar{flex:1;height:8px;border-radius:3px;background:var(--ex-border);overflow:hidden}.ex-audio-progress-fill{display:block;height:100%;background:var(--ex-primary);width:0%}.ex-audio-player.ex-audio-locked{opacity:.75}.ex-audio-player-locked{color:var(--ex-muted);font-size:14px;font-weight:500;justify-content:center}.ex-audio-error{padding:12px;border:1px dashed var(--ex-danger);border-radius:8px;color:var(--ex-danger);font-size:13px;margin-bottom:14px}.ex-speaking-recorder{padding:16px;border:1px solid var(--ex-border);border-radius:8px;background:#f8fafc;margin-bottom:20px}.ex-speaking-recorder.ex-speaking-done{border-style:dashed;background:#f0fdf4;color:var(--ex-success)}.ex-speaking-recorder.ex-speaking-locked{border-style:dashed;background:#f8fafc;color:var(--ex-muted)}.ex-speaking-locked .ex-speaking-status{color:var(--ex-muted);margin-bottom:0}.ex-speaking-status{font-size:16px;color:var(--ex-text);margin-bottom:10px;font-weight:500}.ex-speaking-done .ex-speaking-status{color:var(--ex-success);margin-bottom:0}.ex-speaking-progress{display:flex;align-items:center;gap:8px;font-size:20px;font-weight:600;color:var(--ex-primary);margin-bottom:10px}.ex-speaking-phase{font-size:14px;font-weight:400;color:var(--ex-muted)}.ex-speaking-replay-wrap{margin-bottom:10px}.ex-speaking-replay-player{display:flex;align-items:center;gap:10px;padding:8px 14px;border:1px solid var(--ex-border);border-radius:14px;background:#f8fafc}.ex-speaking-replay-playbtn{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:none;background:#6c47ff;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:18px}.ex-speaking-replay-wave{flex:1;min-width:0}.ex-speaking-replay-time{flex-shrink:0;font-size:13px;color:var(--ex-muted);min-width:42px;text-align:right}.ex-speaking-wave{display:block;width:100%;height:60px;border-radius:6px;background:#000;margin-bottom:10px}.ex-exam-footer{display:flex;align-items:center;gap:14px;padding:8px 16px;background:#fff;border-top:1px solid var(--ex-border);flex-shrink:0}.ex-footer-count{flex-shrink:0;display:flex;align-items:center}.ex-qlist-toggle{border:1px solid #6c47ff40;background:#6c47ff1f;color:#6c47ff;cursor:pointer;font-size:26px;line-height:1;padding:8px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 1px 2px #0f172a14;transition:.15s}.ex-qlist-toggle:hover{background:#6c47ff33;color:#6c47ff}.ex-question-list-bar{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;background:#fff;border-top:1px solid var(--ex-border);flex-shrink:0;max-height:160px;overflow-y:auto}.ex-qlist-item{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;border:none;cursor:pointer;font-weight:600;font-size:13px;background:#fee2e2;color:var(--ex-danger);transition:.15s}.ex-qlist-item:hover{opacity:.8}.ex-qlist-item.ex-answered{background:#eff6ff;color:var(--ex-primary-dark)}.ex-qlist-item.ex-qlist-locked{background:#f1f5f9;color:var(--ex-muted);cursor:default}.ex-qlist-item.ex-qlist-locked:hover{opacity:1}.ex-qlist-time{font-weight:400;font-size:11px;opacity:.8}.ex-footer-skills{flex:1;min-width:0;display:flex;justify-content:center;gap:10px;overflow-x:auto}.ex-exam-footer .ex-skill-block{display:flex;align-items:stretch;flex-shrink:0;border:2px solid var(--ex-border);border-radius:8px;overflow:hidden;background:#f8fafc}.ex-exam-footer .ex-skill-block.ex-skill-current{border-color:#6c47ff;background:#fff}.ex-exam-footer .ex-skill-block.ex-skill-next{border-color:var(--ex-success);cursor:pointer}.ex-exam-footer .ex-skill-block.ex-skill-next:hover{background:#f0fdf4}.ex-exam-footer .ex-skill-head{padding:6px 12px;font-size:15px;font-weight:700;white-space:nowrap;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--ex-border)}.ex-exam-footer .ex-skill-head .ex-skill-time{font-weight:600;color:var(--ex-muted);font-size:11px}.ex-exam-footer .ex-part-list{display:flex}.ex-part-btn{border:none;border-right:1px solid var(--ex-border);background:transparent;padding:6px 14px;font-size:13px;font-weight:600;cursor:default;color:var(--ex-muted);white-space:nowrap}.ex-part-btn:last-child{border-right:none}.ex-part-btn.ex-part-clickable{cursor:pointer;color:var(--ex-text)}.ex-part-btn.ex-part-clickable:hover{background:#f1f5f9}.ex-part-btn.ex-part-active{background:#eff6ff;color:var(--ex-primary-dark)}.ex-part-btn.ex-part-done{color:var(--ex-success)}.ex-part-btn.ex-part-partial{color:var(--ex-warning)}.ex-skill-save-btn{flex-shrink:0;background:#6c47ff36;color:#6c47ff;border:1px solid #6c47ff40;padding:15px 25px}.ex-skill-save-btn:hover{background:#6c47ff24}.ex-save-wrap{position:relative;flex-shrink:0}.ex-save-wrap .ex-save-notice{position:absolute;bottom:1px;right:100%;margin-right:10px;white-space:nowrap}.ex-exam-footer.ex-footer-locked .ex-part-btn,.ex-exam-footer.ex-footer-locked .ex-skill-block.ex-skill-next{pointer-events:none;opacity:.5}.ex-spinner{width:36px;height:36px;border-radius:50%;border:4px solid var(--ex-border);border-top-color:var(--ex-primary);margin:0 auto 14px;animation:ex-spin .8s linear infinite}.ex-loading-pane{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;color:var(--ex-muted);font-size:15px}@keyframes ex-spin{to{transform:rotate(360deg)}}.ex-offline-banner{position:fixed;left:0;right:0;top:0;z-index:80;background:var(--ex-danger);color:#fff;font-size:13px;font-weight:600;text-align:center;padding:8px 12px}.ex-overlay{position:fixed;inset:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;z-index:50}.ex-overlay.ex-hidden{display:none}.ex-modal{background:#fff;border-radius:12px;padding:24px;max-width:380px;text-align:center}.ex-modal h3{margin:0 0 10px}.ex-modal p{color:var(--ex-muted);font-size:16px;margin-bottom:20px}.ex-modal .ex-modal-actions{display:flex;gap:10px}.ex-modal-lg{max-width:460px;padding:28px}.ex-modal-lg h3{font-size:22px}.ex-modal-warning{display:flex;align-items:flex-start;gap:10px;text-align:left;background:#fef3c7;color:#92400e;border:1px solid #fde68a;border-radius:10px;padding:14px 16px;margin-bottom:20px;font-size:17px;line-height:1.55}.ex-modal-warning i{flex-shrink:0;font-size:22px;color:var(--ex-warning);margin-top:1px}.ex-modal-warning b{color:#e11d1d;font-weight:800;font-size:1.06em;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}.ex-modal-success{display:flex;align-items:flex-start;gap:10px;text-align:left;background:#dcfce7;color:#166534;border:1px solid #bbf7d0;border-radius:10px;padding:14px 16px;margin-bottom:35px;font-size:17px;line-height:1.55}.ex-modal-success i{flex-shrink:0;font-size:22px;color:var(--ex-success);margin-top:1px}.ex-modal-success b{color:#166534}.ex-finish-modal{max-width:440px}.ex-finish-icon{width:64px;height:64px;border-radius:50%;background:#6c47ff14;color:#6c47ff;display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 16px}.ex-speaking-intro-modal{max-width:520px}.ex-speaking-intro-icon{width:64px;height:64px;border-radius:50%;background:#eff6ff;color:var(--ex-primary);display:flex;align-items:center;justify-content:center;font-size:30px;margin:0 auto 14px}.ex-speaking-intro-lead{text-align:center;margin-bottom:18px;color:#000!important}.ex-speaking-intro-steps{display:flex;align-items:center;justify-content:center;gap:6px;margin:16px 0}.ex-speaking-intro-step{flex:1;min-width:0;text-align:center;background:#f8fafc;border:1px solid var(--ex-border);border-radius:10px;padding:14px 8px}.ex-speaking-intro-step-icon{width:38px;height:38px;border-radius:50%;background:#eff6ff;color:var(--ex-primary);display:flex;align-items:center;justify-content:center;font-size:19px;margin:0 auto 8px}.ex-speaking-intro-step-label{font-weight:700;font-size:14px;color:var(--ex-text);margin-bottom:4px}.ex-speaking-intro-step-desc{font-size:12px;color:var(--ex-muted);line-height:1.4}.ex-speaking-intro-arrow{flex-shrink:0;font-size:22px;color:var(--ex-text)}.ex-speaking-intro-note{text-align:center;font-size:13px;margin-bottom:16px}.ex-speaking-intro-countdown{text-align:center;color:var(--ex-muted);margin:30px 0!important}.ex-speaking-intro-countdown b{color:var(--ex-primary);font-size:44px;font-weight:800;line-height:1;vertical-align:middle;margin:0 6px}.ex-complete-modal{max-width:440px}.ex-complete-icon{width:72px;height:72px;border-radius:50%;background:#dcfce7;color:var(--ex-success);display:flex;align-items:center;justify-content:center;font-size:38px;margin:0 auto 16px}.ex-complete-lead{color:var(--ex-muted);font-size:16px;margin-bottom:22px}.ex-complete-status{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;background:#f8fafc;border:1px solid var(--ex-border);border-radius:10px;font-size:14px;color:var(--ex-muted)}.ex-complete-status .ex-spinner{margin:0}.ex-timeup-modal{max-width:440px}.ex-timeup-icon{width:72px;height:72px;border-radius:50%;background:#fef3c7;color:var(--ex-warning);display:flex;align-items:center;justify-content:center;font-size:38px;margin:0 auto 16px}.ex-timeup-icon.ex-timeup-icon-success{background:#dcfce7;color:var(--ex-success)}.ex-timeup-lead{color:var(--ex-muted);font-size:16px;margin-bottom:22px}.ex-timeup-lead b{color:var(--ex-text)}.ex-timeup-countdown{width:56px;height:56px;border-radius:50%;background:#fef3c7;color:var(--ex-warning);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;margin:0 auto;animation:ex-timeup-pulse 1s ease-in-out infinite}@keyframes ex-timeup-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@media(max-width:520px){.ex-speaking-intro-steps{flex-direction:column}.ex-speaking-intro-arrow{transform:rotate(90deg);margin:-4px auto}}.ex-grace-modal{max-width:440px}.ex-grace-icon{width:72px;height:72px;border-radius:50%;background:#dcfce7;color:var(--ex-success);display:flex;align-items:center;justify-content:center;font-size:38px;margin:0 auto 16px}.ex-grace-lead{color:#000!important;font-size:16px;margin-bottom:18px}.ex-grace-spinner{display:flex;flex-direction:column;align-items:center;padding:14px;background:#f8fafc;border:1px solid var(--ex-border);border-radius:10px;margin-bottom:18px;margin-top:15px}.ex-grace-spinner .ex-spinner{margin:0}.ex-vsat-main{flex:1;display:flex;overflow:hidden}.ex-vsat-content{flex:1;overflow-y:auto;padding:24px 28px 40px}@media(max-width:900px){.ex-vsat-content{padding:16px}}.ex-vsat-single-wrap{width:1000px;min-width:1000px;max-width:1000px;margin:0 auto;padding:20px;background-color:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a}.ex-vsat-single-wrap .ex-answer-option{margin-bottom:12px}.ex-vsat-sidebar{width:340px;flex-shrink:0;background:#fff;border-left:1px solid var(--ex-border);overflow-y:auto;padding:20px;display:flex;flex-direction:column}@media(max-width:900px){.ex-vsat-sidebar{width:220px;padding:14px}}.ex-vsat-sidebar-title{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-block-end:1.25rem!important;gap:8px}.ex-vsat-sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;border:1px solid var(--ex-border);border-radius:6px;background:#fff;color:var(--ex-primary);cursor:pointer;transition:.15s}.ex-vsat-sidebar-toggle:hover{background:#f8fafc;border-color:#6c47ff}.ex-vsat-sidebar-toggle i{font-size:19px}.ex-vsat-sidebar.ex-collapsed{width:65px;padding:20px 10px;overflow-y:hidden}.ex-vsat-sidebar.ex-collapsed .ex-vsat-sidebar-title{justify-content:center;flex-shrink:0}.ex-vsat-sidebar.ex-collapsed .ex-vsat-sidebar-title span,.ex-vsat-sidebar.ex-collapsed .ex-vsat-legend,.ex-vsat-sidebar.ex-collapsed .ex-vsat-candidate{display:none}.ex-vsat-sidebar.ex-collapsed .ex-vsat-sidebar-toggle i{transform:rotate(180deg)}.ex-vsat-sidebar.ex-collapsed .ex-vsat-qgrid{grid-template-columns:1fr;flex:1;min-height:0;overflow-y:auto;padding-right:2px;scrollbar-width:none;-ms-overflow-style:none}.ex-vsat-sidebar.ex-collapsed .ex-vsat-qgrid::-webkit-scrollbar{display:none}.ex-vsat-sidebar.ex-collapsed .ex-vsat-qnum{font-size:15px}.ex-vsat-qgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.ex-vsat-qnum{position:relative;width:100%;aspect-ratio:1/1;border-radius:12px;border:none;background:#eef1f7;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;cursor:pointer;color:var(--ex-text);transition:.15s}.ex-vsat-qnum:hover{background:#e2e6f7}.ex-vsat-qnum.ex-answered{background:#6c47ff;color:#fff}.ex-vsat-qnum.ex-current{background:#fff;box-shadow:inset 0 0 0 2px #6c47ff;color:#6c47ff}.ex-vsat-qnum.ex-flagged:after{content:"";position:absolute;top:-3px;right:-3px;width:8px;height:8px;border-radius:50%;background:#f59e0b;border:1.5px solid #fff}.ex-vsat-legend{margin-top:18px;padding-top:16px;border-top:1px dashed var(--ex-border);display:flex;flex-direction:column;gap:11px}.ex-vsat-legend-item{display:flex;align-items:center;gap:10px;font-size:15px;color:var(--ex-muted)}.ex-vsat-legend-swatch{position:relative;flex-shrink:0;width:18px;height:18px;border-radius:5px;border:1px solid var(--ex-border);background:#eef1f7}.ex-vsat-legend-swatch.ex-swatch-answered{background:#6c47ff;border:none}.ex-vsat-legend-swatch.ex-swatch-current{background:#fff;box-shadow:inset 0 0 0 2px #6c47ff}.ex-vsat-candidate{margin-top:auto;padding-top:16px;border-top:1px dashed var(--ex-border);text-align:center}.ex-vsat-candidate-avatar{width:100px;height:100px;border-radius:10px;background:#e2e8f0;margin:0 auto 8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;color:var(--ex-muted)}.ex-vsat-candidate-name{font-weight:600;font-size:14px}.ex-vsat-part-heading{font-size:13px;font-weight:700;color:var(--ex-muted);text-transform:uppercase;letter-spacing:.04em;margin:28px 0 16px;padding-bottom:8px;border-bottom:1px solid var(--ex-border)}.ex-vsat-part-heading:first-child{margin-top:0}.ex-vsat-question{margin-bottom:28px;scroll-margin-top:16px;font-size:18px}.ex-vsat-question-index{font-weight:700;margin-right:6px}.ex-vsat-question-header{margin-bottom:14px}.ex-vsat-question-title{font-size:26px;font-weight:600;color:var(--ex-text);line-height:1.2}.ex-vsat-question-type{font-size:13px;color:var(--ex-muted);margin-top:2px}.ex-vsat-question-body{color:#3f4a6b;margin-bottom:22px;overflow-x:auto}.ex-vsat-question-body p,.ex-vsat-question-body span,.ex-vsat-question-body div{text-indent:0!important}.ex-vsat-question-body p{margin-left:0!important}.ex-vsat-tf-stem{margin-bottom:12px}.ex-vsat-tf-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border:1px solid var(--ex-border);border-radius:8px;margin-bottom:8px;background:#f8fafc}.ex-vsat-tf-letter{border-radius:3px;outline:none;background:#eef1f7}.ex-vsat-tf-content{flex:1;min-width:0}.ex-vsat-tf-choices{display:flex;gap:8px;flex-shrink:0}.ex-vsat-tf-btn{padding:6px 16px;border-radius:999px;border:1px solid var(--ex-border);background:#fff;font-weight:600;font-size:13px;cursor:pointer;color:var(--ex-text);transition:.15s}.ex-vsat-tf-btn:hover{border-color:#6c47ff}.ex-vsat-tf-btn.ex-selected-true{background:#dcfce7;border-color:var(--ex-success);color:#166534}.ex-vsat-tf-btn.ex-selected-false{background:#fee2e2;border-color:var(--ex-danger);color:#991b1b}.ex-vsat-tf-table{border:1px solid var(--ex-border);border-radius:12px;overflow:hidden;background:#fff}.ex-vsat-tf-row{display:grid;grid-template-columns:1fr 64px 64px;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--ex-border)}.ex-vsat-tf-row:last-child{border-bottom:none}.ex-vsat-tf-head{background:#f8fafc;padding-top:12px;padding-bottom:12px;font-weight:700;font-size:13px;color:var(--ex-muted)}.ex-vsat-tf-head-col{text-align:center}.ex-vsat-tf-row-main{display:flex;align-items:center;gap:12px;min-width:0}.ex-vsat-tf-num{flex-shrink:0;width:32px;height:32px;border-radius:6px;background:#eef1f7;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;color:var(--ex-text)}.ex-vsat-tf-circle{justify-self:center;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--ex-border);background:#fff;font-weight:600;font-size:14px;color:var(--ex-muted);cursor:pointer;transition:.15s}.ex-vsat-tf-circle:hover{border-color:#6c47ff;color:#6c47ff}.ex-vsat-tf-circle.ex-selected-true{background:#dcfce7;border-color:var(--ex-success);color:#166534}.ex-vsat-tf-circle.ex-selected-false{background:#fee2e2;border-color:var(--ex-danger);color:#991b1b}.ex-vsat-fill-input{width:260px;max-width:100%;padding:8px 12px;border:1px solid var(--ex-border);border-radius:8px;font-size:14px;margin-top:8px}.ex-vsat-fill-input-single{width:100%;padding:16px 22px;border-radius:999px;font-size:15px;margin-top:16px}.ex-vsat-footernav{display:flex;align-items:center;justify-content:center;gap:40px;padding:12px 28px;background:#fff;border-top:1px solid var(--ex-border);flex-shrink:0}@media(max-width:900px){.ex-vsat-footernav{padding:10px 14px;gap:16px}}.ex-footernav-btn{width:auto;flex-shrink:0;min-width:130px;padding:13px 22px;font-size:15px}.ex-footernav-btn i{font-size:17px}.ex-footernav-btn:disabled{opacity:.4;cursor:not-allowed}.ex-footernav-center{display:flex;flex-direction:column;align-items:center;gap:6px}.ex-footernav-flag{display:none}.ex-footernav-flag:hover{background:#f8fafc}.ex-footernav-flag i{font-size:16px}.ex-footernav-flag.ex-flag-active{color:#f59e0b}.ex-footernav-dots{display:flex;align-items:center;gap:10px;height:14px}.ex-footernav-dot{width:12px;height:12px;border-radius:50%;background:#e2e8f0;flex-shrink:0}.ex-footernav-dot.ex-answered{background:var(--ex-primary)}.ex-footernav-dot.ex-current{width:14px;height:14px;border:2.5px solid #6c47ff;background:#fff}.ex-footernav-ellipsis{color:var(--ex-muted);font-size:12px;letter-spacing:1px;flex-shrink:0}.ex-finish-subtitle{color:var(--ex-muted);font-size:14px;margin:-6px 0 18px}.ex-finish-stats{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}.ex-finish-stat-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:#f8fafc;border:1px solid var(--ex-border);border-radius:10px;font-size:14px}.ex-finish-stat-label{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--ex-text)}.ex-finish-stat-label i{font-size:18px}.ex-finish-stat-value{font-weight:700;font-size:16px}.ex-result-wrap{max-width:640px;margin:0 auto;padding:24px 15px 60px}.ex-result-countdown{font-size:13px;color:var(--ex-muted);margin-top:6px}.ex-result-countdown b{color:var(--ex-text)}.ex-result-finish-btn{flex-shrink:0;transition:.15s}.ex-result-finish-btn:hover{background:var(--ex-danger);border-color:var(--ex-danger);color:#fff;transform:translateY(-1px);box-shadow:0 4px 10px #dc262640}.ex-result-candidate{display:flex;align-items:center;gap:14px;background:#fff;border-radius:12px;box-shadow:0 2px 10px #0f172a14;padding:16px 20px;margin-bottom:16px}.ex-result-candidate-avatar{width:56px;height:56px;flex:0 0 auto;border-radius:50%;background:#e2e8f0;display:flex;align-items:center;justify-content:center;overflow:hidden;border:2px solid var(--ex-border);font-size:22px;font-weight:700;color:var(--ex-muted)}.ex-result-candidate-avatar img{width:100%;height:100%;object-fit:cover}.ex-result-candidate-info{flex:1;min-width:0}.ex-result-candidate-name{font-size:16px;font-weight:700;color:var(--ex-text)}.ex-result-candidate-no{font-size:13px;color:var(--ex-muted);margin-top:2px}.ex-result-card{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0f172a14;padding:28px;text-align:center;margin-bottom:16px}.ex-result-donut-wrap{position:relative;display:inline-block}.ex-result-donut{display:block}.ex-result-level{position:absolute;left:50%;bottom:-14px;transform:translate(-50%);white-space:nowrap;background:#fff;border:2px solid;border-radius:999px;padding:5px 20px;font-size:15px;font-weight:700}.ex-result-score{margin-top:22px;font-size:28px;font-weight:800;color:var(--ex-text)}.ex-result-score-max{font-size:15px;font-weight:500;color:var(--ex-muted);margin-left:4px}.ex-result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}@media(max-width:480px){.ex-result-stats{grid-template-columns:repeat(2,1fr)}}.ex-result-stat{background:#fff;border-radius:10px;box-shadow:0 2px 8px #0f172a0f;padding:14px 10px;text-align:center}.ex-result-stat-label{display:block;font-size:14px;font-weight:500;color:var(--ex-muted);margin-bottom:4px}.ex-result-stat-value{display:block;font-size:25px;font-weight:700;color:var(--ex-text)}.ex-result-sections{background:#fff;border-radius:12px;box-shadow:0 2px 10px #0f172a14;padding:20px}.ex-result-sections-title{font-weight:600;font-size:20px;margin-bottom:14px}.ex-result-section-row{margin-bottom:14px}.ex-result-section-row:last-child{margin-bottom:0}.ex-result-section-head{display:flex;justify-content:space-between;font-size:16px;margin-bottom:6px;font-weight:500}.ex-result-section-bar{height:8px;border-radius:999px;background:var(--ex-border);overflow:hidden}.ex-result-section-bar span{display:block;height:100%;background:var(--ex-primary);border-radius:999px}.ex-hidden{display:none!important}.ex-exam-header{position:relative}.ex-progress-saved{position:absolute;left:0;right:0;top:calc(100% + 6px);margin:0 auto;width:fit-content;white-space:nowrap;z-index:5;box-shadow:0 2px 8px #0000001f}.ex-header-progress-fill.ex-blink{animation:ex-progress-blink .6s ease-in-out 3}@keyframes ex-progress-blink{0%,to{opacity:1}50%{opacity:.25}}
