@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin.woff2)format("woff2")}:root{color:var(--text);background:var(--canvas);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--canvas:#f7f6f5;--surface:#fff;--surface-soft:#fbfaf9;--text:#000000eb;--muted:#6f6a64;--line:#00000017;--accent:#883d92;--accent-strong:#6e3176;--accent-soft:color-mix(in srgb, var(--accent) 10%, var(--surface));--accent-line:color-mix(in srgb, var(--accent) 35%, transparent);--green:#1aae39;--orange:#dd5b00;--red:#d33;--scrollbar-thumb:#0003;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--shadow:#0000000a 0 4px 18px, #00000005 0 .8px 2.9px;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:20px;--text-2xl:26px;--text-display:40px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px}:root[data-theme=dark]{--canvas:#201d22;--surface:#2a272d;--surface-soft:#322e36;--text:#ffffffeb;--muted:#b3aab8;--line:#ffffff1f;--accent:#c98ad9;--accent-strong:#b06cc6;--accent-soft:color-mix(in srgb, var(--accent) 14%, var(--surface));--accent-line:color-mix(in srgb, var(--accent) 45%, transparent);--green:#4cc36a;--orange:#ff8a3d;--red:#e0655c;--scrollbar-thumb:#ffffff3d;--shadow:none}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);background-clip:padding-box;border:3px solid #0000;border-radius:999px}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.7}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}h1,h2,h3,h4{letter-spacing:-.01em}.muted{color:var(--muted)}.app-shell{background:var(--canvas);grid-template-columns:248px minmax(0,1fr);width:100vw;height:100vh;transition:grid-template-columns .18s;display:grid;overflow:hidden}.app-shell.nav-collapsed{grid-template-columns:72px minmax(0,1fr)}.mobile-topbar,.nav-scrim{display:none}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:14px;min-width:0;height:100vh;padding:16px 14px;display:flex;overflow:hidden auto}.workspace{min-width:0;height:100vh;min-height:0;padding:32px 36px;overflow:auto}.view-frame{animation:.18s pageIn}.page{min-width:0;max-width:1200px;margin:0 auto}.brand,.icon-line,nav button,.sidebar-action{align-items:center;gap:10px;display:flex}.brand{padding:2px 4px}.brand-mark{border-radius:9px;flex:0 0 36px;place-items:center;width:36px;height:36px;display:grid}.brand-mark svg{display:block}.brand strong,.brand span{white-space:nowrap;display:block}.brand strong{font-size:var(--text-md);letter-spacing:-.01em}.brand span{font-size:var(--text-xs)}.brand span,.page-header span,.metric span,.concept-row small,.muted,.exam-band small{color:var(--muted)}nav,.sidebar-tools{gap:4px;display:grid}.sidebar-tools{margin-top:auto;position:relative}.nav-group-label{letter-spacing:.06em;color:var(--muted);text-transform:uppercase;padding:16px 10px 6px;font-size:11px;font-weight:600}.nav-collapsed .nav-group-label{text-align:center;border-top:1px solid var(--line);margin:4px 10px 0;padding:10px 0 2px;font-size:0}nav a{border-radius:var(--radius-sm);min-height:38px;color:var(--text);text-align:left;font-size:var(--text-base);white-space:nowrap;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;transition:background .12s,color .12s;display:flex}nav a svg{flex:0 0 17px;width:17px;height:17px}nav a:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}nav a.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.nav-collapsed nav a{justify-content:center;padding-inline:8px}nav button,.icon-line{border-radius:var(--radius-sm);min-height:38px;color:var(--text);text-align:left;font-size:var(--text-base);white-space:nowrap;background:0 0;border:0;padding:8px 10px}nav button svg,.icon-line svg{flex:0 0 17px;width:17px;height:17px}nav button:hover,.icon-line:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.icon-btn{border-radius:var(--radius-sm);min-height:34px;color:var(--text);background:0 0;border:0;place-items:center;padding:7px;transition:background .12s,color .12s,transform .12s;display:grid}.icon-btn:hover{background:color-mix(in srgb, var(--text) 6%, transparent)}.icon-btn:active{transform:scale(.94)}.sidebar-quick{gap:4px;display:flex}.sidebar-quick .icon-btn{flex:1}.nav-collapsed .sidebar-quick{flex-direction:column;align-items:stretch}.floating-tip{background:var(--text);color:var(--canvas);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;z-index:60;padding:5px 10px;font-size:12px;font-weight:600;animation:.12s tipIn;position:fixed;transform:translate(-50%,-100%)}.user-dock{position:relative}.user-chip{border-radius:var(--radius-md);width:100%;min-height:46px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:7px;transition:background .12s;display:flex}.user-chip:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.user-chip.open{background:var(--accent-soft)}.user-chip-text{flex:1;min-width:0}.user-chip-text,.user-chip-text strong,.user-chip-text small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.user-chip small{color:var(--muted)}.user-chev{color:var(--muted);flex:none;transition:transform .18s cubic-bezier(.16,1,.3,1)}.user-chev.open{transform:rotate(180deg)}.nav-collapsed .user-chip{place-items:center;padding:6px;display:grid}.avatar{aspect-ratio:1;object-fit:cover;background:var(--accent);color:#fff;letter-spacing:.02em;-webkit-user-select:none;user-select:none;border-radius:50%;flex:0 0 32px;place-items:center;width:32px;height:32px;font-size:12px;font-weight:700;display:grid}.avatar.icon-fallback{color:#ffffffeb}.user-menu{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);width:max-content;min-width:210px;max-width:250px;box-shadow:var(--shadow);z-index:5;transform-origin:0 100%;gap:2px;padding:5px;animation:.16s cubic-bezier(.16,1,.3,1) menuIn;display:grid;position:fixed}.user-menu button{border-radius:var(--radius-sm);color:var(--text);background:0 0;border:0;align-items:center;gap:10px;padding:8px;transition:background .1s,color .1s;display:flex}.user-menu button:hover{background:color-mix(in srgb, var(--text) 6%, transparent)}.user-menu button.logout:hover{color:var(--red);background:color-mix(in srgb, var(--red) 8%, transparent)}.sync-badge{font-size:var(--text-xs);color:var(--muted);background:color-mix(in srgb, var(--text) 6%, transparent);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;padding:4px 10px;font-weight:600;display:inline-flex}.sync-dot{background:var(--accent);border-radius:50%;width:7px;height:7px;animation:1s infinite syncPulse}@keyframes syncPulse{0%,to{opacity:.35}50%{opacity:1}}.page-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.page-header span{font-size:var(--text-sm);font-weight:600}.page-header h1{font-size:var(--text-2xl);letter-spacing:-.02em;margin:4px 0 0;font-weight:650;line-height:1.15}.section-title{font-size:var(--text-lg);margin:26px 0 12px}.action-row,.review-actions{flex-wrap:wrap;gap:10px;display:flex}.primary,.secondary,.success,.danger{border-radius:var(--radius-sm);font-weight:600;font-size:var(--text-base);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:8px 14px;text-decoration:none;transition:background .12s,border-color .12s,color .12s,transform .1s;display:inline-flex}.primary:active,.secondary:active,.success:active,.danger:active{transform:scale(.97)}.primary{color:#fff;background:var(--accent)}.primary:hover{background:var(--accent-strong)}.secondary{background:color-mix(in srgb, var(--text) 6%, transparent);color:var(--text)}.secondary:hover{background:color-mix(in srgb, var(--text) 10%, transparent)}.success{background:var(--green);color:#fff}.danger{background:var(--red);color:#fff}a.secondary,a.primary{cursor:pointer}.link-button{color:var(--muted);background:0 0;border:0;text-decoration:underline}.link-button:hover{color:var(--accent)}.success-note{color:var(--green);font-weight:600}.metric,.auth-card,.concept-panel,.editor-panel,.chart-card,.board-card,.greet-card,.setup-card,.settings-card,.empty-state,.set-card,.question-card,.review-item,.wrong-row,.scope-unit{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.metric{padding:16px 18px}.metric strong{letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-top:6px;font-size:24px;font-weight:650;display:block}.metric.soft-loading strong{color:var(--muted)}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.metrics.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}.chart-card{min-height:220px;padding:18px}.chart-card h3,.board-card h3{font-size:var(--text-md);align-items:center;gap:8px;margin:0 0 14px;display:flex}.bars{align-items:end;gap:8px;height:160px;display:flex;overflow:hidden}.bars>div{flex:1;grid-template-rows:1fr auto;gap:6px;min-width:18px;height:100%;display:grid}.bars i{background:var(--accent);border-radius:4px 4px 0 0;align-self:end;display:block}.bars span{color:var(--muted);text-align:center;font-size:11px}.insight-card{min-height:200px;padding:18px}.weak-list{display:grid}.weak-list>div{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;min-width:0;padding:9px 0;display:grid}.weak-list>div:first-child{border-top:0}.weak-list span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.weak-list strong{color:var(--orange)}.weak-list small{color:var(--muted)}.boards-hero{grid-template-columns:minmax(0,1fr) 400px;align-items:stretch;gap:12px;margin-top:12px;display:grid}.boards-hero>.greet-card,.boards-hero>.announcements-card{height:264px}.boards-row{grid-template-columns:360px minmax(0,1fr);align-items:start;gap:12px;margin-top:12px;display:grid}.boards-row>.board-card{flex-direction:column;height:372px;display:flex}.boards-row-bottom{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.boards-row-bottom>.board-card{height:264px}.board-card{padding:18px 20px}.board-card>h3{flex:none;justify-content:flex-start}.announcements-card{flex-direction:column;min-width:0;display:flex}.board-empty{text-align:center;min-height:0;color:var(--muted);font-size:var(--text-sm);flex:1;place-items:center;padding:12px;display:grid}.board-empty p{max-width:320px;margin:0;line-height:1.6}.ann-carousel{flex:1;min-height:0;overflow:hidden}.ann-track{height:100%;transition:transform .32s cubic-bezier(.16,1,.3,1);display:flex}.ann-track .announcement{border-top:0;flex:0 0 100%;align-content:start;min-width:0;height:100%;padding-top:0;padding-right:4px;overflow-y:auto}.ann-dots{flex:none;justify-content:center;gap:6px;padding-top:10px;display:flex}.ann-dots button{background:color-mix(in srgb, var(--text) 18%, transparent);border:0;border-radius:999px;width:6px;height:6px;padding:0;transition:background .16s,width .16s}.ann-dots button:hover{background:color-mix(in srgb, var(--text) 35%, transparent)}.ann-dots button.on{background:var(--accent);width:16px}.announcement{border-top:1px solid var(--line);gap:6px;padding-top:12px;display:grid}.announcement h4{font-size:var(--text-md);margin:0}.announcement header small{color:var(--muted);font-size:var(--text-xs);align-items:center;gap:6px;display:flex}.announcement p{margin:0}.pin-flag{color:var(--accent);align-items:center;gap:3px;font-weight:600;display:inline-flex}.greet-card{flex-direction:column;gap:10px;min-width:0;padding:20px 22px;display:flex}.greet-head{gap:4px;display:grid}.greet-date{color:var(--muted);font-size:var(--text-xs);letter-spacing:.04em;font-weight:600}.greet-head strong{font-size:var(--text-2xl);letter-spacing:-.02em;font-weight:650}.greet-quote{flex:1;align-content:center;gap:4px;min-height:0;display:grid;overflow:auto}.daily-quote{font-size:var(--text-sm);margin:0;line-height:1.55}.quote-source{color:var(--muted);font-size:var(--text-xs)}.greet-stats{gap:8px;display:flex}.greet-stats button{border:1px solid var(--line);background:var(--surface-soft);border-radius:var(--radius-md);flex:1;justify-items:start;gap:1px;min-width:0;padding:8px 12px;transition:background .12s,border-color .12s;display:grid}.greet-stats button:hover{border-color:var(--accent-line);background:var(--accent-soft)}.greet-stats strong{font-size:var(--text-lg);font-variant-numeric:tabular-nums}.greet-stats span{color:var(--muted);font-size:var(--text-xs);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.calendar-card{padding:16px 18px}.calendar-card h3 .cal-nav{gap:4px;margin-left:auto;display:flex}.mini-cal{gap:8px;display:grid}.cal-week,.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal-week span{text-align:center;font-size:var(--text-xs);color:var(--muted);padding-bottom:2px}.cal-day{aspect-ratio:1;border-radius:var(--radius-sm);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text);background:0 0;border:0;align-content:center;place-items:center;gap:2px;transition:background .14s,color .14s;display:grid;position:relative}button.cal-day{cursor:default}button.cal-day:hover{background:color-mix(in srgb, var(--text) 6%, transparent)}button.cal-day.has-events{cursor:pointer}button.cal-day.has-events:hover{background:color-mix(in srgb, var(--accent) 10%, transparent)}.cal-day.blank{visibility:hidden}.cal-day.today span:first-child{background:var(--accent);color:#fff;border-radius:999px;place-items:center;width:24px;height:24px;font-weight:650;display:grid}.cal-dots{gap:3px;height:5px;display:flex}.cal-dots em,.ev-dot{border-radius:999px;width:6px;height:6px;display:inline-block}.cal-tip{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:var(--radius-sm);z-index:20;pointer-events:none;width:max-content;max-width:200px;padding:8px 10px;display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.cal-day.has-events:hover .cal-tip{gap:3px;display:grid}.cal-tip span{font-size:var(--text-xs);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cal-legend{color:var(--muted);font-size:var(--text-xs);flex-wrap:wrap;gap:10px;display:flex}.cal-legend span{align-items:center;gap:4px;display:inline-flex}.ev-assignment{background:var(--orange)}.ev-quiz{background:var(--accent)}.ev-unit-test{background:#0e9888}.ev-exam{background:var(--red)}.ev-holiday{background:var(--green)}.ev-event{background:#4a8fd4}.day-events{gap:10px;display:grid}.day-event{border-left:3px solid var(--line);background:color-mix(in srgb, var(--text) 3%, transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;gap:3px;padding:6px 10px;display:grid}.day-event.ev-assignment{border-left-color:var(--orange)}.day-event.ev-quiz{border-left-color:var(--accent)}.day-event.ev-unit-test{border-left-color:#0e9888}.day-event.ev-exam{border-left-color:var(--red)}.day-event.ev-holiday{border-left-color:var(--green)}.day-event.ev-event{border-left-color:#4a8fd4}.day-event .ev-kind{font-size:var(--text-xs);color:var(--muted);border:1px solid var(--line);border-radius:999px;justify-self:start;padding:1px 8px}.day-event p{font-size:var(--text-sm);color:var(--muted);margin:0}.starred-list{flex:1;align-content:start;gap:2px;min-height:0;display:grid;overflow-y:auto}.starred-list button{text-align:left;border-radius:var(--radius-sm);background:0 0;border:0;gap:2px;padding:9px 10px;transition:background .12s;display:grid}.starred-list button:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.starred-list strong{font-size:var(--text-sm)}.starred-list small{color:var(--muted);font-size:var(--text-xs)}.row-line{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.row-line strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.row-line .pill{flex:none;font-style:normal}.exam-band{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);align-items:center;gap:12px;margin-top:12px;padding:12px 18px;display:flex}.exam-band .exam-label{color:var(--muted);font-size:var(--text-sm);white-space:nowrap}.exam-band strong{font-size:var(--text-md);font-variant-numeric:tabular-nums;white-space:nowrap}.exam-track{background:color-mix(in srgb, var(--text) 7%, transparent);border-radius:999px;flex:1;height:6px;overflow:hidden}.exam-track i{background:var(--accent);border-radius:999px;height:100%;display:block}mark.mk-lemon,mark.mk-tangerine,mark.mk-mint,mark.mk-sky,mark.mk-pink{color:inherit;background:0 0;border-radius:3px;padding:0 2px}mark.mk-lemon{background:#ffd23f73}mark.mk-tangerine{background:#f5a6236b}mark.mk-mint{background:#34d39961}mark.mk-sky{background:#60a5fa61}mark.mk-pink{background:#f472b661}.card-star{width:34px;height:34px;color:var(--muted);background:color-mix(in srgb, var(--text) 5%, transparent);border-radius:999px;place-items:center;display:grid;position:absolute;top:14px;right:14px}.card-star:hover,.card-star.on{color:var(--orange)}.empty-state.soft{text-align:center;place-items:center;width:100%;display:grid}.empty-state.celebrate,.result-celebrate{place-items:center;padding:8px 0;display:grid}.result-celebrate .muted{font-size:var(--text-sm)}.boards-admin-section{margin-top:22px}.boards-admin-section .section-title{align-items:center;gap:8px;display:flex}.boards-admin-section .section-title .primary{margin-left:auto}.pin-inline{color:var(--accent);margin-right:3px}.pin-on{color:var(--accent)}.ev-dot{margin-right:5px}.marker-toolbar{gap:6px;margin:6px 0 4px;display:flex}.swatch{border:1px solid var(--line);border-radius:6px;width:22px;height:22px}.swatch.mk-lemon{background:#ffd23f}.swatch.mk-tangerine{background:#f5a623}.swatch.mk-mint{background:#34d399}.swatch.mk-sky{background:#60a5fa}.swatch.mk-pink{background:#f472b6}.announcement-preview{border:1px dashed var(--line);border-radius:var(--radius-sm);font-size:var(--text-sm);gap:6px;padding:10px 12px;display:grid}.announcement-preview p{margin:0}.check-row{align-items:center;gap:8px;display:flex}.event-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.modal-head{justify-content:space-between;align-items:center;gap:10px;display:flex}:root[data-theme=dark] mark.mk-lemon{background:#ffd23f4d}:root[data-theme=dark] mark.mk-tangerine{background:#f5a62347}:root[data-theme=dark] mark.mk-mint{background:#34d3993d}:root[data-theme=dark] mark.mk-sky{background:#60a5fa3d}:root[data-theme=dark] mark.mk-pink{background:#f472b63d}@media (width<=1080px){.boards-hero,.boards-row,.boards-row-bottom{grid-template-columns:1fr}.boards-hero>.greet-card,.boards-hero>.announcements-card{height:auto}.boards-hero>.announcements-card{max-height:360px}.boards-row>.board-card,.boards-row-bottom>.board-card{height:auto}.boards-row>.board-card .starred-list,.boards-row-bottom>.board-card .starred-list{max-height:300px}}@media (width<=560px){.exam-band{flex-wrap:wrap}}.browse-layout,.data-layout{align-items:start;min-width:0;display:grid}.browse-layout{grid-template-columns:var(--outline-w,260px) 0 minmax(0, 1fr) 0 var(--panel-w,380px);gap:8px}.browse-layout.outline-off{grid-template-columns:minmax(0, 1fr) 0 var(--panel-w,380px)}.browse-layout.panel-off{grid-template-columns:var(--outline-w,260px) 0 minmax(0, 1fr)}.browse-layout.outline-off.panel-off{grid-template-columns:minmax(0,1fr)}.data-layout{grid-template-columns:minmax(360px,520px) minmax(0,1fr);gap:16px}.col-resizer{z-index:5;touch-action:none;align-self:stretch;width:0;position:relative}.col-resizer:before{content:"";cursor:col-resize;position:absolute;inset:0 -9px}.col-resizer:after{content:"";background:var(--accent-line);opacity:0;border-radius:2px;width:2px;transition:opacity .12s;position:absolute;top:0;bottom:0;left:-1px}.col-resizer:hover:after,.col-resizer:active:after{opacity:1}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}@media (width>=1081px){.page.browse-page{flex-direction:column;height:calc(100vh - 64px);display:flex}.browse-page .browse-layout{flex:1;grid-template-rows:minmax(0,1fr);align-items:stretch;min-height:0}.browse-page .topic-list{min-height:0;max-height:100%}.browse-page .concept-list{grid-template-rows:auto minmax(0,1fr);height:100%}.browse-page .concept-list .table{min-height:0;max-height:100%}.browse-page .concept-panel{max-height:100%}.browse-page .concept-panel.empty{text-align:center;place-items:center;display:grid}}.topic-list,.concept-list,.data-list{gap:8px;min-width:0;display:grid}.topic-list,.table{max-height:calc(100vh - 128px);padding-right:4px;overflow:auto}.topic-list h3{font-size:var(--text-xs);color:var(--muted);margin:14px 0 4px;font-weight:600}.topic-list button{text-align:left;border-radius:var(--radius-sm);width:100%;font-size:var(--text-sm);background:0 0;border:0;padding:7px 9px}.topic-list button:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.topic-list button.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.search{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);align-items:center;gap:8px;margin-bottom:8px;padding:8px 12px;display:flex}.search:focus-within{border-color:var(--accent-line)}.search input{background:0 0;border:0;outline:0;flex:1;min-width:0}.table{gap:6px;display:grid}.data-list .table{max-height:calc(100vh - 260px)}.concept-row{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);text-align:left;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:11px 13px;transition:border-color .12s,background .12s;display:flex}button.concept-row:hover,label.concept-row:hover{border-color:var(--accent-line)}.concept-row.selected{border-color:var(--accent);background:var(--accent-soft)}.concept-row span,.concept-row strong,.concept-row small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.concept-panel,.editor-panel{min-height:320px;max-height:calc(100vh - 58px);padding:20px;position:sticky;top:0;overflow:auto}.panel-close{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--text);z-index:2;border-radius:50%;place-items:center;display:none;position:absolute;top:12px;right:12px}.panel-scrim{display:none}.concept-panel h2,.editor-panel h2{font-size:var(--text-xl);margin:6px 0 12px}.concept-panel.empty,.editor-panel.empty{color:var(--muted)}.rich-content{gap:12px;margin-top:16px;display:grid}.block-group{border-top:1px solid var(--line);padding-top:10px}.block-group h4{font-size:var(--text-sm);margin:0 0 6px}.block-group p{margin:6px 0;line-height:1.55}.block-group.warn{color:var(--orange)}.focus-page{max-width:860px}.setup-card,.settings-card{gap:14px;max-width:780px;padding:20px;display:grid}.settings-grid .settings-card{max-width:none}.settings-card h3{font-size:var(--text-md);margin:0}.settings-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.settings-row:first-of-type{border-top:0}.settings-row span{color:var(--muted)}.avatar-upload{align-items:center;gap:12px;display:flex}.avatar-upload .avatar{flex-basis:56px;width:56px;height:56px;font-size:16px}.upload-button{align-items:center;gap:10px;width:fit-content;display:flex;position:relative}.upload-button input{opacity:0;cursor:pointer;background:0 0;border:0;padding:0;position:absolute;inset:0}label{font-weight:600;font-size:var(--text-sm);gap:6px;display:grid}input,select,textarea{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);font-size:var(--text-base);padding:8px 10px;font-weight:400}input:focus,select:focus,textarea:focus{border-color:var(--accent-line);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 15%, transparent);outline:none}textarea{resize:vertical;min-height:92px;line-height:1.55}input:disabled,input:read-only:not([type=file]){opacity:.75;cursor:not-allowed;background:var(--surface-soft)}.field-hint{color:var(--muted);font-weight:400;font-size:var(--text-xs)}.scope-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.segmented{background:color-mix(in srgb, var(--text) 5%, transparent);border-radius:var(--radius-md);grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.segmented.inline{width:fit-content}.segmented.four{grid-template-columns:repeat(4,minmax(0,1fr))}.segmented.wrap{grid-template-columns:repeat(3,minmax(0,1fr))}.segmented button{border-radius:var(--radius-sm);font-size:var(--text-sm);white-space:nowrap;background:0 0;border:0;padding:7px 12px;transition:background .12s,color .12s}.segmented .active{background:var(--surface);box-shadow:var(--shadow);color:var(--accent);font-weight:600}.keyboard-hint{color:var(--muted);font-size:var(--text-sm);align-items:center;gap:7px;display:inline-flex}.check-line{flex-direction:row;align-items:center;gap:8px;display:flex}.check-line input{width:auto}.scope-picker{gap:10px;display:grid}.scope-unit{padding:12px 14px;transition:background .12s,border-color .12s}.scope-unit:hover{background:color-mix(in srgb, var(--text) 3%, transparent)}.scope-unit.open{border-color:var(--accent-line)}.scope-unit-head{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:10px;display:flex}.scope-unit-toggle{border-radius:var(--radius-sm);min-width:0;color:var(--text);align-items:center;gap:6px;margin-left:-6px;padding:3px 6px;transition:background .12s;display:flex}.scope-unit-toggle strong{font-size:var(--text-base);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.scope-chev{color:var(--muted);flex:none;transition:transform .18s cubic-bezier(.16,1,.3,1)}.scope-chev.open{transform:rotate(90deg)}.scope-unit-head small{color:var(--muted)}.scope-unit-head .link-button{font-size:var(--text-sm);color:var(--accent);font-weight:600;text-decoration:none}.scope-topics{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px;margin-top:8px;animation:.16s topicsIn;display:grid}.scope-topic{border-radius:var(--radius-sm);font-weight:400;font-size:var(--text-sm);cursor:pointer;flex-direction:row;align-items:center;gap:8px;padding:6px 8px;transition:background .1s,color .1s;display:flex}.scope-topic:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.scope-topic input{width:auto;accent-color:var(--accent)}.scope-topic.picked{color:var(--accent);font-weight:600}.scope-summary{color:var(--muted);font-size:var(--text-sm);justify-content:space-between;align-items:center;gap:10px;display:flex}.scope-summary strong{color:var(--accent)}.session-bar{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding-top:14px;display:flex}.session-count strong{font-size:var(--text-xl);color:var(--accent);font-variant-numeric:tabular-nums;margin-right:6px}.session-count span{color:var(--muted);font-size:var(--text-sm)}.session-controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.session-controls label{flex:none}.session-controls .segmented{width:fit-content}.session-controls .primary{min-height:38px}.auth-page{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-panel{grid-template-columns:1fr 380px;align-items:center;gap:40px;width:min(960px,100%);display:grid}.auth-brand{align-items:center;gap:10px;margin-bottom:18px;display:flex}.auth-brand .brand-mark{border-radius:10px;flex-basis:40px;width:40px;height:40px}.auth-brand strong{font-size:var(--text-md)}.auth-greet{background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--accent);font-size:var(--text-sm);border-radius:999px;margin-top:18px;padding:7px 16px;font-weight:600;display:inline-block}.auth-copy h1{font-size:var(--text-display);letter-spacing:-.03em;margin:12px 0;font-weight:700;line-height:1.08}.auth-copy p{font-size:var(--text-lg);color:var(--muted);max-width:520px;line-height:1.5}.badge{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-line);font-size:var(--text-xs);letter-spacing:.04em;border-radius:999px;padding:3px 10px;font-weight:700;display:inline-block}.auth-card{gap:12px;padding:20px;display:grid}.auth-card.center{justify-items:center;gap:12px;width:min(420px,100%);display:grid}.auth-form{gap:12px;display:grid}.entra-button{color:#1b1b1b;border-radius:var(--radius-sm);font-size:var(--text-md);cursor:pointer;background:#fff;border:1px solid #d6d6d6;justify-content:center;align-items:center;gap:10px;padding:11px;font-weight:600;text-decoration:none;display:flex}.entra-button:hover{background:#f5f5f5;border-color:#c3c3c3}.ms-mark{flex:none}.error{color:var(--red);background:color-mix(in srgb, var(--red) 8%, var(--surface));border:1px solid color-mix(in srgb, var(--red) 30%, transparent);border-radius:var(--radius-sm);padding:9px 12px}.empty-state{color:var(--muted);justify-items:start;gap:10px;padding:32px;display:grid}.skeleton,.skeleton-row{background:color-mix(in srgb, var(--text) 6%, transparent);min-height:70px;position:relative;overflow:hidden}.skeleton.tall{min-height:170px}.skeleton:after,.skeleton-row:after{content:"";background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--surface) 75%, transparent), transparent);animation:1.2s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.spin{animation:.8s linear infinite spin}@keyframes shimmer{to{transform:translate(100%)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pageIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes menuIn{0%{opacity:0;transform:translateY(5px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tipIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes topicsIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes sheetIn{0%{opacity:.4;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pill{border:1px solid var(--line);font-size:var(--text-xs);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-weight:600;display:inline-flex}.pill.ok{color:var(--green);border-color:color-mix(in srgb, var(--green) 40%, transparent)}.pill.warn{color:var(--orange);border-color:color-mix(in srgb, var(--orange) 40%, transparent)}.pill.bad{color:var(--red);border-color:color-mix(in srgb, var(--red) 40%, transparent)}.pill.accent{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.status-buttons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.status-buttons button{border:1px solid #0000;flex:120px;max-width:220px}.status-buttons.large button{min-height:60px;font-size:var(--text-lg);border-radius:var(--radius-md);font-weight:700}.status-buttons .warn{background:color-mix(in srgb, var(--orange) 88%, #fff);color:#fff}.status-buttons .success.active{outline:3px solid color-mix(in srgb, var(--green) 40%, transparent)}.status-buttons .warn.active{outline:3px solid color-mix(in srgb, var(--orange) 40%, transparent)}.status-buttons .danger.active{outline:3px solid color-mix(in srgb, var(--red) 40%, transparent)}.mini-status{gap:6px;display:inline-flex}.mini-status button{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);font-size:var(--text-sm);padding:5px 10px;transition:background-color .18s,color .18s,border-color .18s}.mini-status button.active{background:var(--accent);color:#fff;border-color:#0000}.mini-status .star-toggle{color:var(--muted);place-items:center;display:inline-grid}.mini-status .star-toggle svg{transition:fill .18s}.mini-status .star-toggle:hover{color:var(--orange);border-color:color-mix(in srgb, var(--orange) 45%, transparent);background:color-mix(in srgb, var(--orange) 10%, transparent)}.mini-status .star-toggle.on{background:var(--orange);color:#fff;border-color:#0000}.panel-status{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.tier-legend{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.focus-page{flex-direction:column;max-width:860px;min-height:calc(100dvh - 64px);display:flex}.flashcard{perspective:1400px;cursor:pointer;flex-direction:column;flex:auto;width:100%;max-width:720px;min-height:0;max-height:480px;margin:14px auto;display:flex}.flashcard-inner{min-height:300px;transform-style:preserve-3d;flex:1;transition:transform .32s;position:relative}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.flashcard-face{backface-visibility:hidden;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:34px;display:flex;position:absolute;inset:0}.flashcard-face small{color:var(--muted)}.flashcard-face h2{letter-spacing:-.02em;margin:0;font-size:36px;font-weight:650}.flashcard-back{justify-content:flex-start;overflow:hidden;transform:rotateY(180deg)}.flashcard-back-scroll{text-align:left;width:100%;max-height:100%;overflow:auto}.flashcard-actions{align-items:stretch;gap:10px;width:100%;max-width:720px;margin:0 auto;display:flex}.flashcard-actions .status-buttons{flex:1}.flashcard-actions .icon-btn.back{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-md);color:var(--text);flex:0 0 58px}.flashcard-actions .icon-btn.back:hover{border-color:var(--accent-line)}.flashcard-actions .next-card{font-size:var(--text-md);flex:none;padding:8px 18px}.leave-modal{width:min(420px,100%)}.leave-modal .action-row{justify-content:flex-end}.set-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.set-card{color:var(--text);gap:10px;padding:18px;text-decoration:none;transition:border-color .12s,transform .12s;display:grid}.set-card:hover{border-color:var(--accent-line);transform:translateY(-1px)}.set-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.set-head strong{font-size:var(--text-lg);letter-spacing:-.01em}.set-card p{color:var(--muted);font-size:var(--text-base);margin:0}.set-meta{color:var(--muted);font-size:var(--text-sm);flex-wrap:wrap;gap:12px;display:flex}.set-action{justify-content:flex-end;display:flex}.set-action .primary{pointer-events:none}.runner-page{max-width:860px}.timer{font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);align-items:center;gap:7px;padding:7px 12px;font-weight:700;display:inline-flex}.timer.urgent{color:var(--red);border-color:color-mix(in srgb, var(--red) 45%, transparent)}.question-nav{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.question-nav button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-variant-numeric:tabular-nums;width:34px;height:34px}.question-nav button.answered{background:color-mix(in srgb, var(--accent) 16%, var(--surface))}.question-nav button.current{background:var(--accent);color:#fff;border-color:#0000}.question-card{gap:14px;padding:24px;display:grid}.question-card h2{font-size:var(--text-xl);margin:0;line-height:1.4}.material-block{background:color-mix(in srgb, var(--canvas) 60%, var(--surface));border:1px solid var(--line);border-radius:var(--radius-md);padding:14px}.material-block p{margin:6px 0;line-height:1.55}.choice-list{gap:8px;display:grid}.choice{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);text-align:left;align-items:center;gap:12px;padding:12px 14px;transition:border-color .12s,background .12s;display:flex}.choice:hover:not(:disabled){border-color:var(--accent-line)}.choice.picked{border-color:var(--accent);background:var(--accent-soft)}.choice.correct{border-color:var(--green);background:color-mix(in srgb, var(--green) 12%, var(--surface))}.choice.wrong{border-color:var(--red);background:color-mix(in srgb, var(--red) 10%, var(--surface))}.choice-key{border:1px solid var(--line);height:28px;font-weight:700;font-size:var(--text-sm);border-radius:50%;flex:0 0 28px;place-items:center;display:grid}.choice svg{flex:none;margin-left:auto}.choice.correct svg{color:var(--green)}.feedback{border-radius:var(--radius-md);border:1px solid var(--line);padding:14px}.feedback.ok{background:color-mix(in srgb, var(--green) 10%, var(--surface));border-color:color-mix(in srgb, var(--green) 40%, transparent)}.feedback.bad{background:color-mix(in srgb, var(--red) 8%, var(--surface));border-color:color-mix(in srgb, var(--red) 40%, transparent)}.feedback.neutral{background:color-mix(in srgb, var(--canvas) 60%, var(--surface))}.feedback p{margin:8px 0 0;line-height:1.55}.rubric-list{margin:6px 0 0;padding-left:18px}.self-rating{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.self-rating button{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);padding:8px 14px}.self-rating button.active{background:var(--accent);color:#fff;border-color:#0000}.subjective-form{gap:10px;display:grid}.runner-footer{justify-content:space-between;margin-top:16px;display:flex}.review-list{gap:10px;display:grid}.review-item{padding:16px}.review-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.review-detail{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.review-detail p{margin:4px 0}.key-answer{color:var(--green);font-weight:700}.reference-block{margin-top:6px}.writing-shell{z-index:30;background:var(--canvas);flex-direction:column;animation:.18s pageIn;display:flex;position:fixed;inset:0}.writing-topbar{background:var(--surface);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:14px;padding:10px 20px;display:flex}.writing-topbar .title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.writing-topbar .tools{align-items:center;gap:10px;display:flex}.writing-body{flex:1;overflow:auto}.writing-paper{gap:16px;max-width:760px;margin:0 auto;padding:32px 24px 80px;display:grid}.writing-paper h1{font-size:var(--text-xl);margin:0;line-height:1.4}.writing-editor{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);gap:10px;padding:22px 24px;display:grid}.writing-editor:focus-within{border-color:var(--accent-line)}.writing-editor textarea{min-height:320px;font-size:var(--text-md);resize:none;background:0 0;border:0;padding:0;line-height:1.7}.writing-editor textarea:focus{box-shadow:none;outline:none}.writing-editor .word-count{color:var(--muted);font-size:var(--text-xs);font-variant-numeric:tabular-nums;justify-content:flex-end;display:flex}.wrong-row{padding:16px;display:grid}.wrong-main{gap:8px;display:grid}.wrong-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.wrong-detail{border-top:1px solid var(--line);padding-top:8px}.wrong-detail p{margin:4px 0}.admin-layout{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:20px;display:grid}.admin-nav{gap:14px;display:grid;position:sticky;top:0}.admin-nav>div{gap:2px;display:grid}.admin-nav a{border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-sm);white-space:nowrap;padding:8px 12px;text-decoration:none;transition:background .12s,color .12s;display:block}.admin-nav a.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.admin-nav a:hover{background:color-mix(in srgb, var(--text) 5%, transparent)}.admin-nav .nav-group-label{padding:0 12px 2px}.admin-body{min-width:0}.filter-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.filter-bar select,.filter-bar input{min-width:150px}.row-main{text-align:left;background:0 0;border:0;flex:1;min-width:0;padding:0}.row-main span,.row-main strong,.row-main small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.row-actions{flex-shrink:0;gap:6px;display:flex}.choice-edit,.part-head{gap:8px;display:flex}.choice-key-input{text-align:center;flex:0 0 52px;width:52px}.part-edit{border:1px solid var(--line);border-radius:var(--radius-md);gap:8px;padding:10px;display:grid}.upload-zone{border:2px dashed color-mix(in srgb, var(--text) 20%, transparent);border-radius:var(--radius-lg);color:var(--muted);cursor:pointer;background:var(--surface);justify-content:center;align-items:center;gap:10px;padding:30px;display:flex}.upload-zone:hover{border-color:var(--accent);color:var(--text)}.import-preview{gap:12px;margin-top:16px;display:grid}.import-summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.import-errors{background:color-mix(in srgb, var(--red) 6%, var(--surface));border-radius:var(--radius-md);gap:6px;padding:12px;display:grid}.import-row{cursor:pointer}.modal-backdrop{z-index:40;background:#0006;place-items:center;padding:20px;animation:.12s fadeIn;display:grid;position:fixed;inset:0;overflow:auto}.modal{background:var(--surface);border-radius:var(--radius-lg);width:min(520px,100%);box-shadow:var(--shadow);gap:12px;max-height:88vh;padding:22px;animation:.18s cubic-bezier(.16,1,.3,1) modalIn;display:grid;overflow:auto}.modal.wide{width:min(760px,100%)}.modal h3{margin:0}.set-items,.set-picker{border-top:1px solid var(--line);gap:8px;padding-top:12px;display:grid}.set-item-row{border:1px solid var(--line);border-radius:var(--radius-sm);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.set-item-row span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.candidate-list{gap:6px;max-height:260px;display:grid;overflow:auto}.student-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:auto}.student-row{border-top:1px solid var(--line);grid-template-columns:minmax(160px,2fr) 1fr 1fr 1fr auto;align-items:center;gap:10px;padding:10px 14px;display:grid}.student-row:first-child{border-top:0}.student-row.head{color:var(--muted);font-weight:600;font-size:var(--text-sm)}.student-row span strong,.student-row span small{display:block}.student-row small{color:var(--muted)}.student-name{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.student-name strong{text-overflow:ellipsis;overflow:hidden}.student-name input{width:150px}.accuracy-list{gap:10px;display:grid}.accuracy-list>div{grid-template-columns:minmax(0,1fr) 90px 60px;align-items:center;gap:10px;display:grid}.accuracy-list span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;font-size:var(--text-base);overflow:hidden}.accuracy-list small{color:var(--muted);text-align:right}.accuracy-bar{background:color-mix(in srgb, var(--text) 7%, transparent);border-radius:999px;height:8px;overflow:hidden}.accuracy-bar i{background:var(--accent);border-radius:999px;height:100%;display:block}.attempt-list{gap:8px;display:grid}.attempt-list>div{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding-top:8px;display:grid}.attempt-list span{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.attempt-list small{color:var(--muted)}@media (width<=1080px){.app-shell,.app-shell.nav-collapsed{flex-direction:column;grid-template-columns:none;height:100dvh;display:flex}.mobile-topbar{background:var(--surface);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:6px;min-height:54px;padding:6px 12px 6px 8px;display:flex}.mobile-topbar .brand{padding:0}.mobile-topbar .brand-mark{flex-basis:28px;width:28px;height:28px}.desktop-only{display:none}.sidebar{z-index:46;width:272px;height:100dvh;padding-bottom:calc(16px + env(safe-area-inset-bottom));transition:transform .24s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;transform:translate(-103%)}.app-shell.nav-open .sidebar{transform:none;box-shadow:0 0 48px #00000047}.nav-collapsed .nav-group-label{text-align:left;border-top:0;margin:4px 10px 0;padding:16px 10px 6px;font-size:11px}.nav-collapsed .sidebar-quick{flex-direction:row}.nav-collapsed .user-chip{padding:7px;display:flex}.nav-scrim{z-index:45;opacity:0;pointer-events:none;background:#0000006b;transition:opacity .2s;display:block;position:fixed;inset:0}.app-shell.nav-open .nav-scrim{opacity:1;pointer-events:auto}.workspace{flex:1;height:auto;min-height:0;padding:16px}.focus-page{min-height:calc(100dvh - 32px)}.admin-nav{scrollbar-width:thin;align-items:center;gap:6px;padding-bottom:4px;display:flex;position:static;overflow-x:auto}.admin-nav>div{display:contents}.admin-nav .nav-group-label{display:none}.admin-nav a{border:1px solid var(--line);background:var(--surface);border-radius:999px;flex:none;padding:6px 12px}.admin-nav a.active{border-color:var(--accent-line)}.browse-layout,.browse-layout.panel-off,.data-layout,.auth-panel,.dashboard-grid,.chart-grid,.insight-grid,.settings-grid,.admin-layout{grid-template-columns:1fr}.browse-layout{flex-direction:column;display:flex}.col-resizer{display:none}.concept-list{order:1}.topic-list{order:2;max-height:none;overflow:visible}.concept-panel{order:3;max-height:none;position:static}.concept-panel:not(.empty){z-index:48;padding-bottom:calc(24px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;animation:.24s cubic-bezier(.16,1,.3,1) sheetIn;position:fixed;inset:9dvh 0 0;box-shadow:0 -16px 48px #00000038}.concept-panel.empty{display:none}.panel-close{display:grid}.panel-scrim{z-index:47;background:#0000006b;animation:.16s fadeIn;display:block;position:fixed;inset:0}.table,.data-list .table{max-height:none;overflow:visible}.editor-panel{max-height:none;position:static}.student-row{grid-template-columns:minmax(140px,2fr) 1fr auto}.student-row.head{display:none}}@media (width<=620px){.workspace{padding:12px}.focus-page{min-height:calc(100dvh - 24px)}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.scope-grid,.scope-topics{grid-template-columns:1fr}.segmented.four,.segmented.wrap{grid-template-columns:repeat(2,minmax(0,1fr))}.page-header{flex-direction:column;align-items:flex-start}.auth-copy h1{font-size:30px}.flashcard-face{padding:22px 18px}.flashcard-face h2{font-size:27px}.flashcard-inner{min-height:320px}.status-buttons.large button{min-height:52px;font-size:var(--text-md)}.session-controls{width:100%}}.rich-content a{color:var(--accent);text-underline-offset:2px;text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line)}.rich-content a:hover{color:var(--accent-strong)}.rich-content code{background:color-mix(in srgb, var(--text) 7%, transparent);border-radius:4px;padding:1px 5px;font-size:.92em}.rich-content img{border-radius:var(--radius-md);border:1px solid var(--line);vertical-align:middle;max-width:100%;max-height:320px}.rich-content figure{margin:8px 0}.rich-content figure img{object-fit:contain;width:100%;max-height:420px}.editor-toolbar{justify-content:space-between;align-items:center;margin:4px 0 12px;display:flex}.editor-panel .rich-content.preview{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);align-content:start;gap:4px;max-height:200px;margin-top:6px;padding:10px 12px;display:grid;overflow:auto}.editor-panel .rich-content.preview p{margin:2px 0;line-height:1.55}.note-tabs{border-bottom:1px solid var(--line);scrollbar-width:thin;gap:4px;margin-bottom:14px;display:flex;overflow-x:auto}.note-tab{color:var(--muted);font-size:var(--text-sm);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;margin-bottom:-1px;padding:8px 14px}.note-tab:hover{color:var(--text);background:color-mix(in srgb, var(--text) 4%, transparent)}.note-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.notes-page{flex-direction:column;max-width:none;height:calc(100vh - 64px);display:flex}.note-body{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex}.note-toolbar{flex-shrink:0;align-items:center;gap:10px;display:flex}.note-toolbar-actions{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.note-items{background:color-mix(in srgb, var(--text) 5%, transparent);border-radius:var(--radius-md);scrollbar-width:thin;flex:1;gap:2px;min-width:0;padding:3px;display:flex;overflow-x:auto}.note-items button{border-radius:var(--radius-sm);font-size:var(--text-sm);white-space:nowrap;background:0 0;border:0;flex-shrink:0;padding:7px 12px;transition:background .12s,color .12s}.note-items .active{background:var(--surface);box-shadow:var(--shadow);color:var(--accent);font-weight:600}.note-frame-wrap{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.note-frame-wrap.expanded{z-index:70;border:0;border-radius:0;animation:.22s cubic-bezier(.16,1,.3,1) noteExpandIn;position:fixed;inset:0}.note-expanded-bar{border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);flex-shrink:0;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.note-frame{flex:1;min-height:0}.note-frame iframe{background:var(--surface);border:0;width:100%;height:100%;display:block}.note-desc{font-size:var(--text-xs);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;margin:0;overflow:hidden}@keyframes noteExpandIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.note-fallback{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);text-align:center;justify-items:center;gap:10px;padding:48px 20px;display:grid}.note-fallback .muted{max-width:420px;margin:0}.note-image{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);place-items:center;padding:16px;display:grid}.note-image img{border-radius:var(--radius-md);max-width:100%;max-height:calc(100dvh - 340px)}.note-link-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);align-items:center;gap:14px;padding:18px;display:flex}.note-link-card>div{flex:1;min-width:0}.note-link-card .muted{word-break:break-all;font-size:var(--text-xs);margin:2px 0 0}.note-empty{border:1px dashed var(--line);border-radius:var(--radius-lg)}.note-item-edit{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-soft);flex-direction:column;gap:8px;padding:10px;display:flex}.note-item-fields{grid-template-columns:minmax(100px,200px) 140px minmax(0,1fr);gap:8px;display:grid}.upload-label{cursor:pointer}.upload-label.busy{opacity:.6;pointer-events:none}.upload-label svg{flex-shrink:0}@media (width<=620px){.notes-page{height:calc(100dvh - 24px)}.note-item-fields{grid-template-columns:1fr}.note-link-card{flex-direction:column;align-items:flex-start}}
