.session-header{padding:18px 25px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fcfdff}.session-header>div{display:flex;gap:13px;align-items:center}.session-header #session-position{font-size:.8rem;color:var(--muted)}.pill{display:inline-flex;align-items:center;padding:3px 9px;background:var(--pale);color:var(--blue);border-radius:5px;font-size:.75rem}.pill.written{background:#f1edfa;color:#7e65aa}.text-button{background:none;border:0;color:var(--blue);font-size:.8rem;padding:5px}.text-button:hover{text-decoration:underline}.question-body{padding:25px}.question-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:19px}.question-meta .meta-labels{display:flex;gap:8px;flex-wrap:wrap}.question-meta .meta-labels>span{font-size:.75rem;color:#8592a4}.flag-button{border:0;background:none;color:#7e8da2;font-size:.75rem;display:flex;gap:5px;align-items:center}.flag-button.flagged{color:var(--amber)}.question-title{font-size:1.12rem;line-height:1.9;font-weight:600}.question-title code{font-size:.95em}.question-instruction{font-size:.8rem;color:var(--muted);margin:8px 0 20px}pre{font-family:Consolas,"Courier New",monospace;font-size:.875rem;line-height:1.8;background:#f5f7fa;border:1px solid #e0e6ef;border-radius:7px;padding:16px 18px;margin:18px 0;overflow:auto;max-width:100%;tab-size:2;white-space:pre-wrap;overflow-wrap:anywhere;color:#27496a}code{font-family:Consolas,"Courier New",monospace}code.inline-code{background:#f0f3f8;padding:2px 5px;border-radius:4px;overflow-wrap:anywhere;font-size:.92em}.choices{display:flex;flex-direction:column;gap:11px;margin-top:21px;border:0;padding:0;min-width:0}.choice{display:flex;align-items:flex-start;gap:11px;cursor:pointer;border:1px solid #dfe5ee;border-radius:7px;padding:14px;color:#435571;font-size:.95rem;min-width:0}.choice input{margin-top:6px}.choice-letter{color:#8b99ac;font-family:system-ui,sans-serif;font-size:.8rem;margin-top:2px}.choice-text{min-width:0;overflow-wrap:anywhere}.choice:hover{background:#f9fbfe;border-color:#b3ccec}.choice.selected{background:var(--pale);border-color:#83ace2}.choice.correct{border-color:#83cbb0;background:var(--green-pale)}.choice.incorrect{border-color:#e8a0a9;background:var(--red-pale)}.choice input:disabled{opacity:1}.answer-input,.written-input{width:100%;border:1px solid #cfd9e7;border-radius:7px;padding:12px 14px;margin-top:10px;min-height:46px;background:white;color:var(--ink)}.written-input{font-family:Consolas,"Courier New",monospace;line-height:1.65;font-size:.875rem;resize:vertical;min-height:230px;tab-size:2}.match-rows{display:flex;flex-direction:column;gap:12px}.match-row{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:17px;padding:12px 15px;border:1px solid var(--line);border-radius:7px;font-size:.9rem}.match-row select{margin:0;font-size:.875rem}.match-row.correct{background:var(--green-pale);border-color:#a4d3bd}.match-row.incorrect{background:var(--red-pale);border-color:#e6adb5}.token-bank{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0;padding:15px;border:1px dashed #bdcde1;background:#f8faff;border-radius:7px;min-height:70px}.token{padding:9px 12px;border:1px solid #b9cce6;border-radius:5px;background:white;color:#345a89;font-family:Consolas,"Courier New",monospace;font-size:.8rem;max-width:100%;overflow-wrap:anywhere;text-align:left;cursor:grab;touch-action:none}.token[aria-pressed="true"]{background:var(--blue);color:white;border-color:var(--blue);box-shadow:0 0 0 2px #b0cef4}.drop-slots{display:flex;flex-direction:column;gap:10px}.drop-slot{display:flex;align-items:center;gap:12px;min-height:56px;border:1px dashed #b8c7db;border-radius:6px;padding:9px 13px;color:#94a3b8;background:#fafcff}.slot-number{width:26px;height:26px;display:grid;place-items:center;background:#edf2f9;border-radius:5px;font-family:system-ui,sans-serif;font-size:.8rem;flex-shrink:0}.slot-button{background:none;border:0;padding:4px;flex:1;min-height:34px;text-align:left;color:inherit;font-size:.875rem;overflow-wrap:anywhere}.drop-slot.filled{background:var(--pale);border-style:solid;border-color:#b6cdea;color:#375b8a}.drop-slot.correct{background:var(--green-pale);border-color:#97c9b3;color:var(--green)}.drop-slot.incorrect{background:var(--red-pale);border-color:#dea2aa;color:var(--red)}.drop-slot.drag-over{box-shadow:0 0 0 2px var(--blue)}.slot-clear{border:0;background:none;color:#8192aa;padding:5px;font-size:1.25rem;line-height:1}.feedback{margin-top:23px;padding:18px 20px;border-radius:8px;background:#eff5fd;border:1px solid #c8dcf5;font-size:.9rem;color:#425d7e}.feedback.correct{background:var(--green-pale);border-color:#b5dcca;color:#2c654e}.feedback.incorrect{background:var(--red-pale);border-color:#efc4ca;color:#88515a}.feedback h4{margin:0 0 9px;font-size:1rem}.feedback p{line-height:1.9}.feedback .correct-answer{margin-bottom:10px;font-weight:600}.reference-link{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:0;background:none;border:0;color:var(--blue);text-decoration:underline;text-underline-offset:3px;font-size:.8rem}.rubric{padding-left:23px;color:#4c627f;font-size:.875rem}.rubric li{margin:7px 0}.rubric-heading{margin-top:18px;font-size:.9rem}.question-actions{border-top:1px solid var(--line);padding:19px 25px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.question-actions .check-button{margin-left:auto}.question-actions .next-button{margin-left:auto}.navigator-panel{padding-bottom:20px}.timer{margin:0 20px 18px;padding:12px 14px;background:#f0f5fc;border:1px solid #dce7f6;border-radius:7px;display:flex;justify-content:space-between;align-items:center;font-size:.75rem;color:#637892}.timer strong{font-family:Consolas,monospace;font-size:1.1rem;color:var(--blue)}.timer.urgent{background:var(--red-pale);border-color:#efc4ca}.timer.urgent strong{color:var(--red)}.progress-label{display:flex;justify-content:space-between;margin:0 21px 6px;font-size:.75rem;color:#7b8ca1}progress{display:block;appearance:none;width:calc(100% - 42px);margin:0 21px;height:5px;border:0;border-radius:9px;overflow:hidden;background:#e7edf5}progress::-webkit-progress-bar{background:#e7edf5}progress::-webkit-progress-value{background:var(--blue)}progress::-moz-progress-bar{background:var(--blue)}.question-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;padding:22px 20px}.grid-button{aspect-ratio:1;min-height:35px;padding:0;border:1px solid #dbe3ee;border-radius:5px;background:#f8fafc;color:#6f8199;font-family:system-ui,sans-serif;font-size:.8rem;position:relative}.grid-button.current{outline:2px solid var(--blue);outline-offset:2px;color:var(--blue)}.grid-button.answered{background:#e4efff;color:var(--blue);border-color:#bad2f2}.grid-button.correct{background:var(--green-pale);color:var(--green);border-color:#aad4c0}.grid-button.incorrect{background:var(--red-pale);color:var(--red);border-color:#e7b6bf}.grid-button.flagged:after{content:"";position:absolute;right:1px;top:1px;width:0;height:0;border-top:8px solid #d7a235;border-left:8px solid transparent}.grid-legend{margin:0 20px;display:flex;flex-wrap:wrap;gap:10px 14px;font-size:.75rem;color:#8a97a9}.grid-legend>span{display:flex;align-items:center;gap:5px}.legend-box{width:11px;height:11px;border:1px solid #d8e1ee;background:#f8fafc;border-radius:2px}.legend-box.done{background:#e4efff;border-color:#bad2f2}.grid-legend .icon{width:12px;height:12px;color:#ae883c}.finish-button{margin:21px 20px 0;width:calc(100% - 40px);padding:10px}.result-panel{padding:30px}.result-header{text-align:center;border-bottom:1px solid var(--line);padding-bottom:25px}.result-header .result-kicker{font-size:.875rem;color:var(--muted)}.result-score{font-family:system-ui,sans-serif;font-size:3.6rem;font-weight:700;color:var(--blue);line-height:1.5}.result-score span{font-size:1.1rem;color:#99a7ba;font-weight:400}.result-header h2{font-size:1.3rem;margin-bottom:10px}.result-header p{font-size:.875rem;color:var(--muted)}.result-chapters{margin:26px 0;display:flex;flex-direction:column;gap:17px}.chapter-result-label{display:flex;justify-content:space-between;font-size:.875rem;margin-bottom:7px}.chapter-result progress{width:100%;margin:0;height:7px}.result-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:25px}.review-list{border-top:1px solid var(--line);padding-top:22px}.review-list h3{font-size:1rem;margin-bottom:15px}.review-row{display:flex;gap:12px;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid #edf0f5}.review-row p{font-size:.875rem;overflow-wrap:anywhere}.review-row small{font-size:.75rem;color:#8c9aad;margin-top:4px}.review-row .button{white-space:nowrap;padding:6px 12px;min-height:36px;font-size:.8rem}.empty-state{padding:15px;color:var(--muted);font-size:.875rem}.icon-button{display:grid;place-items:center;min-width:36px;height:36px;border:0;background:none;color:inherit;border-radius:6px;font-size:1.6rem}.icon-button:hover{background:#ffffff20}.mobile-menu{display:none}dialog{border:1px solid #d4deec;border-radius:12px;padding:0;width:min(540px,calc(100% - 32px));color:var(--ink);max-height:85vh;box-shadow:0 20px 80px #172d4d25}dialog::backdrop{background:#14273e70}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:19px 23px;border-bottom:1px solid var(--line);gap:15px}.dialog-header h2{font-size:1.08rem}.dialog-header .icon-button{color:var(--muted)}#dialog-content{padding:23px;font-size:.95rem;line-height:1.9}#dialog-content p+p{margin-top:14px}#dialog-content .resource-file{padding:14px 0;border-bottom:1px solid var(--line)}#dialog-content .resource-file strong{display:block;font-size:.9rem}#dialog-content .resource-file small{color:var(--muted);font-size:.8rem}#dialog-actions{display:flex;justify-content:flex-end;gap:10px;padding:0 23px 22px;flex-wrap:wrap}.pointer-dragging{opacity:.45}.drop-code{font-size:.875rem}.code-slot{padding:2px 6px;border:1px dashed #94afd1;border-radius:3px;color:var(--blue);background:#e9f1fd}.question-error{margin:10px 0 0;color:var(--red);font-size:.875rem}




/* Visual system from style.md */
.chapter-info summary{color:#4b6cb7;cursor:pointer;font-size:.85rem}
.chapter-info li{margin-top:5px}
:root {
  --bg: #f5f7fb;
  --text: #172033;
  --muted: #6b7280;
  --primary-dark: #182848;
  --primary: #4b6cb7;
  --icon-bg: #eef3ff;
  --success: #198754;
  --success-light: #20c997;
  --danger: #dc3545;
  --footer-bg: #111827;
  --footer-text: #cbd5e1;
  --card: #fff;
  --grad-primary: linear-gradient(135deg, var(--primary-dark), var(--primary));
  --grad-success: linear-gradient(135deg, var(--success), var(--success-light));
  --shadow-card: 0 8px 30px rgba(31,45,61,.07);
  --blue: var(--primary);
  --blue-dark: var(--primary-dark);
  --ink: var(--text);
  --line: #e9edf4;
  --pale: var(--icon-bg);
  --green: var(--success);
  --green-pale: #eaf7f0;
  --red: var(--danger);
  --red-pale: #fff1f3;
  --amber: #9b721d;
  --bs-body-font-family: "Prompt","Leelawadee UI",Tahoma,sans-serif;
  --bs-body-bg: var(--bg);
  --bs-body-color: var(--text);
  --bs-body-line-height: 1.7;
  --bs-primary: var(--primary);
  --bs-primary-rgb: 75,108,183;
  --bs-border-radius: 10px;
}
body {font-family:var(--bs-body-font-family);background:var(--bg);color:var(--text);font-size:15px;min-height:100vh;display:flex;flex-direction:column}
main {flex:1}
button,input,select,textarea {font:inherit}
h1,h2,h3,h4,p {margin:0}
h1,h2,h3 {font-weight:700}
h2 {font-size:1.05rem;line-height:1.6}
small {display:block}
[hidden] {display:none!important}
a {color:var(--primary)}
button,a {touch-action:manipulation}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible {outline:3px solid #9bb2e4;outline-offset:3px}
.icon {width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.icon-library {position:absolute;width:0;height:0;overflow:hidden}
.sr-only {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link {position:fixed;left:16px;top:-60px;z-index:100;background:white;padding:12px}
.skip-link:focus {top:10px}
.small-muted {font-size:.86rem;color:var(--muted)}
.quiz-container {max-width:1180px}
.navbar-modern {background:var(--grad-primary);color:#fff}
.quiz-navbar {min-height:76px;padding-block:14px;z-index:20;border:0;box-shadow:0 4px 20px rgba(24,40,72,.08)}
.navbar-content {display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:15px}
.quiz-brand {display:flex;align-items:center;gap:11px;letter-spacing:.2px;min-width:0}
.quiz-brand>span:last-child {min-width:0}
.quiz-brand small {white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-symbol {display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0;background:transparent;color:white}
.brand-symbol img {display:block;width:100%;height:100%;object-fit:contain}
.quiz-brand strong {font-family:"Prompt",sans-serif;font-size:1.14rem;font-weight:700}
.quiz-brand strong span {color:#fff;font-weight:400}
.quiz-brand small {font-size:.57rem;letter-spacing:.13em;margin-top:3px;color:rgba(255,255,255,.64)}
.header-actions {display:flex;align-items:center;gap:9px;flex-shrink:0}
.header-actions .btn {white-space:nowrap}
.header-actions .btn {display:inline-flex;align-items:center;gap:7px;min-height:38px;font-size:.84rem;padding:7px 12px}
.header-actions .btn-light {color:var(--primary-dark);background:white;border-color:white}
.header-actions .icon {width:17px;height:17px}
.nickname-badge {font-size:.82rem;color:white;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.17);border-radius:10px;padding:6px 11px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.site-banner {border-radius:24px;overflow:hidden;background:var(--card);box-shadow:var(--shadow-card)}
.site-banner img {display:block;width:100%;height:auto}
.quiz-active .site-banner {display:none}
.quiz-aside {display:flex;flex-direction:column;gap:24px}
.panel,.content-card {border:0;border-radius:18px;overflow:hidden;background:var(--card);box-shadow:var(--shadow-card)}
.panel-heading {display:flex;gap:11px;align-items:center;padding:24px;color:var(--primary)}
.panel-heading h2 {color:var(--text);font-size:1rem;font-weight:700}
.panel-heading p {color:var(--muted);font-size:.8rem;margin-top:4px;font-weight:400}
.login-panel {padding:32px}
.login-icon,.rank-icon {display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:14px;background:var(--icon-bg);color:var(--primary);flex-shrink:0}
.login-icon {margin-bottom:20px}
.login-icon .icon {width:24px;height:24px}
.login-kicker {color:var(--muted);font-size:.86rem}
.login-panel h2 {font-size:1.6rem;line-height:1.65;margin-top:7px}
.login-description {font-size:.9rem;color:var(--muted);margin-top:7px;line-height:1.85}
.login-panel form {margin-top:26px}
.form-label {font-size:.95rem;color:var(--text);font-weight:500;margin-bottom:9px}
.btn,.button {border-radius:10px}
.form-control,.form-select {border-radius:10px;padding:.65rem .8rem;border-color:#dfe5ef;font-size:.94rem}
.form-control-lg {font-size:1rem;min-height:50px;padding:.8rem 1rem}
.form-control:focus,.form-select:focus {border-color:#9bb2e4;box-shadow:0 0 0 .2rem rgba(75,108,183,.12)}
#login-button {margin-top:18px}
/* Both entry buttons share one size so the pair reads as equals. */
#login-button,#practice-button,#pdf-practice-button {min-height:50px;font-size:1rem;font-weight:500}
.btn-outline-primary {--bs-btn-color:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-color:#fff;--bs-btn-hover-bg:var(--primary);--bs-btn-hover-border-color:var(--primary);--bs-btn-active-color:#fff;--bs-btn-active-bg:var(--primary-dark);--bs-btn-active-border-color:var(--primary-dark);--bs-btn-disabled-color:var(--primary);--bs-btn-disabled-border-color:var(--primary)}
.btn-primary {--bs-btn-bg:var(--primary);--bs-btn-border-color:var(--primary);--bs-btn-hover-bg:var(--primary-dark);--bs-btn-hover-border-color:var(--primary-dark);--bs-btn-active-bg:var(--primary-dark);--bs-btn-active-border-color:var(--primary-dark);--bs-btn-disabled-bg:var(--primary);--bs-btn-disabled-border-color:var(--primary)}
.login-facts {display:flex;flex-wrap:wrap;gap:14px 24px;margin-top:26px;padding-top:23px;border-top:1px solid var(--line);color:var(--primary);font-size:.84rem}
.login-facts>span {display:flex;align-items:center;gap:7px}
.login-facts .icon {width:17px;height:17px}
.login-note {font-size:.8rem;line-height:1.85;color:var(--muted);margin-top:16px}
.error-message {color:var(--danger);font-size:.88rem;margin-top:10px}
.rank-scroll {max-height:420px;overflow:auto}
.rank-table {font-size:.83rem;margin:0}
.rank-table thead {color:var(--muted);font-size:.74rem;background:#f9fafc}
.rank-table th,.rank-table td {padding:14px 18px;border-color:#edf0f5;vertical-align:middle}
.rank-table th {font-weight:500;overflow-wrap:anywhere;max-width:160px}
.rank-table thead th {font-weight:400;white-space:nowrap;overflow-wrap:normal}
.rank-table small {font-size:.72rem;color:var(--muted);margin-top:4px;font-weight:400}
.rank-table td:last-child {white-space:nowrap;text-align:right}
.rank-number {display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:10px;background:#f1f4fa;color:#7988a3;font-size:.83rem;font-weight:600}
.rank-1 {background:#fff3d5;color:#aa7a16}
.rank-2 {background:#edf1f6;color:#7d8da3}
.rank-3 {background:#f8eae1;color:#b07d59}
.your-rank {--bs-table-bg:#f0f4ff}
.rank-note {font-size:.75rem;line-height:1.9;color:var(--muted);padding:18px 24px;border-top:1px solid var(--line)}
.ranking-empty {text-align:center;padding:36px 24px;color:var(--muted);font-size:.9rem}
.ranking-empty small {font-size:.8rem;color:#96a0b0;margin-top:7px}
.attempt-row {display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;border-top:1px solid var(--line);font-size:.86rem;color:var(--text)}
.attempt-row small {font-size:.72rem;color:var(--muted);margin-top:5px}
.attempt-row strong {text-align:right;font-weight:600;color:var(--primary)}
.result-name {font-size:1.12rem;font-weight:600;color:var(--primary);margin-bottom:8px}
.button {display:inline-flex;align-items:center;justify-content:center;gap:8px;background:white;border:1px solid #dfe5ef;color:var(--primary);padding:10px 16px;min-height:44px;font-size:.84rem;font-weight:500}
.button:hover {background:#f5f7fb;border-color:#bccae4}
.button.primary {background:var(--primary);color:white;border-color:var(--primary)}
.button.primary:hover {background:var(--primary-dark);border-color:var(--primary-dark)}
.button.secondary {background:var(--icon-bg);border-color:#dce5f8;color:var(--primary)}
.button:disabled {opacity:.5}
.session-header {padding:21px 24px;border-color:var(--line);background:white}
.session-header #session-position {font-size:.86rem;color:var(--muted)}
.text-button {font-size:.84rem;color:var(--primary)}
.pill {border-radius:10px;padding:5px 10px;font-size:.8rem;background:var(--icon-bg)}
.question-body {padding:24px}
.question-meta {align-items:flex-start;margin-bottom:22px}
.question-meta .meta-labels>span {font-size:.78rem;color:var(--muted)}
.question-title {color:var(--text);font-size:1.17rem;font-weight:600;line-height:1.9}
.question-instruction {color:var(--muted);font-size:.86rem;line-height:1.8}
.flag-button {flex-shrink:0;font-size:.78rem;color:var(--muted)}
.flag-button.flagged {color:var(--amber)}
.choice {border-radius:10px;border-color:#e4e9f2;padding:15px 16px;color:var(--text);font-size:.95rem}
.choice input {flex-shrink:0}
.choice-letter {color:var(--muted)}
.choice.selected {background:var(--icon-bg);border-color:#9bb2e4}
.choice.correct,.match-row.correct,.drop-slot.correct {background:var(--green-pale);border-color:#99cdb5}
.choice.incorrect,.match-row.incorrect,.drop-slot.incorrect {background:var(--red-pale);border-color:#eab0b8}
.form-check-input:checked {background-color:var(--primary);border-color:var(--primary)}
.feedback {border-radius:14px;border-color:#d3dff4;background:#f0f4ff;color:#415b8f;font-size:.9rem}
.feedback.correct {background:var(--green-pale);border-color:#badfcc;color:#256d4d}
.feedback.incorrect {background:var(--red-pale);border-color:#f0c6cc;color:#954d59}
.answer-input,.written-input,.match-row,.drop-slot {border-radius:10px}
.question-actions {padding:20px 24px;border-color:var(--line)}
.question-grid {grid-template-columns:repeat(6,minmax(0,1fr));padding:23px;gap:8px}
.grid-button {border-radius:10px;background:#f7f9fd;border-color:#e5eaf3;color:#7c8eac;font-family:var(--bs-body-font-family)}
.grid-button.answered {background:var(--icon-bg);border-color:#c3d3f3;color:var(--primary)}
.grid-button.correct {background:var(--green-pale);color:var(--success)}
.grid-button.incorrect {background:var(--red-pale);color:var(--danger)}
.timer {border-radius:14px;background:var(--icon-bg);border:0;padding:15px 16px;font-size:.8rem;color:#62799f}
.timer strong {font-size:1.4rem;font-weight:600;color:var(--primary-dark)}
.timer.urgent {background:var(--red-pale)}
.timer.urgent strong {color:var(--danger)}
.progress-label {font-size:.8rem;color:var(--muted)}
progress {height:6px}
.grid-legend {font-size:.73rem;color:var(--muted)}
.finish-button {margin-top:22px}
.result-panel {padding:32px}
.result-score {font-family:"Prompt",sans-serif;font-size:3.5rem;font-weight:700;color:var(--primary)}
.result-score span {font-size:1rem;color:var(--muted)}
.result-header .result-kicker,.result-header p {color:var(--muted)}
.result-header h2 {font-size:1.3rem;font-weight:600}
.chapter-result-label {flex-wrap:wrap;gap:7px;font-size:.88rem}
.review-row>div {min-width:0}
.review-row .button {flex-shrink:0}
.review-row p {font-size:.9rem;line-height:1.85}
.review-row small {color:var(--muted);font-size:.76rem}
pre {border-radius:10px;background:#f4f6fa;border-color:#e5eaf2;color:#334f7e}
code.inline-code {color:inherit;background:#edf1f8}
dialog {border:0;border-radius:18px;box-shadow:0 24px 80px rgba(24,40,72,.24)}
.dialog-header {padding:21px 24px}
.dialog-header h2 {font-size:1.08rem}
.icon-button:hover {background:var(--icon-bg)}
.footer-modern {background:var(--footer-bg);color:var(--footer-text)}
.footer-modern .fw-semibold {font-size:.95rem}
.footer-modern .small-muted {color:rgba(203,213,225,.72);font-size:.8rem}
#session-panel,#result-panel,#navigator-panel {scroll-margin-top:95px}
.login-panel h2 {text-wrap:balance}
.question-title {text-wrap:pretty;overflow-wrap:break-word}
.feedback,.review-row p,.attempt-row {overflow-wrap:break-word}
.match-row>label {min-width:0;overflow-wrap:anywhere}
.match-row select {min-width:0}
.question-actions .finish-inline {margin-left:0}
.question-actions .pill {justify-content:center}
.mobile-quiz-bar {display:none}
@media(min-width:992px) {
  .quiz-aside {position:sticky;top:100px}
}
/* The full 40-button grid has no scrollbar, so on short screens let the panel scroll with the page instead of sticking. */
@media(min-width:992px) and (max-height:760px) {.quiz-aside {position:static}}
@media(max-width:991.98px) {
  .quiz-container {max-width:800px}
  .question-grid {grid-template-columns:repeat(10,minmax(0,1fr))}
  /* The navigator sits below the question on small screens, so a bottom bar keeps time and progress visible. */
  .mobile-quiz-bar {position:fixed;left:0;right:0;bottom:0;z-index:25;display:flex;align-items:center;gap:12px;padding:10px max(16px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:rgba(255,255,255,.97);border-top:1px solid var(--line);box-shadow:0 -6px 24px rgba(24,40,72,.1);font-size:.84rem;color:var(--muted)}
  .mobile-timer {display:inline-flex;align-items:center;gap:6px;color:var(--primary-dark)}
  .mobile-timer strong {font-family:Consolas,monospace;font-size:1.05rem;font-weight:600}
  .mobile-timer .icon {width:18px;height:18px;color:var(--primary)}
  .mobile-timer.urgent,.mobile-timer.urgent .icon {color:var(--danger)}
  .mobile-progress {min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mobile-quiz-bar .btn {margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px;font-size:.84rem;white-space:nowrap;flex-shrink:0}
  .mobile-quiz-bar .icon {width:17px;height:17px}
  body.has-mobile-bar {padding-bottom:64px}
  body.has-mobile-bar .footer-modern {padding-bottom:calc(1.5rem + env(safe-area-inset-bottom))!important}
}
@media(max-width:767.98px) {
  .quiz-navbar {min-height:68px;padding-block:12px}
  .quiz-container {padding-inline:18px}
  .quiz-brand {gap:8px}
  .brand-symbol {width:38px;height:38px}
  .quiz-brand strong {font-size:1rem}
  .quiz-brand small {font-size:.55rem}
  .header-actions {gap:6px}
  .header-actions .btn {font-size:.78rem;padding:6px 10px;min-height:36px}
  .nickname-badge {display:none}
  .login-panel {padding:26px 22px}
  .login-panel h2 {font-size:1.3rem}
  .login-description {font-size:.84rem}
  .login-facts {gap:12px 18px;font-size:.77rem}
  .login-note {font-size:.75rem}
  .panel-heading {padding:21px}
  .panel-heading h2 {font-size:.95rem}
  .rank-table th,.rank-table td {padding:13px 16px}
  .rank-note {padding-inline:21px}
  .session-header {padding:16px 18px}
  .session-header #session-position {font-size:.76rem}
  .question-body {padding:22px 18px}
  .question-title {font-size:1.06rem}
  .question-instruction {font-size:.8rem}
  .question-meta .meta-labels>span {font-size:.7rem}
  .choice {padding:13px 11px;font-size:.89rem;gap:8px}
  .question-actions {padding:17px 18px;gap:8px}
  .question-actions .button {font-size:.76rem;padding:9px 12px}
  .match-row {grid-template-columns:1fr;gap:10px}
  .question-grid {grid-template-columns:repeat(8,minmax(0,1fr));padding:21px;gap:7px}
  .grid-button {min-height:32px}
  .result-panel {padding:26px 20px}
  .result-score {font-size:3rem}
  .feedback {padding:17px;font-size:.86rem}
  .review-row p {font-size:.82rem}
  .review-row .button {font-size:.74rem;padding:7px 10px}
  #session-panel,#result-panel,#navigator-panel {scroll-margin-top:85px}
}
@media(max-width:575.98px) {
  .quiz-brand small {display:none}
  .site-banner {border-radius:14px}
  .site-banner.mb-4 {margin-bottom:1rem!important}
  /* Two equal columns; a lone last button spans the full row. */
  .question-actions {display:grid;grid-template-columns:1fr 1fr}
  .question-actions>* {width:100%;margin:0!important}
  .question-actions>:last-child:nth-child(odd) {grid-column:1/-1}
  .question-actions .button {font-size:.84rem}
  .session-header {flex-wrap:wrap;row-gap:4px}
  .result-actions .button {flex:1 1 100%}
  .review-row {flex-wrap:wrap;gap:8px}
  .review-row .button {margin-left:auto}
  .question-grid {grid-template-columns:repeat(7,minmax(0,1fr))}
  #dialog-content {padding:20px}
  #dialog-actions {padding:0 20px 20px}
  #dialog-actions .button {flex:1 1 auto}
}
@media(max-width:374.98px) {
  .quiz-container {padding-inline:13px}
  .header-actions .btn {font-size:.74rem;padding-inline:8px}
  .header-actions .btn .icon {display:none}
  .question-grid {grid-template-columns:repeat(6,minmax(0,1fr))}
  .login-panel {padding:22px 18px}
  .login-facts {gap:10px 13px}
  .question-actions .button {font-size:.78rem;padding-inline:8px}
  .rank-table th,.rank-table td {padding:12px 10px}
  .mobile-quiz-bar {gap:8px}
  .mobile-progress {font-size:.76rem}
}
@media(prefers-reduced-motion:no-preference) {.button,.choice {transition:background .15s,border-color .15s}}
@media print {
  .navbar,.footer-modern,.btn,.mobile-quiz-bar {display:none!important}
  body {background:white;display:block}
  .site-banner {box-shadow:none}
  .panel,.content-card {box-shadow:none;border:1px solid #ddd}
}
/* ลิงก์ไปหน้าสรุปเนื้อหาบนหน้าเข้าสอบ */
.lesson-callout {display:flex;align-items:center;gap:12px;margin-top:20px;padding:14px 16px;border-radius:14px;background:var(--icon-bg);color:var(--primary-dark);text-decoration:none;border:1px solid #d9e3fa}
.lesson-callout:hover {border-color:var(--primary)}
.lesson-callout .icon {width:26px;height:26px;color:var(--primary)}
.lesson-callout strong {display:block;font-weight:600}
.lesson-callout small {color:var(--muted);font-size:.82rem}
.header-actions a.btn {display:inline-flex;align-items:center;gap:6px}
