:root{--bg: #f6f9fc;--surface: #ffffff;--surface-2: #f1f5f9;--text: #0a1a2f;--muted: #64748b;--border: #e2e8f0;--primary: #1e6cff;--primary-dark: #0f4dc8;--success: #16a34a;--warning: #d97706;--danger: #dc2626;--accent: #fff86b;--shadow: 0 4px 16px rgba(10, 26, 47, .06);--radius: 12px;--mono: "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app-shell{display:flex;flex-direction:column;min-height:100vh}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.brand-link{text-decoration:none;color:var(--text)}.brand{display:inline-flex;align-items:center;gap:10px;font-size:16px}.brand-mark{display:inline-flex}.brand-text strong{font-weight:700}.brand-divider{margin:0 4px;color:var(--muted)}.header-nav{display:flex;gap:18px}.header-nav a{color:var(--muted);text-decoration:none;font-weight:500}.header-nav a:hover{color:var(--text)}.app-main{flex:1;padding:32px 24px 64px;max-width:1100px;width:100%;margin:0 auto}.app-footer{padding:24px;text-align:center;color:var(--muted);font-size:13px;border-top:1px solid var(--border);background:var(--surface)}.page-narrow{max-width:640px;margin:24px auto}.hero h1{font-size:40px;letter-spacing:-.02em;margin:0 0 12px}.lede{font-size:18px;color:var(--muted);max-width:600px}.cta-row{display:flex;gap:12px;margin:24px 0;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 18px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;transition:transform .05s ease,box-shadow .1s ease,background .1s ease}.btn:hover{box-shadow:var(--shadow)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--surface)}.btn-link{background:none;border:none;color:var(--primary);padding:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:32px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.redeem-form{display:flex;gap:8px;margin-top:12px}.redeem-form input{flex:1;padding:12px 14px;border-radius:10px;border:1px solid var(--border);font-family:var(--mono);font-size:18px;letter-spacing:.12em;text-transform:uppercase}.error{color:var(--danger)}.success{color:var(--success)}.muted{color:var(--muted)}.attempt-bar{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow)}.timer{display:flex;flex-direction:column;align-items:flex-end}.timer-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.timer-value{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--text)}.timer-danger .timer-value{color:var(--danger)}.question{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.question-head{display:flex;justify-content:space-between;margin-bottom:16px;color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.08em}.question-cat{background:var(--surface-2);padding:2px 10px;border-radius:999px}.question-prompt p{line-height:1.6}.question-prompt code{background:var(--surface-2);padding:1px 6px;border-radius:4px;font-family:var(--mono)}.question-prompt pre.code{background:#0f172a;color:#fef9c3;padding:14px 18px;border-radius:10px;overflow-x:auto;line-height:1.5;font-family:var(--mono);white-space:pre}.question-prompt pre.code-wine,.question-prompt pre.code-grid{background:#fff8b8;color:#1a1a00;border:1px solid #f0e269}.question-prompt h2{font-size:18px;margin:16px 0 8px}.question-prompt h3{font-size:15px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 6px}.question-prompt ul{margin:8px 0;padding-left:22px}.question-prompt ul li{margin:4px 0}.question-prompt table.q-table{border-collapse:collapse;margin:12px 0;font-size:14px}.question-prompt table.q-table th,.question-prompt table.q-table td{border:1px solid var(--border);padding:6px 12px;vertical-align:top;text-align:left;font-family:var(--mono)}.question-prompt table.q-table th{background:var(--surface-2);font-family:inherit;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.question-prompt table.q-table code{background:transparent;padding:0}.question-instruction{margin-top:12px;color:var(--muted);font-size:14px;text-transform:uppercase;letter-spacing:.05em}.options{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:8px}.option{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--border);border-radius:10px;cursor:pointer;font-family:var(--mono);background:var(--surface)}.option:hover{border-color:var(--primary)}.option-checked{border-color:var(--primary);background:#eef3ff}.option-correct{border-color:#16a34a;background:#dcfce7}.option-wrong{border-color:#dc2626;background:#fee2e2}.mark{font-weight:700;margin-left:8px}.mark-ok{color:var(--success)}.mark-bad{color:var(--danger)}.options-table{width:100%;border-collapse:separate;border-spacing:0 6px;margin-top:12px}.options-table thead th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:4px 12px}.options-table tbody tr{background:var(--surface);cursor:pointer}.options-table tbody tr:hover{background:#f8fafc}.options-table tbody td{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:12px;font-family:var(--mono);font-size:14px}.options-table tbody td:first-child{border-left:1px solid var(--border);border-top-left-radius:10px;border-bottom-left-radius:10px}.options-table tbody td:last-child{border-right:1px solid var(--border);border-top-right-radius:10px;border-bottom-right-radius:10px}.options-table tbody tr.option-checked td{border-color:var(--primary);background:#eef3ff}.options-table tbody tr.option-correct td{border-color:#16a34a;background:#dcfce7}.options-table tbody tr.option-wrong td{border-color:#dc2626;background:#fee2e2}.option-radio{width:44px;text-align:center}.page-results .category-card{margin-bottom:12px}.category-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:4px 0 10px;background:transparent;border:none;font-size:16px;font-weight:600;cursor:pointer;text-align:left;color:var(--text)}.category-toggle:hover{color:var(--primary)}.category-toggle-score{font-family:var(--mono);font-size:14px;color:var(--muted);font-weight:500}.category-detail{margin-top:16px;border-top:1px solid var(--border);padding-top:16px}.category-perfect{background:linear-gradient(135deg,#dcfce7,#f0fdf4);border-color:#86efac}.category-toggle-static{cursor:default}.dojo-cta{background:linear-gradient(135deg,#fff8b8,#fff3c4);border-color:#f0e269}.dojo-cta h2{margin-top:0}.review-block{margin-top:16px;border-radius:10px;border:1px solid var(--border);padding:16px 18px;background:var(--surface)}.review-block-ok{border-left:4px solid var(--success)}.review-block-bad{border-left:4px solid var(--danger)}.review-block-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.review-block h4{margin:14px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.review-status.status-ok{color:var(--success)}.review-status.status-bad{color:var(--danger)}.coaching{margin-top:10px;background:var(--surface-2);padding:12px 14px;border-radius:8px;font-size:14px;line-height:1.5}.coaching p{margin:0}.wrong-category{margin-bottom:24px}.review-card{padding:0;margin-bottom:8px;overflow:hidden}.review-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:14px 20px;background:transparent;border:none;font-size:14px;font-weight:600;cursor:pointer;text-align:left;color:var(--text);font-family:var(--mono)}.review-toggle:hover{background:var(--surface-2)}.review-status{color:var(--danger);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.review-body{padding:0 20px 20px;border-top:1px solid var(--border)}.review-body h4{margin:14px 0 6px;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.attempt-nav{display:flex;justify-content:space-between;margin-top:20px}.question-jump{list-style:none;padding:0;margin:20px 0 0;display:flex;gap:6px;flex-wrap:wrap}.jump{width:36px;height:36px;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-weight:600;cursor:pointer}.jump-answered{background:#e0e7ff;border-color:#a5b4fc}.jump-correct{background:#dcfce7;border-color:#86efac;font-size:16px}.jump-wrong{background:#fee2e2;border-color:#fca5a5}.jump-current{outline:2px solid var(--primary)}.attempt-bar-right{display:flex;align-items:center;gap:16px}.progress{margin:8px 0;flex:1;min-width:200px}.progress-label{display:flex;justify-content:space-between;gap:16px;color:var(--muted);font-size:13px;margin-bottom:4px;white-space:nowrap}.progress-track{height:10px;background:var(--surface-2);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#1e6cff,#4f8dff);transition:width .3s ease}.progress-mastery .progress-fill{background:linear-gradient(90deg,#d97706,#f59e0b)}.badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:linear-gradient(135deg,#fff86b,#f0e269);border:1px solid #d4c14a;border-radius:999px;font-weight:600;font-size:13px}.badge-row{display:flex;gap:8px;flex-wrap:wrap}.result-headline{display:flex;gap:24px;align-items:center;margin:16px 0}.score{font-size:56px;font-weight:700;font-family:var(--mono);padding:16px 24px;border-radius:var(--radius);background:var(--surface-2)}.score-passed{background:#dcfce7;color:var(--success)}.score-pending{background:#fef3c7;color:var(--warning)}.category-grid{margin-top:24px}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:16px 0 32px}.weakness-list{display:flex;list-style:none;padding:0;gap:8px}.weakness-list li{padding:6px 12px;border-radius:999px;background:var(--surface-2);font-family:var(--mono);font-size:13px}.attempts-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.attempts-table th,.attempts-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}.attempts-table th{background:var(--surface-2);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.admin-head{display:flex;justify-content:space-between;align-items:center}.invite-form{display:grid;grid-template-columns:1fr 1fr auto auto;gap:8px;align-items:center}.invite-form input,.invite-form select{padding:10px 12px;border-radius:10px;border:1px solid var(--border)}.code-list{list-style:none;padding:0}.code-list li{padding:8px 12px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:13px}.loading{color:var(--muted);padding:32px;text-align:center}.feedback{margin-top:16px;padding:16px 20px;border-radius:var(--radius);border:1px solid var(--border)}.feedback h3{margin:0 0 8px}.feedback-ok{background:#dcfce7;border-color:#86efac}.feedback-wrong{background:#fee2e2;border-color:#fca5a5}.help-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;z-index:100;display:flex;justify-content:flex-end}.help-panel{background:var(--surface);width:min(560px,100%);height:100%;overflow-y:auto;padding:24px 28px;box-shadow:-8px 0 24px #0a1a2f2e;animation:slide-in .18s ease-out}@keyframes slide-in{0%{transform:translate(40px);opacity:0}to{transform:translate(0);opacity:1}}.help-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.help-head h2{margin:0;font-size:20px}.help-table{width:100%;border-collapse:collapse;margin:16px 0;font-size:14px}.help-table th,.help-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 6px;vertical-align:top}.help-table th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.help-table code{font-family:var(--mono);background:var(--surface-2);padding:1px 6px;border-radius:4px}.help-tips{padding-left:20px}.help-tips li{margin:6px 0}
