@font-face{font-family:system-fallback;src:local('Avenir Next')}*{box-sizing:border-box}body{margin:0;background:#f4f5f0;color:#203c35;font-family:system-fallback,system-ui,sans-serif;font-size:15px}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:9px;padding:11px 17px;background:#1a5145;color:white;font-weight:650}button:hover{filter:brightness(.94)}button:disabled{opacity:.5;cursor:wait}.secondary{background:#e7ece5;color:#25493f}.danger{background:#f8e5df;color:#8c3527}.small{padding:7px 10px;font-size:13px}a{color:#1d6755}h1,h2,h3,p{margin-top:0}h1{font-family:Georgia,serif;font-size:36px;font-weight:500;letter-spacing:-1px;margin-bottom:10px}h2{font-size:20px;letter-spacing:-.4px}h3{font-size:16px}p{line-height:1.6;color:#64766d}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:750;color:#758b7a;margin-bottom:13px}.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#163c35;color:#eef1df;padding:32px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:0 10px 32px;font-family:Georgia,serif;font-size:22px}.brand img{width:36px}.brand small{display:block;font:10px system-ui;letter-spacing:2px;color:#b5c9b6;margin-top:5px}.sidebar nav{display:grid;gap:7px}.sidebar nav button{text-align:left;background:transparent;color:#c7d8ca;padding:13px 16px;font-weight:500}.sidebar nav button.active{background:#31584a;color:#fff}.nav-num{display:inline-block;min-width:28px;opacity:.65;font-size:12px}.sidebar footer{margin-top:auto;padding:24px 10px 0;font-size:12px;line-height:1.7;color:#bed0c1;overflow-wrap:anywhere}.sidebar footer button{margin-top:12px}.main{min-width:0;padding:40px 44px 60px;max-width:1700px;width:100%;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dce3d7;padding-bottom:20px;margin-bottom:35px;gap:16px;color:#6a7f70;font-size:12px}.badge{border:1px solid #ccd9c9;border-radius:30px;padding:7px 12px;display:inline-block;background:#eef2e7;color:#3c654f;font-size:12px;white-space:nowrap}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.page-head p{margin-bottom:0;max-width:740px}.card{background:#fff;border:1px solid #dfe5da;border-radius:16px;padding:26px;margin-bottom:22px;box-shadow:0 3px 6px #17382903}.hero{background:#e7eddf;position:relative;overflow:hidden;padding:34px;border:1px solid #d6e0cc}.hero h2{font:30px Georgia,serif;max-width:550px}.hero p{max-width:650px}.hero .eyebrow{color:#517044}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}.stat{padding:22px;border-radius:13px;background:#fff;border:1px solid #dfe5da}.stat strong{font:34px Georgia,serif;display:block;margin:7px 0}.stat span{font-size:12px;color:#738377}.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;align-items:end}label{display:grid;gap:7px;font-size:13px;color:#3d5849;font-weight:600}input,select{width:100%;min-width:0;background:#fff;border:1px solid #cdd8c9;border-radius:8px;color:#203c35;padding:10px 12px}input:focus,select:focus{outline:2px solid #96b99a;outline-offset:1px}fieldset{border:1px solid #dce3d7;border-radius:8px;margin:16px 0;padding:14px;display:flex;gap:18px;flex-wrap:wrap}legend{font-size:13px}fieldset label,.check{display:flex;align-items:center;gap:7px}input[type=checkbox]{width:17px;height:17px;accent-color:#1a5145}.table-wrap{overflow:auto;border-radius:10px;border:1px solid #e0e6dc}table{width:100%;border-collapse:collapse;text-align:left}th{background:#f3f6ee;color:#70816e;text-transform:uppercase;letter-spacing:1px;font-size:10px;padding:13px 15px;white-space:nowrap}td{padding:15px;border-top:1px solid #edf0e7;font-size:13px}td small{display:block;color:#85907f;margin-top:3px}.empty{padding:35px;text-align:center;color:#758373}.muted{color:#7c8a7d;font-size:13px}.note{padding:16px;border-left:3px solid #b9a36b;border-radius:0 9px 9px 0;background:#faf5e8;line-height:1.6;margin-bottom:20px;color:#71613e;font-size:13px}.error{background:#fff0e8;color:#913e29;border-color:#cd795a}.success{background:#edf5e7;color:#3c6547;border-color:#7ca374}.lunch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.lunch-card{background:#f5f7f1;border:1px solid #dce4d5;border-radius:12px;padding:22px}.lunch-card strong{font:30px Georgia,serif;display:block;margin:14px 0}.lunch-card p{font-size:13px;margin-bottom:8px}.lunch-card.early{border-color:#b9b37a;background:#f7f4e8}.auth{max-width:460px;margin:9vh auto;padding:0 20px}.auth .brand{color:#163c35;justify-content:center}.auth h1{font-size:30px}.auth label{margin:18px 0}.auth button[type=submit]{width:100%;margin:8px 0}.auth p{font-size:14px}.auth-foot{text-align:center;font-size:12px;color:#788676}.form-error{color:#9a3924;line-height:1.5;font-size:13px;margin:10px 0}.hidden{display:none!important}#toast{position:fixed;bottom:22px;right:22px;max-width:min(480px,90vw);background:#193f34;color:#fff;border-radius:10px;padding:0;z-index:99;box-shadow:0 8px 30px #0002}#toast.show{padding:15px 20px}.loading{text-align:center;padding:15vh 20px}dialog{border:1px solid #d3ddce;border-radius:16px;padding:28px;max-width:600px;width:calc(100% - 32px);color:#203c35}dialog::backdrop{background:#163c3577}dialog input{margin:12px 0}.schedule{min-width:1000px}.schedule th:first-child,.schedule td:first-child{position:sticky;left:0;background:#f7f9f2;z-index:1;min-width:180px}.schedule td{padding:6px;min-width:95px}.slot{width:100%;min-height:54px;background:#f2f4ee;color:#5e7060;padding:8px;font-size:11px;font-weight:500;border:1px solid transparent;border-radius:6px;line-height:1.5}.slot.prep{background:#e5eedb;color:#466a36}.slot.lunch{background:#f9edcf;color:#866624}.slot.spoc{background:#eee5f5;color:#73518d}.slot.teaching{background:#e5eef2;color:#3c6675}.slot.locked{border:2px solid #8a7444}.schedule td small{font-size:10px}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.tabs button{background:#e9ede3;color:#59704e}.tabs button.active{background:#284f41;color:white}.list{margin:0;padding-left:19px;line-height:1.8;font-size:13px}.section-gap{margin-top:22px}.help{font-size:12px;color:#788978;line-height:1.6;margin-top:8px}.legend{display:flex;gap:15px;margin:16px 0;flex-wrap:wrap;font-size:12px;color:#6b7a6a}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#c4d6b2;margin-right:5px}.step{display:flex;gap:15px;align-items:center;padding:16px 0;border-bottom:1px solid #edf0e7}.step:last-child{border-bottom:0}.step b{background:#eef2e7;border-radius:50%;width:30px;height:30px;display:grid;place-items:center;flex-shrink:0;font-size:12px}.step strong{display:block;font-size:14px}.step small{color:#7c8a76;display:block;margin-top:4px}.step button{margin-left:auto}.rule-form{margin-bottom:20px}.archived{opacity:.65}.inline-title{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:20px}.inline-title h2{margin:0}@media(max-width:1000px){.shell{grid-template-columns:195px 1fr}.sidebar{padding:24px 12px}.main{padding:28px 24px}.two{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}.brand{font-size:19px}}@media(max-width:650px){.shell{display:block}.sidebar{position:relative;height:auto;padding:16px}.brand{padding:0 0 16px}.sidebar nav{display:flex;overflow:auto;gap:4px}.sidebar nav button{white-space:nowrap;font-size:12px;padding:10px}.nav-num{display:none}.sidebar footer{display:none}.main{padding:22px 16px}.topbar{margin-bottom:24px;padding-bottom:14px}.topbar .badge{display:none}h1{font-size:30px}.page-head{align-items:flex-start}.card{padding:20px}.hero{padding:25px}.lunch-grid{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:18px}.form-grid{grid-template-columns:1fr}.page-head{flex-wrap:wrap}}@media print{.sidebar,.topbar,.no-print,#toast{display:none!important}.shell{display:block}.main{padding:0;max-width:none}.table-wrap{overflow:visible}.card{box-shadow:none;border:0;padding:0}.schedule{min-width:0}.slot{color:#000!important;border:1px solid #aaa}.schedule td{min-width:0;padding:2px}.schedule th{padding:5px}.schedule th:first-child,.schedule td:first-child{min-width:100px;position:static}.page-head{margin-bottom:12px}@page{size:landscape;margin:.3in}}
textarea{font:inherit;width:100%;border:1px solid #cdd8c9;border-radius:8px;padding:12px;color:#203c35;resize:vertical}.proposal-note{white-space:pre-wrap}#modal:has(#period-form){max-width:650px}.slot:disabled{cursor:default;opacity:1}details summary{cursor:pointer;font-size:13px;color:#41634b}details[open]>summary{margin-bottom:12px}
.master-summary{min-width:1050px;border:2px solid #26352d;table-layout:auto}.master-summary th{background:#d0d2ce;color:#15251d;font-size:12px;text-align:center;letter-spacing:0;padding:14px 10px;border:1px solid #334638}.master-summary td{border:1px solid #485448;text-align:center;color:#17251d;font-size:13px;line-height:1.3;padding:10px 8px}.master-summary td:nth-child(-n+5){font-weight:700}.master-summary .grade-3K,.master-summary .grade-PreK{background:#8ee8e5}.master-summary .grade-K{background:#ded5eb}.master-summary .grade-1{background:#f6d4af}.master-summary .grade-2{background:#dcebd4}.master-summary .grade-3{background:#ffeba7}.master-summary .grade-4{background:#eaa9a8}.master-summary .grade-5{background:#abcce9}.master-summary .grade-pending{background:#eee8d7}@media print{.print-master .main>*:not(.master-report){display:none!important}.print-master .main .master-report{display:block!important}.print-master .master-report .no-print{display:none!important}.master-summary{min-width:0;width:100%;font-size:9px;print-color-adjust:exact;-webkit-print-color-adjust:exact}.master-summary th{font-size:9px;padding:5px 3px}.master-summary td{font-size:9px;padding:4px 3px;line-height:1.2}.master-summary thead{display:table-header-group}.master-summary tr{break-inside:avoid}.master-report h2{font-size:16px}.master-report p{font-size:9px;margin-bottom:8px}}
.slot.activity{background:#eee5f5;color:#73518d}
.cluster-week{margin-top:28px;break-inside:avoid}.cluster-title{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#f1d2d0;padding:13px 16px;border:1px solid #59645a}.cluster-title h3{margin:0}.cluster-title span{font-size:12px;white-space:nowrap}.cluster-table{min-width:900px;width:100%;table-layout:fixed;border-collapse:collapse}.cluster-table th{background:#fff2ce;text-align:center;border:1px solid #748073;padding:9px 5px;font-size:12px}.cluster-table th small,.weekly-slot small{display:block;font-size:10px;font-weight:400;margin-top:4px}.cluster-table tbody th{background:#fff;width:105px}.cluster-table td{padding:3px;border:1px solid #8c9789;text-align:center}.weekly-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:56px;padding:7px 4px;font-size:12px;font-weight:600;border-radius:3px;background:#edf4f8;color:#234536;overflow-wrap:anywhere}.weekly-slot.prep{background:#dcebd4}.weekly-slot.lunch{background:#fff1c6}.weekly-slot.activity,.weekly-slot.spoc{background:#f1d7e6}.weekly-slot.duty{background:#fff;border:2px dashed #738570;color:#4c6651}.weekly-slot.unscheduled{background:#fbe3db}.weekly-slot.class-match{background:#ffed89;outline:3px solid #9d7020;outline-offset:-3px}.weekly-slot.locked{box-shadow:inset 0 0 0 2px #355343}.prep-check{margin-top:24px}.prep-ok{background:#e5f2df}.prep-missing{background:#ffe5d9;color:#7a3522}@media print{.print-clusters .main>*:not(.snapshot-report){display:none!important}.cluster-title,.cluster-table,.weekly-slot{print-color-adjust:exact;-webkit-print-color-adjust:exact}.cluster-week{margin-top:14px}.cluster-table{min-width:0}.cluster-title{padding:7px}.cluster-title h3{font-size:13px}.weekly-slot{min-height:30px;font-size:10px}.cluster-table th{font-size:10px;padding:5px}.cluster-table td{padding:1px}}
.repair-preview{margin:20px 0;padding:20px;border:2px solid #6e9272;background:#f0f6eb;border-radius:12px}.repair-preview h3{margin-bottom:8px}.repair-preview td{font-size:12px}.repair-preview details{margin:12px 0}
