:root{--paper: #faf8f5;--card: #fff;--inset: #f2efe9;--ink: #1c1b18;--ink2: #6b6860;--mute: #8a867d;--hair: #e5e0d8;--divider: #d3cdc2;--terra: #c85a32;--terra-text: #a8461f;--alert: #fcf3ee;--sage: #3d7a5a;--sage-text: #2f6549;--amber: #fdf6e7;--amber-line: #ebddb8;--green: #95ec69;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--serif: "Noto Serif SC", "Songti SC", "Source Han Serif SC", serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.6 system-ui,-apple-system,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif}h1,h2,h3,h4,p,ul,dl,dd{margin:0;padding:0}ul{list-style:none}h1{font:600 22px/1.3 var(--serif)}h2{font:600 18px/1.3 var(--serif)}h3{font-size:15px;font-weight:600;display:flex;align-items:center;gap:8px}h4{font-size:13px;font-weight:600;color:var(--ink2);margin:18px 0 8px}h3 .muted,h4 .muted{font-weight:400}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0;text-align:inherit}button:disabled{cursor:not-allowed}input,textarea{background:var(--paper);border:1px solid var(--hair);border-radius:8px;padding:7px 10px;outline:none}input:focus,textarea:focus{border-color:var(--ink);background:var(--card)}textarea{resize:vertical;width:100%;line-height:1.6}input[type=checkbox]{accent-color:var(--sage);width:15px;height:15px;margin:0 6px 0 0;vertical-align:-2px}:focus-visible{outline:2px solid var(--terra);outline-offset:2px}.muted{color:var(--ink2)}.small{font-size:12.5px}.mono{font-family:var(--mono);font-size:12.5px}.accent{color:var(--terra-text)}.grow{flex:1}.pad{padding:12px 16px}.top{margin-top:12px}.center{height:100%;display:grid;place-items:center;text-align:center;padding:24px}.link{color:var(--ink);text-decoration:underline;text-underline-offset:3px;font-size:13px;padding:4px 2px;white-space:nowrap}.link:hover{color:var(--terra-text)}.hover-only{opacity:0}*:hover>.hover-only,*:focus-within>.hover-only,.hover-only:focus-visible{opacity:1}@media(hover:none){.hover-only{opacity:1}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.btn{height:36px;padding:0 16px;border-radius:9px;font-weight:500;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn.small{height:30px;padding:0 12px;font-size:13px}.btn.big{height:44px;padding:0 28px;font-size:15px}.btn.solid{background:var(--ink);color:#fff}.btn.solid:hover{background:#33312c}.btn.outline{background:var(--card);border:1px solid var(--ink)}.btn.outline:hover{background:var(--inset)}.btn:disabled{background:var(--hair);color:#5a574f;border-color:transparent}.btn.done{background:var(--sage);color:#fff}.btn.danger-outline{background:var(--card);border:1px solid var(--terra);color:var(--terra-text)}.btn.danger-outline:hover{background:var(--alert)}.icon{width:30px;height:30px;border-radius:8px;text-align:center;color:var(--ink2)}.icon:hover{background:var(--inset)}.x{color:var(--ink2);width:22px;height:22px;border-radius:6px;text-align:center;font-size:12px;flex:none}.x:hover{background:var(--alert);color:var(--terra-text)}.pill{font-size:12px;font-weight:400;padding:1px 8px;border-radius:6px;background:var(--inset);color:var(--ink2)}.pill.ok{background:#e7f1ea;color:var(--sage-text)}.dot{width:14px;height:14px;flex:none;display:inline-grid;place-items:center;font-size:12px;line-height:1;position:relative}.dot-sent{color:var(--sage);font-weight:700}.dot-draft:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--terra)}.dot-staged:before{content:"";width:10px;height:10px;border-radius:50%;border:1.5px solid var(--ink);box-shadow:inset 0 0 0 2px var(--card),inset 0 0 0 6px var(--ink)}.dot-empty:before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid var(--mute)}.segmented{display:inline-flex;background:var(--inset);border-radius:9px;padding:3px;gap:3px}.segmented button{padding:5px 16px;border-radius:7px;color:var(--ink2);border:1px solid transparent}.segmented button.on{background:var(--card);border-color:var(--ink);color:var(--ink);font-weight:500}.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.chips.wrap{flex-wrap:wrap;overflow:visible}.chip{height:30px;padding:0 12px;border-radius:15px;border:1px solid var(--hair);background:var(--card);white-space:nowrap;flex:none}.chip:hover{border-color:var(--ink)}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.inline-text{border-radius:6px;padding:1px 4px;margin:-1px -4px}.inline-text:hover{background:var(--inset)}.inline-text .pen{color:var(--mute);margin-left:6px;font-size:12px;opacity:0}.inline-text:hover .pen{opacity:1}.inline-text.empty{color:var(--terra-text)}.inline-input{padding:2px 8px;min-width:220px}.shell{display:grid;grid-template-columns:168px 1fr;height:100%}.side{border-right:1px solid var(--hair);padding:18px 10px 12px;display:flex;flex-direction:column;gap:2px}.brand{font:600 22px/1 var(--serif);padding:0 10px 18px}.nav{height:36px;padding:0 10px;border-radius:8px;color:var(--ink2);display:flex;align-items:center;gap:8px}.nav:hover{background:var(--inset)}.nav.on{background:var(--inset);color:var(--ink);font-weight:500}.badge{margin-left:auto;font:12px var(--mono);color:var(--terra-text)}.nav.help{margin-top:auto;font-size:13px}.sync-short{display:none}.sync{font-size:12px;color:var(--ink2);padding:8px 10px;display:flex;gap:7px;align-items:baseline;line-height:1.4}.led{width:7px;height:7px;border-radius:50%;flex:none;background:var(--sage)}.led.busy{background:#c9a44a}.led.bad{background:var(--terra)}main{min-width:0;height:100%;overflow:hidden;display:flex;flex-direction:column}main>:not(.banner){flex:1;min-height:0}.banner{background:var(--alert);border-bottom:1px solid #ecc9b8;color:var(--terra-text);padding:8px 20px;display:flex;gap:14px;align-items:center;font-size:13.5px}.banner>span{flex:1}.skeleton{width:min(720px,100%);display:grid;gap:12px}.skeleton-row{height:64px;border-radius:12px;background:var(--inset);animation:pulse 1.4s ease-in-out infinite}.skeleton-row:nth-child(3){width:70%;animation-delay:.15s}.skeleton-row:nth-child(4){width:45%;animation-delay:.3s}@keyframes pulse{50%{opacity:.45}}.empty-state{margin:56px auto 0;max-width:460px;text-align:center;display:grid;gap:12px;justify-items:center}.center-actions{justify-content:center;flex-wrap:wrap}.table-scroll{overflow-x:auto}.work{display:grid;grid-template-columns:308px 1fr;height:100%}.lessons{border-right:1px solid var(--hair);display:flex;flex-direction:column;min-height:0}.lessons>header{padding:18px 16px 12px;display:flex;align-items:flex-end;justify-content:space-between;gap:8px}.quick{padding:0 16px 12px;border-bottom:1px solid var(--hair);display:grid;gap:6px}.lesson-list{overflow-y:auto;padding:12px;display:grid;gap:10px;align-content:start}.lesson{background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:10px 6px 6px}.lesson>header{display:flex;align-items:baseline;gap:8px;padding:0 8px}.lesson>header strong{flex:1;font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson>p{padding:0 8px 6px}.lesson .row{width:100%;height:34px;padding:0 8px;border-radius:8px;display:flex;align-items:center;gap:8px}.lesson .row:hover{background:var(--inset)}.lesson .row.on{background:var(--inset);font-weight:500;box-shadow:inset 2px 0 0 var(--ink)}.row em{font-style:normal;font-size:12px;color:var(--ink2)}.row em.draft{color:var(--terra-text)}.space{min-width:0;min-height:0}.workspace{height:100%;display:flex;flex-direction:column}.who{padding:14px 20px 0;border-bottom:1px solid var(--hair)}.who .title{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.who .name{font:600 20px/1.3 var(--serif)}.who .name:hover{text-decoration:underline;text-underline-offset:4px}.who .date{padding:2px 6px;font:13px var(--mono);border-color:transparent;background:none}.who .date:hover,.who .date:focus{border-color:var(--hair);background:var(--card)}.who .topic{flex:0 1 auto}.who .title .grow{min-width:12px}.tabs{display:flex;align-items:center;gap:4px;margin-top:10px;flex-wrap:wrap}.tab{display:inline-flex;align-items:center;border-radius:8px 8px 0 0;border:1px solid transparent;border-bottom:0;padding-right:4px;margin-bottom:-1px}.tab>button:first-child{display:flex;align-items:center;gap:6px;padding:6px 4px 6px 10px;color:var(--ink2)}.tab.on{background:var(--inset);border-color:var(--hair)}.tab.on>button:first-child{color:var(--ink);font-weight:500}.tab .x{opacity:0}.tab:hover .x,.tab .x:focus-visible{opacity:1}.add-student{padding:3px 8px;width:230px;font-size:13px}.inline-status{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:13px;color:var(--ink2)}.inline-error,.inline-warn{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;padding:8px 12px;border-radius:10px;font-size:13.5px}.inline-error{background:var(--alert);border:1px solid #ecc9b8;color:var(--terra-text)}.inline-warn{background:var(--amber);border:1px solid var(--amber-line)}.inline-error>:first-child,.inline-warn>:first-child{flex:1;min-width:200px}.spin{width:12px;height:12px;border-radius:50%;border:2px solid var(--divider);border-top-color:var(--ink);animation:spin .8s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.panes{flex:1;min-height:0;display:grid;grid-template-columns:minmax(320px,5fr) minmax(360px,6fr);background:var(--inset);gap:1px}.pane{background:var(--paper);overflow-y:auto;padding:16px 20px 28px;position:relative}.pane.over{outline:2px dashed var(--terra);outline-offset:-8px}.step{width:20px;height:20px;border-radius:50%;background:var(--ink);color:#fff;font:500 12px/20px var(--mono);text-align:center}.memory{background:var(--amber);border:1px solid var(--amber-line);border-radius:10px;padding:10px 12px;margin-top:12px}.answers{display:flex;gap:8px;margin-top:8px}.answers button{flex:1;height:32px;border-radius:8px;background:var(--card);border:1px solid var(--amber-line);text-align:center}.answers button:hover{border-color:var(--ink)}.answers button.on{border:1.5px solid var(--ink);font-weight:500}.notes{margin-top:12px;display:grid;gap:6px}.note{display:flex;align-items:flex-start;gap:4px}.note .body{flex:1;background:var(--card);border:1px solid var(--hair);border-radius:8px;padding:7px 11px;white-space:pre-wrap}.note .body:hover{border-color:var(--ink)}.note .x{margin-top:7px}.note.editing{display:block}.row-actions{display:flex;justify-content:flex-end;gap:12px}.composer{display:flex;gap:8px;align-items:flex-end;margin-top:8px}.composer textarea{background:var(--card)}.keys{margin-top:4px}.boards{display:flex;flex-wrap:wrap;gap:8px}.board,.drop{width:88px;height:88px;border-radius:8px;border:1px solid var(--hair);background:var(--card);overflow:hidden;display:grid;place-items:center;text-align:center;padding:0}.board{position:relative}.board:hover{border-color:var(--ink)}.board.unreadable{border:1.5px solid var(--terra)}.board-flag{position:absolute;left:0;right:0;bottom:0;background:var(--alert);color:var(--terra-text);font-size:11.5px;line-height:1.6}.board img{width:100%;height:100%;object-fit:cover}.drop{border-style:dashed;border-color:var(--mute);color:var(--ink2);font-size:20px;line-height:1.2;padding:4px;width:auto;min-width:88px;flex:1;max-width:220px}.drop small{display:block;font-size:11.5px}.drop:hover{border-color:var(--ink);color:var(--ink)}.board-large{display:block;max-width:100%;max-height:62vh;margin:16px auto 0;border-radius:8px}.handout{display:flex;align-items:center;gap:6px;margin-top:8px;padding:6px 10px;background:var(--card);border:1px solid var(--hair);border-radius:8px}.handout a{flex:1;color:inherit;text-underline-offset:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scope li label{display:flex;align-items:baseline;gap:6px;padding:4px 6px;border-radius:6px;cursor:pointer}.scope li label:hover{background:var(--inset)}.scope .cut span:first-of-type{text-decoration:line-through;color:var(--mute)}.scope-foot{display:flex;align-items:center;gap:14px;margin-top:6px;flex-wrap:wrap}.scope-foot input[type=text],.scope-foot input:not([type]){flex:1;min-width:180px;font-size:13px;padding:5px 10px}.draft .empty{margin-top:48px;display:grid;justify-items:center;gap:16px;text-align:center}.bubble{display:block;width:100%;margin-top:12px;background:var(--card);border:1px solid var(--hair);border-radius:8px;padding:12px 14px;font:15px/1.65 inherit;white-space:pre-wrap;field-sizing:content;min-height:320px;resize:none}textarea.bubble:hover{border-color:var(--divider)}.bubble.green{background:var(--green);border-color:transparent}div.bubble{min-height:200px}.caret{font-weight:300;animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.guard{margin-top:10px;font-size:13px;color:var(--sage-text);font-weight:500}.guard .muted{font-weight:400}.guard.warn{color:var(--terra-text)}.fixes{margin-top:6px;display:grid;gap:8px}.fixes li{border:1px solid var(--hair);border-radius:8px;padding:8px 12px;background:var(--card)}.fixes del{color:var(--terra-text)}.actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px;flex-wrap:wrap}.actions>.muted{margin-right:auto;font-size:13px}.actions.main{position:sticky;bottom:0;background:var(--paper);margin:12px -20px 0;padding:10px 20px 14px;border-top:1px solid var(--hair);z-index:1}.pane.draft{padding-bottom:0}.pane.draft>:last-child:not(.actions){margin-bottom:28px}.toasts{position:fixed;left:50%;bottom:84px;transform:translate(-50%);display:grid;gap:8px;justify-items:center;z-index:5;width:max-content;max-width:calc(100vw - 32px);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:14px;background:var(--ink);color:#fff;border-radius:10px;padding:9px 8px 9px 16px;font-size:13.5px;box-shadow:0 6px 20px #1c1b1840;max-width:100%}.toast.bad{background:#7d3013}.toast>span{flex:1}.toast-act{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px;padding:2px 4px;white-space:nowrap}.toast-x{color:#d9d4ca;width:26px;height:26px;border-radius:6px;text-align:center;font-size:12px;flex:none}.toast-x:hover{background:#ffffff24;color:#fff}.toast :focus-visible{outline-color:#fff}.memory-editor{margin-top:20px;border-top:1px solid var(--hair);padding-top:4px}.tag-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.tag-row input{flex:1}.kind{font-size:12px;padding:1px 8px;border-radius:6px;background:var(--inset);margin-right:6px;white-space:nowrap}.kind.weakness{background:var(--alert);color:var(--terra-text)}.older{display:block;padding:3px 0;cursor:pointer}.scrim{position:fixed;inset:0;background:#1c1b1875;display:grid;place-items:center;padding:24px;z-index:10}.modal:focus{outline:none}.modal{background:var(--card);border-radius:14px;width:min(520px,100%);max-height:88vh;overflow-y:auto;box-shadow:0 16px 48px #1c1b1833}.modal.wide{width:min(880px,100%)}.modal>header{display:flex;justify-content:space-between;gap:12px;padding:16px 20px 12px;border-bottom:1px solid var(--hair)}.modal>footer{display:flex;justify-content:flex-end;align-items:center;gap:10px;padding:14px 20px 18px;flex-wrap:wrap}.help{padding:6px 24px 0;display:grid;gap:8px}.help h3{margin-top:12px}.help ol{padding-left:22px;display:grid;gap:8px}.help li b{margin-right:8px}.keys-list{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px}.keys-list dt{font-family:var(--mono);font-size:12.5px;background:var(--inset);border-radius:6px;padding:1px 8px}.form{padding:14px 20px 0;display:grid;gap:8px}.form label{font-size:13px;font-weight:500;color:var(--ink2);margin-top:6px}.form input{width:100%}.cols{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:12px}.cols>div{display:grid;gap:8px}.split{display:grid;grid-template-columns:250px 1fr;height:100%}.list{border-right:1px solid var(--hair);overflow-y:auto}.list>header{padding:18px 16px 12px;display:grid;gap:10px}.list .row{width:100%;padding:8px 16px;display:flex;justify-content:space-between;align-items:baseline;gap:8px}.list .row:hover,.list .row.on{background:var(--inset)}.list .row.on{font-weight:500}.detail{overflow-y:auto}.profile,.page{padding:22px 28px 40px;max-width:860px}.page{max-width:1080px;overflow-y:auto;height:100%}.page.narrow{max-width:680px}.profile h3,.page h3{margin:26px 0 10px}.fields{display:grid;grid-template-columns:88px 1fr;gap:6px 12px;margin-top:14px;align-items:center}.fields dt{color:var(--ink2);font-size:13px}.token{display:flex;gap:8px}.token input{flex:1;max-width:260px}.row.card{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--card);border:1px solid var(--hair);border-radius:10px;margin-bottom:6px}.row.card:hover{border-color:var(--ink)}.tracked{display:flex;align-items:center;gap:12px;padding:7px 12px;background:var(--amber);border:1px solid var(--amber-line);border-radius:10px;margin-bottom:6px}.tracked>span:first-child{flex:1}.dots{display:inline-flex;gap:4px}.dots i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--mute)}.dots i.on{background:var(--terra);border-color:var(--terra)}.memory-item{border-top:1px solid var(--hair);padding:8px 0}.memory-item .head{width:100%;display:flex;align-items:baseline;gap:10px;padding:2px 0}.memory-item pre{font-family:inherit;min-height:0;margin:8px 0 4px}table{width:100%;border-collapse:collapse;margin-top:16px;background:var(--card);border:1px solid var(--hair);border-radius:12px;overflow:hidden}th{text-align:left;font-size:12.5px;font-weight:500;color:var(--ink2);padding:8px 12px;background:var(--inset);white-space:nowrap}td{padding:9px 12px;border-top:1px solid var(--hair);vertical-align:baseline}tbody tr:hover{background:var(--paper)}td.names{max-width:260px;color:var(--ink2);font-size:13px}td.ops{white-space:nowrap;text-align:right}td.ops .link{margin-left:10px}.setting{display:flex;align-items:center;gap:16px;margin-top:12px}.setting>label{width:110px;color:var(--ink2);font-size:13px;flex:none}.setting.block{display:block}.setting.block>label{width:auto;display:block;margin-bottom:6px}.rules{background:var(--card);border:1px solid var(--hair);border-radius:12px}.rules li{display:flex;gap:14px;padding:9px 14px;border-top:1px solid var(--inset)}.rules li:first-child{border-top:0}.rules b{width:86px;font-weight:500;flex:none}.home{display:grid;grid-template-columns:276px 1fr;height:100%}.home-side{border-right:1px solid var(--hair);overflow-y:auto;padding:18px 14px;display:grid;gap:18px;align-content:start}.home-side .quick{border:0;padding:0}.home-main{min-width:0;display:flex;flex-direction:column;min-height:0}.toolbar{display:flex;align-items:center;gap:14px;padding:16px 24px 12px;flex-wrap:wrap}.stepper{display:flex;align-items:center;gap:4px}.stepper strong{font-weight:500;min-width:120px;text-align:center;font-variant-numeric:tabular-nums}.stepper .link{margin-left:8px}.statbar{display:flex;align-items:center;gap:8px;padding:0 24px 12px;border-bottom:1px solid var(--hair);flex-wrap:wrap}.stat{height:30px;padding:0 12px;border-radius:15px;border:1px solid var(--hair);background:var(--card);display:inline-flex;align-items:center;gap:6px;color:var(--ink2);font-size:13px}.stat b{color:var(--ink);font-family:var(--mono);font-weight:500}.stat:hover{border-color:var(--ink)}.stat.on{border-color:var(--ink);background:var(--inset);color:var(--ink)}.home-body{flex:1;min-height:0;overflow:auto;padding:16px 24px 32px}.cal header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.cal-title{font-weight:600;padding:3px 10px;border-radius:8px}.cal-title:hover,.cal-title.on{background:var(--inset)}.cal-grid{display:grid;grid-template-columns:22px repeat(7,1fr);gap:2px}.cal-head{text-align:center;font-size:12px;color:var(--ink2);padding:2px 0}.cal-week{font-size:11px;color:var(--ink2);border-radius:6px;text-align:center}.cal-week:hover,.cal-week.on{background:var(--ink);color:#fff}.cal-day{height:32px;border-radius:8px;text-align:center;position:relative;font-variant-numeric:tabular-nums;font-size:13px}.cal-day:hover{background:var(--inset)}.cal-day.out{color:var(--mute);opacity:.55}.cal-day.today{box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}.cal-day.picked{background:var(--inset)}.cal-day i,.cal-legend i{position:absolute;left:50%;bottom:3px;width:5px;height:5px;margin-left:-2.5px;border-radius:50%}i.pending{background:var(--terra)}i.done{background:var(--sage)}.cal-legend{margin-top:8px;line-height:1.7}.cal-legend i{position:static;display:inline-block;margin:0 4px 1px 0}.by-date section{margin-bottom:20px}.by-date h3{margin-bottom:8px;font-variant-numeric:tabular-nums}.by-date h3 button{font-weight:600}.by-date h3 button:hover{text-decoration:underline;text-underline-offset:3px}.lesson-row{display:grid;grid-template-columns:minmax(180px,280px) 1fr auto;gap:16px;align-items:center;background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:10px 14px;margin-bottom:8px}.lesson-row:hover{border-color:var(--divider)}.lesson-main{display:grid;gap:1px;min-width:0}.lesson-main strong{font-size:15px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-main:hover strong{text-decoration:underline;text-underline-offset:3px}.lesson-students,.lesson-chips{display:flex;flex-wrap:wrap;gap:6px}.who-chip{height:30px;padding:0 10px;border-radius:8px;background:var(--paper);border:1px solid var(--hair);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.who-chip:hover{border-color:var(--ink);background:var(--card)}.who-chip.dim{opacity:.38}.who-chip em{font-style:normal;font-size:12px;color:var(--ink2)}.who-chip em.draft{color:var(--terra-text)}.lesson-end{display:flex;align-items:center;gap:10px;white-space:nowrap}.progress{width:64px;height:4px;border-radius:2px;background:var(--inset);display:inline-block;overflow:hidden;vertical-align:middle}.progress.wide{width:90px}.progress i{display:block;height:100%;background:var(--sage)}.week{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:8px;min-height:100%}.week-col{background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:8px;display:grid;gap:6px;align-content:start;min-height:220px}.week-col.today{border-color:var(--ink)}.week-col h4{margin:0 2px 4px}.week-col h4 button:hover,.month-day:hover{text-decoration:underline;text-underline-offset:3px}.mini{display:grid;gap:3px;width:100%;padding:6px 8px;border-radius:8px;background:var(--amber);border:1px solid var(--amber-line)}.mini.done{background:var(--paper);border-color:var(--hair)}.mini:hover{border-color:var(--ink)}.mini-topic{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-dots{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.mini-dots .mono{margin-left:auto;font-size:11.5px}.month{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));border:1px solid var(--hair);border-radius:12px;overflow:hidden;background:var(--hair);gap:1px}.month-head{background:var(--inset);font-size:12.5px;color:var(--ink2);padding:6px 10px}.month-cell{background:var(--card);min-height:112px;padding:6px;display:grid;gap:4px;align-content:start}.month-cell.out{background:var(--paper)}.month-cell.out .month-day{color:var(--mute)}.month-day{font-variant-numeric:tabular-nums;font-size:13px;width:24px;height:24px;border-radius:50%;text-align:center}.month-cell.today .month-day{background:var(--ink);color:#fff;font-weight:600}.students-table td{vertical-align:middle}.students-table td:first-child,.nowrap{white-space:nowrap}.students-table th .dot{margin-right:5px;vertical-align:-2px}.num{text-align:center;font-family:var(--mono);width:92px;white-space:nowrap}th.num{font-family:inherit}td.num.zero{color:var(--divider)}td.num.hot{color:var(--terra-text);font-weight:600}.name-link{font-weight:500;font-size:15px}.name-link:hover{text-decoration:underline;text-underline-offset:3px}.link.back{font-size:14px;font-weight:500;text-decoration:none;padding:0}.lessons>header{align-items:center}.settings{display:grid;grid-template-columns:200px 1fr;height:100%}.settings-nav{border-right:1px solid var(--hair);padding:18px 10px;display:grid;gap:2px;align-content:start}.settings-nav h1{padding:0 10px 14px}.settings-nav .row{height:36px;padding:0 10px;border-radius:8px;color:var(--ink2);display:flex;align-items:center}.settings-nav .row:hover{background:var(--inset)}.settings-nav .row.on{background:var(--inset);color:var(--ink);font-weight:500;box-shadow:inset 2px 0 0 var(--ink)}.settings-body{overflow-y:auto;padding:22px 32px 48px}.settings-body>*{max-width:1120px;margin-left:auto;margin-right:auto}.section-head{margin-bottom:16px}.section-head h2{display:flex;align-items:center;gap:10px;margin-bottom:4px}.cards{display:grid;gap:14px;align-items:start}.cards.two{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}.cards.three{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.card{background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:16px 18px 18px}.card>h3{margin:0 0 10px}.card textarea{margin-bottom:6px}.card.rule{display:flex;gap:12px;align-items:flex-start}.card.rule h3{margin:0 0 2px}.code{font-family:var(--mono);font-size:12.5px;background:var(--inset);border-radius:8px;padding:9px 12px;margin:6px 0 0;white-space:pre-wrap;word-break:break-all;-webkit-user-select:all;user-select:all}.actions.bar{background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:10px 14px}.led{display:inline-block;margin-right:4px}.link.danger{color:var(--terra-text)}.link.danger:hover{color:var(--terra)}.link.sep{margin-left:14px}td.ops .link.sep{margin-left:22px}.settings-nav .badge{margin-left:8px}.btn.danger{background:var(--terra);color:#fff}.btn.danger:hover{background:var(--terra-text)}.bullets{list-style:disc;padding-left:20px;display:grid;gap:4px}.list-title,.profile-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.cols.two{grid-template-columns:1fr 1fr}.modal form.form{padding-bottom:4px}.login{height:100%;display:grid;place-items:center;padding:24px}.login form{width:min(360px,100%);display:grid;gap:12px;background:var(--card);border:1px solid var(--hair);border-radius:16px;padding:28px 26px 24px}.login label{font-size:13px;font-weight:500}.login .brand{padding:0;font-size:26px}.login input{height:42px;font-size:15px}.login .btn{height:42px}.signout{font-size:12px;color:var(--ink2);padding:0 10px 4px;text-align:left}.warn-box{background:var(--amber);border:1px solid var(--amber-line);border-radius:10px;padding:9px 12px;margin-top:10px}.llms{display:grid;gap:12px;margin:12px 0 14px}.llm{background:var(--card);border:1px solid var(--hair);border-radius:12px;padding:12px 16px 14px}.llm-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rank{width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font:500 12px/22px var(--mono);text-align:center;flex:none}.llm.off .rank{background:var(--mute)}.role{font-size:12px;padding:1px 8px;border-radius:6px;background:var(--inset);color:var(--ink2);white-space:nowrap}.role.first{background:#e7f1ea;color:var(--sage-text)}.llm-name{width:220px;flex:0 1 220px;min-width:120px;font-weight:500}.switch{display:inline-flex;align-items:center;white-space:nowrap;cursor:pointer;font-size:13px;margin-right:4px}.llm-fields{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.1fr) minmax(0,1.5fr);gap:12px;margin-top:12px}.llm-fields label{display:grid;gap:4px;font-size:12.5px;color:var(--ink2);min-width:0}.llm-fields input{width:100%;min-width:0;font-size:14px;color:var(--ink)}.llm.off .llm-fields{opacity:.5}@media(max-width:1180px){.llm-fields{grid-template-columns:1fr}}.llm-foot{display:flex;align-items:center;gap:12px;margin-top:12px;min-height:30px;flex-wrap:wrap}.ok-text{color:var(--sage-text);font-size:13px}.bad-text{color:var(--terra-text);font-size:13px}.icon:disabled{opacity:.3}@media(max-width:1100px){.shell{grid-template-columns:64px 1fr}.side{padding:18px 6px 12px}.side .brand{font-size:0;padding-bottom:8px}.side .brand:first-letter{font-size:22px}.sync{flex-direction:column;align-items:center;gap:3px;padding:8px 0;font-size:11px}.sync-long{display:none}.sync-short{display:inline}.nav,.nav.help{font-size:12px;padding:0 2px;justify-content:center;position:relative}.nav .badge{position:absolute;top:2px;right:4px;font-size:10.5px}.signout{text-align:center;padding:0 0 4px;font-size:11px}.work{grid-template-columns:260px 1fr}}@media(max-width:860px){.panes{display:block;overflow-y:auto;background:var(--paper)}.pane{overflow:visible}.pane.materials{border-bottom:1px solid var(--hair)}.work{grid-template-columns:1fr}.lessons{display:none}.home{grid-template-columns:1fr}.home-side{display:none}.lesson-row{grid-template-columns:1fr}.settings{grid-template-columns:1fr;grid-template-rows:auto 1fr}.settings-nav{display:flex;flex-wrap:wrap;align-items:center;border-right:0;border-bottom:1px solid var(--hair);padding:10px 12px}.settings-nav h1{padding:0 10px 0 4px;font-size:18px}.settings-nav .row.on{box-shadow:none}.settings-body{padding:16px 16px 40px}.cards.two,.cards.three{grid-template-columns:1fr}.setting{flex-wrap:wrap;gap:6px}.llm-name{flex:1 1 100%;width:auto}.split{grid-template-columns:1fr;grid-template-rows:minmax(120px,34vh) 1fr}.list{border-right:0;border-bottom:1px solid var(--hair)}.profile,.page{padding:16px 16px 32px}.toolbar,.statbar{padding-left:16px;padding-right:16px}.home-body{padding:12px 16px 28px}.who{padding:12px 16px 0}.pane{padding:14px 16px 24px}.actions.main{margin:12px -16px 0;padding:10px 16px 14px}.toasts{bottom:96px}}@media(max-width:560px){.shell{grid-template-columns:1fr;grid-template-rows:auto 1fr}.side{flex-direction:row;align-items:center;gap:2px;border-right:0;border-bottom:1px solid var(--hair);padding:6px 8px;overflow-x:auto}.side .brand{display:none}.nav,.nav.help{margin:0;height:40px;padding:0 10px;font-size:13px;flex:none}.nav.help{margin-left:auto}.sync{flex-direction:row;padding:0 6px;flex:none;margin:0}.signout{flex:none;padding:0 6px}.scrim{padding:8px;align-items:end}.modal,.modal.wide{width:100%;max-height:94vh}.cols,.cols.two{grid-template-columns:1fr}.modal>footer{flex-direction:column-reverse;align-items:stretch}.modal>footer .grow{display:none}.fields{grid-template-columns:72px 1fr}.bubble{font-size:16px}.btn{min-height:40px}.who .date{order:3}}@media(prefers-reduced-motion:reduce){.caret,.skeleton-row,.spin{animation:none}}
