:root{--background:#f7f9fc;--surface:#fff;--surface-muted:#edf2f7;--border:#d9e2ec;--text:#172033;--muted:#5f6f85;--primary:#2166ac;--primary-dark:#174b80;--success:#16835b;--danger:#c2413b;--warning:#b7791f;--radius:8px}*{box-sizing:border-box}body{background:var(--background);color:var(--text);margin:0;font-family:Arial,Helvetica,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{grid-template-columns:260px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--surface);padding:24px 18px}.sidebar-brand{margin-bottom:28px;font-size:18px;font-weight:700}.sidebar-section{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:24px 10px 8px;font-size:12px;font-weight:700}.nav-link{border-radius:var(--radius);color:var(--muted);align-items:center;gap:10px;padding:10px;display:flex}.nav-link.active,.nav-link:hover{background:var(--surface-muted);color:var(--text)}.main{min-width:0}.topbar{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:72px;padding:0 32px;display:flex}.page{padding:32px}.page-header{justify-content:space-between;gap:18px;margin-bottom:24px;display:flex}.page-header h1{margin:0 0 8px;font-size:30px;line-height:1.2}.page-header p{color:var(--muted);margin:0}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.metric{color:var(--muted);font-size:14px}.metric strong{color:var(--text);margin-bottom:4px;font-size:28px;display:block}.button{background:var(--primary);border:1px solid var(--primary);border-radius:var(--radius);color:#fff;cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:10px 14px;display:inline-flex}.button.secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.button.danger{background:var(--danger);border-color:var(--danger)}.button:disabled{cursor:not-allowed;opacity:.55}.stack{gap:12px;display:grid}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:12px}.table th{color:var(--muted);font-size:13px;font-weight:700}.badge{text-transform:capitalize;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700;display:inline-flex}.badge.draft{color:#475569;background:#edf2f7}.badge.needs_review{color:var(--warning);background:#fff7d6}.badge.revision_requested{color:var(--danger);background:#ffe5e2}.badge.approved,.badge.published{color:var(--success);background:#dcfce7}.question-choice{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:inherit;text-align:left;align-items:flex-start;gap:12px;width:100%;padding:12px;display:flex}.question-choice.interactive{cursor:pointer}.question-choice.interactive:hover,.question-choice.selected{border-color:var(--primary);background:#f0f6fc}.question-choice.correct{border-color:var(--success);background:#f0fdf4}.question-choice.incorrect{border-color:var(--danger);background:#fff1f0}.choice-label{background:var(--surface-muted);border-radius:999px;flex:0 0 28px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.choice-body{min-width:0}.choice-meta{color:var(--muted);margin:4px 0 0;font-size:13px}.metric-sub{color:var(--muted);margin-top:4px;font-size:12px;display:block}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:999px;padding:8px 12px;font-size:13px;font-weight:600}.chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.chip.selectable{background:var(--surface)}.chip.selectable.active{border-color:var(--primary);color:var(--primary-dark);background:#e8f1fa}.progress-track{background:var(--surface-muted);border-radius:999px;height:10px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:999px;height:10px}.feedback-banner{border-radius:var(--radius);align-items:center;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.feedback-banner.correct{color:var(--success);background:#f0fdf4}.feedback-banner.incorrect{color:var(--danger);background:#fff1f0}.session-meta{color:var(--muted);margin-bottom:16px;font-size:14px}.flashcard{min-height:220px}.flashcard-side{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin-bottom:10px;font-size:12px;font-weight:700}.checkbox-row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.checkbox-row label{color:var(--text);align-items:center;gap:8px;display:inline-flex}.action-row{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.table-link{color:var(--primary);font-weight:600}.topbar-user{align-items:center;gap:12px;display:flex}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-panel{width:100%;max-width:440px}.auth-brand{color:var(--primary);letter-spacing:.04em;text-transform:uppercase;margin:0 0 8px;font-size:14px;font-weight:700}.auth-panel h1{margin:0 0 8px}.auth-description{color:var(--muted);margin:0 0 20px}.auth-error{color:var(--danger);margin:0}.auth-success{color:var(--success);margin:0}.auth-links{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}.auth-links a{color:var(--primary);font-size:14px;font-weight:600}.bottom-line{background:var(--surface-muted);border-left:4px solid var(--primary);border-radius:var(--radius);padding:12px 14px}.bottom-line h2,.bottom-line h3{margin:0 0 8px}.bottom-line p{margin:0}.session-timer{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.session-timer strong{font-size:28px;line-height:1}.session-timer span{color:var(--muted);font-size:12px}.session-timer.urgent,.session-timer.urgent span{color:var(--danger)}.form-grid{gap:14px;display:grid}.field{gap:6px;display:grid}.field label{color:var(--muted);font-size:13px;font-weight:700}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.field textarea{resize:vertical;min-height:104px}@media (max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{border-bottom:1px solid var(--border);border-right:0}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.page,.topbar{padding-left:18px;padding-right:18px}}
