@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-body:Inter, "Segoe UI", system-ui, sans-serif;--font-display:Manrope, Inter, "Segoe UI", system-ui, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.5rem;--text-2xl:2rem;--color-page:#0c0b14;--color-surface:#151421;--color-surface-raised:#1b1929;--color-surface-overlay:#ffffff06;--color-surface-hover:#29243a;--color-surface-inset:#100f1a;--color-control:#171422;--color-text:#e8e3f0;--color-text-strong:#f1f0f8;--color-text-secondary:#c5bfd2;--color-text-muted:#918da5;--color-text-subtle:#817b91;--color-border:#ffffff13;--color-border-subtle:#ffffff0e;--color-border-strong:#ffffff1f;--color-primary:#a78bfa;--color-primary-hover:#b49af8;--color-primary-strong:#8060d0;--color-on-primary:#25213d;--color-on-accent:#fff;--color-primary-soft:#a682e229;--color-primary-border:#a78bfa80;--color-primary-tint:#9a80d526;--color-success:#83e5bd;--color-success-strong:#319b78;--color-success-soft:#4bbf9121;--color-on-success:#10251d;--color-warning:#f3cf8e;--color-warning-strong:#e0a45d;--color-warning-soft:#f59e0b1f;--color-warning-border:#f59e0b3d;--color-danger:#ffabb5;--color-danger-strong:#a34f70;--color-danger-soft:#be41551f;--color-on-danger:#fff;--color-info:#9fc7ff;--color-info-soft:#5d95e621;--color-border-accent:#a682e233;--color-border-success:#4bbf9133;--color-border-danger:#be415540;--color-border-info:#5d95e63d;--color-shadow-accent:#6441a03d;--color-focus:#c0b5ff;--color-shadow:#00000059;--color-shadow-soft:#0000003d;--color-unread:#ef4444;--led-core:#ff4168;--led-highlight:#ffe5ef;--led-edge:#a91d43;--led-glow:#ff31627a;--led-glow-soft:#ff316233;--color-page-glow-primary:#704cbe21;--color-page-glow-secondary:#31877014;--gradient-card:linear-gradient(145deg, #1b1929f5, #151421f5);--gradient-student-card:linear-gradient(115deg, #191727, #171522);--gradient-student-highlight:radial-gradient(ellipse at 12% 0%, #7e57c221, transparent 55%), linear-gradient(110deg, #1f192ceb, #12131df0);--gradient-message-card:linear-gradient(145deg, #1f1c2ffa, #141320fa);--gradient-brand:linear-gradient(135deg, #9875ed, #6045ad);--gradient-primary-action:linear-gradient(110deg, #8966df, #6848ba);--gradient-avatar:linear-gradient(145deg, #8c65d5, #53358b);--gradient-accent-progress:linear-gradient(90deg, #8060d0, #b49af8);--gradient-success-progress:linear-gradient(90deg, #319b78, #70dfb1);--bg:var(--color-page);--surface:var(--color-surface);--surface-2:var(--color-surface-raised);--border:var(--color-border);--muted:var(--color-text-muted);--purple:var(--color-primary);--green:#61d6a5;--text:var(--color-text);--text-h:var(--color-text-strong);--accent:var(--color-primary);--accent-bg:var(--color-primary-soft);--accent-border:var(--color-focus);--code-bg:var(--color-surface-raised);--social-bg:var(--color-surface-raised);--shadow:0 24px 80px var(--color-shadow);color:var(--color-text);background:var(--color-page);font-family:Inter,Segoe UI,system-ui,sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-page:#f4f5fb;--color-surface:#fff;--color-surface-raised:#f8f9fd;--color-surface-overlay:#f1f2f8;--color-surface-hover:#e9e9f4;--color-surface-inset:#f5f6fb;--color-control:#fff;--color-text:#26263a;--color-text-strong:#202034;--color-text-secondary:#45485e;--color-text-muted:#5d6278;--color-text-subtle:#666b80;--color-border:#d9dce8;--color-border-subtle:#e6e8f0;--color-border-strong:#c7cbd9;--color-primary:#5146b5;--color-primary-hover:#41379d;--color-primary-strong:#6253c4;--color-on-primary:#fff;--color-on-accent:#fff;--color-primary-soft:#eeecff;--color-primary-border:#5146b54d;--color-primary-tint:#f0effa;--color-success:#176b4a;--color-success-strong:#267b5c;--color-success-soft:#e5f5ed;--color-on-success:#10251d;--color-warning:#825000;--color-warning-strong:#946000;--color-warning-soft:#fff3d8;--color-warning-border:#8250003d;--color-danger:#a83246;--color-danger-strong:#a34f70;--color-danger-soft:#ffeaed;--color-on-danger:#fff;--color-info:#315b9b;--color-info-soft:#e8f0ff;--color-border-accent:#5146b538;--color-border-success:#176b4a38;--color-border-danger:#a832463d;--color-border-info:#315b9b38;--color-shadow-accent:#312d6629;--color-focus:#5146b5;--color-shadow:#1f244024;--color-shadow-soft:#1f24401a;--color-unread:#b42336;--led-core:#ef315b;--led-highlight:#fff0f5;--led-edge:#a7193b;--led-glow:#e0264e4d;--led-glow-soft:#e0264e1f;--color-page-glow-primary:#6d5bcd12;--color-page-glow-secondary:#3097770b;--gradient-card:linear-gradient(145deg, #fff, #f8f9fd);--gradient-student-card:linear-gradient(115deg, #fff, #f8f9fd);--gradient-student-highlight:radial-gradient(ellipse at 12% 0%, #6d5bcd14, transparent 55%), linear-gradient(110deg, #fff, #f7f7fc);--gradient-message-card:linear-gradient(145deg, #fff, #f8f9fd);--gradient-brand:linear-gradient(135deg, #5146b5, #41379d);--gradient-primary-action:linear-gradient(110deg, #5146b5, #41379d);--gradient-avatar:linear-gradient(145deg, #6253c4, #41379d);--gradient-accent-progress:linear-gradient(90deg, #6253c4, #5146b5);--gradient-success-progress:linear-gradient(90deg, #267b5c, #176b4a);--green:var(--color-success);--shadow:0 16px 44px var(--color-shadow)}html{min-width:320px;min-height:100%;font-family:var(--font-body);color:var(--color-text);background:var(--color-page);font-size:16px;line-height:1.5}body{min-width:320px;min-height:100vh;color:var(--color-text);background:var(--color-page);margin:0}button,input,select,textarea{font:inherit}button,select{cursor:pointer}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*{box-sizing:border-box}body{background:radial-gradient(ellipse at 12% 0%, var(--color-page-glow-primary), transparent 34%), radial-gradient(ellipse at 90% 20%, var(--color-page-glow-secondary), transparent 30%), var(--color-page)}.loading-screen,.login-screen{background:var(--color-page);place-items:center;min-height:100vh;display:grid}.loading-screen{color:var(--color-primary);letter-spacing:.08em;font-weight:700}.login-card{width:min(420px,100% - 36px);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:0 24px 64px var(--color-shadow);border-radius:22px;padding:42px}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.brand-logo{align-items:center;min-width:0;display:flex}.brand-logo-wordmark{flex:0 auto;width:220px;min-width:0;height:auto;display:block}.brand-logo-heading{justify-content:center;width:100%;margin:0 auto 20px}.brand-logo-heading .brand-logo-wordmark{width:min(300px,100vw - 100px)}.brand-logo-header{white-space:nowrap;flex:0 auto}.test-installation-label{letter-spacing:.04em;border:1px solid;border-radius:4px;padding:1px 4px;font-size:10px;font-weight:700}.eyebrow{color:var(--color-primary);letter-spacing:.16em;margin:0 0 9px;font-size:10px;font-weight:700}.login-card .eyebrow{margin-top:28px}.login-card h1,.welcome h1{font:800 30px var(--font-display);letter-spacing:-.04em;margin:0}.subtitle,.welcome p:not(.eyebrow){color:var(--muted)}.login-card form{gap:10px;margin-top:28px;display:grid}.login-card form label{color:var(--color-text-muted);margin-top:8px;font-size:13px}.login-card input{width:100%;color:var(--color-text);background:var(--color-control);border:1px solid var(--color-border);border-radius:9px;padding:13px 14px}.login-card input:focus-visible{border-color:var(--color-focus)}.login-card form button{min-height:44px;color:var(--color-on-accent);background:var(--gradient-primary-action);border:0;border-radius:9px;margin-top:12px;padding:14px;font-weight:700}.login-card form button:disabled{opacity:.6;cursor:wait}.passkey-login-button,.passkey-action{min-height:42px;color:var(--color-text-strong);background:var(--color-surface-raised);border:1px solid var(--border);border-radius:10px;padding:10px 14px;font:600 13px Manrope,sans-serif}.passkey-login-button{width:100%;margin-top:10px}.passkey-login-button:disabled,.passkey-action:disabled{opacity:.6;cursor:wait}.passkey-origin-note{text-align:center;overflow-wrap:anywhere;margin:16px 0 0;font-size:12px}.passkey-origin-note a,.passkey-origin-link{color:var(--color-focus)}.passkey-enrollment{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.passkey-enrollment>span{color:var(--color-text-muted);font-size:12px}.passkey-enrollment .passkey-error{color:var(--color-danger)}.passkey-origin-link{margin-bottom:12px;font-size:12px;display:inline-block}.security-note{color:var(--color-text-muted);text-align:center;margin:22px 0 0;font-size:11px}.login-screen{padding:24px 0;position:relative}.login-theme-control{position:absolute;top:18px;right:20px}.theme-control{flex:none;align-items:center;display:inline-flex}.theme-option{width:44px;min-height:44px;color:var(--color-text-secondary);background:var(--color-surface-raised);border:1px solid var(--color-border-subtle);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid}.theme-option svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:18px;height:18px}.theme-option:hover{color:var(--color-primary);background:var(--color-primary-soft)}.theme-option:focus-visible{z-index:1;outline-offset:1px}.dashboard{min-height:100vh}.topbar{border-bottom:1px solid var(--color-border);background:color-mix(in srgb, var(--color-surface) 90%, transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);align-items:center;gap:44px;height:68px;padding:0 max(28px,50vw - 720px);display:flex}.user-area .theme-control{flex:none}.main-nav{align-items:center;height:100%;display:flex}.nav-item{height:100%;color:var(--color-text-secondary);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 4px;font-size:13px}.nav-item.active{color:var(--color-text-strong);border-bottom-color:var(--purple)}.user-area{color:var(--color-text-secondary);align-items:center;gap:18px;margin-left:auto;font-size:12px;display:flex}.account-entry{text-overflow:ellipsis;white-space:nowrap;min-width:44px;min-height:44px;color:var(--color-text-strong);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:9px;padding:8px 10px;font:600 12px Manrope,sans-serif;overflow:hidden}.account-entry:hover,.account-entry:focus-visible{background:var(--color-surface-raised);border-color:var(--color-border)}.logout-button,.text-button{min-height:44px;color:var(--color-text-secondary);border:1px solid var(--border);background:0 0;border-radius:8px;padding:8px 12px;font-size:11px}.logout-button{justify-content:center;align-items:center;gap:6px;display:inline-flex}.logout-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:18px;height:18px;display:none}.logout-button:hover,.text-button:hover{color:var(--color-text-strong);border-color:var(--color-primary-border)}.icon-control{width:44px;min-width:44px;height:44px;color:var(--color-text-secondary);background:var(--color-surface-raised);border:1px solid var(--color-border);cursor:pointer;border-radius:10px;flex:0 0 44px;place-items:center;padding:0;transition:color .14s,background-color .14s,border-color .14s,opacity .14s;display:inline-grid}.icon-control svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:20px;height:20px}.icon-control:hover:not(:disabled){color:var(--color-primary);background:var(--color-surface-hover);border-color:var(--color-primary-border)}.icon-control:disabled{opacity:.55;cursor:not-allowed}.sync-refresh-button{color:var(--color-primary)}.sync-refresh-button[aria-busy=true]{color:var(--color-warning-strong)}.sync-status-bar{background:var(--color-surface-overlay);border:1px solid var(--border);border-radius:11px;justify-content:space-between;align-items:center;gap:14px;margin:0 0 24px;padding:11px 15px;display:flex}.sync-status-actions{justify-content:flex-end;align-items:center;gap:10px;min-width:0;display:flex}.sync-timestamps{flex-wrap:wrap;gap:8px 24px;display:flex}.sync-timestamps p{color:var(--color-text-muted);gap:3px;margin:0;font-size:10px;display:grid}.sync-timestamps strong{color:var(--color-text-secondary);font-size:11px;font-weight:600}.sync-feedback{color:var(--color-text-secondary);text-align:right;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;font-size:10px;display:flex}.sync-feedback [data-sync-state=success]{color:var(--color-success)}.sync-feedback [data-sync-state=partial],.sync-feedback [data-sync-state=unconfirmed],.sync-feedback [data-sync-state=refresh_failed]{color:var(--color-warning)}.sync-feedback [data-sync-state=failed],.sync-feedback .sync-error{color:var(--color-danger)}.sync-check-button{min-height:40px;color:var(--color-primary);border:1px solid var(--color-primary-border);font:inherit;background:0 0;border-radius:7px;padding:6px 9px}.sync-help-trigger{color:var(--color-primary)}.sync-help-trigger svg{width:19px;height:19px}.sync-help-backdrop{z-index:1000;background:color-mix(in srgb, var(--color-page) 76%, transparent);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sync-help-dialog{width:min(620px,100%);max-height:min(82dvh,760px);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);box-shadow:0 24px 70px var(--color-shadow);border-radius:16px;padding:22px;overflow:auto}.sync-help-heading{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;display:flex}.sync-help-heading h2{color:var(--color-text-strong);font:700 20px var(--font-display);margin:0}.sync-help-close{flex:0 0 44px}.sync-help-content{gap:14px;display:grid}.sync-help-content section{gap:5px;display:grid}.sync-help-content h3{color:var(--color-primary);margin:0;font-size:13px}.sync-help-content p{color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.6}.sync-help-content strong{color:var(--color-text-strong)}.dashboard-content{width:min(1440px,100%);margin:0 auto;padding:38px 30px 24px}.account-panel{gap:20px;display:grid}.account-panel-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.account-panel-heading h1{color:var(--color-text-strong);font:800 30px var(--font-display);margin:0}.account-panel-heading p:last-child{color:var(--color-text-secondary);margin:5px 0 0}.account-back{flex:none;min-width:76px}.account-tabs{border-bottom:1px solid var(--color-border);gap:8px;display:flex}.account-tabs button{min-height:46px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:8px 14px;font-weight:650}.account-tabs button.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.account-section-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.account-card,.account-admin-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;padding:20px}.account-card h2,.account-admin-section h2,.account-section-heading h2{color:var(--color-text-strong);margin:0 0 8px;font:700 18px Manrope,sans-serif}.account-card>p,.account-section-heading p,.account-admin-section>p{color:var(--color-text-secondary);font-size:12px;line-height:1.55}.account-password-form,.account-scheduler-form{gap:12px;margin-top:16px;display:grid}.account-password-form label,.account-scheduler-form label{color:var(--color-text-secondary);gap:6px;font-size:12px;display:grid}.account-password-form input,.account-scheduler-form input{width:100%;min-height:44px;color:var(--color-text);background:var(--color-control);border:1px solid var(--color-border);border-radius:8px;padding:9px 11px}.account-primary-button{min-height:44px;color:var(--color-on-accent);background:var(--gradient-primary-action);cursor:pointer;border:0;border-radius:8px;padding:10px 14px;font-weight:700}.account-primary-button:disabled{opacity:.6;cursor:wait}.account-success{color:var(--color-success);font-size:12px}.account-error{color:var(--color-danger);font-size:12px}.account-student-sync-list{gap:10px;margin:14px 0 22px;display:grid}.account-student-sync{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:15px}.account-student-sync h3{margin:0 0 10px;font:700 14px Manrope,sans-serif}.account-student-sync>p{color:var(--color-text-secondary);justify-content:space-between;gap:12px;margin:6px 0;font-size:11px;display:flex}.account-student-sync strong{color:var(--color-text-strong);text-align:right}.account-student-sync details{color:var(--color-text-secondary);margin-top:10px;font-size:11px}.account-student-sync summary{cursor:pointer;align-items:center;min-height:40px;display:flex}.account-student-sync ul,.account-history-card ul{color:var(--color-text-secondary);gap:5px;padding-left:20px;font-size:11px;display:grid}.account-sync-panel>.sync-status-bar{margin-bottom:12px}.account-section-heading{justify-content:space-between;align-items:center;gap:14px;display:flex}.account-family-heading{color:var(--color-text-strong);margin:16px 0 8px;font:700 14px Manrope,sans-serif}.account-admin-section{gap:12px;margin-top:24px;display:grid}.account-history-card{background:var(--color-surface-overlay);border:1px solid var(--color-border);border-radius:10px;padding:14px}.account-history-card header{color:var(--color-text-strong);justify-content:space-between;gap:12px;font-size:12px;display:flex}.account-history-card header span{color:var(--color-text-secondary);text-align:right;font-size:10px}.account-history-card p,.account-admin-guidance,.account-admin-note{color:var(--color-text-secondary);font-size:11px;line-height:1.5}.account-history-archive{min-width:0}.account-history-archive>summary{border:1px solid var(--color-border);cursor:pointer;border-radius:9px;min-height:44px;padding:12px;font-weight:700}.account-history-period{min-width:0;margin:8px 0 8px 14px}.account-history-period>button,.account-history-pages button{border:1px solid var(--color-border);background:var(--color-surface-overlay);min-height:44px;color:var(--color-text-strong);cursor:pointer;border-radius:8px;padding:8px 12px}.account-history-period>button[aria-expanded=true]{border-color:var(--color-primary)}.account-history-day{gap:10px;min-width:0;margin:8px 0;display:grid}.account-history-pages{flex-wrap:wrap;align-items:center;gap:10px;font-size:12px;display:flex}.account-history-pages button:disabled{opacity:.5;cursor:default}.account-admin-guidance{color:var(--color-warning);background:var(--color-surface-raised);border-radius:7px;padding:9px}.account-scheduler-toggle{min-height:44px;color:var(--color-text-strong);align-items:center;gap:9px;font-size:13px;display:flex}.account-scheduler-toggle input{width:20px;height:20px}.account-scheduler-form{grid-template-columns:repeat(2,minmax(0,1fr))}.account-scheduler-form button{grid-column:1/-1}.welcome{justify-content:space-between;align-items:flex-end;margin-bottom:34px;display:flex}.welcome h1{font-size:clamp(25px,3vw,34px)}.welcome p:not(.eyebrow){margin:9px 0 0;font-size:13px}.welcome-date{text-align:right;color:var(--muted);text-transform:capitalize;gap:5px;font-size:11px;display:grid}.welcome-date strong{color:var(--color-text-strong);font:600 14px Manrope,sans-serif}.student-strip{margin-bottom:22px}.student-strip-heading,.panel-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.student-strip-heading{margin-bottom:13px}.student-strip-heading h2,.panel-heading h2{letter-spacing:-.025em;margin:0;font:700 18px Manrope,sans-serif}.count{color:var(--color-text-secondary);background:var(--color-surface-raised);border-radius:20px;padding:5px 9px;font-size:10px}.student-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.student-card{text-align:left;min-width:0;color:inherit;background:var(--gradient-student-card);border:1px solid var(--border);border-radius:13px;align-items:center;gap:14px;padding:17px;transition:all .2s;display:flex}.student-card:hover,.student-card.selected{border-color:var(--color-primary-border);transform:translateY(-1px)}.student-avatar{width:43px;height:43px;color:var(--color-on-accent);border-radius:13px;flex:0 0 43px;place-items:center;font:700 14px Manrope,sans-serif;display:grid}.avatar-0{color:var(--color-primary);background:var(--color-primary-soft)}.avatar-1{color:var(--color-success);background:var(--color-success-soft)}.student-info{min-width:0}.student-info h3{margin:0 0 4px;font:700 14px Manrope,sans-serif}.student-info p{color:var(--color-text-secondary);margin:0 0 3px;font-size:11px}.student-info span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:10px;display:block;overflow:hidden}.student-card-meta{align-items:center;gap:10px;margin-left:auto;display:flex}.student-arrow{color:var(--color-text-secondary);font-size:17px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;margin:20px 0 24px;display:grid}.stat-card,.panel{background:var(--gradient-card);border:1px solid var(--border);border-radius:13px}.stat-card{min-width:0;padding:17px}.stat-card-top{color:var(--color-text-secondary);align-items:center;gap:8px;font-size:10px;display:flex}.mini-dot,.legend-dot{border-radius:50%;width:7px;height:7px;display:inline-block}.dot-0{background:var(--purple)}.dot-1{background:var(--green)}.dot-neutral{background:var(--color-warning-strong)}.stat-value{letter-spacing:-.04em;margin:13px 0 4px;font:800 27px Manrope,sans-serif}.stat-foot{min-height:27px;color:var(--muted);font-size:10px;line-height:1.5}.stat-progress{background:var(--color-border-strong);border-radius:5px;height:4px;margin-top:12px;overflow:hidden}.progress-fill{border-radius:5px;height:100%;display:block}.fill-0{background:var(--gradient-accent-progress)}.fill-1{background:var(--gradient-success-progress)}.content-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start;gap:16px;display:grid}.panel{min-width:0;padding:20px}.panel-heading{margin-bottom:18px}.month-controls{color:var(--color-text-secondary);text-transform:capitalize;align-items:center;gap:11px;font-size:11px;display:flex}.month-controls button{width:44px;min-height:44px;color:var(--color-primary);background:var(--color-surface-raised);border:1px solid var(--border);border-radius:7px;font-size:17px;line-height:1}.month-controls button:hover{background:var(--color-surface-hover)}.calendar-actions{flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 15px;display:flex}.calendar-refresh-button{color:var(--color-primary)}.calendar-refresh-button[aria-busy=true]{color:var(--color-warning-strong)}.calendar-legend{color:var(--muted);gap:16px;margin:-3px 0 15px;font-size:10px;display:flex}.calendar-legend span{align-items:center;gap:6px;display:flex}.agenda-list,.activity-list{display:grid}.agenda-item{border-top:1px solid var(--border);gap:12px;padding:12px 0;display:flex}.agenda-marker{border-radius:5px;flex:0 0 3px}.marker-purple{background:var(--purple)}.marker-green{background:var(--green)}.agenda-date{flex:0 0 66px;align-content:center;gap:4px;display:grid}.agenda-date strong{color:var(--color-text-strong);font-size:11px}.agenda-date span{color:var(--muted);font-size:10px}.agenda-details{gap:4px;min-width:0;display:grid}.agenda-details strong{color:var(--color-text-strong);font-size:12px}.agenda-details span{color:var(--color-text-muted);font-size:10px}.agenda-details p{color:var(--muted);margin:2px 0 0;font-size:10px;line-height:1.5}.activity-item{border-top:1px solid var(--border);min-width:0;padding:13px 0;display:block}.activity-content{min-width:0}.activity-title-row{align-items:flex-start;gap:8px;min-width:0;display:flex}.activity-title-row strong{min-width:0;color:var(--color-text-strong);overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;flex:auto;font-size:11px;line-height:1.45;display:-webkit-box;overflow:hidden}.activity-content p{max-width:100%;color:var(--muted);overflow-wrap:anywhere;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:5px 0;font-size:10px;line-height:1.45;display:-webkit-box;overflow:hidden}.activity-meta{min-width:0;color:var(--color-text-secondary);flex-wrap:wrap;justify-content:space-between;gap:2px 10px;font-size:9px;display:flex}.activity-meta span{overflow-wrap:anywhere;min-width:0}.activity-student-names{flex-wrap:wrap;column-gap:4px;display:inline-flex}.student-name{font-weight:600}.agenda-details .student-name-purple,.activity-meta .student-name-purple{color:var(--purple)}.agenda-details .student-name-green,.activity-meta .student-name-green{color:var(--green)}.student-name-purple{text-shadow:0 0 .45em color-mix(in srgb, var(--purple) 24%, transparent)}.student-name-green{text-shadow:0 0 .45em color-mix(in srgb, var(--green) 24%, transparent)}.announcement-list-more{min-height:44px;color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;margin-top:12px;padding:6px 9px;font-size:10px}.empty-state{color:var(--muted);background:var(--color-surface-overlay);border:1px dashed var(--border);text-align:center;border-radius:9px;padding:24px 12px;font-size:11px;line-height:1.6}.student-detail-panel{margin-top:18px}.detail-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.detail-grid>div{background:var(--color-surface-overlay);border-radius:9px;gap:7px;padding:14px;display:grid}.detail-grid span{color:var(--muted);font-size:10px}.detail-grid strong{font:700 20px Manrope,sans-serif}.error-message{color:var(--color-danger);background:var(--color-danger-soft);border:1px solid var(--color-border-danger);border-radius:8px;margin:14px 0;padding:11px 13px;font-size:12px}.footer{color:var(--color-text-secondary);text-align:center;letter-spacing:.13em;padding:30px 0 8px;font-size:9px}.footer span{color:var(--color-primary);padding:0 6px}@media (width<=1000px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.content-grid{grid-template-columns:1fr}}@media (width<=760px){.student-dashboard{grid-template-columns:minmax(0,1fr)}.student-dashboard>.student-messages-panel,.student-dashboard>.coming-section{grid-column:auto}}.message-folder-switch{background:var(--color-surface-overlay);border:1px solid var(--color-border-subtle);border-radius:9px;gap:6px;margin:0 0 12px;padding:4px;display:flex}.message-folder-switch button{min-width:0;min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:1 1 0;justify-content:center;align-items:center;gap:7px;padding:8px 10px;font:600 11px Manrope,sans-serif;display:flex}.message-folder-switch button.active{color:var(--color-primary);background:var(--color-primary-soft)}.message-folder-switch button span{color:var(--color-primary);font-size:10px}.student-message.sent-message .message-status{visibility:hidden}@media (width<=640px){.topbar{gap:8px;height:auto;min-height:60px;padding:8px 12px}.main-nav{display:none}.brand-logo-header .brand-logo-wordmark{width:clamp(104px,100vw - 220px,170px)}.user-area{gap:4px}.account-entry{max-width:64px;padding-inline:5px;font-size:10px}.logout-button{flex-basis:44px;width:44px;min-width:44px;min-height:44px;padding:0}.logout-button svg{display:block}.logout-label{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sync-refresh-button,.user-area .theme-option{flex-basis:44px;width:44px;min-width:44px;height:44px}.sync-status-bar{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:20px}.sync-status-actions{justify-content:space-between}.sync-timestamps{justify-content:space-between;gap:10px}.sync-timestamps p{min-width:0}.sync-timestamps strong{overflow-wrap:anywhere}.sync-feedback{text-align:left;justify-content:flex-start}.sync-help-backdrop{padding:10px}.sync-help-dialog{border-radius:13px;max-height:calc(100dvh - 20px);padding:17px}.sync-help-heading h2{font-size:18px}.dashboard-content{padding:27px 15px 18px}.account-section-grid{grid-template-columns:1fr}.account-card,.account-admin-section{padding:15px}.account-history-card header{flex-direction:column}.account-history-card header span{text-align:left}.account-scheduler-form{grid-template-columns:1fr}.welcome{align-items:flex-start;gap:12px}.welcome h1{font-size:24px}.welcome-date{padding-top:8px}.student-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr;gap:9px}.stat-card{padding:13px}.stat-value{font-size:23px}.panel{padding:15px}.panel-heading{align-items:flex-start}.month-controls{gap:6px}.month-controls strong{text-align:center;max-width:100px}.detail-grid{grid-template-columns:repeat(2,1fr)}.login-card{padding:30px 24px}}@media (width<=380px){.topbar{gap:4px;padding-inline:8px}.user-area{gap:3px}.account-entry{min-width:44px;max-width:52px;padding-inline:4px;font-size:9px}}.announcements-panel{margin-bottom:16px}.announcement-list{display:grid}.announcement-item{border-top:1px solid var(--border)}.announcement-trigger{width:100%;color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:13px;padding:14px 2px;display:flex}.announcement-trigger:hover .announcement-main strong{color:var(--color-primary)}.announcement-symbol{width:34px;height:34px;color:var(--color-success);background:var(--color-success-soft);border-radius:10px;flex:0 0 34px;place-items:center;font-size:15px;display:grid}.announcement-main{flex:1;gap:5px;min-width:0;display:grid}.announcement-main strong{color:var(--color-text-strong);font-size:12px;transition:color .15s}.announcement-meta{color:var(--muted);font-size:10px;line-height:1.5}.announcement-chevron{color:var(--color-primary);font-size:20px}.announcement-body{background:var(--color-surface-overlay);border-left:2px solid var(--color-border-subtle);border-radius:0 8px 8px 0;margin:0 0 14px 47px;padding:14px 16px}.announcement-body p{color:var(--color-text-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:11px;line-height:1.75}.announcement-body .announcement-error{color:var(--color-danger)}.eyebrow{letter-spacing:1.5px;font-size:11px}.panel-heading h2,.student-strip-heading h2{font-size:19px}.announcement-main strong,.activity-content strong,.agenda-details strong{font-size:14px;line-height:1.45}.announcement-meta,.activity-meta,.agenda-details span,.agenda-date span{font-size:12px;line-height:1.55}.announcement-trigger{padding:17px 3px}.announcement-body{padding:17px 18px}.agenda-item,.activity-item{padding-top:14px;padding-bottom:14px}.empty-state{font-size:13px;line-height:1.65}.stat-card-top,.stat-foot,.student-info p,.student-info span{font-size:12px}.marker-shared{background:var(--color-warning-strong)}.eyebrow{font-size:12px}.announcement-meta,.activity-meta,.agenda-details span,.agenda-date span{font-size:13px}.agenda-date strong{font-size:12px}.announcement-body p,.agenda-details p,.activity-content p{font-size:14px;line-height:1.75}.stat-card-top,.stat-foot,.student-info p,.student-info span{font-size:13px}.calendar-legend{font-size:12px}.student-records-panel{gap:16px;margin-top:18px;display:grid}.student-records-panel .student-detail-panel{margin-top:0}.record-section{min-width:0}.section-count{min-width:30px;height:30px;color:var(--color-primary);background:var(--color-primary-soft);border-radius:8px;justify-content:center;align-items:center;padding:0 9px;font-size:12px;font-weight:700;display:inline-flex}.subject-grade-list,.average-list,.attendance-list{display:grid}.subject-grade-group{border-top:1px solid var(--color-border-subtle);padding:14px 0}.subject-grade-group h3{color:var(--color-text-strong);margin:0 0 10px;font-size:14px;font-weight:700}.grade-list{gap:7px;display:grid}.grade-row,.average-row,.attendance-row{border-top:1px solid var(--color-border-subtle);align-items:center;gap:13px;padding:11px 0;display:flex}.grade-value{background:var(--color-primary-soft);min-height:38px;color:var(--color-primary);border-radius:8px;flex:0 0 42px;justify-content:center;align-items:center;font-size:17px;font-weight:800;display:flex}.grade-description,.average-row>div,.attendance-description{gap:4px;min-width:0;display:grid}.grade-description strong,.average-row>div strong,.attendance-description strong{color:var(--color-text-strong);overflow-wrap:anywhere;font-size:12px}.grade-description span,.average-row>div span,.attendance-description span{color:var(--muted);overflow-wrap:anywhere;font-size:11px;line-height:1.5}.average-row{justify-content:space-between}.average-row>div{flex:1}.average-value{color:var(--color-primary);flex:none;font-size:17px;font-weight:800}.section-note{color:var(--muted);margin:12px 0 0;font-size:10px;line-height:1.5}.attendance-date{color:var(--color-text-secondary);flex:0 0 76px;font-size:11px;font-weight:700}.attendance-description{flex:1}.attendance-symbol{background:var(--color-surface-overlay);min-width:25px;color:var(--color-text-secondary);text-align:center;border-radius:6px;flex:none;padding:5px 7px;font-size:11px;font-weight:700}@media (width<=640px){.grade-row,.average-row,.attendance-row{gap:9px}.attendance-date{flex-basis:66px;font-size:10px}.grade-description span,.average-row>div span,.attendance-description span{font-size:10px}}.student-dashboard{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:0;display:grid}.welcome-student{border:1px solid var(--color-border-subtle);background:var(--gradient-student-highlight);box-shadow:inset 0 1px 0 var(--color-shadow-soft);border-radius:15px;grid-template-columns:minmax(250px,.95fr) minmax(390px,1.5fr) auto;align-items:center;gap:20px;margin-bottom:22px;padding:18px 20px;display:grid}.welcome-student .welcome-copy{text-align:left;grid-area:1/1;align-items:center;gap:13px;min-width:0;display:flex}.student-avatar{border:1px solid var(--color-border-subtle);width:46px;height:46px;color:var(--color-on-accent);background:var(--gradient-avatar);box-shadow:0 5px 18px var(--color-shadow-accent);letter-spacing:.03em;border-radius:14px;flex:0 0 46px;place-items:center;font:800 15px Manrope,sans-serif;display:grid}.welcome-copy-text{min-width:0}.welcome-student .welcome-copy .eyebrow{margin-bottom:5px}.welcome-student .welcome-copy h1{margin:0;font-size:clamp(21px,2vw,27px)}.welcome-student .welcome-copy p:not(.eyebrow){margin-top:5px;font-size:11px}.welcome-student .student-quick-stats{border:1px solid var(--color-border-subtle);background:var(--color-surface-overlay);border-radius:12px;grid-area:1/2;width:100%;margin-top:0;padding:9px 5px}.welcome-student .student-quick-stats>div{background:0 0;border:0;border-radius:0;padding:4px 8px}.welcome-student .student-quick-stats>div+div{border-left:1px solid var(--color-border-subtle)}.welcome-student .student-return-button{white-space:nowrap;grid-area:1/3;align-self:center;padding:9px 12px;font-size:11px}.welcome-student .student-quick-stats>div{text-align:center;padding:11px 10px}.student-dashboard-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.student-dashboard-heading h2{margin:3px 0 0;font-size:21px}.student-quick-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.student-quick-stats>div{border:1px solid var(--color-border-subtle);background:var(--color-surface-overlay);border-radius:10px;gap:5px;padding:13px 15px;display:grid}.student-quick-stats span{color:var(--muted);font-size:11px}.student-quick-stats strong{font-size:20px}.compact-section{min-width:0}.semester-filter{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 12px;display:flex}.semester-filter>span{color:var(--muted);font-size:11px}.semester-segmented{flex-wrap:wrap;gap:8px;max-width:100%;display:flex}.semester-segmented button{max-width:100%;min-height:32px;font:inherit;color:var(--color-text-muted);cursor:pointer;background:0 0;border:0;padding:5px 3px;font-size:11px;font-weight:400;text-decoration:none}.semester-segmented button.active{color:var(--color-text-strong);background:0 0;font-weight:600}.semester-segmented button:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.compact-subject-list{display:grid}.compact-subject{border-top:1px solid var(--color-border-subtle)}.compact-subject summary,.attendance-history summary{min-height:44px;color:var(--color-primary);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:12px 2px;font-size:12px;font-weight:650;list-style:none;display:flex}.compact-subject summary::-webkit-details-marker{display:none}.attendance-history summary::-webkit-details-marker{display:none}.compact-subject summary:after,.attendance-history summary:after{content:"+";color:var(--color-primary);font-size:16px;font-weight:400}.compact-subject[open] summary:after,.attendance-history[open] summary:after{content:"−"}.subject-grade-count{color:var(--muted);margin-left:auto;font-size:10px;font-weight:500}.compact-grade-list{gap:6px;padding:0 0 10px 8px;display:grid}.compact-grade{align-items:flex-start;gap:10px;padding:7px 0;display:flex}.compact-grade-value{background:var(--color-primary-soft);min-height:32px;color:var(--color-primary);border-radius:7px;flex:0 0 34px;justify-content:center;align-items:center;font-size:14px;font-weight:800;display:flex}.compact-grade>div{gap:4px;min-width:0;display:grid}.compact-grade>div>strong{color:var(--color-text-strong);font-size:11px}.compact-grade-meta{color:var(--muted);font-size:10px;line-height:1.4}.attendance-percentage{color:var(--color-success);font-size:18px}.attendance-history{border-top:1px solid var(--color-border-subtle)}.compact-attendance-list{display:grid}.compact-attendance{border-top:1px solid var(--color-border-subtle);grid-template-columns:76px minmax(0,1fr);gap:12px;padding:9px 2px;display:grid}.compact-attendance>strong{color:var(--color-text-secondary);font-size:10px}.compact-attendance>div{gap:3px;display:grid}.compact-attendance span{color:var(--color-text-strong);font-size:11px}.compact-attendance small{color:var(--muted);font-size:10px}.coming-section{justify-content:space-between;align-items:center;gap:14px;display:flex}.coming-section h2{margin:3px 0 0;font-size:15px}.coming-section>p{color:var(--muted);text-align:right;margin:0;font-size:10px}@media (width<=1000px){.welcome-student{grid-template-columns:minmax(0,1fr) auto;align-items:center}.welcome-student .student-quick-stats{grid-area:2/1/auto/-1}.welcome-student .student-return-button{grid-area:1/2}}@media (width<=640px){.welcome-student{grid-template-columns:minmax(0,1fr) auto;gap:12px 10px;padding:14px}.welcome-student .student-avatar{border-radius:11px;flex-basis:38px;width:38px;height:38px;font-size:13px}.welcome-student .welcome-copy{gap:9px}.welcome-student .welcome-copy p:not(.eyebrow){display:none}.welcome-student .student-return-button{padding:8px}.welcome-student .welcome-copy h1{font-size:24px}.welcome-student .student-quick-stats{grid-column:1/-1}.welcome-student .student-quick-stats>div{padding:10px 6px}.welcome-student .student-quick-stats span{font-size:10px}.welcome-student .student-quick-stats strong{font-size:17px}.student-dashboard-heading{align-items:flex-start}.student-dashboard-heading h2{font-size:18px}.student-quick-stats{gap:7px}.student-quick-stats>div{padding:10px}.student-quick-stats strong{font-size:17px}.coming-section{flex-direction:column;align-items:flex-start}.coming-section>p{text-align:left}}.student-dashboard{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);align-items:start;gap:16px}.student-dashboard>.student-messages-panel,.student-dashboard>.coming-section{grid-column:1/-1}@media (width<=760px){.student-dashboard{grid-template-columns:minmax(0,1fr)}.student-dashboard>.student-messages-panel,.student-dashboard>.coming-section{grid-column:auto}}.student-messages-panel{border-color:var(--color-border-accent);background:var(--gradient-message-card);order:-1;padding:19px 22px}.student-dashboard>.timetable-panel{order:-2;grid-column:1/-1;min-width:0}.timetable-panel-heading{align-items:flex-start}.timetable-panel-heading h2{align-items:center;gap:8px;display:flex}.timetable-mark-all-seen{border:1px solid var(--color-border-subtle);min-height:44px;color:var(--color-text-secondary);background:var(--color-surface-overlay);font:inherit;cursor:pointer;border-radius:9px;padding:6px 10px;font-size:12px}.timetable-mark-all-seen:hover:not(:disabled){color:var(--color-text-strong);background:var(--color-surface-raised)}.timetable-mark-all-seen:focus-visible,.timetable-detected-change summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.timetable-mark-all-seen:disabled{opacity:.6;cursor:wait}.timetable-detected-changes{gap:8px;margin:0 0 16px;display:grid}.timetable-detected-changes h3{color:var(--color-text-secondary);margin:0;font-size:13px}.timetable-detected-change-list{gap:6px;display:grid}.timetable-detected-change{border:1px solid var(--color-border-subtle);background:var(--color-surface-overlay);min-width:0;color:var(--color-text);border-radius:9px}.timetable-detected-change summary{min-height:44px;color:var(--color-text-strong);cursor:pointer;overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;display:flex}.timetable-event-unseen-label{color:var(--color-unread);font-size:11px;font-weight:600}.timetable-detected-change-content{color:var(--color-text-secondary);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0 10px 10px;font-size:12px;display:grid}.timetable-event-snapshot{align-content:start;gap:4px;min-width:0;display:grid}.timetable-event-snapshot>strong{color:var(--color-text-strong)}.timetable-event-snapshot p{overflow-wrap:anywhere;grid-template-columns:minmax(70px,auto) minmax(0,1fr);gap:6px;margin:0;display:grid}.timetable-event-snapshot p span{color:var(--color-text-muted)}.timetable-detected-change-content>small,.timetable-detected-change-content>[role=alert]{grid-column:1/-1}.timetable-week-range{color:var(--muted);text-align:right;font-size:12px;line-height:1.5}.timetable-week-navigation{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;margin:-5px 0 16px;display:flex}.timetable-week-navigation .timetable-week-range{text-align:center;min-width:190px}.timetable-week-nav-button,.timetable-current-week-button,.timetable-sync-week-button{border:1px solid var(--color-border-subtle);min-height:44px;color:var(--color-text);background:var(--color-surface-overlay);font:inherit;cursor:pointer;border-radius:10px}.timetable-week-nav-button{width:44px;color:var(--color-primary);padding:0;font-size:24px;line-height:1}.timetable-current-week-button,.timetable-sync-week-button{padding:0 12px;font-size:12px}.timetable-sync-week-button{border-color:var(--color-primary-border);color:var(--color-primary)}.timetable-week-navigation button:hover:not(:disabled){background:var(--color-surface-raised)}.timetable-week-navigation button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.timetable-week-navigation button:disabled{opacity:.48;cursor:not-allowed}.timetable-message{color:var(--color-text);background:var(--color-surface-overlay);border:1px solid var(--color-border-subtle);overflow-wrap:anywhere;border-radius:10px;gap:5px;padding:14px 16px;font-size:13px;line-height:1.6;display:grid}.timetable-message.info{color:var(--color-info);background:var(--color-info-soft);border-color:var(--color-border-info)}.timetable-message.error{color:var(--color-danger);background:var(--color-danger-soft);border-color:var(--color-border-danger)}.timetable-message small{color:var(--muted);font-size:11px}.timetable-week{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:12px;display:grid}.timetable-day{background:var(--color-surface-overlay);border:1px solid var(--color-border-subtle);border-radius:10px;min-width:0;padding:13px}.timetable-day.is-day-off{border-color:var(--color-warning-border)}.timetable-day-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:7px;min-width:0;margin-bottom:10px;display:flex}.timetable-day-heading h3{min-width:0;color:var(--color-text-strong);text-transform:capitalize;overflow-wrap:anywhere;margin:0;font:700 14px/1.4 Manrope,sans-serif}.timetable-day-off-label{color:var(--color-warning);background:var(--color-warning-soft);white-space:nowrap;border-radius:20px;padding:3px 7px;font-size:10px}.timetable-day-empty,.timetable-no-lesson{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5}.timetable-period-list{gap:8px;display:grid}.timetable-period{border-top:1px solid var(--color-border-subtle);grid-template-columns:minmax(80px,auto) minmax(0,1fr);gap:8px 10px;min-width:0;padding-top:9px;display:grid}.timetable-period-time{align-content:start;gap:3px;min-width:0;display:grid}.timetable-period-time span{color:var(--muted);font-size:10px}.timetable-period-time strong{color:var(--color-text-secondary);white-space:nowrap;font-size:11px}.timetable-period-content{min-width:0}.timetable-lessons{gap:7px;min-width:0;display:grid}.timetable-lesson{gap:2px;min-width:0;display:grid}.timetable-lesson strong,.timetable-changes strong{color:var(--color-text-strong);overflow-wrap:anywhere;font-size:12px;line-height:1.45}.timetable-lesson span,.timetable-changes li{min-width:0;color:var(--muted);overflow-wrap:anywhere;font-size:11px;line-height:1.5}.timetable-changes,.timetable-changes ul{gap:3px;margin:7px 0 0;padding-left:15px;display:grid}.timetable-changes>li::marker{color:var(--purple)}.timetable-recess{color:var(--color-text-muted);overflow-wrap:anywhere;grid-column:1/-1;font-size:10px;line-height:1.5}@media (width<=760px){.timetable-week{grid-template-columns:minmax(0,1fr)}.timetable-panel-heading{flex-wrap:wrap}.timetable-mark-all-seen{text-align:left;flex:100%}.timetable-detected-change-content{grid-template-columns:minmax(0,1fr)}.timetable-week-range{text-align:left}.timetable-week-navigation{justify-content:flex-start;gap:6px}.timetable-week-navigation .timetable-week-range{text-align:center;flex:150px;min-width:0}.timetable-sync-week-button{flex:auto}}@media (width<=380px){.timetable-period{grid-template-columns:minmax(72px,auto) minmax(0,1fr);gap:8px}.timetable-day{padding:11px}}.student-messages-panel .panel-heading{margin-bottom:12px}.student-messages-panel .panel-heading h2{font-size:22px}.student-message-list{display:grid}.student-message{border-top:1px solid var(--color-border-subtle)}.student-message-trigger{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:10px minmax(0,1fr) auto auto 18px;align-items:center;gap:12px;padding:12px 4px;display:grid}.student-message-trigger:hover{background:var(--color-surface-overlay)}.message-status{background:var(--color-text-subtle);border-radius:50%;width:8px;height:8px}.student-message .message-status.locally-unread{background:var(--color-unread);box-shadow:0 0 0 4px var(--color-danger-soft)}.student-message .message-status.locally-read{background:var(--color-text-subtle);box-shadow:none}.student-message-main{gap:5px;min-width:0;display:grid}.student-message-main strong{color:var(--color-text-strong);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:650;overflow:hidden}.student-message.unread .student-message-main strong{color:var(--color-text-strong)}.student-message-main>span,.student-message-date,.message-attachment{color:var(--muted);font-size:12px}.student-message-date{white-space:nowrap}.message-attachment{color:var(--color-primary)}.message-chevron{color:var(--color-primary);text-align:center;font-size:19px}.message-filter-row{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 6px;display:flex}.message-filter-label{color:var(--color-text-muted);font-size:10px}.message-filter-segmented{align-items:center;gap:8px;display:inline-flex}.message-filter-segmented button{min-height:28px;color:var(--color-text-muted);font:inherit;cursor:pointer;background:0 0;border:0;padding:3px 2px;font-size:11px;font-weight:400;text-decoration:none}.message-filter-segmented button:hover{color:var(--color-text-strong)}.message-filter-segmented button.active{color:var(--color-text-strong);background:0 0;font-weight:600}.message-filter-segmented button:focus-visible,.message-more-control:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.messages-pagination{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.messages-more-note{min-width:0;color:var(--color-text-muted);margin:0;font-size:11px}.message-more-control{min-height:40px;color:var(--color-primary);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;gap:5px;padding:6px 2px 6px 10px;font-size:12px;font-weight:600;display:inline-flex}.message-more-control:hover:not(:disabled){color:var(--color-primary-hover)}.message-more-control:disabled{opacity:.65;cursor:wait}.message-more-control svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:14px;height:14px}.message-history-actions{flex:none;justify-content:flex-end;align-items:center;gap:10px;display:inline-flex}.announcement-body a,.student-message-content a.content-link{color:var(--color-primary);text-underline-offset:2px;overflow-wrap:anywhere;text-decoration:underline}.announcement-body a:focus-visible,.student-message-content a.content-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px}.student-message-content{color:var(--color-text-secondary);background:var(--color-surface-overlay);border:1px solid var(--color-border-subtle);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px;margin:0 0 14px 24px;padding:16px 18px;font-size:13px;line-height:1.75}.compose-entry{color:var(--color-primary);margin-left:auto;font-size:23px}.reply-button{min-height:32px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;margin-top:10px;padding:3px 7px;font-size:12px;font-weight:500;display:inline-flex}.reply-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:15px;height:15px}.reply-button:hover{color:var(--color-primary);background:var(--color-surface-hover)}.compose-backdrop{z-index:1200;background:color-mix(in srgb, var(--color-page) 72%, transparent);place-items:center;padding:20px;display:grid;position:fixed;inset:0}.compose-dialog{width:min(700px,100%);max-height:88dvh;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);box-shadow:0 28px 80px var(--color-shadow);border-radius:18px;flex-direction:column;display:flex;overflow:hidden}.compose-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;display:flex}.compose-header .eyebrow{margin-bottom:5px}.compose-header h2{color:var(--color-text-strong);font:700 21px var(--font-display);margin:0}.compose-content{gap:16px;min-height:0;padding:20px 24px;display:grid;overflow-y:auto}.compose-context,.compose-muted{color:var(--color-text-secondary);margin:0;font-size:13px}.compose-field{gap:6px;display:grid}.compose-field>label,.compose-preview-block>strong,.compose-preview-recipients>strong{color:var(--color-text-strong);font-size:13px;font-weight:650}.compose-field input,.compose-field textarea,.recipient-search{width:100%;min-height:44px;color:var(--color-text);background:var(--color-control);border:1px solid var(--color-border);font:inherit;border-radius:8px;padding:10px 12px}.compose-field input:focus-visible,.compose-field textarea:focus-visible,.recipient-search:focus-visible{border-color:var(--color-focus);outline:2px solid color-mix(in srgb, var(--color-focus) 28%, transparent);outline-offset:1px}.compose-field textarea{resize:vertical;min-height:190px;line-height:1.55}.compose-field small{color:var(--color-text-muted);justify-self:end;font-size:11px}.recipient-chips{border:1px solid var(--color-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:7px;min-height:44px;padding:6px;display:flex}.recipient-chip{color:var(--color-text);background:var(--color-surface-raised);border-radius:7px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;display:inline-flex}.recipient-chip button{width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:6px;font-size:18px}.recipient-options{border:1px solid var(--color-border);border-radius:9px;max-height:180px;display:grid;overflow-y:auto}.recipient-options button{min-height:44px;color:var(--color-text);text-align:left;border:0;border-bottom:1px solid var(--color-border);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;padding:8px 11px;display:flex}.recipient-options button:hover:not(:disabled){background:var(--color-surface-hover)}.recipient-options button:disabled{opacity:.55}.directory-retry{min-height:38px;color:var(--color-primary);background:var(--color-surface-raised);border:1px solid var(--color-primary-border);font:inherit;cursor:pointer;border-radius:8px;justify-self:start;padding:6px 10px}.recipient-picker{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:9px;gap:9px;padding:11px;display:grid}.recipient-picker-heading{color:var(--color-text-strong);justify-content:space-between;align-items:center;font-size:13px;display:flex}.picker-close{width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:7px;font-size:19px}.recipient-picker-trigger,.recipient-search{min-height:40px;color:var(--color-text-secondary);background:var(--color-control);border:1px solid var(--color-border);font:400 13px var(--font-body);text-align:left;border-radius:8px;padding:8px 10px}.recipient-picker-trigger{cursor:pointer}.recipient-picker-trigger:hover,.picker-back:hover,.picker-close:hover{color:var(--color-primary);background:var(--color-surface-hover)}.picker-back{min-height:34px;color:var(--color-text-secondary);font:500 12px var(--font-body);cursor:pointer;background:0 0;border:0;border-radius:7px;justify-self:start;padding:5px 8px}.directory-error{color:var(--color-danger);margin:0;font-size:12px;line-height:1.5}.inline-retry{color:var(--color-primary);font:600 12px var(--font-body);cursor:pointer;background:0 0;border:0;padding:1px 4px;text-decoration:underline}.compose-footer{background:var(--color-surface);border-top:1px solid var(--color-border);flex:none;justify-content:flex-end;gap:10px;padding:14px 24px;display:flex}.compose-footer button{min-height:44px}.compose-footer .primary-button{color:var(--color-on-accent);background:var(--gradient-primary-action);cursor:pointer;border:0;border-radius:8px;padding:8px 16px;font-weight:650}.compose-footer .primary-button:disabled{opacity:.55;cursor:wait}.compose-footer .preview-button{min-height:40px;color:var(--color-text-secondary);background:var(--color-surface-raised);border:1px solid var(--color-border);font:600 12px var(--font-body);cursor:pointer;border-radius:8px;padding:7px 13px}.compose-footer .preview-button:hover:not(:disabled){color:var(--color-primary);background:var(--color-surface-hover);border-color:var(--color-primary-border)}.compose-footer .preview-button:disabled{opacity:.55;cursor:wait}.compose-preview-recipients,.compose-preview-block{background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:9px;gap:7px;padding:12px;display:grid}.compose-preview-recipients span,.compose-preview-block p,.compose-preview-block pre{color:var(--color-text-secondary);margin:0;font-size:13px;line-height:1.55}.compose-preview-block pre{overflow-wrap:anywhere;white-space:pre-wrap;font:inherit}.compose-error{color:var(--color-danger);margin:0;font-size:13px}.compose-result{border:1px solid var(--color-border);border-radius:10px;padding:16px;line-height:1.6}.compose-result p{margin:0}.compose-result p+p{margin-top:10px}.compose-result.is-success{border-color:var(--color-success)}.compose-result.is-warning{border-color:var(--color-warning)}.compose-result.is-error{border-color:var(--color-danger)}.compose-refresh-warning{color:var(--color-warning)}@media (width<=600px){.compose-backdrop{padding:0;display:block}.compose-dialog{border:0;border-radius:0;width:100%;height:100dvh;max-height:none}.compose-header{padding:14px 16px}.compose-content{padding:16px}.compose-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.compose-footer>button{flex:1}}.student-message-content p{margin:0}.message-attachments{gap:5px;margin:12px 0 0;padding:0;list-style:none;display:grid}.message-attachment-row{border-top:1px solid var(--color-border-subtle);grid-template-columns:minmax(0,1fr) 40px;align-items:center;gap:7px 10px;min-width:0;padding:4px 0;display:grid}.message-attachment-filename{overflow-wrap:anywhere;min-width:0;color:var(--color-text-strong);font-size:12px}.message-attachment-download{border:1px solid var(--color-border-subtle);background:var(--color-surface);width:40px;height:40px;color:var(--color-primary);cursor:pointer;border-radius:9px;place-items:center;padding:8px;display:inline-grid}.message-attachment-download:hover:not(:disabled){background:var(--color-surface-overlay)}.message-attachment-download:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.message-attachment-download:disabled{opacity:.55;cursor:not-allowed}.message-attachment-download svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.message-attachment-status{color:var(--color-text-secondary);overflow-wrap:anywhere;grid-column:1/-1;font-size:11px}.message-error{color:var(--color-danger)}@media (width<=480px){.message-filter-row{gap:8px}.message-filter-label{font-size:10px}.message-filter-segmented button{min-height:32px;padding-inline:3px}.messages-pagination,.message-history-actions{gap:8px}.messages-more-note{font-size:10px}.message-more-control{min-height:44px}}.compact-grade{border-bottom:1px solid var(--color-border-subtle);grid-template-columns:48px minmax(0,1fr);align-items:start;gap:14px;padding:12px 4px;display:grid}.compact-grade>div{width:100%;min-width:0}.compact-grade-descriptive{min-width:0;display:block}.descriptive-grade-value{width:100%;min-width:0;max-width:none;color:var(--color-success);white-space:pre-wrap;word-break:normal;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.65}.descriptive-grade-note{color:var(--color-text-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;font-size:12px;line-height:1.5}.compact-grade-meta{margin-top:5px;font-size:11px;display:block}@media (width<=640px){.student-messages-panel{padding:16px}.student-message-trigger{grid-template-columns:8px minmax(0,1fr) auto 16px;gap:9px}.student-message-date{font-size:10px}.message-attachment{display:none}.student-message-content{margin-left:0}}.welcome-student .student-quick-stats>button{min-width:0;color:var(--text);cursor:pointer;text-align:center;font:inherit;background:0 0;border:0;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:8px 10px;transition:background .2s,transform .2s;display:flex}.welcome-student .student-quick-stats>button+button{border-left:1px solid var(--color-border-subtle)}.welcome-student .student-quick-stats>button:hover{background:var(--color-surface-overlay);transform:translateY(-2px)}.welcome-student .student-quick-stats>button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.welcome-student .quick-stat-attendance strong{color:var(--color-success)}.welcome-student .quick-stat-grades strong{color:var(--color-primary)}.welcome-student .quick-stat-absences strong{color:var(--color-warning)}.welcome-student .student-quick-stats button small{color:var(--muted);opacity:.75;font-size:9px}.welcome-student .student-quick-stats button:hover small{opacity:1}#student-grades,#student-attendance,#attendance-history{scroll-margin-top:24px}.compact-grade-value.absence{background:var(--color-warning-soft);color:var(--color-warning)}.compact-grade-formative{padding:10px 4px;display:block}.compact-grade-formative-content{gap:5px;display:grid}.formative-label{color:var(--color-primary);letter-spacing:.09em;font-size:9px;font-weight:700}.compact-grade-formative-content strong{color:var(--color-text-strong);overflow-wrap:anywhere;font-size:12px;line-height:1.5}.compact-grade-more{margin:3px 0 5px 48px}.compact-grade-more summary{width:fit-content;color:var(--color-primary);cursor:pointer;padding:7px 0;font-size:11px;list-style:none}.compact-grade-more summary::-webkit-details-marker{display:none}.compact-grade-more summary:before{content:"+";margin-right:7px;font-size:14px;display:inline-block}.compact-grade-more[open] summary:before{content:"−"}.compact-grade-more .compact-grade{border-top:1px solid var(--color-border-subtle)}.student-dashboard{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;width:100%;min-width:0}.student-main-row{grid-column:1/-1;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);align-items:start;gap:16px;min-width:0;display:grid}.student-main-row>*,.student-dashboard>*{min-width:0;max-width:100%}.student-messages-panel{order:initial}.student-dashboard>.timetable-panel{order:initial;grid-column:1/-1}.timetable-week{grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-flow:row;gap:9px}.timetable-day{padding:10px}.timetable-period{grid-template-columns:minmax(0,1fr);gap:5px}.timetable-period-time strong{white-space:normal}.timetable-lesson-details,.timetable-lesson-details summary,.timetable-lesson-expanded,.timetable-change-details,.timetable-change-details summary{overflow-wrap:anywhere;min-width:0}.timetable-lesson-details summary,.timetable-change-details summary{cursor:pointer}.timetable-lesson-details summary{min-height:44px;color:var(--color-text-strong);justify-content:space-between;align-items:flex-start;gap:6px;padding:7px 0;font-size:12px;line-height:1.45;display:flex}.timetable-lesson-details summary strong{overflow-wrap:anywhere;min-width:0}.timetable-lesson-expanded{color:var(--muted);gap:5px;padding:5px 0 8px;font-size:11px;line-height:1.45;display:grid}.timetable-lesson-expanded>p{gap:2px;margin:0;display:grid}.timetable-lesson-expanded>p strong{color:var(--color-text-strong);font-weight:600}.timetable-lesson-expanded .timetable-no-extra-details,.timetable-change-list p{color:var(--muted)}.timetable-change-badge{color:var(--color-warning);background:var(--color-warning-soft);border:1px solid var(--color-warning-border);border-radius:20px;flex:none;padding:2px 6px;font-size:9px;font-weight:700;display:inline-flex}.timetable-change-details{color:var(--color-text-secondary);margin-top:5px;font-size:10px;line-height:1.5}.timetable-change-details summary{color:var(--color-text-secondary);align-items:center;gap:6px;display:flex}.timetable-change-list{gap:7px;padding:7px 0 0 3px;display:grid}.timetable-change-list article>strong{color:var(--color-warning)}.timetable-change-list dl{gap:3px;margin:4px 0 0;display:grid}.timetable-change-list dl>div{flex-wrap:wrap;gap:4px;display:flex}.timetable-change-list dt,.timetable-change-list dd{margin:0}.timetable-change-list p{margin:3px 0 0}.timetable-period-card{border-top:1px solid var(--color-border-subtle);border-radius:6px;min-width:0;padding:7px 8px}.timetable-period-card.is-current{background:var(--color-success-soft);box-shadow:inset 2px 0 var(--color-success)}.timetable-period-card.is-next{background:var(--color-primary-soft);box-shadow:inset 2px 0 var(--color-primary)}.lesson-status{color:var(--color-success);text-transform:uppercase;margin:0 0 2px;font-size:9px;font-weight:700;display:inline-block}.lesson-status.next{color:var(--color-primary)}.today-timetable-panel{padding:17px}.today-timetable-panel .panel-heading{margin-bottom:12px}.today-timetable-panel .panel-heading h2{font-size:19px}.today-timetable-content>h3{color:var(--color-text-strong);text-transform:capitalize;margin:0 0 7px;font-size:13px}.today-state{color:var(--color-primary);margin:0 0 5px;font-size:11px}.timetable-day-off-note{color:var(--color-warning);font-size:11px}@media (width<=900px) and (width>=761px){.student-main-row{grid-template-columns:minmax(0,1fr) minmax(270px,.8fr)}}@media (width<=760px){.student-dashboard{grid-template-columns:minmax(0,1fr)}.student-main-row{grid-column:auto;grid-template-columns:minmax(0,1fr)}.student-dashboard>.timetable-panel{grid-column:auto}.timetable-week{grid-template-columns:minmax(0,1fr)}.timetable-day{padding:13px}.timetable-period{grid-template-columns:minmax(84px,auto) minmax(0,1fr)}.timetable-period-time strong{white-space:nowrap}}.agenda-event-open{text-align:left;cursor:pointer;color:inherit;font:inherit;background:0 0;border:0;min-height:44px;padding:0}.agenda-event-open:focus-visible{outline:2px solid var(--color-primary-border);outline-offset:2px}.calendar-event-dialog{border:1px solid var(--color-primary-border);background:var(--surface);max-width:min(90vw,560px);color:var(--color-text-strong);border-radius:12px;padding:24px}.calendar-event-dialog::backdrop{background:var(--color-shadow)}.calendar-event-dialog p{white-space:pre-wrap}.unseen-dot,.student-info .unseen-dot{background:var(--color-unread);background-image:radial-gradient(circle at 32% 24%, var(--led-highlight) 0 8%, transparent 28%), radial-gradient(circle at 42% 35%, var(--led-core), var(--color-unread) 72%, var(--led-edge));block-size:8px;inline-size:8px;min-inline-size:8px;box-shadow:inset 0 -1px 1px var(--led-edge), inset 0 0 1px var(--led-highlight), 0 0 0 1px color-mix(in srgb, var(--led-edge) 35%, transparent), 0 0 4px var(--led-glow), 0 0 8px var(--led-glow-soft);vertical-align:middle;border-radius:50%;flex:0 0 8px;margin-inline-start:7px;display:inline-block}.timetable-panel-heading .unseen-dot{margin-inline-start:0}.timetable-previous-lesson{color:var(--color-text-secondary);margin-top:6px;font-size:11px}.timetable-previous-lesson>summary{cursor:pointer;color:var(--color-text-muted);padding:5px 0}.timetable-previous-lesson>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.timetable-previous-lesson>div{border-inline-start:2px solid var(--color-border-strong);padding:6px 8px}.timetable-previous-lesson p{flex-wrap:wrap;gap:6px;margin:4px 0;display:flex}.grade-semester-note{color:var(--color-text-muted);margin:-4px 0 12px;font-size:11px;line-height:1.5}
