:root{color-scheme:light;--bg: #f4f7fb;--surface: #ffffff;--border: #d8e0ea;--text: #152033;--muted: #5f6f86;--primary: #2563eb;--primary-hover: #1d4ed8;--danger: #dc2626;--danger-hover: #b91c1c;--success-bg: #ecfdf5;--success-text: #047857;--warning-bg: #fffbeb;--warning-text: #b45309;--error-bg: #fef2f2;--error-text: #b91c1c;--shadow: 0 10px 30px rgba(21, 32, 51, .08);--brand-gradient-start: #2563eb;--brand-gradient-end: #7c3aed;--nav-active-bg: #eef4ff;--spinner-track: #dbe4f3;--secondary-button-bg: #e8eef7}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.header-brand{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:inherit}.brand-mark{width:2.5rem;height:2.5rem;border-radius:.75rem;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand-gradient-start),var(--brand-gradient-end));color:#fff;font-weight:700}.header-brand h1{font-size:1.25rem}.header-brand p,.muted{color:var(--muted);font-size:.95rem}.header-actions{display:flex;align-items:center;gap:.75rem}.header-users-link{margin-right:.75rem}.header-user{display:flex;flex-direction:column;align-items:flex-end;font-size:.9rem}.role-pill{color:var(--muted);font-size:.8rem}.app-body{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 81px)}.app-sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1.25rem 1rem}.sidebar-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:0}.sidebar-section{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.sidebar-section:first-child{margin-top:0}.sidebar-current-school-panel{position:relative}.sidebar-current-school-name{padding:.7rem 2.25rem .7rem .85rem;border-radius:.65rem;background:var(--nav-active-bg);color:var(--primary);font-weight:600;word-break:break-word}.sidebar-current-school-close{position:absolute;top:50%;right:.35rem;transform:translateY(-50%);width:1.75rem;height:1.75rem;border:none;border-radius:.45rem;background:var(--surface);color:var(--muted);font:inherit;font-size:1.1rem;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}.sidebar-current-school-close:hover{background:var(--secondary-button-bg);color:var(--primary)}.app-sidebar ul{list-style:none;margin:0;padding:0}.nav-link{display:block;padding:.7rem .85rem;border-radius:.65rem;color:var(--text)}.nav-link:hover,.nav-link.active{background:var(--nav-active-bg);color:var(--primary)}.app-content{padding:1.5rem}.page{max-width:1100px}.page-full-width{max-width:none;width:100%}.instances-table-wrap{overflow-x:auto}.table-count-link{border:none;background:none;padding:0;font:inherit;font-weight:600;color:var(--primary);cursor:pointer;text-decoration:underline;text-underline-offset:.15em}.table-count-link:hover{color:var(--primary-hover)}.portal-url-actions-cell{display:flex;align-items:center;gap:.35rem;white-space:nowrap}.mapped-students-toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.mapped-students-import-input{display:none}.table-icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;background:none;padding:.25rem;color:var(--primary);cursor:pointer;border-radius:.35rem;text-decoration:none}.table-icon-button:hover{color:var(--primary-hover);background:var(--nav-active-bg)}.table-action-icon{display:block}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);z-index:1000;padding:.75rem 1rem;border-radius:.65rem;background:var(--success-bg);color:var(--success-text);border:1px solid var(--success-text);box-shadow:var(--shadow);font-weight:600}.instance-flags-cell{min-width:6.5rem;white-space:nowrap}.instance-flag{line-height:1.35}.instance-flag+.instance-flag{margin-top:.25rem}.page-header{margin-bottom:1.25rem}.page-header h2{font-size:1.6rem;margin-bottom:.35rem}.status-panel{background:var(--surface);border:1px solid var(--border);border-radius:1rem;padding:1.25rem;margin-bottom:1rem;box-shadow:var(--shadow)}.status-panel h3{margin-bottom:1rem}.status-panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.status-panel-title-row h3{margin-bottom:0}.status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}.status-grid dt{color:var(--muted);font-size:.85rem;margin-bottom:.25rem}.status-grid dd{margin:0;font-weight:600}.instance-detail-id-row{grid-column:1 / -1;margin-bottom:.25rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}.action-bar{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap;margin:1.5rem 0 1rem}.page-footer-actions{display:flex;justify-content:center}.button{border:none;border-radius:.65rem;padding:.7rem 1rem;font:inherit;cursor:pointer;transition:background .15s ease,opacity .15s ease}.button:disabled{opacity:.6;cursor:not-allowed}.button-primary{background:var(--primary);color:#fff}.button-primary:hover:not(:disabled){background:var(--primary-hover)}.button-secondary{background:var(--secondary-button-bg);color:var(--text)}.button-danger{background:var(--danger);color:#fff}.button-danger:hover:not(:disabled){background:var(--danger-hover)}.button-small{padding:.45rem .7rem;font-size:.85rem}.table-action-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.instances-table-wrap .table-action-buttons{flex-direction:column;flex-wrap:nowrap;align-items:stretch}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--border);vertical-align:middle}.data-table .button-small{padding:.2rem .5rem;line-height:1.25}.data-table th{color:var(--muted);font-size:.85rem;font-weight:600;text-transform:capitalize}.school-name-button{border:none;background:none;padding:0;font:inherit;color:var(--primary);cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:.15em}.school-name-button:hover,.school-name-button-selected{color:var(--primary-hover)}.school-name-button-selected{font-weight:600}.school-detail-panel{display:flex;flex-direction:column;gap:1rem}.table-filters{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.table-filters label{display:flex;flex-direction:column;gap:.35rem;min-width:12rem}.weekday-fieldset{border:1px solid var(--border);border-radius:.65rem;padding:.75rem 1rem}.weekday-fieldset legend{padding:0 .35rem}.weekday-options{display:flex;flex-wrap:wrap;gap:.75rem 1rem}.weekday-option{display:inline-flex;align-items:center;gap:.35rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9rem;word-break:break-all}.alert{border-radius:.75rem;padding:.85rem 1rem;margin-bottom:1rem}.alert-error{background:var(--error-bg);color:var(--error-text)}.alert-success{background:var(--success-bg);color:var(--success-text)}.alert-warning{background:var(--warning-bg);color:var(--warning-text)}.login-page,.page-center,.center{display:grid;place-items:center}.login-page{min-height:100vh;padding:1rem}.login-card,.user-form{display:grid;gap:.9rem}.login-card{width:min(100%,420px);background:var(--surface);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;box-shadow:var(--shadow)}label,fieldset{display:grid;gap:.35rem;font-size:.95rem}fieldset{border:1px solid var(--border);border-radius:.75rem;padding:.85rem}input{border:1px solid var(--border);border-radius:.65rem;padding:.65rem .75rem;font:inherit}.role-checkboxes{display:grid;gap:.5rem}.checkbox-label{display:flex;align-items:center;gap:.5rem}.form-actions{display:flex;gap:.75rem}.spinner{width:2rem;height:2rem;border:3px solid var(--spinner-track);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.spinner.large{width:3rem;height:3rem}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 900px){.app-body{grid-template-columns:1fr}.app-sidebar{border-right:none;border-bottom:1px solid var(--border)}.header-actions{flex-wrap:wrap;justify-content:flex-end}}
