*{box-sizing:border-box}body{margin:0;background:#f3f6fa;color:#15283b;font:15px system-ui,sans-serif}header{background:#132b40;color:white;padding:14px 5vw;display:flex;align-items:center;gap:16px;min-height:62px}header strong{font-size:20px;margin-right:auto}main{width:min(95%,1500px);margin:36px auto}h1{font-size:32px;margin:8px 0 20px}h2{margin-top:0}small{color:#176557;font-weight:bold;letter-spacing:.08em}p{line-height:1.55}label{display:grid;gap:5px;font-weight:600}input,select,button{font:inherit;padding:9px 11px;border:1px solid #bbc9d5;border-radius:7px;background:white;color:#132b40}button{cursor:pointer;font-weight:650}button:disabled{opacity:.5;cursor:wait}#login button,#save,#add{background:#096656;border-color:#096656;color:white}#login{max-width:430px;margin:8vh auto;background:white;border:1px solid #dbe4ec;border-radius:14px;padding:30px;box-shadow:0 8px 28px #132b4012}#login label{margin:14px 0}#login button{width:100%;margin-top:6px}.toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:16px}#allLabel{display:flex;align-items:center;padding:9px 0}#cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.card{flex:1;min-width:160px;padding:16px;background:white;border:1px solid #dbe4ec;border-radius:10px}.card strong{display:block;font-size:23px;margin-top:8px}#grid{overflow:auto;max-height:65vh;border:1px solid #dbe4ec;border-radius:10px;background:white}table{border-collapse:separate;border-spacing:0;width:100%;font-variant-numeric:tabular-nums}th,td{padding:9px 12px;border-bottom:1px solid #e1e9ef;white-space:nowrap;text-align:left}th{position:sticky;top:0;background:#e3edf5;z-index:1}tbody tr:nth-child(even){background:#f8fafc}dialog{border:1px solid #bbc9d5;border-radius:12px;padding:24px;width:min(92vw,700px);max-height:90vh}dialog::backdrop{background:#132b4077}#fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}#status,#editStatus{color:#794715}[hidden]{display:none!important}
th:first-child,td:first-child{position:sticky;left:0;background:#f0f5f9}th:first-child{z-index:2;background:#e3edf5}#login #registerMode{background:white;color:#096656}#requests,#history{max-height:28vh;overflow:auto;margin-bottom:14px}#history div,.adminRow{padding:7px;border-bottom:1px solid #e1e9ef}.adminRow button{margin-left:10px}
#estimate:empty{display:none}#estimate{background:#edf8f5;border-radius:8px;padding:12px;margin-top:16px;display:flex;flex-wrap:wrap;gap:10px 18px}#estimate strong{flex-basis:100%}#estimate span{font-variant-numeric:tabular-nums}
#bulkStatus{color:#794715}
#bulkDialog{width:min(96vw,1440px);max-width:none}.bulkGrid{max-height:58vh;overflow:auto;border:1px solid #dbe4ec;border-radius:8px}.bulkGrid th,.bulkGrid td{padding:6px 8px}.bulkGrid input,.bulkGrid select{width:100%;min-width:104px;padding:7px 8px}.bulkGrid td:last-child input{min-width:175px}.bulkGrid td:first-child{min-width:68px;font-weight:650}.bulkGrid input:focus,.bulkGrid select:focus{outline:2px solid #096656;outline-offset:-1px}

#members{max-height:40vh;overflow:auto;margin-bottom:14px}
tr.offMonth td{background:#fff0f1;color:#9c222e;border-top:1px solid #d14652;border-bottom:1px solid #d14652;text-decoration:line-through;text-decoration-color:#c72d3f}tr.offMonth td input,tr.offMonth td select{border-color:#d87982;color:#9c222e}
.buttonLink{display:inline-block;font:inherit;font-weight:650;padding:9px 11px;border:1px solid #bbc9d5;border-radius:7px;background:white;color:#132b40;text-decoration:none}.memoPage{max-width:850px}.memoPanel{background:white;border:1px solid #dbe4ec;border-radius:10px;padding:16px;margin-bottom:12px}.memoPanel textarea{width:100%;margin:8px 0 12px;padding:10px;border:1px solid #bbc9d5;border-radius:7px;font:inherit;resize:vertical}.memoPanel .toolbar{margin-bottom:0}.memoEntry p{white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:0}
.memoEntryHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.loginBrand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brandMonogram{display:grid;place-items:center;width:39px;height:39px;border-radius:11px;background:linear-gradient(145deg,#c0f5d9,#57cdb4);box-shadow:0 3px 14px #4ed3b847;color:#132b40;font-size:16px;font-weight:900;letter-spacing:-.08em}.brandWordmark{font-size:21px;font-weight:500;letter-spacing:.025em;color:#f2f9ff}.brandWordmark b{font-weight:850;color:#a1f4dc}
.rowActions{display:inline-flex;align-items:center;gap:2px;vertical-align:middle}.rowActions button{padding:5px 3px;font-size:11px;min-width:24px;line-height:1.15;border-radius:5px}.rowActions .rowDelete{color:#9c222e;border-color:#e2abb0;background:#fff4f5}.rowActions .rowDelete:hover{background:#ffe2e5}
.rowActions .rowSelect{margin:0 0 0 3px;width:14px;height:14px;accent-color:#096656;cursor:pointer}#bulkDelete:not(:disabled){color:#9c222e;border-color:#e2abb0;background:#fff4f5}
#table tr.completedRow td{background:#fff0a3}.completionCheck{width:16px;height:16px;margin:0;accent-color:#927000;cursor:pointer}
.historyFailed,.historySuccess{display:inline-block;padding:2px 7px;border-radius:6px}.historyFailed{color:#992634;background:#ffe7ea}.historySuccess{color:#14614f;background:#e4f6ec}#historyFilter{margin-bottom:8px}
.scheduleButton{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:8px 16px;background:#e3f4ee;color:#134e42;border-color:#b6dcd1;font-weight:750}.scheduleButton span{font-size:25px;line-height:1}.scheduleButton:hover{background:#d0ece3}
.workspaceOverview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,620px);gap:16px;align-items:start;margin-bottom:14px}#schedulePanel{background:#fff;border:1px solid #dbe4ec;border-radius:10px;padding:12px}.calendarHeader{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.calendarHeader button{padding:3px 11px;font-size:19px}.calendarDays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;text-align:center}.calendarDays span{font-size:12px;color:#526779}.calendarDays button{padding:3px 0;font-size:13px;border-color:transparent}.calendarDays button[aria-pressed=true]{background:#096656;color:white}.calendarDays button:hover{border-color:#78b9a9}#scheduleStatus{margin:8px 0 0;font-size:13px}#scheduleList{max-height:125px;overflow:auto;margin:5px 0 0;padding-left:19px;font-size:13px}@media(max-width:740px){.workspaceOverview{grid-template-columns:1fr}}
.scheduleAmounts{color:#14614f;font-weight:650;margin:1px 0 6px;font-variant-numeric:tabular-nums}
#scheduleRemarks h3{margin:10px 0 5px;font-size:13px}#scheduleRemarksList{max-height:150px;overflow:auto;margin:0;padding-left:19px;font-size:13px}#scheduleRemarksList p{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0 7px}
.scheduleTotals{display:inline;color:#14614f;font-size:12px;font-variant-numeric:tabular-nums}
#schedulePanel{min-width:0;scroll-margin-top:12px}header{flex-wrap:wrap}main,#workspace,.workspaceOverview,.workspaceOverview>div{min-width:0}@media(max-width:740px){main{width:calc(100% - 24px);margin:16px auto}.workspaceOverview{display:flex;flex-direction:column}.workspaceOverview>div,#schedulePanel{width:100%}.calendarDays button{min-height:36px}.toolbar{max-width:100%}}

#metricsDialog{width:min(94vw,1050px)}.metricsHeader{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.metricsHeader h2{margin:0}.metricsCharts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:12px;margin:12px 0}.metricChart{border:1px solid #dbe4ec;border-radius:9px;padding:12px;min-width:0}.metricChart h3{font-size:14px;margin:0 0 8px}.metricBarRow{display:grid;grid-template-columns:58px minmax(20px,1fr) auto;align-items:center;gap:7px;margin:5px 0;font-size:12px;font-variant-numeric:tabular-nums}.metricBarRow progress{width:100%;height:9px;accent-color:#096656}.metricsTableWrap{overflow:auto}.metricsTableWrap th,.metricsTableWrap td{font-size:12px;padding:8px}
#metricsTrend{margin-top:18px}#metricsTrend h3{margin:0 0 8px}.metricsLegend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:0 0 8px;list-style:none;font-size:12px}.metricsLegend li::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;background:var(--series-color)}.metricsLegend [data-series="0"]{--series-color:#096656}.metricsLegend [data-series="1"]{--series-color:#2859a0}.metricsLegend [data-series="2"]{--series-color:#a85e19}.metricsLegend [data-series="3"]{--series-color:#8c3e83}.metricsLegend [data-series="4"]{--series-color:#ae3240}.metricsLegend [data-series="5"]{--series-color:#5350a1}.metricsPlotWrap{overflow-x:auto}.metricsPlotWrap canvas{display:block;width:100%;height:auto;min-width:560px}

.calendarDays .calendarToday{display:block;font-size:9px;line-height:1.1;letter-spacing:0;color:inherit;margin-top:1px}.calendarDays button[aria-current=date]:not([aria-pressed=true]){background:#e4f5ef;color:#096656}
.calendarDays button.calendarHoliday,.calendarDays button.calendarHoliday[aria-current=date]:not([aria-pressed=true]){color:#215bb4;font-weight:750}.calendarDays button.calendarHoliday[aria-pressed=true]{background:#215bb4;color:white}
.calendarDays .calendarHolidayName{display:block;font-size:9px;line-height:1.2;letter-spacing:0;color:inherit;margin-top:2px;overflow-wrap:anywhere}.calendarDays button{min-width:0}
input.typeInputInvalid,input.typeInputInvalid:focus{background:#fff0f1;border-color:#c43d4b;outline:1px solid #c43d4b;outline-offset:-1px;color:#8d1f2b}
#dailyScheduleDialog{width:min(94vw,850px);max-height:88vh}#dailyScheduleList{padding-left:24px}#dailyScheduleList li{padding:8px 0;border-bottom:1px solid #dbe4ec;overflow-wrap:anywhere}
#dailyScheduleRemarksList{padding-left:24px}#dailyScheduleRemarksList p{white-space:pre-wrap;overflow-wrap:anywhere}

@media(min-width:850px){#scheduleStatus{white-space:nowrap}}

.workspaceReadOnly #add,.workspaceReadOnly #bulk,.workspaceReadOnly #bulkDelete,.workspaceReadOnly .rowActions,.workspaceReadOnly #table input[type=checkbox],.workspaceReadOnly #table td>button,.workspaceReadOnly #memoForm,.workspaceReadOnly #memoContent article button{display:none}
