:root{--ink:#1d2433;--ink-soft:#4a5468;--paper:#fbfaf7;--card:#fff;--slate:#2f4858;--accent:#1f6f5c;--accent-ink:#fff;--focus:#b4530a;--radius:12px;color:var(--ink);background:var(--paper);font-family:system-ui,-apple-system,Segoe UI,Roboto,Noto Sans,sans-serif;font-size:18px;line-height:1.5}*{box-sizing:border-box}body{flex-direction:column;min-height:100vh;margin:0;display:flex}#root{flex-direction:column;flex:1;display:flex}main{flex:1;justify-content:center;align-items:flex-start;padding:1.5rem;display:flex}main:focus{outline:none}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{background:var(--card);padding:.5rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{z-index:10;top:1rem;left:1rem}.app-header{background:var(--slate);color:#fff;justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.app-header a{color:#fff}.brand{gap:.4rem;font-size:1.3rem;font-weight:700;text-decoration:none;display:inline-flex}.app-footer{color:var(--ink-soft);padding:1rem 1.5rem;font-size:.9rem}.card{background:var(--card);border-radius:var(--radius);width:100%;max-width:46rem;padding:1.5rem 2rem;box-shadow:0 2px 10px #00000014}.card.narrow{max-width:28rem}form{flex-direction:column;gap:.4rem;margin-top:1rem;display:flex}label{margin-top:.6rem;font-weight:600}input{font:inherit;border:2px solid var(--ink-soft);color:var(--ink);background:#fff;border-radius:8px;padding:.6rem .75rem}.button,button{font:inherit;cursor:pointer;border:2px solid var(--accent);border-radius:8px;padding:.6rem 1.1rem}.button{background:var(--accent);color:var(--accent-ink);margin-top:1rem;text-decoration:none;display:inline-block}.mode-switch{flex-wrap:wrap;gap:.5rem;display:flex}.mode-switch button{color:var(--accent);background:#fff}.mode-switch button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.notice{background:#e6f2ee;border-radius:8px;margin-top:1rem;padding:.75rem 1rem}.app{flex-direction:column;min-height:100vh;display:flex}.app[data-space=learner]{--slate:#3b2f7a;--accent:#b4357a;--paper:#fff8ef}.app[data-space=guardian]{--slate:#22506b;--accent:#1f6f5c;--paper:#f6f9fb}.app[data-space=tutor]{--slate:#1d2433;--accent:#2a5db0;--paper:#f4f5f7}.app{background:var(--paper)}.space-label{opacity:.9;margin-left:.75rem;font-size:.8rem;font-weight:500}.app-header nav{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.app-header nav a.active{text-underline-offset:4px;text-decoration:underline}.stack{flex-direction:column;gap:1.5rem;width:100%;max-width:46rem;display:flex}.card.wide{max-width:64rem}.muted{color:var(--ink-soft);font-weight:400}.hint{color:var(--ink-soft);font-size:.95rem}.error{color:#9b1c1c;background:#fdecec;border-radius:8px;padding:.6rem .8rem}.button.danger{background:#9b1c1c;border-color:#9b1c1c}.button:disabled{opacity:.55;cursor:not-allowed}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0 .25rem;text-decoration:underline}.link-button.on-dark{color:#fff}select{font:inherit;border:2px solid var(--ink-soft);background:#fff;border-radius:8px;padding:.55rem}fieldset{border:1px solid #d5d9e0;border-radius:8px;flex-direction:column;gap:.4rem;margin:1rem 0;padding:.75rem 1rem;display:flex}legend{padding:0 .3rem;font-weight:700}details{margin:.5rem 0}summary{cursor:pointer;color:var(--accent);font-weight:600}.checkbox{align-items:flex-start;gap:.6rem;margin:1rem 0;display:flex}.checkbox input{flex-shrink:0;width:1.4rem;height:1.4rem;margin-top:.2rem}.checkbox label{margin:0;font-weight:500}.checkbox label p{margin:0}.learner-list,.plain{padding:0;list-style:none}.learner{border-top:1px solid #e3e6ea;padding:.75rem 0}.recovery-codes{columns:2;font-size:1.1rem}.secret code{letter-spacing:.05em;word-break:break-all;font-size:1.2rem}.inline-form{flex-direction:column;gap:.4rem;display:flex}.reauth{background:#fff7e6;border-radius:8px;padding:.75rem 1rem}.legal-text{background:#fff;border:1px solid #d5d9e0;border-radius:8px;max-height:24rem;padding:0 1rem;overflow-y:auto}.markdown blockquote{color:var(--ink-soft);border-left:4px solid #d5d9e0;margin:.5rem 0;padding-left:.75rem}.table-wrapper{overflow-x:auto}table{border-collapse:collapse;width:100%;margin:.75rem 0}th,td{text-align:left;vertical-align:top;border:1px solid #d5d9e0;padding:.4rem .6rem}th{background:#eef1f4}@media (width<=40rem){main{padding:.75rem}.card{padding:1rem}.app-header{flex-direction:column;align-items:flex-start;gap:.5rem}}.qr-code{width:14rem;height:14rem;margin:.5rem 0;display:block}.lesson-content{font-size:1.05rem}.lesson-content img{border-radius:8px;max-width:100%;height:auto}.lesson-content figure{margin:1rem 0}.math-block{text-align:center;margin:.75rem 0;display:block;overflow-x:auto}.math-error{color:#9b1c1c}.callout{border-left:6px solid var(--accent);background:#eef6f3;border-radius:8px;margin:1rem 0;padding:.5rem 1rem}.callout-attention{background:#fff4e5;border-color:#b4530a}.callout-info{background:#eaf1fb;border-color:#2a5db0}.callout-title{margin:.25rem 0;font-weight:700}.video-placeholder{aspect-ratio:16/9;color:#fff;background:#1d2433;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.3rem;width:100%;max-width:40rem;display:flex}.video-placeholder .hint{color:#d5d9e0}.video-play{font-size:2.5rem}.video-frame iframe{aspect-ratio:16/9;border:0;border-radius:12px;width:100%;max-width:40rem}.lesson-list{padding:0;list-style:none}.lesson-list li{border-bottom:1px solid #eef1f4;padding:.35rem 0}.lesson-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.badge{border-radius:999px;margin-left:.5rem;padding:.1rem .6rem;font-size:.8rem}.badge.done{color:#1f5c4d;background:#e6f2ee}.badge.todo{color:#8a3f00;background:#fff4e5}.chip{background:#eef1f4;border-radius:999px;margin:0 .25rem;padding:.1rem .6rem;display:inline-block}.quick-add,form.inline{flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin:.5rem 0;display:flex}.quick-add label,form.inline label{margin:0}.competencies li.archived{color:var(--ink-soft);text-decoration:line-through}.competencies .actions{margin-left:.5rem}.toolbar{flex-wrap:wrap;gap:.3rem;margin:.75rem 0;display:flex}.tool{font:inherit;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #c9ced6;border-radius:6px;padding:.3rem .6rem;font-size:.9rem}.tool[aria-pressed=true]{background:var(--accent);color:#fff}.editor .tiptap{background:#fff;border:2px solid #c9ced6;border-radius:8px;min-height:18rem;padding:.75rem 1rem}.editor .tiptap:focus{outline:3px solid var(--focus)}.math-source,.video-source{background:#f4f5f7;border-radius:4px;padding:0 .3rem;font-family:ui-monospace,monospace}.button.secondary{color:var(--accent);background:#fff}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.visually-hidden{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.checkbox-line{font-weight:400;display:block}.stack.wide{max-width:64rem}.questions{gap:1.25rem;padding-left:1.25rem;display:grid}.choice{align-items:center;gap:.5rem;min-height:44px;display:flex}.correction{border-left:4px solid var(--accent);background:var(--paper);margin-top:.5rem;padding:.5rem .75rem}.grade{color:var(--accent);font-size:1.4rem;font-weight:700}.notebook{gap:.5rem;display:grid}.notebook-canvas{border:1px solid var(--ink-soft);border-radius:var(--radius);touch-action:none;height:min(70vh,640px);min-height:420px;overflow:hidden}.formula-list ul{padding:0;list-style:none}.ProseMirror{word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:"liga" 0;position:relative}.ProseMirror [contenteditable=false]{white-space:normal}.ProseMirror [contenteditable=false] [contenteditable=true],.ProseMirror pre{white-space:pre-wrap}img.ProseMirror-separator{border:none!important;width:0!important;height:0!important;margin:0!important;display:inline!important}.ProseMirror-gapcursor{pointer-events:none;margin:0;display:none;position:absolute}.ProseMirror-gapcursor:after{content:"";border-top:1px solid #000;width:20px;animation:1.1s steps(2,start) infinite ProseMirror-cursor-blink;display:block;position:absolute;top:-2px}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.ProseMirror-hideselection ::selection{background:0 0}.ProseMirror-hideselection ::selection{background:0 0}.ProseMirror-hideselection *{caret-color:#0000}.ProseMirror-focused .ProseMirror-gapcursor{display:block}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.xp-bar{gap:.25rem;max-width:24rem;display:grid}.xp-bar progress{width:100%;height:.9rem;accent-color:var(--accent)}.badges,.competencies{gap:.35rem;padding:0;list-style:none;display:grid}.competencies li[data-level=acquired] strong,.competencies li[data-level=exceeded] strong{color:var(--accent)}.grade-chart{margin:.75rem 0}.grade-chart svg{width:100%;max-width:28rem;height:auto}.grade-chart .grid{stroke:#d8dbe2;stroke-width:1px}.grade-chart .axis{fill:var(--ink-soft);font-size:10px}.grade-chart .line{fill:none;stroke:var(--accent);stroke-width:2px}.grade-chart .dot{fill:var(--accent)}.grades-table{border-collapse:collapse;margin-top:.5rem}.grades-table th,.grades-table td{text-align:left;padding:.25rem .75rem .25rem 0}.suggestion-body{white-space:pre-wrap;overflow-wrap:anywhere}
