body{margin:0;background:#eef3f7;color:#17202a;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}.material-sort-handle{display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;padding:0;border:0;background:transparent;color:#98a2b3;cursor:grab}.material-sort-handle:active{cursor:grabbing}.lesson-pack-versions{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.lesson-pack-actions{display:flex;flex-direction:column;gap:8px}.app-shell{min-height:100vh;background:linear-gradient(180deg,#ffffffb8,#fff0 280px),#eef3f7}.app-shell>.ant-layout,.app-content,.page-stack,.list-panel{min-width:0}.app-sider{position:sticky;top:0;height:100vh;overflow:hidden;border-right:1px solid rgba(255,255,255,.08);background:#12202b!important;box-shadow:18px 0 40px #1523301f}.app-sider .ant-layout-sider-children{height:100%;min-height:0;display:flex;flex-direction:column}.app-sider .ant-menu{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:8px 10px calc(28px + env(safe-area-inset-bottom));background:transparent;border-inline-end:0!important}.app-sider .ant-menu::-webkit-scrollbar{width:6px}.app-sider .ant-menu::-webkit-scrollbar-thumb{border-radius:999px;background:#ffffff2e}.app-sider .ant-menu-item,.app-sider .ant-menu-submenu-title{height:40px!important;line-height:40px!important;margin:4px 0!important;border-radius:8px;color:#ffffffc2}.app-sider .ant-menu-item a{color:inherit}.app-sider .ant-menu-submenu-title:hover,.app-sider .ant-menu-item:hover,.app-sider .ant-menu-item-active,.app-sider .ant-menu-submenu-active>.ant-menu-submenu-title{color:#fff!important;background:#203341!important;box-shadow:inset 0 0 0 1px #ffffff14}.app-sider .ant-menu-submenu-selected>.ant-menu-submenu-title{color:#08c78c!important}.app-sider .ant-menu-item-selected,.app-sider .ant-menu-item-selected:hover,.app-sider .ant-menu-item-selected.ant-menu-item-active{color:#fff!important;background:#07c160!important;box-shadow:0 12px 24px #07c16038}.app-sider .ant-menu-item-selected a{color:#fff!important}.app-sider .ant-menu-submenu-arrow,.app-sider .ant-menu-item-icon,.app-sider .ant-menu-submenu-title .anticon{color:inherit!important}.brand{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:24px 20px 18px;color:#fff}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border-radius:8px;background:linear-gradient(135deg,#13a987,#2f80ed);box-shadow:0 14px 30px #0f8f7252;font-weight:800}.brand strong{display:block;font-size:19px;line-height:1.2}.brand span{display:block;margin-top:3px;color:#ffffff94;font-size:12px}.app-header{display:flex;align-items:center;justify-content:space-between;min-height:76px;background:#ffffffe0;border-bottom:1px solid rgba(216,226,235,.9);padding:0 28px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.header-title-group{display:grid;gap:4px}.header-title-group .ant-typography{margin:0}.app-header-title{color:#111827e0;font-size:20px;font-weight:700;line-height:1.35}.header-eyebrow{color:#667085;font-size:12px;font-weight:700}.question-dialog .ant-modal-body{max-height:calc(100vh - 240px);overflow-y:auto;padding-right:4px}.user-pill{min-width:166px;display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid #dfe7ee;border-radius:8px;background:#fff;box-shadow:0 8px 20px #0f172a0d}.account-trigger{color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.account-trigger:hover,.account-trigger:focus-visible{background:#f8fbfd;border-color:#cfdbe6;box-shadow:0 10px 24px #0f172a14}.account-trigger:focus-visible{outline:2px solid rgba(7,193,96,.32);outline-offset:2px}.account-chevron{margin-left:auto;color:#98a2b3;font-size:12px}.user-avatar{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;color:#07c160;background:#e9f8ef}.user-pill strong,.user-pill span{display:block;line-height:1.2}.user-pill strong{font-size:13px}.user-pill div>span{margin-top:3px;color:#667085;font-size:12px}.app-content{padding:28px}.page-stack{display:grid;gap:20px}.teachers-page,.admin-staff-page{grid-template-columns:minmax(0,1fr)}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:4px 2px 2px}.page-heading .ant-typography{margin-top:0}.page-heading h3.ant-typography{margin-bottom:6px;color:#152331;font-size:26px;letter-spacing:0}.page-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.grade-catalog-page{max-width:1480px}.grade-catalog-heading{align-items:center;margin-bottom:20px}.grade-catalog-heading h2{margin:0;color:#17202a;font-size:27px;font-weight:700;letter-spacing:-.02em}.grade-catalog-heading p{margin:10px 0 0;color:#66727e;font-size:14px}.grade-group+.grade-group{margin-top:28px}.grade-group-heading{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.grade-group-heading h3{margin:0;color:#25303b;font-size:18px;font-weight:700}.grade-group-heading span{color:#7d8791;font-size:13px}.grade-overview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.grade-overview-card{position:relative;min-height:142px;padding:24px;overflow:hidden;border:1px solid #dfe7ed;border-radius:12px;background:#fff;color:#25303b;text-align:left;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.grade-overview-card:hover,.grade-overview-card:focus-visible{border-color:#28a77b;outline:none;box-shadow:0 10px 24px #205c481c;transform:translateY(-1px)}.grade-card-code{display:inline-flex;margin-bottom:10px;padding:2px 7px;border-radius:4px;background:#e8f6f0;color:#087a58;font-size:12px;font-weight:700}.grade-overview-card strong,.grade-card-summary,.grade-card-status{display:block}.grade-overview-card strong{font-size:20px;line-height:1.25}.grade-card-summary{margin-top:8px;color:#66727e;font-size:13px}.grade-card-status{display:flex;gap:10px;margin-top:18px;color:#66727e;font-size:12px}.grade-card-ready{color:#198754}.grade-card-warning{color:#b26b00}.grade-card-arrow{position:absolute;right:18px;bottom:20px;color:#8f9aa4;font-size:14px}.grade-breadcrumb{display:flex;align-items:center;gap:6px;margin:-8px 0 8px;color:#7d8791;font-size:13px}.grade-breadcrumb .ant-btn{padding-left:0}.course-cover-empty{display:inline-flex;align-items:center;gap:5px;color:#7d8791;font-size:13px}.subject-summary-text{max-width:460px;margin-top:4px;overflow:hidden;color:#7d8791;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.grade-subject-table-card{overflow:hidden}.student-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.student-stat-card-active{border-color:#16a34a;box-shadow:0 0 0 2px #16a34a1f}.list-panel{display:grid;gap:16px}.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px;border:1px solid #e3eaf0;border-radius:8px;background:#ffffffd1;box-shadow:0 12px 30px #0f172a0d}.list-toolbar>.ant-space,.list-toolbar>div{min-width:0}.package-filter-bar,.course-filter-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.package-filter-bar{margin-bottom:16px}.course-filter-bar{width:100%}.course-filter-search-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;width:100%;margin-bottom:4px}.course-filter-search{width:260px;max-width:calc(100% - 48px)}.course-filter-reset{margin-left:auto}.course-filter-bar .resource-filter-row{margin-bottom:0}.package-filter-bar .ant-select{flex:1;min-width:140px}.view-toggle{padding:3px;border:1px solid #dfe7ee;border-radius:8px;background:#fff}.view-toggle .ant-segmented{background:transparent}.view-toggle .ant-segmented-item-selected{color:#07c160;font-weight:800;box-shadow:0 8px 18px #0f172a14}.card-list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.info-card{height:100%;display:grid;gap:14px;align-content:start;padding:18px;border:1px solid #e3eaf0;border-radius:8px;background:#fff;box-shadow:0 14px 34px #0f172a0f;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.info-card:hover{transform:translateY(-2px);border-color:#cbd7e2;box-shadow:0 20px 44px #0f172a1a}.info-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.info-card-title-group{min-width:0;display:grid;gap:4px}.info-card-title{font-size:16px;font-weight:700;line-height:1.35;color:#17202a;word-break:break-word}.info-card-subtitle{font-size:13px;line-height:1.45;word-break:break-word}.info-card-status{flex:0 0 auto;display:flex;justify-content:flex-end}.info-card-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}.info-card-field{min-width:0;display:grid;gap:4px;font-size:13px;line-height:1.45;word-break:break-word}.info-card-field-full{grid-column:1 / -1}.banner-thumb{width:120px;height:56px;object-fit:cover;border-radius:6px;border:1px solid #e1e7f0;background:#f5f7fb}.banner-upload-preview{width:100%;height:100%;object-fit:cover}.info-card-tags{min-width:0}.tag-ellipsis{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}.tag-ellipsis-more{cursor:default}.info-card-actions{padding-top:12px;border-top:1px solid #edf0f5}.permissions-view{width:100%;min-width:0}.permissions-page,.permissions-page .ant-card,.permissions-page .ant-card-body,.permissions-page .ant-tabs,.permissions-page .ant-tabs-content,.permissions-page .ant-tabs-tabpane,.permissions-view .ant-space-item{min-width:0}.permissions-page .ant-table-wrapper{max-width:100%;overflow-x:auto}.permissions-search{width:min(360px,100%)}.permissions-card-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));align-items:start}.permission-card{gap:16px}.permission-card .info-card-fields{gap:14px 16px}.permission-card .info-card-field{align-content:start}.permission-open-groups{display:grid;gap:12px;padding-top:12px;border-top:1px solid #edf0f5}.permission-open-group{min-width:0;display:grid;gap:6px}.permission-tag-group,.permission-tag-group .ant-space-item{min-width:0;max-width:100%}.permission-tag-group .ant-tag{max-width:100%;height:auto;margin-inline-end:0;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.45}@media (max-width: 1180px){.permission-card .info-card-fields{grid-template-columns:1fr}}@media (max-width: 720px){.permissions-card-grid{grid-template-columns:1fr}.permissions-search{width:100%}}.action-button{min-width:32px;min-height:32px;border-color:#dbe5ed;background:#fff;font-weight:700}.action-button-icon{display:inline-grid;place-items:center;padding-inline:0}.action-button:hover{border-color:#07c160!important;color:#07c160!important;background:#f2fbf7!important}.action-button.ant-btn-dangerous:hover{border-color:#ff4d4f!important;color:#ff4d4f!important;background:#fff1f0!important}.preview-result{margin-top:16px;padding:14px;border:1px solid #dfe7ee;border-radius:8px;background:#f8fafc}.rich-text-preview{max-width:360px;color:#344054;font-size:13px;line-height:1.55;word-break:break-word}.rich-text-preview p,.rich-text-preview ul,.rich-text-preview ol{margin:0 0 6px}.rich-text-preview ul,.rich-text-preview ol{padding-left:18px}.rich-text-preview img{display:block;max-width:180px;max-height:120px;margin-top:6px;border-radius:6px;object-fit:contain}.schedule-grid{display:grid;grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:18px;align-items:start}.schedule-panel{min-width:0}.schedule-slot-list{display:grid;gap:10px;margin-bottom:16px}.schedule-slot-row{display:grid;grid-template-columns:108px 1fr 1fr auto;gap:8px;align-items:start}.schedule-slot-row .ant-form-item{margin-bottom:0}.schedule-candidate-form{row-gap:10px}.schedule-candidates{margin-top:16px}.schedule-workbench{display:grid;gap:14px}.schedule-candidate-card{display:grid;gap:6px;padding:12px 14px;border:1px solid #e6ebf2;border-radius:10px;background:#fbfdfb}.schedule-candidate-card.is-selected{border-color:#07c160;box-shadow:0 0 0 2px #07c1601f}.schedule-candidate-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.schedule-candidate-meta{color:#475569;font-size:13px}.schedule-candidate-card .ant-btn{justify-self:start;margin-top:4px}.schedule-coordination-list{display:grid;gap:12px}.schedule-coordination-item{display:grid;gap:8px;padding:12px 14px;border:1px solid #ffe0b2;border-radius:10px;background:#fff9f0}.schedule-coordination-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.schedule-coordination-body{display:grid;gap:8px;color:#475569;font-size:13px}.schedule-coordination-missing{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.schedule-filterbar{display:grid;grid-template-columns:180px minmax(220px,1fr) 120px 120px auto;gap:10px}.schedule-filterbar.compact{grid-template-columns:140px}.schedule-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:#5f6b7a;font-size:13px}.schedule-result-note{min-height:22px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px}.schedule-legend span{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.legend-available,.legend-available-teacher{background:#8fd3a6}.legend-available-student{background:#6fb3f2}.legend-candidate{background:#f5b84b}.legend-confirmed{background:#07c160}.legend-canceled{background:#9ca3af}.schedule-outlook-shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start}.schedule-outlook-shell.is-collapsed{grid-template-columns:34px minmax(0,1fr)}.schedule-outlook-sidebar{display:grid;gap:12px;position:sticky;top:76px}.schedule-outlook-sidebar[hidden]{display:none}.schedule-sidebar-collapse{display:flex;justify-content:flex-end;margin-bottom:-4px}.schedule-sidebar-rail{position:sticky;top:76px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;border:1px solid #e4e9f1;border-radius:8px;background:#fff;color:#64748b;cursor:pointer;font:inherit;font-size:13px}.schedule-sidebar-rail:hover{border-color:#07c160;color:#07c160}.schedule-sidebar-rail>span{writing-mode:vertical-rl;letter-spacing:2px}.schedule-sidebar-rail .anticon{font-size:11px}.schedule-sidebar-rail em{min-width:18px;padding:0 5px;border-radius:9px;background:#07c160;color:#fff;font-size:11px;font-style:normal;line-height:18px}.schedule-sidebar-section{border:1px solid #e4e9f1;border-radius:8px;background:#fff;padding:12px}.schedule-sidebar-head{min-height:28px;display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.schedule-sidebar-head strong{color:#111827;font-size:14px}.schedule-sidebar-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:0;border:0;background:none;cursor:pointer;font:inherit;text-align:left;color:#111827}.schedule-sidebar-toggle .anticon{color:#94a3b8;font-size:11px;transform:rotate(-90deg);transition:transform .15s ease}.schedule-sidebar-toggle.is-open .anticon{transform:rotate(0)}.schedule-sidebar-toggle em{color:#94a3b8;font-size:12px;font-style:normal}.schedule-mini-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.schedule-mini-week,.schedule-mini-day{height:28px;display:grid;place-items:center;font-size:12px}.schedule-mini-week{color:#64748b;font-weight:700}.schedule-mini-day{border:0;border-radius:6px;background:transparent;color:#334155;cursor:pointer;font:inherit}.schedule-mini-day:hover{background:#eef6ff;color:#1d4ed8}.schedule-mini-day.is-outside{color:#cbd5e1}.schedule-mini-day.is-week-selected{background:#e8f2ff;color:#1d4ed8}.schedule-mini-day.is-today{box-shadow:inset 0 0 0 1px #2563eb;font-weight:700}.schedule-mini-day.is-day-selected{background:#2563eb;color:#fff;font-weight:700}.schedule-mini-day.has-classes{position:relative}.schedule-mini-day.has-classes:after{content:"";position:absolute;bottom:3px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:#2563eb}.schedule-mini-day.has-classes.is-day-selected:after{background:#fff}.schedule-day-empty-bar{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px;padding:8px 12px;border:1px solid #e1e7f0;border-radius:8px;background:#f8fafc;color:#64748b;font-size:13px}.schedule-subject-list,.schedule-sidebar-filters{display:grid;gap:8px}.schedule-subject-toggle{width:100%;min-height:32px;display:flex;align-items:center;gap:8px;border:1px solid #e5eaf2;border-radius:7px;background:#fff;color:#1f2937;cursor:pointer;font:inherit;text-align:left;padding:6px 8px}.schedule-subject-toggle i{width:12px;height:12px;border-radius:50%;background:var(--subject-color);flex:0 0 auto}.schedule-subject-toggle span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-subject-toggle:hover{border-color:var(--subject-color);background:#f8fafc}.schedule-subject-toggle.is-muted{color:#94a3b8;background:#f8fafc}.schedule-subject-toggle.is-muted i{opacity:.35}.schedule-outlook-main{min-width:0;display:grid;gap:12px}.schedule-timeline-wrap{display:grid;gap:12px}.schedule-timeline-toolbar{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #e4e9f1;border-radius:8px;background:#fff;padding:10px 12px}.schedule-timeline-toolbar .ant-typography{margin:0}.schedule-timeline-toolbar>div:last-child{min-width:0;text-align:right}.schedule-timeline-scroll{overflow:auto;max-height:calc(100vh - 260px);min-height:420px;border:1px solid #e1e7f0;border-radius:8px;background:#fff}.schedule-timeline-grid{--day-count: 7;min-width:calc(64px + var(--day-count) * 128px);display:grid;grid-template-columns:64px repeat(var(--day-count),minmax(128px,1fr));grid-template-rows:74px var(--timeline-height)}.schedule-timeline-grid.is-resource{min-width:calc(64px + var(--lane-count) * 190px);grid-template-columns:64px repeat(var(--lane-count),minmax(190px,1fr))}.schedule-day-head-spacer,.schedule-day-head{position:sticky;top:0;z-index:8;border-bottom:1px solid #e1e7f0;background:#fff}.schedule-day-head{display:grid;align-content:center;gap:2px;padding:10px 12px;border-left:1px solid #e9edf4}.schedule-day-head strong{color:#2563eb;font-size:24px;line-height:1}.schedule-day-head span{color:#334155;font-size:13px;font-weight:700}.schedule-day-head small{color:#64748b;font-size:12px}.schedule-lane-head strong{color:#0f172a;font-size:15px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-lane-head span{color:#64748b;font-size:12px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-time-gutter{background:#fbfcff}.schedule-time-axis{position:relative;border-right:1px solid #e1e7f0}.schedule-time-label{position:absolute;right:10px;transform:translateY(-9px);color:#64748b;font-size:12px;line-height:18px}.schedule-day-column{position:relative;border-left:1px solid #e9edf4;background:#fff}.schedule-day-column:hover{background:#fcfdff}.schedule-time-line{position:absolute;left:0;right:0;height:1px;background:#edf1f6}.schedule-time-line:nth-child(2n){background:#f5f7fb}.schedule-day-empty-slot{position:absolute;top:16px;left:10px;right:10px;height:34px;border:1px dashed #cbd5e1;border-radius:7px;background:#fff;color:#94a3b8;cursor:pointer;font:inherit;font-size:13px}.schedule-day-empty-slot:hover{border-color:#2563eb;color:#1d4ed8;background:#eff6ff}.schedule-timeline-block{position:absolute;z-index:2;overflow:hidden;border:1px solid var(--subject-border);border-left:5px solid var(--subject-accent);border-radius:6px;background:var(--subject-bg);color:var(--subject-text);padding:0;text-align:left;font:inherit;box-shadow:0 1px 2px #0f172a0d;container-type:size}.schedule-timeline-body{display:grid;align-content:start;gap:2px;height:100%;padding:7px 8px}@container (max-width: 150px){.schedule-timeline-block small{display:none}}@container (max-width: 118px){.schedule-timeline-block .schedule-timeline-tags{display:none}}@container (max-width: 92px){.schedule-timeline-block .schedule-timeline-subtitle{display:none}.schedule-timeline-body{padding:5px 4px}}@container (max-width: 64px){.schedule-timeline-block .schedule-timeline-time{display:none}.schedule-timeline-block strong{font-size:12px}}@container (max-height: 116px){.schedule-timeline-block .schedule-timeline-subtitle{display:none}}@container (max-height: 92px){.schedule-timeline-block .schedule-timeline-tags{display:none}}@container (max-height: 62px){.schedule-timeline-block small{display:none}}@container (max-height: 42px){.schedule-timeline-block .schedule-timeline-time{display:none}.schedule-timeline-body{padding:3px 8px}.schedule-timeline-block strong{font-size:12px}}button.schedule-timeline-block{cursor:pointer}button.schedule-timeline-block:hover{z-index:4;border-color:var(--subject-accent);box-shadow:0 8px 18px #0f172a1f}.schedule-timeline-block strong,.schedule-timeline-block .schedule-timeline-subtitle,.schedule-timeline-block small,.schedule-timeline-time{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-timeline-time{font-size:12px;font-weight:800}.schedule-timeline-block strong{font-size:13px;line-height:1.25}.schedule-timeline-block .schedule-timeline-subtitle{font-size:12px;line-height:1.25}.schedule-timeline-block small{color:#1e293bb8;font-size:12px;line-height:1.25}.schedule-timeline-tags{display:flex;align-items:center;gap:3px;flex-wrap:wrap;min-height:18px}.schedule-timeline-tags .ant-tag{margin-inline-end:0;font-size:11px;line-height:16px}.schedule-timeline-block.is-availability{z-index:1;border-style:dashed;pointer-events:none;background:color-mix(in srgb,var(--subject-bg) 62%,#fff);border-color:color-mix(in srgb,var(--subject-border) 62%,#fff);border-left-color:color-mix(in srgb,var(--subject-accent) 62%,#fff);color:color-mix(in srgb,var(--subject-text) 82%,#fff);overflow:visible;container-type:normal}.schedule-availability-label{position:sticky;top:78px;z-index:1;display:grid;gap:1px;width:fit-content;max-width:calc(100% - 8px);margin:3px 4px;padding:2px 7px;border-radius:6px;background:#ffffffdb}.schedule-availability-headline{display:flex;align-items:baseline;gap:5px;min-width:0}.schedule-availability-label strong,.schedule-availability-label small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-availability-label small{color:inherit;opacity:.78}.schedule-timeline-block.is-overflow{border-color:#cbd5e1;border-left-color:#94a3b8;background:#f8fafc;color:#475569;cursor:pointer}.schedule-timeline-block.is-overflow .schedule-timeline-body{align-content:center;justify-items:center}.schedule-timeline-block.is-overflow strong{font-size:13px;font-weight:800}.schedule-timeline-block.is-overflow:hover{border-color:#94a3b8;background:#f1f5f9}.schedule-overflow-list{display:grid;gap:4px;max-width:260px;max-height:320px;overflow-y:auto}.schedule-overflow-entry{display:grid;gap:2px;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;text-align:left;font:inherit;cursor:pointer}.schedule-overflow-entry:hover{border-color:#93c5fd;background:#eff6ff}.schedule-overflow-entry strong{font-size:13px}.schedule-overflow-entry span,.schedule-overflow-entry small{color:#1e293bb8;font-size:12px}.schedule-timeline-block.is-selected{box-shadow:inset 0 0 0 1px var(--subject-accent),0 8px 18px #0f172a1f}.schedule-timeline-block.is-canceled{border-color:#cbd5e1;border-left-color:#94a3b8;background:#f1f5f9;color:#64748b;text-decoration:line-through}.schedule-timeline-block.is-ghost{z-index:1;padding:0;border:1px solid #d3dae4;border-left:1px solid #d3dae4;border-radius:3px;box-shadow:none;text-decoration:none;background:repeating-linear-gradient(45deg,#eef2f7,#eef2f7 3px,#dde4ee 3px,#dde4ee 6px)}.week-board{display:grid;grid-template-columns:repeat(7,minmax(156px,1fr));gap:10px;overflow-x:auto;padding-bottom:4px}.week-board-wrap{display:grid;gap:12px}.week-day{min-width:156px;border:1px solid #e6ebf2;border-radius:8px;background:#fbfcff;overflow:hidden}.week-day-header{min-height:48px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid #e6ebf2;background:#fff}.week-day-header strong{font-size:15px}.week-day-header span{color:#6b7280;font-size:12px;white-space:nowrap}.week-day-body{min-height:220px;padding:10px;display:grid;align-content:start;gap:8px}.week-day-empty{min-height:120px;display:grid;place-items:center;color:#9ca3af;font-size:13px}.week-day-create{width:100%;border:1px dashed #cbd5e1;border-radius:8px;background:#fff;cursor:pointer;font:inherit}.week-day-create:hover{border-color:#07c160;color:#047857;background:#f0fdf4}.week-day-add{width:100%;height:36px;border:1px dashed #cbd5e1;border-radius:8px;background:#fff;color:#64748b;cursor:pointer;font:inherit}.week-day-add:hover{border-color:#07c160;color:#047857;background:#f0fdf4}.schedule-block{width:100%;min-height:104px;display:grid;gap:5px;align-content:start;padding:10px;border:1px solid #dfe7f3;border-radius:8px;background:#fff;color:#1f2937;text-align:left;font:inherit}button.schedule-block{cursor:pointer}button.schedule-block:hover{border-color:#07c160;box-shadow:0 8px 20px #07c1601f}.schedule-block-time{color:#334155;font-size:12px;font-weight:700}.schedule-block-title{min-width:0;font-size:14px;font-weight:700;line-height:1.35;word-break:break-word}.schedule-block-course{min-width:0;color:#334155;font-size:12px;line-height:1.4;word-break:break-word}.schedule-block-meta,.schedule-block-students{min-width:0;color:#64748b;font-size:12px;line-height:1.4;word-break:break-word}.schedule-block-students{color:#1f2937}.schedule-block-students strong{color:#475569;font-weight:700}.schedule-block-tags{display:flex;flex-wrap:wrap;gap:4px;min-height:22px}.schedule-block-tags .ant-tag{margin-inline-end:0}.schedule-block-available{min-height:78px;border-color:#b8e7c6;background:#f0fbf4}.schedule-block-available.availability-student{border-color:#b9d8fb;background:#eef6ff}.schedule-block-candidate{border-color:#f3cf82;background:#fff8e8}.schedule-block-candidate.candidate-full{border-color:#9bd7ac;background:#f1fbf4}.schedule-block-candidate.candidate-ready{border-color:#a9dfbd;background:#f1fbf4}.schedule-block-candidate.candidate-short{border-color:#e5e7eb;background:#f5f6f8;color:#6b7280}.schedule-block-candidate.is-selected{border-color:#d89216;box-shadow:inset 0 0 0 1px #d89216}.schedule-block-class{border-color:#a9dfbd;background:#f1fbf4}.schedule-block-class.is-canceled{border-color:#d1d5db;background:#f3f4f6;color:#6b7280}.schedule-empty-tips{display:grid;gap:12px;padding:18px;border:1px solid #e8ecf3;border-radius:8px;background:#fbfcff}.schedule-empty-tips.compact{padding:12px}.schedule-action-summary{display:grid;gap:8px;padding:14px;border:1px solid #e6ebf2;border-radius:8px;background:#f8fafc}.schedule-action-summary .ant-typography{margin:0}.month-calendar-scroll{overflow:auto;max-height:calc(100vh - 260px);min-height:420px;border:1px solid #e1e7f0;border-radius:6px}.month-weekdays{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));min-width:980px;position:sticky;top:0;z-index:8;background:#f5f8fc;border-bottom:1px solid #e1e7f0}.month-weekdays strong{text-align:center;padding:9px 4px;font-size:13px;font-weight:500;border-right:1px solid #e1e7f0}.month-board{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));min-width:980px;gap:0}.month-day{min-width:0;min-height:170px;background:#fff;border-right:1px solid #e1e7f0;border-bottom:1px solid #e1e7f0;position:relative}.month-day.is-weekend{background:#f7f9fd}.month-day.is-outside .month-date-number{color:#94a3b8}.month-day.is-selected-date{box-shadow:inset 0 0 0 1px #91caff}.month-day-head{padding:5px 8px;display:flex;align-items:center;justify-content:space-between;min-height:36px}.month-date-number{border:0;background:transparent;color:#1e293b;width:28px;height:28px;border-radius:50%;font-size:15px;font-weight:600;cursor:pointer}.month-date-number:hover{background:#e6f4ff}.month-date-number.is-today{color:#fff;background:#1677ff}.month-day-body{display:grid;align-content:start;gap:5px;padding:0 7px 8px}.month-class{display:grid;gap:2px;width:100%;min-width:0;padding:6px 7px;border:1px solid transparent;border-left:3px solid var(--subject-color, #94a3b8);border-radius:5px;background:var(--subject-bg, #f8fafc);color:#1f2937;text-align:left;cursor:pointer;font-size:12px;line-height:1.45}.month-class:hover,.month-class:focus-visible{border-color:var(--subject-color, #94a3b8);outline:none}.month-class.is-selected{border-color:#1677ff;box-shadow:0 0 0 1px #1677ff}.month-class-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;min-width:0}.month-class-time{color:#182c48;font-size:12px;font-weight:650;font-variant-numeric:tabular-nums;flex:0 0 auto}.month-class-teacher{color:#54657c;text-align:right;overflow-wrap:anywhere;min-width:0}.month-class-subject{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-width:0}.month-course-name{font-size:11px;border:1px solid #94a3b855;padding:0 3px;border-radius:3px;overflow-wrap:anywhere}.month-class-text{min-width:0;white-space:normal;overflow-wrap:anywhere}.month-class-footer{display:flex;align-items:center;justify-content:space-between;gap:4px;color:#64748b;font-size:11px}.month-class-status.is-pending{color:#9c6500;background:#fff3cf;border-radius:3px;padding:0 3px}.month-class-status.is-rejected{color:#b42318;background:#fff1f0;border-radius:3px;padding:0 3px}.month-class-more{border:0;padding:0 3px;min-width:22px;min-height:22px;background:transparent;color:#405778;cursor:pointer;font-weight:700;border-radius:3px}.month-class-more:hover{background:#fffa}.month-class.is-canceled{border-left-color:#94a3b8;background:#f0f2f5;color:#6b7280}.month-class.is-canceled .month-class-time{text-decoration:line-through;color:#64748b}.month-day.is-drop-target{box-shadow:inset 0 0 0 2px #1677ff;background:#e6f4ff}.month-drop-hint{pointer-events:none;position:sticky;bottom:0;padding:6px;font-size:12px;color:#1668dc;background:#e6f4ff}.page-loading{min-height:100vh;display:grid;place-items:center;color:#4b5563}.dashboard-hero{min-height:148px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px;border:1px solid #dfe7ee;border-radius:8px;background:linear-gradient(135deg,#0f8f721f,#2563eb14),#fff;box-shadow:0 20px 50px #0f172a14}.dashboard-hero h2.ant-typography{max-width:780px;margin:10px 0 6px;color:#132333;font-size:30px;line-height:1.18}.metric-card{height:100%;border:0;box-shadow:0 14px 34px #0f172a12}.metric-card .ant-statistic-title{color:#667085;font-size:13px;font-weight:700}.metric-card .ant-statistic-content{color:#132333;font-size:32px;font-weight:800}.metric-card span{display:block;margin-top:8px;color:#667085;font-size:13px}.metric-green{background:linear-gradient(180deg,#fff,#eefbf6)}.metric-blue{background:linear-gradient(180deg,#fff,#eef6ff)}.metric-amber{background:linear-gradient(180deg,#fff,#fff7e8)}.metric-purple{background:linear-gradient(180deg,#fff,#f6f2ff)}.todo-list{display:grid;gap:12px}.todo-item{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:12px;min-height:82px;padding:14px;border:1px solid #e3eaf0;border-radius:8px;background:#fbfdff;color:inherit;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.todo-item:hover{transform:translate(2px);border-color:#b8c8d8;box-shadow:0 14px 30px #0f172a14;color:inherit}.todo-item strong,.todo-item span{display:block}.todo-item strong{margin-bottom:4px;color:#17202a}.todo-item div>span{color:#667085;font-size:13px}.todo-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:8px;color:#07c160;background:#e9f8ef}.todo-item.high .todo-icon{color:#1683f3;background:#eaf2ff}.todo-item.warning .todo-icon{color:#d97706;background:#fff4df}.health-panel{display:grid;grid-template-columns:136px 1fr;align-items:center;gap:12px}.health-panel h5.ant-typography{margin:0 0 6px}.process-list{display:grid;gap:10px;margin-top:18px}.process-list div{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;background:#f7fafc;color:#344054}.readiness-summary{display:grid;gap:8px;margin-bottom:14px}.readiness-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.readiness-item{display:grid;grid-template-columns:28px 1fr;gap:10px;padding:12px;border:1px solid #e2e8f0;border-radius:8px;background:#fff}.readiness-item.ready{border-color:#bbf7d0}.readiness-item.warning{border-color:#fde68a}.readiness-item.missing{border-color:#fecaca}.readiness-icon{color:#64748b;font-size:18px;padding-top:2px}.readiness-item.ready .readiness-icon{color:#16a34a}.readiness-item.warning .readiness-icon{color:#d97706}.readiness-item.missing .readiness-icon{color:#dc2626}.readiness-item>div{display:grid;gap:6px}.readiness-action{display:block;color:#334155}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px;background:linear-gradient(180deg,#07c16014,#07c16000 42%),#f6f8f7}.login-shell{width:min(980px,100%);min-height:560px;display:grid;grid-template-columns:minmax(360px,430px) minmax(0,1fr);overflow:hidden;border:1px solid #e5ebe7;border-radius:8px;background:#fff;box-shadow:0 18px 50px #11182714}.login-panel{display:grid;align-content:center;gap:24px;padding:44px;background:#fff}.login-brand{display:flex;align-items:center;gap:14px}.login-logo{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;color:#fff;background:#07c160;box-shadow:0 14px 28px #07c16038;font-size:21px;font-weight:800}.login-brand h3.ant-typography{margin:0 0 4px}.login-form .ant-form-item-label>label{color:#344054;font-weight:700}.login-demo{display:grid;gap:10px;padding:14px;border:1px solid #e3eaf0;border-radius:8px;background:#f8fafc}.login-hero{position:relative;display:grid;align-content:center;gap:22px;padding:56px;border-left:1px solid #e5ebe7;background:#f2fbf6;color:#1f2329}.login-hero .ant-typography,.login-hero h1.ant-typography{color:#1f2329}.login-hero h1.ant-typography{max-width:420px;margin:12px 0 10px;font-size:36px;line-height:1.18}.login-hero .ant-typography-secondary,.login-hero .ant-typography{color:#59636e}.login-kicker{width:fit-content;display:inline-flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #b9ebce;border-radius:8px;background:#e9f8ef;color:#058f49;font-weight:700}.login-feature-grid{display:grid;grid-template-columns:1fr;gap:10px;margin-top:22px}.login-feature{display:flex;align-items:center;gap:9px;padding:11px 12px;border:1px solid #d9efe2;border-radius:8px;background:#fff;color:#2f3a45}.login-feature .anticon{color:#07c160}.ant-card{border-color:#e3eaf0;box-shadow:0 14px 34px #0f172a0f}.ant-card-head{min-height:54px;border-bottom-color:#edf2f7}.ant-card-head-title{color:#17202a;font-weight:800}.ant-table-wrapper .ant-table{border-radius:8px;overflow:hidden}.ant-table-thead>tr>th{font-size:13px;font-weight:800}.ant-table-tbody>tr>td{border-bottom-color:#eef2f6}.student-table .ant-table-cell{overflow-wrap:anywhere}.student-table-scroll{width:100%;max-width:100%;min-width:0;overflow-x:auto}.student-table .student-name{display:inline-block;min-width:96px;overflow:visible;white-space:normal}.student-table .ant-tag{margin-inline-end:0;white-space:nowrap}.student-detail-drawer .ant-drawer-header{padding:18px 24px;border-bottom-color:#e8eef3}.student-detail-drawer .ant-drawer-body{padding:20px 24px 0}.student-drawer-title{display:flex;align-items:center;gap:10px;min-width:0;padding-right:12px}.student-drawer-title-name{flex:0 0 auto;color:#152331;font-size:18px;font-weight:700}.student-drawer-title .ant-space{min-width:0}.student-opening-period{box-sizing:border-box;width:100%;margin-top:4px;padding:14px 16px 16px;border:1px solid #e3eaf0;border-radius:8px;background:#f8fafc}.student-opening-panel{display:grid;gap:20px;width:100%}.student-opening-period-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.student-opening-field{display:grid;gap:5px;min-width:0}.student-opening-field .ant-input{width:100%;min-height:36px;background:#fff}.student-opening-actions{position:sticky;bottom:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;margin-top:2px;padding:14px 0 calc(14px + env(safe-area-inset-bottom));border-top:1px solid #e5ebf0;background:#fffffff5;box-shadow:0 -8px 18px #0f172a0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.student-opening-actions-summary{display:grid;gap:2px;min-width:0}.student-opening-actions-summary .ant-typography{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-package-expiry{font-size:12px;line-height:20px;white-space:nowrap}.student-package-expiry-warning{color:#d46b08}.student-package-expiry-urgent{color:#cf1322}.student-table .student-follow-up-row>td{background:#fff7e6!important;border-bottom-color:#ffd591}.student-table .student-follow-up-row>td:first-child{box-shadow:inset 4px 0 #fa8c16}.student-table .student-follow-up-row:hover>td{background:#fff1d6!important}.student-follow-up-card{border-color:#ffbb75;background:linear-gradient(135deg,#fffaf0,#fff7e6);box-shadow:0 14px 34px #d977061a}.student-follow-up-card:hover{border-color:#fa8c16;box-shadow:0 20px 44px #d9770629}.student-follow-up-card .info-card-actions{border-top-color:#ffd8a8}.ant-input,.ant-input-affix-wrapper,.ant-select-selector,.ant-input-number{border-color:#dfe7ee!important;box-shadow:none!important}.ant-input:hover,.ant-input-affix-wrapper:hover,.ant-select-selector:hover,.ant-input-number:hover{border-color:#b8c8d8!important}.ant-input:focus,.ant-input-affix-wrapper-focused,.ant-select-focused .ant-select-selector,.ant-input-number-focused{border-color:#07c160!important;box-shadow:0 0 0 3px #07c1601f!important}.ant-btn{box-shadow:none}.ant-btn-primary{background:#07c160;box-shadow:0 12px 24px #07c16033}.ant-btn-primary:hover{background:#06ad56!important}.ant-empty{padding:34px 16px;border:1px dashed #d5dee8;border-radius:8px;background:#fbfdff}@media (max-width: 900px){.app-shell,.app-shell.ant-layout.ant-layout-has-sider{display:block}.app-shell.ant-layout-has-sider>.ant-layout{flex:0 0 100%!important;min-width:0!important;max-width:100%!important;width:100%!important}.app-sider{position:relative;flex:none!important;width:100%!important;max-width:none!important;min-width:0!important;height:auto;overflow:visible}.app-sider .ant-layout-sider-children{height:auto}.app-sider .ant-menu{overflow:visible;padding-bottom:18px}.app-header{height:auto;line-height:normal;min-height:auto;align-items:flex-start;padding:18px;gap:14px}.app-header>.ant-space{flex-wrap:wrap;line-height:normal}.user-pill{min-width:0}.page-heading{display:grid}.page-heading-actions{justify-content:flex-start}.grade-overview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grade-catalog-heading{align-items:flex-start}.student-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-grid{grid-template-columns:1fr}.schedule-filterbar{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-filterbar.compact{grid-template-columns:minmax(0,1fr)}.schedule-outlook-shell,.schedule-outlook-shell.is-collapsed{grid-template-columns:1fr}.schedule-sidebar-rail{position:static;flex-direction:row;justify-content:center;padding:8px}.schedule-sidebar-rail>span{writing-mode:horizontal-tb;letter-spacing:normal}.schedule-outlook-sidebar{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-outlook-sidebar .schedule-sidebar-section:last-child{grid-column:1 / -1}.schedule-sidebar-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-timeline-toolbar{align-items:flex-start}.schedule-timeline-toolbar>div:last-child{text-align:left}.week-board{grid-template-columns:1fr;overflow-x:visible}.week-day{min-width:0}.dashboard-hero{display:grid;align-items:start;min-height:0}.dashboard-hero h2.ant-typography{font-size:28px}.login-shell{grid-template-columns:1fr}.login-hero{padding:40px}}@media (max-width: 560px){.grade-overview-grid{grid-template-columns:1fr}.grade-overview-card{min-height:128px;padding:20px}.student-detail-drawer .ant-drawer-body{padding:16px 16px 0}.student-detail-drawer .ant-drawer-header{padding:14px 16px}.student-drawer-title{align-items:flex-start;flex-direction:column;gap:4px}.student-opening-period-grid{grid-template-columns:1fr}.student-opening-actions{align-items:stretch;flex-direction:column;gap:10px}.student-opening-actions .ant-btn{width:100%}.app-content{padding:16px}.app-header{display:grid}.app-header-title{font-size:18px}.dashboard-hero{padding:20px}.dashboard-hero h2.ant-typography{font-size:24px}.health-panel{grid-template-columns:1fr;justify-items:start}.schedule-outlook-sidebar,.schedule-sidebar-filters{grid-template-columns:1fr}.schedule-timeline-toolbar{display:grid}.todo-item{grid-template-columns:36px minmax(0,1fr) 16px;min-height:72px;padding:12px}.todo-icon{width:36px;height:36px}.login-page{padding:16px}.login-panel,.login-hero{padding:24px}.login-brand{align-items:flex-start}.login-hero h1.ant-typography{font-size:30px}.login-feature-grid,.card-list-grid,.info-card-fields{grid-template-columns:1fr}.schedule-slot-row{grid-template-columns:1fr 1fr}.schedule-filterbar{grid-template-columns:1fr}.week-day-header{align-items:flex-start}}.month-overflow-toggle{width:100%;border:1px dashed #cbd5e1;border-radius:4px;background:transparent;color:#475569;padding:2px 6px;font-size:12px;cursor:pointer;text-align:left}.month-overflow-toggle:hover{border-color:#94a3b8;background:#f8fafc}.month-overflow-list{display:grid;gap:4px;min-width:240px;max-width:320px}.schedule-recurrence-mark{color:#64748b;font-size:12px;flex:0 0 auto}.schedule-recurrence-mark.is-detached{color:#b45309}.curriculum-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px}.curriculum-unit-card{margin-top:12px;padding:12px;border:1px solid #dbe4ea;border-radius:8px;background:#f8fafc}.curriculum-chapter-card{margin:10px 0 0 28px;padding:12px 12px 12px 18px;border-left:4px solid #36b39a;border-radius:6px;background:#f8fffd;box-shadow:inset 0 0 0 1px #e2f2ee}.curriculum-node-main,.curriculum-lesson-row{display:grid;grid-template-columns:28px 64px 76px minmax(180px,1fr) max-content 44px;align-items:center;gap:8px}.curriculum-node-main>.ant-input,.curriculum-lesson-row>.ant-input{min-width:0}.curriculum-node-type,.curriculum-node-count,.curriculum-node-actions{white-space:nowrap}.curriculum-node-actions{display:flex;align-items:center;gap:8px;margin:8px 0 0 100px;color:#64748b;font-size:13px}.curriculum-node-actions .ant-input-number{width:72px}.curriculum-lessons{display:grid;gap:8px;margin:10px 0 0 48px;padding-left:14px;border-left:2px solid #d5ebe5}.curriculum-lesson-row{grid-template-columns:64px 76px minmax(180px,1fr) 44px}@media (max-width: 680px){.curriculum-node-main{grid-template-columns:28px 58px 68px minmax(120px,1fr) 44px}.curriculum-node-count{display:none}.curriculum-node-actions{margin-left:36px;flex-wrap:wrap}.curriculum-chapter-card{margin-left:12px}}.schedule-timeline-resize{position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize;touch-action:none}.schedule-timeline-resize:after{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:2px;width:24px;height:2px;border-radius:2px;background:var(--subject-color, #94a3b8);opacity:0;transition:opacity .12s ease}.schedule-timeline-block:hover .schedule-timeline-resize:after{opacity:.7}.student-opening-actions-summary details{max-height:180px;overflow:auto;overflow-wrap:anywhere}.student-opening-actions-summary summary{cursor:pointer;color:#45947d}.material-sync-target-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1.2fr);gap:12px;align-items:center}@media (max-width: 640px){.material-sync-target-row{grid-template-columns:minmax(0,1fr);gap:8px}}.opening-overview{min-width:0;max-width:100%}.opening-overview .ant-card-head{min-height:48px}.opening-overview .ant-card-body{padding:12px 20px}.opening-overview-toolbar,.opening-overview-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.opening-overview-toolbar{margin-bottom:8px}.opening-matrix-scroll{overflow-x:auto}.opening-matrix{width:100%;border-collapse:separate;border-spacing:4px;table-layout:fixed}.opening-matrix th{min-width:100px;padding:5px 4px;font-size:12px;font-weight:500;color:#52666c;text-align:center;overflow-wrap:anywhere}.opening-matrix th:first-child{width:86px;text-align:left}.opening-matrix td{min-width:100px;padding:0;vertical-align:top}.opening-matrix-cell{display:flex;width:100%;min-width:100px;min-height:48px;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:4px 8px;border:0;border-radius:6px;background:color-mix(in srgb,#07996b var(--opening-intensity),white);color:#193b32;font:inherit;cursor:pointer}.opening-matrix-cell strong{font-size:20px;line-height:24px;font-weight:600;font-variant-numeric:tabular-nums}.opening-matrix-cell span{font-size:12px;line-height:16px}.opening-matrix-cell:hover{box-shadow:inset 0 0 0 1px #07996b}.opening-matrix-cell[aria-pressed=true]{outline:2px solid #007a55;outline-offset:0}.opening-matrix-cell:focus-visible{outline:3px solid #145ad0;outline-offset:1px}.opening-matrix-empty{display:grid;place-items:center;min-width:100px;min-height:48px;background:#f4f7f6;color:#697a75;border-radius:6px}.opening-overview-footer{margin-top:6px;font-size:12px}.opening-matrix-legend{display:flex;align-items:center;gap:6px;color:#52666c;font-size:12px}.opening-matrix-legend i{width:60px;height:8px;border-radius:3px;background:linear-gradient(90deg,#eaf7f2,#a0d8c7)}.material-overview{min-width:0;max-width:100%}.material-overview .ant-card-head{min-height:48px}.material-overview .ant-card-body{padding:12px 20px}.material-overview-filters{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:10px}.material-overview-summary{display:flex;flex-wrap:wrap;gap:8px 22px;margin-bottom:4px;color:#52666c;font-size:13px}.material-overview-summary strong{color:#173d33;font-size:18px;font-variant-numeric:tabular-nums}.material-overview-summary button{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}.material-overview-summary button:hover{color:#007a55}.opening-matrix-cell.material-matrix-missing{background:#fff7e6;color:#8c5a00}.opening-matrix-cell.material-matrix-missing strong{font-size:15px}.material-upload-dragger .ant-upload.ant-upload-drag{min-height:168px}.material-upload-dragger .ant-upload-btn{padding-block:28px}.student-list-anchor{scroll-margin-top:88px}@media (max-width: 640px){.opening-overview .ant-card-body,.material-overview .ant-card-body{padding:12px}.opening-matrix{table-layout:auto}}.wechat-settings-grid{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(520px,1.2fr);gap:16px;align-items:start}.wechat-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wechat-settings-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.official-message-page{max-width:1600px;margin:0 auto}.official-message-page>.ant-tabs .ant-tabs-nav{margin-bottom:14px}.official-message-layout{display:grid;grid-template-columns:minmax(620px,1.7fr) minmax(340px,.8fr);gap:16px;align-items:start}.official-composer-card .ant-card-body{padding:0}.official-step{display:grid;gap:12px;padding:18px 22px;border-bottom:1px solid #e7edf2}.official-step-title,.official-step-heading,.official-template-select-row,.official-page-path,.official-actionbar{display:flex;align-items:center;gap:12px}.official-step-title>span:first-child{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#07b868;font-size:17px;font-weight:800}.official-step-title>strong{color:#172533;font-size:17px}.official-step-title .ant-typography{margin-left:4px;font-size:13px}.official-step-heading{justify-content:space-between;flex-wrap:wrap}.official-template-select-row{flex-wrap:wrap;padding-left:44px}.official-audience-summary{display:flex;align-items:center;gap:14px;margin-left:44px;padding:12px 16px;border:1px solid #cfeadd;border-radius:8px;background:#f1fbf6;color:#1c8b61}.official-audience-summary>.anticon{font-size:28px}.official-audience-summary strong,.official-audience-summary small{display:block}.official-audience-summary strong{color:#233742}.official-audience-summary em{color:#07a95f;font-size:20px;font-style:normal}.official-audience-summary small{margin-top:3px;color:#70808a}.official-field-table{margin-left:44px;overflow:hidden;border:1px solid #dce6ed;border-radius:8px}.official-field-head,.official-field-row{display:grid;grid-template-columns:180px minmax(0,1fr)}.official-field-head{background:#f6f9fb;color:#344453;font-weight:700}.official-field-head span,.official-field-row>label{padding:11px 16px}.official-field-head span+span,.official-field-row>:nth-child(2){border-left:1px solid #e3eaf0}.official-field-row{align-items:center;border-top:1px solid #e3eaf0}.official-field-row>label{color:#344453;font-weight:600}.official-field-row>.ant-input,.official-field-row>.ant-input-affix-wrapper,.official-field-row>.ant-input-textarea{margin:8px 12px;width:auto}.official-page-path{margin-left:44px}.official-page-path .ant-select{min-width:280px}.official-actionbar{justify-content:space-between;flex-wrap:wrap;padding:14px 22px;background:#fbfcfd}.official-preview-card{position:sticky;top:96px}.official-preview-card .ant-card-head-title>div{display:grid;gap:3px}.official-preview-card .ant-card-head-title small{color:#7c8994;font-size:12px;font-weight:400}.wechat-phone-stage{display:grid;place-items:center;min-height:600px;padding:12px;border-radius:8px;background:#eef3f6}.wechat-phone{position:relative;width:min(310px,100%);aspect-ratio:9 / 18.5;padding:10px;border:3px solid #1b2024;border-radius:42px;background:#0e1113;box-shadow:0 20px 45px #12202b3d}.wechat-phone-speaker{position:absolute;z-index:3;top:13px;left:50%;width:94px;height:22px;border-radius:0 0 14px 14px;background:#0b0d0f;transform:translate(-50%)}.wechat-phone-screen{position:relative;height:100%;overflow:hidden;border-radius:31px;background:#edf1f3}.wechat-statusbar{display:flex;justify-content:space-between;padding:11px 18px 7px;background:#fff;font-size:11px}.wechat-chat-header{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid #e2e7ea;background:#fff;font-size:16px}.wechat-chat-header span{font-size:24px;font-weight:300}.wechat-message-time{margin:18px 0 12px;color:#88949d;font-size:11px;text-align:center}.wechat-message-row{display:grid;grid-template-columns:40px 1fr;gap:9px;padding:0 12px}.wechat-avatar{width:40px;height:40px;display:grid;place-items:center;border-radius:5px;background:#07c160;color:#fff;font-size:22px;font-weight:700}.wechat-template-card{overflow:hidden;border-radius:7px;background:#fff}.wechat-template-title{display:block;padding:14px 14px 10px;font-size:15px}.wechat-template-fields{display:grid;gap:9px;padding:0 14px 13px}.wechat-template-fields>div{display:grid;grid-template-columns:62px 1fr;gap:8px;font-size:11px;line-height:1.45}.wechat-template-fields span{color:#8a969f}.wechat-template-fields b{color:#34414a;font-weight:500;word-break:break-word}.wechat-template-link{display:flex;justify-content:space-between;padding:11px 14px;border-top:1px solid #edf0f2;color:#303b43;font-size:12px}.wechat-inputbar{position:absolute;right:0;bottom:0;left:0;display:grid;grid-template-columns:28px 1fr 28px 28px;gap:6px;align-items:center;padding:9px;background:#f7f8f9;text-align:center}.wechat-inputbar i{height:32px;border-radius:6px;background:#fff}@media (max-width: 1180px){.official-message-layout{grid-template-columns:1fr}.official-preview-card{position:static}.wechat-phone-stage{min-height:520px}.wechat-settings-grid{grid-template-columns:1fr}}@media (max-width: 720px){.official-field-head,.official-field-row{grid-template-columns:120px minmax(0,1fr)}.official-field-table,.official-page-path,.official-audience-summary,.official-template-select-row{margin-left:0}.official-actionbar>.ant-space{width:100%;flex-wrap:wrap}.wechat-form-row{grid-template-columns:1fr;gap:0}}.teacher-library-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:20px;align-items:start}.teacher-library-directory .ant-tree{margin-top:16px;max-height:65vh;overflow:auto}.teacher-library-directory .ant-tree-title{overflow-wrap:anywhere}.teacher-preview-frame{width:100%;height:70vh;border:1px solid #e5e7eb;border-radius:8px;background:#f5f6f8}.teacher-preview-placeholder{min-height:60vh;display:flex;align-items:center;justify-content:center;background:#f5f6f8;border-radius:8px}.calendar-page{gap:12px}.calendar-page .page-heading{margin-bottom:0}.calendar-page .page-heading h3{margin:0}.calendar-workbench{background:#fff;border:1px solid #e1e7f0;border-radius:10px;overflow:hidden}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;padding:12px;border-bottom:1px solid #e1e7f0}.calendar-workbench .schedule-outlook-shell{grid-template-columns:230px minmax(0,1fr);gap:0}.calendar-workbench .schedule-outlook-sidebar{border:0;border-right:1px solid #e1e7f0;border-radius:0;padding:12px}.calendar-workbench .schedule-outlook-main{padding:10px;gap:8px;align-content:start}.calendar-shell-collapsed{display:block}.calendar-context{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px;font-size:12px;color:#64748b}.calendar-person-picker{display:flex;flex-wrap:wrap;gap:8px}.calendar-person-picker>strong,.calendar-person-picker>.ant-select{width:100%}.calendar-filters summary{cursor:pointer;font-weight:600;padding:8px 0}.calendar-filters .schedule-sidebar-filters{margin-top:8px}.calendar-legend-teacher:before,.calendar-legend-student:before{content:"";display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:2px;background:#d1fae5}.calendar-legend-student:before{background:#dbeafe}.calendar-scroll{max-height:calc(100vh - 245px);min-height:400px}.calendar-scroll .schedule-timeline-grid{grid-template-rows:minmax(68px,auto) var(--timeline-height)}.calendar-scroll .schedule-lane-head strong{white-space:normal;overflow-wrap:anywhere;overflow:visible}.calendar-column{-webkit-user-select:none;user-select:none;touch-action:pan-x}.calendar-column .schedule-time-line,.calendar-availability,.calendar-selection{pointer-events:none}.calendar-availability{position:absolute;left:0;right:0;background:#ecfdf5;border-left:3px solid #86efac}.calendar-availability.is-student{background:#eff6ff;border-left-color:#93c5fd}.calendar-column .schedule-time-line{z-index:1}.calendar-column .schedule-timeline-block{z-index:3}.calendar-selection{position:absolute;left:0;right:0;z-index:5;background:#dbeafecc;border:1px solid #3b82f6;padding:4px;color:#1d4ed8}.calendar-preflight{margin-top:16px}.preview-issues{max-height:240px;overflow:auto;font-size:12px}.preview-issues>div{margin-top:8px}.preview-error{color:#b91c1c}.preview-warning{color:#92400e}.schedule-assistant{margin-top:12px;display:grid;gap:10px}.assistant-scroll{overflow:auto;max-height:300px;border:1px solid #e1e7f0;border-radius:6px}.assistant-grid{display:grid;gap:1px;font-size:11px;background:#e1e7f0;width:max-content}.assistant-grid>strong,.assistant-grid>span,.assistant-row>strong{padding:8px 4px;background:#fff}.assistant-row{display:contents}.assistant-row>strong{position:sticky;left:0;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assistant-cell{min-height:36px;border:0;background:#f1f5f9;color:#64748b;cursor:pointer}.assistant-cell.is-free{background:#dcfce7;color:#166534}.assistant-cell.is-busy{background:#fee2e2;color:#991b1b;cursor:not-allowed}.assistant-cell.is-unknown{background:#fef3c7;color:#92400e}@media (max-width: 1000px){.calendar-workbench .schedule-outlook-shell{grid-template-columns:190px minmax(0,1fr)}}@media (max-width: 700px){.calendar-workbench .schedule-outlook-shell{grid-template-columns:1fr}.calendar-scroll{max-height:65vh}}.calendar-availability.is-unavailable{background:repeating-linear-gradient(135deg,#fff1f2,#fff1f2 6px,#ffe4e6 6px,#ffe4e6 12px);border-left-color:#fda4af}.assistant-cell.is-unavailable{background:#ffe4e6;color:#9f1239}.availability-date-fields{grid-column:1 / -1}.availability-date-fields .ant-form-item{margin-bottom:4px}.calendar-workbench .schedule-outlook-sidebar{min-width:0}.calendar-workbench .schedule-sidebar-section{min-width:0;padding:8px}.calendar-workbench .schedule-sidebar-head{gap:4px}.calendar-workbench .schedule-mini-calendar{min-width:0}.calendar-workbench .schedule-mini-calendar{grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-workbench .schedule-mini-day{min-width:0;padding:0}.calendar-workbench .schedule-outlook-main{grid-template-columns:minmax(0,1fr)}.material-download-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;margin-top:16px}.material-download-filters .ant-select{width:100%}.material-download-summary{margin-bottom:16px}.material-download-heading{display:flex;justify-content:space-between;margin-bottom:12px}.material-download-job{margin-bottom:12px;overflow-wrap:anywhere}.material-download-highlight{border-color:#1677ff}@media (max-width: 600px){.material-download-filters{grid-template-columns:minmax(0,1fr)}.material-download-job .ant-space{max-width:100%}.teacher-library .page-heading{flex-wrap:wrap;gap:12px}}.month-day-count{border:0;background:#edf4ff;color:#1668dc;border-radius:4px;padding:2px 4px;cursor:pointer;font-size:12px}.month-full-day-list{display:grid;gap:8px}.month-class.is-expanded{padding:10px 12px;font-size:14px}.month-class.is-expanded .month-class-time{font-size:14px}.month-class-meta{color:#64748b;font-size:12px}.schedule-lesson-list{display:grid;gap:12px}.schedule-lesson-list-row{display:grid;grid-template-columns:105px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid #e6ebf2;border-radius:8px;background:#fff}.schedule-lesson-list-date{font-weight:600;font-size:13px}@media (max-width: 700px){.schedule-lesson-list-row{grid-template-columns:minmax(0,1fr)}.schedule-lesson-list-row>.ant-btn{justify-self:end}}.month-class-icons{display:inline-flex;align-items:center;gap:4px;color:#64748b}.calendar-filterbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:0 12px 10px;border-bottom:1px solid #e1e7f0}.calendar-filterbar .ant-select{width:130px}.calendar-extra-filters{padding:10px 12px;border-bottom:1px solid #e1e7f0;background:#fafcff}.calendar-extra-filters .ant-select{width:180px}.calendar-review-button{color:#ad6800;border-color:#ffd591;background:#fffaf0}.calendar-subject-legend{display:inline-flex;align-items:center;gap:5px}.calendar-subject-legend i{width:9px;height:9px;border-radius:50%}.calendar-workbench .calendar-toolbar{border-bottom:0}.calendar-workbench .schedule-outlook-main{padding:8px}.calendar-column.is-drop-target{background:#e6f4ff}.calendar-drag-preview{position:absolute;left:2px;right:2px;z-index:6;pointer-events:none;border:2px dashed #1677ff;border-radius:4px;background:#e6f4ffdd;color:#1668dc;padding:4px;font-size:12px}.calendar-now-line{position:absolute;left:0;right:0;height:2px;background:#e5484d;z-index:5;pointer-events:none}.calendar-now-line:before{content:"";position:absolute;left:-3px;top:-3px;height:8px;width:8px;border-radius:50%;background:#e5484d}.schedule-resize-preview{position:absolute;bottom:8px;right:4px;background:#1677ff;color:#fff;font-size:11px;padding:2px 4px;border-radius:3px;pointer-events:none}.calendar-scroll .schedule-time-axis{position:sticky;left:0;z-index:7;background:#fff}.calendar-scroll .schedule-day-head-spacer{position:sticky;left:0;z-index:9}@media (min-width: 1650px){.month-weekdays,.month-board{grid-template-columns:repeat(7,minmax(175px,1fr))}}@media (max-width: 700px){.month-calendar-scroll{max-height:70vh}.month-weekdays{display:none}.month-board{display:block;min-width:0}.month-day{min-height:80px}.month-day.is-outside{display:none}.month-day-head:after{content:attr(data-label)}.month-day-head{background:#f8fafc}.month-date-number{width:auto;padding:0 8px;border-radius:4px}.calendar-filterbar .ant-select{width:135px}.calendar-filterbar{padding:0 8px 8px}}.calendar-today-heading{color:#1677ff}.calendar-column .schedule-timeline-block.is-selected{outline:2px solid #1677ff;outline-offset:-1px}.month-day-body:empty{min-height:110px}.schedule-timeline-head{display:flex;align-items:center;justify-content:space-between;gap:3px;min-width:0}.schedule-timeline-audit{background:#fff1c2;color:#9c6500;border-radius:3px;font-size:10px;padding:0 2px;white-space:nowrap}@container (max-height: 42px){.calendar-column .schedule-timeline-time{display:block;font-size:11px;line-height:14px}.calendar-column .schedule-timeline-body{gap:0;padding:2px 4px}.calendar-column .schedule-timeline-body>strong{font-size:11px;line-height:14px}}.resource-filter-row{display:flex;align-items:flex-start;gap:12px;width:100%;margin-bottom:10px}.resource-filter-label{width:64px;flex:0 0 64px;padding-top:3px}.resource-filter-options{display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0}.resource-filter-options .ant-btn{height:auto;min-height:28px;white-space:normal}.directory-sync-picker{display:flex;flex-direction:column;gap:8px;padding:12px;margin:8px 0;background:#f0f7fc;border-radius:8px}.directory-sync-picker .ant-checkbox-group{display:flex;flex-wrap:wrap;gap:8px}.teaching-plans-page>.page-heading{padding:16px;border-radius:10px;background:#edf5fc}.teaching-plan-course-heading{margin:12px 0}.teachers-page .teacher-name{overflow-wrap:anywhere;white-space:normal}@media (max-width: 640px){.resource-filter-row{gap:6px}.resource-filter-label{width:56px;flex-basis:56px}}.teaching-plans-page,.content-page,.course-catalog{grid-template-columns:minmax(0,1fr)}.teaching-plans-page .ant-card-head-wrapper{flex-wrap:wrap;gap:8px}.curriculum-section-heading{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:8px}.student-download-pickup{width:min(640px,100%);padding:28px 16px;margin:0 auto;min-height:100vh;box-sizing:border-box}.student-download-pickup .ant-card{min-width:0}.pickup-qr{display:flex;flex-direction:column;align-items:center;gap:16px;margin:24px 0}.pickup-file-list{margin-top:24px;max-height:360px;overflow:auto}.pickup-file-list>div{padding:10px 0;border-bottom:1px solid #eee;overflow-wrap:anywhere}@media (max-width: 900px){.teaching-plan-notice-entry .app-sider{display:none}}
