@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;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}.visible{visibility:visible}.relative{position:relative}.sticky{position:sticky}.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}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}: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}.billingPage{max-width:1480px;margin:0 auto}.billingPage>*{min-width:0}.billingHero{background:linear-gradient(135deg, var(--card), var(--primary));justify-content:space-between;align-items:flex-end;gap:28px;display:flex}@supports (color:color-mix(in lab, red, red)){.billingHero{background:linear-gradient(135deg, var(--card), color-mix(in srgb, var(--primary) 5%, var(--card)))}}.billingHero h1{letter-spacing:0;font-size:clamp(26px,3vw,36px)}.billingTitleRow{align-items:center;gap:12px;display:flex}.billingPrivacyToggle{border:1px solid var(--border);background:var(--card);width:36px;height:36px;color:var(--muted);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;padding:0;transition:all .2s ease-in-out;display:inline-flex;position:relative;box-shadow:0 1px 2px #0f172a0a}.billingPrivacyToggle:hover{background:var(--surface-muted);color:var(--primary);border-color:var(--primary);transform:translateY(-1px)}.billingPrivacyToggle:active{transform:translateY(0)}.billingPrivacyToggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.billingPrivacyToggle.isMasked{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingPrivacyToggle.isMasked{border-color:color-mix(in srgb, var(--primary) 45%, var(--border))}}.billingPrivacyToggle.isMasked{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingPrivacyToggle.isMasked{background:color-mix(in srgb, var(--primary) 8%, var(--card))}}.billingPrivacyToggle.isMasked{color:var(--primary);box-shadow:0 0 0 1px var(--primary), 0 2px 8px var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingPrivacyToggle.isMasked{box-shadow:0 0 0 1px color-mix(in srgb, var(--primary) 22%, transparent), 0 2px 8px color-mix(in srgb, var(--primary) 16%, transparent)}}.billingPrivacyToggle.isMasked:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingPrivacyToggle.isMasked:hover{background:color-mix(in srgb, var(--primary) 15%, var(--card))}}.billingPrivacyToggle.isMasked:hover{border-color:var(--primary);color:var(--primary-hover)}.billingPrivacyIcon{z-index:2;transition:transform .2s;position:relative}.billingPrivacyToggle:hover .billingPrivacyIcon{transform:scale(1.08)}.billingRippleWave{border-radius:inherit;border:1.5px solid var(--primary);pointer-events:none;z-index:1;opacity:0;position:absolute;inset:-1px}.billingRippleWave1{animation:2.4s cubic-bezier(.2,.8,.35,1) infinite billingRipplePulse}.billingRippleWave2{animation:2.4s cubic-bezier(.2,.8,.35,1) 1.2s infinite billingRipplePulse}@keyframes billingRipplePulse{0%{opacity:.85;box-shadow:0 0 0 0 color-mix(in srgb, var(--primary) 45%, transparent);transform:scale(.96)}40%{opacity:.5}to{opacity:0;box-shadow:0 0 12px 2px color-mix(in srgb, var(--primary) 0%, transparent);transform:scale(1.68)}}@media (prefers-reduced-motion:reduce){.billingRippleWave{animation:none;display:none}}.eyebrow{color:var(--primary);letter-spacing:.12em;font-size:12px;font-weight:800}.billingMonthForm{flex-wrap:wrap;align-items:center;gap:12px;margin-top:6px;display:flex}.billingMonthLabel{color:var(--foreground);white-space:nowrap;font-size:15px;font-weight:700}.billingMonthFieldGroup{align-items:center;gap:10px;display:flex}.billingMonthFieldGroup .customMonthPickerContainer{min-width:195px;max-width:230px}.billingMonthFieldGroup .customMonthPickerTrigger{border-radius:10px;min-height:44px;padding:8px 14px;font-size:15px;font-weight:600}.billingMonthFieldGroup .customMonthPickerIcon{width:18px;height:18px}.billingMonthFieldGroup .button{white-space:nowrap;border-radius:10px;min-height:44px;padding:0 20px;font-size:15px;font-weight:700}.billingViewToolbar{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:16px;min-width:0;padding:2px 0;display:flex}.billingViewTabs{border:1px solid var(--border);background:var(--surface-muted);border-radius:8px;flex-shrink:0;grid-template-columns:repeat(2,minmax(88px,1fr));padding:3px;display:inline-grid}.billingViewTab{min-height:36px;color:var(--muted);font:inherit;letter-spacing:0;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:7px 14px;font-weight:700}.billingViewTab:hover:not(:disabled){color:var(--primary)}.billingViewTab.isActive{background:var(--card);color:var(--primary);box-shadow:0 1px 3px #0f172a1f}.billingViewTab:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.billingViewTab:disabled{cursor:not-allowed;opacity:.45}.billingClassPicker{align-items:center;gap:10px;min-width:0;display:flex}.billingClassPickerLabel{color:var(--muted);white-space:nowrap;font-size:13px;font-weight:700}.billingClassPicker .customSelectContainer{width:min(280px,45vw)}.billingViewPanel,.billingViewPanel>*{min-width:0}.billingMetrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.billingMetric{background:var(--card);align-content:space-between;min-height:112px;display:grid}.billingMetricValue{color:var(--text);font-size:28px;font-weight:800}.billingMaskedValue{letter-spacing:0;color:var(--muted);-webkit-user-select:none;user-select:none;font-family:inherit;font-weight:800}.billingMaskedTableValue{letter-spacing:0;color:var(--muted);-webkit-user-select:none;user-select:none;font-family:inherit}.billingSummaryHeading{align-items:center;margin-bottom:10px}.billingSummaryHeading h3,.billingSummaryHeading p{margin:0}.billingSummaryHeading p{margin-top:5px;font-size:13px}.billingExportButton,.billingStudentActions .button,.billingDetailHeader .button{white-space:nowrap;gap:7px}.billingSummaryTable{min-width:860px}.billingSummaryTable th:last-child,.billingSummaryTable td:last-child{width:230px}.billingStudentActions{align-items:center;gap:8px;display:flex}.billingMemberStatus{border:1px solid var(--border);background:var(--surface-muted);color:var(--muted);vertical-align:middle;border-radius:6px;margin-left:8px;padding:2px 6px;font-size:12px;font-weight:600;line-height:1.4;display:inline-flex}.modalPanel.billingStudentDetailModalPanel{width:min(1240px,100%)}.billingDetailHeader{justify-content:space-between;align-items:center;gap:16px;padding-bottom:14px;display:flex}.billingDetailHeader>div{gap:3px;display:grid}.billingDetailStats{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px;display:grid}.billingDetailStat{border-right:1px solid var(--border);gap:6px;min-width:0;padding:14px 16px;display:grid}.billingDetailStat:last-child{border-right:0}.billingDetailStat strong{font-size:20px}.billingDetailStatEmphasized strong{color:var(--primary)}.billingDetailTableScroll{max-height:min(52vh,560px)}.billingDetailTable{min-width:1100px}.billingDetailTable th{z-index:1;background:var(--card);white-space:nowrap;position:sticky;top:0}.billingDetailTable td{vertical-align:top}.billingDetailTable td>strong,.billingDetailSecondary{display:block}.billingDetailSecondary{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.35}.billingChargeStatus{border-radius:6px;align-items:center;min-height:24px;padding:3px 8px;font-size:12px;font-weight:700;display:inline-flex}.billingChargeStatus.isBillable{color:#166534;background:#dcfce7}.billingChargeStatus.isUnbilled{color:var(--muted);background:var(--surface-muted)}.billingDetailNote{color:var(--muted);margin:14px 0 0;font-size:12px}.billingNav{border:1px solid var(--border);background:var(--card);border-radius:16px;gap:8px;width:100%;padding:6px;display:flex}@supports (color:color-mix(in lab, red, red)){.billingNav{background:color-mix(in srgb, var(--card) 60%, var(--surface-muted) 40%)}}.billingNav{box-shadow:inset 0 1px 2px #0f172a08}.billingNav a,.billingNavItem{color:var(--muted);-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:12px;flex:1 1 0;justify-content:center;align-items:center;gap:12px;padding:10px 16px;text-decoration:none;transition:all .18s cubic-bezier(.16,1,.3,1);display:flex;position:relative}.billingNavIconWrapper{background:var(--foreground);border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.billingNavIconWrapper{background:color-mix(in srgb, var(--foreground) 5%, transparent)}}.billingNavIconWrapper{color:var(--muted);flex-shrink:0;transition:all .18s cubic-bezier(.16,1,.3,1)}.billingNavIcon{display:block}.billingNavTextBox{flex-direction:column;align-items:flex-start;gap:2px;min-width:0;display:flex}.billingNavTitle,.billingNav a span{color:var(--foreground);font-size:14px;font-weight:600;line-height:1.25;transition:color .18s}.billingNavDesc,.billingNav a small{color:var(--muted);white-space:nowrap;opacity:.85;font-size:11px;font-weight:500;line-height:1.2;transition:color .18s}.billingNav a:hover:not(.active),.billingNavItem:hover:not(.active){color:var(--foreground);background:var(--card)}@supports (color:color-mix(in lab, red, red)){.billingNav a:hover:not(.active),.billingNavItem:hover:not(.active){background:color-mix(in srgb, var(--card) 65%, transparent)}}.billingNav a:hover:not(.active) .billingNavIconWrapper{color:var(--foreground);background:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.billingNav a:hover:not(.active) .billingNavIconWrapper{background:color-mix(in srgb, var(--foreground) 9%, transparent)}}.billingNav a.active,.billingNavItem.active{color:var(--primary);background:var(--card);border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingNav a.active,.billingNavItem.active{border-color:color-mix(in srgb, var(--primary) 18%, var(--border))}}.billingNav a.active,.billingNavItem.active{box-shadow:0 1px 3px #0f172a0d,0 4px 14px -2px #2563eb17}.billingNav a.active .billingNavIconWrapper{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingNav a.active .billingNavIconWrapper{background:color-mix(in srgb, var(--primary) 12%, transparent)}}.billingNav a.active .billingNavIconWrapper{color:var(--primary);transform:scale(1.05)}.billingNav a.active .billingNavTitle,.billingNav a.active span{color:var(--primary);font-weight:700}.billingNav a.active .billingNavDesc,.billingNav a.active small{color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingNav a.active .billingNavDesc,.billingNav a.active small{color:color-mix(in srgb, var(--primary) 65%, var(--muted))}}.billingNav a.active .billingNavDesc,.billingNav a.active small{opacity:1}:root[data-theme=dark] .billingNav{background:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingNav{background:color-mix(in srgb, var(--surface-muted) 85%, var(--card) 15%)}}:root[data-theme=dark] .billingNav{border-color:var(--border);box-shadow:inset 0 1px 2px #00000040}:root[data-theme=dark] .billingNav a.active,:root[data-theme=dark] .billingNavItem.active{background:var(--card);border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingNav a.active,:root[data-theme=dark] .billingNavItem.active{border-color:color-mix(in srgb, var(--primary) 35%, var(--border))}}:root[data-theme=dark] .billingNav a.active,:root[data-theme=dark] .billingNavItem.active{box-shadow:0 2px 8px #00000059, 0 0 0 1px var(--primary)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingNav a.active,:root[data-theme=dark] .billingNavItem.active{box-shadow:0 2px 8px #00000059, 0 0 0 1px color-mix(in srgb, var(--primary) 25%, transparent)}}.billingSectionIntro h1{margin:4px 0 6px}.billingSectionIntro{gap:4px;display:grid}.attendanceIntroHeading{justify-content:space-between;align-items:center;gap:16px;min-width:0;display:flex}.attendanceIntroHeading>div{min-width:0}.attendanceQueryForm{flex-shrink:0}.attendanceIntroActions{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding-top:16px;display:flex}.monthlyAttendanceTabs .billingViewTab{text-align:center;text-decoration:none}.monthlyAttendanceFilters{flex-wrap:wrap;align-items:flex-end;gap:12px;min-width:0;display:flex}.monthlyAttendanceModes{border:1px solid var(--border);border-radius:8px;margin:0;padding:3px;display:flex}.monthlyAttendanceModes label{cursor:pointer;white-space:nowrap;border-radius:6px;padding:9px 12px;font-size:14px;position:relative}.monthlyAttendanceModes label.isActive{background:var(--card);color:var(--primary)}.monthlyAttendanceModes label:focus-within{outline:2px solid var(--primary)}.monthlyAttendanceModes input{clip-path:inset(50%);width:1px;height:1px;position:absolute}.monthlyAttendanceFilterField{gap:6px;width:200px;min-width:0;font-size:13px;display:grid}.monthlyAttendanceApply{min-height:38px}.monthlyAttendanceView,.monthlyAttendanceView>*{min-width:0}.monthlyAttendanceHeading h2{margin:0;font-size:22px}.monthlyAttendanceHeading p,.monthlyAttendanceNote{font-size:13px;line-height:1.6}.monthlyAttendanceStats{border-block:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:12px;padding:16px 0;display:grid}.monthlyAttendanceStats>div{gap:6px;min-width:0;font-size:13px;display:grid}.monthlyAttendanceStats strong{font-size:24px}.monthlyAttendanceScroll{max-height:650px}.monthlyAttendanceMatrix{width:max-content;min-width:100%}.monthlyAttendanceMatrix th,.monthlyAttendanceMatrix td{min-width:130px}.monthlyAttendanceMatrix td:nth-child(3){min-width:180px}.monthlyAttendanceMatrix thead th,.monthlyAttendanceSummary thead th,.monthlyAttendanceRecords thead th{z-index:1;background:var(--card);position:sticky;top:0}.monthlyAttendanceMatrix td:first-child>div{margin-top:6px}.monthlyAttendanceMatrix tfoot{background:var(--surface-muted);font-weight:700}.monthlyAttendanceSummary,.monthlyAttendanceRecords{min-width:980px}.monthlyAttendanceStatus{white-space:nowrap;border-radius:6px;padding:4px 7px;font-size:13px;display:inline-block}.monthlyAttendanceStatus.isPresent{color:#166534;background:#dcfce7}.monthlyAttendanceStatus.isException{color:#92400e;background:#fef3c7}.modalPanel.monthlyAttendanceDetailPanel{width:min(1160px,100%)}.attendanceExportTrigger{white-space:nowrap;flex-shrink:0;border-radius:8px!important;gap:5px!important;min-height:32px!important;padding:5px 12px!important;font-size:13px!important;font-weight:600!important}.attendanceExportTrigger svg{width:14px;height:14px}.modalPanel.attendanceExportPanel{border-radius:8px;align-self:center;width:min(560px,100%)}.attendanceExportFields{gap:16px;min-width:0;display:grid}.attendanceExportPeriod{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 12px;padding-bottom:14px;display:flex}.attendanceExportPeriod>span:last-child{margin-left:auto;font-size:13px}.attendanceExportPeriod .customMonthPickerContainer{width:100%;min-width:0;max-width:none}.attendanceExportMonthControl{width:190px;min-width:0;position:relative}.attendanceExportMonthControl .customMonthPickerTrigger{padding-right:34px}.attendanceExportMonthChevron{color:var(--muted);pointer-events:none;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.attendanceExportScope{border:0;min-width:0;margin:0;padding:0}.attendanceExportScope legend,.attendanceExportStudent>span,.attendanceExportClass>span{margin-bottom:8px;font-size:14px;font-weight:600}.attendanceExportScopeOptions,.attendanceExportModeOptions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.attendanceExportModeOptions{grid-template-columns:repeat(3,minmax(0,1fr))}.attendanceExportModeOptions label{position:relative}.attendanceExportModeOptions span{white-space:nowrap;font-size:14px}.attendanceExportScopeOptions label,.attendanceExportModeOptions label{border:1px solid var(--border);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:0;min-height:42px;padding:8px;display:flex}.attendanceExportScopeOptions label.isSelected,.attendanceExportModeOptions label.isSelected{border-color:var(--primary);background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceExportScopeOptions label.isSelected,.attendanceExportModeOptions label.isSelected{background:color-mix(in srgb, var(--primary) 6%, var(--card))}}.attendanceExportScopeOptions label.isSelected,.attendanceExportModeOptions label.isSelected{color:var(--primary)}.attendanceExportScopeOptions input,.attendanceExportModeOptions input{width:16px;height:16px;accent-color:var(--primary);margin:0}.attendanceExportModeOptions input{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.attendanceExportStudent,.attendanceExportClass{min-width:0;display:grid}.attendanceExportScopeNote,.attendanceExportEmptyNote{margin:8px 0 0;font-size:13px;line-height:1.6}.attendanceExportBasis summary{color:var(--muted);cursor:pointer;font-size:13px;font-weight:600}.attendanceExportBasis[open] summary{margin-bottom:12px}.attendanceExportEmptyNote{color:#b45309}.attendanceExportModeOptions label:focus-within,.attendanceExportScopeOptions label:focus-within{outline:2px solid var(--primary);outline-offset:2px}.attendanceExportContents{gap:6px;font-size:13px;line-height:1.6;display:grid}.attendanceExportDownload{justify-self:end;gap:8px}.billingSettingsHeader{gap:4px;padding:6px 4px 2px;display:grid}.billingSettingsHeader h1{margin:2px 0 0;font-size:30px}.billingSettingsHeader p{margin:2px 0 0}.billingSettingsList{gap:16px;display:grid}.billingSettingsTable{min-width:900px}.billingSettingsDescription{margin:6px 0 0}.billingSettingsListHeading{align-items:center}.billingRowActions{align-items:center;gap:8px;min-width:220px;display:flex}.billingCompactAction{white-space:nowrap;justify-content:center;align-items:center;gap:6px;min-height:34px;padding:7px 10px;display:inline-flex}.modalTriggerWithIcon{justify-content:center;align-items:center;gap:6px;display:inline-flex}.billingSettingsAddButton{white-space:nowrap;flex:none}.billingSettingsModalPanel{width:min(780px,100%)}.billingDeleteModalPanel{width:min(520px,100%)}.billingDeleteForm{gap:18px}.button.billingDeleteAction{border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.button.billingDeleteAction{border-color:color-mix(in srgb, var(--danger) 32%, var(--border))}}.button.billingDeleteAction{background:var(--danger)}@supports (color:color-mix(in lab, red, red)){.button.billingDeleteAction{background:color-mix(in srgb, var(--danger) 7%, var(--card))}}.button.billingDeleteAction{color:var(--danger)}.button.billingDeleteAction:hover:not(:disabled){border-color:var(--danger)}@supports (color:color-mix(in lab, red, red)){.button.billingDeleteAction:hover:not(:disabled){border-color:color-mix(in srgb, var(--danger) 58%, var(--border))}}.button.billingDeleteAction:hover:not(:disabled){background:var(--danger)}@supports (color:color-mix(in lab, red, red)){.button.billingDeleteAction:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 13%, var(--card))}}.button.billingDeleteAction:hover:not(:disabled){color:var(--danger-hover);box-shadow:0 6px 14px #dc26261f}.billingDeleteWarning{border-left:3px solid var(--danger);background:var(--danger);margin:0;padding:12px 14px}@supports (color:color-mix(in lab, red, red)){.billingDeleteWarning{background:color-mix(in srgb, var(--danger) 7%, var(--card))}}.billingDeleteWarning{color:var(--foreground);line-height:1.65}.billingSettingsModalForm{gap:16px}.billingSettingsModalDescription,.billingFormError{margin:0}.billingFormError{color:var(--danger)}.billingChargeLeaveField{align-items:center;gap:8px;display:flex}.billingModalActions{justify-content:flex-end;display:flex}.sectionHeadingRow{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.attendanceTitle{min-width:0}.attendanceTitleLine{align-items:center;gap:10px;display:flex}.attendanceHint{color:var(--success);background:var(--success)}@supports (color:color-mix(in lab, red, red)){.attendanceHint{background:color-mix(in srgb, var(--success) 10%, var(--card))}}.attendanceHint{border:1px solid var(--success)}@supports (color:color-mix(in lab, red, red)){.attendanceHint{border:1px solid color-mix(in srgb, var(--success) 25%, var(--border))}}.attendanceHint{white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:700}.billingPagination{background:var(--card);align-items:center;gap:12px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.billingPagination{background:color-mix(in srgb, var(--card) 65%, var(--surface-muted) 35%)}}.billingPagination{border:1px solid var(--border);-webkit-user-select:none;user-select:none;border-radius:12px;flex-shrink:0;padding:4px 6px 4px 12px;box-shadow:0 1px 3px #0f172a08}.billingPaginationInfo{color:var(--muted);white-space:nowrap;align-items:center;gap:8px;font-size:13px;display:flex}.billingPaginationTotal{opacity:.85;font-weight:500}.billingPaginationTotal:after{content:"•";opacity:.45;margin-left:8px}.billingPaginationPageText strong{color:var(--foreground);font-weight:700}.billingPaginationActions{align-items:center;gap:6px;display:flex}.billingPaginationBtn{border:1px solid var(--border);background:var(--card);height:32px;color:var(--foreground);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:4px;padding:0 10px;font-size:13px;font-weight:600;text-decoration:none;transition:all .16s cubic-bezier(.16,1,.3,1);display:inline-flex;box-shadow:0 1px 2px #0f172a0a}.billingPaginationBtn:hover:not(.disabled){background:var(--surface-muted);border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.billingPaginationBtn:hover:not(.disabled){border-color:color-mix(in srgb, var(--primary) 35%, var(--border))}}.billingPaginationBtn:hover:not(.disabled){color:var(--primary);transform:translateY(-.5px);box-shadow:0 2px 6px #2563eb14}.billingPaginationBtn.disabled{opacity:.35;cursor:not-allowed;color:var(--muted);box-shadow:none;pointer-events:none;background:0 0;border-color:#0000}:root[data-theme=dark] .billingPagination{background:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingPagination{background:color-mix(in srgb, var(--surface-muted) 80%, var(--card) 20%)}}:root[data-theme=dark] .billingPagination{border-color:var(--border)}:root[data-theme=dark] .billingPaginationBtn{background:var(--card);border-color:var(--border);box-shadow:0 1px 3px #0000004d}:root[data-theme=dark] .billingPaginationBtn:hover:not(.disabled){background:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingPaginationBtn:hover:not(.disabled){background:color-mix(in srgb, var(--primary) 15%, var(--card))}}:root[data-theme=dark] .billingPaginationBtn:hover:not(.disabled){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .billingPaginationBtn:hover:not(.disabled){border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}}:root[data-theme=dark] .billingPaginationBtn:hover:not(.disabled){color:var(--primary)}.attendanceTable{min-width:980px}.attendanceTable th,.attendanceTable td{vertical-align:middle;padding:12px 14px}.attendanceTime{white-space:nowrap;width:150px}.attendanceClass{width:150px;font-weight:700}.attendanceActionForm{grid-template-columns:minmax(150px,1.25fr) minmax(100px,.75fr) auto;align-items:center;gap:8px;min-width:430px;display:grid}.attendanceActionForm .input{width:100%;min-width:0;min-height:38px;padding:7px 10px}.attendanceActionForm .button{white-space:nowrap;min-height:38px;padding:7px 14px}.attendanceCurrent{min-width:180px;font-size:14px}.attendanceExceptionCell{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.attendanceExceptionText{color:var(--text);word-break:break-all;line-height:1.4}.attendanceExceptionDefault{color:var(--muted)}.attendanceDetailBtn{flex-shrink:0;white-space:nowrap!important;border-radius:6px!important;min-height:28px!important;padding:2px 10px!important;font-size:12px!important;font-weight:500!important;line-height:1.3!important}.attendanceDetailModalPanel{max-width:720px;width:min(720px,100%)!important;padding:24px 28px!important}.attendanceDetailModalBody{flex-direction:column;gap:22px;margin-top:18px;display:flex}.attendanceDetailMetaGrid{background:var(--secondary-bg);border:1px solid var(--border);border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:16px 20px;display:grid}.attendanceDetailMetaItem{flex-direction:column;gap:5px;display:flex}.attendanceDetailMetaLabel{color:var(--muted);font-size:13px;font-weight:500}.attendanceDetailMetaValue{color:var(--text);font-size:15px;font-weight:700}.attendanceDetailSection{flex-direction:column;gap:12px;display:flex}.attendanceDetailSectionTitle{color:var(--text);margin:0;font-size:15px;font-weight:700}.attendanceDetailStudentGrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.attendanceDetailStudentCard{background:var(--card);border:1px solid var(--border);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 2px 8px #0f172a0a}.attendanceDetailStudentCard:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.attendanceDetailStudentCard:hover{border-color:color-mix(in srgb, var(--primary) 35%, var(--border))}}.attendanceDetailStudentCard:hover{box-shadow:0 4px 14px #0f172a14}.attendanceDetailStudentAvatar{background:var(--primary);border-radius:50%;width:36px;height:36px}@supports (color:color-mix(in lab, red, red)){.attendanceDetailStudentAvatar{background:color-mix(in srgb, var(--primary) 12%, var(--card))}}.attendanceDetailStudentAvatar{color:var(--primary);border:1px solid var(--primary);flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}@supports (color:color-mix(in lab, red, red)){.attendanceDetailStudentAvatar{border:1px solid color-mix(in srgb, var(--primary) 20%, transparent)}}.attendanceDetailStudentInfo{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.attendanceDetailStudentName{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.attendanceDetailStudentClass{color:var(--muted);font-size:12px}.attendanceDetailStatusBadge{border:1px solid #0000;border-radius:9999px;flex-shrink:0;align-items:center;gap:6px;padding:4px 12px;font-size:13px;font-weight:600;display:inline-flex}.attendanceDetailStatusDot{border-radius:50%;width:7px;height:7px;display:inline-block}.attendanceDetailNormalList{flex-wrap:wrap;gap:8px;display:flex}.attendanceDetailNormalStudent{background:var(--secondary-bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:5px 12px;font-size:13px;font-weight:500;display:inline-block}@media (max-width:760px){.monthlyAttendanceFilters{flex-direction:column;align-items:stretch}.monthlyAttendanceModes{justify-content:space-between}.monthlyAttendanceFilterField{width:100%}.monthlyAttendanceStats{grid-template-columns:repeat(2,minmax(0,1fr))}.attendanceIntroHeading{flex-direction:column;align-items:stretch}.attendanceExportTrigger,.attendanceExportDownload{width:100%}.attendanceQueryForm{flex-shrink:1}.attendanceExportPeriod{flex-direction:column;align-items:stretch}.attendanceExportPeriod .customMonthPickerContainer{width:100%;max-width:none}.attendanceExportMonthControl{width:100%}.attendanceExportPeriod>span:last-child{margin-left:0}.billingHero{flex-direction:column;align-items:stretch}.billingMonthForm{min-width:0}.billingMetrics{grid-template-columns:1fr}.billingViewToolbar{flex-direction:column;align-items:stretch}.billingViewTabs{width:100%}.billingClassPicker{flex-direction:column;align-items:stretch;gap:6px}.billingClassPicker .customSelectContainer,.billingSummaryHeading .billingExportButton,.billingDetailHeader .button{width:100%}.billingDetailHeader{flex-direction:column;align-items:stretch}.billingDetailStats{grid-template-columns:repeat(2,minmax(0,1fr))}.billingDetailStat:nth-child(2){border-right:0}.billingDetailStat:nth-child(-n+2){border-bottom:1px solid var(--border)}.billingNav{border-radius:12px;gap:4px;padding:4px;overflow-x:auto}.billingNav a,.billingNavItem{border-radius:9px;gap:6px;padding:8px 6px}.billingNavIconWrapper{border-radius:7px;width:28px;height:28px}.billingNavIcon{width:15px;height:15px}.billingNavTitle,.billingNav a span{font-size:13px}.billingNavDesc,.billingNav a small{display:none}.sectionHeadingRow{flex-direction:column;gap:12px}.billingPagination{grid-template-columns:minmax(0,1fr);gap:8px;width:100%;padding:8px;display:grid}.billingPaginationInfo{justify-content:space-between;width:100%}.billingPaginationActions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.billingPaginationBtn{width:100%;min-width:0}.attendanceCard .tableScroll{overflow:visible}.attendanceTable{min-width:0;display:block}.attendanceTable thead{display:none}.attendanceTable tbody{display:grid}.attendanceTable tr{border-bottom:1px solid var(--border);min-width:0;padding:12px 0;display:grid}.attendanceTable tr:last-child{border-bottom:0}.attendanceTable td,.attendanceTable th{width:auto;min-width:0}.attendanceTable td{border-bottom:0;grid-template-columns:82px minmax(0,1fr);align-items:start;gap:10px;padding:7px 0;display:grid}.attendanceTable td:before{content:attr(data-label);color:var(--muted);font-size:12px;font-weight:600;line-height:1.5}.attendanceActionForm{grid-template-columns:minmax(0,1fr);width:100%;min-width:0}.attendanceActionForm .button{width:100%}.attendanceCurrent{font-size:13px}.attendanceExceptionCell{align-items:flex-start}.attendanceDetailBtn{width:auto!important}}.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;-webkit-backdrop-filter:blur(6px);background:#0f172a99;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modalPanel{background:var(--card);border:1px solid var(--border);border-radius:18px;width:min(920px,100%);max-height:min(86vh,900px);padding:20px;overflow:auto;box-shadow:0 24px 60px -12px #0f172a40,0 0 0 1px #0f172a0d}:root[data-theme=dark] .modalBackdrop{-webkit-backdrop-filter:blur(8px);background:#020617cc}:root[data-theme=dark] .modalPanel{background:#141d31;border:1px solid #94a3b847;box-shadow:0 0 0 1px #ffffff14,0 25px 65px -12px #000000f2,0 0 50px #000c}:root[data-theme=dark] .modalPanel .table th,:root[data-theme=dark] .billingDetailTable th{background:#141d31}.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)}}.customSelectContainer{width:100%;display:block}.customSelectTrigger{border:1px solid var(--border);background:var(--input-bg);width:100%;min-height:42px;color:var(--foreground);text-align:left;cursor:pointer;border-radius:10px;outline:none;justify-content:space-between;align-items:center;padding:8px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s,background-color .15s;display:flex;box-shadow:0 1px 2px #0f172a08}.customSelectSm .customSelectTrigger{border-radius:8px;min-height:36px;padding:6px 10px;font-size:13px}.customSelectTrigger:hover:not(:disabled){border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customSelectTrigger:hover:not(:disabled){border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}}.customSelectTrigger:disabled{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.customSelectTrigger:disabled{border-color:color-mix(in srgb, var(--border) 82%, var(--muted))}}.customSelectTrigger:disabled{background:var(--surface-muted)}@supports (color:color-mix(in lab, red, red)){.customSelectTrigger:disabled{background:color-mix(in srgb, var(--surface-muted) 88%, var(--card))}}.customSelectTrigger:disabled{color:var(--muted);cursor:not-allowed;opacity:1;box-shadow:none}.customSelectTrigger:disabled .customSelectLabel{color:var(--muted)}.customSelectLock{color:var(--muted);opacity:.72;flex-shrink:0}.customSelectTrigger.open,.customSelectTrigger:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)}@supports (color:color-mix(in lab, red, red)){.customSelectTrigger.open,.customSelectTrigger:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 15%, transparent)}}.customSelectValue{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.customSelectLabel{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;display:inline-flex;overflow:hidden}.customSelectPlaceholder{color:var(--muted);opacity:.8}.customSelectDot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.customSelectChevron{color:var(--muted);flex-shrink:0;margin-left:8px;transition:transform .2s cubic-bezier(.16,1,.3,1)}.customSelectChevron.rotate{transform:rotate(180deg)}.customSelectDropdown{z-index:100;background:var(--card);border:1px solid var(--border);border-radius:12px;min-width:100%;padding:4px;animation:.15s ease-out dropdownPopIn;position:absolute;top:calc(100% + 6px);left:0;right:0;box-shadow:0 10px 25px -5px #0f172a1a,0 8px 10px -6px #0f172a14}.customSelectDropdownPortal{z-index:100;box-sizing:border-box!important;min-width:0!important;position:fixed!important;bottom:auto!important;right:auto!important}.customSelectDropdownPortal.openUpward{animation:.15s ease-out dropdownPopUp;bottom:auto!important}.customSelectSearch{border:1px solid var(--border);background:var(--input-bg);color:var(--muted);border-radius:8px;align-items:center;gap:8px;margin:2px 2px 6px;padding:7px 9px;display:flex}.customSelectSearch:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary)}@supports (color:color-mix(in lab, red, red)){.customSelectSearch:focus-within{box-shadow:0 0 0 2px color-mix(in srgb, var(--primary) 12%, transparent)}}.customSelectSearch input{width:100%;min-width:0;color:var(--foreground);font:inherit;letter-spacing:0;background:0 0;border:0;outline:0;padding:0;font-size:13px}.customSelectSearch input::placeholder{color:var(--muted)}.customSelectOptions{flex-direction:column;gap:2px;max-height:240px;display:flex;overflow-y:auto}.customSelectOption{width:100%;color:var(--foreground);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:13px;transition:background-color .12s,color .12s;display:flex}.customSelectOption:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customSelectOption:hover{background:color-mix(in srgb, var(--primary) 8%, var(--surface-muted))}}.customSelectOption:hover{color:var(--primary)}.customSelectOption.selected{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customSelectOption.selected{background:color-mix(in srgb, var(--primary) 12%, transparent)}}.customSelectOption.selected{color:var(--primary);font-weight:600}.customSelectOptionContent{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;display:inline-flex;overflow:hidden}.customSelectCheck{color:var(--primary);flex-shrink:0;margin-left:8px}.customSelectEmpty{color:var(--muted);text-align:center;padding:16px 10px;font-size:13px}.customDatePickerContainer{width:100%;display:block}.customDatePickerTrigger{border:1px solid var(--border);background:var(--input-bg);width:100%;min-height:42px;color:var(--foreground);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:10px;outline:none;justify-content:space-between;align-items:center;padding:8px 14px;font-size:14px;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #0f172a08}.customDatePickerTrigger:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customDatePickerTrigger:hover{border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}}.customDatePickerTrigger.open,.customDatePickerTrigger:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)}@supports (color:color-mix(in lab, red, red)){.customDatePickerTrigger.open,.customDatePickerTrigger:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 15%, transparent)}}.customDatePickerTriggerLeft{align-items:center;gap:8px;min-width:0;display:flex}.customDatePickerLabel{color:var(--muted);white-space:nowrap;margin-right:2px;font-size:13px;font-weight:500}.customDatePickerIcon{color:var(--muted);flex-shrink:0}.customDatePickerText{color:var(--foreground);font-size:13.5px;font-weight:500}.customDatePickerText.placeholder{color:var(--muted);opacity:.75}.customDatePickerTriggerRight{align-items:center;display:flex}.customDatePickerClearBtn{background:var(--muted);border:none;justify-content:center;align-items:center;width:20px;height:20px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.customDatePickerClearBtn{background:color-mix(in srgb, var(--muted) 15%, transparent)}}.customDatePickerClearBtn{color:var(--muted);cursor:pointer;border-radius:50%;padding:0;transition:all .12s}.customDatePickerClearBtn:hover{background:var(--danger)}@supports (color:color-mix(in lab, red, red)){.customDatePickerClearBtn:hover{background:color-mix(in srgb, var(--danger) 15%, transparent)}}.customDatePickerClearBtn:hover{color:var(--danger)}.customDatePickerPopover{z-index:100;background:var(--card);border:1px solid var(--border);border-radius:14px;width:280px;padding:12px;animation:.15s ease-out dropdownPopIn;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 28px -4px #0f172a1f,0 8px 12px -6px #0f172a14}.customDatePickerPopoverPortal{z-index:100;position:fixed}.customDatePickerHeader{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.customDatePickerMonthTitle{color:var(--foreground);font-size:14px;font-weight:700}.customDatePickerNavBtn{border:1px solid var(--border);background:var(--surface-muted);width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.customDatePickerNavBtn:hover{background:var(--card);color:var(--primary);border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customDatePickerNavBtn:hover{border-color:color-mix(in srgb, var(--primary) 30%, var(--border))}}.customDatePickerWeekdays{text-align:center;grid-template-columns:repeat(7,1fr);margin-bottom:6px;display:grid}.customDatePickerWeekday{color:var(--muted);padding:4px 0;font-size:11px;font-weight:600}.customDatePickerGrid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.customDatePickerCell{aspect-ratio:1;color:var(--foreground);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:500;transition:all .12s;display:flex}.customDatePickerCell:hover:not(.selected){background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customDatePickerCell:hover:not(.selected){background:color-mix(in srgb, var(--primary) 10%, var(--surface-muted))}}.customDatePickerCell:hover:not(.selected){color:var(--primary)}.customDatePickerCell.otherMonth{color:var(--muted);opacity:.35}.customDatePickerCell.today:not(.selected){color:var(--primary);font-weight:700;position:relative}.customDatePickerCell.today:not(.selected):after{content:"";background:var(--primary);border-radius:50%;width:4px;height:4px;position:absolute;bottom:3px}.customDatePickerCell.selected{background:var(--primary);color:var(--primary-foreground);font-weight:700;box-shadow:0 2px 6px #2563eb40}.customDatePickerFooter{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:10px;padding-top:8px;display:flex}.customDatePickerFooterBtn{color:var(--primary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:600;transition:background-color .12s}.customDatePickerFooterBtn:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customDatePickerFooterBtn:hover{background:color-mix(in srgb, var(--primary) 10%, transparent)}}.customDatePickerFooterBtn.clear{color:var(--muted)}.customDatePickerFooterBtn.clear:hover{color:var(--danger);background:var(--danger)}@supports (color:color-mix(in lab, red, red)){.customDatePickerFooterBtn.clear:hover{background:color-mix(in srgb, var(--danger) 10%, transparent)}}:root[data-theme=dark] .customSelectDropdown,:root[data-theme=dark] .customDatePickerPopover{background:var(--card);border-color:var(--border);box-shadow:0 12px 28px -4px #00000080,0 0 0 1px #ffffff0d}:root[data-theme=dark] .customSelectOption:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){:root[data-theme=dark] .customSelectOption:hover{background:color-mix(in srgb, var(--primary) 15%, var(--card))}}@keyframes dropdownPopIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.customSelectDropdown.openUpward,.customDatePickerPopover.openUpward,.customMonthPickerPopover.openUpward{animation:.15s ease-out dropdownPopUp;top:auto;bottom:calc(100% + 6px)}@keyframes dropdownPopUp{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.customMonthPickerContainer{min-width:170px;max-width:200px;display:inline-block}.customMonthPickerTrigger{border:1px solid var(--border);background:var(--input-bg);width:100%;min-height:38px;color:var(--foreground);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:9px;outline:none;align-items:center;gap:8px;padding:6px 12px;font-size:13.5px;font-weight:600;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #0f172a08}.customMonthPickerTrigger:hover{border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerTrigger:hover{border-color:color-mix(in srgb, var(--primary) 40%, var(--border))}}.customMonthPickerTrigger.open,.customMonthPickerTrigger:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerTrigger.open,.customMonthPickerTrigger:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--primary) 15%, transparent)}}.customMonthPickerIcon{color:var(--muted);flex-shrink:0}.customMonthPickerText{white-space:nowrap;font-weight:600}.customMonthPickerText.placeholder{color:var(--muted);opacity:.75;font-weight:400}.customMonthPickerPopover{z-index:100;background:var(--card);border:1px solid var(--border);border-radius:14px;width:240px;padding:12px;animation:.15s ease-out dropdownPopIn;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 12px 28px -4px #0f172a1f,0 8px 12px -6px #0f172a14}.customMonthPickerHeader{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.customMonthPickerYearTitle{color:var(--foreground);font-size:14px;font-weight:700}.customMonthPickerNavBtn{border:1px solid var(--border);background:var(--surface-muted);width:28px;height:28px;color:var(--muted);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;transition:all .15s;display:inline-flex}.customMonthPickerNavBtn:hover{background:var(--card);color:var(--primary);border-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerNavBtn:hover{border-color:color-mix(in srgb, var(--primary) 30%, var(--border))}}.customMonthPickerGrid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.customMonthPickerCell{background:var(--surface-muted);height:38px;color:var(--foreground);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:600;transition:all .12s;display:flex}.customMonthPickerCell:hover:not(.selected){background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerCell:hover:not(.selected){background:color-mix(in srgb, var(--primary) 12%, var(--surface-muted))}}.customMonthPickerCell:hover:not(.selected){color:var(--primary)}.customMonthPickerCell.current:not(.selected){border:1px solid var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerCell.current:not(.selected){border:1px solid color-mix(in srgb, var(--primary) 35%, var(--border))}}.customMonthPickerCell.current:not(.selected){color:var(--primary)}.customMonthPickerCell.selected{background:var(--primary);color:var(--primary-foreground);font-weight:700;box-shadow:0 2px 6px #2563eb40}.customMonthPickerFooter{border-top:1px solid var(--border);justify-content:flex-end;align-items:center;margin-top:10px;padding-top:8px;display:flex}.customMonthPickerFooterBtn{color:var(--primary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:600;transition:background-color .12s}.customMonthPickerFooterBtn:hover{background:var(--primary)}@supports (color:color-mix(in lab, red, red)){.customMonthPickerFooterBtn:hover{background:color-mix(in srgb, var(--primary) 10%, transparent)}}:root[data-theme=dark] .customMonthPickerPopover{background:var(--card);border-color:var(--border);box-shadow:0 12px 28px -4px #00000080,0 0 0 1px #ffffff0d}.srOnly{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@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}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
