:root{--bg:#f2efe9;--bg-2:#eae6dd;--surface:#faf8f3;--surface-2:#f0ece4;--ink:#23252a;--ink-2:#4b4e55;--muted:#7c7a74;--line:#d9d3c7;--line-2:#c3bcad;--accent:#b4553f;--accent-ink:#fff;--accent-soft:#f1e0d8;--ok:#4c6355;--ok-soft:#e3eae3;--warn:#8c3b2b;--warn-soft:#efdcd5;--font-display:"Spectral", "PT Serif", Georgia, serif;--font-ui:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--radius:3px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:600}a{color:var(--accent)}.btn{font:600 14px var(--font-ui);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;padding:11px 18px;transition:background .15s,border-color .15s,color .15s}.btn:hover{border-color:var(--ink-2)}.btn:disabled{opacity:.55;cursor:default}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover{background:#9e4936;border-color:#9e4936}.btn--debug{color:#000;background:#facc15;border-color:#000}.btn--debug:hover{color:#000;background:#fde047;border-color:#000}.btn--ghost{color:var(--ink-2);text-underline-offset:4px;background:0 0;border-color:#0000;padding:8px 4px;text-decoration:underline}.muted{color:var(--muted)}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:11px;font-weight:600}.chip{background:var(--accent-soft);color:var(--accent);border-radius:999px;align-items:center;padding:4px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.landing{background:radial-gradient(120% 70% at 50% -10%,#b4553f1a,#0000 60%),radial-gradient(90% 60% at 50% 110%,#4c63551f,#0000 60%);place-items:center;min-height:100%;padding:56px 24px;display:grid;position:relative;overflow:hidden}.landing__inner{text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.portrait{aspect-ratio:.74;border:1px solid var(--line-2);background:#1b1b1d;border-radius:999px 999px 3px 3px;width:clamp(240px,38vh,360px);margin:0 0 clamp(26px,4vh,42px);position:relative;overflow:hidden;box-shadow:0 28px 50px -30px #23252a8c}.portrait img{object-fit:cover;object-position:50% 18%;filter:sepia(.24)saturate(.85)contrast(1.03);width:100%;height:100%;display:block}.portrait:after{content:"";pointer-events:none;border:1px solid #ffffff29;border-radius:999px 999px 2px 2px;position:absolute;inset:9px}.wordmark{letter-spacing:-.035em;color:var(--ink);font-size:clamp(58px,11vw,132px);line-height:.92}.rule{background:var(--line-2);width:44px;height:1px;margin:0 0 26px}.soon{font-family:var(--font-display);letter-spacing:.02em;color:var(--accent);margin:18px 0 0;font-size:clamp(16px,1.8vw,21px);font-style:italic}.auth{background:radial-gradient(100% 60% at 50% 0%, #b4553f14, transparent 65%), var(--bg);place-items:center;min-height:100%;padding:40px 24px;display:grid}.auth__card{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:18px;width:min(400px,100%);padding:40px 36px 34px;display:flex;box-shadow:0 24px 50px -36px #23252a80}.auth__brand{font-family:var(--font-display);color:var(--accent);align-items:center;gap:10px;font-size:19px;display:flex}.auth__brand svg,.auth__brand img{width:24px;height:24px}.auth__title{letter-spacing:-.02em;margin-top:6px;font-size:31px}.auth__sub{color:var(--muted);margin:-8px 0 4px;font-size:13px}.field{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);flex-direction:column;gap:6px;font-size:11px;font-weight:600;display:flex}.field input,.field select,.field textarea{font:400 15px var(--font-ui);letter-spacing:0;text-transform:none;color:var(--ink);border:1px solid var(--line-2);border-radius:var(--radius);background:0 0;outline:none;margin-top:2px;padding:11px 12px;transition:border-color .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.auth__error{color:var(--warn);background:var(--warn-soft);border-radius:var(--radius);margin:0;padding:10px 12px;font-size:13px}.notice-ok{color:var(--ok);background:var(--ok-soft);border-radius:var(--radius);margin:0;padding:10px 12px;font-size:13px}.auth__tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);gap:4px;padding:4px;display:flex}.auth__tab{color:var(--muted);font:600 13px var(--font-ui);cursor:pointer;background:0 0;border:none;border-radius:2px;flex:1;padding:8px 10px}.auth__tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #23252a0f}.appbar{background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:14px 28px;display:flex}.appbar__brand{font-family:var(--font-display);color:var(--ink);align-items:center;gap:10px;font-size:19px;display:flex}.appbar__brand svg{width:24px;height:24px;color:var(--accent)}.appbar__user{color:var(--muted);align-items:center;gap:14px;font-size:13px;display:flex}.appbar__user b{color:var(--ink);font-weight:600}.app-shell{background:#fff;flex-direction:column;min-height:100%;display:flex}.hotbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:16px;padding:12px 28px;display:flex}.hotbar__brand{font-family:var(--font-display);color:var(--ink);align-items:center;gap:10px;font-size:19px;text-decoration:none;display:flex}.hotbar__brand svg,.hotbar__brand img{object-fit:cover;width:24px;height:24px}.hotbar__nav{align-items:center;gap:6px;display:flex}.hotbar__link{font:600 14px var(--font-ui);color:var(--ink);border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);padding:8px 12px;text-decoration:none}.hotbar__link:hover{border-color:var(--ink-2)}.icon-btn{width:36px;height:36px;color:var(--ink-2);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex}.icon-btn:hover{color:var(--ink);background:var(--surface-2);border-color:var(--line)}.notif-wrap{position:relative}.notif-badge{background:var(--accent);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;display:inline-flex;position:absolute;top:-2px;right:-2px}.notif-dropdown{background:var(--surface);border:1px solid var(--line);z-index:20;border-radius:6px;width:340px;max-height:420px;position:absolute;top:calc(100% + 8px);right:0;overflow:auto;box-shadow:0 18px 40px -24px #23252a73}.notif-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.notif-head b{font-size:14px}.notif-item{border-top:1px solid var(--line);padding:10px 12px}.notif-item--unread{background:#fffaf7}.notif-text{color:var(--ink);margin-bottom:8px;font-size:13px}.notif-actions{gap:8px;display:flex}.invite-create{grid-template-columns:1fr 1fr auto;align-items:end;gap:12px;margin:8px 0 14px;display:grid}.invite-info{min-width:0}@media (width<=860px){.invite-create{grid-template-columns:1fr}.notif-dropdown{width:300px}}.stub-page{background:#fff;flex:1;min-height:60vh}.home-page{background:var(--bg);flex:1;width:100%;max-width:980px;margin:0 auto;padding:40px 28px 72px}.home-actions{margin-top:18px}.home-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.home-inline-forms,.ws-menu{max-width:520px;margin-top:18px}.ws-menu__tabs{margin-bottom:10px}.ws-menu__panel{margin:0}.card-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;display:flex}.card-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.card-actions .btn{text-decoration:none}.btn--sm{padding:6px 10px;font-size:12px}.invite-code{color:var(--ink-2);margin:4px 0 0;font-size:13px}.invite-code b{letter-spacing:.08em;color:var(--accent);font-family:ui-monospace,SFMono-Regular,monospace}.stack{flex-direction:column;gap:14px;display:flex}.panel--wide{grid-column:1/-1}.panel-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.member-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.member-item{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.member-item:first-child{border-top:none;padding-top:0}.member-item b{font-size:14px;font-weight:600}.invite-code-inline{letter-spacing:.08em;color:var(--accent);font-family:ui-monospace,SFMono-Regular,monospace}.chip--muted{background:var(--surface-2);color:var(--muted)}@media (width<=560px){.home-head{flex-direction:column;align-items:stretch}}.landing__actions{margin-top:28px}.account-page{background:var(--bg);flex:1;width:100%;max-width:980px;margin:0 auto;padding:40px 28px 72px}.account-grid{grid-template-columns:1fr 360px;align-items:start;gap:18px;margin-top:28px;display:grid}.panel{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:16px;padding:24px;display:flex}.panel__title{letter-spacing:-.01em;font-size:22px}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.avatar-row{align-items:center;gap:16px;display:flex}.avatar-preview{object-fit:cover;border:1px solid var(--line);background:var(--surface-2);border-radius:50%;flex:none;width:64px;height:64px}.avatar-preview--empty{display:block}.roles-field{border:none;min-width:0;margin:0;padding:0}.roles-field legend{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:11px;font-weight:600}.roles-options{flex-wrap:wrap;gap:14px;display:flex}.check{color:var(--ink);text-transform:none;letter-spacing:0;cursor:pointer;align-items:center;gap:8px;font-size:14px;font-weight:500;display:inline-flex}.check input{width:16px;height:16px;accent-color:var(--accent);margin:0}.hint{margin:6px 0 0;font-size:12px}@media (width<=860px){.account-grid{grid-template-columns:1fr}}@media (width<=560px){.hotbar{padding:12px 16px}.hotbar__nav .btn--ghost{display:none}.field-row{grid-template-columns:1fr}.account-page{padding:28px 16px 56px}}.dashboard{max-width:920px;margin:0 auto;padding:56px 28px 72px}.dashboard__title{letter-spacing:-.025em;font-size:clamp(32px,5vw,46px);line-height:1.05}.dashboard__lead{color:var(--ink-2);max-width:560px;margin:10px 0 0}.schools{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:34px;display:grid}.school{background:var(--surface);border:1px solid var(--line);border-radius:6px;flex-direction:column;gap:10px;padding:20px;display:flex}.school h2{font-family:var(--font-ui);font-size:15.5px;font-weight:600}.school p{color:var(--muted);margin:0;font-size:12px}.loading{min-height:100%;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;place-items:center;font-size:13px;display:grid}@media (width<=560px){.auth__card{padding:30px 22px}.appbar{padding:12px 16px}.appbar__user span{display:none}.dashboard{padding:36px 16px 56px}.landing{padding:40px 16px}}.avatar-pick{cursor:pointer;background:0 0;border:none;border-radius:999px;padding:0;line-height:0;position:relative}.avatar-pick .avatar-preview{display:block}.avatar-pick__hint{color:#fff;opacity:0;background:#00000073;border-radius:999px;justify-content:center;align-items:center;font-size:12px;font-weight:600;transition:opacity .15s;display:flex;position:absolute;inset:0}.avatar-pick:hover .avatar-pick__hint,.avatar-pick:focus-visible .avatar-pick__hint{opacity:1}.icon-btn--avatar{padding:0;overflow:hidden}.hotbar-avatar{object-fit:cover;border-radius:10px;width:100%;height:100%;display:block}.role-select{font:500 14px var(--font-ui);color:var(--ink);border:1px solid var(--line-2);border-radius:var(--radius);cursor:pointer;background:0 0;outline:none;min-width:160px;padding:8px 10px;transition:border-color .15s}.role-select:focus{border-color:var(--accent)}.course-editor-grid{grid-template-columns:300px 1fr;gap:16px;display:grid}.course-editor-grid .panel--wide{grid-column:1/-1}@media (width<=980px){.course-editor-grid{grid-template-columns:1fr}}.tree-node{margin-top:6px}.tree-row{border-radius:var(--radius);justify-content:space-between;align-items:center;gap:10px;padding:6px 8px;display:flex}.tree-row:hover{background:var(--surface-2)}.page-row{cursor:pointer}.page-row--active{background:var(--accent-soft)}.tree-row__main{align-items:center;gap:8px;min-width:0;display:flex}.tree-icon{color:var(--muted);align-items:center;display:flex}.tree-title{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.tree-actions{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.icon-btn--sm{background:0 0;border:none;padding:4px 6px}.icon-btn--sm:hover{background:var(--surface-2)}.inline-edit{align-items:center;gap:6px;display:flex}.inline-input{font:400 13px var(--font-ui);border:1px solid var(--line-2);border-radius:var(--radius);background:0 0;padding:6px 8px}.confirm-del{align-items:center;gap:6px;font-size:12px;display:flex}.editor-toolbar{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.editor-block{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:12px;overflow:hidden}.editor-block__head{background:var(--surface-2);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.editor-textarea{width:100%;font:400 14px var(--font-ui);resize:vertical;background:0 0;border:none;outline:none;padding:10px 12px}.option-row{align-items:center;gap:8px;margin-bottom:6px;display:flex}.option-row .inline-input{flex:1}.content-preview{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:16px}.preview-block{margin-bottom:16px}.md-preview h1{margin:10px 0;font-size:24px}.md-preview h2{margin:10px 0;font-size:20px}.md-preview h3{margin:8px 0;font-size:17px}.md-preview p{margin:8px 0}.md-preview code{background:var(--surface-2);border-radius:3px;padding:1px 4px}.latex-block{background:var(--surface-2);border-radius:var(--radius);padding:10px 12px}.latex-code{margin:6px 0 0;font-family:ui-monospace,monospace;font-size:13px;overflow:auto}.form-block-preview{padding:6px 0}.text-editor{flex-direction:column;gap:10px;display:flex}.text-editor__area{width:100%;min-height:360px;font:400 16px/1.7 var(--font-ui);color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);resize:vertical;outline:none;padding:16px 18px}.text-editor__area:focus{border-color:var(--accent)}.rich-preview{line-height:1.7}.rich-preview .md-preview p{margin:8px 0}.rich-preview .md-preview h1,.rich-preview .md-preview h2,.rich-preview .md-preview h3{margin:14px 0 8px}.rich-preview .md-preview li{margin-left:20px}.latex-render{border:1px dashed var(--line-2);border-radius:var(--radius);background:var(--surface-2);margin:12px 0;padding:12px 14px}.latex-render code{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px}.latex-badge{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-right:8px;font-size:11px;display:inline-block}.latex-inline code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.form-inline .field{gap:4px}.question-preview{border-bottom:1px solid var(--line);padding:10px 0}.question-preview:last-child{border-bottom:none}
