:root{font-family:Segoe UI,Arial,sans-serif;color:#183a36;background:#f4f6f3;font-size:14px}*{box-sizing:border-box}body{margin:0}main{max-width:1550px;margin:auto;padding:36px}header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:32px}.eyebrow{letter-spacing:2px;font-size:11px;font-weight:700;color:#53766e}h1{font-size:36px;letter-spacing:-1px;margin:12px 0}header p{color:#6b7c76}button,select,input{font:inherit;border:1px solid #cbd7d1;border-radius:8px;padding:10px 12px;background:white;color:#183a36}button{cursor:pointer}button:hover{border-color:#267563;background:#edf5f1}button:disabled{cursor:default;opacity:.6}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #69a7dc;outline-offset:2px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:18px;background:white;border:1px solid #dce4df;border-radius:12px}.toolbar label{display:inline-flex;gap:8px;align-items:center;margin-right:10px}.legend{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:22px 0;color:#61726c}.legend span{padding:6px 9px;border-radius:5px}.office{background:#f1f4f2;color:#65756e}.leave{background:#fce7da;color:#9a4f24}.remote{background:#e1efef;color:#28686d}.school{background:#efe8fc;color:#75559b}.holiday{color:#ad6034}#status{min-height:20px;color:#467166}.week{margin:24px 0 32px}.week h2{font-size:18px;font-weight:600}.tablewrap{overflow:auto;border:1px solid #d9e2dc;border-radius:12px;background:white}table{width:100%;border-collapse:collapse;min-width:1030px;table-layout:fixed}th,td{border-bottom:1px solid #e6ece8;border-right:1px solid #e6ece8;padding:8px}thead th{height:82px;font-weight:600;text-align:center}th:first-child{width:175px;text-align:left;padding-left:16px;position:sticky;left:0;background:white;z-index:1}thead th:first-child{color:#76847c;font-size:12px}small{display:block;font-size:10px;font-weight:500;margin-top:5px;padding:3px;border-radius:4px}.weekend{background:#f0f2ef}.today{box-shadow:inset 0 4px #2f806c}.cell{display:flex;flex-direction:column;gap:4px;width:100%;border:0;padding:0;background:transparent}.cell span{font-size:11px;padding:8px 4px;width:100%;border-radius:4px;text-align:left}.cell:disabled{opacity:.65}footer{color:#6d7d74;font-size:12px;line-height:1.7}footer a{margin-left:12px;color:#2a7565}dialog{border:0;border-radius:16px;padding:28px;max-width:450px;width:90%;box-shadow:0 20px 70px #1234}dialog::backdrop{background:#17393070}dialog h2{font-size:20px}dialog label{display:flex;flex-direction:column;gap:5px;margin:12px 0}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.primary{background:#246e5c;color:white}#names{max-height:50vh;overflow:auto}@media(max-width:700px){main{padding:18px}header{align-items:flex-start;flex-direction:column}h1{font-size:29px}.toolbar{align-items:flex-start}.toolbar label{margin:5px 0}}
:root{--name-width:180px;--day-width:120px;--weekend-width:42px}
.tablewrap{overscroll-behavior-x:contain;scrollbar-color:#83a599 #edf1ed;scrollbar-width:auto}
.tablewrap:focus-visible{outline:3px solid #69a7dc;outline-offset:3px}
table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}
col.name-col{width:var(--name-width)}col.day-col{width:var(--day-width)}col.weekend-col{width:var(--weekend-width)}
tbody th,tbody td{height:40px;padding:3px 5px}
tbody th:first-child,thead .week-head th:first-child{width:var(--name-width);min-width:var(--name-width);max-width:var(--name-width);padding:0 12px;text-align:left;position:sticky;left:0;background:#fff;z-index:3;box-shadow:3px 0 5px #183a3612}
tbody th:first-child{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
thead th{height:64px;padding:6px 4px;font-size:12px}
thead .week-head th{height:34px;background:#e8f0eb}
thead th.week-group{width:auto;position:static;left:auto;text-align:left;padding-left:12px;color:#315e50;border-left:2px solid #b9cdc1}
thead tr:not(.week-head) th:first-child{width:auto;position:static;left:auto;background:inherit;text-align:center;padding-left:4px;z-index:auto}
thead tr:not(.week-head) th:first-child.today{box-shadow:inset 0 4px #2f806c}
.week-start{border-left:2px solid #b9cdc1}
.cell{height:32px;flex-direction:row;gap:2px;align-items:stretch;border-radius:4px}
.cell span{display:flex;align-items:center;justify-content:center;width:50%;padding:3px 2px;font-size:11px;white-space:nowrap}
.weekend-rest{display:block;text-align:center;color:#97a39b;font-size:12px}
small{max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px;margin:3px auto 0;padding:2px}
.weekend small{max-width:32px}
.scrollhint{font-size:12px;color:#65796e;margin:0 0 10px}
thead tr:not(.week-head) th:first-child{color:#183a36}
@media(max-width:700px){:root{--name-width:140px}.scrollhint{line-height:1.6}}
main{padding:18px 24px}header{margin:0 0 14px;gap:12px}h1{font-size:22px;letter-spacing:-.4px;margin:0}.eyebrow{font-size:10px;letter-spacing:1px}
.week{margin:0}.week h2{font-size:14px;margin:0 0 10px}
tbody th,tbody td{height:28px;padding:2px 5px}.cell{height:22px;gap:2px}.cell span{padding:0;min-width:0}
.cell .leave{background:#f4c4a5;background-image:repeating-linear-gradient(135deg,transparent,transparent 4px,#9a4f241c 4px,#9a4f241c 5px)}
.cell .remote{background:#afd4d7;background-image:radial-gradient(#28686d38 .8px,transparent .8px);background-size:5px 5px}
.legend{margin:10px 0;gap:10px;font-size:11px}.legend span{padding:4px 7px}
.toolbar{padding:8px 10px;gap:8px;justify-content:flex-start;border-radius:8px}.toolbar button,.toolbar select,.settings summary{padding:6px 9px;font-size:12px;min-height:30px}.toolbar label{font-size:12px;margin:0;gap:6px}.navigation,.filters{display:flex;align-items:center;gap:6px}.settings{margin-left:auto}.settings summary{cursor:pointer;border:1px solid #cbd7d1;border-radius:6px;background:white}.settings-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.settings[open]{flex-basis:100%}.settings[open] summary{width:max-content}
#status{font-size:11px;min-height:16px;margin:8px 0}footer{font-size:10px;line-height:1.5}thead th{height:56px}thead .week-head th{height:28px}
@media(max-width:700px){main{padding:12px}header{flex-direction:row;align-items:center;flex-wrap:wrap;margin-bottom:10px}h1{font-size:20px}.toolbar label{margin:0}.toolbar{gap:6px}.settings{margin-left:0}.legend{gap:6px}.eyebrow{font-size:9px}}
:root{--day-width:60px;--weekend-width:21px}
table{min-width:0}thead th{overflow:hidden}thead small{max-width:50px}.weekend small{max-width:15px}.weekend{padding-left:1px;padding-right:1px;font-size:9px}
tbody td{position:relative;padding-left:3px;padding-right:3px}.cell{gap:1px;border-radius:3px}.cell span{border-radius:3px}
tbody th:first-child{overflow:visible}.person-name{display:inline-block;max-width:calc(100% - 42px);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.alert-count{float:right;font-size:10px;color:#819087;font-weight:400}.alert-count.has-alert{color:#a75a14;font-weight:700}
.day-alert{position:absolute;right:1px;top:1px;min-height:0;width:16px;height:16px;padding:0;border:1px solid #d5a455;border-radius:3px;background:#fff5d9;color:#955508;font-size:11px;line-height:14px;z-index:1}.day-alert:hover{background:#ffe7ac}
.not-arrived{background:repeating-linear-gradient(135deg,#f4f5f2,#f4f5f2 4px,#e7ebe5 4px,#e7ebe5 5px)}
tfoot th,tfoot td{height:28px;padding:3px;font-size:12px;background:#e7efe9;text-align:center;font-weight:600;border-top:2px solid #b9cdc1}
tfoot th:first-child{position:sticky;left:0;z-index:3;background:#e7efe9;text-align:left;padding-left:12px;box-shadow:3px 0 5px #183a3612}
.person-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(130px,1fr);gap:10px}.person-fields label{font-size:12px;margin:5px 0}.person-fields input{min-width:0;width:100%;padding:7px}.dialog-help{font-size:12px;line-height:1.5;color:#61756a}textarea{font:inherit;border:1px solid #cbd7d1;border-radius:6px;padding:8px;resize:vertical;width:100%}
thead tr:not(.week-head) th{position:relative;height:40px}
thead tr:not(.week-head) th:first-child{position:relative}
.holiday-legend{background:#fbe5c9;color:#895627}
thead .school-day::before{content:'';position:absolute;left:0;right:0;top:0;height:5px;background:#a486ce}
thead .today,thead tr:not(.week-head) th:first-child.today{box-shadow:inset 0 -3px #2f806c}
thead tr:not(.week-head) th.public-holiday,tbody td.public-holiday,tfoot td.public-holiday{background-color:#fbe5c9}
.public-holiday .cell .office{background:transparent}
.public-holiday.not-arrived{background-image:repeating-linear-gradient(135deg,transparent,transparent 4px,#ad794b20 4px,#ad794b20 5px)}
.half-cell{width:50%;min-width:0;height:22px;padding:0;border:0;border-radius:3px;touch-action:none;user-select:none;cursor:crosshair}
.half-cell.half-selected{outline:2px solid #286eae;outline-offset:-2px;box-shadow:inset 0 0 0 20px #3286c92b}
.half-cell:focus-visible{outline:2px solid #286eae;outline-offset:-2px}
.half-cell:disabled{cursor:default;opacity:.65}
#editError{color:#a04725;font-size:12px;min-height:0}
.leave{background:#efd5ea;color:#85447e}.cell .leave{background-color:#d7a9d4;background-image:repeating-linear-gradient(135deg,transparent,transparent 4px,#784b8424 4px,#784b8424 5px)}
.half-cell.pending{border:1px dashed #72645c;opacity:.65}.half-cell.approved{border:1px solid transparent}.pending-legend{border:1px dashed #72645c;border-radius:3px}.approved-legend{border:1px solid transparent}
.toolbar{align-items:center}.navigation{flex:none}.settings-panel{flex-basis:100%;display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid #dce4df;padding-top:8px}.settings-panel[hidden],[hidden]{display:none!important}#settingsToggle{font-size:19px;padding:3px 7px;width:32px;min-width:32px}
.wide-dialog{max-width:850px}.person-links{grid-column:1/-1;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:11px}.person-links a{color:#286d61}.person-links button{padding:3px 7px;font-size:11px}.person-fields{padding-bottom:10px;margin-bottom:8px;border-bottom:1px solid #dce4df}.person-fields label:last-of-type{grid-column:1/-1}
.period-fields{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.period-fields label{flex:1}.summary-table{width:100%;table-layout:auto;min-width:600px}.summary-table th,.summary-table td{position:static!important;left:auto!important;width:auto!important;min-width:0!important;max-width:none!important;padding:8px;height:auto;white-space:normal!important;font-size:12px;box-shadow:none!important}.summary-table th{background:#edf2ee;text-align:left}.summary-table td{text-align:right}#statsResults{overflow:auto}
.request-row{display:flex;gap:14px;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #dce4df}.request-row p{font-size:12px;margin:5px 0;white-space:pre-wrap}.request-actions{display:flex;gap:6px}.request-alert{color:#985918}#requestList{max-height:60vh;overflow:auto}#reviewError,#peopleError,#statsError{font-size:12px;color:#a04725}
@media(max-width:550px){.request-row{align-items:flex-start;flex-direction:column}.request-actions{align-self:flex-end}.period-fields{gap:8px}}
.primary:hover{background:#1f604f;color:#fff}
.access-message{flex-basis:100%;font-size:12px;margin:0 0 3px;color:#547263}.access-link{font-size:12px;padding:7px 9px;border:1px solid #cbd7d1;background:#edf4ef;color:#245e50;border-radius:6px;text-decoration:none}
.recovery{background:#dae7fb;color:#466eab}.cell .recovery{background:#b8ceef;background-image:repeating-linear-gradient(0deg,transparent,transparent 4px,#466eab25 4px,#466eab25 5px)}
button.alert-count{padding:0 2px;border:0;background:transparent;height:22px;min-width:30px;border-radius:3px;line-height:20px}button.alert-count:hover{background:#fff0d8;color:#8b5419}
.annual-alert-row{padding:10px 0;border-bottom:1px solid #dce4df}.annual-alert-row a{color:#246f9f;font-size:14px;font-weight:600}.annual-alert-row p{margin:5px 0;font-size:12px;line-height:1.5;white-space:pre-wrap}#annualAlertsList{max-height:60vh;overflow:auto}
td.context-day{box-shadow:inset 0 0 0 2px #2d78ba}tbody th.context-person{background:#edf5fb}
.legend-popup{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0}.legend-popup span{padding:8px;font-size:12px}#calendarControl{gap:6px}#calendarError{font-size:12px;color:#a04725}
.holiday-page{max-width:900px}.holiday-page header a{font-size:12px;color:#286e60}.holiday-page input{width:95px}.holiday-page footer a{margin:0 15px 0 0}.holiday-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 8px;border-bottom:1px solid #dce4df}.holiday-list-row p{margin:5px 0 0;font-size:12px;color:#63796b}.holiday-tag{padding:5px 8px;border-radius:4px;background:#e8f0eb;font-size:11px;white-space:nowrap}.holiday-list-row.uncertain .holiday-tag{background:#fff1d5;color:#8a5e26}#holidaySummary{font-size:12px;color:#547263;margin:16px 0}
@media(max-width:500px){.holiday-list-row{align-items:flex-start;flex-direction:column}.holiday-page h1{font-size:19px}}
.legend-popup .exceptional-legend{grid-column:1/-1;text-align:center;margin-top:4px;color:#8a591e}
.holiday-list-row{display:grid;grid-template-columns:220px minmax(0,1fr) 80px;gap:10px;min-height:30px;padding:5px 8px;font-size:12px;align-items:center}
.holiday-name{font-size:11px;color:#587165}.holiday-tag{font-size:10px;padding:3px 5px;text-align:center}
.holiday-weekend{background:#ffedce;border-left:4px solid #d38a2b;color:#714713;border-bottom-color:#edc99a}.holiday-weekend .holiday-name{color:#815b28}.holiday-weekend .holiday-tag{background:#a96718;color:#fff;font-weight:600}
.compact-holidays{max-width:760px;padding:20px}.compact-holidays h2{margin:0 0 14px}.compact-holidays .toolbar{padding:6px 8px}.compact-holidays input{width:88px;padding:5px 8px}#popupHolidaySummary{font-size:12px;margin:10px 0;color:#547263}.compact-holidays .actions{margin-top:12px}
.holiday-page{max-width:900px}.holiday-page header{margin-bottom:12px}.holiday-page #holidaySummary{margin:10px 0}.holiday-page .dialog-help{margin:12px 0}
@media(max-width:550px){.holiday-list-row{grid-template-columns:minmax(115px,1fr) minmax(80px,1fr) 63px;gap:5px;padding:5px;font-size:11px}.holiday-name{font-size:10px}.holiday-tag{font-size:9px;padding:3px}.compact-holidays{padding:16px;width:96%}.compact-holidays h2{font-size:18px}}
.compact-holidays .toolbar{align-items:center}
.compact-holidays .toolbar label{display:flex;flex-direction:row;align-items:center;gap:8px;margin:0}
.compact-holidays .toolbar input,.compact-holidays .toolbar button{height:32px;min-height:32px}
.holiday-list-row{border-left:4px solid transparent}
.holiday-list-row.holiday-weekend{border-left-color:#d38a2b}
.people-dialog{max-width:1180px;width:94%;padding:20px}.people-dialog h2{margin:0 0 10px}.people-dialog .dialog-help{margin:8px 0}
.people-dialog .people-columns,.people-dialog .person-fields{display:grid;grid-template-columns:minmax(150px,1fr) 150px minmax(130px,1fr) 175px 100px;gap:8px;align-items:center;padding:5px 6px}
.people-dialog .people-columns{font-size:11px;color:#6b7c70;background:#eef3ef;border-radius:5px;font-weight:600}
.people-dialog #names{max-height:65vh;overflow:auto}.people-dialog .person-fields{margin:0;border-bottom:1px solid #e0e7e2;min-height:42px}
.people-dialog .person-fields label,.people-dialog .person-fields label:last-of-type{margin:0;grid-column:auto;gap:0}
.people-dialog .person-fields input{height:30px;padding:5px 7px;font-size:12px}
.people-dialog .person-links{grid-column:auto;gap:8px;flex-wrap:nowrap;font-size:11px}
.people-dialog .archive-person{height:30px;padding:5px 8px;font-size:11px}
.people-dialog .archived-person{background:#f3f0eb}.people-dialog .archived-person input{color:#8a8275;background:#faf8f4}.people-dialog .archived-person .person-links a{pointer-events:none;color:#9c968a}
.people-dialog .actions{margin-top:12px}.people-dialog #addPerson{margin-right:auto}
@media(max-width:850px){.people-dialog .people-columns{display:none}.people-dialog .person-fields{grid-template-columns:minmax(0,1fr) minmax(130px,1fr);gap:7px;padding:8px 0}.people-dialog .person-links{flex-wrap:wrap}.people-dialog #names{max-height:58vh}.people-dialog .actions{flex-wrap:wrap}.people-dialog #addPerson{margin-right:0}}
.admin-settings-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #cbd7d1;border-radius:7px;background:white;color:#183a36;text-decoration:none;font-size:19px}
footer .file-link{padding:0;margin-left:12px;font-size:10px;border:0;border-radius:0;background:none;text-decoration:underline;color:#2a7565}
.admin-page{max-width:1280px}.admin-heading-links{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.admin-heading-links a{font-size:12px;color:#286e60}
.admin-file-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#edf3ef;border:1px solid #d5e1d8;border-radius:9px;padding:14px;margin:16px 0}.admin-file-bar p{font-size:12px;margin:5px 0 0;color:#62796b}.admin-file-bar strong{font-size:13px}
.admin-block{padding:18px;margin:16px 0;background:white;border:1px solid #dce4df;border-radius:10px}.admin-block h2{font-size:18px;margin:0 0 10px}.admin-data-actions{display:flex;gap:10px;flex-wrap:wrap}
.people-editor .people-columns,.people-editor .person-fields{display:grid;grid-template-columns:minmax(150px,1fr) 150px minmax(130px,1fr) 175px 100px;gap:8px;align-items:center;padding:5px 6px}
.people-editor .people-columns{font-size:11px;background:#eef3ef;color:#6b7c70;border-radius:5px;font-weight:600}.people-editor #names{max-height:none;overflow:visible}.people-editor .person-fields{margin:0;border-bottom:1px solid #e0e7e2;min-height:42px}
.people-editor .person-fields label,.people-editor .person-fields label:last-of-type{margin:0;grid-column:auto;gap:0}.people-editor .person-fields input{height:30px;padding:5px 7px;font-size:12px}
.people-editor .person-links{grid-column:auto;gap:8px;flex-wrap:nowrap;font-size:11px}.people-editor .archive-person{height:30px;padding:5px 8px;font-size:11px}
.people-editor .archived-person{background:#f3f0eb}.people-editor .archived-person input{color:#8a8275;background:#faf8f4}.people-editor .archived-person .person-links a{pointer-events:none;color:#9c968a}.people-editor #addPerson{margin-right:auto}
@media(max-width:850px){.people-editor .people-columns{display:none}.people-editor .person-fields{grid-template-columns:minmax(0,1fr) minmax(130px,1fr);gap:7px;padding:8px 0}.people-editor .person-links{flex-wrap:wrap}.people-editor .actions{flex-wrap:wrap}.people-editor #addPerson{margin-right:0}.admin-file-bar{flex-wrap:wrap}.admin-block{padding:12px}}

.auth-page{max-width:460px;margin:7vh auto;padding:26px;background:white;border:1px solid #d8e3dc;border-radius:12px}.auth-page input{width:100%;box-sizing:border-box}.auth-page label{margin:16px 0}.session-bar{display:flex;align-items:center;justify-content:flex-end;gap:16px;margin:0 0 12px;font-size:12px}.session-bar form{margin:0}.session-bar button{padding:5px 9px}#accountForm{flex-wrap:wrap}#accountList p{margin:6px 0}.auth-page button{margin-top:12px}
