:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;--bg: #0f172a;--fg: #e2e8f0;--accent: #38bdf8;--card: #1e293b;--muted: #94a3b8}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--fg)}a{color:var(--accent)}#root{min-height:100vh}.app-shell{max-width:960px;margin:0 auto;padding:1.25rem}.card{background:var(--card);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem}nav.app-nav{display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:1px solid #334155}button,.btn{background:var(--accent);color:#0f172a;border:none;border-radius:8px;padding:.5rem .9rem;font-weight:600;cursor:pointer}input,select{width:100%;padding:.5rem .65rem;border-radius:8px;border:1px solid #475569;background:#0b1220;color:var(--fg);margin:.35rem 0 .75rem}label{display:block;color:var(--muted);font-size:.9rem}.muted{color:var(--muted)}.error{color:#f87171}.question{margin:1rem 0;padding:.75rem 0;border-top:1px solid #334155}.prompt{font-weight:600}.choice{display:block;margin:.35rem 0;color:var(--fg)}.reveal{margin-top:.75rem;padding:.65rem .75rem;background:#0b1220;border-radius:8px}.ok{color:#4ade80;font-weight:600}.block{margin:.75rem 0}.block-body{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem;margin:.25rem 0 0}.topic h2{font-size:1.1rem;margin-bottom:.35rem}fieldset{border:none;padding:0;margin:0 0 .75rem}.progress-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:.75rem 0}.progress-card{background:#0b1220;border-radius:10px;padding:.75rem .9rem;text-align:center}.progress-card-label{display:block;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.progress-card-value{display:block;font-size:1.5rem;font-weight:700;margin-top:.15rem}.progress-activity{margin:.25rem 0 .5rem}.topic-progress-heading,.session-progress-heading{font-size:1.05rem;margin:1rem 0 .5rem}.topic-progress-list{list-style:none;padding:0;margin:0}.topic-progress-row{display:grid;grid-template-columns:1fr auto auto;gap:.75rem;align-items:center;padding:.55rem 0;border-top:1px solid #334155;font-size:.95rem}.topic-progress-id{word-break:break-word}.topic-status{text-transform:capitalize;color:var(--muted);font-size:.85rem}.topic-status-completed{color:#4ade80}.topic-status-in_progress{color:var(--accent)}.topic-status-available{color:var(--fg)}.topic-status-locked{color:#64748b}.topic-best{color:var(--muted);font-variant-numeric:tabular-nums}.cta-soft{margin:1rem 0;padding:.75rem 1rem;background:#0b1220;border-radius:10px;border:1px solid #334155}.session-progress{margin-top:1rem}.error-block{margin:.75rem 0}.parent-section{margin-top:1.25rem;padding-top:1rem;border-top:1px solid #334155}.parent-section h2{font-size:1.05rem;margin:0 0 .5rem}.parent-checkbox{display:flex;align-items:center;gap:.5rem;margin:.5rem 0 .75rem;color:var(--fg)}.parent-checkbox input{width:auto;margin:0}textarea{width:100%;padding:.5rem .65rem;border-radius:8px;border:1px solid #475569;background:#0b1220;color:var(--fg);margin:.35rem 0 .75rem;font:inherit}.parent-topic-list{margin:.5rem 0 0;padding-left:1.25rem}.parent-topic-list li{margin:.25rem 0}.teacher-section{margin-top:1.25rem;padding-top:1rem;border-top:1px solid #334155}.teacher-section h2{font-size:1.05rem;margin:0 0 .5rem}.teacher-progress-list{margin:.5rem 0 0;padding-left:1.25rem}.teacher-progress-list li{margin:.5rem 0}.entitlement-banner{margin:1rem 0;padding:.85rem 1rem;border-radius:10px;background:#0b1220;border:1px solid #334155}.entitlement-banner--soft-gate{border-color:#f59e0b}.entitlement-status{margin:0 0 .35rem}.soft-gate-note{color:#fbbf24;font-size:.9rem}.billing-actions{margin:1rem 0;display:flex;gap:.75rem;flex-wrap:wrap}.checkout-stub button:disabled{opacity:.55;cursor:not-allowed}.checkout-stub-link{word-break:break-all}.invite-section{margin:1.25rem 0;padding-top:.75rem;border-top:1px solid #334155}.invite-section h2{font-size:1.05rem;margin-bottom:.35rem}.invite-result{margin:1.25rem 0;padding:.85rem 1rem;border-radius:10px;background:#0b1220;border:1px solid #334155}.invite-code{font-size:1.25rem;letter-spacing:.04em;font-weight:700}.invite-actions{margin-top:.75rem;display:flex;gap:.75rem;flex-wrap:wrap}
