:root{--bg:#f4f6fb;--card-bg:#fff;--text:#1f2937;--muted:#6b7280;--border:#e2e8f0;--primary:#3b5bdb;--primary-hover:#2f4bb8;--correct:#2f9e44;--incorrect:#e03131;--warn-bg:#fff4e6;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--text);background:linear-gradient(160deg,#eef2ff 0%,#f4f6fb 45%,#fdf2f8 100%);margin:0}.bg-decor{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg-shape{opacity:.35;filter:saturate(1.1);animation-name:bg-float;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate;display:block}@keyframes bg-float{0%{transform:translateY(0)rotate(0)}to{transform:translateY(-22px)rotate(6deg)}}.bg-shape-rhombus{animation-name:bg-float-rhombus}@keyframes bg-float-rhombus{0%{transform:rotate(45deg)translateY(0)}to{transform:rotate(45deg)translateY(-18px)}}.bg-shape-parallelogram{animation-name:bg-float-para}@keyframes bg-float-para{0%{transform:skew(-18deg)translateY(0)}to{transform:skew(-18deg)translateY(-16px)}}@media (prefers-reduced-motion:reduce){.bg-shape{animation:none}}.center-page{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.login-card,.flow-card{background:var(--card-bg);border-radius:16px;width:100%;max-width:480px;padding:28px;box-shadow:0 8px 24px #0f172a14}.login-card h1,.info-card h2{margin-top:0}.subtitle{color:var(--muted);margin-top:-8px}.login-card label{color:var(--muted);margin-bottom:14px;font-size:14px;display:block}.login-card input{border:1px solid var(--border);border-radius:8px;width:100%;margin-top:6px;padding:10px 12px;font-size:16px;display:block}.primary-btn{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px 18px;font-size:15px;font-weight:600}.primary-btn:hover{background:var(--primary-hover)}.primary-btn:disabled{cursor:not-allowed;background:#a5b4fc}.secondary-btn{color:var(--text);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:10px;width:100%;padding:12px 18px;font-size:15px;font-weight:600}.btn-row{gap:10px;display:flex}.btn-row>*{flex:1}.error-text{color:var(--incorrect);font-size:14px}.progress-wrap{margin-bottom:16px}.progress-label{color:var(--muted);justify-content:space-between;margin-bottom:6px;font-size:13px;display:flex}.progress-track{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.progress-fill{background:var(--primary);height:100%;transition:width .2s}.question-figure{justify-content:center;margin-bottom:12px;display:flex}.quad-figure{width:100%;max-width:280px;height:auto}.quad-outline{fill:none;stroke:#334155;stroke-width:2.5px}.quad-diagonal{stroke:#94a3b8;stroke-width:1.5px;stroke-dasharray:4 3}.quad-mark{stroke:#334155;stroke-width:2px}.quad-label{fill:#1e293b;font-size:13px;font-weight:600}.figure-caption{text-align:center;color:var(--muted);margin:-4px 0 10px;font-size:11px}.question-prompt{margin:8px 0 4px;font-size:17px;font-weight:600;line-height:1.5}.question-hint{color:var(--muted);margin:0 0 12px;font-size:13px}.choice-list{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.choice{text-align:left;border:1.5px solid var(--border);cursor:pointer;background:#fff;border-radius:10px;align-items:center;gap:10px;padding:12px 14px;font-size:15px;display:flex}.choice.selected{border-color:var(--primary);background:#eef1ff}.choice.correct{border-color:var(--correct);background:#ebfbee}.choice.incorrect{border-color:var(--incorrect);background:#fff5f5}.choice:disabled{cursor:default}.choice-marker{color:var(--muted);font-weight:700}.feedback{border-radius:10px;padding:14px}.feedback-correct{background:#ebfbee}.feedback-incorrect{background:#fff5f5}.feedback-title{margin:0 0 6px;font-weight:700}.feedback-explanation{color:var(--text);margin:0 0 14px;font-size:14px;line-height:1.5}.info-card{text-align:center}.score-line{font-size:18px}.concept-table{border-collapse:collapse;width:100%;margin:16px 0;font-size:14px}.concept-table th,.concept-table td{border-bottom:1px solid var(--border);text-align:left;padding:8px 6px}.pass{color:var(--correct);font-weight:600}.fail{color:var(--incorrect);font-weight:600}.teacher-page{max-width:1100px;margin:0 auto;padding:24px 16px 60px}.teacher-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.teacher-controls{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.teacher-controls label{color:var(--muted);font-size:14px}.teacher-controls input{border:1px solid var(--border);border-radius:6px;margin-left:6px;padding:6px 8px}.teacher-controls .secondary-btn,.teacher-controls .primary-btn{width:auto}.tab-row{gap:6px;display:flex}.tab{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;padding:8px 14px;font-size:14px;font-weight:600}.tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.overview-table{border-collapse:collapse;background:#fff;border-radius:10px;width:100%;overflow:hidden}.overview-table th,.overview-table td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px;font-size:14px}.overview-table th{background:#f1f3f9}.clickable-row{cursor:pointer}.clickable-row:hover{background:#f8fafc}.concept-avg-list{background:#fff;border-radius:10px;margin-bottom:20px;padding:16px}.concept-avg-row{grid-template-columns:220px 1fr 60px;align-items:center;gap:10px;margin-bottom:8px;font-size:13px;display:grid}.concept-avg-bar-track{background:var(--border);border-radius:5px;height:10px;overflow:hidden}.concept-avg-bar-fill{height:100%}.concept-avg-num{text-align:right;color:var(--muted)}.heatmap-scroll{background:#fff;border-radius:10px;padding:8px;overflow-x:auto}.heatmap-table{border-collapse:collapse;width:100%;font-size:12px}.heatmap-table th,.heatmap-table td{text-align:center;white-space:nowrap;padding:8px 10px}.heatmap-student-name{font-weight:600;text-align:left!important}.heatmap-cell{border-radius:4px}.cell-good{color:#2f9e44;background:#ebfbee}.cell-mid{color:#e8590c;background:#fff4e6}.cell-bad{color:#e03131;background:#fff5f5}.cell-empty{color:var(--muted);background:#f1f3f9}
