:root{font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,sans-serif;color:#172033;background:#f4f7fb;line-height:1.5}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{border:1px solid #d7dfeb;border-radius:8px;background:#fff;color:#172033;cursor:pointer;padding:9px 14px}.button-link{display:inline-flex;align-items:center;border:1px solid #d7dfeb;border-radius:8px;background:#fff;color:#172033;cursor:pointer;padding:9px 14px;text-decoration:none;font-size:14px}button:hover{border-color:#2f6fed}.primary{border-color:#2f6fed;background:#2f6fed;color:#fff;font-weight:700}.wide{width:100%}input,select,textarea{width:100%;border:1px solid #d7dfeb;border-radius:8px;background:#fff;padding:10px 12px}.searchable-select{position:relative;width:100%;min-width:0}.searchable-select-control{position:relative}.searchable-select-control input{width:100%;height:40px;padding-right:66px}.searchable-select-control input:focus{border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed24;outline:none}.searchable-select-clear,.searchable-select-toggle{position:absolute;z-index:2;top:50%;display:grid;width:30px;height:30px;place-items:center;transform:translateY(-50%);border:0;background:transparent;color:#68758a;padding:0}.searchable-select-control>.searchable-select-clear,.searchable-select-control>.searchable-select-toggle{min-height:30px;box-shadow:none}.searchable-select-control>.searchable-select-clear:active,.searchable-select-control>.searchable-select-toggle:active{transform:translateY(-50%)}.searchable-select-clear{right:30px;font-size:18px}.searchable-select-toggle{right:2px}.searchable-select-toggle span{display:block;width:8px;height:8px;transform:rotate(45deg) translate(-1px,-1px);border-right:2px solid currentColor;border-bottom:2px solid currentColor;transition:transform .18s ease}.searchable-select.open .searchable-select-toggle span{transform:rotate(225deg) translate(-1px,-1px)}.searchable-select-clear:hover,.searchable-select-toggle:hover{background:#edf4ff;color:#1f5ad7}.searchable-select-options{position:absolute;z-index:80;top:calc(100% + 6px);right:0;left:0;max-height:260px;overflow:auto;border:1px solid #d7dfeb;border-radius:9px;background:#fff;box-shadow:0 14px 30px #2537592e;list-style:none;padding:6px;margin:0}.searchable-select-options li{margin:0}.searchable-select-options li>button{display:flex;width:100%;align-items:center;justify-content:space-between;gap:10px;border:0;border-radius:7px;background:transparent;color:#243247;padding:9px 10px;text-align:left}.searchable-select-options li>button.active{background:#edf4ff;color:#1f5ad7}.searchable-select-options li>button.selected{font-weight:700}.searchable-select-options small{color:#7b8798;font-size:12px;font-weight:400;white-space:nowrap}.searchable-select-empty{color:#7b8798;padding:12px 10px;text-align:center}.searchable-select.disabled{opacity:.7}textarea{min-height:90px;resize:vertical}label,.form-field{display:grid;gap:6px;color:#526071;font-size:13px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#eef5ff,#f8fbf6 55%,#fff)}.login-panel{width:min(460px,100%);padding:36px;border:1px solid #e2e8f2;border-radius:14px;background:#fff;box-shadow:0 24px 70px #2537591f}.login-panel h1{margin:0 0 8px;font-size:28px}.form-stack{display:grid;gap:16px;margin-top:24px}.hint,.error,.success{display:inline-block;margin-top:12px;font-size:13px}.error{color:#c92a2a}.success{color:#0b8a45}.app-shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;gap:8px;height:100vh;overflow-y:auto;padding:20px;background:#111827;color:#fff}.sidebar strong{margin-bottom:14px;font-size:18px}.sidebar button{border-color:transparent;background:transparent;color:#cbd5e1;text-align:left}.sidebar button.active,.sidebar button:hover{background:#263244;color:#fff}.sidebar-user{margin-top:auto;display:grid;gap:8px;color:#cbd5e1}.workspace{min-width:0;padding:24px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.topbar h1{margin:0;font-size:26px}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.metrics article,.panel,.row-card,.flow-card,.feedback-card,.feedback-search,.school-choices{border:1px solid #e2e8f2;border-radius:10px;background:#fff;box-shadow:0 12px 32px #2537590f}.metrics article{padding:20px}.metrics span{color:#68758a}.metrics strong{display:block;font-size:30px}.dashboard{display:grid;gap:16px}.dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid #dbe5f2;border-radius:10px;background:linear-gradient(135deg,#fff,#f4f8ff 64%,#eef8f2);padding:20px;box-shadow:0 12px 32px #2537590f}.dashboard-hero h2{margin:0 0 6px;font-size:24px}.dashboard-hero p{margin:0;color:#526071}.dashboard-hero-actions{display:flex;flex-wrap:wrap;gap:10px}.dashboard-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dashboard-card,.dashboard-panel{border:1px solid #e2e8f2;border-radius:10px;background:#fff;box-shadow:0 12px 32px #2537590f}.dashboard-card{position:relative;min-height:126px;overflow:hidden;padding:18px}.dashboard-card:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:#2f6fed}.dashboard-card-blue:before{background:#2f6fed}.dashboard-card-amber:before{background:#d97706}.dashboard-card-green:before{background:#16a34a}.dashboard-card-violet:before{background:#7c3aed}.dashboard-card span{color:#68758a;font-size:13px;font-weight:700}.dashboard-card strong{display:block;margin-top:10px;font-size:32px;line-height:1}.dashboard-card p{margin:12px 0 0;color:#526071;font-size:13px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.85fr);gap:14px}.dashboard-panel{display:grid;align-content:start;gap:12px;padding:16px}.dashboard-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}.dashboard-panel h2{margin:0;font-size:18px}.dashboard-panel header span{color:#68758a;font-size:12px}.dashboard-panel-actions{display:flex;gap:8px}.dashboard-lesson-list,.dashboard-upcoming,.dashboard-health{display:grid;gap:10px}.dashboard-lesson{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #edf1f7;border-radius:8px;background:#f8fbff;padding:11px 12px}.dashboard-lesson time{color:#2f6fed;font-size:18px;font-weight:800}.dashboard-lesson div,.dashboard-todo div{min-width:0;display:grid;gap:3px}.dashboard-lesson strong,.dashboard-todo span,.dashboard-upcoming span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-lesson span,.dashboard-lesson em,.dashboard-todo p,.dashboard-upcoming small,.dashboard-health small{color:#68758a;font-size:12px;font-style:normal}.dashboard-lesson em{border:1px solid #dbe5f2;border-radius:999px;background:#fff;padding:5px 9px;white-space:nowrap}.dashboard-attendance-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.dashboard-attendance-summary span{display:flex;align-items:baseline;justify-content:center;gap:5px;border:1px solid #dbe5f2;border-radius:8px;background:#f8fbff;color:#526071;padding:8px 10px;font-size:12px;font-weight:700}.dashboard-attendance-summary strong{color:#172033;font-size:20px}.dashboard-attendance-summary .checked{border-color:#bfe8cf;background:#edf8f1;color:#147a3d}.dashboard-attendance-summary .warning{border-color:#fecaca;background:#fff1f2;color:#b42318}.dashboard-attendance-lesson.overdue{border-color:#fecaca;background:#fff8f8;box-shadow:inset 4px 0 #dc2626}.dashboard-lesson .dashboard-checkin-state{justify-items:end;gap:4px}.dashboard-checkin-state small{color:#68758a;font-size:11px;white-space:nowrap}.dashboard-todo{display:grid;grid-template-columns:46px minmax(0,1fr) auto;gap:12px;align-items:center;border-bottom:1px solid #edf1f7;padding:4px 0 12px}.dashboard-todo:last-child{border-bottom:0;padding-bottom:0}.dashboard-todo>strong{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#f1f5ff;color:#2f6fed;font-size:20px}.dashboard-todo span{font-weight:800}.dashboard-todo p{margin:0}.dashboard-upcoming article{display:grid;gap:3px;border-left:3px solid #2f6fed;background:#f8fbff;padding:10px 12px}.dashboard-upcoming strong{font-size:13px}.dashboard-health article{display:grid;gap:8px}.dashboard-health article>div{display:flex;justify-content:space-between;gap:12px;color:#526071;font-size:13px}.dashboard-health article>div strong{color:#172033}.dashboard-health i{display:block;height:8px;overflow:hidden;border-radius:999px;background:#edf1f7}.dashboard-health b{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f6fed,#16a34a)}.dashboard-empty{border:1px dashed #cbd5e1;border-radius:8px;background:#f8fbff;padding:20px;color:#68758a;text-align:center}.panel{padding:18px}.resource-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #e2e8f2;border-radius:8px;background:#f8fbff;padding:14px;margin-bottom:16px}.resource-toolbar-copy{min-width:0;display:grid;gap:4px}.resource-toolbar-copy strong{font-size:18px}.resource-toolbar-copy span{color:#68758a;font-size:13px}.student-filter-bar{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr)) minmax(220px,1.3fr);gap:10px;align-items:end;border-bottom:1px solid #edf1f7;background:#f8fbff;padding:14px}.student-filter-bar label{display:grid;gap:6px;color:#526071;font-size:13px;font-weight:700}.student-filter-bar select,.student-filter-bar input{width:100%;height:40px}.student-filter-bar>span{align-self:center;color:#68758a;font-size:13px;white-space:nowrap}.student-filter-actions{grid-column:1 / -1;display:flex;align-items:center;justify-content:flex-end;gap:12px;min-height:38px}.student-filter-actions span{color:#68758a;font-size:13px;white-space:nowrap}.student-filter-search{min-width:0}.resource-filter-bar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.attendance-page{display:grid;gap:16px}.attendance-page .resource-toolbar{margin-bottom:0}.attendance-filter-bar{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr)) auto auto;gap:10px;align-items:end;border:1px solid #e2e8f2;border-radius:10px;background:#f8fbff;padding:12px}.attendance-filter-bar label{display:grid;gap:6px;color:#526071;font-size:12px;font-weight:700}.attendance-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.attendance-summary article{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #dbe5f2;border-radius:10px;background:#f8fbff;padding:14px 16px}.attendance-summary article.checked{border-color:#bfe8cf;background:#edf8f1}.attendance-summary article.warning{border-color:#fecaca;background:#fff1f2}.attendance-summary span{color:#526071;font-weight:700}.attendance-summary strong{font-size:26px}.attendance-table small{color:#68758a}.settlement-page{display:grid;gap:16px}.settlement-page .resource-toolbar{margin-bottom:0}.settlement-filter-bar{grid-template-columns:repeat(3,minmax(150px,1fr)) auto auto}.settlement-summary-cards article:last-child{border-color:#bfdbfe;background:#eff6ff}.settlement-block{display:grid;gap:10px}.settlement-block h2{margin:0;font-size:18px}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;align-items:end;margin-bottom:18px}.import-strip,.edit-box{display:grid;gap:12px;border:1px solid #e2e8f2;border-radius:10px;background:#f8fbff;padding:14px;margin-bottom:18px}.import-strip{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between}.import-copy{min-width:260px;flex:1 1 320px;display:grid;gap:4px}.import-copy strong{font-size:15px}.import-copy span{color:#68758a;font-size:13px}.import-strip input[type=file]{flex:0 1 320px;max-width:100%}.import-strip button{white-space:nowrap}.import-errors{display:grid;gap:8px;border:1px solid #fecaca;border-radius:10px;background:#fff7f7;color:#7f1d1d;padding:12px 14px;margin-bottom:16px}.import-errors strong{font-size:14px}.import-errors ul{display:grid;gap:6px;margin:0;padding-left:18px;font-size:13px}.edit-box{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.edit-box h2{grid-column:1 / -1;margin:0;font-size:18px}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.danger{border-color:#ffd3d3;color:#b42318}.muted{display:block;color:#68758a;font-size:12px}.school-name-cell{display:grid;gap:3px}.school-name-cell span{color:#68758a;font-size:12px}.wide-cell{min-width:220px;white-space:normal}.empty-table-cell{color:#68758a;padding:24px;text-align:center}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-width:52px;border:1px solid #d6efe0;border-radius:999px;background:#eefaf3;color:#0b7a3a;padding:4px 9px;font-size:12px;font-weight:700}.status-pill.inactive{border-color:#e2e8f2;background:#f1f5f9;color:#64748b}.status-pill.attendance{min-width:68px;margin:2px 4px 2px 0}.status-pill.attendance.ok{border-color:#bfe8cf;background:#edf8f1;color:#147a3d}.status-pill.attendance.warn{border-color:#fde3a7;background:#fff7df;color:#a15c00}.status-pill.attendance.danger{border-color:#fecaca;background:#fff1f2;color:#b42318}.status-pill.attendance.muted{border-color:#e2e8f2;background:#f4f7fb;color:#64748b}.weekday-box{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;color:#526071;font-size:13px}.weekday-box span{flex-basis:100%;font-weight:700;color:#172033}.weekday-box label{display:inline-flex;grid-auto-flow:column;align-items:center;gap:6px}.weekday-box input{width:auto}.mini-input{width:86px;padding:8px 10px}.lesson-form{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{border-bottom:1px solid #edf1f7;padding:10px;text-align:left;white-space:nowrap}th{color:#68758a;font-weight:700}.lesson-list{display:grid;gap:12px}.course-manager{display:grid;gap:18px}.sub-panel{display:grid;gap:14px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:16px}.sub-panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.sub-panel h2,.feedback-tools h2{margin:0;font-size:18px}.sub-panel-header p{margin:4px 0 0;color:#68758a;font-size:13px}.multi-select{min-height:112px}.checkbox-dropdown{position:relative}.checkbox-dropdown summary{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #d7dfeb;border-radius:8px;background:#fff;color:#172033;cursor:pointer;list-style:none;padding:10px 12px}.checkbox-dropdown summary::-webkit-details-marker{display:none}.checkbox-dropdown summary:after{content:"";width:8px;height:8px;transform:rotate(45deg) translate(-1px,-1px);border-right:2px solid currentColor;border-bottom:2px solid currentColor;color:#68758a;transition:transform .18s ease}.checkbox-dropdown[open] summary:after{transform:rotate(225deg) translate(-1px,-1px)}.checkbox-dropdown[open] summary{border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed1f}.checkbox-menu{position:absolute;z-index:12;top:calc(100% + 6px);left:0;right:0;max-height:240px;overflow:auto;border:1px solid #d7dfeb;border-radius:8px;background:#fff;box-shadow:0 16px 40px #0f172a1f;padding:8px}.checkbox-option{display:flex;grid-template-columns:none;align-items:center;gap:8px;border-radius:6px;color:#172033;cursor:pointer;padding:8px}.checkbox-option:hover{background:#f4f7fb}.checkbox-option input[type=checkbox]{width:auto;margin:0}.empty-hint{margin:0;color:#68758a;font-size:13px;padding:8px}.upload-validation{display:grid;gap:10px;border:1px solid #e2e8f2;border-radius:8px;background:#f8fbff;padding:12px}.upload-validation strong{font-size:15px}.upload-validation p{margin:0;color:#68758a;font-size:13px}.upload-validation ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.upload-validation li{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:start;border-radius:8px;background:#fff;padding:9px 10px}.upload-validation li span{font-weight:700}.upload-validation li em{color:#526071;font-style:normal}.upload-validation .check-ok span{color:#16803d}.upload-validation .check-warn span{color:#b7791f}.upload-validation .check-error span{color:#b42318}.upload-stage{border-top:1px solid #e2e8f2;padding-top:10px}.upload-progress{position:relative;overflow:hidden;height:28px;border:1px solid #d7dfeb;border-radius:999px;background:#fff}.upload-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2f6fed,#43b3ff);transition:width .18s ease}.upload-progress em{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#172033;font-size:12px;font-style:normal;font-weight:800}.lesson-command-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.calendar-panel{display:grid;grid-template-columns:240px minmax(0,1fr);gap:14px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:14px;margin-bottom:18px}.lesson-popover{position:fixed;z-index:20;width:min(340px,calc(100vw - 24px));display:grid;gap:8px;border:1px solid #d7dfeb;border-radius:8px;background:#fff;box-shadow:0 18px 48px #1720332e;padding:14px}.lesson-popover strong{padding-right:28px;font-size:16px}.lesson-popover span{color:#526071;font-size:13px}.popover-close{position:absolute;top:8px;right:8px;width:28px;height:28px;padding:0;display:grid;place-items:center}.feedback-tools{display:grid;gap:12px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:16px;margin-bottom:16px}.compact-list{display:grid;gap:8px}.compact-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #edf1f7;border-radius:8px;background:#f8fbff;padding:10px 12px}.after-page{display:grid;gap:16px}.after-header,.after-detail-head,.after-feedback-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:16px}.after-header h2,.after-detail-head h2,.after-panel h3,.after-feedback-head h3{margin:0}.after-header p,.after-detail-head p,.after-feedback-head p{margin:4px 0 0;color:#68758a;font-size:13px}.after-tabs{display:flex;gap:8px}.after-tabs button.active{border-color:#2f6fed;background:#edf4ff;color:#1f5ad7;font-weight:700}.after-filter-bar{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) minmax(220px,1.3fr) auto auto;gap:10px;align-items:end;border:1px solid #e2e8f2;border-radius:10px;background:#f8fbff;padding:14px}.after-filter-bar label{display:grid;gap:6px;color:#526071;font-size:13px;font-weight:700}.after-filter-bar select,.after-filter-bar input{width:100%}.after-filter-bar>span{align-self:center;color:#68758a;font-size:13px;white-space:nowrap}.after-filter-search{min-width:0}.after-lesson-list{display:grid;gap:12px}.after-lesson-card{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.9fr) auto;gap:14px;align-items:center;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:14px}.after-card-main{display:grid;gap:4px}.after-card-main span,.after-card-main small{color:#68758a}.after-card-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.after-card-metrics span,.after-feedback-summary span{border-radius:8px;background:#f4f7fb;color:#526071;padding:8px 10px;font-size:13px}.after-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.after-panel{display:grid;gap:12px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:16px}.after-progress{display:grid;gap:8px}.after-progress span{border-left:4px solid #cbd5e1;border-radius:8px;background:#f8fbff;color:#526071;padding:10px 12px}.after-progress span.done{border-left-color:#16a34a;background:#edf8f1;color:#14532d}.after-note{margin:0;color:#526071}.after-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.after-stats span{display:grid;gap:2px;border-radius:8px;background:#f4f7fb;color:#68758a;padding:10px;font-size:13px}.after-stats strong{color:#172033;font-size:18px}.after-stats .attendance-stat.ok{background:#edf8f1;color:#147a3d}.after-stats .attendance-stat.warn{background:#fff7df;color:#a15c00}.after-stats .attendance-stat.danger{background:#fff1f2;color:#b42318}.compact-table{margin:0}.photo-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.photo-groups article{display:grid;gap:6px;border:1px solid #edf1f7;border-radius:8px;background:#f8fbff;padding:12px}.photo-groups span,.photo-groups small{color:#68758a;font-size:13px}.after-photo-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.after-photo-list button{overflow:hidden;display:grid;gap:0;border:1px solid #dbe5f2;border-radius:8px;background:#fff;padding:0;text-align:left}.after-photo-list img{width:100%;aspect-ratio:4 / 3;display:block;object-fit:cover;background:#edf2fb}.after-photo-list small{overflow:hidden;padding:7px 8px;text-overflow:ellipsis;white-space:nowrap}.photo-preview-backdrop{z-index:20}.photo-preview-panel{width:min(920px,calc(100vw - 32px));max-height:calc(100vh - 32px);display:grid;gap:12px;border-radius:12px;background:#fff;padding:14px;box-shadow:0 24px 80px #0f172a40}.photo-preview-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}.photo-preview-panel h2{margin:0;font-size:18px}.photo-preview-panel span,.photo-preview-panel p{margin:0;color:#68758a}.photo-preview-panel img{max-width:100%;max-height:calc(100vh - 180px);display:block;justify-self:center;border-radius:8px;object-fit:contain;background:#0f172a}.after-feedback-editor{min-height:150px}.after-generate-notice{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center;border:1px solid #c7dcff;border-radius:12px;background:#f3f8ff;color:#1f56d8;padding:12px 14px}.after-generate-notice span{grid-row:span 2;width:16px;height:16px;border:2px solid rgba(47,111,237,.22);border-top-color:#2f6fed;border-radius:999px;animation:spin .8s linear infinite}.after-generate-notice strong{color:#173b88}.after-generate-notice p{margin:0;color:#526071;font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}.after-feedback-summary{display:flex;flex-wrap:wrap;gap:8px}.compact-row div{min-width:0;display:grid;gap:3px}.compact-row span{overflow:hidden;color:#68758a;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.calendar-filter{display:grid;align-content:start;gap:12px;border-right:1px solid #edf1f7;padding-right:14px}.calendar-filter strong{font-size:18px}.calendar-filter button:disabled{opacity:.48;cursor:not-allowed}.calendar-legend{display:grid;gap:7px;border-top:1px solid #edf1f7;padding-top:10px}.calendar-legend strong{font-size:13px}.legend-item{display:flex;min-width:0;align-items:center;gap:7px;color:#526071;font-size:12px}.legend-swatch,.legend-dot{flex:0 0 auto;display:inline-block}.legend-swatch{width:18px;height:12px;border:1px solid rgba(23,32,51,.12);border-radius:3px}.legend-dot{width:9px;height:9px;border-radius:50%}.legend-empty{color:#94a3b8;font-size:12px}.calendar-main{min-width:0;display:grid;gap:10px;overflow-x:auto}.calendar-shift-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between;border:1px solid #b8d2ff;border-radius:8px;background:#edf5ff;padding:10px 12px;color:#1d3f72}.calendar-selected{margin:0;color:#68758a;font-size:13px}.calendar-panel .fc{--fc-border-color: #e4eaf3;--fc-page-bg-color: #fff;--fc-today-bg-color: #edf4ff;--fc-neutral-bg-color: #f8fbff;color:#172033;font-size:14px;min-width:900px}.calendar-panel .fc-toolbar-title{font-size:22px}.calendar-panel .fc-button{border:1px solid #d7dfeb;border-radius:8px;background:#fff;color:#172033;box-shadow:none;padding:7px 12px}.calendar-panel .fc-button-primary:not(:disabled).fc-button-active,.calendar-panel .fc-button-primary:not(:disabled):active,.calendar-panel .fc-button-primary:hover{border-color:#2f6fed;background:#2f6fed;color:#fff}.calendar-panel .fc-daygrid-day-number{color:#172033;text-decoration:none}.calendar-panel .fc-col-header-cell-cushion{color:#526071;text-decoration:none}.calendar-panel .fc-event{border:0;border-radius:6px;color:#172033;cursor:grab;min-height:46px;padding:5px 6px 5px 7px;white-space:normal}.calendar-panel .fc-event:active{cursor:grabbing}.calendar-panel .fc-event.lesson-status-submitted{background:#eef1ff}.calendar-panel .fc-event-main{color:inherit;min-width:0;width:100%}.calendar-panel .fc-event-main-frame{display:block;min-width:0}.calendar-panel .calendar-event-card{display:grid;gap:2px;min-width:0;width:100%}.calendar-panel .calendar-event-line{display:flex;min-width:0;align-items:center;gap:5px;white-space:nowrap;word-break:keep-all;overflow:visible}.calendar-panel .calendar-event-meta{color:#334155;font-size:11px;font-weight:700;line-height:16px}.calendar-panel .calendar-event-mainline{align-items:center;color:#172033;font-size:12px;line-height:17px}.calendar-panel .calendar-dot{display:inline-block;flex:0 0 auto;width:6px;height:6px;border-radius:50%;vertical-align:middle}.calendar-panel .calendar-event-text{display:block;flex:0 0 auto;min-width:max-content;overflow:visible;overflow-wrap:normal;text-overflow:clip;white-space:nowrap;word-break:keep-all}.calendar-panel .calendar-event-maintext{font-weight:700}.timeline-panel{display:grid;gap:12px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:14px;margin-bottom:18px}.timeline-toolbar{display:grid;grid-template-columns:auto repeat(5,minmax(130px,1fr)) auto auto;gap:10px;align-items:end}.timeline-toolbar strong{align-self:center;min-width:110px;font-size:18px}.timeline-toolbar button:disabled{opacity:.48;cursor:not-allowed}.schedule-timeline{min-height:440px;border:1px solid #dbe5f2;border-radius:8px;overflow:hidden;background:#fff}.schedule-timeline .vis-timeline{border:0;font-family:inherit;visibility:visible!important}.schedule-timeline .vis-panel.vis-left{border-right-color:#dbe5f2;background:#f8fbff}.schedule-timeline .vis-label{color:#172033;font-weight:700}.schedule-timeline .vis-time-axis .vis-text{color:#526071}.schedule-timeline .vis-item.timeline-lesson{min-width:132px;border:1px solid #8fb2f6;border-radius:6px;background:#eaf2ff;color:#172033;box-shadow:0 4px 14px #2f6fed24}.schedule-timeline .vis-item.timeline-lesson.vis-selected{border-color:#1f5ad7;background:#dceaff}.schedule-timeline .vis-item.timeline-status-submitted{border-color:#8ed0a7;background:#e9f8ef}.schedule-timeline .vis-item-content{display:grid;gap:2px;max-width:260px;overflow:hidden}.schedule-timeline .vis-item-content strong,.schedule-timeline .vis-item-content span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-timeline .vis-item-content span{color:#526071;font-size:12px}.timeline-empty,.timeline-selection{margin:0;color:#68758a;font-size:13px}.schedule-board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(220px,1fr);gap:12px;overflow-x:auto;border:1px solid #e2e8f2;border-radius:10px;background:#f8fbff;padding:14px;margin-bottom:18px}.schedule-board h2{position:sticky;left:0;z-index:1;align-self:start;width:120px;margin:0;padding:10px 0;background:#f8fbff;font-size:18px}.schedule-day{min-height:140px;display:grid;align-content:start;gap:8px;border:1px dashed #cbd7e8;border-radius:10px;background:#fff;padding:12px}.schedule-day.dropping{border-color:#2f6fed}.schedule-chip{display:grid;gap:4px;width:100%;text-align:left;border-color:#dbe5f2;background:#f9fbff;padding:8px 10px}.schedule-chip span,.schedule-chip small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-chip small{color:#68758a}.row-card{display:grid;grid-template-columns:1.2fr 1fr auto;gap:14px;align-items:center;padding:14px}.row-card div{display:grid;gap:4px}.row-card span,.row-card p{color:#68758a;margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;background:#0f172a6b;padding:20px}.modal-panel{width:min(960px,100%);max-height:min(760px,calc(100vh - 40px));overflow:auto;display:grid;gap:16px;border:1px solid #e2e8f2;border-radius:10px;background:#fff;box-shadow:0 24px 80px #0f172a3d;padding:18px}.modal-panel header{display:flex;justify-content:space-between;align-items:center;gap:12px}.modal-panel h2{margin:0;font-size:20px}.global-error-alert{position:fixed;top:18px;left:50%;z-index:1000;width:min(520px,calc(100vw - 28px));display:flex;align-items:flex-start;justify-content:space-between;gap:14px;border:1px solid #fecaca;border-radius:12px;background:#fff;box-shadow:0 24px 80px #7f1d1d38;color:#7f1d1d;padding:14px 16px;transform:translate(-50%)}.global-error-alert strong{display:block;margin-bottom:3px;font-size:15px}.global-error-alert p{margin:0;color:#b42318;font-size:14px;line-height:1.5}.global-error-alert button{flex:0 0 auto}.resource-modal{width:min(720px,100%)}.school-resource-modal{width:min(960px,100%)}.resource-modal-form{margin-bottom:0}.school-resource-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.school-info-section{display:grid;gap:14px;border-top:1px solid var(--line-soft, #e2e8f2);padding-top:18px}.school-info-section>header{align-items:flex-start}.school-info-section h3{margin:3px 0 0;color:var(--ink-900, #172033);font-size:19px}.school-info-section p{margin:4px 0 0;color:var(--ink-500, #68758a);font-size:13px}.school-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch}.school-info-field{display:grid;grid-template-rows:auto auto 1fr;align-content:start;gap:6px;border:1px solid var(--line-soft, #e2e8f2);border-radius:var(--radius-md, 14px);background:var(--surface-tint, #f8fbff);padding:14px}.school-info-field>span{color:var(--ink-800, #25324a);font-size:14px;font-weight:800}.school-info-field small{min-height:38px;color:var(--ink-500, #68758a);font-size:12px;line-height:1.55}.school-info-field textarea{min-height:112px;resize:vertical;background:#fff;line-height:1.65}.school-info-field-wide,.span-2{grid-column:span 2}.compact-modal{width:min(520px,100%)}.modal-actions{grid-column:1 / -1;justify-content:flex-end}.teacher-shell{min-height:100vh;display:grid;grid-template-columns:320px 1fr;background:#eef2f7}.lesson-rail{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;padding:18px;display:flex;flex-direction:column;gap:10px;background:#fff;border-right:1px solid #e2e8f2}.rail-head{display:grid;gap:6px;margin-bottom:10px}.rail-school-info-button{display:flex;align-items:center;justify-content:space-between;gap:10px;border-color:#bfdbfe;background:linear-gradient(135deg,#eff6ff,#ecfeff);color:#1d4ed8;text-align:left}.rail-school-info-button span{font-weight:850}.rail-school-info-button small{border-radius:999px;background:#ffffffd1;color:#0e7490;padding:4px 8px;font-size:11px;font-weight:850}.lesson-tile{display:grid;gap:8px;min-height:76px;align-content:center;padding:12px 14px;text-align:left}.lesson-tile strong{line-height:1.35;white-space:normal;word-break:break-word}.lesson-tile span{color:#68758a;font-size:13px;line-height:1.45;white-space:normal;word-break:break-word}.lesson-tile.active{border-color:#2f6fed;background:#edf4ff}.lesson-tile.today strong{display:flex;align-items:center;gap:6px}.lesson-tile.today strong em{flex:0 0 auto;border-radius:999px;background:#f59e0b;color:#fff;font-size:11px;font-style:normal;font-weight:900;line-height:1;padding:4px 6px}.lesson-tile.today.active{border-color:#2f6fed;background:#fff8df}.lesson-tile:disabled,.lesson-tile.locked{cursor:not-allowed;opacity:.58}.rail-dashboard-button{min-height:42px;justify-content:center;border-color:#dbe5f2;background:#f8fbff;font-weight:900}.rail-dashboard-button.active{border-color:#2f6fed;background:#edf4ff;color:#1f56d8}.lesson-tree{display:grid;gap:10px}.lesson-school-group,.lesson-class-group{display:grid;gap:8px}.lesson-school-group>summary,.lesson-class-group>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:40px;border:1px solid #e2e8f2;border-radius:10px;background:#f8fbff;color:#172033;cursor:pointer;list-style:none;padding:9px 11px}.lesson-school-group>summary::-webkit-details-marker,.lesson-class-group>summary::-webkit-details-marker{display:none}.lesson-school-group>summary:before,.lesson-class-group>summary:before{content:"›";color:#68758a;font-weight:900;transition:transform .16s ease}.lesson-school-group[open]>summary:before,.lesson-class-group[open]>summary:before{transform:rotate(90deg)}.lesson-school-group>summary strong,.lesson-class-group>summary strong{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lesson-school-group>summary span,.lesson-class-group>summary span{flex:0 0 auto;border-radius:999px;background:#eef4ff;color:#2f6fed;padding:3px 8px;font-size:12px;font-weight:800}.lesson-class-group,.lesson-class-group .lesson-tile{margin-left:10px}.mobile-lesson-picker{display:none}.empty-state{display:grid;place-content:center;padding:40px;text-align:center}.teacher-dashboard{min-width:0;display:grid;align-content:start;gap:16px;padding:18px}.teacher-dashboard-hero,.teacher-next-card,.teacher-agenda-card,.teacher-dashboard-section{border:1px solid #dbe5f2;border-radius:14px;background:#ffffffe6;box-shadow:0 16px 40px #21365814}.teacher-dashboard-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px;background:linear-gradient(135deg,#eef6fff2,#ffffffeb),radial-gradient(circle at 88% 12%,rgba(47,111,237,.14),transparent 34%)}.teacher-dashboard-hero h1,.teacher-next-card h2,.teacher-dashboard-section h2{margin:0;color:#172033}.teacher-dashboard-hero h1{margin-top:6px;font-size:28px;line-height:1.25}.teacher-dashboard-hero p,.teacher-next-card p{margin:8px 0 0;color:#526071}.teacher-hero-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px}.teacher-sop-button{border:1px solid #c7dcff;border-radius:12px;background:#eff6ff;color:#1d4ed8;font-weight:850}.teacher-dashboard-notice{border:1px solid #ffe0a6;border-radius:12px;background:#fff8e8;color:#8a5200;padding:10px 12px;font-size:14px;font-weight:800}.teacher-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,180px));gap:10px;max-width:370px}.teacher-stat-card{display:grid;gap:4px;min-height:92px;border:1px solid #dbe5f2;border-radius:12px;background:#fff;padding:12px 14px}.teacher-stat-card strong{color:#1f56d8;font-size:24px;line-height:1}.teacher-stat-card span{color:#172033;font-weight:900}.teacher-stat-card small{color:#68758a;font-weight:700}.teacher-next-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px}.teacher-next-card h2{margin-top:6px;font-size:22px}.teacher-dashboard-tabs-card{display:grid;gap:14px;border:1px solid #dbe5f2;border-radius:14px;background:#ffffffe6;box-shadow:0 16px 40px #21365814;padding:14px}.teacher-dashboard-tabs{display:flex;gap:8px;overflow-x:auto;border-radius:12px;background:#eef4ff;padding:6px}.teacher-dashboard-tabs button{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;border:0;border-radius:10px;background:transparent;color:#526071;font-weight:900;white-space:nowrap}.teacher-dashboard-tabs button.active{background:#fff;color:#1f56d8;box-shadow:0 8px 20px #2136581a}.teacher-dashboard-tabs em{min-width:22px;border-radius:999px;background:#2f6fed1a;color:inherit;font-size:12px;font-style:normal;padding:2px 7px;text-align:center}.teacher-tab-panel{display:grid;gap:10px}.teacher-tab-panel>header{display:flex;align-items:center;justify-content:space-between;gap:12px}.teacher-tab-panel h2{margin:4px 0 0;color:#172033;font-size:18px}.teacher-tab-panel>header>span{border-radius:999px;background:#eef4ff;color:#2f6fed;padding:5px 10px;font-size:12px;font-weight:900}.teacher-agenda-card{display:grid;gap:10px;padding:16px}.teacher-agenda-card>header{display:flex;align-items:center;justify-content:space-between;gap:12px}.teacher-agenda-card h2{margin:4px 0 0;color:#172033;font-size:18px}.teacher-agenda-card>header>span{border-radius:999px;background:#eef4ff;color:#2f6fed;padding:5px 10px;font-size:12px;font-weight:900}.teacher-agenda-list{display:grid;gap:6px}.teacher-agenda-row{display:grid;grid-template-columns:138px minmax(120px,1.2fr) minmax(120px,1fr) auto;gap:12px;align-items:center;min-height:42px;border-color:#edf1f7;background:#fbfdff;text-align:left}.teacher-agenda-row time,.teacher-agenda-row span{color:#68758a;font-size:13px;line-height:1.35}.teacher-agenda-row strong{min-width:0;overflow:hidden;color:#172033;text-overflow:ellipsis;white-space:nowrap}.teacher-agenda-row em{border-radius:999px;background:#eef4ff;color:#1f56d8;padding:4px 8px;font-size:12px;font-style:normal;font-weight:900;white-space:nowrap}.teacher-agenda-row em.state-进行中{background:#e9f9ef;color:#1b7f3b}.teacher-agenda-row em.state-待补充{background:#fff7df;color:#9a5b00}.teacher-agenda-row em.state-已结课{background:#f0f4f8;color:#526071}.teacher-agenda-row:disabled,.teacher-agenda-row.locked{cursor:not-allowed;opacity:.62}.teacher-work-list{display:grid;gap:10px}.teacher-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.teacher-dashboard-section{display:grid;align-content:start;gap:10px;padding:16px}.teacher-dashboard-section>header{display:flex;align-items:center;justify-content:space-between;gap:12px}.teacher-dashboard-section>header h2{font-size:18px}.teacher-dashboard-section>header span{border-radius:999px;background:#eef4ff;color:#2f6fed;padding:5px 10px;font-size:12px;font-weight:900}.teacher-empty-mini{border:1px dashed #cfd9e8;border-radius:12px;color:#68758a;padding:18px;text-align:center}.teacher-work-card{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;border:1px solid #edf1f7;border-radius:12px;background:#fbfdff;padding:12px}.teacher-work-card-main{min-width:0;display:grid;gap:5px}.teacher-work-card-main strong{color:#172033;line-height:1.35;word-break:break-word}.teacher-work-card-main span,.teacher-work-card-main small{color:#68758a;line-height:1.45}.teacher-missing-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.teacher-missing-list em{border-radius:999px;background:#fff7df;color:#9a5b00;padding:4px 8px;font-size:12px;font-style:normal;font-weight:900}.teacher-missing-list em.ok{background:#e9f9ef;color:#1b7f3b}.teacher-next-card button:disabled,.teacher-work-card button:disabled,.teacher-dashboard-hero button:disabled{cursor:not-allowed;border-color:#d7dfeb;background:#eef2f7;color:#8a97aa}.teacher-sop-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:120;display:grid;place-items:end center;padding:14px;background:#0f172a75;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.teacher-sop-modal{width:min(560px,100%);max-height:min(760px,calc(100vh - 28px));overflow:auto;border:1px solid rgba(255,255,255,.72);border-radius:24px;background:#fffffff5;box-shadow:0 28px 80px #0f172a47;padding:18px}.teacher-sop-modal header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.teacher-sop-modal h2{margin:4px 0 0;color:#102033;font-size:21px}.teacher-sop-modal p{margin:6px 0 0;color:#64748b;line-height:1.6}.teacher-sop-modal header button{flex:0 0 auto;border:1px solid #d7dfeb;border-radius:12px;background:#fff;color:#172033;font-weight:800}.teacher-sop-modal ol{display:grid;gap:10px;list-style:none;margin:16px 0 0;padding:0}.teacher-sop-modal li{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:10px;border:1px solid #e4ecf5;border-radius:16px;background:#fbfdff;padding:12px}.teacher-sop-modal li span{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:13px;font-weight:900}.teacher-sop-modal li p{margin:0;color:#334155;line-height:1.65}.teacher-school-info-backdrop{place-items:center}.teacher-school-info-modal{width:min(780px,100%);max-height:min(820px,calc(100vh - 28px));overflow:auto;border:1px solid rgba(255,255,255,.72);border-radius:24px;background:#fffffff7;box-shadow:0 28px 80px #0f172a47;padding:20px}.teacher-school-info-modal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.teacher-school-info-modal h2{margin:4px 0 0;color:#102033;font-size:23px}.teacher-school-info-modal>header p{margin:5px 0 0;color:#64748b}.teacher-school-info-modal>header button{flex:0 0 auto;border-radius:12px;font-weight:800}.teacher-school-info-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) repeat(2,minmax(120px,auto));align-items:end;gap:12px;margin-top:18px}.teacher-school-info-progress,.teacher-school-info-contact{min-height:64px;display:grid;align-content:center;gap:3px;border:1px solid #dbeafe;border-radius:14px;background:#f8fbff;padding:10px 12px}.teacher-school-info-progress span,.teacher-school-info-contact span{color:#64748b;font-size:11px}.teacher-school-info-progress strong,.teacher-school-info-contact strong{color:#1e3a5f;font-size:14px}.teacher-school-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px}.teacher-school-info-grid article{display:grid;align-content:start;gap:10px;border:1px solid #dce8f5;border-radius:18px;background:linear-gradient(180deg,#fff,#f8fbff);padding:14px}.teacher-school-info-grid article:nth-child(4),.teacher-school-info-grid article:nth-child(5){grid-column:span 2}.teacher-school-info-grid article.empty{border-style:dashed;background:#f8fafc}.teacher-school-info-grid article>header{display:grid;gap:2px}.teacher-school-info-grid h3{margin:0;color:#1e3a5f;font-size:15px}.teacher-school-info-grid article>header span{color:#64748b;font-size:11px;line-height:1.5}.teacher-school-info-grid article>p{margin:0;color:#334155;line-height:1.75;white-space:pre-wrap;word-break:break-word}.teacher-school-info-grid article.empty>p{color:#94a3b8}.classroom{min-width:0;display:grid;grid-template-columns:1fr;grid-template-rows:auto auto 1fr;gap:14px;padding:16px}.classroom>header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;border:1px solid #e2e8f2;border-radius:10px;background:#fff;padding:12px 16px}.classroom h1,.mobile-flow h1{margin:0;font-size:22px}.toolbar{display:flex;flex-wrap:wrap;gap:8px}.toolbar-select{width:min(260px,100%);padding:9px 12px}.classroom-courseware-hint{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a8a;padding:10px 12px;font-size:14px}.classroom-courseware-hint strong{color:#1d4ed8}.stage{width:100%;height:calc(100vh - 202px);min-height:480px;border:0;border-radius:10px;background:#111827}.classroom-stage-shell{position:relative;overflow:hidden;min-height:min(480px,calc(100vh - 202px));border-radius:10px;background:#111827}.classroom-stage-shell .stage{height:calc(100vh - 202px);display:block}.play-debug{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid #dbe5f2;border-radius:8px;background:#fff;color:#68758a;padding:8px 10px;font-size:12px}.stage-loading{display:grid;place-items:center;color:#fff;font-size:18px}.classroom-stage-shell:fullscreen{width:100vw;height:100vh;border-radius:0;background:#111827}.classroom-stage-shell:fullscreen .stage{width:100vw;height:100vh;border-radius:0}.pet-assistant{position:absolute;top:0;left:0;z-index:8;width:108px;pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none}.pet-orb{position:relative;width:104px;height:104px;display:grid;place-items:center;border:0;border-radius:20px;background:transparent;box-shadow:none;cursor:grab;padding:0;pointer-events:auto}.pet-orb:before{content:"";position:absolute;top:7px;right:10px;bottom:9px;left:10px;border-radius:24px;background:#ffffff24;outline:1px solid rgba(255,255,255,.5);box-shadow:0 14px 30px #0f172a4d,0 0 0 5px #2f6fed14;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.pet-orb:after{content:"";position:absolute;left:20px;right:18px;bottom:6px;height:16px;border-radius:999px;background:radial-gradient(ellipse at center,#22d3ee57,#22d3ee00);filter:blur(2px)}.pet-assistant.dragging .pet-orb{cursor:grabbing}.pet-orb img{position:relative;z-index:1;width:94px;height:94px;display:block;object-fit:contain;transform-origin:50% 78%;animation:pet-idle 2.8s ease-in-out infinite;filter:drop-shadow(0 0 1px rgba(255,255,255,.95)) drop-shadow(0 9px 12px rgba(15,23,42,.28))}.pet-state-light{position:absolute;right:12px;bottom:12px;z-index:2;width:14px;height:14px;border:2px solid #fff;border-radius:999px;background:#22c55e;box-shadow:0 0 0 4px #22c55e2e}.pet-assistant.typing .pet-orb img{animation:pet-typing .72s ease-in-out infinite}.pet-assistant.thinking .pet-orb img{animation:pet-thinking 1s ease-in-out infinite}.pet-assistant.replying .pet-orb img{animation:pet-replying .62s ease-in-out 2,pet-idle 2.8s ease-in-out 1.24s infinite}.pet-assistant.thinking .pet-state-light{background:#f59e0b;box-shadow:0 0 0 4px #f59e0b33}.pet-assistant.typing .pet-state-light{background:#2f6fed;box-shadow:0 0 0 4px #2f6fed2e}.pet-assistant.replying .pet-state-light{background:#06b6d4;box-shadow:0 0 0 4px #06b6d42e}.pet-bubble{position:absolute;right:100%;top:0;width:min(360px,calc(100vw - 150px));max-height:min(520px,calc(100vh - 48px));display:grid;gap:12px;overflow:visible;border:2px solid rgba(255,255,255,.72);border-radius:32px 34px 28px/30px 34px;background:radial-gradient(circle at 18% 18%,#ffffffdb,#fff0 34%),linear-gradient(145deg,#ffffffc2,#ebf7ff9e);box-shadow:0 22px 60px #0f172a47,inset 0 1px #ffffffe0;-webkit-backdrop-filter:blur(14px) saturate(1.18);backdrop-filter:blur(14px) saturate(1.18);padding:18px;pointer-events:auto;transform:translate(-20px)}.pet-assistant.bubble-right .pet-bubble{right:auto;left:100%;transform:translate(20px)}.pet-assistant.bubble-up .pet-bubble{top:auto;bottom:0}.pet-bubble header{display:flex;align-items:center;justify-content:space-between;gap:10px}.pet-bubble header strong{color:#172033}.pet-bubble header span{color:#68758a;font-size:12px}.pet-bubble header button{flex:0 0 auto;border-color:#cbd5e1a3;background:#ffffff80}.pet-bubble textarea{min-height:92px;max-height:150px;border:0;border-radius:20px;background:#ffffff75;box-shadow:inset 0 0 0 1px #cbd5e16b;resize:vertical}.pet-actions{display:flex;justify-content:flex-end}.pet-bubble p{max-height:190px;overflow:auto;margin:0;border:0;border-radius:20px;background:#ffffff6b;box-shadow:inset 0 0 0 1px #cbd5e15c;color:#1f2a3d;padding:12px;line-height:1.7;white-space:pre-wrap}@keyframes pet-idle{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-5px) scale(1.018)}}@keyframes pet-typing{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-3px) rotate(2deg)}}@keyframes pet-thinking{0%,to{transform:translateY(0) rotate(0);filter:drop-shadow(0 7px 9px rgba(15,23,42,.22))}33%{transform:translateY(-4px) rotate(-3deg)}66%{transform:translateY(-2px) rotate(3deg);filter:drop-shadow(0 0 14px rgba(47,111,237,.48))}}@keyframes pet-replying{0%,to{transform:translateY(0) scale(1)}35%{transform:translateY(-8px) scale(1.05)}70%{transform:translateY(-2px) scale(.98)}}.mobile-flow{padding:14px;display:grid;gap:12px}.flow-card{display:grid;gap:12px;padding:14px}.flow-card h2{margin:0;font-size:18px}.flow-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.autosave-state{border-radius:999px;background:#eef4ff;color:#2f6fed;padding:5px 9px;font-size:12px;font-weight:800;white-space:nowrap}.autosave-state.saving{background:#fff7df;color:#a15c00}.autosave-state.error{background:#fff1f1;color:#b42318}.photo-upload-list{display:grid;gap:10px}.photo-upload-list label{display:grid;gap:8px;border:1px solid #edf1f7;border-radius:10px;background:#f8fbff;padding:11px 12px}.photo-upload-list label>span{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#172033;font-weight:800}.photo-upload-list small{color:#68758a;font-size:12px;font-weight:700;white-space:nowrap}.teacher-photo-head{align-items:flex-start}.teacher-photo-head>div{display:grid;gap:4px}.teacher-photo-head small,.teacher-photo-lock{color:#68758a;font-size:12px}.teacher-photo-group{display:grid;gap:10px;border:1px solid #e2e8f2;border-radius:12px;background:#fbfdff;padding:12px}.teacher-photo-group>header{display:flex;align-items:center;justify-content:space-between;gap:10px}.teacher-photo-group>header>div{display:grid;gap:2px}.photo-upload-list .teacher-photo-upload{border-style:dashed;border-color:#b9c9e6;background:#f2f7ff;color:#1f56d8;cursor:pointer}.photo-upload-list .teacher-photo-upload.uploading{opacity:.65;cursor:wait}.photo-upload-queue{display:grid;gap:8px}.photo-upload-queue article{display:grid;grid-template-columns:48px minmax(0,1fr) auto auto;gap:8px;align-items:center;border:1px solid #dbe5f2;border-radius:9px;background:#fff;padding:7px}.photo-upload-queue article.upload-success{border-color:#bfe8cf;background:#f3fbf6}.photo-upload-queue article.upload-error{border-color:#fecaca;background:#fff7f7}.photo-upload-queue img{width:48px;height:48px;border-radius:7px;object-fit:cover}.photo-upload-queue article>div{min-width:0;display:grid;gap:2px}.photo-upload-queue strong,.photo-upload-queue small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-upload-queue span{color:#2563eb;font-size:12px;font-weight:700}.photo-upload-queue small{color:#b42318}.teacher-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.teacher-photo-grid article{overflow:hidden;border:2px solid transparent;border-radius:10px;background:#fff;box-shadow:0 4px 14px #0f172a14}.teacher-photo-grid article.selected{border-color:#2f6fed}.teacher-photo-thumb{width:100%;aspect-ratio:1;overflow:hidden;display:grid;place-items:center;border:0;border-radius:0;background:#edf2fb;padding:0}.teacher-photo-thumb img{width:100%;height:100%;display:block;object-fit:cover}.teacher-photo-thumb span{color:#68758a;font-size:11px}.teacher-photo-grid footer{display:grid;grid-template-columns:auto 1fr auto;gap:5px;align-items:center;padding:7px}.photo-upload-list .teacher-photo-grid footer label{display:flex;align-items:center;gap:3px;border:0;background:transparent;padding:0;color:#526071;font-size:11px}.teacher-photo-grid footer input{width:auto;margin:0}.teacher-photo-grid footer small{overflow:hidden;text-overflow:ellipsis}.danger-link{border:0;background:transparent;color:#b42318;padding:2px;font-size:11px}.teacher-photo-lock{margin:0;border-radius:8px;background:#f4f6f9;padding:9px 10px}.teacher-photo-preview{z-index:30}.teacher-photo-preview>section{width:min(920px,calc(100vw - 24px));max-height:calc(100vh - 24px);display:grid;gap:12px;border-radius:14px;background:#fff;padding:14px;box-shadow:0 24px 80px #0f172a4d}.teacher-photo-preview header{display:flex;align-items:center;justify-content:space-between;gap:12px}.teacher-photo-preview header h2{margin:0;font-size:18px}.teacher-photo-preview header span{color:#68758a;font-size:12px}.teacher-photo-preview>section>img{max-width:100%;max-height:calc(100vh - 140px);justify-self:center;border-radius:10px;object-fit:contain;background:#0f172a}.attendance-head,.attendance-row{display:grid;grid-template-columns:minmax(64px,1fr) 128px 88px;gap:8px;align-items:center}.attendance-head{color:#68758a;font-size:12px;font-weight:700}.attendance-row{border-bottom:1px solid #edf1f7;padding:8px 0}.attendance-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attendance-student-identity{min-width:0;display:grid;gap:2px}.attendance-student-identity small{color:#68758a;font-size:10px;line-height:1.3;white-space:normal}.attendance-group{display:flex;gap:6px}.status-dot{width:34px;height:34px;display:grid;place-items:center;border-radius:999px;padding:0;color:#526071;font-size:13px;font-weight:700}.status-dot.active{border-color:#2f6fed;background:#2f6fed;color:#fff}.tag-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.tag-grid label{display:flex;align-items:center;gap:8px}.tag-grid input{width:auto}.parent-feedback-page{min-height:100vh;display:grid;gap:14px;align-content:start;background:linear-gradient(180deg,#2f6fed1a,#2f6fed00 260px),#f5f7fb;padding:16px}.parent-card{border:1px solid #e2e8f2;border-radius:14px;background:#fffffff5;box-shadow:0 14px 36px #0f172a14;padding:18px}.parent-hero{display:grid;gap:8px}.parent-kicker,.parent-section-head span,.report-summary span{color:#68758a;font-size:12px;font-weight:700}.parent-hero h1,.lesson-select-panel h2,.report-content h2,.report-photos h2{margin:0;color:#0f172a;letter-spacing:0}.parent-hero h1{font-size:26px}.parent-hero p,.report-evaluation p{margin:0;color:#526071;line-height:1.7}.parent-search-panel form,.lesson-select-panel,.parent-report,.report-content,.report-evaluation,.report-photos{display:grid;gap:14px}.parent-contact-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}.parent-contact-card h2{margin:4px 0 6px;color:#0f172a;font-size:18px}.parent-contact-card p{margin:0;color:#526071;line-height:1.6}.wechat-qr-image{width:118px;aspect-ratio:1;display:block;object-fit:contain;border:1px solid #dbe5f2;border-radius:14px;background:#fff;box-shadow:0 12px 26px #1e3a5f14}.parent-search-panel label{display:grid;gap:8px;color:#526071;font-size:13px;font-weight:700}.parent-search-panel input{height:48px;border-radius:10px;font-size:16px}.parent-search-panel button.primary{height:48px;border-radius:10px}.parent-error{margin:0;color:#b42318;font-size:14px}.student-match-list,.parent-lesson-list{display:grid;gap:10px}.student-match-list button,.parent-lesson-card{width:100%;display:grid;gap:5px;justify-items:start;border:1px solid #dbe5f2;border-radius:12px;background:#fff;color:#0f172a;padding:14px;text-align:left}.student-match-list strong,.parent-lesson-card strong{font-size:17px}.student-match-list span,.parent-lesson-card span,.parent-lesson-card small,.parent-lesson-card time{color:#68758a}.parent-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.parent-section-head h2{margin:3px 0 0;font-size:20px}.parent-report-actions{display:flex;gap:8px}.report-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.report-summary div{min-width:0;display:grid;gap:4px}.report-summary strong{color:#0f172a;font-size:16px;line-height:1.4}.report-content p{margin:0;color:#1f2a3d;font-size:16px;line-height:1.9;white-space:pre-wrap}.parent-tags{display:flex;flex-wrap:wrap;gap:8px}.parent-tags span{border-radius:999px;background:#edf7ee;color:#276749;padding:7px 10px;font-size:13px;font-weight:700}.parent-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.parent-photo-grid figure{overflow:hidden;margin:0;border:1px solid #e2e8f2;border-radius:12px;background:#fff}.parent-photo-grid img{width:100%;aspect-ratio:1 / 1;display:block;object-fit:cover;background:#edf2fb}.parent-photo-grid figcaption{padding:8px 10px;color:#526071;font-size:12px;font-weight:700}@media(max-width:820px){.app-shell,.teacher-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:2;height:auto;max-height:none;overflow-y:visible}.lesson-rail{position:static;height:auto;padding:12px 14px;border-right:0;border-bottom:1px solid #e2e8f2}.lesson-rail .rail-head{grid-template-columns:1fr auto;align-items:center;margin-bottom:0}.lesson-rail .rail-head span{grid-column:1}.lesson-rail .rail-head button{grid-row:1 / span 2;grid-column:2}.mobile-lesson-picker{display:block}.rail-dashboard-button{width:100%}.teacher-dashboard{padding:14px}.teacher-dashboard-hero,.teacher-next-card{align-items:flex-start;flex-direction:column}.teacher-dashboard-hero h1{font-size:24px}.teacher-hero-actions{width:100%;justify-content:stretch}.teacher-hero-actions button{flex:1 1 132px}.rail-school-info-button{width:100%}.teacher-school-info-backdrop{place-items:end center}.teacher-school-info-modal{max-height:min(860px,calc(100vh - 20px));border-radius:24px 24px 18px 18px;padding:16px}.teacher-school-info-toolbar,.teacher-school-info-grid{grid-template-columns:1fr}.teacher-school-info-grid article:nth-child(4),.teacher-school-info-grid article:nth-child(5){grid-column:auto}.teacher-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}.teacher-dashboard-grid,.teacher-work-card{grid-template-columns:1fr}.teacher-agenda-card>header,.teacher-tab-panel>header{align-items:flex-start;flex-direction:column}.teacher-agenda-row{grid-template-columns:1fr auto}.teacher-agenda-row time,.teacher-agenda-row span{grid-column:1 / -1}.teacher-work-card button,.teacher-next-card button{width:100%}.sidebar{flex-direction:row;overflow-x:auto}.sidebar strong,.sidebar-user{display:none}.row-card{grid-template-columns:1fr}.resource-toolbar{align-items:flex-start;flex-direction:column}.student-filter-bar,.attendance-filter-bar,.attendance-summary{grid-template-columns:1fr}.student-filter-bar>span{justify-self:start}.student-filter-actions{grid-column:auto;justify-content:flex-start;flex-wrap:wrap}.after-filter-bar{grid-template-columns:1fr}.after-filter-bar>span{justify-self:start}.sub-panel-header{flex-direction:column}.span-2{grid-column:auto}.school-info-grid,.school-resource-form{grid-template-columns:1fr}.school-info-field-wide{grid-column:auto}.dashboard-hero,.dashboard-panel header,.after-header,.after-detail-head,.after-feedback-head{align-items:flex-start;flex-direction:column}.dashboard-panel-actions{width:100%;flex-wrap:wrap}.dashboard-cards,.dashboard-grid,.dashboard-lesson,.dashboard-todo{grid-template-columns:1fr}.dashboard-lesson time,.dashboard-todo>strong{justify-self:start}.dashboard-attendance-summary{grid-template-columns:1fr}.dashboard-lesson .dashboard-checkin-state{justify-items:start}.compact-row,.after-lesson-card,.after-detail-grid,.after-card-metrics,.after-stats,.photo-groups,.timeline-toolbar,.calendar-panel{grid-template-columns:1fr}.calendar-filter{border-right:0;border-bottom:1px solid #edf1f7;padding-right:0;padding-bottom:14px}.calendar-panel .fc-toolbar{display:grid;gap:8px}.schedule-timeline{min-height:360px}.classroom{grid-template-columns:1fr}.stage{height:60vh}.modal-panel{max-height:calc(100vh - 24px);padding:14px}}:root{--brand-900: #12305f;--brand-800: #194276;--brand-700: #245aa0;--brand-600: #2f6fed;--brand-500: #3c82f6;--brand-100: #eaf3ff;--teal-600: #0ea5a8;--teal-100: #e5fbfb;--green-600: #16a34a;--green-100: #eaf8ef;--amber-600: #d97706;--amber-100: #fff3d6;--red-600: #dc2626;--red-100: #fff0f0;--ink-900: #142033;--ink-700: #324156;--ink-500: #68758a;--line: #dce6f3;--line-soft: #edf3fa;--surface: rgba(255, 255, 255, .94);--surface-solid: #ffffff;--surface-tint: #f7fbff;--page: #f1f6fb;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-sm: 0 8px 22px rgba(28, 52, 88, .07);--shadow-md: 0 18px 44px rgba(28, 52, 88, .11);--focus: 0 0 0 4px rgba(47, 111, 237, .14)}html{background:var(--page)}body{min-width:320px;background:radial-gradient(circle at 20% -10%,rgba(47,111,237,.12),transparent 34vw),radial-gradient(circle at 92% 8%,rgba(14,165,168,.12),transparent 30vw),var(--page);color:var(--ink-900);text-rendering:optimizeLegibility}button,.button-link{min-height:38px;border-color:var(--line);border-radius:var(--radius-sm);background:linear-gradient(180deg,#fff,#f8fbff);color:var(--ink-700);font-size:14px;font-weight:650;box-shadow:0 1px #ffffffd9;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease,background .16s ease}button:hover,.button-link:hover{border-color:#2f6fed75;box-shadow:0 7px 18px #2f6fed1a}button:active,.button-link:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,input:focus,select:focus,textarea:focus,summary:focus-visible{outline:none;border-color:var(--brand-600);box-shadow:var(--focus)}.primary{border-color:transparent;background:linear-gradient(135deg,var(--brand-600),var(--teal-600));color:#fff;box-shadow:0 12px 24px #2f6fed33}.primary:hover{border-color:transparent;box-shadow:0 16px 30px #2f6fed42}.danger{border-color:#ffd3d3;background:snow;color:#b42318}input,select,textarea{border-color:var(--line);border-radius:var(--radius-sm);background:#ffffffeb;color:var(--ink-900);transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}select:not([multiple]){height:40px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#68758a 50%),linear-gradient(135deg,#68758a 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-repeat:no-repeat;background-size:5px 5px,5px 5px;cursor:pointer;padding-right:38px}select:not([multiple]):disabled{background-color:#f1f5f9;color:#7b8798;cursor:not-allowed}input::placeholder,textarea::placeholder{color:#98a5b8}label,.form-field,.muted,.hint{color:var(--ink-500)}.error,.success{border-radius:999px;padding:6px 10px;font-weight:700}.error{background:var(--red-100);color:#b42318}.success{background:var(--green-100);color:#137a3c}.login-page{background:radial-gradient(circle at 26% 18%,rgba(47,111,237,.16),transparent 32vw),radial-gradient(circle at 80% 64%,rgba(14,165,168,.16),transparent 28vw),linear-gradient(135deg,#eef6ff,#f7fbff 55%,#edf8f3)}.login-panel{border-color:#ffffffbd;border-radius:20px;background:#ffffffdb;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(18px) saturate(1.12);backdrop-filter:blur(18px) saturate(1.12)}.login-panel h1{color:var(--brand-900);letter-spacing:0}.app-shell{background:linear-gradient(180deg,#eaf3ffbd,#f1f6fb00 260px),var(--page)}.sidebar{border-right:1px solid rgba(255,255,255,.08);background:radial-gradient(circle at 30% 0%,rgba(51,132,246,.28),transparent 38%),linear-gradient(180deg,#12243f,#172033 48%,#142033);box-shadow:12px 0 34px #0f172a21}.sidebar strong{color:#fff;letter-spacing:0}.sidebar button{border-radius:10px;color:#d8e3f1;font-weight:700}.sidebar button.active,.sidebar button:hover{background:#ffffff1f;color:#fff;box-shadow:inset 3px 0 #7dd3fc}.workspace{padding:26px}.topbar{position:sticky;top:0;z-index:5;margin:-10px -2px 20px;padding:10px 2px 12px;background:linear-gradient(180deg,#f1f6fbf5,#f1f6fbd1);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar h1,.dashboard-hero h2,.sub-panel h2,.feedback-tools h2,.after-detail-head h2,.parent-hero h1,.classroom h1,.mobile-flow h1{color:var(--brand-900)}.metrics article,.panel,.row-card,.flow-card,.feedback-card,.feedback-search,.school-choices,.dashboard-card,.dashboard-panel,.resource-toolbar,.import-strip,.edit-box,.sub-panel,.calendar-panel,.after-panel,.after-lesson-card,.parent-card{border-color:#dce6f3eb;border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.panel,.sub-panel,.after-panel,.dashboard-panel{padding:18px}.dashboard-hero{border-color:#dce6f3e6;border-radius:var(--radius-lg);background:radial-gradient(circle at 88% 18%,rgba(14,165,168,.17),transparent 24%),linear-gradient(135deg,#fffffffa,#eff7ffeb 62%,#ecfaf4e6);box-shadow:var(--shadow-md)}.dashboard-card{border-radius:var(--radius-lg);background:linear-gradient(180deg,#fffffffa,#f9fcfff2)}.dashboard-card:before{width:5px;border-radius:999px}.dashboard-card strong,.metrics strong{color:var(--brand-900);letter-spacing:0}.dashboard-card span,.metrics span,.dashboard-panel header span,.resource-toolbar-copy span,.import-copy span,.sub-panel-header p,.after-card-main span,.after-card-main small,.after-note{color:var(--ink-500)}.dashboard-lesson,.dashboard-upcoming article,.resource-toolbar,.import-strip,.edit-box,.dashboard-empty,.after-progress span,.calendar-filter,.photo-groups article{border-color:var(--line-soft);background:var(--surface-tint)}.dashboard-todo>strong{border-radius:var(--radius-md);background:var(--brand-100);color:var(--brand-700)}.table-wrap{border:1px solid var(--line-soft);border-radius:var(--radius-md);background:#fff}table{font-size:13px}th{background:#f8fbff;color:#5c6b80;font-size:12px;letter-spacing:0}td{color:var(--ink-700)}tr:hover td{background:#fbfdff}.status-pill{border-color:#bfedd2;background:var(--green-100);color:#137a3c}.status-pill.inactive,.status-pill.attendance.muted{border-color:var(--line);background:#f4f7fb;color:#64748b}.status-pill.attendance.ok{border-color:#bfe8cf;background:var(--green-100);color:#137a3c}.status-pill.attendance.warn{border-color:#fbd99b;background:var(--amber-100);color:#a15c00}.status-pill.attendance.danger{border-color:#fecaca;background:var(--red-100);color:#b42318}.modal-backdrop{background:#0f172a6b;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-panel,.photo-preview-panel{border:1px solid rgba(255,255,255,.72);border-radius:var(--radius-lg);background:#fffffff5;box-shadow:0 28px 90px #0f172a3d}.checkbox-menu{border-color:var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.calendar-panel{overflow:hidden;background:#fffffff5}.calendar-panel .fc{--fc-border-color: #e7eef7;--fc-today-bg-color: rgba(47, 111, 237, .07);--fc-neutral-bg-color: #f8fbff;--fc-page-bg-color: transparent;color:var(--ink-700)}.calendar-panel .fc-toolbar-title{color:var(--brand-900);font-size:20px}.calendar-panel .fc-button{border-color:var(--line)!important;background:#fff!important;color:var(--ink-700)!important;box-shadow:none!important}.calendar-panel .fc-button-primary:not(:disabled).fc-button-active{border-color:transparent!important;background:var(--brand-600)!important;color:#fff!important}.calendar-panel .fc-daygrid-day-number,.calendar-panel .fc-col-header-cell-cushion{color:var(--ink-700)}.calendar-event-card{border-radius:7px}.after-tabs{border-radius:999px;background:#eef5fd;padding:4px}.after-tabs button{border:0;border-radius:999px;background:transparent;box-shadow:none}.after-tabs button.active{background:#fff;color:var(--brand-700);box-shadow:var(--shadow-sm)}.after-lesson-card{border-radius:var(--radius-lg)}.after-card-metrics span,.after-stats span,.after-feedback-summary span{border-radius:var(--radius-sm);background:#f4f9ff}.after-progress span.done{border-left-color:var(--green-600);background:var(--green-100)}.after-photo-list button,.parent-photo-grid figure{border-color:var(--line-soft);border-radius:var(--radius-md)}.teacher-shell{background:radial-gradient(circle at 76% 0%,rgba(14,165,168,.13),transparent 30vw),var(--page)}.lesson-rail{background:linear-gradient(180deg,#fffffff5,#f7fbfff5);border-right-color:var(--line);box-shadow:10px 0 28px #1c345812}.rail-head{border-bottom:1px solid var(--line-soft);padding-bottom:12px}.lesson-tile{border-color:var(--line);border-radius:var(--radius-md);background:#fff;min-height:80px;padding:12px 14px;overflow:visible}.lesson-tile strong{color:var(--ink-900)}.lesson-tile span{color:var(--ink-500)}.lesson-school-group>summary,.lesson-class-group>summary{border-color:var(--line)}.lesson-school-group>summary{background:#eef6ff}.lesson-class-group>summary{background:#fff}.lesson-tile.active{border-color:#2f6fed70;background:var(--brand-100);box-shadow:inset 4px 0 0 var(--brand-600)}.lesson-tile.today{border-color:#f6c453;background:#fff8df;box-shadow:inset 4px 0 #f59e0b}.lesson-tile.today.active{border-color:#2f6fed85;background:#fff8df;box-shadow:inset 4px 0 0 var(--brand-600),0 0 0 1px #2f6fed2e}.classroom>header{border-color:var(--line);border-radius:var(--radius-md);background:#fffffff2;box-shadow:var(--shadow-sm)}.classroom-stage-shell,.stage{border-radius:var(--radius-lg)}.classroom-stage-shell{box-shadow:var(--shadow-md)}.pet-orb:before{background:#ffffff2e;outline-color:#ffffff9e;box-shadow:0 14px 30px #0f172a4d,0 0 0 5px #0ea5a814}.pet-bubble{border-color:#ffffffc7;background:radial-gradient(circle at 20% 18%,#ffffffe6,#fff0 34%),linear-gradient(145deg,#fffc,#ebf7ffa8)}.mobile-flow{background:linear-gradient(180deg,#eaf3ffdb,#f1f6fb00)}.flow-card{border-color:var(--line);border-radius:var(--radius-lg);background:#fffffff2;box-shadow:var(--shadow-sm)}.status-dot{border-color:var(--line);background:#fff}.status-dot.active{border-color:transparent;background:linear-gradient(135deg,var(--brand-600),var(--teal-600));color:#fff}.parent-feedback-page{background:radial-gradient(circle at 15% -4%,rgba(47,111,237,.16),transparent 72vw),radial-gradient(circle at 92% 18%,rgba(14,165,168,.14),transparent 64vw),#f3f8fd;justify-content:center}.parent-card{border-color:#ffffffbd;border-radius:20px;background:#ffffffe6;box-shadow:var(--shadow-md)}.parent-hero h1,.lesson-select-panel h2,.report-content h2,.report-photos h2,.parent-contact-card h2{color:var(--brand-900)}.student-match-list button,.parent-lesson-card{border-color:var(--line-soft);border-radius:var(--radius-lg);background:#fff}.report-content p{color:var(--ink-700)}@media(max-width:820px){.parent-contact-card{grid-template-columns:1fr}.wechat-qr-image{justify-self:center}.workspace{padding:16px}.topbar{position:static;margin:0 0 16px;padding:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.sidebar{background:linear-gradient(90deg,#12243f,#194276);box-shadow:0 10px 26px #0f172a1f}.sidebar button.active,.sidebar button:hover{box-shadow:inset 0 -3px #7dd3fc}.parent-feedback-page{padding:12px}.parent-card{border-radius:18px;padding:16px}}.parent-feedback-page{min-height:100vh;justify-content:center;gap:18px;background:radial-gradient(circle at 84% 4%,rgba(186,230,253,.72),transparent 190px),radial-gradient(circle at 8% 94%,rgba(254,240,198,.72),transparent 210px),linear-gradient(180deg,#ecf7ff,#f8fbfd 52%,#fff8ea);padding:18px}.parent-feedback-page>*{width:min(760px,100%);justify-self:center}.parent-card{border:1px solid rgba(217,229,240,.92);border-radius:24px;background:#fffffff0;box-shadow:0 18px 44px #1e3a5f17;padding:22px}.parent-hero{position:relative;overflow:hidden;min-height:138px;background:radial-gradient(circle at 90% 12%,rgba(224,242,254,.86),transparent 108px),#fff}.parent-kicker,.parent-section-head span,.report-summary span{color:#0f5e9c;font-size:11px;font-weight:900;letter-spacing:.06em}.parent-hero h1,.lesson-select-panel h2,.report-content h2,.report-evaluation h2,.report-photos h2,.parent-contact-card h2{color:#102033;line-height:1.25}.parent-hero h1{font-size:27px;font-weight:900}.parent-hero p,.parent-contact-card p,.report-content p{color:#334155}.parent-search-panel form{grid-template-columns:1fr auto;align-items:end}.parent-search-panel input,.parent-search-panel button.primary{height:50px;border-radius:14px}.parent-search-panel input{border-color:#d9e5f0;background:#fbfdff}.parent-search-panel button.primary{min-width:104px;border-color:#0369a1;background:#0369a1;box-shadow:0 10px 22px #0369a12e}.student-match-list button,.parent-lesson-card{border-color:#e4ecf5;border-radius:16px;background:#fbfdff;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.student-match-list button:hover,.parent-lesson-card:hover{border-color:#bdd7f2;box-shadow:0 12px 28px #1e3a5f14;transform:translateY(-1px)}.parent-report-actions button{border-radius:14px;background:#ffffffdb}.report-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.report-summary div{border-radius:16px;background:#f8fafc;padding:13px 14px}.report-summary strong{color:#102033;font-weight:850}.report-content{gap:12px}.report-content p{font-size:16px;line-height:1.9}.report-evaluation{gap:16px}.parent-tags{gap:9px}.parent-tags span{border-radius:999px;background:#eff6ff;color:#1d4ed8;padding:8px 12px;font-size:13px;font-weight:850}.parent-tags span:nth-child(2n){background:#ecfeff;color:#0e7c86}.parent-tags span:nth-child(3n){background:#f0fdf4;color:#166534}.parent-tags span:nth-child(4n){background:#fff7ed;color:#b45309}.parent-photo-grid{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.parent-photo-grid figure{border-color:#e4ecf5;border-radius:16px;background:#fff;box-shadow:none}.parent-photo-grid img{aspect-ratio:4 / 3;background:#e0f2fe}.parent-photo-grid figcaption{color:#475569;font-weight:800}.parent-contact-card{border-radius:22px;background:linear-gradient(135deg,#fffffff5,#f8fbffe6)}.wechat-qr-image{width:104px;border-color:#cbd5e1;border-radius:16px}@media(max-width:820px){.teacher-shell{background:radial-gradient(circle at 86% 2%,rgba(186,230,253,.7),transparent 190px),radial-gradient(circle at 6% 92%,rgba(209,250,229,.54),transparent 220px),linear-gradient(180deg,#eaf6ff,#f7fafc 62%,#f0f8f6)}.lesson-rail{position:sticky;top:0;z-index:5;border-bottom-color:#d9e5f0e6;background:#ffffffc2;box-shadow:0 10px 28px #1e3a5f14;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.lesson-rail .rail-head{border-bottom:0;padding-bottom:0}.lesson-rail .rail-head strong{color:#102033;font-size:17px}.lesson-rail .rail-head span{color:#64748b;font-weight:700}.lesson-rail .rail-head button,.rail-dashboard-button{border-radius:14px}.teacher-dashboard{gap:18px;padding:18px}.teacher-dashboard-hero,.teacher-next-card,.teacher-dashboard-tabs-card{border-color:#d9e5f0f0;border-radius:22px;background:#fffffff2;box-shadow:0 16px 36px #1e3a5f1a}.teacher-dashboard-hero{position:relative;overflow:hidden;padding:22px;background:radial-gradient(circle at 92% 14%,rgba(224,242,254,.9),transparent 112px),#fff}.teacher-dashboard-hero h1{color:#102033;font-size:25px;font-weight:900;line-height:1.2}.teacher-dashboard-hero p,.teacher-next-card p,.teacher-work-card-main span,.teacher-work-card-main small,.teacher-agenda-row time,.teacher-agenda-row span{color:#64748b}.teacher-dashboard-hero button.primary{width:auto;min-width:132px;border-color:#0369a1;border-radius:14px;background:#0369a1;box-shadow:0 12px 22px #0369a12e}.teacher-stat-grid{gap:12px}.teacher-stat-card{min-height:80px;border-color:#d9e5f0f0;border-radius:18px;background:#fffffff0;box-shadow:0 10px 24px #1e3a5f0f;padding:13px 14px}.teacher-stat-card strong{color:#0f5e9c;font-size:24px}.teacher-stat-card span{color:#102033}.teacher-stat-card small{color:#64748b}.teacher-next-card{padding:18px}.teacher-next-card h2{color:#102033;font-size:19px;font-weight:850}.teacher-next-card button{border-color:#0369a1;border-radius:14px;background:#0369a1;color:#fff;font-weight:850}.teacher-dashboard-tabs-card{padding:14px}.teacher-dashboard-tabs{gap:6px;border-radius:16px;background:#eff6ff;padding:7px}.teacher-dashboard-tabs button{border-radius:13px;color:#64748b;padding:9px 12px}.teacher-dashboard-tabs button.active{color:#1d4ed8;box-shadow:0 10px 20px #1e3a5f1a}.teacher-tab-panel h2{color:#102033;font-size:18px;font-weight:850}.teacher-agenda-row,.teacher-work-card{border-color:#e4ecf5;border-radius:16px;background:#fbfdff;padding:13px 14px}.teacher-agenda-row strong,.teacher-work-card-main strong{color:#102033;font-weight:850}.teacher-agenda-row em,.teacher-missing-list em{border-radius:999px;padding:5px 9px;font-size:12px}.teacher-empty-mini{border-color:#d9e5f0;border-radius:16px;background:#f8fafcb8}.teacher-dashboard-notice{border-color:#fed7aa;border-radius:16px;background:#fff7ed;color:#9a3412}.parent-feedback-page{padding:16px 14px 18px}.parent-card{border-radius:22px;padding:18px}.parent-hero h1{font-size:25px}.parent-search-panel form{grid-template-columns:1fr}.report-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.parent-contact-card{grid-template-columns:1fr}.wechat-qr-image{justify-self:center}}.parent-photo-grid{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;padding:2px 4px 10px;margin:0 -4px;-webkit-overflow-scrolling:touch}.parent-photo-grid figure{flex:0 0 min(220px,72vw);scroll-snap-align:start;overflow:hidden;margin:0;border:1px solid #e4ecf5;border-radius:16px;background:#fff}.parent-photo-thumb{width:100%;display:block;border:0;border-radius:0;background:transparent;padding:0}.parent-photo-thumb img,.parent-photo-grid img{width:100%;aspect-ratio:4 / 3;display:block;object-fit:cover;background:#e0f2fe}.parent-photo-grid figcaption{padding:9px 11px;color:#475569;font-size:12px;font-weight:800}.parent-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;background:#0f172ac2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:16px}.parent-lightbox-panel{width:min(920px,100%);max-height:min(820px,calc(100vh - 32px));display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px}.parent-lightbox-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:#ffffff1f;color:#fff;padding:10px 12px}.parent-lightbox-panel header div{min-width:0;display:grid;gap:2px}.parent-lightbox-panel header strong{font-size:15px}.parent-lightbox-panel header span{color:#ffffffb8;font-size:12px}.parent-lightbox-panel header button{flex:0 0 auto;border-color:#ffffff4d;background:#ffffff29;color:#fff}.parent-lightbox-stage{position:relative;display:grid;place-items:center;min-height:0;border-radius:18px;background:#0f172ab3;overflow:hidden}.parent-lightbox-stage img{max-width:100%;max-height:calc(100vh - 132px);display:block;object-fit:contain}.lightbox-nav{position:absolute;top:50%;z-index:1;width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.34);border-radius:999px;background:#ffffff2e;color:#fff;font-size:30px;line-height:1;padding:0;transform:translateY(-50%)}.lightbox-nav.prev{left:12px}.lightbox-nav.next{right:12px}.batch-panel{display:flex;flex-direction:column;gap:12px}.batch-filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;padding:14px 16px;background:var(--surface-1, #f8f9fa);border:1px solid var(--border, #e5e7eb);border-radius:8px}.batch-filter-bar label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-2, #6b7280)}.batch-action-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 4px}.nowrap-cell{white-space:nowrap}.lesson-command-bar button.active{background:var(--accent, #2563eb);color:#fff}@media(max-width:820px){.parent-photo-grid figure{flex-basis:76vw}.parent-lightbox{padding:10px}.parent-lightbox-panel{max-height:calc(100vh - 20px)}.parent-lightbox-stage img{max-height:calc(100vh - 120px)}}.topbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px}.mobile-logout{display:none}.dashboard-lesson-title{display:flex;align-items:center;gap:4px}.teacher-contact-trigger{border:0;background:transparent;color:#245aa0;font-weight:800;padding:0;text-align:left;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.teacher-contact-trigger:hover{color:#12305f}.dashboard-lesson .dashboard-task-status{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}.dashboard-task-status>span{border:1px solid #dbe5f2;border-radius:999px;background:#f8fafc;padding:2px 7px;color:#68758a;font-size:11px;font-weight:700;line-height:1.5;white-space:nowrap}.dashboard-task-status>span.done{border-color:#bfe8cf;background:#edf8f1;color:#147a3d}.dashboard-task-status>span.warn{border-color:#fecaca;background:#fff1f2;color:#b42318}.teacher-contact-modal{gap:18px}.teacher-contact-phone{display:grid;gap:4px;border:1px solid #dbe5f2;border-radius:12px;background:#f8fbff;padding:18px}.teacher-contact-phone span{color:#68758a;font-size:12px}.teacher-contact-phone strong{color:#172033;font-size:26px;letter-spacing:.04em}.schedule-day-view{display:grid;gap:14px}.schedule-day-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;border:1px solid #dbe5f2;border-radius:12px;background:#f8fbff;padding:14px}.schedule-date-controls,.schedule-weekday-picker{display:flex;align-items:flex-end;gap:8px}.schedule-date-controls label{min-width:160px}.schedule-weekday-picker{flex-wrap:wrap;justify-content:flex-end}.schedule-weekday-picker button{padding:8px 10px}.schedule-weekday-picker button.active{border-color:#2f6fed;background:#2f6fed;color:#fff;font-weight:800}.schedule-summary-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.schedule-summary-cards article{display:flex;align-items:baseline;justify-content:space-between;gap:8px;border:1px solid #dbe5f2;border-radius:10px;background:#fff;padding:12px 14px}.schedule-summary-cards span{color:#68758a;font-size:13px;font-weight:700}.schedule-summary-cards strong{color:#172033;font-size:24px}.settlement-block-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.settlement-block-head>div{display:grid;gap:3px}.settlement-block-head span{color:#68758a;font-size:12px}.settlement-backfill-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;padding:12px 14px}.settlement-backfill-bar .inline-choice{display:flex;grid-template-columns:none;flex-direction:row;align-items:center;gap:6px;min-height:42px}.settlement-backfill-bar .inline-choice input,.settlement-block input[type=checkbox]{width:auto}.settlement-fee-input{width:150px}@media(max-width:820px){.mobile-logout{display:inline-flex}.topbar{align-items:flex-start;flex-wrap:wrap;gap:8px}.topbar-actions{flex-wrap:wrap}.dashboard-lesson-title{flex-wrap:wrap;white-space:normal}.schedule-day-toolbar,.schedule-date-controls,.settlement-block-head{align-items:stretch;flex-direction:column}.schedule-date-controls button,.schedule-date-controls label,.settlement-backfill-bar>*{width:100%}.schedule-weekday-picker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.schedule-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.settlement-backfill-bar{align-items:stretch;flex-direction:column}.settlement-backfill-bar .inline-choice{min-height:auto}}
