@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{font-family:'Noto Sans SC',-apple-system,BlinkMacSystemFont,sans-serif;color:#292b3b;background:#eef0f4;font-size:14px;--purple:#6955d5;--muted:#9193a3;--border:#eaebf0;--soft:#f7f8fa}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #af9cf9;outline-offset:3px}button{border:1px solid var(--border);background:white;color:inherit;border-radius:8px;padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}button:hover{background:#f4f1ff;border-color:#c8bcf8}button.primary{background:var(--purple);color:white;border-color:var(--purple)}button.ghost{border-color:transparent;background:transparent}svg{width:18px;height:18px;flex-shrink:0;vertical-align:middle}.app-shell{display:grid;grid-template-columns:218px 1fr;min-height:100vh;max-width:1800px;margin:auto;background:#f8f9fb}aside{border-right:1px solid var(--border);padding:30px 18px;background:#fbfbfd;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;font-size:24px;font-weight:700;letter-spacing:1px;padding:0 12px 28px}.brand-icon{width:37px;height:37px;border-radius:12px;background:var(--purple);color:white;display:grid;place-items:center;font-size:22px}.brand small{display:block;font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:500}.nav-label{font-size:12px;color:#a2a2b0;letter-spacing:1.5px;margin:25px 15px 10px}nav button{width:100%;justify-content:flex-start;padding:12px 14px;margin:3px 0;border:0;background:transparent;color:#747685}nav button.active{color:var(--purple);background:#eeeafd;font-weight:600}nav button svg{margin-right:4px}.side-class{display:flex;align-items:center;gap:10px;margin:15px;color:#818191}.class-dot{height:8px;width:8px;background:#b0a1ed;border-radius:3px}.aside-bottom{margin-top:auto;border-top:1px solid var(--border);padding-top:20px;color:#878795;font-size:12px;line-height:1.9}.avatar{width:33px;height:33px;display:inline-grid;place-items:center;background:#ede7ff;border-radius:50%;color:var(--purple);font-size:13px;font-weight:600}.workspace{min-width:0}header{height:78px;background:#ffffffd9;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 34px}.breadcrumb{display:flex;gap:10px;align-items:center;color:#9495a0;font-size:13px}.breadcrumb strong{font-weight:500;color:#414252}.header-actions{display:flex;align-items:center;gap:16px}.save-state{font-size:12px;color:#868b93}.main{padding:29px 34px 40px;max-width:1500px;margin:auto}.page-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:25px}h1{font-size:25px;font-weight:600;margin:0 0 7px;letter-spacing:.2px}h2{font-size:16px;font-weight:600;margin:0}h3{font-size:14px;margin:0}p{line-height:1.7}.subtitle{color:#8a8b99;margin:0;font-size:13px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.notice{background:#f0edfb;color:#7964b3;border:1px solid #e7e0fb;border-radius:8px;padding:10px 14px;font-size:12px;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:10px}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--border);border-radius:13px;padding:22px 0;margin-bottom:22px}.stat{padding:0 24px;border-right:1px solid var(--border)}.stat:last-child{border:0}.stat-top{display:flex;align-items:center;gap:10px;color:#8b8c9c;font-size:12px}.stat-icon{height:33px;width:33px;display:grid;place-items:center;border-radius:10px;background:#efebfd;color:var(--purple)}.stat:nth-child(2) .stat-icon{background:#fff1df;color:#d4a052}.stat:nth-child(3) .stat-icon{background:#e8f6f0;color:#54a987}.stat:nth-child(4) .stat-icon{background:#eaf0fe;color:#728bc7}.stat-value{font-size:29px;font-weight:600;margin:10px 0 6px}.stat-value small{font-size:12px;font-weight:400;color:#9998a6;margin-left:5px}.stat-foot{font-size:12px;color:#a0a0aa}.panel{background:white;border:1px solid var(--border);border-radius:12px;margin-bottom:22px;overflow:hidden}.panel-head{padding:19px 22px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-bottom:1px solid #f0f0f5}.panel-head h2{display:flex;align-items:center;gap:9px}.panel-head h2 svg{color:#a5a0b8}.panel-body{padding:20px 22px}.badge{display:inline-flex;align-items:center;border-radius:5px;background:#f0edfd;color:#8472c8;padding:4px 8px;font-size:12px;font-weight:400}.badge.green{background:#eaf6ef;color:#5e9d7d}.badge.orange{background:#fff3e5;color:#be9251}.badge.gray{background:#f2f3f6;color:#898c9b}.dashboard-lower{display:grid;grid-template-columns:1.65fr 1fr;gap:22px}.timeline{display:grid;grid-template-columns:85px repeat(10,1fr);position:relative;min-width:720px;font-size:12px;padding:10px 0 22px}.timeline>div{grid-row:1;text-align:center;color:#a6a4b1;padding:0 0 16px}.timeline .lane{grid-column:1;grid-row:auto;color:#7b7c8d;padding:15px 0;text-align:left}.timeline .event{border-left:3px solid #a18adf;color:#8068ac;background:#f0ecfa;border-radius:4px;padding:9px 12px;text-align:left;margin:4px 6px;grid-row:auto;font-size:12px;line-height:1.7}.timeline .event.mint{background:#edf6f2;color:#57977d;border-color:#83bba5}.timeline .event.peach{background:#fff5e9;color:#b79760;border-color:#e6bb7e}.timeline .event.blue{background:#edf1fb;color:#7c8bae;border-color:#94a7d3}.event b{display:block;font-weight:500}.scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{background:#fcfcfe;font-size:12px;font-weight:400;color:#9898a6;padding:12px 19px;border-bottom:1px solid var(--border)}td{padding:15px 19px;border-bottom:1px solid #f0f0f5;font-size:13px}tr:last-child td{border:0}.class-cell{display:flex;align-items:center;gap:10px}.class-icon{display:grid;place-items:center;width:30px;height:32px;background:#f0edf9;color:#9a88c5;border-radius:6px}.progress{display:flex;align-items:center;gap:9px;color:#9b95b2;font-size:12px}.progress-line{background:#f1eff8;height:5px;width:72px;border-radius:9px;overflow:hidden}.progress-line i{display:block;background:#a392d9;height:100%;border-radius:9px}.task-row{display:flex;gap:11px;padding:16px 0;border-bottom:1px solid #f0f0f5;align-items:flex-start}.task-row:last-child{border:0}.task-row input{margin-top:4px;accent-color:var(--purple);width:16px;height:16px}.task-row .task-content{flex:1;min-width:0}.task-title{font-size:14px;margin-bottom:8px}.task-detail{font-size:12px;color:#a09ead;line-height:1.8}.task-row.done .task-title{text-decoration:line-through;color:#aaa}.empty{text-align:center;padding:48px 20px;color:#9895a6}.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:20px}input,select,textarea{border:1px solid #e3e3ec;border-radius:7px;padding:10px 12px;color:#444351;background:white;min-width:0}textarea{width:100%;resize:vertical;line-height:1.8}input:focus,select:focus,textarea:focus{outline:2px solid #ddd3fc;border-color:#aa97e0}label{font-size:13px;color:#7c788c;display:block}label input,label select,label textarea{display:block;margin-top:7px;width:100%}.hint{font-size:12px;color:#9993a6;line-height:1.8}.week-grid{display:grid;grid-template-columns:70px repeat(5,minmax(140px,1fr));min-width:780px}.week-grid .day{padding:17px;text-align:center;color:#9892aa;background:#fcfbfe;border-bottom:1px solid var(--border)}.period{padding:22px 8px;font-size:12px;text-align:center;color:#9993a7;border-bottom:1px solid var(--border)}.week-cell{padding:9px;border-left:1px solid #f1eff5;border-bottom:1px solid #f1eff5;min-height:120px}.lesson{background:#f0edfa;border-left:3px solid #b1a0dc;border-radius:5px;padding:12px;text-align:left;width:100%;display:block;white-space:normal;line-height:1.8;color:#8974b5}.lesson small{display:block;font-size:12px;color:#a39ab6}.status-btn{padding:6px 10px;background:#f6f5f9;color:#aba6b7;font-size:12px;min-width:74px}.status-btn.yes{background:#edf7f0;color:#599675;border-color:#dceee2}.status-btn.no{background:#fff0eb;color:#bc8370;border-color:#f6e2da}.status-btn.late{background:#fff5df;color:#b69a55}.student-name{font-weight:500;color:#555163}.role{font-size:11px;color:#a095b0;display:block;margin-top:3px}.seat-controls{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-bottom:15px}.board{background:#f0f1f4;color:#a3a1ad;text-align:center;width:42%;margin:8px auto 30px;padding:10px;letter-spacing:12px;border-radius:5px;font-size:12px}.seat-grid{display:grid;gap:24px;min-width:720px}.desk-group{display:grid;grid-template-columns:1fr 36px 1fr;grid-template-rows:34px 34px;gap:5px;position:relative}.desk{grid-column:2;grid-row:1/3;background:#ede9f5;border:1px solid #dcd3ee;border-radius:5px;display:grid;place-items:center;color:#b3a5c9;font-size:12px;position:relative}.desk:after{content:'';height:1px;background:#d9cfe9;width:100%;position:absolute;top:50%}.seat{font-size:11px;padding:3px;border:1px solid #e4e0ef;border-radius:5px;color:#8d829f;min-width:48px;white-space:normal;line-height:1.3}.seat.selected{background:var(--purple);color:white}.seat.empty-seat{border-style:dashed;color:#c2b8ce;background:#fbfafd}.seat:nth-of-type(3){grid-column:1;grid-row:2}.seat:nth-of-type(4){grid-column:3;grid-row:2}.seat-area{padding:22px;overflow:auto}.calendar-layout{display:grid;grid-template-columns:1fr 330px;gap:22px}.month-grid{display:grid;grid-template-columns:repeat(7,1fr)}.month-grid .weekday{padding:13px;text-align:center;color:#a59eaf;font-size:12px}.date-cell{min-height:100px;padding:10px;border-top:1px solid #f1eff5;border-right:1px solid #f1eff5;font-size:12px;color:#91869f;background:white;display:block;text-align:left;border-radius:0;white-space:normal}.date-cell.today{background:#faf8ff}.date-cell.chosen{box-shadow:inset 0 0 0 2px #ac96e0}.date-cell.muted{color:#ccc}.mini-task{display:block;margin-top:7px;background:#efebf8;color:#9a85ba;border-radius:4px;padding:4px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}dialog{border:1px solid #ece8f2;border-radius:15px;padding:0;width:min(580px,calc(100% - 28px));max-height:88vh;box-shadow:0 30px 100px #34304326}dialog::backdrop{background:#29233344;backdrop-filter:blur(3px)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-body{padding:24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.span2{grid-column:1/-1}.modal-footer{margin-top:22px;display:flex;justify-content:flex-end;gap:10px}.voice-box{background:#f6f3fc;padding:16px;border-radius:9px;margin-bottom:20px}.voice-box textarea{margin:10px 0;background:white;font-size:13px}.voice-status{font-size:12px;color:#9782b3}.mobile-menu{display:none}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#423a58;color:white;padding:13px 22px;border-radius:10px;box-shadow:0 5px 30px #312d3c20;z-index:20;display:none;max-width:90%;font-size:13px}.footer-note{color:#b1adbb;font-size:11px;display:flex;justify-content:space-between;margin-top:5px}.login{max-width:390px;margin:15vh auto;padding:30px;background:white;border-radius:15px}.login input{width:100%;margin:20px 0}.inline-link{font-size:12px;color:#9a8bb5;padding:4px 8px;background:transparent;border:0}.danger{color:#bc7f7f}.mobile-only{display:none}@media(min-width:1500px){.main{padding:35px 48px}header{padding:0 48px}.app-shell{grid-template-columns:235px 1fr}.timeline{padding-top:18px;padding-bottom:26px}}@media(max-width:1150px){.app-shell{grid-template-columns:190px 1fr}.main{padding:24px}.dashboard-lower{grid-template-columns:1fr}.calendar-layout{grid-template-columns:1fr}.stat{padding:0 16px}.header-actions{gap:8px}.save-state{max-width:170px}.brand{font-size:21px}.calendar-side{display:none}}@media(max-width:760px){.app-shell{display:block}aside{position:fixed;left:-250px;z-index:10;width:220px;transition:left .2s;box-shadow:10px 0 50px #30234410}aside.open{left:0}.mobile-menu{display:flex}.mobile-only{display:block}header{height:64px;padding:0 16px}.main{padding:22px 16px 35px}.breadcrumb>span{display:none}.header-actions .save-state{display:none}.page-heading{align-items:flex-start;flex-direction:column;gap:16px}h1{font-size:23px}.stats{grid-template-columns:1fr 1fr;padding:0}.stat{padding:18px}.stat:nth-child(2){border-right:0}.stat:nth-child(-n+2){border-bottom:1px solid var(--border)}.stat-value{font-size:27px}.stat-foot{font-size:11px}.dashboard-lower{gap:0}.panel-head{padding:16px}.panel-body{padding:16px}.notice{align-items:flex-start;font-size:11px}.notice button{font-size:11px;padding:2px}.toolbar{gap:8px}.toolbar input{max-width:160px}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.month-grid .weekday{padding:10px 3px}.date-cell{min-height:72px;padding:6px}.mini-task{font-size:10px}.seat-controls{align-items:flex-start;flex-direction:column}.footer-note{display:block;line-height:2}.header-actions .ghost{display:none}.actions button{font-size:13px}.subtitle{font-size:12px}.calendar-layout{gap:0}}
@media(max-width:760px){.calendar-layout,.dashboard-lower{min-width:0}.panel{min-width:0}.panel-head{flex-wrap:wrap}.date-cell{min-width:0}.mini-task{max-width:100%}.seat{min-height:36px}.seat-grid{gap:26px 20px}.desk-group{grid-template-rows:36px 36px}.mobile-menu{min-height:42px;min-width:42px}}
@media(max-width:760px){.record-table,.record-table tbody{display:block;white-space:normal}.record-table thead{display:none}.record-table tr{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;border-bottom:1px solid var(--border);padding:18px}.record-table td{display:block;padding:0;border:0;min-width:0}.record-table td:nth-child(1){color:#aaa;grid-column:1;grid-row:1}.record-table td:nth-child(2){grid-column:2/4;grid-row:1;text-align:right}.record-table td:nth-child(n+3):before{display:block;color:#a69fae;font-size:12px;margin-bottom:6px}.record-table td:nth-child(3):before{content:'课本'}.record-table td:nth-child(4):before{content:'自备工具'}.record-table td:nth-child(5):before{content:'作业提交'}.record-table td:nth-child(6):before{content:'课堂分数'}.record-table td:nth-child(7):before{content:'课堂备注'}.record-table td:nth-child(7){grid-column:2/4}.record-table input{width:100%!important;max-width:100%;font-size:16px}.status-btn{min-height:40px;width:100%;min-width:0;padding:6px 4px;font-size:12px}.calendar-side{display:block}.calendar-layout{gap:0}}

/* Clearer hierarchy, deliberate color and readable working controls. */
:root{--purple:#6545cf;--muted:#717185;--border:#e5e5ef;--soft:#f5f5fb;color:#303044;font-size:15px}
button{min-height:42px;font-weight:500;transition:background .16s,border-color .16s,box-shadow .16s;touch-action:manipulation}
button.primary{background:#6545cf;box-shadow:0 4px 12px #6545cf20;font-weight:600}
button.primary:hover{background:#5335b8;border-color:#5335b8;box-shadow:0 5px 15px #6545cf35}
button.secondary{background:#f1edfc;color:#6044b7;border-color:#e2daf7;font-size:13px;min-height:38px;padding:8px 13px}
button.secondary:hover{background:#e6ddfc;border-color:#c6b6ed}
button.inline-link{min-height:38px;font-size:13px;color:#655188}
button.voice-action{background:#fff;border-color:#cfc3ed;color:#6044b7}
.main{min-width:0}h1{font-size:26px;line-height:1.35}h2{line-height:1.45}h3{line-height:1.5}
.page-heading>div:first-child{min-width:0}.page-heading .actions{flex-shrink:0}.subtitle{color:#747487;font-size:14px;line-height:1.7}
.panel-head h2{flex-wrap:wrap;gap:8px;min-width:0}.panel-head>button{flex-shrink:0}.panel{box-shadow:0 2px 6px #27204402}
.panel-head{padding:18px 21px}.panel-body{padding:20px 21px}.badge{font-size:12px;line-height:1.6;white-space:normal;color:#6545a8;background:#eee8fb}
.badge.green{color:#267452;background:#e5f4eb}.badge.orange{color:#996220;background:#fff0d9}.badge.gray{color:#666577;background:#f0f0f6}
.hint{font-size:13px;color:#797286;line-height:1.8}.role{font-size:12px;color:#86758e;line-height:1.5}.empty{font-size:14px;line-height:2;color:#81798f}.empty button{margin-top:14px}
.notice{color:#746382;background:#f3f0fa;line-height:1.7;font-size:12px}.notice>span{min-width:0}.notice button{flex-shrink:0;color:#6346af}
.stats{gap:14px;border:0;background:transparent;padding:0;overflow:visible}
.stat{border:1px solid #e7e3f3!important;background:white;display:flex;flex-direction:column;align-items:stretch;text-align:left;border-radius:12px;padding:19px 20px;min-width:0;white-space:normal;position:relative;gap:0;overflow:hidden}
.stat:before{content:'';position:absolute;left:0;top:0;width:100%;height:3px;background:var(--accent,#7656d2)}
.stat:hover{background:#fbfaff;box-shadow:0 5px 16px #553d9710;border-color:#cbbbed!important}.stat-1{--accent:#d29436}.stat-2{--accent:#3d9876}.stat-3{--accent:#5684c5}
.stat-top{font-size:13px;color:#68657d;gap:10px;line-height:1.5}.stat-icon{width:34px;height:34px;flex-shrink:0}.stat-value{display:block;color:#342a4e;font-size:30px;line-height:1.3;letter-spacing:-.5px;font-weight:650;margin:11px 0 6px}.stat-value small{font-size:13px;color:#777085;letter-spacing:0}.stat-foot{font-size:12px;color:#81778d;line-height:1.6;min-height:20px}.stat-cta{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f0edf6;margin-top:12px;padding-top:10px;color:#72519d;font-size:12px}.stat-cta svg{height:14px;width:14px}
.lesson-agenda{padding:9px 21px 18px}.agenda-row{display:grid;grid-template-columns:85px minmax(0,1fr);gap:16px;padding:13px 0;border-bottom:1px solid #f0edf6;--tone:#7659bd;--tone-bg:#f4f0fc;--tone-border:#dacef0}
.agenda-row:last-child{border-bottom:0}.agenda-row.tone-1{--tone:#377f6d;--tone-bg:#edf7f2;--tone-border:#c5e3d5}.agenda-row.tone-2{--tone:#a67732;--tone-bg:#fff7e8;--tone-border:#ecd5ac}
.agenda-time{padding:14px 0;display:flex;flex-direction:column;gap:4px;font-variant-numeric:tabular-nums;color:#8c8199;justify-content:center}.agenda-time strong{font-size:20px;color:#554365;line-height:1.3}.agenda-time span{font-size:12px;line-height:1.7}.agenda-time .period-label{margin-top:4px;color:#86718f}
.agenda-course{min-width:0;background:var(--tone-bg);border:1px solid var(--tone-border);border-left:4px solid var(--tone);border-radius:10px;display:flex;align-items:center;padding:4px 17px 4px 0;gap:15px}
.agenda-open{border:0;background:transparent;display:flex;flex-direction:column;align-items:stretch;justify-content:center;text-align:left;padding:13px 16px;flex:1;min-width:0;white-space:normal;gap:7px}
.agenda-open:hover{background:#ffffff66}.agenda-open>strong{font-size:17px;line-height:1.5;color:#41334f;overflow-wrap:anywhere;font-weight:600}.agenda-meta{color:var(--tone);font-size:13px;display:flex;flex-wrap:wrap;gap:6px 14px;line-height:1.7}.agenda-meta>span{color:#7a7583}.agenda-tools{font-size:13px;color:#7a7088;line-height:1.7;display:flex;align-items:flex-start;gap:6px;overflow-wrap:anywhere}.agenda-tools svg{height:15px;width:15px;margin-top:3px}
.detail-prompt{color:#8768b0;font-size:12px;display:inline-flex;gap:4px;align-items:center;line-height:1.6}.detail-prompt svg{height:13px;width:13px}.agenda-row .detail-prompt{color:var(--tone)}
.lesson-record{background:white;border:1px solid var(--tone-border);color:var(--tone);font-size:13px;min-height:42px;flex-shrink:0;padding:10px 13px}.lesson-record:hover{background:#ffffffbf;border-color:var(--tone)}
#today-lessons{scroll-margin-top:20px;transition:box-shadow .2s}.highlight{box-shadow:0 0 0 3px #c7b5ef!important}
.dashboard-lower{grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);align-items:start}
.home-progress{padding:0 21px}.progress-row{display:block;text-align:left;border:0;border-radius:0;border-bottom:1px solid #eeebf3;width:100%;white-space:normal;padding:18px 0;background:white}.progress-row:last-child{border:0}.progress-row:hover{background:#faf8fe}.progress-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.progress-heading strong{font-size:14px;font-weight:500;color:#4b405c}.class-icon{font-size:13px;color:#7755ae;background:#f0eafa}.class-cell{min-width:0}.progress-topic{display:block;margin:9px 0 12px;font-size:14px;color:#7a7087;line-height:1.5;overflow-wrap:anywhere}
.progress{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:135px;width:100%;font-size:12px}.progress-caption{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#908298;line-height:1.5}.progress-caption>b,.progress-caption strong{color:#7754af;font-weight:600;white-space:nowrap}.progress-caption b{font-weight:500;color:#75618d}.progress-line{width:100%;height:7px;background:#efebf6;border-radius:7px}.progress-line i{background:#9c81d3;min-width:0;transition:width .2s}
.task-row{padding:16px 0;gap:10px;align-items:flex-start}.task-checkbox{width:32px;min-height:44px;display:flex;align-items:flex-start;justify-content:center;flex-shrink:0;padding-top:6px}.task-checkbox input{width:19px!important;height:19px!important;margin:0!important;cursor:pointer;border-radius:5px}
.task-open{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:3px 0 0;border:0;border-radius:6px;background:transparent;text-align:left;white-space:normal;gap:7px;color:inherit;font-weight:400;min-width:0}.task-open:hover{background:#f8f5fe}.task-title{font-size:15px;line-height:1.65;color:#50425e;display:block;margin:0;font-weight:500;overflow-wrap:anywhere}.task-detail{font-size:12px;display:flex;align-items:center;gap:5px;color:#887a94;flex-wrap:wrap;line-height:1.7}.task-detail svg{width:14px;height:14px}.task-detail.overdue{color:#b17b32}.task-contact{font-size:12px;color:#95849f;line-height:1.6;overflow-wrap:anywhere}.done .task-title{color:#a99ead}.task-list{padding-top:3px}.list-footer-button{width:100%;margin-top:9px;background:#f8f6fc;border:1px solid #eee7f7;color:#85639f;min-height:43px;font-size:13px}
.detail-title{font-size:23px;line-height:1.55;margin:16px 0 22px;color:#483353;font-weight:600;overflow-wrap:anywhere}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px 18px;margin:24px 0}.detail-grid>div{min-width:0}.detail-grid dt{font-size:12px;color:#9b8da5;margin-bottom:7px}.detail-grid dd{margin:0;font-size:15px;color:#63516f;line-height:1.8;overflow-wrap:anywhere}.detail-actions{display:flex;gap:10px;flex-wrap:wrap}.preserve-lines{white-space:pre-wrap}.detail-actions button{flex:1}.modal-head{position:sticky;top:0;background:white;z-index:1}.modal-footer{padding-top:18px;border-top:1px solid #eee9f3}.modal-body{padding:24px}.modal-head h2{font-size:17px}.modal-head .ghost{height:40px;width:40px;padding:0;flex-shrink:0}
.summary-row{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;border:0;border-bottom:1px solid #eee8f4;padding:16px 0;border-radius:0;white-space:normal;text-align:left}.summary-row>span{min-width:0}.summary-row small{display:block;color:#95829f;margin-top:6px;font-size:12px;line-height:1.7}.summary-row strong{font-size:15px;color:#63486f}.summary-status{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.summary-status svg{color:#a994b7;width:14px}.summary-list{max-height:50vh;overflow:auto}
.task-filters{display:flex;gap:8px;padding:16px 21px 0}.task-filters button{color:#927f9e;border-color:#ede6f3;min-height:38px;padding:8px 15px;font-size:13px}.task-filters button.active,.day-tabs button.active{background:#6d49cd;color:white;border-color:#6d49cd}.mobile-timetable,.bottom-nav,.nav-backdrop{display:none}
th{color:#8a7a96;font-size:13px}td{font-size:14px}td .inline-link{background:#f5f0fb;border:1px solid #e5d9f2;color:#795498}.status-btn{font-size:13px;min-height:38px;border-color:#e2dae9;color:#9b8ba7;background:#f8f5fb}.status-btn.yes{background:#e4f2e9;color:#397652;border-color:#c8e2d3}.status-btn.no{background:#fff0e9;color:#b06a4e;border-color:#f1d3c4}.status-btn.late{background:#fff3d4;color:#a1812d;border-color:#ebdaac}.student-name{color:#63476e}.toolbar{gap:12px}.toolbar input,.toolbar select{min-height:44px;font-size:14px}.toolbar .badge{padding:8px 10px}.save-state{color:#89828f}.seat{font-size:13px;min-height:40px;min-width:58px;color:#735d85}.desk-group{grid-template-rows:40px 40px;grid-template-columns:1fr 42px 1fr}.seat-grid{min-width:820px}.desk{color:#a187b6;background:#eae0f5;border-color:#d4c1e7}
@media(min-width:761px) and (max-width:1200px){.dashboard-lower{grid-template-columns:1fr}.home-progress{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.home-progress .progress-row:last-child{border-bottom:1px solid #eeebf3}.stat{padding:16px 14px}.stat-top{gap:7px;font-size:12px}.stat-icon{width:30px;height:30px}.stat-foot{min-height:38px}.stats{gap:10px}.page-heading{align-items:flex-start;flex-wrap:wrap}.agenda-course{gap:8px}.main{padding:25px}}
@media(max-width:760px){
:root{font-size:16px}body{background:#f7f7fb}button{min-height:44px;font-size:14px;padding:10px 14px}.main{padding:23px 16px 108px}.app-shell{min-height:100dvh}header{height:62px;padding:0 12px;position:sticky;top:0;z-index:5;background:#ffffffed;backdrop-filter:blur(12px)}.breadcrumb{gap:8px;font-size:14px}.breadcrumb>svg{display:none}.header-actions{gap:9px}.avatar{height:31px;width:31px}.mobile-menu{padding:8px}.page-heading{gap:18px;margin-bottom:20px}.page-heading .actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.page-heading .actions>button:only-child{grid-column:1/-1}.page-heading .actions button{min-height:48px;font-size:14px;padding:11px 8px;white-space:normal;line-height:1.5}.page-heading .actions button svg{width:18px;height:18px}h1{font-size:24px;line-height:1.45;letter-spacing:0;margin-bottom:6px}.subtitle{font-size:13px;line-height:1.8}.notice{font-size:12px;padding:12px;align-items:stretch;flex-direction:column;gap:5px;border-radius:10px}.notice .inline-link{align-self:flex-end;min-height:36px;padding:5px 8px;font-size:12px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px}.stat{padding:16px 14px;border-radius:11px;min-height:176px}.stat-top{font-size:13px;gap:8px;min-height:30px}.stat-top>span:last-child{white-space:normal;line-height:1.45}.stat-icon{width:28px;height:28px;border-radius:8px}.stat-icon svg{width:16px;height:16px}.stat-value{font-size:30px;line-height:1.35;margin:11px 0 6px}.stat-value small{font-size:12px}.stat-foot{font-size:12px;line-height:1.55;min-height:36px}.stat-cta{font-size:12px;padding-top:9px;margin-top:auto}.panel{border-radius:12px;margin-bottom:20px}.panel-head{padding:15px 14px;gap:10px;align-items:center;flex-wrap:wrap}.panel-head h2{font-size:15px;gap:6px}.panel-head h2>svg{width:16px;height:16px}.panel-head>button{min-height:40px;padding:8px 11px;font-size:12px}.badge{font-size:12px;padding:3px 7px}.panel-body{padding:16px}.lesson-agenda{padding:2px 13px 13px}.agenda-row{grid-template-columns:59px minmax(0,1fr);gap:10px;padding:14px 0}.agenda-time{justify-content:flex-start;padding-top:13px;gap:4px}.agenda-time strong{font-size:17px}.agenda-time span{font-size:11px;line-height:1.6}.agenda-time .period-label{font-size:12px;margin-top:7px}.agenda-course{display:block;padding:0 0 11px;border-left-width:3px;border-radius:9px}.agenda-open{padding:12px 12px 10px;min-height:0;width:100%;gap:7px}.agenda-open>strong{font-size:16px;line-height:1.55}.agenda-meta{font-size:12px;gap:2px 8px;line-height:1.65}.agenda-tools{font-size:12px;line-height:1.75}.agenda-tools svg{display:none}.agenda-open .detail-prompt{font-size:12px;margin-top:2px}.lesson-record{margin:0 11px;width:calc(100% - 22px);font-size:13px;min-height:42px;background:#ffffffcf}.lesson-record svg{width:16px;height:16px}.dashboard-lower{display:block}.home-progress{display:block;padding:0 16px}.progress-row{padding:18px 0}.progress-heading{gap:8px}.progress-heading strong{font-size:14px}.progress-heading .class-icon{width:28px;height:29px}.progress-topic{font-size:14px;line-height:1.7;margin:8px 0 12px}.progress{min-width:0;gap:8px}.progress-caption{font-size:12px;line-height:1.7;gap:8px}.progress-line{height:8px}.progress-caption strong{font-size:13px}.task-row{padding:16px 0;gap:8px}.task-checkbox{width:30px;min-width:30px;min-height:44px}.task-checkbox input{width:21px!important;height:21px!important}.task-title{font-size:15px;line-height:1.7}.task-open{padding:3px 0;gap:8px}.task-detail,.task-contact{font-size:12px;line-height:1.8}.task-open .detail-prompt{margin-top:1px}.list-footer-button{min-height:44px;font-size:13px}.footer-note{font-size:11px;line-height:1.9;margin-top:18px}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;border-top:1px solid #e6dff0;background:#fffffff5;backdrop-filter:blur(15px);padding:7px 8px calc(7px + env(safe-area-inset-bottom));z-index:8;box-shadow:0 -3px 20px #42266306}.bottom-nav button{min-width:0;width:auto;margin:0;padding:6px 1px;min-height:49px;display:flex;flex-direction:column;gap:4px;text-align:center;align-items:center;justify-content:center;border-radius:9px;color:#93839e;background:transparent;font-size:11px;line-height:1.4}.bottom-nav button svg{width:21px;height:21px;margin:0}.bottom-nav button.active{color:#6b45bc;background:#f1eafc}.bottom-nav button span{display:block}.nav-backdrop.visible{display:block;position:fixed;inset:0;background:#30203d45;backdrop-filter:blur(2px);z-index:10;border:0;border-radius:0}aside{display:none;height:100dvh;overflow:auto;width:min(280px,85vw);z-index:11;padding:22px 16px;left:0}aside.open{display:flex}.brand{padding-bottom:14px}.nav-label{margin-top:17px}aside nav button{padding:11px 13px;min-height:45px;font-size:14px}.side-class{margin:10px 15px;font-size:13px}.aside-bottom{padding-top:15px;margin-top:20px}.toolbar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.toolbar>*{min-width:0;max-width:none!important;width:100%}.toolbar input,.toolbar select{font-size:15px;min-height:46px;padding:10px}.toolbar .badge{font-size:12px;display:flex;align-items:center;justify-content:center;line-height:1.7}.toolbar>input[type=search]{grid-column:1/-1}.page-record .toolbar>select:last-child{grid-column:1/-1}.record-table tr{padding:18px 14px;gap:14px 9px}.record-table td:nth-child(1){font-size:13px;line-height:1.7}.record-table td:nth-child(2){font-size:16px;line-height:1.7}.record-table .role{font-size:12px;margin-top:4px}.record-table td:nth-child(n+3):before{font-size:12px;line-height:1.5;margin-bottom:7px}.record-table .status-btn{min-height:44px;font-size:13px;padding:9px 3px;font-weight:500;border-radius:8px}.record-table td input{min-height:45px;padding:10px 9px;font-size:16px}.record-table td:nth-child(7){grid-column:2/4}.students-table,.students-table tbody,.progress-table,.progress-table tbody{display:block;white-space:normal;width:100%}.students-table thead,.progress-table thead{display:none}.students-table tr{display:grid;grid-template-columns:55px minmax(0,1fr) auto;gap:12px 8px;padding:18px 15px;border-bottom:1px solid var(--border)}.students-table td{padding:0;display:block;border:0;min-width:0;font-size:14px;line-height:1.65}.students-table td:nth-child(1){grid-column:1;grid-row:1;color:#96819f;font-size:13px}.students-table td:nth-child(2){grid-column:2;grid-row:1;font-size:16px}.students-table td:nth-child(3){grid-column:3;grid-row:1;font-size:13px;color:#96819f}.students-table td:nth-child(4){grid-column:1/-1}.students-table td:nth-child(5),.students-table td:nth-child(6){grid-column:1/-1;overflow-wrap:anywhere}.students-table td:nth-child(5):before{content:'兴趣与优势 · ';color:#9d8ba6;font-size:12px}.students-table td:nth-child(6):before{content:'教学支持 · ';color:#9d8ba6;font-size:12px}.students-table td:last-child{grid-column:1/-1}.students-table td:last-child button{width:100%;min-height:42px;font-size:13px}.progress-table tr{display:flex;flex-direction:column;gap:13px;padding:20px 16px;border-bottom:1px solid var(--border)}.progress-table td{display:block;padding:0;border:0;min-width:0;font-size:14px;line-height:1.7}.progress-table td:nth-child(3){width:100%;margin:2px 0}.progress-table td:nth-child(4):before{content:'更新于 ';color:#9c8aa5;font-size:12px}.progress-table td:nth-child(4){font-size:12px;color:#9c8aa5}.progress-table td:nth-child(5):before{content:'下节课准备 · ';color:#9c8aa5;font-size:12px}.progress-table td:last-child button{width:100%;min-height:44px}.desktop-timetable{display:none}.mobile-timetable{display:block}.day-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:14px 12px;border-bottom:1px solid var(--border)}.day-tabs button{padding:9px 3px;min-height:42px;font-size:13px;min-width:0;color:#937a9e}.page-schedule .page-heading .actions{grid-template-columns:1fr 1.15fr}.calendar-layout{display:block}.month-grid .weekday{font-size:11px;padding:10px 2px}.date-cell{min-height:64px;padding:6px 4px;font-size:12px;border-radius:0;display:block;min-width:0}.mini-task{font-size:10px;line-height:1.5;margin-top:5px;padding:3px 2px}.month-grid{min-width:0}.task-filters{padding:14px 14px 0;gap:7px}.task-filters button{min-height:42px;flex:1;font-size:13px;padding:8px}.calendar-side{display:block}.calendar-side .task-list{padding:0 14px}.page-seats .toolbar .badge{grid-column:1/-1;grid-row:2}.page-seats .panel-head .hint{flex-basis:100%;font-size:12px}.seat-area{padding:16px 14px}.seat-grid{min-width:920px;gap:24px}.desk-group{grid-template-columns:1fr 42px 1fr;grid-template-rows:44px 44px}.seat{min-height:44px;min-width:64px;font-size:13px}.board{width:60%;font-size:12px;letter-spacing:6px}.page-seats .panel-body .actions button{min-height:44px;font-size:13px}dialog{width:calc(100% - 20px);max-height:calc(100dvh - 32px);margin:auto;border-radius:15px}dialog .modal-head{padding:14px 16px;min-height:64px}dialog .modal-head h2{font-size:17px}dialog .modal-body{padding:18px 16px}.detail-title{font-size:21px;margin:14px 0 20px;line-height:1.6}.detail-grid{grid-template-columns:1fr;gap:19px;margin:23px 0}.detail-grid .span2{grid-column:auto}.detail-grid dt{font-size:12px}.detail-grid dd{font-size:15px;line-height:1.8}.detail-actions{gap:9px}.detail-actions button{font-size:13px;min-height:46px;padding:10px 6px}.modal-footer{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;margin-top:22px;padding-top:17px}.modal-footer button{min-width:0;min-height:48px;font-size:14px;padding:11px 8px;white-space:normal;line-height:1.5}label{font-size:14px;line-height:1.6}label input,label select,label textarea{font-size:16px;min-height:46px;padding:11px 12px;width:100%}.form-grid{gap:18px}.voice-box{padding:14px}.voice-box .actions{display:block}.voice-box .actions button,.voice-box>button{width:100%;min-height:46px;font-size:14px}.voice-status{display:block;font-size:12px;line-height:1.7;margin-top:9px}.voice-box textarea{font-size:16px;line-height:1.8}.summary-row{align-items:flex-start;gap:10px;padding:16px 0}.summary-row>span:first-child{flex:1}.summary-status{max-width:135px}.summary-status .badge{font-size:11px}.summary-row strong{font-size:15px}.summary-row small{font-size:12px}.summary-list{max-height:45dvh}#toast{bottom:calc(83px + env(safe-area-inset-bottom));font-size:13px;line-height:1.7;padding:12px 16px;width:max-content;max-width:calc(100% - 32px)}#today-lessons{scroll-margin-top:76px}
}
@media(max-width:360px){.main{padding-left:12px;padding-right:12px}.stats{gap:10px}.stat{padding:14px 11px}.stat-top{font-size:12px;gap:6px}.stat-icon{height:26px;width:26px}.panel-head{padding:13px 12px}.panel-head h2{font-size:14px}.panel-head>button{font-size:12px;padding:8px}.agenda-row{grid-template-columns:53px 1fr;gap:8px}.agenda-open{padding:11px 10px}.agenda-time strong{font-size:16px}.record-table .status-btn{font-size:12px}.page-heading .actions{gap:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.day-task-count{display:none}
@media(max-width:760px){.month-grid .mini-task{display:none}.day-task-count{display:block;width:max-content;max-width:100%;font-size:11px;line-height:1.5;background:#eee6fa;border-radius:4px;color:#8860ad;padding:2px 4px;margin-top:5px}.date-cell{min-height:65px}.date-cell>span:first-child{font-size:13px}.date-cell.chosen{background:#f3edfc}.date-cell.chosen .day-task-count{background:#8b65ca;color:white}#selected-day{scroll-margin-top:76px}}
@media(min-width:761px) and (max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.stat{padding:18px 20px}.stat-top{font-size:14px;gap:10px}.stat-foot{min-height:20px}.stat-cta{margin-top:12px}.agenda-course{flex-direction:column;align-items:stretch;padding:0 0 12px;gap:0}.agenda-open{width:100%;padding:14px 16px}.lesson-record{margin:0 16px;align-self:flex-start}.home-progress{grid-template-columns:1fr}}
.agenda-meta{overflow-wrap:anywhere}.task-title,.progress-topic,.detail-title,.summary-row strong{word-break:normal;overflow-wrap:anywhere}
/* Batch updates: source and reviewed draft remain visually separate. */
.full-width{width:100%}.intake-tabs{display:flex;gap:12px;margin-bottom:22px}.intake-tabs button{min-height:47px;padding:12px 20px;background:#fff;color:#806890}.intake-tabs button.active{background:#6845cb;color:#fff;border-color:#6845cb}.intake-layout{display:grid;grid-template-columns:minmax(330px,.82fr) minmax(0,1.45fr);gap:22px;align-items:stretch}.intake-layout>.panel{min-width:0;display:flex;flex-direction:column}.intake-review .panel-body{flex:1;min-height:0;display:flex;flex-direction:column}.intake-review .empty{flex:1;min-height:420px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px;line-height:1.9}.intake-review .empty .hint{margin:16px 0 0}.step-number{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#eee7fa;color:#7955b4;font-size:13px}.intake-source{display:flex;flex-direction:column;gap:13px}.intake-source>.hint{margin:0}.intake-class{width:100%;min-height:44px}.upload-zone{display:flex;position:relative;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:2px dashed #d5c5ed;background:#f9f6ff;border-radius:12px;min-height:152px;padding:22px 16px;color:#816495;gap:10px;cursor:pointer}.upload-zone svg{width:25px;height:25px}.upload-zone strong{font-size:15px;overflow-wrap:anywhere;max-width:100%}.upload-zone span{font-size:12px;color:#9987a6}.upload-zone input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;margin:0}.upload-zone:focus-within{outline:3px solid #b997ee}.image-preview{display:block;border:1px solid #e5dcee;border-radius:9px;overflow:hidden;background:#f5f3f8}.image-preview img{display:block;width:100%;max-height:360px;object-fit:contain}.intake-error{font-size:13px;color:#a97126;line-height:1.7;background:#fff6e7;padding:10px 12px;border-radius:7px;margin:10px 0;overflow-wrap:anywhere}.review-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px;font-size:15px;color:#725b83}.draft-card{border:1px solid #e7dff0;border-radius:10px;padding:16px;margin:16px 0;background:#fff}.draft-card.needs-review{border-color:#e9d2a8;background:#fffcf6}.draft-card.excluded{opacity:.55;background:#f6f4f8}.draft-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:16px}.draft-head>label{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:13px;color:#877192}.draft-head input{width:18px;height:18px;accent-color:#6d49cb;margin:0}.draft-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;min-width:0}.draft-fields>*{min-width:0}.draft-fields input,.draft-fields select{width:100%;min-width:0;font-size:14px}.draft-fields textarea{font-size:14px}.draft-card summary{font-size:12px;color:#9a85a6;cursor:pointer;margin-top:14px}.batch-time{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#f8f4fc;border-radius:9px;padding:14px}.batch-time button{grid-column:1/-1}.batch-time input{font-size:14px}.import-commit{border-top:1px solid #e8dfee;padding-top:20px;margin-top:20px}.review-checkbox{display:flex;align-items:flex-start;gap:10px;margin-bottom:16px;font-size:14px;line-height:1.7}.review-checkbox input{width:20px;height:20px;margin:3px 0 0;accent-color:#6d49cb;flex-shrink:0}.empty-icon{display:block;margin:0 auto 18px;color:#af91cc}.empty-icon svg{width:38px;height:38px}.confirm-import-text{font-size:16px;color:#6f527f;line-height:1.9}.header-actions .update-entry{min-height:38px;font-size:13px;padding:8px 11px}.intake-source .notice{display:block}
@media(max-width:1100px){.intake-layout{grid-template-columns:1fr}.intake-review{min-width:0}.header-actions .save-state{display:none}}
@media(max-width:760px){.header-actions .update-entry{font-size:12px;min-height:38px;padding:8px}.header-actions .update-entry svg{width:15px;height:15px}.header-actions>.avatar{display:none}.intake-tabs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.intake-tabs button{font-size:14px;padding:12px 8px;min-height:48px}.intake-layout{display:block}.intake-source{padding:17px 14px;gap:14px}.upload-zone{min-height:150px}.intake-source textarea{font-size:16px}.draft-card{padding:15px 12px}.draft-fields{grid-template-columns:1fr;gap:15px}.draft-fields .span2{grid-column:auto}.draft-fields input,.draft-fields select,.draft-fields textarea{font-size:16px;min-height:46px}.draft-head{flex-wrap:wrap}.draft-head label{font-size:13px;min-height:32px}.draft-head .badge{max-width:100%;font-size:12px}.review-checkbox{font-size:14px}.review-checkbox input{width:22px;height:22px}.batch-time input{font-size:16px}.intake-tabs svg{width:17px}.intake-class{font-size:16px}.page-schedule .page-heading .actions>button:first-child{grid-column:1/-1}.page-updates .panel-head h2{font-size:15px}.import-commit .primary{min-height:48px}.intake-source button{min-height:46px}}

/* Mobile refinements: compact student records and keep the complete seating chart in view. */
@media(max-width:760px){
  .students-table tr{grid-template-columns:34px minmax(0,1fr) auto;gap:5px 8px;padding:10px 12px}
  .students-table td{font-size:13px;line-height:1.5}
  .students-table td:nth-child(2){font-size:15px;min-width:0}
  .student-name-line{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
  .student-name-line .student-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .students-table td:nth-child(4){font-size:12px}
  .students-table td:nth-child(5),.students-table td:nth-child(6){font-size:12px;line-height:1.45}
  .students-table td:nth-child(5):before,.students-table td:nth-child(6):before{font-size:11px}
  .students-table td:last-child button{width:auto;min-height:34px;padding:6px 10px;font-size:12px}
  .record-table tr{gap:7px 8px;padding:10px 12px}
  .record-table td:nth-child(1){font-size:12px;line-height:1.4}
  .record-table td:nth-child(2){font-size:14px;line-height:1.4}
  .record-table .role{font-size:11px;line-height:1.35;margin-top:2px}
  .record-table td:nth-child(n+3):before{font-size:11px;line-height:1.3;margin-bottom:3px}
  .record-table .status-btn{min-height:36px;padding:6px 3px;font-size:12px;border-radius:7px}
  .record-table td input{min-height:38px;padding:7px 8px;font-size:14px}
  .record-table td:nth-child(7){grid-column:2/4}
  .seat-area{padding:12px 10px;overflow:visible}
  .seat-grid{min-width:0!important;width:100%;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px 9px}
  .desk-group{grid-template-columns:minmax(0,1fr) 25px minmax(0,1fr);grid-template-rows:repeat(2,minmax(44px,auto));gap:4px;min-width:0}
  .desk{font-size:10px;min-width:0}
  .seat{min-width:0;width:100%;min-height:44px;padding:4px 2px;font-size:12px;line-height:1.25;overflow-wrap:anywhere}
  .board{width:76%;margin:4px auto 18px;padding:9px;letter-spacing:6px}
  .calendar-tap-hint{font-size:12px;line-height:1.6;color:#857692;margin:0;padding:10px 13px 6px}
  .date-cell{position:relative;min-height:67px;padding:6px 4px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:3px}
  .date-cell.has-events{background:#fbf8ff}
  .date-cell .date-number{font-weight:500}
  .date-cell.has-events .date-number{font-weight:700;color:#6546b6}
  .day-task-count{display:block;width:auto;max-width:100%;font-size:11px;line-height:1.45;background:#eee6fa;border-radius:5px;color:#7049b1;padding:2px 4px;margin:1px 0 0;font-weight:600}
  .date-cell.chosen{background:#f0e9fc}
  .date-cell.chosen .day-task-count{background:#7450c9;color:white}
  #selected-day{scroll-margin-top:76px}
  .calendar-day-list{display:grid;gap:10px;max-height:min(56dvh,520px);overflow-y:auto;padding:1px}
  .calendar-day-item{display:flex;width:100%;min-height:0;white-space:normal;flex-direction:column;align-items:stretch;text-align:left;gap:7px;padding:13px;border:1px solid #e9e1f1;border-radius:10px;background:#fff}
  .calendar-day-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#8d7a9b;font-size:13px}
  .calendar-day-item>strong{font-size:15px;line-height:1.55;color:#45364f;overflow-wrap:anywhere}
  .calendar-day-meta,.calendar-day-note{font-size:12px;line-height:1.5;color:#8c8294;overflow-wrap:anywhere}
  .calendar-day-more{display:flex;align-items:center;gap:4px;color:#7852bc;font-size:12px;margin-top:2px}
  .calendar-day-more svg{width:14px;height:14px}
  .calendar-day-empty{padding:24px 12px}
  .calendar-day-footer{grid-template-columns:1fr 1.25fr}
}
@media(max-width:360px){
  .seat-area{padding-left:8px;padding-right:8px}
  .seat-grid{gap:10px 7px}
  .desk-group{grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);grid-template-rows:repeat(2,minmax(42px,auto));gap:3px}
  .seat{font-size:11px;min-height:42px}
  .calendar-day-item{padding:11px}
}
@media(max-width:760px){.mobile-seat-hint{margin:10px 0 0;padding:8px 10px;border-radius:7px;background:#f6f2fb;color:#806e91;font-size:11px;line-height:1.5;text-align:center}}
@media(min-width:761px){.mobile-seat-hint{display:none}}
.page-seats .seat-grid{min-width:0;width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}

/* Sidebar classes stay compact until expanded, with their own vertical scroll area. */
aside{overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}
.side-class-list{max-height:calc(3 * 39px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:0 3px 0 0;margin:0 -3px 0 0}
.side-class-list.expanded{max-height:min(42vh,380px)}
.side-class{width:100%;min-height:36px;justify-content:flex-start;gap:10px;margin:1px 0;padding:8px 11px;border:0;border-radius:8px;background:transparent;text-align:left;color:#818191;font-size:13px;white-space:normal}
.side-class:hover,.side-class.active{background:#f0ebfc;color:var(--purple)}
.side-class.active{font-weight:600}
.side-class .class-dot{flex:0 0 8px}
.class-list-toggle{width:100%;min-height:36px;margin-top:4px;color:#7861ad;font-size:12px}
.student-flags{display:inline-flex;align-items:center;gap:5px;flex-shrink:0}
.student-flag-button{width:34px;height:34px;min-height:34px;padding:0;border:1px solid #eee9f2;border-radius:10px;background:#fff;color:#a8a0ae;transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease}
.student-flag-button:hover{transform:translateY(-1px);background:#faf8fc}
.student-flag-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.student-flag-button.heart{color:#d96d7d}
.student-flag-button.star{color:#c59a35}
.student-flag-button.heart.is-active{background:#fff0f2;border-color:#f0cbd1;color:#d64e63}
.student-flag-button.star.is-active{background:#fff8e6;border-color:#ecd89e;color:#b2871f}
.student-flag-button.is-active svg{fill:currentColor;stroke-width:1.45}
.student-flag-button:focus-visible{outline:3px solid #c5b2ec;outline-offset:2px}
@media(max-width:760px){
  .side-class-list.expanded{max-height:min(38vh,330px)}
  .side-class{min-height:38px}
  .class-list-toggle{min-height:40px}
  .student-flag-button{width:32px;height:32px;min-height:32px;border-radius:9px}
  .student-flag-button svg{width:18px;height:18px}
  .student-flags{gap:4px}
  .intake-review .empty{min-height:260px;padding:30px 18px}
}

.brand-icon{padding-top:2px;line-height:1}
.aside-bottom{display:flex;flex-direction:column;gap:5px;padding-left:4px}
.aside-bottom span{margin-left:0!important}
.timetable-week-toolbar{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(280px,1.2fr) auto auto;align-items:end;gap:12px;padding:12px 14px;background:#fff;border:1px solid var(--border);border-radius:12px;margin-bottom:18px}
.timetable-week-toolbar label{display:grid;gap:6px;font-size:12px;color:#8e8299}
.timetable-week-toolbar select{width:100%;min-height:43px}
.timetable-week-toolbar .badge{min-height:38px;justify-content:center}
.timetable-week-toolbar .hint{margin:0 0 9px;white-space:nowrap}
.day-tabs button{display:flex;flex-direction:column;gap:2px}
.day-tabs button small,.week-grid .day small{font-size:10px;color:#95889e;font-weight:400}
.week-grid .day{display:grid;gap:3px;justify-items:center}
.lesson-change-tag{display:inline-flex;align-self:flex-start;width:max-content;max-width:100%;padding:3px 8px;border-radius:6px;background:#fff1df;color:#ad7b34;font-size:11px;line-height:1.5;overflow-wrap:anywhere}
.evening-row .agenda-course,.evening-study-card{background:#fff9ec;border-color:#f0dfbd}
.timetable-note{margin-top:4px}
.change-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.change-fields[hidden]{display:none}
@media(max-width:1100px){.timetable-week-toolbar{grid-template-columns:1fr 1.4fr}.timetable-week-toolbar .badge,.timetable-week-toolbar .hint{grid-column:1/-1}.timetable-week-toolbar .hint{margin:0}}
@media(max-width:760px){.timetable-week-toolbar{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:9px;padding:11px}.timetable-week-toolbar label{min-width:0}.timetable-week-toolbar select{font-size:13px;min-height:44px;padding:8px}.timetable-week-toolbar .badge{grid-column:1/-1}.timetable-week-toolbar .hint{grid-column:1/-1}.day-tabs button small{font-size:10px}.change-fields{grid-template-columns:1fr;gap:15px}.intake-source.has-image .upload-zone{min-height:78px;padding:11px 14px;gap:5px}.intake-source.has-image .upload-zone svg{width:20px;height:20px}.intake-source.has-image .image-preview img{max-height:155px}.intake-source.has-image .raw-text-field textarea{min-height:285px}.intake-source.has-file:not(.has-image) .upload-zone{min-height:76px;padding:10px 14px;gap:5px}}
.intake-source.has-image .upload-zone{min-height:82px;padding:12px 16px;gap:6px}.intake-source.has-image .upload-zone svg{width:21px;height:21px}.intake-source.has-image .image-preview img{max-height:180px}.intake-source.has-image .raw-text-field textarea{min-height:350px;line-height:1.7}.intake-source.has-file:not(.has-image) .upload-zone{min-height:82px;padding:11px 16px;gap:5px}.ocr-confidence-note{margin:0;padding:9px 11px;border-radius:8px;background:#fff8e9;color:#9a763c;font-size:12px;line-height:1.7}.ocr-confidence-note strong{color:#a55c24}
@media(max-width:760px){.intake-source.has-image .raw-text-field textarea{min-height:285px}.intake-source.has-image .image-preview img{max-height:155px}.ocr-confidence-note{font-size:12px}}

@media(min-width:761px){
  .desktop-timetable .week-grid{grid-template-columns:70px repeat(5,minmax(150px,1fr));min-width:820px}
  .desktop-timetable .week-cell{min-width:0;min-height:132px;padding:7px;vertical-align:top}
  .desktop-timetable .week-cell .agenda-row{display:block;min-width:0;padding:0;border:0}
  .desktop-timetable .week-cell .agenda-time{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;gap:2px 8px;padding:0 1px 6px}
  .desktop-timetable .week-cell .agenda-time strong{font-size:13px;line-height:1.35}
  .desktop-timetable .week-cell .agenda-time span{font-size:10px;line-height:1.4}
  .desktop-timetable .week-cell .agenda-time .period-label{margin:0;color:#86718f}
  .desktop-timetable .week-grid>.day:first-child{padding-right:5px;padding-left:5px;white-space:nowrap}
  .desktop-timetable .week-cell .agenda-course{display:block;min-width:0;padding:7px 8px;border-left-width:3px;border-radius:8px}
  .desktop-timetable .week-cell .agenda-open{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;min-width:0;padding:0;border:0;white-space:normal;text-align:left}
  .desktop-timetable .week-cell .agenda-meta{gap:3px 7px;font-size:10px;line-height:1.45;overflow-wrap:anywhere}
  .desktop-timetable .week-cell .agenda-open>strong{font-size:13px;line-height:1.45;overflow-wrap:anywhere}
  .desktop-timetable .week-cell .agenda-tools,.desktop-timetable .week-cell .detail-prompt{display:none}
  .desktop-timetable .week-cell .lesson-record{display:flex;width:100%;min-height:30px;margin-top:6px;padding:5px 6px;font-size:11px}
  .desktop-timetable .week-cell .lesson-record svg{width:14px;height:14px}
  .desktop-timetable .week-cell .agenda-class{font-size:12px;padding:4px 6px}
  .desktop-timetable .week-cell .agenda-room{font-size:10px}
}

.agenda-meta{align-items:center}
.agenda-class{display:inline-flex;align-items:center;max-width:100%;padding:5px 9px;border:1px solid var(--tone-border);border-radius:7px;background:var(--tone-bg);color:var(--tone);font-size:14px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}
.agenda-room{align-self:center;color:#7a7583;font-size:12px;line-height:1.45}
@media(max-width:760px){.agenda-class{font-size:13px;padding:5px 8px}.agenda-room{font-size:11px}}
.record-search-field{flex:1 1 250px;min-width:220px;display:grid;gap:5px}.toolbar .record-student-search{width:100%;max-width:none;min-height:44px}.record-search-field small{color:#8d8798;font-size:12px;line-height:1.45;padding-left:2px}
@media(max-width:760px){.page-record .toolbar .record-search-field{grid-column:1/-1;min-width:0}.page-record .toolbar .record-student-search{min-height:46px;font-size:15px}.record-search-field small{font-size:11px}}
