:root,:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--tt-bg:#141210;--tt-surface:#1d1b18;--tt-surface-raised:#24211d;--tt-surface-overlay:#2c2925;--tt-surface-muted:#1a1815;--tt-text:#f5f3ee;--tt-muted:#8e887d;--tt-muted-strong:#b9b1a5;--tt-line:#2c2925;--tt-line-strong:#f5f3ee29;--tt-cover-bg:#1f1c19;--tt-pad:#191714;--tt-accent:#e07a55;--tt-accent-strong:#f19a76;--tt-accent-dim:#e07a5524;--tt-logo-ink:#f0ece2;--tt-logo-tile:#15140f;--tt-success:#8faf7d;--tt-warning:#d9a441;--tt-error:#d86d66;--tt-info:#7ba6c7;--tt-gold:#d7a748;--font-body:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--tt-bg:#f7f6f3;--tt-surface:#fff;--tt-surface-raised:#f0eee8;--tt-surface-overlay:#e6e3dc;--tt-surface-muted:#efece5;--tt-text:#14110d;--tt-muted:#7c7770;--tt-muted-strong:#5c554d;--tt-line:#ebe8e1;--tt-line-strong:#14110d24;--tt-cover-bg:#efece5;--tt-pad:#e6e3dc;--tt-accent:#c75d3a;--tt-accent-strong:#a8472d;--tt-accent-dim:#c75d3a24;--tt-logo-ink:#1a1a18;--tt-logo-tile:#f0ece2;--tt-success:#4f7a41;--tt-warning:#8f6412;--tt-error:#b23b34;--tt-info:#3d6d90;--tt-gold:#8f6c12}:root{--surface-base:var(--tt-bg);--surface-card:var(--tt-surface);--surface-nav:var(--tt-surface-muted);--surface-raised:var(--tt-surface-raised);--surface-overlay:var(--tt-surface-overlay);--text-primary:var(--tt-text);--text-secondary:var(--tt-muted-strong);--text-tertiary:var(--tt-muted);--border-default:var(--tt-line);--border-strong:var(--tt-line-strong);--brand-primary:var(--tt-accent);--brand-accent:var(--tt-accent-strong);--brand-primary-dim:var(--tt-accent-dim);--button-on-accent:var(--tt-bg);--status-success:var(--tt-success);--status-warning:var(--tt-warning);--status-error:var(--tt-error);--status-info:var(--tt-info);--status-gold:var(--tt-gold);--font-size-2xs:11px;--font-size-xs:12px;--font-size-sm:13px;--font-size-md:14px;--font-size-lg:16px;--font-size-xl:19px;--font-size-2xl:22px;--font-size-3xl:28px;--font-size-display:30px;--line-height-tight:1.3;--line-height-normal:1.5;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:28px;--sidebar-width:232px;--sidebar-pad:20px 14px;--content-pad:28px;--content-pad-compact:18px;--bg-base:var(--surface-base);--bg-surface:var(--surface-card);--bg-elevated:var(--surface-raised);--bg-highlight:var(--surface-overlay);--accent:var(--brand-primary);--accent-dim:var(--brand-primary-dim);--text-muted:var(--text-tertiary);--border:var(--border-default);--success:var(--status-success);--warning:var(--status-warning);--error:var(--status-error);--danger:var(--status-error);--info:var(--status-info);--gold:var(--status-gold);--mint:var(--status-success);--color-mint:var(--status-success)}.app-shell,.shell{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);height:100svh;display:grid}.main{min-height:0;padding:var(--content-pad);overflow-y:auto}.sidebar{background:var(--surface-nav);border-right:1px solid var(--border-default);height:100%;min-height:0;padding:var(--sidebar-pad);flex-direction:column;display:flex;overflow:hidden}.brand{border-bottom:1px solid var(--border-default);align-items:center;gap:10px;padding:0 8px 18px;display:flex}.brand h1{color:var(--text-primary);font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:var(--weight-semibold);letter-spacing:-.01em;line-height:var(--line-height-tight);margin:0}.brand p{color:var(--text-tertiary);font-size:var(--font-size-xs);line-height:var(--line-height-normal);margin:3px 0 0}.nav,.side-nav{align-content:start;gap:var(--space-1);min-height:0;padding:var(--space-4) 0;flex:1;display:grid;overflow-y:auto}.nav-group{gap:var(--space-1);display:grid}.nav-group+.nav-group{margin-top:var(--space-3)}.nav-group-label{color:var(--brand-primary);font-family:var(--font-mono);font-size:var(--font-size-2xs);font-weight:var(--weight-semibold);letter-spacing:.09em;text-transform:uppercase;padding:10px 12px 4px}.nav button,.nav a,.side-nav button,.side-nav a{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-md);font-weight:var(--weight-regular);text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:10px;width:100%;padding:9px 12px;text-decoration:none;display:flex}.nav button:hover,.nav a:hover,.side-nav button:hover,.side-nav a:hover{background:var(--surface-raised);color:var(--text-primary)}.nav button.active,.nav a.active,.side-nav button.active,.side-nav a.active{background:var(--brand-primary-dim);border-color:var(--brand-primary);color:var(--brand-primary);font-weight:var(--weight-medium)}.nav-icon{color:inherit;font-family:var(--font-mono);font-size:var(--font-size-2xs);font-weight:var(--weight-semibold);letter-spacing:.05em;opacity:.85;flex-shrink:0;width:22px}.sidebar-footer{border-top:1px solid var(--border-default);padding-top:var(--space-3);margin-top:auto}.sidebar-signout{border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-md);font-weight:var(--weight-medium);text-align:left;background:0 0;align-items:center;gap:10px;width:100%;padding:9px 12px;display:flex}.sidebar-signout:hover{background:color-mix(in srgb, var(--status-error) 10%, transparent);border-color:var(--status-error);color:var(--status-error)}.powered-by{color:var(--text-tertiary);font-size:var(--font-size-2xs);letter-spacing:.05em;justify-content:center;align-items:center;gap:7px;margin:0;display:flex}.powered-by:before{background:var(--brand-primary);border-radius:var(--radius-pill);content:"";opacity:.75;flex-shrink:0;width:5px;height:5px}.powered-by strong{color:var(--text-secondary);font-weight:var(--weight-semibold)}.sidebar-footer .powered-by{margin-top:var(--space-3);justify-content:flex-start;padding-left:13px}.page-head{align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-5);justify-content:space-between;display:flex}.page-head h1,.page-head h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--font-size-3xl);font-weight:var(--weight-semibold);letter-spacing:-.01em;line-height:var(--line-height-tight);margin:0}.page-head p{color:var(--text-tertiary);font-size:var(--font-size-sm);line-height:var(--line-height-normal);margin:5px 0 0}.card,.panel{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4)}.card h3,.panel h3{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:var(--weight-semibold);margin:0 0 var(--space-2)}.primary-button,button.primary{background:var(--brand-primary);border:1px solid var(--brand-primary);border-radius:var(--radius-sm);color:var(--button-on-accent);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--weight-semibold);padding:9px 14px}.secondary-button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--weight-medium);background:0 0;padding:9px 14px}.ghost-button,button.ghost{border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--weight-medium);background:0 0;padding:8px 12px}.danger-button,button.danger{border:1px solid var(--status-error);border-radius:var(--radius-sm);color:var(--status-error);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--weight-medium);background:0 0;padding:8px 12px}.text-button{color:var(--brand-primary);cursor:pointer;font-family:var(--font-body);font-size:var(--font-size-sm);background:0 0;border:0;width:fit-content;padding:0}.primary-button:hover,button.primary:hover,.secondary-button:hover,.ghost-button:hover,button.ghost:hover{filter:brightness(1.08)}.primary-button:disabled,.secondary-button:disabled,.ghost-button:disabled,.danger-button:disabled,button:disabled{cursor:not-allowed;opacity:.5}.theme-choice,.theme-options button{background:var(--surface-base);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:var(--font-size-xs);font-weight:var(--weight-semibold);text-transform:capitalize;padding:8px 13px}.theme-choice[data-active=true],.theme-options button.active{background:var(--brand-primary-dim);border-color:var(--brand-primary);color:var(--brand-primary)}.muted{color:var(--text-tertiary)}.error{color:var(--status-error)}.notice{background:color-mix(in srgb, var(--brand-primary) 10%, transparent);border:1px solid color-mix(in srgb, var(--brand-primary) 30%, transparent);border-radius:var(--radius-md);line-height:var(--line-height-normal);margin:0;padding:11px 12px}.login-wrap,.login{align-items:center;gap:var(--space-4);min-height:100svh;padding:var(--space-5);flex-direction:column;justify-content:center;display:flex}.login-card{gap:var(--space-3);width:min(380px,100%);display:grid}.login-card h1,.login-card h2{color:var(--text-primary);font-family:var(--font-display);font-size:var(--font-size-3xl);font-weight:var(--weight-semibold);letter-spacing:-.01em;line-height:var(--line-height-tight);margin:0}@media (width<=860px){.app-shell,.shell{grid-template-columns:1fr;height:auto;min-height:100svh}.main{overflow-y:visible}.sidebar{border-bottom:1px solid var(--border-default);border-right:0;height:auto;overflow:visible}.nav,.side-nav{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.nav button,.nav a,.side-nav button,.side-nav a{justify-content:center}.main{padding:var(--content-pad-compact)}}*{box-sizing:border-box}body{background:var(--surface-base);color:var(--text-primary);font-family:var(--font-body);font-size:var(--font-size-md);line-height:var(--line-height-normal);margin:0}button,input,select{font:inherit}.login h1,h2{font-family:var(--font-display);margin:0}form button{background:var(--brand-primary);border:1px solid var(--brand-primary);border-radius:var(--radius-sm);color:var(--button-on-accent);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--weight-semibold);padding:9px 14px}.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px;display:grid}.class-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);cursor:pointer;padding:var(--space-4);text-align:left;gap:4px;display:grid}.class-card.active{border-color:var(--brand-primary)}.class-card strong{color:var(--brand-primary);font-family:var(--font-display);font-size:var(--font-size-display);font-weight:var(--weight-semibold)}.class-card small,.assignment span{color:var(--text-tertiary)}.grid{grid-template-columns:minmax(0,1.4fr) minmax(280px,.6fr);gap:16px;display:grid}table{border-collapse:collapse;width:100%;margin-top:12px}th,td{border-bottom:1px solid var(--border-default);text-align:left;padding:12px 10px}th{color:var(--text-tertiary);font-size:var(--font-size-xs);font-weight:var(--weight-semibold)}.assignment{border-bottom:1px solid var(--border-default);justify-content:space-between;gap:12px;padding:12px 0;display:flex}label{color:var(--text-secondary);font-size:var(--font-size-sm);gap:6px;display:grid}input,select{background:var(--surface-base);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);padding:10px}.settings-panel{max-width:760px}.settings-row{justify-content:space-between;align-items:center;gap:18px;margin-top:18px;display:flex}.settings-row p{color:var(--text-tertiary);margin:4px 0 0}.theme-options{gap:8px;display:flex}.page-head button{font-size:var(--font-size-sm);padding:9px 14px}.grid-classes{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.class-tile{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4);flex-direction:column;gap:12px;display:flex}.class-tile header{justify-content:space-between;align-items:baseline;display:flex}.class-tile h3{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:var(--weight-semibold);margin:0}.class-tile header span{color:var(--text-tertiary);font-size:var(--font-size-sm)}.class-tile .actions{gap:8px;display:flex}.class-tile button{font-size:var(--font-size-xs);padding:7px 11px}.actions{gap:8px;display:flex}.communications-layout{grid-template-columns:minmax(280px,.75fr) minmax(420px,1.6fr);gap:14px;min-height:660px;display:grid}.communications-list{overflow:auto}.communications-list h3{font-size:var(--font-size-sm);color:var(--text-tertiary);text-transform:uppercase;margin:22px 0 8px}.new-chat{gap:8px;display:grid}.group-request-toggle{border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;width:100%;margin-top:8px;padding:9px}.group-request{border:1px solid var(--border-default);border-radius:var(--radius-sm);gap:8px;max-height:260px;margin-top:8px;padding:9px;display:grid;overflow:auto}.group-request label{align-items:center;gap:6px;padding:3px 0;display:flex}.new-chat button,.announcement-composer button,.monitoring-banner button,.message-composer button{background:var(--brand-primary);border:1px solid var(--brand-primary);border-radius:var(--radius-sm);color:var(--button-on-accent);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--weight-semibold);padding:9px 14px}.conversation-row{border-radius:var(--radius-sm);width:100%;color:var(--text-primary);text-align:left;background:0 0;border:1px solid #0000;justify-content:space-between;gap:10px;padding:11px;display:flex}.conversation-row.active{background:var(--brand-primary-dim);border-color:var(--brand-primary)}.conversation-row span{gap:4px;display:grid}.conversation-row small{color:var(--text-tertiary)}.conversation-row em{color:var(--status-warning);font-size:var(--font-size-2xs)}.announcement-snippet{border-top:1px solid var(--border-default);padding:10px 2px}.announcement-snippet p{color:var(--text-secondary);font-size:var(--font-size-xs);margin:4px 0}.chat-panel{padding:0;overflow:hidden}.chat-shell{grid-template-rows:auto auto 1fr auto;height:660px;display:grid}.chat-shell>header{border-bottom:1px solid var(--border-default);justify-content:space-between;padding:16px;display:flex}.chat-shell>header div{gap:4px;display:grid}.chat-shell>header span{color:var(--text-tertiary);font-size:var(--font-size-xs)}.monitoring-banner{background:color-mix(in srgb, var(--status-warning) 10%, var(--surface-card));border-bottom:1px solid var(--status-warning);padding:12px 16px}.monitoring-banner p{font-size:var(--font-size-2xs);margin:4px 0;line-height:1.5}.monitoring-banner button{padding:6px 9px}.message-list{padding:14px;overflow:auto}.message{background:var(--surface-raised);border:1px solid var(--border-default);border-radius:var(--radius-sm);margin-bottom:9px;padding:10px}.message small,.message em{color:var(--text-tertiary);font-size:var(--font-size-2xs)}.message p{white-space:pre-wrap;margin:5px 0}.message-composer{border-top:1px solid var(--border-default);grid-template-columns:1fr auto auto;gap:9px;padding:12px;display:grid}.message-composer textarea,.announcement-composer textarea{background:var(--surface-base);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);resize:vertical;min-height:70px;padding:10px}.locked-note,.chat-empty{color:var(--text-tertiary);padding:24px}.attach-button,.attachment-link{border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;background:0 0;align-self:center;padding:9px}.attachment-link{font-size:var(--font-size-2xs);margin-right:6px;padding:5px 7px;display:inline-block}.announcement-composer{grid-template-columns:180px 1fr;gap:10px;margin-bottom:14px;display:grid}.announcement-composer h3{grid-column:1/-1;margin:0}.announcement-composer textarea{grid-column:1/-1}.announcement-composer label{align-items:center;display:flex}.state-pill{text-transform:capitalize}@media (width<=980px){.communications-layout{grid-template-columns:1fr}.chat-shell{height:600px}.announcement-composer{grid-template-columns:1fr}.announcement-composer textarea,.announcement-composer h3{grid-column:auto}}.modal-backdrop{z-index:100;background:#0000008c;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);width:min(440px,100%);padding:22px}.form-grid{gap:12px;display:grid}.form-grid select{background:var(--surface-base);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);padding:10px}.attendance-head{align-items:center}.attendance-filters{align-items:end;gap:10px;display:flex}.attendance-filters label{min-width:150px}.attendance-toolbar{gap:10px;margin-bottom:14px;display:grid}.attendance-toolbar>div:first-child{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.attendance-toolbar .actions{justify-content:flex-end}.attendance-toolbar button{background:var(--brand-primary);border:1px solid var(--brand-primary);border-radius:var(--radius-sm);color:var(--button-on-accent);cursor:pointer;font-size:var(--font-size-sm);font-weight:var(--weight-semibold);padding:9px 14px}.attendance-toolbar button:disabled{cursor:not-allowed;opacity:.5}.save-state{color:var(--text-tertiary);font-size:var(--font-size-xs)}.save-state.offline,.save-state.conflict{color:var(--status-warning)}.status-pill{border:1px solid var(--border-default);border-radius:var(--radius-pill);font-size:var(--font-size-2xs);font-weight:var(--weight-bold);padding:4px 8px}.status-pill.submitted{border-color:var(--status-success);color:var(--status-success)}.status-pill.draft{border-color:var(--status-warning);color:var(--status-warning)}.attendance-table-wrap{overflow-x:auto}.attendance-table td:first-child small{color:var(--text-tertiary);margin-top:3px;display:block}.attendance-table select{min-width:132px}.attendance-table input{width:100%;min-width:210px}.attendance-status{border-radius:var(--radius-pill);font-size:var(--font-size-2xs);font-weight:var(--weight-bold);white-space:nowrap;padding:5px 8px;display:inline-block}.attendance-status.present{background:color-mix(in srgb, var(--status-success) 16%, transparent);color:var(--status-success)}.attendance-status.absent{background:color-mix(in srgb, var(--status-error) 14%, transparent);color:var(--status-error)}.attendance-status.late,.attendance-status.half_day{background:color-mix(in srgb, var(--status-warning) 15%, transparent);color:var(--status-warning)}.attendance-status.excused{background:var(--brand-primary-dim);color:var(--brand-primary)}.attendance-status.unmarked{background:var(--surface-base);color:var(--text-tertiary)}.attendance-message{align-items:center;gap:10px;margin-bottom:12px;display:flex}.attendance-message button{padding:5px 8px}@media (width<=900px){.grid,.metrics{grid-template-columns:1fr}.attendance-head,.attendance-filters{flex-direction:column;align-items:stretch}}
