:root{--indigo: #4f46e5;--indigo-dark: #4338ca;--green: #16a34a;--green-bg: #dcfce7;--red: #dc2626;--red-bg: #fee2e2;--ink: #1f2933;--muted: #6b7280;--line: #e5e7eb;--bg: #f8fafc;--card: #ffffff;--radius: 14px;--level-0: #4b4b6b;--level-1: #52526e;--level-2: #5b6270;--level-3: #64748b;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.5}.app{max-width:640px;margin:0 auto;padding:max(env(safe-area-inset-top),16px) 16px 48px}.muted{color:var(--muted)}.error{color:var(--red)}.curriculum h1{font-size:1.6rem;margin:.3em 0 .1em}.course-list{list-style:none;padding:0;margin:16px 0 0;display:flex;flex-direction:column;gap:10px}.course-row{width:100%;display:flex;flex-direction:column;gap:4px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);font:inherit;color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 1px 2px #0000000a}.course-row:active{transform:translateY(1px)}.course-row-title{font-weight:700;font-size:1.05rem}.course-row-desc{font-size:.9rem}.chapters{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:10px}.chapter-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);font:inherit;font-weight:600;color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 1px 2px #0000000a}.chapter-row--stacked{flex-direction:column;align-items:stretch;gap:10px}.chapter-row:active{transform:translateY(1px)}.chapter-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.chapter-meta{display:flex;align-items:center;gap:10px}.badge{flex:none;font-size:.85rem;font-weight:700;color:var(--green);background:var(--green-bg);padding:3px 9px;border-radius:999px}.coverage{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.coverage-track{flex:1;min-width:0;height:8px;background:var(--line);border-radius:999px;overflow:hidden}.coverage-fill{display:block;height:100%;background:var(--indigo);border-radius:999px;transition:width .2s ease}.coverage-count{flex:none;font-size:.8rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.chapter-coverage{margin-top:12px}.loop-header{display:flex;align-items:center;gap:6px;margin-bottom:20px}.loop-title{font-weight:700;flex:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loop-heading{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}.loop-heading .loop-title{flex:none;max-width:100%}.loop-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.loop-progress{font-size:.85rem;color:var(--muted);font-variant-numeric:tabular-nums}.loop-header .btn-ghost{flex:none;width:34px;padding:6px 0;text-align:center;font-size:1.3rem;line-height:1}.loop-header .btn-ghost:disabled{opacity:.3;cursor:default}.card-frame{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 2px 10px #0000000d}.lesson-body :first-child{margin-top:0}.lesson-body img,.lesson-body svg{max-width:100%;height:auto}.lesson-body figure{margin:16px 0}.lesson-body figcaption{color:var(--muted);font-size:.85rem}.concept-tree-card{margin-top:12px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--card)}.concept-tree,.concept-tree ul{list-style:none;margin:0;padding:0}.concept-row{display:flex;align-items:center;padding-inline-end:12px;border-top:1px solid var(--line)}.concept-tree-card>.concept-tree>li:first-child>.concept-row{border-top:none}.concept-toggle{flex:none;width:28px;height:40px;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--muted);font-size:1.1rem;line-height:1;cursor:pointer;transition:transform .15s ease}.concept-toggle--open{transform:rotate(90deg)}button.concept-toggle:hover{color:var(--ink)}.concept-toggle--leaf{cursor:default}.concept-start{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:12px 12px 12px 0;border:none;background:transparent;font:inherit;text-align:left;cursor:pointer}.concept-title{flex:1;min-width:0}.concept-check{flex:none;font-weight:700;color:var(--green)}.concept-go{flex:none;color:var(--line);font-size:1.05rem;line-height:1;transition:color .12s ease,transform .12s ease}.concept-row:has(.concept-start:hover){background:var(--bg)}.concept-row:has(.concept-start:active){background:#eef2ff}.concept-start:hover .concept-go{color:var(--indigo);transform:translate(2px)}.concept-row--leaf .concept-title{color:var(--ink);font-weight:400}.concept-row--parent .concept-title{font-weight:600}.concept-row--parent.concept-row--level-0 .concept-title{color:var(--level-0);font-weight:700;font-size:1.02rem}.concept-row--parent.concept-row--level-1 .concept-title{color:var(--level-1)}.concept-row--parent.concept-row--level-2 .concept-title{color:var(--level-2)}.concept-row--parent.concept-row--level-3 .concept-title{color:var(--level-3)}.concept-row--covered .concept-title{color:var(--muted);font-weight:400}.outline-list{list-style:none;margin:12px 0 0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--card)}.outline-list li+li .outline-item{border-top:1px solid var(--line)}.outline-item{display:flex;align-items:center;gap:10px;width:100%;padding-block:14px;padding-inline-end:16px;border:none;background:transparent;font:inherit;color:var(--ink);text-align:left;cursor:pointer}.outline-item-title{flex:1;min-width:0}.outline-item:active{background:var(--bg)}.outline-item--leaf .outline-item-title{color:var(--ink);font-weight:400}.outline-item--parent .outline-item-title{font-weight:600}.outline-item--parent.outline-item--level-0 .outline-item-title{color:var(--level-0);font-weight:700}.outline-item--parent.outline-item--level-1 .outline-item-title{color:var(--level-1)}.outline-item--parent.outline-item--level-2 .outline-item-title{color:var(--level-2)}.outline-item--parent.outline-item--level-3 .outline-item-title{color:var(--level-3)}.outline-item--current{background:#eef2ff}.outline-item--current .outline-item-title{color:var(--indigo);font-weight:700}.prompt{font-size:1.1rem;font-weight:600;margin-top:0}.choices{list-style:none;padding:0;margin:18px 0;display:flex;flex-direction:column;gap:10px}.choice{width:100%;text-align:left;padding:14px 16px;border:2px solid var(--line);border-radius:12px;background:var(--card);font:inherit;color:var(--ink);cursor:pointer}.choice--selected{border-color:var(--indigo);background:#eef2ff}.choice--correct{border-color:var(--green);background:var(--green-bg)}.choice--wrong{border-color:var(--red);background:var(--red-bg)}.choice:disabled{cursor:default}.feedback{border-radius:12px;padding:14px 16px;margin-bottom:16px}.feedback--correct{background:var(--green-bg)}.feedback--wrong{background:var(--red-bg)}.feedback p{margin:6px 0 0;font-size:.95rem}.recap{text-align:center}.recap h2{margin-top:0}.score{font-size:1.1rem}.btn{display:inline-block;width:100%;margin-top:8px;padding:14px 18px;border:none;border-radius:12px;font:inherit;font-weight:700;cursor:pointer}.btn-primary{background:var(--indigo);color:#fff}.btn-primary:hover{background:var(--indigo-dark)}.btn-primary:disabled{background:#c7cbe6;cursor:default}.btn-ghost{width:auto;margin:0;padding:6px 10px;background:transparent;color:var(--muted);font-size:1.1rem}
