@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;600&display=swap";:root{font-family:Plus Jakarta Sans,sans-serif;color:#1a1814;background:#f0f0eb;line-height:1.5;font-weight:500;color-scheme:light;--navy-950: #111827;--navy-900: #172133;--navy-800: #22324b;--navy-700: #2f4767;--brand-primary: #1a56db;--brand-primary-strong: #1447b8;--brand-primary-soft: rgba(26, 86, 219, .1);--blue-600: #1b5fa6;--blue-500: #2b77c7;--slate-700: #495a6d;--slate-500: #778497;--surface: rgba(255, 255, 255, .98);--surface-strong: #ffffff;--border: #e8e8e8;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-soft: 0 4px 12px rgba(0, 0, 0, .08);--radius-xl: 14px;--radius-lg: 14px;--radius-md: 10px;--font-mono: "JetBrains Mono", monospace;--sidebar-width: 236px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:#f0f0eb}.app-background{min-height:100vh;padding:20px}body,button,input,select,textarea{font:inherit}a{color:var(--blue-600);text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid color-mix(in srgb,var(--theme-primary, var(--blue-600)) 72%,white);outline-offset:2px}#root{min-height:100vh}.pwa-update-banner{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:1400;display:inline-flex;align-items:center;gap:12px;padding:10px 14px;border-radius:999px;border:1px solid rgba(26,86,219,.22);background:#fffffffa;box-shadow:0 16px 30px #11182724;color:#1c2432;font-size:.86rem;font-weight:700}.pwa-update-button{min-height:44px;padding:0 12px;border:0;border-radius:999px;background:var(--brand-primary);color:#fff;font-size:.82rem;font-weight:700;cursor:pointer}.pwa-update-button:hover{background:var(--brand-primary-strong)}.screen-center{min-height:100vh;display:grid;place-items:center}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px 20px;background:radial-gradient(circle at top left,rgba(43,119,199,.08),transparent 32%),linear-gradient(180deg,#f7f8fb,#eef2f6)}.brand-logo-link{display:inline-flex;align-items:center;justify-content:flex-start;width:fit-content;border-radius:18px;text-decoration:none;transition:transform .18s ease,opacity .18s ease,box-shadow .18s ease}.brand-logo-link:hover{transform:translateY(-1px);opacity:.96}.brand-logo-link:focus-visible{outline:2px solid rgba(133,183,235,.82);outline-offset:4px}.brand-logo-image{display:block;width:100%;height:auto}.brand-logo-link-login{max-width:min(180px,40vw)}.brand-logo-image-login{max-width:100%}.hero-chip,.nav-tag,.role-pill,.role-indicator,.meta-pill,.status-badge,.plan-badge{border-radius:999px;padding:7px 12px;border:none;font-weight:700}.hero-chip{width:fit-content;margin-bottom:16px;background:#1b5fa638;color:#f8fbff;border:1px solid rgba(133,183,235,.22)}.login-panel{width:min(760px,100%);padding:30px 34px 28px;display:grid;gap:0;background:#fffffffa;color:#172133;border-radius:24px;border:1px solid rgba(190,205,225,.68);box-shadow:0 24px 50px #2143701f;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.login-panel-header{display:grid;gap:18px;margin-bottom:0}.login-panel-brand-copy h1{margin:0 0 8px;font-size:clamp(2rem,3.2vw,3rem);line-height:1.02;letter-spacing:-.04em;color:#172133}.login-panel-brand-copy p{margin:0;max-width:520px;color:#5f7087;font-size:.96rem;line-height:1.5}.login-access-badge{display:inline-flex;align-items:center;gap:8px;width:fit-content;margin-bottom:18px;padding:8px 14px;border-radius:10px;background:#ffce5f2e;border:1px solid rgba(240,176,32,.56);color:#b35c16;font-size:.86rem;font-weight:800}.login-access-badge:before{content:"🔒";font-size:.82rem}.login-footnote{margin:18px 0 0;color:#6c7685;font-size:.9rem;text-align:center}.login-legal-link-row{margin-top:8px;text-align:center}.login-legal-link-row a{font-size:.84rem;font-weight:700;color:#9bc2ff}.password-page{width:min(880px,100%);padding:28px;display:grid;grid-template-columns:minmax(280px,.95fr) minmax(320px,1.05fr);gap:26px}.password-page-copy h1{margin:0 0 12px;font-size:clamp(2rem,4vw,3rem);line-height:1}.password-page-copy p{margin:0;color:#5d6e87}.password-chip{background:#2266b017;color:var(--blue-600);margin-bottom:16px}.password-rules{margin:18px 0 0;padding-left:18px;color:#53657e;display:grid;gap:6px}.terms-acceptance-section{display:grid;gap:12px}.terms-acceptance-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.terms-acceptance-head strong{color:#22324b}.terms-scroll-card{max-height:280px;overflow:auto;padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:#fcfcfa}.terms-checkbox{align-items:flex-start}.terms-checkbox span{font-size:.84rem;line-height:1.5}.terms-document{color:#324457}.terms-document h1,.terms-document h2,.terms-document h3{margin:0 0 10px;color:#172133;line-height:1.25}.terms-document h1{font-size:1.15rem}.terms-document h2{font-size:1rem;margin-top:18px}.terms-document h3{font-size:.92rem;margin-top:14px}.terms-document p,.terms-document ul{margin:0 0 10px;font-size:.86rem;line-height:1.65}.terms-document ul{padding-left:18px}.legal-page{background:radial-gradient(circle at top left,rgba(43,119,199,.08),transparent 32%),linear-gradient(180deg,#f7f8fb,#eef2f6)}.legal-page-shell{width:min(1120px,100%);margin:0 auto;display:grid;gap:18px}.legal-page-header,.legal-page-card{padding:22px}.legal-page-header{display:grid;gap:18px}.legal-page-copy h1{margin:0 0 8px;font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.05}.legal-page-copy p{margin:0;color:#60708a}.login-panel h2,.section-header h2{margin:0}.login-panel h2{font-size:1.18rem;letter-spacing:-.02em;color:#f5f1e8}.section-header h2{font-size:1rem;letter-spacing:-.02em}.role-switch,.bulletin-links,.demo-shortcuts{display:flex;flex-wrap:wrap;gap:12px}.demo-shortcuts{margin-top:18px}.role-pill{cursor:pointer;background:#2266b014;color:var(--blue-600)}.role-pill.active,.nav-tag.active{background:linear-gradient(135deg,var(--theme-primary, var(--blue-600)),var(--theme-primary-strong, #154a82));color:#fff}.login-form,.grid-form{display:grid;gap:16px;margin-top:24px}.login-panel-divider{height:1px;margin:18px 0 22px;background:#c2cdddb8}.login-panel-copy-block{display:grid;gap:6px}.login-panel-copy-block p{margin:0;color:#60708a;font-size:.96rem;line-height:1.55}.login-form-section-title{font-size:1rem;font-weight:800;color:#172133}.login-credential-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid-form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.form-field{display:grid;gap:8px;align-content:start}.form-field>span{font-size:.78rem;font-weight:700;color:#5f5c54}.field-help{color:#6c7685;font-size:.74rem;line-height:1.45}.auth-helper-row{display:flex;justify-content:flex-end;margin-top:-4px}.auth-helper-row-centered{justify-content:center;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}.auth-helper-row-end{justify-content:flex-end;margin-top:-6px}.login-helper-muted{color:#6f7888;font-size:.92rem}.text-link-button{padding:0;border:none;background:transparent;color:var(--theme-primary, var(--blue-600));font-weight:700;cursor:pointer}.form-field input,.form-field select,.form-field textarea,.inline-form select{width:100%;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 11px;outline:none;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;font-size:.92rem;min-height:38px}.form-field input:focus,.form-field select:focus,.form-field textarea:focus,.inline-form select:focus{border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 55%,white);box-shadow:0 0 0 3px color-mix(in srgb,var(--theme-primary, var(--blue-600)) 12%,white);background:#fff}.form-field select[multiple]{min-height:140px}.primary-button,.ghost-button,.danger-button,.secondary-button{border-radius:10px;padding:10px 16px;cursor:pointer;border:1px solid transparent;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease;display:inline-flex;align-items:center;justify-content:center}.primary-button:hover,.ghost-button:hover,.danger-button:hover,.secondary-button:hover{transform:translateY(-1px)}.primary-button,.secondary-button{background:var(--brand-primary);color:#fff;box-shadow:none;border-color:var(--brand-primary)}.ghost-button{background:#fff;color:var(--brand-primary);border-color:#1a56db33}.danger-button{background:#fcecea;color:#c0392b;border-color:#f0b7b1}.full-width{width:100%}.login-form .primary-button,.password-page .primary-button{min-height:52px;justify-content:center;color:#fff}.login-panel .primary-button{background:var(--brand-primary);border:1px solid var(--brand-primary);color:#fff;box-shadow:0 14px 28px #1a56db38}.login-panel .primary-button:hover{background:var(--brand-primary-strong);border-color:var(--brand-primary-strong);transform:translateY(-1px)}.primary-button:hover,.secondary-button:hover{background:var(--brand-primary-strong);border-color:var(--brand-primary-strong)}.ghost-button:hover{background:#1a56db0f;border-color:#1a56db47}.alert.error,.form-message,.empty-state{color:#b34c12}.alert.error{padding:12px 14px;border:1px solid rgba(192,57,43,.16);background:#fcecea;border-radius:12px}.alert.success{padding:12px 14px;border:1px solid rgba(26,139,90,.16);background:#e6f5ee;color:#1a8b5a;border-radius:12px}.center-info-bubble-overlay,.floating-notice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172a14;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.center-info-bubble,.floating-notice{max-width:720px;padding:16px 20px;border-radius:16px;border:1px solid rgba(26,86,219,.18);background:linear-gradient(135deg,#eef3fffa,#f8fbfffa);color:var(--brand-primary);text-align:center;font-weight:800;box-shadow:0 24px 60px #0f172a2e;pointer-events:auto}.floating-notice{width:min(520px,100%);font-size:.95rem;line-height:1.45}.floating-notice--success,.floating-notice--info{border-color:#1a56db2e;background:linear-gradient(135deg,#eef3fffa,#f8fbfffa);color:var(--brand-primary)}.floating-notice--error{border-color:#dc26262e;background:linear-gradient(135deg,#fef2f2fa,#fffafafa);color:#b91c1c}.demo-box{margin-top:24px;padding:16px;border-radius:16px;background:#2266b00d}.app-shell{--theme-primary: var(--blue-600);--theme-primary-strong: #154a82;--theme-soft: rgba(34, 102, 176, .08);--theme-sidebar-top: var(--navy-950);--theme-sidebar-bottom: var(--navy-900);display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-width:0;min-height:100vh;overflow-x:clip}.app-shell.theme-super{--theme-primary: #2266b0;--theme-primary-strong: #173f75;--theme-soft: rgba(34, 102, 176, .1);--theme-sidebar-top: #1d1d31;--theme-sidebar-bottom: #1d1d31}.app-shell.theme-school{--theme-primary: #1f66b5;--theme-primary-strong: #0f4d8f;--theme-soft: rgba(31, 102, 181, .1);--theme-sidebar-top: #0c2340;--theme-sidebar-bottom: #0c2340}.app-shell.theme-teacher{--theme-primary: #5b4fbf;--theme-primary-strong: #3c3489;--theme-soft: rgba(91, 79, 191, .11);--theme-sidebar-top: #24173f;--theme-sidebar-bottom: #1a1231}.app-shell.theme-parent{--theme-primary: #0f6e56;--theme-primary-strong: #0a5a46;--theme-soft: rgba(15, 110, 86, .11);--theme-sidebar-top: #123a30;--theme-sidebar-bottom: #0c2d25}.app-shell.theme-student{--theme-primary: #d77a12;--theme-primary-strong: #b45f07;--theme-soft: rgba(215, 122, 18, .12);--theme-sidebar-top: #322212;--theme-sidebar-bottom: #25180b}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#090e1c75;border:none;z-index:55;display:none}.sidebar{background:var(--theme-sidebar-top);color:#fff;padding:0;position:sticky;top:0;height:100vh;overflow:hidden;border-right:1px solid rgba(255,255,255,.04)}.sidebar-scroll{height:100%;display:flex;flex-direction:column}.brand-block{display:block;margin-bottom:10px;padding:18px 16px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-logo-link-sidebar{max-width:148px}.brand-logo-image-sidebar{max-width:100%}.brand-logo-link-topbar{display:inline-flex;align-items:center;max-width:176px;flex-shrink:0}.brand-logo-image-topbar{max-width:100%;height:50px;width:auto;display:block}.topbar-brand{display:flex;align-items:center;gap:12px;margin-bottom:10px}.brand-block .brand-logo-link-sidebar{display:none}.brand-block{padding-top:14px}.sidebar-brand-meta{margin-top:0}.brand-block strong{display:block;font-size:.98rem;letter-spacing:-.01em}.brand-block p{margin:4px 0 0;color:#dde6f899;font-size:.77rem}.brand-badge,.avatar{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#f4d576,#ffe7aa);color:#12203b;font-weight:900;letter-spacing:.03em}.brand-copy{min-width:0}.sidebar-brand-meta{margin-top:10px}.sidebar-brand-meta p{margin-top:0}.brand-code{display:inline-flex;margin-top:8px;padding:3px 8px;border-radius:999px;background:#1b5fa638;color:#b8d6f5;font-size:.66rem;font-family:var(--font-mono)}.sidebar-profile{margin-bottom:12px;padding:0 18px 10px}.sidebar-kicker,.topbar-kicker,.panel-kicker,.mini-kicker{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.73rem;font-weight:800}.sidebar-kicker{color:#c8d6ef8f;margin-bottom:8px}.sidebar-profile strong{display:block;font-size:.98rem}.role-indicator{margin-top:10px;display:inline-flex;background:#3b82f633;color:#9ac3ff;padding:4px 10px;font-size:.68rem}.sidebar-nav{display:flex;flex-direction:column;gap:14px;padding:6px 0 0;overflow:auto}.sidebar-nav-group{display:grid;gap:8px}.sidebar-nav-title{color:#c3d1e861;font-size:.58rem;text-transform:uppercase;letter-spacing:.13em;font-weight:800;padding:0 16px}.nav-tag{width:100%;text-align:left;background:transparent;color:#d7e5ff;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;font-weight:600;border-radius:0;border-left:2px solid transparent;font-size:.84rem}.nav-tag:hover{background:#ffffff0d}.nav-tag.active{background:#ffffff17;border-left-color:var(--theme-primary, var(--blue-600))}.nav-item-main{display:inline-flex;align-items:center;gap:10px;min-width:0}.nav-icon{min-width:24px;width:auto;text-align:center;font-size:.78rem;font-weight:800;letter-spacing:.04em;flex-shrink:0}.nav-badge{margin-left:auto;background:#e04b4a40;color:#f3a7a6;border-radius:999px;padding:2px 7px;font-size:.62rem;font-weight:700}.sidebar-footer{margin-top:auto;padding:14px 16px 18px}.sidebar-footer-card{padding:12px 0 0;background:transparent;border:none;border-top:1px solid rgba(255,255,255,.08);border-radius:0}.sidebar-footer-card p{margin:4px 0 0;color:#e1e9f8ad;font-size:.76rem}.sidebar-user-summary{display:flex;align-items:center;gap:10px;padding-bottom:10px;margin-bottom:6px}.sidebar-user-summary strong{display:block;font-size:.86rem}.sidebar-user-summary p{margin:4px 0 0;color:#e1e9f89e;font-size:.72rem}.avatar.small{width:32px;height:32px;border-radius:50%;font-size:.82rem}.main-content{padding:0 0 24px;min-width:0;overflow:visible}.main-header-stack{position:sticky;top:0;z-index:30;padding:0;background:#f0f0ebf5;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 14px 30px #0f172a14;min-width:0;align-self:start}.theme-student .main-content,.theme-parent .main-content,.theme-teacher .main-content{overflow:visible}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:0;padding:14px 22px;min-height:58px;background:#fff;border:1px solid var(--border);border-top:none;border-left:none;border-right:none;border-radius:0;box-shadow:none}.topbar-copy{min-width:0}.topbar-kicker{color:#8b877d;margin-bottom:6px}.topbar h1{margin:0;font-size:1.08rem;letter-spacing:-.02em}.topbar p{margin:4px 0 0;color:#9a9487;max-width:720px;font-size:.76rem}.topbar-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:flex-end;min-width:0}.topbar-meta{display:flex;align-items:center;justify-content:flex-end;min-width:0}.topbar-date-pill{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 12px;border-radius:999px;border:1px solid rgba(17,24,39,.08);background:linear-gradient(135deg,#f8fafc,#eef2ff);color:#344054;font-size:.77rem;font-weight:700;text-transform:capitalize;white-space:nowrap;box-shadow:0 10px 24px #0f172a0f}.student-topbar-meta,.parent-topbar-meta,.teacher-topbar-meta{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0;flex-wrap:wrap}.student-topbar-count,.parent-topbar-count,.teacher-topbar-count{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:5px 10px;border-radius:999px;background:#14b8a61f;color:#0f766e;font-size:.7rem;font-weight:800;white-space:nowrap}.parent-topbar-count{background:#0ea5e91f;color:#0369a1}.teacher-topbar-count{background:#f59e0b24;color:#92400e}.header-action-wrap{display:flex;align-items:center;gap:12px;max-width:100%}.user-box{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 12px;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:none;flex-wrap:wrap}.user-box span,.stat-title,.stat-hint,.stat-caption{display:block}.user-box span{color:#6b6960}.user-box-main,.shell-account-actions,.sidebar-session-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.shell-account-actions,.sidebar-session-actions{justify-content:flex-end}.sidebar-session-actions{margin-top:8px}.sidebar-session-actions .danger-button{width:100%;min-height:40px}.logout-icon{font-size:.95rem;line-height:1}.context-strip,.overview-strip{margin-bottom:18px;padding:12px 18px;background:#fffffff0;border:1px solid var(--border);border-radius:12px;box-shadow:none}.sticky-strip{position:relative}.context-strip{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.local-navigation-strip{margin-bottom:18px;min-width:0;max-width:100%}.local-nav-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 18px;background:#fffffff0;border:1px solid var(--border);border-radius:12px;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.local-nav-label{color:#7f7b72;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.local-nav-chip{border:1px solid #dfe5ea;background:#f7f9fb;color:#36516f;border-radius:999px;padding:8px 12px;font-size:.78rem;font-weight:700;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease}.local-nav-chip:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 28%,white)}.local-nav-chip.active{background:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 10%,white);color:var(--theme-primary, var(--blue-600));border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 28%,white)}.detail-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#0c121c57;display:flex;justify-content:flex-end;padding:16px}.detail-drawer-panel{width:min(520px,100%);height:100%;background:#fff;border-radius:18px;border:1px solid var(--border);box-shadow:var(--shadow-soft);display:flex;flex-direction:column;overflow:hidden}.detail-drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--border)}.detail-drawer-header h3{margin:4px 0 0;font-size:1.04rem;letter-spacing:-.02em}.detail-drawer-header p{margin:6px 0 0;color:#7b8694;font-size:.82rem}.detail-drawer-body{padding:18px 20px 24px;overflow:auto;display:grid;gap:16px}.detail-summary-card,.detail-section-card{background:#fbfcfd;border:1px solid #e9edf2;border-radius:14px;padding:14px 16px}.detail-summary-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.detail-summary-head strong{display:block;font-size:1rem}.detail-summary-head span,.detail-summary-head small{display:block;color:#738092}.detail-chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.detail-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:#eff4f8;color:#355471;font-size:.74rem;font-weight:700}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-data-item{display:grid;gap:4px}.detail-data-item label{color:#7b8694;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.detail-data-item span,.detail-data-item strong{color:#19212b}.detail-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.detail-section-head strong{font-size:.9rem}.detail-list{display:grid;gap:8px}.detail-list-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:12px;background:#fff;border:1px solid #edf1f5}.detail-list-item-copy{display:grid;gap:4px}.detail-list-item-copy strong{font-size:.84rem}.detail-list-item-copy span{color:#69788b;font-size:.78rem}.detail-inline-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.detail-action-row{display:flex;flex-wrap:wrap;gap:10px}.detail-action-row .primary-button,.detail-action-row .ghost-button{flex:1 1 160px}.detail-empty{color:#7b8694;font-size:.82rem}.context-strip-primary,.context-strip-secondary,.meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.context-strip-secondary{margin-left:auto;justify-content:flex-end;align-self:flex-start}.school-strip{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-size:.84rem}.school-strip strong{font-size:.95rem}.school-strip-separator{color:#d8d4cb}.school-code-pill{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:#f3f5f7;color:#24486f;font-family:var(--font-mono);font-size:.75rem}.school-city{color:#7f7b72}.meta-pill{background:var(--theme-soft);color:var(--theme-primary);font-size:.72rem;padding:6px 11px}.meta-pill.dark{background:#132a4e14;color:#234064}.meta-pill.success{background:#10b9811f;color:#0f766e}.page-content{display:flex;flex-direction:column;gap:18px;padding:18px 22px 0;min-width:0;overflow-x:hidden}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.stat-card{position:relative;padding:18px 20px;overflow:hidden;border-radius:12px;box-shadow:none}.stat-card:before{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:3px;background:linear-gradient(90deg,var(--accent-start),var(--accent-end))}.stat-card.accent-blue{--accent-start: #8095ff;--accent-end: #5f82e6}.stat-card.accent-cyan{--accent-start: #367ee8;--accent-end: #1c60bf}.stat-card.accent-green{--accent-start: #25b36d;--accent-end: #18a874}.stat-card.accent-orange{--accent-start: #f79e1b;--accent-end: #f08a24}.stat-card.accent-violet{--accent-start: #8c7bff;--accent-end: #7166ff}.stat-card.accent-red{--accent-start: #f06f56;--accent-end: #d94d3d}.stat-title{color:#6b6960;font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.stat-value{font-size:clamp(1.9rem,2vw,2.35rem);margin:10px 0 5px;letter-spacing:-.04em}.stat-value-row{display:flex;align-items:baseline;gap:10px}.stat-value-row.has-side-caption{justify-content:space-between}.stat-side-caption{display:flex;flex-direction:column;align-items:flex-end;gap:2px;margin-top:10px;color:#8d9bb0;font-size:.72rem;font-weight:700;line-height:1.15;white-space:nowrap}.stat-hint{color:#6b6960;font-size:.82rem}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);gap:20px}.overview-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;width:100%}.overview-class-filter{position:relative;flex:0 0 auto}.overview-class-filter-button{position:relative;display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;border-radius:14px;border:1px solid rgba(148,163,184,.28);background:#fff;color:#516274;font-size:.92rem;font-weight:700;transition:border-color .2s ease,background .2s ease,color .2s ease,transform .2s ease}.overview-class-filter-button:hover{transform:translateY(-1px);border-color:#2563eb59}.overview-class-filter-button.active{border-color:#2563eb73;background:#2563eb14;color:#1d4ed8}.overview-class-filter-icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}.overview-class-filter-icon svg,.overview-class-filter-sheet-close svg{width:100%;height:100%}.overview-class-filter-badge{position:absolute;top:-8px;right:-8px;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:#2563eb;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;box-shadow:0 8px 18px #2563eb40}.overview-class-filter-dropdown{position:absolute;top:calc(100% + 10px);right:0;z-index:60;width:260px;padding:14px;border-radius:16px;border:1px solid rgba(15,23,42,.1);background:#fff;box-shadow:0 24px 48px #0f172a2e;display:grid;gap:12px}.overview-class-filter-search input{width:100%;min-height:40px;padding:0 12px;border-radius:10px;border:1px solid rgba(148,163,184,.25);background:#fff;color:#111827;font-size:.9rem}.overview-class-filter-search input:focus{outline:none;border-color:#2563eb73}.overview-class-filter-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.overview-class-filter-list,.overview-class-filter-sheet-list{display:grid;gap:8px;max-height:220px;overflow-y:auto;padding-right:4px}.overview-class-filter-option{width:100%;min-height:44px;padding:10px 12px;border-radius:12px;border:1px solid rgba(148,163,184,.18);background:#fff;color:#111827;display:flex;align-items:center;gap:10px;text-align:left;transition:border-color .2s ease,background .2s ease}.overview-class-filter-option.mobile{min-height:48px}.overview-class-filter-option.active{border-color:#2563eb5c;background:#2563eb12}.overview-class-filter-checkbox{width:18px;height:18px;border-radius:6px;border:1px solid rgba(148,163,184,.4);background:#fff;flex:0 0 auto}.overview-class-filter-checkbox.active{border-color:#2563eb;background:#2563eb;box-shadow:inset 0 0 0 4px #fff}.overview-class-filter-option-copy{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.overview-class-filter-option-copy strong{font-size:.9rem;color:#111827}.overview-class-filter-option-copy small{color:#6b7280;font-size:.78rem;white-space:nowrap}.overview-class-filter-empty{padding:16px 10px;color:#6b7280;font-size:.84rem;text-align:center}.overview-class-filter-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#00000059;animation:overviewSheetBackdropIn .25s ease-out}.overview-class-filter-sheet{width:min(100%,420px);max-height:min(80vh,720px);display:grid;gap:14px;padding:10px 16px 18px;border-top:.5px solid rgba(17,24,39,.12);border-radius:18px 18px 0 0;background:#fff;animation:overviewSheetIn .3s ease-out}.overview-class-filter-sheet-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.overview-class-filter-sheet-header h4{margin:0;color:#111827;font-size:1rem}.overview-class-filter-sheet-header p{margin:4px 0 0;color:#6b7280;font-size:.82rem}.overview-class-filter-sheet-close{width:36px;height:36px;border-radius:999px;border:1px solid rgba(148,163,184,.2);background:#fff;color:#4b5563;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.overview-class-filter-apply{width:100%;min-height:44px;border-radius:12px;border:0;background:#2563eb;color:#fff;font-size:.95rem;font-weight:700;box-shadow:0 18px 36px #2563eb33}.overview-recent-absences-list{display:grid;gap:12px}.overview-recent-absences-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid rgba(15,23,42,.08)}.overview-recent-absences-item:last-child{border-bottom:none;padding-bottom:0}.overview-recent-absences-copy{display:grid;gap:4px}.overview-recent-absences-copy strong{font-size:.92rem}.overview-recent-absences-copy span,.overview-recent-absences-copy small,.overview-recent-absences-empty{color:#6b7280}.overview-recent-absences-empty{padding:12px 0 4px;font-size:.86rem}@keyframes overviewSheetIn{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes overviewSheetBackdropIn{0%{opacity:0}to{opacity:1}}.dashboard-stack{display:grid;gap:20px}.section-card{padding:18px 20px}.section-card.tight{padding:16px}.section-card.crud-card{padding-bottom:16px}.section-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:16px}.section-header p{margin:4px 0 0;color:#6b6960;font-size:.8rem}.section-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.class-name-customized-banner{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;background:#2166ac14;border:1px solid rgba(33,102,172,.2);border-radius:8px;font-weight:500;color:#1f3a5f}.class-name-customized-banner span{flex:1 1 220px;font-size:.82rem;line-height:1.4}.crud-message{position:relative;display:flex;align-items:flex-start;gap:10px;margin:0 0 14px;padding:11px 14px 11px 16px;border-radius:10px;border:1px solid rgba(15,110,86,.18);background:linear-gradient(180deg,#0f6e5612,#0f6e560a);color:#0f5a48;font-weight:600;font-size:.84rem;line-height:1.45;box-shadow:0 1px #0f172a08}.crud-message:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:10px 0 0 10px;background:#14a37a}.crud-message.is-error,.crud-message[data-tone=error]{border-color:#dc262638;background:linear-gradient(180deg,#dc262614,#dc26260a);color:#8a1d1d}.crud-message.is-error:before,.crud-message[data-tone=error]:before{background:#dc2626}.crud-message.is-info,.crud-message[data-tone=info]{border-color:#1f66b538;background:linear-gradient(180deg,#1f66b514,#1f66b50a);color:#154a82}.crud-message.is-info:before,.crud-message[data-tone=info]:before{background:#1f66b5}.confirm-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:20px;background:#0f172a85;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:confirm-dialog-fade-in .18s ease-out}@keyframes confirm-dialog-fade-in{0%{opacity:0}to{opacity:1}}.confirm-dialog{width:min(440px,100%);display:grid;grid-template-columns:48px 1fr;grid-template-areas:"icon body" "actions actions";gap:14px 16px;padding:22px 24px 18px;background:#fff;border-radius:16px;box-shadow:0 28px 60px #0f172a47,0 4px 12px #0f172a1f;border:1px solid rgba(15,23,42,.06);animation:confirm-dialog-pop-in .22s cubic-bezier(.16,1,.3,1)}@keyframes confirm-dialog-pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.confirm-dialog-icon{grid-area:icon;width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.35rem;font-weight:900;background:linear-gradient(135deg,#1f66b524,#1f66b50f);color:#1f66b5;border:1px solid rgba(31,102,181,.18)}.confirm-dialog--danger .confirm-dialog-icon{background:linear-gradient(135deg,#dc262629,#dc26260f);color:#b91c1c;border-color:#dc26263d}.confirm-dialog-body{grid-area:body;min-width:0}.confirm-dialog-title{margin:0 0 6px;font-size:1.04rem;font-weight:800;letter-spacing:-.01em;color:#111827}.confirm-dialog-message{margin:0;color:#4b5563;font-size:.88rem;line-height:1.5}.confirm-dialog-actions{grid-area:actions;display:flex;justify-content:flex-end;gap:10px;margin-top:6px;padding-top:14px;border-top:1px solid rgba(15,23,42,.06)}.confirm-dialog-actions .ghost-button,.confirm-dialog-actions .primary-button,.confirm-dialog-actions .danger-button{min-height:44px;padding:8px 18px;font-size:.86rem;font-weight:700}@media (max-width: 520px){.confirm-dialog{grid-template-columns:1fr;grid-template-areas:"icon" "body" "actions";padding:20px;gap:12px}.confirm-dialog-icon{width:44px;height:44px}.confirm-dialog-actions{flex-direction:column-reverse}.confirm-dialog-actions .ghost-button,.confirm-dialog-actions .primary-button,.confirm-dialog-actions .danger-button{width:100%}}.reset-delivery-box{display:grid;gap:6px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:#f7fbff}.reset-delivery-box strong{font-size:.88rem}.reset-delivery-box span{color:#5d6e87;font-size:.82rem}.reset-code-preview{display:inline-flex;align-items:center;width:fit-content;padding:6px 10px;border-radius:10px;background:#fff;border:1px solid var(--border);color:var(--theme-primary, var(--blue-600));font-family:var(--font-mono);font-size:.92rem;font-weight:700}.crud-toolbar{margin-bottom:14px;display:flex;flex-wrap:wrap;gap:12px}.crud-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182775;display:grid;place-items:center;padding:20px;z-index:45}.crud-modal-card{width:min(920px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:22px;border-radius:14px;box-shadow:var(--shadow-soft)}.crud-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}.crud-modal-header h3{margin:4px 0 0;font-size:.98rem;letter-spacing:-.02em}.crud-modal-header p{margin:6px 0 0;color:#6b6960;font-size:.84rem}.filter-row{display:flex;flex-wrap:wrap;gap:12px}.filter-row>*{flex:1 1 220px;min-width:0}.filter-row input,.filter-row select{min-width:0;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 11px;font-size:.86rem;min-height:38px}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.branding-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.branding-card{display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--border);border-radius:16px;background:#fbfcfe}.branding-card p{margin:4px 0 0;color:#667789;font-size:.82rem}.branding-preview{min-height:132px;border-radius:14px;border:1px dashed #bfd1e2;background:linear-gradient(180deg,#fff,#f4f8fd);display:flex;align-items:center;justify-content:center;overflow:hidden}.branding-preview.empty{color:#7a8796;font-size:.82rem;text-align:center;padding:14px}.branding-preview img{max-width:100%;max-height:118px;object-fit:contain;display:block}.branding-file-name{color:#6e7a88;font-size:.78rem}.french-file-input{display:flex;flex-direction:column;gap:8px}.french-file-input__name{font-size:.8rem;color:#425466;font-weight:600;word-break:break-word}.french-file-input__native{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.branding-actions{display:flex;gap:10px;flex-wrap:wrap}.branding-actions>*{flex:1 1 140px}.branding-status{border-radius:12px;padding:10px 12px;font-size:.82rem;font-weight:700;line-height:1.4}.branding-status.info{background:#2b77c71a;color:#1f5f9d}.branding-status.success{background:#10b9811f;color:#0f766e}.branding-status.error{background:#f06f5624;color:#b43c2a}.class-card{padding:16px;border-radius:12px;background:#fff;border:1px solid var(--border);box-shadow:none}.class-card strong,.class-card span{display:block}.class-card span{color:#6f8097;margin-top:6px;font-size:.82rem}.cell-stack{display:grid;gap:3px;min-width:160px}.cell-stack strong{font-size:.9rem}.cell-stack span,.cell-stack small{color:#6f8097}.cell-stack-list{display:grid;gap:6px}.cell-stack-list span{color:#51637c}.class-card-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.class-management-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.class-management-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:12px 14px;box-shadow:var(--shadow)}.class-management-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.class-management-card-head strong{display:block;font-size:.96rem;line-height:1.25}.mini-role-pill{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:#eef5ff;color:#4c77b1;font-size:.64rem;font-weight:700}.class-management-card-meta{margin:8px 0 0;color:#8f897d;font-size:.76rem;line-height:1.35}.class-management-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.class-management-card-actions .ghost-button,.class-management-card-actions .danger-button{padding:6px 9px;font-size:.74rem}.password-field{position:relative}.password-field input{padding-right:108px}.password-toggle{position:absolute;right:8px;bottom:7px;border:1px solid #c7d3e3;border-radius:12px;background:#fff;color:var(--brand-primary);padding:8px 12px;min-height:44px;font-weight:700;cursor:pointer}.login-form .password-field input{padding-right:64px}.password-toggle--icon{display:inline-flex;align-items:center;justify-content:center;min-width:44px;padding:8px}.login-panel .form-field>span{color:#2b3950;font-weight:800}.login-panel .form-field input,.login-panel .form-field select,.login-panel .form-field textarea{background:#fff;border:1px solid #d7e0eb;color:#172133;border-radius:12px}.login-panel .form-field input::placeholder,.login-panel .form-field textarea::placeholder{color:#8a94a5}.login-panel .field-help{color:#6c7685}.login-panel .text-link-button{color:var(--brand-primary);font-weight:700}.login-page-admin .text-link-button{color:#39506f}.login-panel .ghost-button{color:var(--brand-primary);border-color:#1a56db2e;background:#fff}.login-panel .ghost-button:hover{background:#1a56db0f}.login-panel .alert.success,.login-panel .alert.error{margin-top:18px}.checkbox-field{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff}.checkbox-field input{width:auto;margin:2px 0 0}.checkbox-field span{color:#314357;font-size:.85rem;font-weight:600}.radio-toggle{display:inline-flex;align-items:center;gap:10px;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;color:#314357;font-size:.85rem;font-weight:600;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease;align-self:flex-start}.radio-toggle:hover{border-color:var(--accent, #4f46e5)}.radio-toggle .radio-toggle-dot{width:16px;height:16px;border-radius:50%;border:2px solid var(--border);background:#fff;position:relative;flex-shrink:0;transition:border-color .15s ease,background .15s ease}.radio-toggle.active{border-color:var(--accent, #4f46e5);background:#4f46e514;color:var(--accent, #4f46e5)}.radio-toggle.active .radio-toggle-dot{border-color:var(--accent, #4f46e5)}.radio-toggle.active .radio-toggle-dot:after{content:"";position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;background:var(--accent, #4f46e5);transform:translate(-50%,-50%)}.multiselect-box{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;border:1px solid var(--border);border-radius:10px;padding:10px;background:#fff;max-height:230px;overflow-y:auto}.multiselect-option{display:flex;align-items:center;gap:10px;padding:8px 11px;border-radius:10px;border:1px solid var(--border);background:#f9fafc;color:#314357;cursor:pointer;text-align:left;transition:border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease}.multiselect-option:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 35%,white)}.multiselect-option.active{border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 55%,white);background:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 10%,white);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--theme-primary, var(--blue-600)) 14%,white)}.multiselect-check{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--theme-primary, var(--blue-600));font-size:.78rem;font-weight:800;flex-shrink:0}.multiselect-option.active .multiselect-check{border-color:transparent;background:var(--theme-primary, var(--blue-600));color:#fff}.multiselect-empty{padding:14px;color:#6c7685;font-size:.82rem}.schedule-modal{width:min(760px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:22px;border-radius:16px}.student-roster-modal{width:min(720px,100%);max-height:calc(100vh - 40px);overflow:auto;padding:22px;border-radius:16px}.management-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.management-modal-head h3{margin:0;font-size:1.08rem}.management-modal-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:10px 14px;border-radius:12px;background:#eaf3ff;color:#3f6ea8;font-size:.82rem;font-weight:700}.management-modal-form{padding:14px;border-radius:12px;background:#fafafa;border:1px solid var(--border);margin-bottom:14px}.management-modal-form>strong{display:block;margin-bottom:10px;font-size:.88rem}.management-form-grid{display:grid;gap:10px;margin-bottom:10px}.management-form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.management-form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.schedule-editor-modal{position:relative;width:min(760px,100%);background:#fff}.schedule-editor-header{display:grid;gap:10px;margin-bottom:12px}.schedule-editor-back{width:fit-content;min-height:28px;padding:0 10px;border-radius:10px;border:.5px solid rgba(17,24,39,.12);background:#fff;color:var(--brand-primary);font-size:13px;font-weight:500}.schedule-editor-title-group h3{margin:0;color:#111827;font-size:15px;font-weight:500}.schedule-editor-toolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:14px}.schedule-editor-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:10px;font-size:11px;font-weight:500;white-space:nowrap}.schedule-editor-badge.primary{background:#eef2ff;color:#4338ca;border:.5px solid #c7d2fe}.schedule-editor-badge.secondary{background:#f8fafc;color:#5b6472;border:.5px solid rgba(17,24,39,.12)}.schedule-editor-add{min-height:28px;padding:0 12px;border-radius:8px;border:0;background:var(--brand-primary);color:#fff;font-size:13px;font-weight:500}.schedule-editor-days{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px;scrollbar-width:none;-ms-overflow-style:none}.schedule-editor-days::-webkit-scrollbar{display:none}.schedule-editor-day-chip{flex:0 0 auto;min-height:34px;padding:5px 14px;border-radius:20px;border:.5px solid rgba(17,24,39,.14);background:#fff;color:#6f8097;font-size:12px;font-weight:500}.schedule-editor-day-chip.active{border-color:#111827;background:#111827;color:#fff}.schedule-editor-list{display:grid;gap:10px}.schedule-editor-slot{display:flex;align-items:center;gap:10px;padding:10px 12px;border:.5px solid rgba(17,24,39,.12);border-left:3px solid var(--schedule-accent, #5b6472);border-radius:12px;background:#fff}.schedule-editor-slot-copy{min-width:0;flex:1 1 auto}.schedule-editor-slot-copy strong{display:block;color:#111827;font-size:13px;font-weight:500;line-height:1.3}.schedule-editor-slot-copy span{display:block;margin-top:2px;color:#6f8097;font-size:11px;line-height:1.35}.schedule-editor-slot-side{display:grid;justify-items:end;gap:4px;flex-shrink:0}.schedule-editor-slot-time{display:inline-flex;align-items:center;min-height:24px;padding:3px 7px;border-radius:8px;background:#f8fafc;color:#111827;font-size:11px;font-weight:500;white-space:nowrap}.schedule-editor-slot-side small{color:#6f8097;font-size:10px;font-weight:400}.schedule-editor-delete{width:28px;height:28px;flex-shrink:0;border-radius:8px;border:.5px solid rgba(17,24,39,.12);background:#fff;color:#6f8097;font-size:18px;line-height:1}.schedule-editor-delete:hover,.schedule-editor-delete:focus-visible{color:#dc2626}.schedule-editor-empty{display:grid;place-items:center;min-height:120px;color:#6f8097;font-size:13px;text-align:center}.schedule-editor-fab{position:sticky;bottom:18px;margin-left:auto;margin-top:18px;width:50px;height:50px;border-radius:999px;border:0;background:var(--brand-primary);color:#fff;font-size:28px;font-weight:500;box-shadow:0 14px 30px #1118272e;display:none}.schedule-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:52;display:flex;align-items:flex-end;justify-content:center;background:#0000004d}.schedule-sheet{width:min(100%,420px);max-height:min(78vh,680px);overflow:auto;padding:10px 16px 18px;border-top:.5px solid rgba(17,24,39,.12);border-radius:16px 16px 0 0;background:#fff}.schedule-sheet-handle{width:36px;height:4px;margin:0 auto 12px;border-radius:2px;background:#11182729}.schedule-sheet-header h4{margin:0 0 14px;color:#111827;font-size:14px;font-weight:500}.schedule-sheet-form{display:grid;gap:12px}.schedule-sheet-field{display:grid;gap:6px}.schedule-sheet-field span,.schedule-sheet-teacher-preview span{color:#5b6472;font-size:12px;font-weight:500}.schedule-sheet-field select,.schedule-sheet-field input{width:100%;min-height:38px;padding:0 12px;border-radius:8px;border:.5px solid rgba(17,24,39,.16);background:#fff;color:#111827;font-size:14px}.schedule-sheet-field select:focus,.schedule-sheet-field input:focus{outline:none;border-color:#4f46e5}.schedule-sheet-teacher-preview{display:grid;gap:4px;padding:10px 12px;border-radius:10px;background:#f8fafc;border:.5px solid rgba(17,24,39,.1)}.schedule-sheet-teacher-preview strong{color:#111827;font-size:13px;font-weight:500}.schedule-sheet-time-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.schedule-sheet-submit{width:100%;min-height:42px;border-radius:8px;border:0;background:var(--brand-primary);color:#fff;font-size:14px;font-weight:500}.schedule-editor-fab:hover,.schedule-sheet-submit:hover{background:var(--brand-primary-strong)}.schedule-day-list,.student-roster-list{display:grid;gap:12px}.student-roster-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px;border-radius:12px;border:1px solid var(--border);background:#fff}.student-roster-main{display:flex;align-items:flex-start;gap:12px;min-width:0}.student-roster-avatar{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;background:#e9f2ff;color:#2e5f9a;font-size:.88rem;font-weight:800;flex-shrink:0}.student-roster-copy{min-width:0}.student-roster-copy strong{display:block;font-size:.92rem}.student-roster-copy span,.student-roster-copy small{display:block;margin-top:4px;color:#8f897d;font-size:.78rem;line-height:1.4}.student-roster-side{display:grid;gap:10px;justify-items:end;min-width:min(260px,100%)}.student-roster-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.student-roster-editor{display:grid;gap:8px;width:min(260px,100%)}.student-roster-editor select{width:100%}.student-roster-editor-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.schedule-day-block{border:1px solid var(--border);border-radius:12px;padding:12px;background:#fff}.schedule-day-title{margin-bottom:10px;padding:4px 10px;border-radius:8px;background:#eef5ff;color:#3570b2;font-size:.74rem;font-weight:800;letter-spacing:.06em}.schedule-slot-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #f0f0f0}.schedule-slot-row:last-child{border-bottom:none}.schedule-slot-copy strong{display:block;font-size:.9rem}.schedule-slot-copy span{display:block;color:#8f897d;font-size:.77rem;margin-top:4px}.schedule-slot-meta{display:inline-flex;align-items:center;gap:10px}.schedule-slot-time{display:inline-flex;padding:5px 10px;border-radius:999px;background:#e7f7ef;color:#2d8d64;font-size:.76rem;font-weight:700;white-space:nowrap}.danger-button.text{padding:0;background:transparent;border:none;color:#f19d9d;box-shadow:none}.danger-button.text:hover{transform:none}.schedule-empty-state,.table-muted-action{color:#a09b92;font-size:.78rem}.auth-mode-switch{display:flex;gap:10px;margin:18px 0 12px}.auth-mode-pill{border:1px solid var(--border);background:#ffffffeb;color:#4c6280;border-radius:999px;padding:10px 14px;cursor:pointer;font-weight:800}.auth-mode-pill.active{background:#0f2136;color:#fff;border-color:transparent}.panel-link{color:var(--theme-primary);font-weight:800}.panel-link-button{border:none;background:transparent;cursor:pointer;padding:0;font:inherit;color:var(--theme-primary);font-weight:800}.panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.mini-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.mini-stat{padding:16px;border-radius:12px;background:#fff;border:1px solid var(--border)}.mini-kicker{color:#75849b;margin-bottom:8px}.mini-stat strong{font-size:1.45rem;display:block;letter-spacing:-.03em}.mini-stat span{color:#6d7d96;font-size:.84rem}.entity-list,.feed-list{display:grid;gap:12px}.entity-row,.feed-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid rgba(18,35,61,.06)}.entity-row:last-child,.feed-row:last-child{border-bottom:none;padding-bottom:0}.entity-row:first-child,.feed-row:first-child{padding-top:0}.entity-main,.feed-main{display:flex;align-items:center;gap:14px;min-width:0}.entity-avatar,.feed-avatar,.empty-illustration{width:46px;height:46px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#8095ff33,#2266b01f);color:#26406c;font-weight:900;flex-shrink:0}.entity-copy,.feed-copy{min-width:0}.entity-copy strong,.feed-copy strong{display:block;font-size:1rem}.entity-copy span,.feed-copy span{display:block;color:#6d7d96}.plan-badge{background:#f2f4f7;color:#7d8da4;white-space:nowrap}.plan-badge.inline{padding:4px 10px;border-radius:999px;font-size:.72rem}.status-badge{background:#10b9811f;color:#0f766e}.status-badge.warning{background:#f79e1b24;color:#c87505}.status-badge.danger{background:#f06f561f;color:#b43c2a}.empty-panel{min-height:220px;display:grid;place-items:center;text-align:center;color:#92a0b4}.empty-panel strong{display:block;color:#65768e;margin-top:12px}.overview-banner{display:flex;justify-content:space-between;gap:18px;align-items:center;flex-wrap:wrap}.tab-strip{display:flex;gap:10px;flex-wrap:wrap;margin-top:-4px;padding-bottom:4px}.tab-chip{border:1px solid var(--border);background:#fff;color:#52657f;border-radius:10px;padding:9px 13px;cursor:pointer;font-weight:700}.tab-chip.active{background:color-mix(in srgb,var(--theme-primary) 12%,white);color:var(--theme-primary);border-color:color-mix(in srgb,var(--theme-primary) 24%,white)}.tab-chip:hover{background:#faf9f6}.quick-link-card,.subtle-list-item,.bulletin-chip{border-radius:12px}.ghost-button.subtle{background:#fff;border:1px solid rgba(26,86,219,.18);color:var(--brand-primary)}.table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--border);background:#fff}.grade-detail-table-wrap{overflow-x:hidden}.grade-detail-table{width:100%;table-layout:fixed}.grade-detail-table th,.grade-detail-table td{padding:8px 6px;font-size:.76rem;line-height:1.25;text-align:center}.grade-detail-table th:first-child,.grade-detail-table td:first-child{width:34%;text-align:left;word-break:break-word}.grade-table-filter-row{margin-bottom:10px}.grade-table-filter-row>*{flex:0 0 180px;max-width:220px}.table-empty-cell{padding:12px 10px;color:#7f7b72;text-align:center}.desktop-table-wrap{display:block}.sticky-table-wrap{max-height:min(68vh,640px);overflow:auto}.mobile-data-list{display:none}.desktop-card-list{display:grid;gap:14px}.data-table{width:100%;border-collapse:collapse;background:#fff;font-size:.82rem}.data-table th,.data-table td{text-align:left;padding:10px 8px;border-bottom:1px solid rgba(26,24,20,.05);vertical-align:top}.data-table th{color:#8a867d;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em}.data-table tbody tr:hover{background:#f8f6f0}.data-table.sticky-header thead th{position:sticky;top:0;z-index:3;background:#fff;box-shadow:inset 0 -1px #1a181414}.installment-status-cell{position:relative;min-width:112px;display:grid;gap:6px;justify-items:start}.installment-status-button{display:inline-flex;align-items:center;justify-content:center;min-width:84px;padding:7px 12px;border-radius:999px;border:1px solid transparent;font-size:.76rem;font-weight:700;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.installment-status-button:hover{transform:translateY(-1px)}.installment-status-button:disabled{opacity:.7;cursor:wait;transform:none}.installment-status-button.paid{background:#148c5c24;border-color:#148c5c38;color:#0f6f49;box-shadow:0 8px 18px #148c5c1f}.installment-status-button.overdue{background:#c2583b29;border-color:#c2583b42;color:#9e3c23;box-shadow:0 8px 18px #c2583b1f}.installment-status-button.unpaid{background:#c2583b1f;border-color:#c2583b33;color:#a0482f;box-shadow:0 8px 18px #c2583b1a}.installment-status-button.neutral{background:#6d7c921f;border-color:#6d7c9238;color:#4f637d;box-shadow:0 8px 18px #6d7c9214}.installment-status-amount{color:#6d7c92;font-size:.72rem;font-weight:700;line-height:1.2}.installment-confirm-bubble{position:absolute;top:calc(100% + 8px);left:0;z-index:9;width:min(220px,80vw);padding:12px;border-radius:14px;border:1px solid rgba(26,24,20,.08);background:#fff;box-shadow:0 18px 40px #181f3129;display:grid;gap:10px}.installment-confirm-bubble strong{color:#22324b;font-size:.83rem}.installment-confirm-bubble span{color:#617187;font-size:.76rem;line-height:1.45}.installment-confirm-actions{display:flex;gap:8px}.installment-confirm-actions .ghost-button,.installment-confirm-actions .primary-button{padding:7px 10px;font-size:.76rem}.inline-confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0f172a47;display:flex;align-items:center;justify-content:center;padding:20px}.inline-confirm-modal{width:min(360px,calc(100vw - 28px));display:grid;gap:12px;padding:18px;box-shadow:var(--shadow-soft)}.inline-confirm-modal strong{color:#22324b;font-size:.95rem}.inline-confirm-modal span{color:#617187;font-size:.82rem;line-height:1.5}.accounting-mobile-statuses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.accounting-mobile-status-card{display:grid;gap:6px;padding:10px;border-radius:14px;background:#f6f8fbeb;border:1px solid rgba(50,78,123,.08)}.accounting-mobile-status-card label{font-size:.72rem;font-weight:800;color:#60708a;letter-spacing:.06em}.accounting-mobile-status-card .installment-status-cell{min-width:0}.accounting-mobile-status-card .installment-status-button{width:100%;min-width:0;padding:7px 8px}.accounting-mobile-status-card .installment-status-amount{font-size:.68rem}@media (max-width: 640px){.accounting-mobile-statuses{grid-template-columns:1fr}.accounting-mobile-status-card .installment-status-button{width:auto}}.accounting-mobile-status-row label{color:#7d8798;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800}.mobile-toggle{display:none;margin-bottom:10px;background:#fff;color:var(--theme-primary);border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-weight:700}.matricule-inline{font-family:var(--font-mono)}.empty-state{padding:18px;border:1px dashed var(--border);border-radius:12px;background:#faf9f6;color:#8b877d;text-align:center}.table-actions{gap:8px}.table-actions .ghost-button,.table-actions .danger-button{padding:7px 10px;font-size:.82rem}.table-pagination-bar{margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.mobile-data-card{display:grid;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow)}.mobile-data-item{display:grid;gap:6px;padding-bottom:10px;border-bottom:1px solid rgba(26,24,20,.06)}.mobile-data-item:last-child{padding-bottom:0;border-bottom:none}.mobile-data-label{color:#8a867d;font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.mobile-data-value{min-width:0;color:#22324b;font-size:.88rem}.mobile-data-value .cell-stack,.mobile-data-value .cell-stack-list{min-width:0}.mobile-data-value .table-actions{width:100%;justify-content:flex-start}.mobile-member-card{display:grid;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow)}.mobile-member-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.mobile-member-card-main{display:flex;align-items:flex-start;gap:12px;min-width:0}.mobile-member-avatar{width:40px;height:40px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#e9f2ff;color:#2e5f9a;font-size:.88rem;font-weight:800;flex-shrink:0}.mobile-member-copy{min-width:0}.mobile-member-copy strong,.mobile-member-copy span,.mobile-member-copy small{display:block}.mobile-member-copy strong{font-size:.92rem;color:#22324b}.mobile-member-copy span,.mobile-member-copy small{margin-top:4px;color:#6f8097;font-size:.78rem;line-height:1.4}.mobile-member-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mobile-member-grid label{display:block;margin-bottom:4px;color:#8a867d;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.mobile-member-grid span{color:#22324b;font-size:.84rem;line-height:1.4}.mobile-member-section{display:grid;gap:8px;padding-top:10px;border-top:1px solid rgba(26,24,20,.06)}.mobile-member-section strong{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:#8a867d}.mobile-chip-wrap{display:flex;flex-wrap:wrap;gap:8px}.mobile-inline-chip{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#f5f7fa;color:#405774;font-size:.76rem;font-weight:700}.mobile-stack-list{display:grid;gap:6px}.mobile-stack-list span,.mobile-member-section>span{color:#51637c;font-size:.8rem;line-height:1.45}.mobile-member-actions{padding-top:10px;border-top:1px solid rgba(26,24,20,.06)}.mobile-member-actions .table-actions{width:100%;justify-content:flex-start}.attendance-mobile-card .status-badge{align-self:flex-start}.teacher-toolbar{display:grid;gap:12px}.teacher-assignment-card{display:grid;gap:12px;padding:16px;border-radius:14px;border:1px solid var(--border);background:#fff;box-shadow:var(--shadow)}.teacher-assignment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.teacher-assignment-identity{display:flex;align-items:flex-start;gap:12px;min-width:0}.teacher-assignment-copy{min-width:0}.teacher-assignment-copy strong,.teacher-assignment-copy span,.teacher-assignment-copy small{display:block}.teacher-assignment-copy strong{font-size:.98rem;color:#22324b}.teacher-assignment-copy span,.teacher-assignment-copy small{margin-top:4px;color:#6f8097;font-size:.8rem;line-height:1.4}.teacher-assignment-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.teacher-assignment-section{display:grid;gap:10px;padding-top:10px;border-top:1px solid rgba(26,24,20,.06)}.teacher-assignment-section>strong{font-size:.76rem;text-transform:uppercase;letter-spacing:.08em;color:#8a867d}.teacher-assignment-list{display:grid;gap:8px}.teacher-assignment-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;background:#f9fafc;border:1px solid rgba(26,24,20,.05)}.teacher-assignment-row-copy strong,.teacher-assignment-row-copy span{display:block}.teacher-assignment-row-copy strong{font-size:.88rem;color:#22324b}.teacher-assignment-row-copy span{margin-top:4px;color:#7a889b;font-size:.76rem}.teacher-assignment-row-meta{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.mini-inline-pill{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:.72rem;font-weight:700}.mini-inline-pill.success{background:#e6f5ee;color:#1a8b5a}.mini-inline-pill.violet{background:#efebff;color:#5b4fbf}.panel-kicker{color:#8a867d}.stat-caption{margin-top:10px;color:#8d9bb0;font-size:.9rem}.quick-link-card{padding:14px;border-radius:12px;border:1px solid var(--border);background:#fff;text-align:left;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.quick-link-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--theme-primary) 18%,white);box-shadow:none}.bulletin-chip{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border-radius:10px;background:#ffffffeb;border:1px solid var(--border)}.overview-banner-copy p{margin:6px 0 0;color:#6c7a91}.grid-form.compact{margin-top:0;gap:12px}.grid-form.compact .form-field{gap:6px}.grid-form.compact .form-field>span{font-size:.74rem}.grid-form.compact .form-field input,.grid-form.compact .form-field select,.grid-form.compact .form-field textarea{padding:6px 10px;min-height:34px;font-size:.88rem;border-radius:8px}.grid-form.compact .form-field textarea{min-height:72px}.grid-form.compact .multiselect-box{max-height:170px;padding:8px;gap:6px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.grid-form.compact .multiselect-option{padding:6px 9px;font-size:.84rem}.multiselect-wrapper{display:grid;gap:6px}.multiselect-wrapper--excel{gap:8px}.multiselect-search{width:100%;border:1px solid var(--border);background:#fff;border-radius:8px;padding:7px 11px;font-size:.86rem;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.multiselect-search:focus{border-color:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 55%,white);box-shadow:0 0 0 3px color-mix(in srgb,var(--theme-primary, var(--blue-600)) 12%,white)}.multiselect-selection-summary{display:flex;flex-wrap:wrap;gap:6px}.multiselect-selection-chip{display:inline-flex;align-items:center;max-width:100%;padding:5px 9px;border-radius:999px;background:color-mix(in srgb,var(--theme-primary, var(--blue-600)) 10%,white);border:1px solid color-mix(in srgb,var(--theme-primary, var(--blue-600)) 22%,white);color:#314357;font-size:.76rem;line-height:1.35}.multiselect-box--excel{grid-template-columns:1fr;gap:6px;padding:6px;border-radius:12px;max-height:220px}.multiselect-option--excel{justify-content:flex-start;width:100%;text-align:left;padding:8px 10px;border-radius:8px;background:#fff}.multiselect-option-copy{min-width:0;white-space:normal;line-height:1.35}.grid-form.compact .checkbox-field{font-size:.88rem}.teacher-assignment-card{padding:12px 14px;gap:10px}.teacher-assignment-section{padding-top:8px}.teacher-assignment-row{padding:8px 10px}.form-field--wide{grid-column:1 / -1}.assignment-repeater{display:flex;flex-direction:column;gap:10px;border:1px solid var(--border);border-radius:12px;padding:12px;background:#f7f9fb}.assignment-repeater:before{content:"Cours assignes";font-size:.78rem;font-weight:700;color:#314357;letter-spacing:.02em}.assignment-repeater-addrow{display:grid;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) 80px 70px auto;gap:8px;align-items:center}.assignment-repeater-addrow select,.assignment-repeater-addrow input{min-height:36px;padding:6px 10px;font-size:.85rem;border-radius:8px;border:1px solid var(--border);background:#fff}.assignment-repeater-add{padding:8px 14px;font-size:.85rem;white-space:nowrap}.assignment-chip-list{display:flex;flex-wrap:wrap;gap:8px}.assignment-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#e6f4ea;color:#1f7a3a;font-size:.8rem;font-weight:600;border:1px solid #c5e5cf}.assignment-chip-remove{background:transparent;border:none;color:#1f7a3a;cursor:pointer;padding:0 2px;font-size:.9rem;line-height:1}.assignment-chip-remove:hover{color:#c0392b}.readonly-badge{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;background:#f1f4f8;border:1px solid var(--border);color:#314357;font-size:.9rem}.readonly-badge-key{color:#6b7a8b;font-weight:600}.readonly-badge strong{letter-spacing:.02em}@media (max-width: 640px){.assignment-repeater-addrow{grid-template-columns:1fr 1fr}.assignment-repeater-addrow .assignment-repeater-add{grid-column:1 / -1}}.form-actions,.table-actions,.inline-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.export-action-row{justify-content:flex-end;margin-top:14px}.export-action-row .ghost-button{min-width:132px;justify-content:center}.inline-form{margin-bottom:18px}.data-table tbody tr:last-child td{border-bottom:none}.action-cluster{display:flex;flex-wrap:wrap;gap:10px}.quick-link-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.quick-link-card strong{display:block;font-size:.92rem;margin-bottom:6px}.quick-link-card span{color:#6a7b93;font-size:.82rem}.subtle-list{display:grid;gap:10px}.subtle-list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#faf9f6;border:1px solid var(--border)}.subtle-list-item strong{display:block}.subtle-list-item span{color:#6f8097}.subtle-list-item small{display:block;color:#8a96a8;font-size:.76rem;line-height:1.45}.presence-filter-panel{display:grid;gap:12px;margin-bottom:14px;padding:14px;border:1px solid rgba(31,42,55,.08);border-radius:14px;background:#fbfcfd}.presence-filter-actions,.presence-filter-grid{display:flex;flex-wrap:wrap;gap:10px}.presence-filter-option{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid rgba(43,119,199,.12);background:#fff;color:#516274;cursor:pointer;transition:border-color .2s ease,background .2s ease,color .2s ease}.presence-filter-option.active{border-color:#2b77c759;background:#2b77c714;color:#1f4f7e}.presence-filter-option input{accent-color:#2b77c7}.presence-chart-list{display:grid;gap:12px}.presence-chart-row{display:grid;gap:8px}.presence-chart-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center}.presence-chart-head strong:first-child{min-width:0}.presence-chart-head span{color:#6f8097;font-size:.78rem}.presence-chart-track{width:100%;height:7px;border-radius:999px;overflow:hidden;background:#e8edf3}.presence-chart-fill{height:100%;border-radius:inherit;background:#2b77c7}.presence-chart-fill.success{background:linear-gradient(90deg,#2e9b62,#49c07d)}.presence-chart-fill.warning{background:linear-gradient(90deg,#d08700,#efb23a)}.presence-chart-fill.danger{background:linear-gradient(90deg,#cb4a4a,#e87a7a)}.presence-table-cell{display:grid;gap:6px;min-width:160px}.presence-table-cell strong{font-size:.82rem;color:#213247}.attendance-sheet{display:grid;gap:10px;margin-top:16px}.attendance-sheet-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid rgba(18,35,61,.06)}.attendance-sheet-row:last-child{border-bottom:none}.attendance-sheet-copy strong,.attendance-sheet-copy span,.attendance-sheet-copy small{display:block}.attendance-sheet-copy strong{font-size:.92rem}.attendance-sheet-copy span,.attendance-sheet-copy small{color:#6d7d96}.attendance-sheet-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.teacher-mobile-scroll-table{display:none}.teacher-desktop-only{display:block}.attendance-mark-button{border:1px solid var(--border);background:#fff;color:#51637c;border-radius:999px;padding:8px 12px;cursor:pointer;font-weight:700;transition:background .18s ease,border-color .18s ease,color .18s ease}.attendance-mark-button.active.present{background:#e6f5ee;color:#0f766e;border-color:#a8dcc4}.attendance-mark-button.active.absent{background:#fcecea;color:#c0392b;border-color:#f0b7b1}.attendance-mark-button.active.late{background:#fff2df;color:#d4700a;border-color:#f0c87a}.child-switcher{display:flex;gap:8px;flex-wrap:wrap}.child-pill{border:1px solid var(--border);background:#ffffffeb;border-radius:999px;padding:9px 14px;cursor:pointer;font-weight:700;color:#48607d}.child-pill.active{background:var(--theme-primary);color:#fff;border-color:var(--theme-primary)}.split-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.form-actions.stacked-mobile{justify-content:space-between}.overview-banner-copy{min-width:0}.overview-banner-copy strong{display:block;font-size:1.18rem}@media (max-width: 1180px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.panel-grid,.split-card-grid{grid-template-columns:1fr}}@media (max-width: 1024px){.app-shell,.password-page{grid-template-columns:1fr}.sidebar-overlay{display:block}.sidebar{position:fixed;inset:0 auto 0 0;width:280px;max-width:calc(100vw - 80px);transform:translate(-100%);transition:transform .22s ease;z-index:60;box-shadow:14px 0 32px #0f172a3d}.sidebar.open{transform:translate(0)}.mobile-toggle{display:inline-flex;margin-bottom:0}}@media (max-width: 520px){.sidebar{width:240px;max-width:calc(100vw - 64px)}.brand-logo-link-topbar{max-width:142px}.brand-logo-image-topbar{height:40px}}@media (max-width: 860px){.desktop-table-wrap{display:none}.mobile-data-list{display:grid;gap:12px}.desktop-card-list{display:none}}@media (max-width: 720px){.login-page,.main-content,.login-panel,.password-page,.section-card,.context-strip{padding:16px}.brand-logo-link-login{max-width:156px}.login-panel-brand-copy h1{font-size:clamp(1.7rem,7vw,2.35rem)}.login-credential-grid{grid-template-columns:1fr;gap:12px}.login-panel-divider{margin:16px 0 18px}.main-header-stack,.page-content{padding-left:0;padding-right:0}.topbar,.topbar-actions,.context-strip,.overview-banner{align-items:flex-start;flex-direction:column}.topbar{padding:12px 14px;gap:12px}.topbar h1{font-size:1rem}.topbar p{font-size:.74rem}.topbar-actions,.header-action-wrap{width:100%}.topbar-meta{width:100%;justify-content:flex-start}.student-topbar-meta,.parent-topbar-meta,.teacher-topbar-meta{width:100%;justify-content:flex-start;gap:6px}.student-topbar-count,.parent-topbar-count,.teacher-topbar-count{min-height:26px;padding:4px 8px;font-size:.66rem}.topbar-date-pill{max-width:100%;white-space:normal;text-align:left}.header-action-wrap>*{width:100%}.overview-header-actions{display:grid;grid-template-columns:auto minmax(0,1fr);width:100%}.overview-class-filter-button{justify-content:center;min-width:48px;padding:0 14px}.overview-class-filter-label{display:none}.context-strip,.overview-strip,.school-strip{gap:8px}.local-navigation-strip{width:100%;max-width:100%;overflow:hidden}.local-nav-bar{align-items:center;flex-direction:row;flex-wrap:nowrap;gap:6px;padding:10px 12px;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.local-nav-label,.local-nav-chip{flex:0 0 auto;white-space:nowrap}.local-nav-label{font-size:.66rem;letter-spacing:.06em}.local-nav-chip{padding:6px 10px;font-size:.72rem}.page-content{gap:14px;padding-top:14px}.crud-modal-backdrop{padding:12px}.crud-modal-card{padding:16px;max-height:calc(100vh - 24px)}.schedule-modal,.student-roster-modal{width:100%;max-height:calc(100vh - 24px);padding:16px}.detail-drawer-backdrop{padding:10px}.detail-drawer-panel{width:100%;border-radius:16px}.detail-grid{grid-template-columns:1fr}.detail-summary-head,.detail-list-item{flex-direction:column;align-items:flex-start}.detail-action-row .primary-button,.detail-action-row .ghost-button{flex-basis:100%}.crud-modal-header{flex-direction:column}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.table-wrap{border-radius:16px}.grade-detail-table th,.grade-detail-table td{padding:7px 4px;font-size:.68rem}.grade-detail-table th:first-child,.grade-detail-table td:first-child{width:38%}.grade-table-filter-row>*{flex-basis:160px;max-width:190px}.multiselect-box,.class-management-grid,.management-form-grid.two,.management-form-grid.three{grid-template-columns:1fr}.schedule-slot-row,.schedule-slot-meta,.student-roster-row{align-items:flex-start;flex-direction:column}.student-roster-main{width:100%}.student-roster-side,.student-roster-editor{width:100%;min-width:0;justify-items:stretch}.student-roster-actions,.student-roster-editor-actions{justify-content:flex-start}.filter-row>*{flex-basis:100%;width:100%}.presence-chart-head{grid-template-columns:1fr auto}.presence-chart-head span{grid-column:1 / -1}.presence-filter-option{width:100%;justify-content:space-between}.primary-button,.ghost-button,.danger-button,.secondary-button,.attendance-mark-button{min-height:44px}.form-field input,.form-field select,.form-field textarea,.inline-form select,.filter-row input,.filter-row select{font-size:16px;min-height:44px}.table-actions .ghost-button,.table-actions .danger-button,#annual-enrollments-section .section-header .ghost-button,.attendance-record-actions .ghost-button,.attendance-entry-actions .ghost-button{min-height:44px;height:auto}.mobile-member-grid{grid-template-columns:1fr}.mobile-member-card-head{flex-direction:column}.teacher-assignment-head,.teacher-assignment-row,.teacher-assignment-row-meta{align-items:flex-start;flex-direction:column}.teacher-assignment-badges{justify-content:flex-start}.shell-account-actions,.sidebar-session-actions{width:100%;justify-content:flex-start}.attendance-sheet-row{align-items:flex-start;flex-direction:column}.attendance-sheet-actions{width:100%;justify-content:flex-start}.teacher-desktop-only{display:none}.teacher-mobile-scroll-table{display:block}.form-actions.stacked-mobile{flex-direction:column-reverse;align-items:stretch}}@media (max-width: 520px){.stats-grid{grid-template-columns:1fr}.page-content{padding-top:12px}.section-card,.class-card,.class-management-card,.mobile-data-card{padding:12px}.school-strip strong{font-size:.88rem}.school-code-pill,.meta-pill,.plan-badge.inline{font-size:.7rem}}@media (max-width: 400px){.app-background,.login-page,.main-content{padding:12px}.login-panel{padding:22px 18px 20px;border-radius:20px}.login-panel-brand-copy h1{font-size:clamp(1.9rem,10vw,2.5rem)}.login-panel-brand-copy p,.login-panel-copy-block p,.login-footnote{font-size:.92rem}.password-toggle{min-width:104px}.login-access-badge{font-size:.78rem;padding:7px 12px}.sidebar{width:min(272px,calc(100vw - 48px))}.brand-logo-link-sidebar{max-width:132px}.brand-block,.sidebar-footer,.topbar,.section-card,.context-strip,.overview-strip,.crud-modal-card,.schedule-modal,.student-roster-modal{padding-left:12px;padding-right:12px}.mobile-data-card{padding:12px}.student-roster-avatar,.mobile-member-avatar,.entity-avatar,.feed-avatar,.empty-illustration{width:40px;height:40px}}.sidebar-brand-block{padding:20px 16px 16px}.sidebar-footer-block{padding-top:14px}.sidebar-user-card{padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}.logout-icon-button{margin-left:auto;width:34px;height:34px;border:none;border-radius:8px;background:#ffffff0f;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.logout-icon-button:hover{background:#ffffff1f}.main-topbar{min-height:56px}.main-topbar .topbar-copy{display:flex;flex-direction:column}.nav-icon-box{width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:#ffffff14;color:currentColor;font-size:.64rem;font-weight:800;flex-shrink:0}.nav-meta{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:#ffffff14;color:#ffffffb8;font-size:.68rem;font-weight:700}.full-span{grid-column:1 / -1}.dashboard-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.dashboard-summary-card,.class-management-card,.schedule-overview-card,.parent-hero-card{background:#fff;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.dashboard-summary-card,.class-management-card,.schedule-overview-card{padding:16px}.dashboard-summary-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.dashboard-summary-head strong,.schedule-overview-card strong,.parent-hero-card strong{display:block;font-size:.98rem;color:#22324b}.dashboard-summary-head span,.parent-hero-card span{display:block;margin-top:4px;color:#73839a;font-size:.8rem}.schedule-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.schedule-overview-grid--student{align-items:start}.schedule-overview-card>strong{margin-bottom:12px}.student-mobile-schedule{display:none}.student-mobile-schedule-header{position:sticky;top:0;z-index:2;background:#fff}.student-mobile-schedule-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.student-mobile-schedule-head strong{font-size:15px;font-weight:500;color:#22324b}.student-mobile-schedule-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:20px;border:.5px solid rgba(17,24,39,.12);background:#f5f7fb;color:#5b6472;font-size:11px;font-weight:500;white-space:nowrap}.student-mobile-schedule-days{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;-ms-overflow-style:none}.student-mobile-schedule-days::-webkit-scrollbar{display:none}.student-mobile-day-chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:58px;padding:10px 10px 8px;border:0;border-radius:8px;background:transparent;color:#5b6472;cursor:pointer}.student-mobile-day-chip.active{background:#111827;color:#fff}.student-mobile-day-short{font-size:11px;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.student-mobile-day-number{font-size:18px;font-weight:500;line-height:1}.student-mobile-day-dot{width:4px;height:4px;border-radius:999px;background:transparent}.student-mobile-day-dot.active{background:#1a56db}.student-mobile-schedule-timeline{position:relative;margin-top:16px;padding-left:52px}.student-mobile-schedule-timeline:before{content:"";position:absolute;left:20px;top:0;bottom:0;width:.5px;background:var(--border)}.student-mobile-timeline-list{display:flex;flex-direction:column;gap:12px}.student-mobile-timeline-item{position:relative}.student-mobile-timeline-hour{position:absolute;left:-52px;top:18px;width:38px;text-align:right;color:#6f8097;font-size:11px;font-weight:500}.student-mobile-timeline-point{position:absolute;left:-35px;top:20px;width:8px;height:8px;border-radius:999px;border:2px solid transparent;box-sizing:content-box}.student-mobile-course-card{display:flex;align-items:center;gap:12px;padding:10px 14px;border:.5px solid var(--border);border-radius:12px;background:#fff}.student-mobile-course-bar{width:3px;height:36px;border-radius:2px;flex-shrink:0}.student-mobile-course-copy{min-width:0;flex:1 1 auto}.student-mobile-course-copy strong{display:block;color:#22324b;font-size:14px;font-weight:500;line-height:1.3}.student-mobile-course-copy span{display:block;margin-top:1px;color:#6f8097;font-size:12px;font-weight:400;line-height:1.35}.student-mobile-course-duration{color:#6f8097;font-size:11px;font-weight:500;white-space:nowrap}.student-desktop-schedule{display:block}.detail-modal-panel{width:min(860px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:22px}.rating-stars-row{display:flex;align-items:center;gap:6px}.rating-star{width:32px;height:32px;border:none;border-radius:999px;background:#f6f3ea;color:#b8aea0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1rem}.rating-star.active{background:#fff2df;color:#d4700a}.hero-stat-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.parent-hero-card{display:flex;align-items:center;gap:12px;padding:18px;background:linear-gradient(135deg,#0f3d2e,#1d9e75);border:none}.parent-hero-card strong,.parent-hero-card span{color:#fff}.parent-hero-card-button{width:100%;text-align:left;cursor:pointer;font:inherit}.parent-hero-card-button:hover{transform:translateY(-1px)}.parent-hero-avatar{width:48px;height:48px;border-radius:50%;background:#ffffff2e;color:#fff;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.stats-grid-parent{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width: 860px){.stats-grid-parent{grid-template-columns:1fr}}.parent-payment-card{max-width:720px;background:#fff;border:.5px solid #d9dee7;border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.parent-payment-card-header{padding:14px 16px 12px;border-bottom:.5px solid #d9dee7}.parent-payment-card-label{display:block;margin-bottom:6px;font-size:10px;font-weight:700;letter-spacing:.08em;color:#7a8597}.parent-payment-card-total-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.parent-payment-card-total{font-size:28px;font-weight:700;line-height:1;letter-spacing:-.5px;color:#dc2626}.parent-payment-card-total-label{font-size:11px;color:#7a8597}.parent-payment-card-summary{margin:3px 0 0;font-size:12px;color:#7a8597}.parent-payment-child-section{padding:12px 16px;border-bottom:.5px solid #d9dee7}.parent-payment-child-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.parent-payment-child-meta{display:flex;align-items:center;gap:10px;min-width:0}.parent-payment-child-avatar{width:32px;height:32px;border-radius:50%;background:#e8f5e9;color:#1b5e20;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}.parent-payment-child-copy{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px}.parent-payment-child-copy strong{display:inline;font-size:13px;font-weight:600;color:#1c2432}.parent-payment-child-copy span{display:inline;font-size:11px;color:#7a8597}.parent-payment-child-total{flex-shrink:0;font-size:12px;font-weight:600;color:#dc2626}.parent-payment-next-box{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:#fef9ec;border:.5px solid #f59e0b;border-radius:8px}.parent-payment-next-copy{min-width:0}.parent-payment-next-tag{display:block;font-size:10px;font-weight:500;letter-spacing:.05em;color:#92400e}.parent-payment-next-label{display:block;margin-top:2px;font-size:12px;color:#5b6472}.parent-payment-next-amount{display:block;margin-top:2px;font-size:15px;font-weight:700;color:#b45309}.parent-payment-next-date{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:3px 9px;border-radius:999px;background:#fef3c7;border:.5px solid #f59e0b;color:#92400e;font-size:11px;font-weight:600}.parent-payment-card-footer{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;min-height:44px;background:#f7f8fb;border:0;border-top:.5px solid #d9dee7;color:#1a56db;cursor:pointer;text-align:left;font:inherit}.parent-payment-card-footer span:first-child{font-size:11px;color:#7a8597}.parent-payment-card-footer span:last-child{font-size:11px;font-weight:600;color:#1a56db}.parent-payment-empty{padding:18px 16px;font-size:13px;color:#7a8597;text-align:center}.parent-payment-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0f172a52;display:flex;align-items:center;justify-content:center;padding:20px}.parent-payment-dialog{width:min(360px,100%);background:#fff;border:.5px solid #d9dee7;border-radius:16px;box-shadow:0 24px 64px #0f172a33;padding:18px 18px 16px;display:grid;gap:12px;text-align:center}.parent-payment-dialog strong{font-size:15px;color:#1c2432}.parent-payment-dialog p{margin:0;font-size:13px;line-height:1.55;color:#5b6472}.parent-payment-dialog .primary-button{width:100%;justify-content:center}@media (max-width: 520px){.parent-payment-card-total{font-size:24px}.parent-payment-child-row{align-items:flex-start}.parent-payment-next-box{align-items:flex-start;flex-direction:column}.parent-payment-next-date{align-self:flex-start}.parent-payment-dialog-backdrop{padding:16px}}.mini-stat-grid.compact{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.mini-stat-grid.compact .mini-stat{padding:10px 12px;border-radius:10px}.mini-stat-grid.compact .mini-kicker{font-size:.66rem;margin-bottom:4px}.mini-stat-grid.compact .mini-stat strong{font-size:1.1rem}.mini-stat-grid.compact .mini-stat span{font-size:.76rem}.member-summary-card,.member-students-summary-card{padding-top:12px;padding-bottom:12px}.member-summary-card .mini-stat-grid.compact,.member-students-summary-card .mini-stat-grid.compact{gap:8px}.member-summary-card .mini-stat-grid.compact .mini-stat,.member-students-summary-card .mini-stat-grid.compact .mini-stat{padding:8px 10px}.member-summary-card .mini-stat-grid.compact .mini-kicker,.member-students-summary-card .mini-stat-grid.compact .mini-kicker{font-size:.62rem;margin-bottom:3px}.member-summary-card .mini-stat-grid.compact .mini-stat strong,.member-students-summary-card .mini-stat-grid.compact .mini-stat strong{font-size:1rem}.member-summary-card .mini-stat-grid.compact .mini-stat span,.member-students-summary-card .mini-stat-grid.compact .mini-stat span{font-size:.72rem;line-height:1.28}.enrollment-cycle-card .section-header h2{font-size:1.02rem}.enrollment-cycle-card .section-header{margin-bottom:10px}.enrollment-cycle-card .mini-stat-grid.compact{grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px}.enrollment-cycle-card .mini-stat-grid.compact .mini-stat{padding:8px 10px;border-radius:9px}.enrollment-cycle-card .mini-stat-grid.compact .mini-kicker{font-size:.62rem;margin-bottom:3px}.enrollment-cycle-card .mini-stat-grid.compact .mini-stat strong{font-size:.98rem}.enrollment-cycle-card .mini-stat-grid.compact .mini-stat span{font-size:.72rem;line-height:1.3}.enrollment-mobile-header-card{background:#fff;border-bottom:.5px solid #d9dee7;padding:14px 16px 12px;margin-bottom:12px;border-radius:14px}.enrollment-mobile-header-copy h2{margin:0;font-size:17px;font-weight:600;color:#1c2432}.enrollment-mobile-header-copy p{margin:2px 0 0;font-size:12px;color:#7a8597}.enrollment-cycle-brief-card{background:#fff;border:.5px solid #d9dee7;border-radius:14px;overflow:hidden;margin-bottom:12px}.enrollment-primary-create-button{width:100%;min-height:44px;margin-bottom:12px;border:0;border-radius:12px;background:#1a56db;color:#fff;font-size:14px;font-weight:500}.enrollment-primary-create-button:active{background:#1447b8}.enrollment-cycle-brief-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px 10px;border-bottom:.5px solid #d9dee7}.enrollment-cycle-brief-head strong{font-size:13px;font-weight:600;color:#1c2432}.enrollment-cycle-brief-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.enrollment-cycle-brief-stat{display:grid;gap:4px;padding:10px 12px;text-align:left;background:#fff;border:0;border-right:.5px solid #d9dee7}.enrollment-cycle-brief-stat:last-child{border-right:0}.enrollment-cycle-brief-kicker{font-size:9px;font-weight:700;letter-spacing:.07em;color:#7a8597}.enrollment-cycle-brief-kicker--with-icon{display:flex;align-items:center;justify-content:space-between;gap:8px}.enrollment-balance-eye{font-size:14px;line-height:1}.enrollment-cycle-brief-stat strong{font-size:15px;font-weight:600;color:#1c2432}.enrollment-cycle-brief-stat span:last-child{font-size:10px;color:#7a8597}.enrollment-cycle-brief-accent{color:#1a56db!important}.enrollment-cycle-brief-danger{font-size:12px!important;color:#dc2626!important}.enrollment-cycle-brief-masked{font-size:14px!important;color:#7a8597!important;letter-spacing:2px}.enrollment-toolbar{display:grid;gap:10px}.enrollment-toolbar-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}#annual-enrollments-section .section-header{padding-bottom:12px;border-bottom:.5px solid #d9dee7}#annual-enrollments-section .section-header h2{font-size:13px;font-weight:600}#annual-enrollments-section .section-header .ghost-button{height:30px;padding:0 12px;background:#eef2ff;color:#3730a3;border:.5px solid #c7d2fe;border-radius:8px;font-size:12px;font-weight:600}#annual-enrollments-section .crud-toolbar{padding:10px 14px;border-bottom:.5px solid #d9dee7}#annual-enrollments-section .filter-search,#annual-enrollments-section .enrollment-toolbar select{min-height:34px;font-size:13px;border-radius:8px}.enrollment-mobile-card{cursor:pointer}.enrollment-mobile-card .mobile-member-actions{padding-top:0;border-top:0}.enrollment-mobile-card .mobile-member-actions .table-actions{justify-content:flex-end}.enrollment-mobile-card .status-badge{align-self:flex-start}.enrollment-student-cell{display:grid;gap:3px;min-width:160px}.enrollment-student-cell strong{font-size:.9rem}.enrollment-student-meta-inline{color:#6f8097;font-size:11px;font-weight:400;line-height:1.3;white-space:nowrap}.attendance-mobile-header-card,.attendance-mobile-stats-band,.attendance-mobile-filters-card,.attendance-mobile-grouped-list{display:block}.attendance-mobile-header-card{background:#fff;border-bottom:.5px solid #d9dee7;padding:14px 16px 12px;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.attendance-mobile-header-copy h2{margin:0;font-size:17px;font-weight:600;color:#1c2432}.attendance-mobile-header-copy p{margin:2px 0 0;font-size:12px;color:#7a8597}.attendance-mobile-declare-button{height:34px;padding:0 14px;border:0;border-radius:10px;background:#1a56db;color:#fff;font-size:13px;font-weight:500;cursor:pointer;flex-shrink:0}.attendance-mobile-declare-button:active{background:#1447b8}.attendance-mobile-stats-band{background:#fff;border-bottom:.5px solid #d9dee7;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.attendance-mobile-stat{padding:10px 12px;border-right:.5px solid #d9dee7}.attendance-mobile-stat:last-child{border-right:0}.attendance-mobile-stat-label{display:block;font-size:9px;font-weight:700;letter-spacing:.07em;color:#7a8597}.attendance-mobile-stat-value{display:block;margin-top:4px;font-size:20px;font-weight:600;color:#1c2432}.attendance-mobile-stat-value.is-today{color:#dc2626}.attendance-mobile-stat-value.is-month{color:#d97706}.attendance-mobile-stat-subtext{display:block;margin-top:3px;font-size:10px;color:#7a8597}.attendance-mobile-filters-card{background:#fff;border-bottom:.5px solid #d9dee7;padding:10px 16px;display:grid;gap:8px}.attendance-mobile-filter-row{display:flex;align-items:center;gap:8px}.attendance-mobile-search{flex:1;width:100%;min-height:32px;border-radius:8px;border:.5px solid #d9dee7;background:#f7f8fb;padding:0 12px;font-size:13px;color:#1c2432}.attendance-filter-pill-row{display:flex;gap:6px}.attendance-filter-pill{height:28px;padding:0 12px;border-radius:20px;border:.5px solid transparent;font-size:12px;font-weight:500;background:#fff;cursor:pointer}.attendance-filter-pill.is-all{border-color:#d9dee7;color:#5b6472}.attendance-filter-pill.is-all.active{background:var(--brand-primary);border-color:var(--brand-primary);color:#fff}.attendance-filter-pill.is-absent{background:#fef2f2;border-color:#fca5a5;color:#dc2626}.attendance-filter-pill.is-absent.active{background:#dc2626;border-color:#dc2626;color:#fff}.attendance-filter-pill.is-late{background:#fffbeb;border-color:#fcd34d;color:#d97706}.attendance-filter-pill.is-late.active{background:#d97706;border-color:#d97706;color:#fff}.attendance-filter-pill.is-excused{background:#f0fdf4;border-color:#86efac;color:#16a34a}.attendance-filter-pill.is-excused.active{background:#16a34a;border-color:#16a34a;color:#fff}.attendance-mobile-grouped-list{display:flex;padding:10px 16px;flex-direction:column;gap:12px}.attendance-mobile-group{display:grid;gap:8px}.attendance-mobile-group-label{font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:#7a8597}.attendance-mobile-group-items{display:grid;gap:8px}.attendance-record-scroll{overflow-x:auto}.attendance-record-table{min-width:680px}.attendance-record-head{display:grid;grid-template-columns:minmax(220px,2fr) minmax(88px,.8fr) minmax(88px,.8fr) auto;align-items:center;gap:12px;padding:0 10px 6px}.attendance-record-head-cell{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#7a8597}.attendance-record-head-cell--actions{text-align:right}.attendance-record-row.attendance-entry-card{background:#fff;border:.5px solid #d9dee7;border-radius:12px;padding:10px 12px;border-left:3px solid #d9dee7;display:grid;grid-template-columns:minmax(220px,2fr) minmax(88px,.8fr) minmax(88px,.8fr) auto;align-items:center;gap:12px}.attendance-entry-card.is-absent{border-left-color:#dc2626}.attendance-entry-card.is-late{border-left-color:#d97706}.attendance-entry-card.is-excused{border-left-color:#16a34a}.attendance-entry-main{display:flex;align-items:center;gap:10px}.attendance-entry-avatar{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:11px;font-weight:700}.attendance-entry-avatar.is-absent{background:#fee2e2;color:#991b1b}.attendance-entry-avatar.is-late{background:#fef3c7;color:#92400e}.attendance-entry-avatar.is-excused{background:#dcfce7;color:#166534}.attendance-entry-copy{flex:1;min-width:0}.attendance-entry-primary strong{display:block;font-size:13px;font-weight:500;color:#1c2432}.attendance-entry-primary span{display:block;margin-top:1px;font-size:11px;color:#7a8597;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attendance-entry-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.attendance-entry-status{display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border-radius:10px;font-size:10px;font-weight:500}.attendance-entry-status.is-absent{background:#fee2e2;color:#991b1b}.attendance-entry-status.is-late{background:#fef3c7;color:#92400e}.attendance-entry-status.is-excused{background:#dcfce7;color:#166534}.attendance-entry-period{font-size:11px;color:#7a8597}.attendance-record-period{white-space:nowrap}.attendance-record-status-cell{display:flex;justify-content:flex-start}.attendance-entry-status-button{border:.5px solid currentColor;cursor:pointer;transition:transform .15s ease,opacity .15s ease}.attendance-entry-status-button:hover{transform:translateY(-1px)}.attendance-entry-status-button:disabled{opacity:.72;cursor:progress}.attendance-record-actions{display:flex;justify-content:flex-end}.attendance-record-actions .detail-action-row,.attendance-entry-actions .detail-action-row{justify-content:flex-end;flex-wrap:nowrap;gap:6px}.attendance-record-actions .ghost-button,.attendance-entry-actions .ghost-button{min-height:28px;height:28px;padding:0 9px;border-radius:8px;font-size:11px;white-space:nowrap}#attendance-section>.section-header,#attendance-section>.crud-toolbar,#attendance-section>.simple-table-container,#attendance-section>.empty-state{display:none}.tall-section-card .sticky-table-wrap{max-height:min(78vh,860px)}#fee-schedules-section .crud-modal-card{background:linear-gradient(180deg,#fffdf8,#f9fbff)}#fee-schedules-section .crud-modal-header{padding-bottom:8px;border-bottom:1px solid rgba(53,96,191,.08)}#fee-schedules-section .grid-form.compact{gap:14px 14px}#fee-schedules-section .grid-form.compact .fee-field{padding:10px 12px;border-radius:14px;border:1px solid rgba(36,64,122,.08)}#fee-schedules-section .grid-form.compact .fee-field>span{margin-bottom:6px}#fee-schedules-section .grid-form.compact .fee-field--meta{background:#f8f1e0b8}#fee-schedules-section .grid-form.compact .fee-field--total{background:linear-gradient(135deg,#2267d614,#13957014);border-color:#2267d624}#fee-schedules-section .grid-form.compact .fee-field--amount{background:#2267d60d}#fee-schedules-section .grid-form.compact .fee-field--due{background:#1395700d}#fee-schedules-section .grid-form.compact .fee-field .field-help{font-size:.72rem}.filter-row-search-first .filter-search{flex:2 1 280px}.filter-row-search-first select{flex:1 1 180px}.communication-panel{background:#fff;border-radius:12px;border:.5px solid #d9dee7;overflow:hidden}#announcements-section,#events-section{padding:12px 16px 16px;background:transparent;border:0;box-shadow:none}#announcements-section>.section-header,#announcements-section>.crud-toolbar,#events-section>.section-header,#events-section>.crud-toolbar{display:none}.communication-publish-button{flex-shrink:0;min-width:132px}.communication-panel-tabs,.communication-mobile-tabs{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 16px;background:#fff;border-bottom:.5px solid #d9dee7}.communication-mobile-tabs-group{display:flex;gap:0;min-width:0}.communication-tab{min-height:46px;padding:0 16px;border:0;border-bottom:2px solid transparent;background:transparent;color:#7a8597;font-size:13px;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px}.communication-tab.active{color:#1a56db;border-bottom-color:#1a56db}.communication-unread-badge{min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#dc2626;color:#fff;font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation}@media (max-width: 767px){.communication-mobile-tabs{flex-direction:column;align-items:stretch;padding:12px 16px}.communication-mobile-tabs-group{width:100%}.communication-publish-button{width:100%;min-width:0}}.communication-panel-search,.communication-mobile-search{background:#fff;border-bottom:.5px solid #d9dee7;padding:10px 16px}.communication-panel-search input,.communication-mobile-search input{width:100%;min-height:34px;border:.5px solid #d9dee7;border-radius:8px;background:#f7f8fb;padding:0 12px;font-size:13px;color:#1c2432}.communication-panel-feed{display:grid;gap:12px;padding:12px 16px 16px}.communication-card{background:#fff;border:.5px solid #d9dee7;border-left:3px solid #1a56db;border-radius:12px;overflow:hidden}.communication-card.is-read{opacity:.8;border-left-color:#d9dee7}.communication-card--event.is-upcoming{border-left-color:#16a34a}.communication-card--event.is-live{border-left-color:#d97706}.communication-card--event.is-past{border-left-color:#9ca3afbf;opacity:.75}.communication-card-top{padding:11px 13px 6px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.communication-card-title-wrap{flex:1;min-width:0;display:flex;align-items:flex-start;gap:8px}.communication-card h3{margin:0;font-size:14px;font-weight:500;line-height:1.3;color:#1c2432}.communication-card.is-read h3{font-weight:400;color:#536072}.communication-unread-dot{width:7px;height:7px;border-radius:50%;background:#1a56db;margin-top:6px;flex-shrink:0}.communication-audience-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:2px 7px;border-radius:10px;border:.5px solid #d9dee7;font-size:10px;font-weight:500;white-space:nowrap}.communication-audience-badge.is-global{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}.communication-audience-badge.is-students{background:#f0fdf4;color:#166534;border-color:#86efac}.communication-audience-badge.is-parents{background:#fef9c3;color:#854d0e;border-color:#fcd34d}.communication-audience-badge.is-teachers{background:#fef2f2;color:#991b1b;border-color:#fca5a5}.communication-card-body{padding:0 13px 10px}.communication-card-body p{margin:0;font-size:13px;line-height:1.5;color:#5b6472}.communication-card-body p.clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.communication-card-footer{padding:8px 13px;border-top:.5px solid #d9dee7;display:flex;align-items:center;justify-content:space-between;gap:8px}.communication-card-meta,.communication-event-scope{font-size:11px;color:#7a8597}.communication-card-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.communication-card-button{min-height:26px;padding:0 10px;border-radius:6px;border:.5px solid #d9dee7;background:#f7f8fb;color:#536072;font-size:11px;font-weight:500;cursor:pointer}.communication-card-button.is-danger{background:#fef2f2;color:#dc2626;border-color:#fca5a5}.communication-event-dates{padding:4px 13px 6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.communication-event-date-chip{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:6px;background:#f7f8fb;font-size:11px;font-weight:500;color:#536072}.communication-event-date-separator{font-size:11px;color:#7a8597}.communication-event-location{padding:0 13px 10px;font-size:12px;color:#7a8597}.communication-event-status{font-size:11px;font-weight:500}.communication-event-status.is-upcoming{color:#16a34a}.communication-event-status.is-live{color:#d97706}.communication-event-status.is-past{color:#9ca3af}.homework-feed{display:grid;gap:12px}.homework-card{border:1px solid #dbe4f0;border-radius:18px;background:#fff;box-shadow:0 10px 28px #0f172a0d;overflow:hidden}.homework-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:16px 16px 10px}.homework-card-title-wrap{min-width:0}.homework-card h3{margin:0;font-size:1rem;line-height:1.35;color:#122033}.homework-due-badge{display:inline-flex;align-items:center;min-height:28px;padding:5px 10px;border-radius:999px;background:#eef4ff;border:1px solid #cfe0ff;color:#2457d6;font-size:.76rem;font-weight:600;white-space:nowrap}.homework-card-body{padding:0 16px 12px}.homework-card-body p{margin:0;font-size:.92rem;line-height:1.6;color:#536072;white-space:pre-wrap}.homework-card-body p.clamped{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.homework-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 16px 16px}.homework-card-meta{font-size:.78rem;color:#7a8597}.homework-card-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}@media (max-width: 640px){.homework-card-top,.homework-card-footer{flex-direction:column;align-items:flex-start}.homework-due-badge{white-space:normal}}@media (max-width: 860px){.attendance-mobile-grouped-list{display:flex}#attendance-section{margin-top:0;padding-top:0}#attendance-section>.section-header,#attendance-section>.crud-toolbar,#attendance-section>.simple-table-container,#attendance-section>.empty-state{display:none}#attendance-section .crud-modal-backdrop,#attendance-section .crud-modal-card{display:flex}}.data-table--compact{font-size:.78rem}.data-table--compact th,.data-table--compact td{padding:6px 8px;line-height:1.35}.data-table--compact th{font-size:.66rem;letter-spacing:.06em}.data-table--compact .table-actions{gap:6px;flex-wrap:nowrap;white-space:nowrap}.data-table--compact .table-actions .ghost-button,.data-table--compact .table-actions .danger-button{padding:5px 9px;font-size:.75rem;white-space:nowrap}.data-table--compact .cell-stack-list{gap:2px}.cell-chip-row{display:flex;flex-wrap:wrap;gap:4px;max-height:88px;overflow-y:auto;padding-right:2px}.cell-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:#1a18140d;border:1px solid rgba(26,24,20,.08);font-size:.72rem;line-height:1.35;color:#1f2937;white-space:nowrap}.cell-chip strong{font-weight:600}.cell-chip-sep{color:#1a181459}.cell-chip-meta{color:#51637c}.data-table--compact .cell-chip{font-size:.7rem;padding:1px 7px}.mobile-data-value .cell-chip-row{max-height:none;overflow-y:visible}.data-table--first-col-sticky thead th:first-child,.data-table--first-col-sticky tbody td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 #1a18140f}.data-table--first-col-sticky tbody tr:hover td:first-child{background:#f8f6f0}.data-table.sticky-header.data-table--first-col-sticky thead th:first-child{z-index:4}.simple-table-container{display:contents}@media (max-width: 860px){.simple-table-container--mobile-scroll .desktop-table-wrap{display:block}.simple-table-container--mobile-scroll .mobile-data-list{display:none}.simple-table-container--mobile-scroll .desktop-table-wrap{-webkit-overflow-scrolling:touch}}@media (max-width: 520px){.simple-table-container--mobile-scroll .data-table--first-col-sticky thead th:first-child,.simple-table-container--mobile-scroll .data-table--first-col-sticky tbody td:first-child{max-width:168px;min-width:132px}.simple-table-container--mobile-scroll .data-table--compact th,.simple-table-container--mobile-scroll .data-table--compact td{padding:6px 7px}}@media (max-width: 640px){.student-mobile-schedule{display:block}.student-desktop-schedule{display:none}.schedule-overview-grid--student{grid-template-columns:1fr;gap:12px}.schedule-overview-grid--student .schedule-overview-card{padding:14px}.schedule-overview-grid--student .subtle-list-item{align-items:flex-start;gap:10px}.schedule-overview-grid--student .subtle-list-item>div{min-width:0}.schedule-overview-grid--student .subtle-list-item>div>strong,.schedule-overview-grid--student .subtle-list-item>div>span{word-break:break-word}.schedule-overview-grid--student .subtle-list-item .status-badge{flex-shrink:0}.student-mobile-schedule-head{align-items:flex-start}.student-mobile-schedule-badge{max-width:44vw;overflow:hidden;text-overflow:ellipsis}.schedule-editor-add{display:none}.schedule-editor-fab{display:inline-flex;align-items:center;justify-content:center}.schedule-editor-modal{width:min(100%,390px);max-height:calc(100vh - 20px);padding:16px 14px 74px}.schedule-editor-toolbar{margin-bottom:12px}.schedule-editor-slot{align-items:flex-start}.schedule-editor-slot-side{min-width:82px}.schedule-sheet{width:100%}}.offline-queue-badge-button{display:inline-flex;align-items:center;gap:8px}.offline-queue-badge-count{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:700;background:#e2e8f0;color:#0f172a}.offline-queue-badge-count--online{background:#dbeafe;color:#1d4ed8}.offline-queue-badge-count--offline{background:#fef2f2;color:#dc2626}.offline-queue-badge-count--checking{background:#fef3c7;color:#92400e}.autosave-status-chip{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;border-radius:999px;font-size:.85rem;font-weight:700}.autosave-status-chip--success{color:#15803d}.autosave-status-chip--pending{color:#4b5563}.autosave-status-chip--error{color:#dc2626}.offline-queue-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.offline-queue-toolbar{justify-content:flex-start}.offline-queue-item{align-items:flex-start}
