:root{color-scheme:light;--bg:#f8f3e8;--panel:rgba(255,252,247,.94);--panel-strong:#fffdf8;--ink:#261718;--muted:#6c5d56;--line:rgba(118,18,29,.12);--accent:#9f1724;--accent-strong:#7f1220;--accent-soft:rgba(159,23,36,.12);--support:#2f7d32;--support-soft:rgba(47,125,50,.12);--gold:#b45309;--shadow:0 20px 60px rgba(95,37,31,.12);--radius:22px}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;font-family:Georgia,Times New Roman,serif;background:radial-gradient(circle at top left,rgba(159,23,36,.1),transparent 28%),radial-gradient(circle at top right,rgba(47,125,50,.12),transparent 30%),linear-gradient(180deg,#fffcf7 0,var(--bg) 100%);color:var(--ink)}body{min-height:100vh}a{color:inherit}button,input,select,textarea{font:inherit}.page-shell{width:min(1180px,calc(100vw - 32px));margin:0 auto;padding:24px 0 48px}.portal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px}.portal-nav{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.portal-nav-link{text-decoration:none;padding:10px 16px;border-radius:999px;background:rgba(255,252,247,.82);border:1px solid var(--line);color:var(--muted);transition:transform .16s ease,border-color .16s ease,color .16s ease}.portal-nav-link:hover{transform:translateY(-1px);border-color:rgba(159,23,36,.24);color:var(--accent)}.portal-nav-link.active{background:var(--accent);color:#fff;border-color:transparent}.site-frame{min-height:100vh}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:rgba(255,251,245,.88);border-bottom:1px solid rgba(118,18,29,.08)}.site-header-inner{width:min(1180px,calc(100vw - 32px));margin:0 auto;padding:14px 0}.brand-lockup{display:flex;align-items:center;gap:18px}.brand-logo{width:clamp(220px,28vw,300px);height:auto}.brand-copy{display:grid;grid-gap:4px;gap:4px}.brand-kicker{margin:0;font-size:.85rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.brand-subtitle{margin:0;color:var(--muted);font-size:.98rem}.hero-card,.panel,.table-shell{background:var(--panel);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.hero-card{padding:28px;margin-bottom:20px;border-top:4px solid var(--accent)}.eyebrow{margin:0 0 10px;text-transform:uppercase;letter-spacing:.16em;font-size:.75rem;color:var(--accent)}.hero-title{margin:0;font-size:clamp(2rem,4vw,3.6rem);line-height:.98}.roster-hero-title{font-size:clamp(2rem,3.5vw,3rem);white-space:nowrap}.hero-copy{margin:12px 0 0;max-width:110ch;color:var(--muted);font-size:1.02rem}.dashboard-grid{display:grid;grid-gap:20px;gap:20px;min-width:0}.panel{padding:22px;min-width:0}.panel-title{margin:0 0 16px;font-size:1.25rem}.filters-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px}.field{display:grid;grid-gap:8px;gap:8px}.field label{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.field input,.field select,.field textarea{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel-strong);color:var(--ink)}.field textarea{resize:vertical;min-height:140px}.actions{display:flex;gap:12px;align-items:center;margin-top:18px;flex-wrap:wrap}.field-span-3{grid-column:1/-1}.button{border:0;border-radius:999px;padding:12px 18px;background:var(--accent);color:#fff;cursor:pointer;transition:transform .16s ease,background .16s ease}.button:hover{transform:translateY(-1px);background:var(--accent-strong)}.button.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent-soft)}.page-access-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.page-access-card{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px;border-radius:18px;border:1px solid var(--line);background:var(--panel-strong)}.page-access-label{margin:0 0 6px;font-size:1rem;font-weight:700}.page-access-state{margin:0;color:var(--muted);font-size:.92rem}.page-access-state.enabled{color:var(--support)}.page-access-state.disabled{color:var(--accent)}.email-recipient-list{max-height:280px;overflow:auto;display:grid;grid-gap:10px;gap:10px;padding:12px;border-radius:16px;border:1px solid var(--line);background:var(--panel-strong)}.email-recipient-option{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:center;grid-gap:12px;gap:12px;padding:14px 16px;border-radius:14px;background:rgba(255,252,247,.82);border:1px solid rgba(118,18,29,.08);cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease}.email-recipient-option:hover{border-color:rgba(118,18,29,.2);background:rgba(255,250,244,.95)}.email-recipient-option.selected{border-color:rgba(118,18,29,.35);background:rgba(118,18,29,.05)}.email-recipient-option input{width:18px;height:18px;margin:0}.email-recipient-details{display:grid;grid-gap:4px;gap:4px;min-width:0}.email-recipient-details strong{color:var(--ink);font-size:1rem;line-height:1.2}.email-recipient-details small{color:var(--muted);font-size:.85rem;line-height:1.3;word-break:break-word}.email-preview{margin-top:12px;padding:12px;border-radius:16px;border:1px solid var(--line);background:var(--panel-strong)}.email-preview-subject{margin-bottom:10px}.email-preview-body{white-space:pre-wrap;word-break:break-word;font-family:inherit;overflow-wrap:break-word;max-width:100%}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.stats-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px}.stat-card{padding:18px;border-radius:18px;background:linear-gradient(180deg,hsla(0,0%,100%,.8),rgba(255,247,242,.94));border:1px solid var(--line)}.stat-label{margin:0;color:var(--muted);font-size:.85rem}.stat-value{margin:8px 0 0;font-size:1.8rem}.subject-check-row{display:grid;grid-template-columns:repeat(13,minmax(0,1fr));grid-gap:10px;gap:10px}.subject-check-card{padding:14px 10px 12px;border-radius:18px;background:linear-gradient(180deg,hsla(0,0%,100%,.8),rgba(255,247,242,.94));border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:10px;text-align:center;min-height:110px}.subject-check-label{margin:0;font-size:.76rem;line-height:1.1;color:var(--ink);word-break:normal;overflow-wrap:normal;-webkit-hyphens:none;hyphens:none}.subject-check-icon{margin:0;font-size:1.8rem;line-height:1;font-weight:700}.subject-check-icon.match{color:#15803d}.subject-check-icon.mismatch{color:#dc2626}.table-shell{overflow:hidden;min-width:0}.table-wrap{overflow-x:auto}.gradebook-table-shell{overflow:visible;min-width:0}.gradebook-term-table-wrap{display:block;position:relative;width:100%;max-width:100%;min-width:0;overflow-x:auto;overflow-y:visible;padding-bottom:8px;overscroll-behavior-x:contain}.gradebook-term-table{width:max-content;min-width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}.gradebook-term-table td,.gradebook-term-table th{padding:10px 12px;vertical-align:top;background-clip:padding-box}.gradebook-name-column{position:-webkit-sticky;position:sticky;left:0;z-index:3;min-width:260px;width:260px;background:rgba(255,251,245,.98);box-shadow:10px 0 16px rgba(76,38,18,.05)}.gradebook-name-cell{z-index:2}.gradebook-term-table thead .gradebook-name-column{z-index:6}.gradebook-term-table tbody .gradebook-name-column{z-index:5}.gradebook-summary-column{position:-webkit-sticky;position:sticky;z-index:3;background:rgba(255,251,245,.98);box-shadow:-10px 0 16px rgba(76,38,18,.05)}.gradebook-summary-percent{right:124px;min-width:110px;width:110px}.gradebook-summary-grade{right:0;min-width:124px;width:124px}.gradebook-assessment-column{min-width:420px}.gradebook-assessment-meta-input{width:min(180px,100%)}.gradebook-score-input{min-width:96px;max-width:120px}.gradebook-grade-select{min-width:110px}.gradebook-assessment-header-actions{display:flex;gap:8px;align-items:center;margin:8px 0;flex-wrap:wrap}.gradebook-assessment-header-actions .button{padding:8px 12px}.gradebook-percentage-value{font-weight:700}.grade-tone-a{color:#166534;background:rgba(34,197,94,.12)}.grade-tone-b{color:#3f6212;background:rgba(132,204,22,.12)}.grade-tone-c{color:#92400e;background:rgba(245,158,11,.14)}.grade-tone-d{color:#b45309;background:rgba(249,115,22,.14)}.grade-tone-e{color:#991b1b;background:rgba(239,68,68,.12)}.gradebook-grade-select.grade-tone-a,.gradebook-grade-select.grade-tone-b,.gradebook-grade-select.grade-tone-c,.gradebook-grade-select.grade-tone-d,.gradebook-grade-select.grade-tone-e,.gradebook-percentage-value.grade-tone-a,.gradebook-percentage-value.grade-tone-b,.gradebook-percentage-value.grade-tone-c,.gradebook-percentage-value.grade-tone-d,.gradebook-percentage-value.grade-tone-e{border-radius:10px;padding:6px 10px}table{width:100%;border-collapse:collapse}td,th{padding:14px 16px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);background:rgba(255,248,239,.92)}tr:last-child td{border-bottom:0}.empty-state{padding:28px;color:var(--muted)}.empty-state.compact{padding:16px 0 0}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(560px,100%);padding:28px}.hint{color:var(--muted)}.banner{margin-top:16px;padding:12px 14px;border-radius:14px;background:var(--support-soft);color:#1f5d25}.compact-banner{margin-top:0}.error-banner{background:rgba(185,28,28,.09);color:#991b1b}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}.meta{color:var(--muted)}.panel-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:18px}.gradebook-term-heading{align-items:center;flex-wrap:wrap}.gradebook-term-heading-copy{min-width:240px}.gradebook-term-actions{margin-left:auto;justify-content:flex-end}.gradebook-admin-groups,.gradebook-section-groups{display:grid;grid-gap:16px;gap:16px}.gradebook-admin-group,.gradebook-section-group{border:1px solid var(--line);border-radius:22px;background:rgba(255,252,248,.82);overflow:hidden}.gradebook-admin-group-header,.gradebook-section-group-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 20px;cursor:pointer;list-style:none}.gradebook-admin-group-header::-webkit-details-marker,.gradebook-section-group-header::-webkit-details-marker{display:none}.gradebook-section-group-title{margin:0;font-size:1.05rem}.gradebook-admin-group-body,.gradebook-section-group-body{padding:0 20px 20px}.gradebook-section-group-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px}.gradebook-section-card{display:grid;grid-gap:10px;gap:10px;padding:18px;border-radius:20px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,252,248,.95),rgba(255,246,240,.9));text-align:left;color:inherit;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}.gradebook-section-card:hover{transform:translateY(-1px);border-color:rgba(159,23,36,.28);box-shadow:0 18px 36px rgba(76,38,18,.08)}.gradebook-section-card.active{border-color:rgba(159,23,36,.42);box-shadow:0 18px 36px rgba(159,23,36,.12);background:linear-gradient(180deg,rgba(255,248,244,.98),rgba(255,241,234,.94))}.gradebook-section-card-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.gradebook-section-status{display:inline-flex;align-items:center;justify-content:center;padding:6px 10px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.gradebook-section-status.ready{background:rgba(47,125,50,.1);color:#1f5d25}.gradebook-section-status.pending{background:rgba(159,23,36,.1);color:var(--accent)}.gradebook-section-name{margin:0;font-size:1.15rem}.gradebook-section-copy{margin:0;color:var(--muted);line-height:1.45}.compact-copy{margin-top:0}.mi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.students-mi-panel[open] summary{margin-bottom:1rem}.students-mi-summary{list-style:none;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;cursor:pointer}.students-mi-summary::-webkit-details-marker{display:none}.students-mi-summary:after{content:"Open";color:var(--accent);font-size:.92rem;font-weight:700;white-space:nowrap}.students-mi-panel[open] .students-mi-summary:after{content:"Hide"}.mi-card{padding:18px;border-radius:20px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,252,248,.95),rgba(255,246,240,.9));display:grid;grid-gap:14px;gap:14px}.status-banner{padding:12px 14px;border-radius:14px;font-size:.95rem}.status-banner.success{background:rgba(34,197,94,.14);color:#166534}.status-banner.error{background:rgba(239,68,68,.12);color:#991b1b}.mi-title{margin:0 0 14px;font-size:1.05rem}.mini-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.mini-value{margin:6px 0 0;font-size:1.5rem}.breakdown-list{display:grid;grid-gap:10px;gap:10px}.breakdown-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;font-size:.95rem}.specialist-register-grid{align-items:start}.specialist-register-row{width:100%;padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--panel-strong);color:var(--ink);display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;align-items:center;text-align:left;cursor:pointer}.specialist-register-row.active{border-color:var(--accent);box-shadow:0 0 0 2px rgba(201,107,72,.12)}.specialist-register-row span{display:grid;grid-gap:4px;gap:4px}.specialist-register-toolbar{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.specialist-student-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.specialist-student-card{display:grid;grid-template-columns:auto minmax(0,1fr);grid-gap:12px;gap:12px;align-items:start;padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--panel-strong)}.specialist-student-card.selected{border-color:var(--accent);background:rgba(255,244,236,.95)}.specialist-student-card span{display:grid;grid-gap:4px;gap:4px}.specialist-launch-panel{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;margin-bottom:20px}.specialist-launch-copy{margin-top:8px;max-width:82ch}.specialist-stat-card{grid-column:span 2}.specialist-stat-copy{font-size:1.05rem;line-height:1.4}.specialist-schedule-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:18px;gap:18px}.specialist-day-column{display:grid;grid-gap:14px;gap:14px;align-content:start}.specialist-day-header{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.specialist-day-title{margin-bottom:0}.specialist-slot-list{display:grid;grid-gap:12px;gap:12px}.specialist-slot-card{padding:16px;border-radius:18px;border:1px solid var(--line);border-top:4px solid var(--accent);background:var(--panel-strong);display:grid;grid-gap:10px;gap:10px}.specialist-slot-topline{display:grid;grid-gap:4px;gap:4px}.specialist-slot-meta{margin:0;color:var(--muted);font-size:.9rem}.specialist-coverage-list{display:grid;grid-gap:8px;gap:8px}.specialist-coverage-chip{padding:10px 12px;border-radius:14px;background:rgba(159,23,36,.06);border:1px solid rgba(159,23,36,.08);display:grid;grid-gap:3px;gap:3px}.specialist-coverage-chip p,.specialist-coverage-chip span,.specialist-coverage-chip strong{margin:0}.specialist-coverage-actions{margin-top:6px}.specialist-pool-stats{margin:16px 0}.specialist-class-breakdown{margin-bottom:16px}.breakdown-pie-shell{display:flex;align-items:center;gap:16px}.breakdown-pie{width:88px;height:88px;transform:rotate(-90deg);flex:0 0 auto}.breakdown-pie-slice,.breakdown-pie-track{fill:none;stroke-width:4}.breakdown-pie-track{stroke:rgba(159,23,36,.08)}.breakdown-pie-slice{stroke-linecap:butt}.breakdown-pie-total{display:grid;grid-gap:2px;gap:2px}.breakdown-pie-total strong{font-size:1.6rem;line-height:1}.breakdown-pie-empty span,.breakdown-pie-total span{color:var(--muted);font-size:.9rem}.breakdown-pie-empty{min-height:88px;display:grid;place-items:center;border-radius:18px;background:rgba(159,23,36,.04)}.gradebook-term-summary-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.bar-wrap{position:relative;min-width:120px;padding:7px 10px;border-radius:999px;background:rgba(159,23,36,.08);overflow:hidden;text-align:right}.bar-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,rgba(159,23,36,.24),rgba(47,125,50,.2));border-radius:999px}.bar-wrap strong{position:relative;z-index:1}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.timetable-search-field{min-width:min(320px,100%)}.compact-eyebrow{margin-bottom:6px}.timetable-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.timetable-admin-card{display:grid;grid-gap:16px;gap:16px;padding:18px;border-radius:20px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,252,248,.95),rgba(255,246,240,.9))}.timetable-admin-card-title{margin:0 0 8px;font-size:1.2rem}.timetable-admin-card-copy{display:grid;grid-gap:4px;gap:4px}.timetable-admin-card-actions{display:flex;justify-content:flex-start}.timetable-toolbar{display:grid;grid-template-columns:220px 220px minmax(0,1fr);grid-gap:14px;gap:14px;align-items:end}.timetable-toolbar-summary{align-self:stretch}.timetable-toolbar-value{min-height:50px;display:flex;align-items:center;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel-strong);color:var(--ink)}.timetable-toolbar-actions{margin-top:0;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-start}.smaller-stat{font-size:1.2rem;line-height:1.2}.timetable-master-grid{display:grid;grid-template-columns:118px repeat(5,minmax(0,1fr));grid-template-rows:auto;grid-auto-rows:minmax(76px,auto);grid-gap:8px;gap:8px;min-width:1120px;align-items:stretch}.timetable-corner-cell,.timetable-grid-header,.timetable-grid-slot,.timetable-time-label{border:1px solid var(--line);border-radius:16px;background:hsla(0,0%,100%,.72)}.timetable-corner-cell,.timetable-day-header{background:rgba(255,250,245,.95)}.timetable-day-header{padding:14px 12px;text-align:center;font-weight:700}.timetable-time-label{padding:12px 10px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:.9rem;line-height:1.25;background:rgba(255,250,245,.65)}.timetable-time-label span{display:block;max-width:100%}.timetable-grid-slot{pointer-events:none;min-height:100%}.timetable-grid-block{position:relative;z-index:2;align-self:stretch;height:100%}.timetable-grid-block-composite{display:grid;grid-template-rows:minmax(48px,.7fr) minmax(64px,1.3fr);grid-gap:6px;gap:6px;min-height:100%}.timetable-block-card{width:100%;border:0;border-radius:12px;padding:12px 12px 14px;cursor:pointer;text-align:left;display:flex;flex-direction:column;justify-content:flex-start;min-height:100%;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(38,23,24,.06);transition:transform .16s ease,box-shadow .16s ease}.timetable-block-card:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px rgba(38,23,24,.12),0 10px 25px rgba(38,23,24,.08)}.timetable-block-topline{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;font-size:.98rem;line-height:1.05}.timetable-block-topline strong{display:block;min-width:0;overflow-wrap:anywhere}.timetable-block-meta{margin-top:6px;font-size:.94rem;line-height:1.2;overflow-wrap:anywhere}.muted-block-meta{opacity:.76}.timetable-block-edit{font-size:.9rem;opacity:.75}.timetable-teacher-strip{display:flex;gap:6px;margin-top:auto;padding-top:10px;flex-wrap:wrap}.timetable-teacher-badge{width:26px;height:26px;border-radius:999px;display:grid;place-items:center;background:hsla(0,0%,100%,.28);border:1px solid hsla(0,0%,100%,.38);font-size:.75rem;font-weight:700}.timetable-modal{width:min(560px,calc(100vw - 32px))}.timetable-board-scroll{overflow-x:auto}.timetable-export-surface{min-width:1160px;border:1px solid rgba(38,23,24,.1);border-radius:24px;background:#fffdf8;padding:18px;box-shadow:0 18px 45px rgba(38,23,24,.05)}.timetable-export-bar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:16px}.timetable-export-class{display:flex;flex-direction:column;gap:4px}.timetable-export-class strong{font-size:1.2rem;line-height:1.1}.timetable-export-class span{color:var(--muted);font-size:.92rem}.timetable-export-template{font-size:.88rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#7d3037;white-space:nowrap}.timetable-export-surface.is-export-clean .timetable-block-edit{opacity:0}.timetable-parent-export-shell{position:fixed;left:-100000px;top:0;pointer-events:none}.timetable-parent-export-surface{width:1180px;border:1px solid rgba(38,23,24,.1);border-radius:28px;background:#fffdf8;padding:18px;box-sizing:border-box}.timetable-parent-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.timetable-parent-logo{width:220px;height:auto;object-fit:contain}.timetable-parent-title{margin:0;font-size:2rem;line-height:1.05}.timetable-parent-grid{display:grid;grid-template-columns:112px repeat(5,minmax(0,1fr));grid-template-rows:auto;grid-auto-rows:minmax(56px,auto);grid-gap:8px;gap:8px}.timetable-parent-block,.timetable-parent-corner,.timetable-parent-day,.timetable-parent-shared-bar,.timetable-parent-slot,.timetable-parent-time{border:1px solid hsla(19,30%,85%,.9);border-radius:16px}.timetable-parent-corner,.timetable-parent-day,.timetable-parent-slot,.timetable-parent-time{background:#fffaf6}.timetable-parent-day{padding:12px 8px;text-align:center;font-size:1.05rem;font-weight:700}.timetable-parent-time{display:flex;align-items:center;justify-content:center;padding:10px 8px;text-align:center;color:#6f625b;font-size:.92rem;line-height:1.25}.timetable-parent-slot{min-height:100%}.timetable-parent-block,.timetable-parent-shared-bar{display:flex;align-items:center;padding:10px 12px;font-size:.98rem;font-weight:700;line-height:1.15;overflow-wrap:anywhere;box-shadow:inset 0 0 0 1px rgba(38,23,24,.05)}.timetable-parent-shared-bar{justify-content:center;text-align:center}.timetable-block-card.is-compact{padding:10px 11px 11px}.timetable-block-card.is-compact .timetable-block-topline{font-size:.92rem}.timetable-block-card.is-compact .timetable-block-meta{margin-top:4px;font-size:.84rem}.timetable-block-card.is-tight{padding:8px 10px}.timetable-block-card.is-tight .timetable-block-topline{font-size:.84rem;gap:8px}.timetable-block-card.is-tight .timetable-block-meta{margin-top:3px;font-size:.76rem}.timetable-block-card.is-tight .muted-block-meta,.timetable-block-card.is-tight .timetable-teacher-strip{display:none}.timetable-block-card.is-muted{opacity:.32}.timetable-grid-composite-segment{align-self:stretch;min-height:0}.timetable-editor-grid{display:grid;grid-gap:16px;gap:16px}.timetable-time-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.timetable-color-grid{display:flex;flex-wrap:wrap;gap:10px}.timetable-color-swatch{width:34px;height:34px;border-radius:10px;border:2px solid rgba(38,23,24,.12);cursor:pointer}.timetable-color-swatch.active{border-color:var(--accent);box-shadow:0 0 0 3px rgba(159,23,36,.12)}.timetable-teacher-editor{display:grid;grid-gap:10px;gap:10px}.timetable-teacher-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:10px;gap:10px;align-items:center}.timetable-assigned-strip{display:flex;gap:8px;flex-wrap:wrap}.directory-action.icon.danger{background:rgba(185,28,28,.1);color:#991b1b;border:1px solid rgba(185,28,28,.15)}.cell-input,.cell-textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff;color:var(--ink);box-shadow:inset 0 1px 2px rgba(38,23,24,.04)}.cell-input:focus,.cell-textarea:focus,.field input:focus,.field select:focus{outline:2px solid rgba(159,23,36,.18);outline-offset:1px;border-color:rgba(159,23,36,.35)}.cell-textarea{min-height:74px;resize:vertical}.table-actions{display:flex;gap:8px;align-items:center}.pastoral-shell{padding:18px}.pastoral-grid{display:grid;grid-gap:16px;gap:16px}.pastoral-card{padding:18px;border-bottom:1px solid var(--line)}.pastoral-card:last-child{border-bottom:0}.pastoral-card-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}.pastoral-name{margin:0;font-size:1.2rem;font-weight:700}.pastoral-subtitle{margin:4px 0 0;color:var(--muted);font-size:.92rem}.identity-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.student-assignment-grid{display:grid;grid-template-columns:minmax(220px,1.2fr) repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px;align-items:end;margin-bottom:18px}.gradebook-student-name{font-weight:700}.gradebook-student-meta{margin-top:6px;color:var(--muted);font-size:.9rem}.gradebook-assessment-column-title{font-weight:700}.gradebook-assessment-column-date{margin-top:4px;color:var(--muted);font-size:.82rem}.gradebook-assessment-cell{display:grid;grid-gap:8px;gap:8px;min-width:124px}.identity-chip{padding:12px 14px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,hsla(0,0%,100%,.78),rgba(255,248,242,.92))}.identity-chip span{display:block;margin-bottom:6px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.identity-chip strong{font-size:1rem}.pastoral-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px 16px;gap:14px 16px}.pastoral-field{display:grid;grid-gap:8px;gap:8px}.pastoral-field span{font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.pastoral-field .cell-input,.pastoral-field .cell-textarea{min-height:46px}.duty-grid{align-items:start}.duty-list{display:grid;grid-gap:12px;gap:12px}.duty-list.compact{gap:10px}.duty-card{border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,hsla(0,0%,100%,.86),rgba(255,248,242,.94));padding:16px}.duty-card.compact{padding:14px}.duty-card-top{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.duty-card-time{margin:0 0 6px;color:var(--accent);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}.duty-card-title{margin:0;font-size:1.05rem}.duty-card-day{padding:7px 10px;border-radius:999px;background:rgba(47,125,50,.1);color:#1f5d25;white-space:nowrap;font-size:.82rem}.duty-card-location{margin:10px 0 0;color:var(--muted)}.directory-filters{grid-template-columns:2fr repeat(3,minmax(0,1fr))}.directory-search{grid-column:span 1}.directory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.directory-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.directory-page-title{margin:0;font-size:clamp(2rem,3vw,2.6rem)}.directory-page-copy{margin:8px 0 0;color:var(--muted)}.directory-page-copy.compact{margin-top:6px;font-size:.95rem}.directory-add-button{border:0;border-radius:12px;padding:14px 18px;background:#3c8b48;color:#fff;font:inherit;font-weight:600;cursor:pointer;opacity:1;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}.directory-add-button:hover{transform:translateY(-1px);background:#34793f;box-shadow:0 10px 24px rgba(60,139,72,.18)}.directory-add-button:disabled{cursor:not-allowed;opacity:.72;transform:none;box-shadow:none}.directory-add-button.full-width{width:100%;margin-top:14px}.directory-search-panel{background:rgba(255,252,247,.96);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}.directory-search-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;grid-gap:14px;gap:14px}.directory-guidance-panel{margin-top:16px;padding:16px 18px;border:1px solid rgba(146,116,92,.22);border-radius:16px;background:hsla(0,0%,100%,.76);display:grid;grid-gap:8px;gap:8px}.directory-guidance-title{margin:0;font-size:.95rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#7b2e2b}.directory-guidance-copy{margin:0;color:#5f4b44;line-height:1.5}.legacy-filter-bar{display:grid;grid-template-columns:auto minmax(180px,1.1fr) repeat(3,minmax(180px,1fr));grid-gap:14px;gap:14px;align-items:end}.legacy-filter-label{align-self:center;font-size:1.5rem;font-weight:600;color:#55606f;padding-right:6px}.directory-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.directory-card-grid,.directory-team-section{display:grid;grid-gap:18px;gap:18px}.directory-team-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:8px;border-bottom:1px solid rgba(146,116,92,.22)}.directory-team-title{margin:0;font-size:2rem;line-height:1}.directory-team-subgroup{display:grid;grid-gap:14px;gap:14px}.directory-team-subtitle{margin:0;font-size:1.1rem;color:#5f4b44;letter-spacing:.03em;text-transform:uppercase}.staff-management-card{position:relative;background:#fff;border:1px solid #e8e2d7;border-radius:18px;padding:22px 20px 18px;box-shadow:0 12px 32px rgba(73,36,29,.08)}.staff-card-badge{position:absolute;top:18px;left:18px;padding:4px 9px;border-radius:8px;background:#f2f4f7;color:#5b6470;font-size:.76rem;font-weight:700}.staff-management-header{display:flex;gap:16px;align-items:center;margin-top:12px;min-height:92px}.management-avatar{width:66px;height:66px;border-radius:999px}.management-avatar.large{width:74px;height:74px}.staff-management-copy{min-width:0}.staff-management-line{margin:6px 0 0;font-size:.95rem}.staff-management-line.primary{color:#4264eb;font-weight:600}.staff-management-line.accent{color:#7c3aed;font-weight:700}.staff-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px;border-top:1px solid #ece7de;margin-top:18px;padding-top:14px}.directory-action{border-radius:10px;min-height:48px;padding:10px 16px;font:inherit;border:1px solid #dcdfe5;background:#fff;color:#273043;cursor:pointer;font-weight:600;text-align:center;transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease,background-color .14s ease,color .14s ease}.directory-action:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(38,23,24,.08)}.directory-action.edit{background:#3c8b48;color:#fff;border-color:#3c8b48}.directory-action.close,.directory-action.view{background:#fff}.directory-action.danger{background:#fff7f7;color:#991b1b;border-color:rgba(185,28,28,.18)}.directory-action.edit.active{background:#2f6e39;border-color:#2f6e39;box-shadow:0 0 0 3px rgba(60,139,72,.16),inset 0 0 0 1px hsla(0,0%,100%,.24)}.directory-action.close.active,.directory-action.view.active{background:rgba(159,23,36,.08);color:var(--accent);border-color:rgba(159,23,36,.28);box-shadow:0 0 0 3px rgba(159,23,36,.1),inset 0 0 0 1px rgba(159,23,36,.08)}.directory-action.danger:hover{background:#feecec}.directory-action:disabled{cursor:not-allowed;opacity:.72;transform:none;box-shadow:none}.directory-modal-backdrop{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:24px;background:rgba(26,20,20,.48);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.directory-modal{position:relative;width:min(960px,100%);max-height:calc(100vh - 48px);overflow:auto;background:#fff;border-radius:22px;padding:24px;box-shadow:0 30px 70px rgba(28,17,15,.24)}.directory-modal-close{position:absolute;top:16px;right:16px;border:0;background:transparent;font-size:1.8rem;color:#7a7a7a;cursor:pointer}.directory-modal-header{display:flex;gap:18px;align-items:center;margin-bottom:20px}.directory-modal-title{margin:0;font-size:1.7rem}.directory-modal-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px;margin-bottom:22px}.directory-modal-footer-card,.directory-modal-section{border:1px solid #ebe5da;border-radius:16px;padding:18px;background:#fffdfa}.directory-modal-heading{margin:0 0 14px;font-size:1.1rem}.directory-modal-list{display:grid;grid-gap:10px;gap:10px}.directory-modal-row{display:grid;grid-gap:4px;gap:4px}.directory-modal-row span{color:var(--muted);font-size:.9rem}.directory-modal-row strong{font-size:1rem}.directory-modal-summary{display:grid;grid-gap:6px;gap:6px;margin-bottom:14px}.directory-modal-summary span{color:var(--muted)}.directory-modal-summary strong{font-size:2rem}.directory-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.field-span-2{grid-column:1/-1}.directory-access-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px 14px;gap:12px 14px;margin-top:10px}.directory-checkbox-row{display:flex;align-items:center;gap:10px;min-height:48px;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel-strong)}.directory-checkbox-row input{margin:0}.directory-form-grid textarea{width:100%;padding:12px 14px;border-radius:14px;border:1px solid var(--line);background:var(--panel-strong);color:var(--ink);resize:vertical;min-height:96px}.directory-form-error{margin:0 0 6px;color:#b42318;font-weight:600}.directory-form-help{margin:0;color:var(--muted);font-size:.94rem;line-height:1.5}.directory-photo-upload-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.directory-upload-button{align-items:center;background:rgba(84,145,76,.12);border:1px solid rgba(84,145,76,.28);border-radius:999px;color:#3f7f39;cursor:pointer;display:inline-flex;font-size:.98rem;font-weight:700;justify-content:center;padding:12px 18px;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}.directory-upload-button:hover{background:rgba(84,145,76,.18);border-color:rgba(84,145,76,.42);transform:translateY(-1px)}.directory-upload-button input{display:none}.directory-upload-status{color:var(--ink);font-size:.95rem;font-weight:600}.directory-upload-status.muted{color:var(--muted)}.directory-upload-error{margin:6px 0 0;color:#b42318;font-size:.94rem;font-weight:600}.directory-duty-stack{display:grid;grid-gap:10px;gap:10px}.directory-duty-pill{border-radius:12px;padding:10px 12px;background:#f4f6fa;color:#445065;font-size:.95rem}.directory-duty-pill.empty{color:#7a7f89;font-style:italic}.directory-history-list{display:grid;grid-gap:12px;gap:12px}.directory-history-entry{border-top:1px solid #ebe5da;padding-top:12px}.directory-history-entry:first-child{border-top:0;padding-top:0}.directory-history-change{margin:0;color:var(--ink)}.directory-history-meta{margin:4px 0 0;color:var(--muted);font-size:.92rem}.directory-history-error{margin:0;color:#b42318;font-weight:600}.directory-modal-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px;margin-top:18px}.directory-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:20px}.directory-card-header{display:flex;gap:16px;align-items:center;margin-bottom:16px}.directory-avatar{width:78px;height:78px;border-radius:22px;background:linear-gradient(180deg,rgba(159,23,36,.14),rgba(47,125,50,.12));border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;flex-shrink:0}.directory-avatar span{font-size:1.5rem;color:var(--accent);font-weight:700}.directory-avatar.small{width:54px;height:54px;border-radius:16px}.directory-avatar.small span{font-size:1.1rem}.directory-avatar-image{width:100%;height:100%;object-fit:cover;display:block}.directory-name{margin:0;font-size:1.35rem}.directory-meta-line,.directory-role{margin:4px 0 0;color:var(--muted)}.directory-role{color:var(--accent);font-weight:600}.directory-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.directory-contact{padding:12px 14px;border-radius:16px;background:rgba(255,251,245,.88);border:1px solid var(--line);margin-bottom:16px}.directory-contact-line{margin:0;color:var(--muted)}.directory-contact-line+.directory-contact-line{margin-top:6px}.directory-duty-section{border-top:1px solid var(--line);padding-top:16px}.panel-heading.compact{margin-bottom:12px}.duty-roster-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px;gap:18px}.duty-roster-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:20px}.duty-roster-card.unassigned{border-color:rgba(159,23,36,.24)}.duty-assignee-block{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.duty-assignee{display:flex;gap:12px;align-items:center}.duty-assignee-name{margin:0;font-size:1rem;font-weight:700}.duty-group-list{display:grid;grid-gap:18px;gap:18px}.duty-group-card{border-radius:20px;overflow:hidden;border:1px solid #1f2937;background:#fff;box-shadow:0 20px 48px rgba(29,24,24,.12)}.duty-group-card .duty-group-header,.duty-group-card.duty-dark .duty-group-header{background:#1f2937;color:#fff}.duty-group-card.duty-lead .duty-group-header{background:#f8d2d2;color:#8c1d1d}.duty-group-header{padding:20px}.duty-group-title{margin:0;font-size:1.6rem}.duty-group-days,.duty-group-meta{margin:6px 0 0;opacity:.88}.duty-group-description{margin:0;padding:16px 20px 0;color:#4362d9;line-height:1.6}.duty-subgroup-list{display:grid;grid-gap:0;gap:0;padding:0 0 8px}.duty-subgroup-card{padding:18px 20px 20px;border-top:4px solid #1f2937}.duty-subgroup-card.duty-lead{background:#fde2e2;border-top-color:#d94848}.duty-subgroup-header{display:flex;justify-content:space-between;gap:16px;margin-bottom:14px}.duty-subgroup-title{margin:0;font-size:1.15rem}.duty-subgroup-location,.duty-subgroup-meta{margin:4px 0 0;color:var(--muted)}.duty-week-grid{display:grid;grid-gap:10px;gap:10px}.duty-week-grid.columns-5{grid-template-columns:repeat(5,minmax(0,1fr))}.duty-week-grid.columns-1{grid-template-columns:1fr}.duty-day-cell{border-radius:12px;background:#fff;border:1px solid #e6e9ef;padding:12px;min-height:112px}.duty-day-label{margin:0;text-align:center;font-weight:700;color:#5b6470}.duty-day-time{margin:4px 0 10px;text-align:center;color:#6d7887;font-size:.85rem}.duty-assignment-chip{display:flex;gap:10px;align-items:center;justify-content:center;text-align:center;border-radius:10px;min-height:52px;padding:10px;background:#f8fafc}.duty-assignment-chip.unassigned{background:#fff1f2}.duty-assignment-chip.empty{justify-content:center;color:var(--muted);font-style:italic}.directory-avatar.xsmall{width:34px;height:34px;border-radius:999px}.directory-avatar.xsmall span{font-size:.8rem}@media (max-width:900px){.admin-grid,.filters-grid,.gradebook-section-group-grid,.identity-grid,.mi-grid,.mini-stats,.pastoral-fields-grid,.stats-row,.student-assignment-grid,.timetable-admin-grid{grid-template-columns:1fr}.subject-check-row{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{flex-direction:column}.roster-hero-title{white-space:normal}.panel-heading,.portal-toolbar{flex-direction:column;align-items:flex-start}.directory-access-grid,.directory-card-grid,.directory-filters,.directory-form-grid,.directory-grid,.directory-hero,.directory-info-grid,.directory-modal-actions,.directory-modal-grid,.directory-search-grid,.duty-roster-grid,.duty-week-grid.columns-5,.legacy-filter-bar,.timetable-teacher-row,.timetable-time-row,.timetable-toolbar{grid-template-columns:1fr}.students-mi-summary{flex-direction:column;align-items:flex-start}.directory-hero{align-items:stretch}.directory-team-header{align-items:flex-start;flex-direction:column}.specialist-student-grid{grid-template-columns:1fr}.specialist-register-toolbar{flex-direction:column;align-items:stretch}.specialist-day-header,.specialist-launch-panel{flex-direction:column;align-items:flex-start}.specialist-schedule-grid{grid-template-columns:1fr}.specialist-stat-card{grid-column:span 1}.legacy-filter-label{font-size:1rem;padding-right:0}.brand-lockup{align-items:flex-start}.brand-lockup,.duty-card-top,.pastoral-card-header{flex-direction:column}.directory-card-header,.directory-modal-header,.staff-management-header{align-items:flex-start}.timetable-export-surface{min-width:1160px;padding:16px}.timetable-export-bar{flex-direction:column;align-items:flex-start}}@page{size:landscape;margin:6mm}@media print{body *{visibility:hidden}body[data-print-variant=parent] .timetable-parent-export-surface,body[data-print-variant=parent] .timetable-parent-export-surface *,body[data-print-variant=standard] .timetable-export-surface,body[data-print-variant=standard] .timetable-export-surface *{visibility:visible}body[data-print-variant=parent] .timetable-parent-export-shell{position:static;left:auto;top:auto;pointer-events:none}body[data-print-variant=parent] .timetable-parent-export-surface,body[data-print-variant=standard] .timetable-export-surface{position:absolute;left:0;top:0;width:100%;min-width:0;border:0;border-radius:0;box-shadow:none;padding:12mm}body[data-print-variant=parent] .timetable-parent-grid,body[data-print-variant=standard] .timetable-master-grid{min-width:0}body[data-print-variant=parent] .timetable-parent-export-surface{padding:0;width:100%}body[data-print-variant=parent] .timetable-parent-header{margin-bottom:8px;gap:12px}body[data-print-variant=parent] .timetable-parent-logo{width:120px}body[data-print-variant=parent] .timetable-parent-title{font-size:1.2rem}body[data-print-variant=parent] .timetable-parent-grid{grid-template-columns:78px repeat(5,minmax(0,1fr));grid-auto-rows:minmax(34px,auto);gap:4px}body[data-print-variant=parent] .timetable-parent-block,body[data-print-variant=parent] .timetable-parent-corner,body[data-print-variant=parent] .timetable-parent-day,body[data-print-variant=parent] .timetable-parent-shared-bar,body[data-print-variant=parent] .timetable-parent-slot,body[data-print-variant=parent] .timetable-parent-time{border-radius:8px}body[data-print-variant=parent] .timetable-parent-day{padding:6px 4px;font-size:.72rem}body[data-print-variant=parent] .timetable-parent-time{padding:4px;font-size:.58rem;line-height:1.1}body[data-print-variant=parent] .timetable-parent-block,body[data-print-variant=parent] .timetable-parent-shared-bar{padding:6px 7px;font-size:.62rem;line-height:1.05}body[data-print-variant=standard] .timetable-block-card{cursor:default;page-break-inside:avoid;break-inside:avoid}body[data-print-variant=standard] .timetable-block-edit{display:none}}