@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid}}}.visible{visibility:visible}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.border{border-style:var(--tw-border-style);border-width:1px}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:#f8fafc;--foreground:#0f172a;--muted:#64748b;--card:#fff;--surface-muted:#f8fafc;--border:#e2e8f0;--input-bg:#fff;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-foreground:#fff;--secondary-bg:#dbeafe;--secondary-hover:#bfdbfe;--secondary-text:#1e3a8a;--danger:#dc2626;--danger-hover:#b91c1c;--success:#16a34a;--warning:#d97706;--sidebar-bg:#0f172a;--sidebar-text:#e2e8f0;--sidebar-muted:#94a3b8}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:#0b1020;--foreground:#e5e7eb;--muted:#94a3b8;--card:#111827;--surface-muted:#0f172a;--border:#253044;--input-bg:#0b1220;--primary:#8b5cf6;--primary-hover:#7c3aed;--primary-foreground:#fff;--secondary-bg:#1f2937;--secondary-hover:#273449;--secondary-text:#c4b5fd;--danger:#ef4444;--danger-hover:#dc2626;--success:#22c55e;--warning:#f59e0b;--sidebar-bg:#080d19;--sidebar-text:#e5e7eb;--sidebar-muted:#94a3b8}*{box-sizing:border-box}body{background:var(--background);color:var(--foreground);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{grid-template-columns:260px 1fr;min-height:100vh;transition:grid-template-columns .2s;display:grid}.shellCollapsed{grid-template-columns:88px 1fr}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-text);flex-direction:column;gap:24px;padding:24px;display:flex}.sidebarHeader{justify-content:space-between;align-items:center;gap:10px;display:flex}.brand{flex:auto;align-items:center;gap:12px;min-width:0;display:flex;overflow:hidden}.brandText{min-width:0;overflow:hidden}.brandText>*{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.navCompactLabel,.shellCollapsed .brandText,.shellCollapsed .navLabel{display:none}.shellCollapsed .sidebar{align-items:center;padding:20px 14px}.shellCollapsed .sidebarHeader,.shellCollapsed .nav,.shellCollapsed .nav a{width:100%}.shellCollapsed .sidebarHeader{flex-direction:column;justify-content:flex-start}.shellCollapsed .brand{flex:none;justify-content:center;width:100%}.brandMark{object-fit:cover;border-radius:14px;flex:none;width:44px;height:44px}.nav{flex-direction:column;flex:1;align-content:start;gap:8px;display:flex}.nav a{color:var(--sidebar-muted);border-radius:10px;padding:10px 12px}.sidebarGuideButton,.sidebarLogoutButton{color:#cbd5e1;border-radius:10px;padding:10px 12px}.sidebarFooter{gap:8px;display:grid}.sidebarGuideButton,.sidebarLogoutButton{text-align:left;cursor:pointer;width:100%;min-height:42px;font-weight:700}.sidebarGuideButton{background:#2563eb24;border:1px solid #60a5fa61}.sidebarLogoutButton{background:#dc26261f;border:1px solid #f8717159}.shellCollapsed .nav a{justify-content:center;align-items:center;min-height:42px;font-weight:800;display:flex}.shellCollapsed .navCompactLabel{display:inline}.nav a:hover{color:var(--sidebar-text);background:#ffffff14}.sidebarGuideButton:hover,.sidebarLogoutButton:hover{color:#fff;background:#ffffff14}.sidebarGuideButton:hover{background:#2563eb3d;border-color:#93c5fd9e}.sidebarLogoutButton:hover{background:#dc262638;border-color:#f871718c}.shellCollapsed .sidebarFooter,.shellCollapsed .sidebarGuideButton,.shellCollapsed .sidebarLogoutButton{width:100%}.shellCollapsed .sidebarGuideButton,.shellCollapsed .sidebarLogoutButton{justify-content:center;align-items:center;display:flex}.logoutConfirmPanel{max-width:420px}.tourLayer{z-index:1200;pointer-events:none;position:fixed;inset:0}.tourScrim{background:#0f172a61;position:absolute;inset:0}.tourHighlight{z-index:1;border:3px solid #facc15;border-radius:14px;transition:inset .18s,width .18s,height .18s,transform .18s;animation:1.15s ease-in-out infinite tourHighlightPulse;position:absolute;box-shadow:0 0 0 9999px #0f172a42,0 0 0 6px #facc1538,0 18px 60px #0f172a38}@keyframes tourHighlightPulse{0%,to{border-color:#facc15;box-shadow:0 0 0 9999px #0f172a42,0 0 0 5px #facc1533,0 18px 60px #0f172a38}50%{border-color:#fef08a;box-shadow:0 0 0 9999px #0f172a38,0 0 0 10px #facc155c,0 18px 70px #facc1538}}.tourPopover{z-index:2;border:1px solid var(--primary);gap:12px;max-width:calc(100vw - 24px);padding:16px;display:grid;position:fixed}@supports (color:color-mix(in lab, red, red)){.tourPopover{border:1px solid color-mix(in srgb, var(--primary) 38%, var(--border))}}.tourPopover{background:var(--card);pointer-events:auto;border-radius:14px;box-shadow:0 24px 80px #0f172a59}.tourHeader{justify-content:space-between;align-items:center;gap:12px;display:flex}.tourEyebrow{color:var(--primary);align-items:center;gap:6px;font-size:13px;font-weight:800;display:inline-flex}.tourIconButton{border:1px solid var(--border);background:var(--surface-muted);width:32px;height:32px;color:var(--foreground);cursor:pointer;border-radius:10px;place-items:center;display:grid}.tourPopover h2{margin:0;font-size:20px;line-height:1.25}.tourPopover p{color:var(--muted);margin:0;line-height:1.6}.tourHint{border:1px solid var(--warning);padding:10px 12px}@supports (color:color-mix(in lab, red, red)){.tourHint{border:1px solid color-mix(in srgb, var(--warning) 45%, var(--border))}}.tourHint{background:var(--warning);border-radius:10px}@supports (color:color-mix(in lab, red, red)){.tourHint{background:color-mix(in srgb, var(--warning) 10%, var(--card))}}.tourHint{font-size:13px;color:var(--foreground)!important}.tourProgress{align-items:center;gap:5px;display:flex}.tourProgress span{background:var(--border);border-radius:999px;flex:1;min-width:10px;height:6px}.tourProgress span.complete{background:var(--success)}@supports (color:color-mix(in lab, red, red)){.tourProgress span.complete{background:color-mix(in srgb, var(--success) 68%, var(--border))}}.tourProgress span.active{background:var(--primary)}.tourActions{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:10px;display:grid}.tourActions .button{gap:6px;width:100%}.tourWaitingText{border:1px solid var(--border);background:var(--surface-muted);min-height:42px;color:var(--muted);text-align:center;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:10px 12px;font-size:13px;font-weight:800;display:inline-flex}.sidebarToggle{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:10px;min-width:38px;min-height:38px;font-weight:800}.mobileMenuToggle{touch-action:manipulation;-webkit-tap-highlight-color:transparent;pointer-events:auto;display:none}.mobileMenuBackdrop{display:none}.main{padding:28px}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.topbarCompact{justify-content:flex-end;margin-bottom:20px}.card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:20px;box-shadow:0 12px 30px #0f172a0f}.collapsibleCard{padding:0;overflow:hidden}.collapsibleCard>:not(.collapsibleSummary){margin-left:20px;margin-right:20px}.collapsibleCard>:last-child{margin-bottom:20px}.collapsibleSummary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:18px 20px;font-size:20px;font-weight:800;list-style:none;display:flex}.collapsibleSummary::-webkit-details-marker{display:none}.collapsibleSummary:after{content:"展开";color:var(--primary);font-size:14px;font-weight:700}.collapsibleCard[open] .collapsibleSummary:after{content:"收起"}.courseListSummary{grid-template-columns:minmax(max-content,1fr) auto minmax(max-content,1fr);align-items:center;display:grid}.courseListSummary:after{justify-self:end}.courseListHint{text-align:center;justify-self:center;font-size:14px;font-weight:600}.grid{gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.muted{color:var(--muted)}.button{background:var(--primary);color:var(--primary-foreground);cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;min-height:42px;padding:10px 14px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s,opacity .15s,box-shadow .15s;display:inline-flex}.button:hover:not(:disabled){background:var(--primary-hover);box-shadow:0 6px 14px #2563eb2e}.secondaryButton{background:var(--secondary-bg);color:var(--secondary-text);border-color:var(--secondary-hover)}.secondaryButton:hover:not(:disabled){background:var(--secondary-hover);border-color:var(--primary);box-shadow:0 6px 14px #2563eb29}.button.closeButton{color:#b91c1c!important;background:#fef2f2!important;border-color:#fca5a5!important}.button.closeButton:hover:not(:disabled){box-shadow:0 6px 14px #dc26261f;color:#991b1b!important;background:#fee2e2!important;border-color:#ef4444!important}.dangerButton{background:var(--danger)}.dangerButton:hover:not(:disabled){background:var(--danger-hover);box-shadow:0 6px 14px #dc26262e}.button:disabled,.button[aria-disabled=true]{background:var(--border);border-color:var(--border);color:var(--muted);cursor:not-allowed;opacity:.6;box-shadow:none}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.toolbar .input{min-width:0}.modalBackdrop{z-index:50;background:#0f172a8c;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modalPanel{background:var(--card);border-radius:18px;width:min(920px,100%);max-height:min(86vh,900px);padding:20px;overflow:auto;box-shadow:0 24px 80px #0f172a59}.installPromptBanner{left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:70;color:#f8fafc;background:#0f172af5;border:1px solid #94a3b859;border-radius:14px;grid-template-columns:40px minmax(0,1fr) auto 36px;align-items:center;gap:12px;padding:12px;display:grid;position:fixed;box-shadow:0 18px 60px #0f172a59}.installPromptIcon{background:#2563eb3d;border-radius:12px;place-items:center;width:40px;height:40px;display:grid}.installPromptIcon span{border:2px solid #bfdbfe;border-top:0;border-radius:0 0 4px 4px;width:22px;height:18px;position:relative}.installPromptIcon span:before{content:"";border-bottom:2px solid #bfdbfe;border-left:2px solid #bfdbfe;width:10px;height:10px;position:absolute;top:-10px;left:50%;transform:translate(-50%)rotate(-45deg)}.installPromptText{gap:2px;min-width:0;display:grid}.installPromptText strong{font-size:15px}.installPromptText span{color:#cbd5e1;font-size:13px}.installPromptButton{min-height:38px;padding:8px 16px}.installPromptClose{color:#cbd5e1;cursor:pointer;background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:24px;line-height:1;display:inline-flex}.installPromptClose:hover{color:#fff;background:#ffffff14}.installGuidePanel{max-width:520px}.installGuideSteps{gap:14px;margin:16px 0;padding-left:26px;font-weight:800;display:grid}.installGuideNote{color:#0369a1;background:#e0f2fe;border:1px solid #bae6fd;border-radius:12px;margin:16px 0;padding:12px;font-weight:700}.largeModalPanel{width:min(1120px,100%)}.scheduleEditModalPanel{width:min(1040px,100%)}.batchScheduleModalPanel .modalHeader{z-index:3;background:var(--card);border-bottom:1px solid var(--border);border-radius:18px 18px 0 0;margin:-20px -20px 16px;padding:20px;position:sticky;top:-20px}.batchScheduleModalPanel{overflow-x:hidden}.batchConflictHint{border:1px solid var(--danger);gap:4px;padding:12px 14px;display:grid}@supports (color:color-mix(in lab, red, red)){.batchConflictHint{border:1px solid color-mix(in srgb, var(--danger) 40%, var(--border))}}.batchConflictHint{background:var(--card);border-radius:12px}@supports (color:color-mix(in lab, red, red)){.batchConflictHint{background:color-mix(in srgb, var(--card) 86%, var(--danger) 14%)}}.batchConflictHint{color:var(--foreground);line-height:1.45}.batchConflictHint strong{color:var(--danger)}.scheduleConflictList{gap:4px;margin-top:4px;font-size:13px;display:grid}.scheduleConflictList>div{border-left:2px solid var(--danger);padding-left:10px}@supports (color:color-mix(in lab, red, red)){.scheduleConflictList>div{border-left:2px solid color-mix(in srgb, var(--danger) 45%, var(--border))}}.batchScheduleModalPanel form,.batchScheduleModalPanel fieldset,.batchScheduleModalPanel .grid,.batchScheduleModalPanel .studentSelector{min-width:0}.studentSelector{border:1px solid var(--border);background:var(--card);border-radius:14px;padding:14px}@supports (color:color-mix(in lab, red, red)){.studentSelector{background:color-mix(in srgb, var(--card) 94%, var(--primary) 6%)}}.scheduleSetupAlert,.emptySelectionGuide{border:1px solid var(--warning);gap:12px;padding:14px;display:grid}@supports (color:color-mix(in lab, red, red)){.scheduleSetupAlert,.emptySelectionGuide{border:1px solid color-mix(in srgb, var(--warning) 35%, var(--border))}}.scheduleSetupAlert,.emptySelectionGuide{background:var(--warning);border-radius:12px}@supports (color:color-mix(in lab, red, red)){.scheduleSetupAlert,.emptySelectionGuide{background:color-mix(in srgb, var(--warning) 10%, var(--card))}}.scheduleSetupAlert strong,.emptySelectionGuide strong{color:var(--foreground)}.scheduleSetupAlert p,.emptySelectionGuide p{color:var(--muted);margin:4px 0 0}.scheduleSetupList{gap:8px;display:grid}.scheduleSetupItem,.emptySelectionGuide{grid-template-columns:minmax(0,1fr) auto;align-items:center}.scheduleSetupItem{border-top:1px solid var(--warning);gap:10px;padding-top:8px;display:grid}@supports (color:color-mix(in lab, red, red)){.scheduleSetupItem{border-top:1px solid color-mix(in srgb, var(--warning) 24%, var(--border))}}.scheduleSetupItem .button,.emptySelectionGuide .button{white-space:nowrap}.attendanceTopbar{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin-bottom:14px;display:grid}.attendanceTabList{border:1px solid var(--border);background:var(--surface-muted);border-radius:999px;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;width:min(360px,100%);padding:5px;display:inline-grid}@supports (color:color-mix(in lab, red, red)){.attendanceTabList{background:color-mix(in srgb, var(--surface-muted) 92%, var(--foreground) 8%)}}.attendanceTabButton{min-height:40px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:8px 16px;font-weight:800;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.attendanceTabButton:hover{color:var(--foreground);background:var(--card)}@supports (color:color-mix(in lab, red, red)){.attendanceTabButton:hover{background:color-mix(in srgb, var(--card) 86%, var(--primary) 14%)}}.attendanceTabButton.active{background:linear-gradient(135deg, var(--primary), var(--primary-hover));border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceTabButton.active{border-color:color-mix(in srgb, var(--primary) 70%, white 30%)}}.attendanceTabButton.active{color:var(--primary-foreground);box-shadow:0 10px 22px #2563eb38}.attendanceTabPanel{gap:12px;display:grid}.attendanceSelectionStatus{min-width:0;font-weight:700}.attendanceSelectionSummary{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.attendanceClearButton{min-height:34px;padding:6px 10px;border-color:var(--danger)!important}@supports (color:color-mix(in lab, red, red)){.attendanceClearButton{border-color:color-mix(in srgb, var(--danger) 30%, var(--border))!important}}.attendanceClearButton{background:var(--card)!important}@supports (color:color-mix(in lab, red, red)){.attendanceClearButton{background:color-mix(in srgb, var(--card) 88%, var(--danger) 12%)!important}}.attendanceClearButton{white-space:nowrap;color:var(--danger)!important}.attendanceClearButton:hover:not(:disabled){background:var(--card)!important}@supports (color:color-mix(in lab, red, red)){.attendanceClearButton:hover:not(:disabled){background:color-mix(in srgb, var(--card) 78%, var(--danger) 22%)!important}}.attendanceClearButton:hover:not(:disabled){border-color:var(--danger)!important}@supports (color:color-mix(in lab, red, red)){.attendanceClearButton:hover:not(:disabled){border-color:color-mix(in srgb, var(--danger) 55%, var(--border))!important}}.attendanceClearButton:hover:not(:disabled){box-shadow:0 6px 14px #dc26261f}.attendanceFinderButton{white-space:nowrap}.studentSelectorHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.selectedStudentList{flex-wrap:wrap;gap:8px;display:flex}.studentPickerSelectedHeader{justify-content:space-between;align-items:center;gap:10px;display:flex}.studentChip{border:1px solid var(--secondary-hover);background:var(--secondary-bg);color:var(--secondary-text);cursor:pointer;border-radius:999px;padding:6px 10px;font-size:13px}.studentQuickGrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.attendanceChoiceOption{border:1px solid var(--border);background:var(--card);cursor:pointer;border-radius:12px;align-items:center;gap:10px;min-width:0;min-height:44px;padding:10px 12px;font-weight:750;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;display:flex}.attendanceChoiceOption:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceOption:hover{border-color:color-mix(in srgb, var(--primary) 42%, var(--border))}}.attendanceChoiceOption:hover{background:var(--card)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceOption:hover{background:color-mix(in srgb, var(--card) 88%, var(--primary) 12%)}}.attendanceChoiceOption:has(.attendanceChoiceInput:checked){border-color:var(--primary);background:var(--card)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceOption:has(.attendanceChoiceInput:checked){background:color-mix(in srgb, var(--card) 82%, var(--primary) 18%)}}.attendanceChoiceOption:has(.attendanceChoiceInput:checked){box-shadow:inset 0 0 0 1px var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceOption:has(.attendanceChoiceInput:checked){box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 70%, transparent)}}.attendanceChoiceInput{appearance:none;border:2px solid var(--muted);flex:none;place-items:center;width:18px;height:18px;margin:0;display:grid}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceInput{border:2px solid color-mix(in srgb, var(--muted) 72%, var(--border))}}.attendanceChoiceInput{background:var(--input-bg);cursor:pointer;border-radius:5px;transition:background-color .15s,border-color .15s,box-shadow .15s}.attendanceChoiceInput[type=radio]{border-radius:999px}.attendanceChoiceInput:after{content:"";border-radius:2px;width:8px;height:8px;transition:transform .12s;transform:scale(0)}.attendanceChoiceInput[type=radio]:after{border-radius:999px}.attendanceChoiceInput:checked{border-color:var(--primary);background:var(--primary);box-shadow:0 0 0 3px var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceInput:checked{box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent)}}.attendanceChoiceInput:checked:after{background:var(--primary-foreground);transform:scale(1)}.attendanceChoiceInput:focus-visible{outline:2px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceChoiceInput:focus-visible{outline:2px solid color-mix(in srgb, var(--primary) 72%, white 28%)}}.attendanceChoiceInput:focus-visible{outline-offset:3px}.attendanceChoiceText{overflow-wrap:anywhere;min-width:0;line-height:1.3}.studentPickerModal{width:min(760px,100%)}.studentPickerLayout{grid-template-columns:minmax(0,1fr) minmax(220px,.55fr);gap:16px;display:grid}.studentPickerList{border:1px solid var(--border);border-radius:12px;gap:10px;max-height:360px;padding:12px;display:grid;overflow:auto}.studentPickerSelected{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;align-content:start;gap:10px;padding:12px;display:grid}.modalHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.modalHeader .closeButton{flex:none;width:auto;min-width:84px}.input{border:1px solid var(--border);background:var(--input-bg);border-radius:10px;width:100%;padding:10px 12px}.courseFormField{gap:6px;display:grid}.courseColorField{justify-items:start;gap:6px;display:grid}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;padding:12px}.tableScroll{width:100%;overflow-x:auto}.desktopOnly{display:block}.mobileOnly{display:none}.mobileCardList{gap:12px}.mobileRecordCard{border:1px solid var(--border);background:var(--card);border-radius:16px;gap:10px;padding:14px;display:grid}.recordHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.recordTitle{font-size:16px;font-weight:800}.recordMeta{gap:6px;font-size:14px;display:grid}.recordMetaRow{border-bottom:1px dashed var(--border);justify-content:space-between;gap:12px;padding-bottom:6px;display:flex}.recordActions{flex-wrap:wrap;gap:8px;display:flex}.statusBadge{color:#0369a1;white-space:nowrap;background:#e0f2fe;border-radius:999px;justify-content:center;align-items:center;padding:5px 8px;font-size:12px;font-weight:800;line-height:1;display:inline-flex}.scheduleFilterActions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.scheduleFilterDesktop{gap:12px;display:grid}.scheduleFilterMobile{display:none}.scheduleFilterSummary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;font-weight:800;list-style:none;display:flex}.scheduleFilterSummary::-webkit-details-marker{display:none}.scheduleFilterSummary:after{content:"展开";color:var(--primary);font-size:14px;font-weight:700}.scheduleFilterMobile[open] .scheduleFilterSummary:after{content:"收起"}.scheduleFilterBody{gap:12px;margin-top:12px;display:grid}.scheduleFilterFields{gap:12px;display:grid}.scheduleRangePresetList{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.scheduleRangePreset{border:1px solid var(--border);background:var(--surface-muted);min-height:34px;color:var(--muted);border-radius:9px;justify-content:center;align-items:center;padding:6px 11px;font-size:14px;font-weight:800;display:inline-flex}.scheduleRangePreset.active{border-color:var(--primary);background:var(--primary);color:var(--primary-foreground)}.scheduleFilterGrid{grid-template-columns:repeat(4,minmax(0,1fr))}.scheduleDateRangeFields{grid-template-columns:minmax(0,320px) 48px minmax(0,320px);align-items:center;gap:10px;width:100%;max-width:720px;display:grid}.scheduleDateRangeConnector{height:42px;display:block;position:relative}.scheduleDateRangeConnector:before{content:"";background:linear-gradient(90deg, transparent, var(--primary), transparent);border-radius:999px;height:2px;position:absolute;top:50%;left:-8px;right:-8px}@supports (color:color-mix(in lab, red, red)){.scheduleDateRangeConnector:before{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--primary) 55%, transparent), transparent)}}.scheduleDateRangeConnector:before{transform:translateY(-50%)}.scheduleDateRangeConnector:after{content:"";background:var(--primary);width:7px;height:7px;box-shadow:0 0 0 4px var(--primary);border-radius:999px;position:absolute;top:50%;left:50%}@supports (color:color-mix(in lab, red, red)){.scheduleDateRangeConnector:after{box-shadow:0 0 0 4px color-mix(in srgb, var(--primary) 14%, transparent)}}.scheduleDateRangeConnector:after{transform:translate(-50%,-50%)}.scheduleDateFilterField{align-items:center;gap:10px;min-width:0;display:flex}.scheduleDateFilterField .muted{white-space:nowrap;flex:none}.scheduleDateFilterField .input{min-width:0}.cancelReasonInput{min-width:180px}.scheduleEventTable{table-layout:fixed}.scheduleEventTable th,.scheduleEventTable td{overflow-wrap:anywhere}.scheduleEventTable .scheduleSelectCol{width:4%}.scheduleEventTable .scheduleTitleCol,.scheduleEventTable .scheduleParticipantCol{width:14%}.scheduleEventTable .scheduleTeacherCol{width:8%}.scheduleEventTable .scheduleRoomCol,.scheduleEventTable .scheduleStatusCol{width:4%}.scheduleEventTable .scheduleDateTimeCol{width:10%}.scheduleEventTable .scheduleActionsCol{width:30%}.scheduleActionColumn{min-width:0}.scheduleEventActions{flex-wrap:nowrap;align-items:center;gap:6px;width:100%;min-width:0;display:flex}.scheduleEventActions>*,.scheduleEventActions form{flex:none}.schedulePagination{justify-content:space-between;align-items:center;gap:12px;margin:12px;display:flex}.schedulePaginationSummary{font-weight:700}.schedulePaginationControls,.schedulePageNumberList{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.schedulePagination .button{border-radius:9px;min-height:36px;padding:7px 11px}.schedulePagination .disabledButton{cursor:not-allowed;opacity:.48;pointer-events:none}.schedulePageButtonActive{background:var(--primary);color:var(--primary-foreground);border-color:var(--primary)}.scheduleActionColumn .cancelEventForm{flex-wrap:nowrap;flex:none;align-items:center;gap:6px;min-width:0;display:flex}.scheduleActionColumn .cancelReasonInput{flex:0 0 clamp(96px,9vw,140px);width:clamp(96px,9vw,140px);min-width:72px;height:38px;padding:8px 10px;font-size:14px}.scheduleActionColumn .button{white-space:nowrap;border-radius:9px;min-width:58px;min-height:38px;padding:8px 10px;font-size:14px}.cancelEventButton{word-break:keep-all;writing-mode:horizontal-tb;background:#dc2626;flex:none;min-width:58px;white-space:nowrap!important;width:auto!important}@media (min-width:901px){.scheduleFilterGrid{grid-template-columns:repeat(6,minmax(0,1fr))!important}}.downloadButton{width:fit-content}.metricValue{margin-top:8px;font-size:34px;font-weight:800}.dashboardMobileHint{display:none}.batchScheduleActions{gap:12px;display:flex}.calendarZoomControls{display:none}.calendarViewport{width:100%}.calendarZoomSurface{min-width:100%;transition:width .18s}.scheduleUnsavedNotice{border:1px solid var(--warning);align-items:center;min-height:36px;padding:8px 12px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.scheduleUnsavedNotice{border:1px solid color-mix(in srgb, var(--warning) 55%, var(--border))}}.scheduleUnsavedNotice{background:var(--warning);border-radius:10px}@supports (color:color-mix(in lab, red, red)){.scheduleUnsavedNotice{background:color-mix(in srgb, var(--warning) 18%, var(--card))}}.scheduleUnsavedNotice{color:var(--warning)}@supports (color:color-mix(in lab, red, red)){.scheduleUnsavedNotice{color:color-mix(in srgb, var(--warning) 72%, var(--foreground))}}.scheduleUnsavedNotice{font-size:14px;font-weight:800}.scheduleSavePulseButton:not(:disabled){border-color:#facc15;animation:1.15s ease-in-out infinite scheduleSavePulse}@keyframes scheduleSavePulse{0%,to{border-color:#facc15;box-shadow:0 0 #facc1547,0 6px 14px #2563eb2e}50%{border-color:#fef08a;box-shadow:0 0 0 6px #facc155c,0 10px 24px #facc1533}}.calendarDayHeader{justify-content:center;align-items:center;gap:6px;min-width:0;display:inline-flex}.calendarCourseBadge{color:#15803d;white-space:nowrap;background:0 0;padding:0;font-size:10px;font-weight:700;line-height:1;display:inline}.iconButton{gap:6px}.classGroupDetail{gap:16px;display:grid}.detailSection{gap:12px;display:grid}.studentPillList{flex-wrap:wrap;gap:8px;display:flex}.studentPill{border:1px solid var(--border);background:var(--surface-muted);border-radius:999px;padding:6px 10px;font-weight:700}.printClassGroupButton{width:fit-content}.settingsMobileTabs{overflow-anchor:none;display:none}.settingsTabList{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:4px;display:grid}.settingsTabButton{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:6px;min-height:38px;padding:8px 10px;font-weight:800;display:inline-flex}.settingsTabButton.active{background:var(--primary);color:var(--primary-foreground);box-shadow:0 8px 18px #2563eb2e}.settingsTabButton span{background:#64748b24;border-radius:999px;justify-content:center;align-items:center;min-width:22px;min-height:22px;font-size:12px;display:inline-flex}.settingsTabButton.active span{background:#ffffff38}.settingsTabPanel{overflow-anchor:none;min-height:164px;margin-top:12px}.preferenceTimeRange{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.preferenceTimeRange label{gap:6px;display:grid}.adminTeachingTabs{gap:8px;padding-bottom:8px;display:flex;overflow-x:auto}.adminTeachingTab{border:1px solid var(--border);background:var(--surface-muted);min-height:38px;color:var(--muted);border-radius:10px;flex:none;padding:8px 14px;font-weight:800}.adminTeachingTab.active{border-color:var(--primary);background:var(--primary);color:var(--primary-foreground)}.adminTeachingPanel{margin-top:12px}.teachingMetricCard{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;min-height:104px;padding:16px}.defaultTeacherLabel{justify-content:center;align-items:center;min-height:38px;display:inline-flex}.backupMessageCard{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.backupStatusBox{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;gap:10px;margin-top:12px;padding:12px;display:grid}.backupOutput{color:#e2e8f0;white-space:pre-wrap;word-break:break-word;background:#0f172a;border-radius:10px;max-height:220px;margin:0;padding:12px;font-size:12px;overflow:auto}.authCard{gap:16px;width:min(460px,100%);display:grid}.authCard>.button{width:100%}.emailCodeField{grid-template-columns:minmax(0,1fr) minmax(112px,128px);align-items:center;gap:10px;display:grid}.emailCodeField .button{white-space:nowrap;width:100%}.authErrorMessage{color:var(--danger);margin:0;font-weight:700}.authSuccessMessage{color:var(--success);margin:0;font-weight:700}.authSwitchText{text-align:center;margin:0}.authSwitchText a{color:var(--primary);font-weight:800}.authSwitchDivider{color:var(--muted);margin:0 8px;display:inline-block}.passwordField{border:1px solid var(--border);background:var(--input-bg);border-radius:10px;grid-template-columns:minmax(0,1fr) 44px;align-items:center;width:100%;display:grid;overflow:hidden}.passwordField:focus-within{border-color:#111827;box-shadow:0 0 0 1px #111827}.passwordField .input{border:0;border-radius:0;width:100%;height:44px;padding-right:12px}.passwordField .input:focus{outline:none}.passwordToggleButton{border:0;border-left:1px solid var(--border);background:var(--secondary-bg);width:44px;height:44px;color:var(--secondary-text);cursor:pointer;z-index:2;appearance:none;-webkit-tap-highlight-color:transparent;border-radius:0;justify-content:center;align-items:center;display:inline-flex}.passwordToggleButton:hover{background:var(--secondary-hover);color:var(--secondary-text)}.passwordToggleButton:focus-visible{outline-offset:2px;outline:2px solid #93c5fd}.captchaField{grid-template-columns:minmax(0,1fr) 150px;align-items:center;gap:10px;display:grid}.captchaImageButton{border:1px solid var(--border);background:var(--surface-muted);cursor:pointer;border-radius:10px;width:150px;height:52px;padding:0;overflow:hidden}.captchaImageButton img{width:150px;height:52px;display:block}@media (max-width:900px){.scheduleFilterDesktop{display:none}.scheduleFilterMobile{display:block}.scheduleFilterGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboardDesktopHint{display:none}.dashboardMobileHint{display:block}.shell{min-height:100vh;display:block}.shellCollapsed{display:block}.sidebar{z-index:30;align-items:stretch;gap:14px;min-height:0;padding:0;position:relative}.sidebarHeader{z-index:1001;width:100%;padding:16px;position:relative}.brand{min-width:0}.brandText{display:block}.desktopSidebarToggle{display:none}.mobileMenuToggle{appearance:none;z-index:1002;flex:0 0 44px;justify-content:center;align-items:center;width:44px;min-width:44px;min-height:44px;font-size:24px;line-height:1;display:inline-flex;position:relative}.mobileMenuBackdrop{z-index:20;cursor:default;background:0 0;border:0;width:100%;padding:0;display:block;position:fixed;inset:84px 0 0}.nav{z-index:1000;background:var(--sidebar-bg);border:1px solid #ffffff1f;border-left:0;border-right:0;border-radius:0 0 14px 14px;gap:8px;width:100%;padding:12px 16px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 14px 34px #0f172a47}.sidebarFooter{margin-top:8px}.mobileMenuOpen .nav,.sidebarMobileMenuOpen .nav{flex-direction:column;display:flex!important}.nav a{white-space:normal}.sidebarGuideButton,.sidebarLogoutButton{justify-content:flex-start;align-items:center;display:flex}.shellCollapsed .brandText,.shellCollapsed .navLabel{display:inline}.shellCollapsed .navCompactLabel{display:none}.shellCollapsed .sidebar{align-items:stretch;padding:0}.shellCollapsed .brand,.shellCollapsed .nav a{justify-content:flex-start}.main{padding:16px}.topbar{flex-direction:column;align-items:flex-start;margin-bottom:16px}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}.toolbar{align-items:stretch}.fc .fc-toolbar{flex-direction:column;align-items:stretch;gap:8px}.fc .fc-toolbar-chunk{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.fc .fc-button{padding:.35em .5em}}@media (max-width:640px){.card{border-radius:14px;padding:14px}.grid{gap:12px}.grid-4,.grid-2{grid-template-columns:1fr}.card h2{font-size:18px;line-height:1.25}.card h3{font-size:16px;line-height:1.25}.muted{font-size:13px}.button,.input,.toolbar a.button,.toolbar button{width:100%}.toolbar .input{max-width:none!important}.toolbar{flex-direction:column;align-items:stretch}.captchaField{grid-template-columns:1fr}.authCard .captchaField{grid-template-columns:minmax(0,1fr) minmax(108px,132px);align-items:stretch}.authCard .captchaField .input{height:52px}.authCard .captchaImageButton,.authCard .captchaImageButton img,.captchaImageButton,.captchaImageButton img{width:100%}.preferenceTimeRange{grid-template-columns:1fr}.scheduleFilterCard{border-radius:12px;padding:12px;gap:8px!important}.scheduleFilterTitle{font-size:16px;line-height:1.25}.scheduleFilterGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.scheduleDateRangeFields{grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:start;gap:6px;width:100%;max-width:none;display:grid}.scheduleDateRangeConnector{z-index:0;height:38px;margin-top:22px}.scheduleDateRangeConnector:before{background:linear-gradient(90deg, transparent, var(--primary) 18%, var(--primary) 50%, var(--primary) 82%, transparent);left:-18px;right:-18px}@supports (color:color-mix(in lab, red, red)){.scheduleDateRangeConnector:before{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--primary) 65%, transparent) 18%, var(--primary) 50%, color-mix(in srgb, var(--primary) 65%, transparent) 82%, transparent)}}.scheduleDateFilterField{z-index:1;align-items:stretch;gap:4px;display:grid;position:relative}.scheduleDateFilterField .muted{line-height:18px}.scheduleDateFilterField .input[type=date]{appearance:none;height:38px;min-height:38px;line-height:20px;display:block}.scheduleFilterCard .input{border-radius:9px;min-height:38px;padding:8px 10px;font-size:14px}.scheduleFilterActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.scheduleFilterActions .button,.scheduleFilterActions button,.scheduleFilterActions a.button{border-radius:9px;width:100%;min-height:38px;padding:8px 10px;font-size:14px}.scheduleFilterActions>:last-child:nth-child(odd){grid-column:1/-1}.modalBackdrop{place-items:stretch stretch;padding:8px}.installPromptBanner{left:max(10px, env(safe-area-inset-left));right:max(10px, env(safe-area-inset-right));bottom:max(10px, env(safe-area-inset-bottom));border-radius:12px;grid-template-columns:36px minmax(0,1fr) auto 32px;gap:8px;padding:10px}.installPromptIcon{width:36px;height:36px}.installPromptText strong{font-size:14px}.installPromptText span{font-size:12px}.installPromptButton{width:auto;min-height:34px;padding:7px 14px;font-size:14px}.installPromptClose{width:32px;height:32px}.modalPanel{border-radius:16px;width:100%;max-height:calc(100vh - 16px);padding:14px}.modalHeader{z-index:2;background:var(--card);flex-direction:column;align-items:flex-start;padding:0 0 10px;position:sticky;top:-14px}.modalHeader .closeButton{align-self:stretch;width:100%}.modalPanel form{gap:10px!important}.modalPanel .grid{gap:10px}.studentCheckboxGrid{max-height:220px;padding-right:2px;overflow:auto}.studentCheckboxGrid label,fieldset label{line-height:1.35;align-items:flex-start!important}.studentQuickGrid .attendanceChoiceOption,.studentPickerList .attendanceChoiceOption{align-items:center!important}.studentSelectorHeader{flex-direction:column;align-items:stretch}.studentSelector{padding:10px}.scheduleSetupItem,.emptySelectionGuide{grid-template-columns:1fr}.scheduleSetupItem .button,.emptySelectionGuide .button{width:100%}.attendanceTopbar{grid-template-columns:minmax(0,1fr) auto;gap:8px 10px;margin-bottom:10px}.attendanceTabList{width:100%;padding:4px}.attendanceTabButton{min-height:36px;padding:6px 10px}.attendanceSelectionSummary{grid-area:2/1/auto/-1;justify-content:space-between;gap:8px;line-height:1.35}.attendanceClearButton{width:auto;min-height:34px;padding:6px 9px;font-size:13px}.attendanceFinderButton{width:auto;min-height:42px;padding:8px 12px}.studentQuickGrid,.studentPickerLayout{grid-template-columns:1fr}.studentPickerList{max-height:320px}.scheduleTimeGrid{grid-template-columns:1fr!important;gap:8px!important}.batchScheduleActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.batchScheduleActions .button{width:100%;min-height:38px;padding:8px 10px;font-size:14px}.batchPreviewScroll .table th,.batchPreviewScroll .table td{padding:8px;font-size:13px}.calendarZoomControls{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 10px;display:grid}.calendarZoomControls .button{border-radius:9px;width:100%;min-height:38px;padding:8px 10px;font-size:14px}.calendarZoomControls .button:disabled{cursor:not-allowed}.calendarViewport{overscroll-behavior-x:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch;padding-bottom:4px;overflow:auto hidden}.calendarZoomSurface{min-width:100%}.calendarDayHeader{flex-direction:column;gap:3px;line-height:1.15}.calendarCourseBadge{font-size:9px}.desktopOnly{display:none!important}.mobileOnly{display:block}.mobileOnly.mobileCardList{display:grid}.mobileRecordCard{border-radius:12px;gap:8px;padding:10px}.recordTitle{overflow-wrap:anywhere;font-size:15px;line-height:1.3}.recordMeta{gap:4px;font-size:13px}.recordHeader{flex-direction:column;gap:4px}.recordMetaRow{overflow-wrap:anywhere;grid-template-columns:64px minmax(0,1fr);align-items:start;gap:8px;padding-bottom:4px;display:grid}.recordActions .button,.recordActions form,.recordActions a.button{width:100%}.recordActions.compactActions,.mobileRecordCard .recordActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.scheduleBulkToolbar{text-align:left;grid-template-columns:1fr;gap:10px;padding:0 12px!important;display:grid!important}.scheduleBulkActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:stretch!important;display:grid!important}.scheduleSelectedCount{grid-column:1/-1}.schedulePagination{grid-template-columns:1fr;gap:8px;margin:10px 0;display:grid}.schedulePaginationControls{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.schedulePageNumberList{grid-column:1/-1;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;display:grid}.schedulePagination .button{width:100%;min-height:36px;padding:7px 6px;font-size:13px}.scheduleEventCardActions{grid-template-columns:repeat(2,minmax(0,1fr))!important}.scheduleEventCardActions .cancelEventForm{grid-column:1/-1;display:contents!important}.scheduleEventCardActions .scheduleEventActions{display:contents}.scheduleEventCardActions .cancelReasonInput{flex-basis:auto;grid-column:auto;width:100%;min-width:0}.scheduleEventCardActions .button,.scheduleEventCardActions .cancelEventButton{width:100%}.scheduleEventCardActions form:has(.dangerButton) .button{width:100%}.scheduleEventCardActions>div{display:contents!important}.scheduleEventCardActions form:has(.dangerButton){grid-column:auto}.mobileRecordCard .classGroupCardActions{gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))!important}.mobileRecordCard .classGroupCardActions>*{min-width:0}.mobileRecordCard .classGroupCardActions .button{white-space:nowrap;border-radius:8px;min-height:34px;padding:6px 4px;font-size:13px;line-height:1.15}.mobileRecordCard .userActions .defaultTeacherAction{grid-column:auto}.recordActions.compactActions .button,.recordActions.compactActions form,.mobileRecordCard .recordActions .button,.mobileRecordCard .recordActions form,.mobileRecordCard .recordActions a.button{width:100%}.mobileRecordCard .studentCardActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.mobileRecordCard .studentCardActions>*{min-width:0}.mobileRecordCard .studentCardActions .button{border-radius:8px;min-height:34px;padding:6px;font-size:13px;line-height:1.15}.largeModalPanel,.scheduleEditModalPanel{width:100%}.classGroupDetail{gap:12px}.detailSection{gap:10px}.studentPill{padding:5px 8px;font-size:13px}.printClassGroupButton,.downloadButton{width:100%}.settingsDesktopGrid{display:none}.settingsMobileTabs{overflow-anchor:none;gap:12px;display:grid}.settingsTabButton{width:100%}.settingsTabList,.settingsTabButton,.settingsTabPanel{overflow-anchor:none}.metricCard{padding:12px}.metricValue{margin-top:4px;font-size:28px}.collapsibleSummary{flex-direction:column;align-items:flex-start;padding:14px;font-size:17px}.collapsibleCard{padding:0}.courseListSummary{grid-template-columns:minmax(max-content,1fr) minmax(0,auto) minmax(max-content,1fr);align-items:center;gap:8px;padding:12px;font-size:16px;display:grid}.courseListHint{min-width:0;font-size:12px;line-height:1.25}.courseListSummary:after{font-size:14px}.collapsibleCard>:not(.collapsibleSummary){margin-left:14px;margin-right:14px}.collapsibleCard>:last-child{margin-bottom:14px}.fc .fc-toolbar-title{font-size:18px}.fc .fc-button{font-size:13px}.month-grid{grid-template-columns:1fr}.month-cell{min-height:auto}}@media print{body{background:#fff}.sidebar,.topbar,.no-print{display:none!important}.shell{display:block}.main{padding:0}.print-page,.card{box-shadow:none;border:0}@page{size:A4 landscape;margin:10mm}}.month-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.month-cell{border:1px solid var(--border);background:var(--card);border-radius:10px;min-height:120px;padding:8px}.print-event{background:var(--surface-muted);border-left:4px solid #2563eb;border-radius:6px;margin-top:6px;padding:4px 6px;font-size:12px}.fc{--fc-page-bg-color:var(--card);--fc-neutral-bg-color:var(--surface-muted);--fc-border-color:var(--border);--fc-button-bg-color:var(--primary);--fc-button-border-color:var(--primary);--fc-button-hover-bg-color:var(--primary-hover);--fc-button-hover-border-color:var(--primary-hover);--fc-today-bg-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.fc{--fc-today-bg-color:color-mix(in srgb, var(--primary) 14%, transparent)}}.fc-theme-standard td,.fc-theme-standard th{border-color:var(--border)}.fc-list-event:hover td{background-color:var(--surface-muted)!important}.fc-col-header-cell-cushion,.fc-timegrid-slot-label-cushion,.fc-list-day-text,.fc-list-day-side-text,.fc-list-event-title,.fc-list-event-time{color:var(--foreground)!important}.fc-list-day-cushion{background-color:var(--surface-muted)!important}.fc .fc-timegrid-cols{overflow:hidden}.fc .fc-timegrid-col-frame,.fc .fc-timegrid-now-indicator-container{overflow:visible}.fc .fc-timegrid-now-indicator-line{z-index:5;border-color:#dc2626;left:-100vw;right:-100vw}.fc .fc-event-resizer{cursor:ns-resize}.fc .fc-timegrid-event .fc-event-resizer{height:10px}.fc .fc-timegrid-event .fc-event-resizer-start{top:-4px}.fc .fc-timegrid-event .fc-event-resizer-end{bottom:-4px}.studentBulkActions{max-width:100%;overflow-x:auto}.studentBulkActionForm{flex-wrap:nowrap;align-items:center;gap:10px;min-width:max-content;display:flex}.studentBulkActionForm .input{flex:0 0 180px;width:180px;max-width:180px!important}.studentBulkSelectedCount{white-space:nowrap;flex:none}.studentBulkActionForm .button{white-space:nowrap;flex:none;width:auto}.preferenceForm{gap:10px;display:grid}@media (max-width:900px){.studentBulkActionForm{flex-wrap:wrap;row-gap:12px;min-width:0}.studentBulkActionForm .button{flex:1 0 100%;width:100%;margin-top:2px}}.themeSelector,.themeOptionButtonActive{margin-top:4px}.themeOptionGrid{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-width:480px;padding:4px;display:grid}.themeOptionButton{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:8px 10px;font-weight:800;transition:all .15s;display:inline-flex}.themeOptionButton:hover{color:var(--foreground)}.themeOptionButtonActive{background:var(--primary);box-shadow:0 8px 18px #2563eb2e;color:var(--primary-foreground)!important}@media (max-width:640px){.themeOptionGrid{grid-template-columns:1fr;gap:4px;max-width:100%}}.annualSummaryEntryCard{background:linear-gradient(135deg,#fff 0%,#eff6ff 48%,#f0fdf4 100%);border-color:#bfdbfe;justify-content:space-between;align-items:center;gap:16px;display:flex}.annualSummaryEntryCard h2{margin:0 0 6px}.annualSummaryEntryCard p{margin:0}.annualSummaryModalOverlay{z-index:1000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172ab3;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.annualSummaryCardContainer{aspect-ratio:9/16;background:#fff;border-radius:24px;flex-direction:column;width:375px;max-width:100%;height:667px;max-height:calc(100vh - 32px);display:flex;position:relative;overflow:hidden;box-shadow:0 24px 64px #0f172a59}.annualSummarySlidesWrapper{width:100%;height:100%;position:relative;overflow:hidden}.annualSummarySlide{opacity:0;pointer-events:none;background-position:50%;background-repeat:no-repeat;background-size:cover;grid-template-rows:132px minmax(0,1fr) auto;width:100%;height:100%;padding:0;transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1);display:grid;position:absolute;inset:0;transform:translate(100%)}.annualSummarySlideActive{opacity:1;pointer-events:auto;transform:translate(0)}.annualSummarySlidePrev{opacity:0;transform:translate(-100%)}.annualSummaryHeader{z-index:10;text-align:center;flex-direction:column;align-items:center;gap:5px;width:100%;padding:26px 28px 0;display:flex}.annualSummaryHeaderLight{padding-top:30px}.annualSummaryEyebrow{color:#2563eb;background:#ffffff7a;border:1px solid #ffffffb8;border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:4px 10px;font-size:10px;font-weight:900;line-height:1;display:inline-flex}.annualSummaryHeaderTitle{color:#1e3a8a;text-shadow:0 2px 8px #ffffffdb;letter-spacing:0;margin:0;font-size:26px;font-weight:900;line-height:1.16}.annualSummaryHeaderSub{color:#3b82f6;text-shadow:0 1px 4px #ffffffdb;margin:0;font-size:13px;font-weight:800;line-height:1.35}.annualSummaryMainArea{z-index:10;-webkit-backdrop-filter:blur(4px);background:linear-gradient(#ffffff47,#ffffff1f);border:1px solid #ffffff70;border-radius:22px;flex-direction:column;justify-content:center;align-self:center;align-items:center;width:min(82%,310px);min-height:158px;margin:0 auto;padding:16px 17px 18px;display:flex;box-shadow:0 14px 30px #1e40af12}.annualSummaryCoverSpacer{z-index:10;align-self:center;min-height:158px}.annualSummaryStatPill{color:#2563eb;background:#ffffffb8;border-radius:999px;justify-content:center;align-items:center;min-height:28px;margin-bottom:10px;padding:5px 12px;font-size:13px;font-weight:900;display:inline-flex}.annualSummaryBigNumber{color:#ea580c;text-shadow:0 3px 10px #ffffffeb;text-align:center;overflow-wrap:anywhere;max-width:100%;margin-bottom:10px;font-size:48px;font-weight:900;line-height:1.1}.annualSummaryBigNumber span{margin-left:4px;font-size:20px;font-weight:900}.annualSummaryCourseName{color:#16a34a;word-break:break-word;overflow-wrap:anywhere;font-size:30px;line-height:1.14}.annualSummaryClosingTitle{color:#ea580c;font-size:40px}.annualSummaryClosingArea{transform:translateY(clamp(-360px,369.55px - 65vh,-64px))}.annualSummarySubLabel{color:#2563eb;text-shadow:0 1px 4px #ffffffe6;text-align:center;max-width:100%;font-size:15px;font-weight:900;line-height:1.35}.annualSummaryFooterCard{-webkit-backdrop-filter:blur(12px);z-index:10;background:#fffc;border:1px solid #e2e8f09e;border-radius:16px;margin:0 20px 54px;padding:15px 16px;box-shadow:0 8px 24px #0f172a14}.annualSummaryFooterCardSky{background:#ffffffb3;border-color:#ffffffb8;margin:0;padding:13px 16px;position:absolute;top:clamp(148px,19%,190px);left:28px;right:28px;box-shadow:0 8px 24px #1e40af0f}.annualSummarySlide:has(.annualSummaryFooterCardSky){grid-template-rows:132px minmax(0,1fr) 130px}.annualSummaryFooterText{color:#334155;margin:0;font-size:14px;font-weight:700;line-height:1.58}.annualSummaryFooterTextCenter{text-align:center}.annualSummaryFooterText strong{color:#2563eb}.annualSummaryCloseButton{z-index:100;color:#475569;cursor:pointer;background:#ffffffd9;border:1px solid #00000014;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;font-weight:700;transition:all .15s;display:flex;position:absolute;top:16px;right:16px;box-shadow:0 2px 8px #00000014}.annualSummaryCloseButton:hover{color:#0f172a;background:#fff;transform:scale(1.05)}.annualSummaryArrowBtn{z-index:50;cursor:pointer;color:#2563eb;background:#ffffffe6;border:1px solid #e2e8f0cc;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;transition:all .15s;display:flex;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 4px 12px #0f172a14}.annualSummaryArrowBtn:hover:not(:disabled){background:#fff;transform:translateY(-50%)scale(1.08);box-shadow:0 4px 16px #0f172a1f}.annualSummaryArrowBtn:disabled{opacity:.3;cursor:not-allowed}.annualSummaryArrowLeft{left:-60px}.annualSummaryArrowRight{right:-60px}.annualSummaryDotsContainer{z-index:50;-webkit-backdrop-filter:blur(8px);background:#ffffff6b;border:1px solid #ffffff6b;border-radius:999px;align-items:center;gap:8px;padding:6px 8px;display:flex;position:absolute;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0f172a14}.annualSummaryDot{cursor:pointer;background:#33415552;border-radius:50%;width:8px;height:8px;transition:all .15s}.annualSummaryDotActive{background:#2563eb;border-radius:4px;width:20px}.annualSummaryStateContainer{text-align:center;background:#fff;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:32px;display:flex}.annualSummarySpinner{border:3px solid #e2e8f0;border-top-color:#2563eb;border-radius:50%;width:40px;height:40px;margin-bottom:16px;animation:.8s linear infinite annualSummarySpin}@keyframes annualSummarySpin{to{transform:rotate(360deg)}}@media (max-width:640px){.annualSummaryEntryCard{flex-direction:column;align-items:stretch}.annualSummaryCardContainer{border-radius:0;width:100vw;height:100vh;max-height:100%}.annualSummaryArrowBtn{display:none}.annualSummarySlide{grid-template-rows:126px minmax(0,1fr) auto}.annualSummarySlide:has(.annualSummaryFooterCardSky){grid-template-rows:126px minmax(0,1fr) 130px}.annualSummaryHeaderTitle{font-size:24px}.annualSummaryMainArea{width:min(84%,312px)}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
