body{margin:0;background:#eef3f7;color:#17202a;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased}.app-shell{min-height:100vh;background:linear-gradient(180deg,#ffffffb8,#fff0 280px),#eef3f7}.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}.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}.student-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.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}.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}.info-card-tags{min-width:0}.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-search-form{display:grid;gap:4px}.schedule-search-main{display:grid;grid-template-columns:minmax(260px,1fr) minmax(160px,220px) 120px auto;gap:12px;align-items:end}.schedule-search-main .ant-form-item,.schedule-more-settings .ant-form-item{margin-bottom:0}.schedule-search-main>.ant-btn{min-height:40px}.schedule-more-toggle{width:fit-content;padding-left:0}.schedule-more-settings{display:grid;grid-template-columns:160px 160px 160px;gap:12px;padding:12px;border:1px solid #e8ecf3;border-radius:8px;background:#f8fafc}.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-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.schedule-candidate-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.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-summary-item{min-height:72px;display:grid;gap:4px;align-content:center;padding:12px 14px;border:1px solid #e6ebf2;border-radius:8px;background:#f9fbff}.schedule-summary-item span{color:#64748b;font-size:13px}.schedule-summary-item strong{font-size:24px;line-height:1}.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-sidebar{display:grid;gap:12px;position:sticky;top:76px}.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-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-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;border:1px solid #e1e7f0;border-radius:8px;background:#fff}.schedule-timeline-grid{min-width:980px;display:grid;grid-template-columns:64px repeat(7,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:inline-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}}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;opacity:.62;border-style:dashed;pointer-events:none}.schedule-timeline-block.is-availability .schedule-timeline-body{align-content:start}.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-candidate{opacity:.86}.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-action{margin-top:2px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1d4ed8;font-weight:700}@container (max-width: 118px){.schedule-timeline-action{display:none}}.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-tip-list{display:grid;gap:8px;color:#475569;font-size:13px}.schedule-tip-list div{padding:8px 10px;border-radius:8px;background:#f1f5f9}.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-board{display:grid;grid-template-columns:repeat(7,minmax(132px,1fr));gap:10px;overflow-x:auto;padding-bottom:4px}.month-day{min-width:132px;min-height:154px;border:1px solid #e6ebf2;border-radius:8px;background:#fbfcff;overflow:hidden}.month-day-head{height:42px;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e6ebf2;background:#fff}.month-day-head strong{font-size:16px}.month-day-head span{color:#64748b;font-size:12px}.month-day-body{display:grid;gap:6px;padding:8px}.month-day-empty{padding-top:34px;text-align:center;color:#9ca3af;font-size:12px}.month-class{display:grid;gap:2px;width:100%;border:1px solid #a9dfbd;border-radius:8px;background:#f1fbf4;padding:8px;color:#1f2937;text-align:left;cursor:pointer}.month-class span,.month-class small{color:#64748b;font-size:12px}.month-class strong{font-size:13px;line-height:1.35}.month-class.is-canceled{border-color:#d1d5db;background:#f3f4f6;color:#6b7280}.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}.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}.student-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-grid{grid-template-columns:1fr}.schedule-search-main{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-search-main>.ant-btn{grid-column:1 / -1}.schedule-filterbar{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-filterbar.compact{grid-template-columns:minmax(0,1fr)}.schedule-outlook-shell{grid-template-columns:1fr}.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}.schedule-more-settings,.schedule-summary-grid{grid-template-columns:1fr}.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){.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,.schedule-search-main{grid-template-columns:1fr}.week-day-header{align-items:flex-start}}
