:root{font-family:"Aptos","Segoe UI",system-ui,sans-serif;color:#1b302b;background:#f4f3ed;--ink:#1b302b;--muted:#64736b;--line:#d9dfd6;--paper:#fff;--deep:#17352d;--green:#1d6652;--amber:#9b651c;--red:#a14640}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #98baaa;outline-offset:2px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--deep);color:#f4f7ef;display:flex;flex-direction:column;min-height:100vh;padding:29px 18px 22px}.brand{display:flex;gap:10px;align-items:center;padding:0 9px 32px;color:inherit;text-decoration:none;font-family:Georgia,serif;font-weight:700;font-size:21px;line-height:1.05}.brand small{display:block;font:500 10px "Segoe UI",sans-serif;text-transform:uppercase;letter-spacing:.15em;color:#b0c7b9;margin-top:6px}.brand-symbol{display:grid;place-items:center;width:32px;height:32px;border:1px solid #91aa9c;border-radius:50%;font-family:Georgia,serif;font-size:22px}.main-nav{display:grid;gap:4px}.nav-item{display:flex;justify-content:space-between;width:100%;border:0;border-radius:9px;background:transparent;color:#bdcec2;padding:13px 12px;text-align:left;font-weight:650}.nav-item:hover,.nav-item.active{background:#315346;color:white}.nav-arrow{opacity:.65}.sidebar-bottom{margin-top:auto;padding:18px 10px 2px;border-top:1px solid #496455;display:grid;gap:10px;color:#b9cabd;font-size:12px}.sidebar-bottom a{color:#edf5ed;text-decoration:none}.main{min-width:0}.topbar{height:60px;border-bottom:1px solid var(--line);background:#fafaf6;display:flex;justify-content:space-between;align-items:center;padding:0 clamp(20px,4vw,58px);font-size:12px;color:#65746c;font-weight:650}.topbar-right{display:flex;align-items:center;gap:7px}.live-dot{width:7px;height:7px;background:#4a9876;border-radius:50%}.content{max-width:1500px;margin:0 auto;padding:34px clamp(18px,4vw,58px) 105px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.eyebrow{margin:0 0 7px;color:#6b897b;text-transform:uppercase;letter-spacing:.14em;font-size:10px;font-weight:800}.page-heading h1,.session-heading h2,.section-heading h3,.report-card h2{font-family:Georgia,"Times New Roman",serif;letter-spacing:-.035em}.page-heading h1{font-size:clamp(32px,4vw,49px);font-weight:500;line-height:1.08;margin:0}.session-bar{display:grid;grid-template-columns:minmax(150px,1.4fr) minmax(170px,1.4fr) minmax(155px,.8fr) auto;gap:12px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:13px;padding:17px;margin-bottom:29px;box-shadow:0 4px 20px #16312508}.session-bar label{display:grid;gap:7px;color:#506258;font-size:11px;text-transform:uppercase;letter-spacing:.09em;font-weight:800}.session-bar select,.session-bar input{width:100%;min-height:42px;background:#fafbf7;border:1px solid #d4ddd4;border-radius:7px;padding:8px 10px;color:var(--ink);font-size:14px;font-weight:550;text-transform:none;letter-spacing:normal}.button{border:1px solid transparent;border-radius:8px;padding:10px 16px;min-height:42px;font-size:13px;font-weight:750;white-space:nowrap}.button.primary{background:#235e4b;color:white}.button.primary:hover{background:#184a3b}.button.secondary{background:#e5eee7;color:#1c5b46;border-color:#b9d0bf}.button.quiet{background:#fff;color:#355e4b;border-color:#cbd9cf}.session-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:17px}.session-heading h2{font-size:28px;font-weight:500;margin:0 0 4px}.session-heading p.muted{margin:0;font-size:13px}.session-heading strong{font-size:13px;color:#366b54;white-space:nowrap}.muted{color:var(--muted)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.stat-card{display:flex;flex-direction:column;align-items:flex-start;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:17px 18px;min-height:118px;color:var(--ink)}button.stat-card:hover{border-color:#85ad94;box-shadow:0 6px 20px #27473412}.stat-card span{font-weight:750;font-size:12px}.stat-card strong{font-family:Georgia,serif;font-size:39px;line-height:1.1;font-weight:500;margin-top:7px}.stat-card small{color:#76847a;font-size:11px;margin-top:auto}.stat-card:nth-child(2) strong{color:var(--amber)}.stat-card:nth-child(3) strong{color:var(--red)}.stat-card.marked strong{color:var(--green)}
.section-heading{display:flex;justify-content:space-between;align-items:end;margin:27px 0 10px}.section-heading h3{font-size:23px;font-weight:500;margin:0}.section-heading .muted{font-size:12px}.attention-list{display:flex;gap:8px;overflow-x:auto;padding:1px 0 4px}.attention-person{flex:0 0 auto;display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #d9dfd6;border-radius:9px;padding:9px 12px;color:var(--ink);min-height:42px;font-size:12px}.attention-person:hover{border-color:#79a68e}.attention-person .tone{width:7px;height:7px;border-radius:50%;background:#b2bcb1}.attention-person.late .tone{background:#cf964c}.attention-person.absent .tone{background:#bd615d}.attention-empty{padding:12px;color:var(--muted);font-size:13px}.work-toolbar{display:flex;gap:12px;align-items:center;margin:28px 0 12px}.view-switch{display:flex;padding:3px;background:#e6ebe4;border-radius:9px}.view-switch button,.filter-row button{border:0;background:transparent;border-radius:6px;padding:9px 15px;color:#597066;font-size:12px;font-weight:750}.view-switch button[aria-pressed=true],.filter-row button[aria-pressed=true]{background:#fff;color:#1f5744;box-shadow:0 1px 5px #17352d17}.search-label{margin-left:auto}.search-label input{width:225px;border:1px solid var(--line);border-radius:8px;background:#fff;min-height:38px;padding:8px 12px;font-size:13px}#save-state{font-size:12px;color:#557364}
.map-workspace{background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.map-topline,.chart-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 17px;border-bottom:1px solid var(--line);font-size:13px}.map-topline b{font-family:Georgia,serif;font-size:19px;font-weight:500}.map-actions{display:flex;align-items:center;gap:6px}.zoom-button{border:1px solid #cbd9cf;border-radius:7px;background:#fff;color:#355e4b;width:32px;height:32px;font-size:18px}.map-help{padding:10px 17px;background:#e8f1e7;color:#315b45;font-size:12px}.map-scroll{overflow:auto;background:#ebeee8;padding:16px;max-height:min(75vh,860px)}.zal-room{position:relative;width:860px;min-width:760px;aspect-ratio:1700/2338;margin:0 auto;background:#fafbf8;box-shadow:0 2px 16px #102d2715;container-type:inline-size}.room-walls{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.room-walls path{fill:none;stroke:#748b7b;stroke-width:4}.room-label{position:absolute;color:#85988a;letter-spacing:.14em;font-size:1.4cqw;font-weight:800}.room-label.front{top:2%;left:40%}.room-label.entrance{bottom:4%;left:37%}.zal-table{position:absolute;border:1.3px solid #6b796d;background:#fdfefb;display:flex;flex-direction:column;z-index:2}.zal-seat{display:flex;flex:1;min-height:0;align-items:center;justify-content:center;text-align:center;border:0;border-top:1px solid #b7c3b7;background:#fff;color:#375045;padding:1px 2px;font-size:1.43cqw;line-height:1.08;overflow:hidden}.zal-seat:first-child{border-top:0}.zal-seat:hover{background:#e6f1e9}.zal-seat .seat-name{display:block;overflow-wrap:anywhere}.zal-seat .seat-num{color:#91a196}.zal-seat.reference{color:#9da9a0;background:#f6f7f3}.zal-seat.present{background:#d9ecdf;color:#155840}.zal-seat.late{background:#f6e5c9;color:#875412}.zal-seat.absent{background:#f2d9d6;color:#93403a}.zal-seat.unmarked{background:#fff;color:#314b3b}.zal-seat.taken{background:repeating-linear-gradient(135deg,#eef0ea 0 4px,#e2e6dd 4px 8px);cursor:not-allowed}.zal-seat.taken:hover{background:repeating-linear-gradient(135deg,#eef0ea 0 4px,#e2e6dd 4px 8px)}.zal-seat.search-match{outline:2px solid #387e59;z-index:4}.zal-staff,.zal-bima,.zal-fixture{position:absolute;z-index:2;border:1.3px solid #879587;background:#eef0e9;display:grid;place-items:center;color:#697d6c;font-family:Georgia,serif;font-size:2.2cqw;font-weight:700}.zal-bima{background:#e3e8dd;color:#465d4b}.zal-fixture{background:#e9eee6}.outside-panel{border-top:1px solid var(--line);padding:16px 18px;display:flex;gap:25px;align-items:start}.outside-panel b{font-size:13px}.outside-panel p{margin:5px 0 0;color:var(--muted);font-size:12px}.outside-list{display:flex;flex-wrap:wrap;gap:7px}.outside-list button{background:#e9f1e9;border:1px solid #c6d9c9;border-radius:20px;padding:6px 10px;color:#265a43;font-size:12px}.chart-bar{border-top:1px solid var(--line);border-bottom:0;color:var(--muted);font-size:12px}
.filter-row{display:flex;gap:4px;margin-bottom:12px;overflow-x:auto}.roster{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.student{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px}.student.dirty{border-color:#c18d3b;background:#fffdf8}.student-top{display:flex;justify-content:space-between;gap:10px;align-items:start}.student-name{font-size:14px;font-weight:750}.student-state{font-size:11px;color:#657a6b}.marks{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.mark{border:1px solid #d0dbd1;background:#f5f8f3;border-radius:6px;color:#345344;padding:7px 9px;font-size:11px;font-weight:750}.mark[aria-pressed=true]{color:white}.mark.present[aria-pressed=true]{background:#257353;border-color:#257353}.mark.late[aria-pressed=true]{background:#a66b20;border-color:#a66b20}.mark.absent[aria-pressed=true]{background:#a34741;border-color:#a34741}.detail{border-top:1px solid #edf0eb;margin-top:10px;padding-top:9px}.detail summary{cursor:pointer;color:#436d51;font-size:12px;font-weight:750}.detail-fields{display:grid;grid-template-columns:95px 1fr;gap:10px;margin-top:11px}.detail-fields label{display:grid;gap:5px;font-size:11px;color:#536b59;font-weight:700}.detail-fields input[type=number],.detail-fields textarea{width:100%;border:1px solid #cdd8ce;border-radius:6px;padding:7px}.detail-fields textarea{min-height:58px;resize:vertical}.detail-fields .excused{display:flex;gap:6px;align-items:center}
.save-bar{position:sticky;bottom:13px;z-index:10;background:#fdfefa;border:1px solid #c7d5c9;border-radius:10px;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;margin-top:18px;box-shadow:0 8px 35px #17352d1a;font-size:12px;color:#52675b}.actions{display:flex;gap:7px}.error{background:#fff0eb;color:#8e3a32;border:1px solid #e5bcb2;border-radius:8px;padding:11px 13px;font-size:13px;line-height:1.4}.report-card{display:grid;grid-template-columns:minmax(220px,1fr) minmax(280px,1.2fr);gap:30px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:30px}.report-card h2{font-size:31px;font-weight:500;margin:0 0 10px}.report-card p:not(.eyebrow){color:var(--muted);font-size:13px;line-height:1.5}.range-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;align-content:start}.range-grid button{min-height:75px;background:#f5f8f3;border:1px solid #d6e1d5;border-radius:9px;color:#225b45;font-family:Georgia,serif;font-size:18px}.range-grid button:hover{background:#e7f0e6}.report-card #report-status{grid-column:1/-1}
.dialog-backdrop{position:fixed;inset:0;background:#14271ecc;z-index:50;display:grid;place-items:center;padding:18px}.seat-dialog{width:min(440px,100%);max-height:min(85vh,700px);overflow:auto;background:#fff;border-radius:14px;padding:20px;box-shadow:0 20px 60px #08140e55}.dialog-head{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:15px}.dialog-head h2{font-family:Georgia,serif;font-size:25px;font-weight:500;margin:0}.icon-button{border:0;background:#edf2ec;border-radius:50%;width:32px;height:32px;font-size:24px;line-height:1;color:#476252}.dialog-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.dialog-actions button{border:1px solid var(--line);border-radius:7px;padding:11px 5px;background:#f6f8f3;color:#345b43;font-weight:750;font-size:12px}.dialog-actions button:hover{background:#e4efe6}.dialog-actions button[data-status=late]{color:#9b651c}.dialog-actions button[data-status=absent]{color:#a14640}.dialog-secondary{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}.dialog-secondary button{background:none;border:0;color:#456a50;font-size:12px;text-decoration:underline}.picker-search{width:100%;padding:9px;border:1px solid var(--line);border-radius:7px;margin-bottom:10px}.picker-list{display:grid;gap:5px;max-height:330px;overflow:auto}.picker-list button{display:flex;justify-content:space-between;gap:10px;background:#f7f9f4;border:1px solid var(--line);border-radius:7px;text-align:left;padding:9px;color:var(--ink);font-size:12px}
.period-overview{margin:0 0 26px}.period-overview .section-heading{margin-top:0}.period-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:9px}.period-card{display:grid;gap:10px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 15px;color:var(--ink)}.period-card:hover{border-color:#8ab39b}.period-card b{font-family:Georgia,serif;font-size:19px;font-weight:500}.period-card span{font-size:12px;color:#687d6b}.period-card .needs{color:#9b651c;font-weight:750}.period-card .complete{color:#2d7555;font-weight:750}
.report-student-label{display:grid;gap:7px;margin-top:22px;font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:800;color:#607b68}.report-student-label select{max-width:360px;min-height:42px;border:1px solid #d4ddd4;border-radius:7px;background:#fafbf7;padding:8px 10px;color:var(--ink);font-size:14px;text-transform:none;letter-spacing:normal}
.patterns-section .section-heading{margin-top:18px}.patterns-section .attention-person{background:#fcf8ef;border-color:#e5d7b9}
.session-tools{display:flex;align-items:center;gap:12px}.session-tools .button{min-height:35px;font-size:11px}
.sidebar .nav-item{text-decoration:none}
@media(max-width:700px){.session-tools{align-items:flex-end;flex-direction:column}.session-tools .button{white-space:normal;text-align:center}}
@media(max-width:1050px){.app-shell{grid-template-columns:180px minmax(0,1fr)}.sidebar{padding-inline:12px}.content{padding-inline:24px}.session-bar{grid-template-columns:1fr 1fr}.roster{grid-template-columns:1fr}}
@media(max-width:700px){.app-shell{display:block}.sidebar{position:fixed;min-height:0;height:58px;bottom:0;left:0;right:0;z-index:30;padding:4px 8px;background:var(--deep)}.brand,.sidebar-bottom{display:none}.main-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;height:100%}.nav-item{justify-content:center;align-items:center;padding:5px 2px;font-size:12px}.nav-arrow{display:none}.topbar{height:48px;padding-inline:18px}.topbar-right{font-size:0}.topbar-right .live-dot{width:8px;height:8px}.content{padding:26px 14px 115px}.page-heading h1{font-size:34px}.session-bar{grid-template-columns:1fr 1fr;padding:13px;gap:10px}.session-bar label:first-child{grid-column:1/-1}.session-bar button{grid-column:1/-1}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stat-card{min-height:100px;padding:12px}.stat-card strong{font-size:33px}.work-toolbar{flex-wrap:wrap}.search-label{margin-left:0;flex:1}.search-label input{width:100%}.map-scroll{padding:8px;max-height:65vh}.outside-panel{display:block}.outside-list{margin-top:10px}.report-card{display:block;padding:19px}.range-grid{margin-top:20px}.range-grid button{font-size:16px;min-height:65px}.save-bar{bottom:65px;flex-direction:column;align-items:stretch}.save-bar #pending{white-space:nowrap}.save-bar .actions{justify-content:flex-end}.session-heading h2{font-size:23px}}
@media(max-width:390px){.session-bar{grid-template-columns:1fr}.session-bar label:first-child,.session-bar button{grid-column:auto}.stat-card small{display:none}.detail-fields{grid-template-columns:1fr}}


/* Today's Sedorim as charts. */
.period-cards:has(.period-card.chart){grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.period-card.chart{display:block;padding:14px 16px;text-align:left;cursor:pointer;border:1px solid var(--line)}
.period-card.chart.now{border-color:#9cc0f0;box-shadow:0 0 0 3px #1667d91a}
.period-card-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.period-card-head b{font-size:16px}
.period-card-head span{color:var(--muted);font-size:12px}
.period-card-head .now-badge{color:#fff;background:var(--blue);border-radius:999px;padding:1px 8px;font-weight:700}
.period-card-head .period-open{margin-left:auto;color:var(--blue);font-weight:600}
