:root{--ace-blue:#1173be;--ace-navy:#173c5e;--ace-line:#dce6f0}
.commercial-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:22px}
.commercial-fields label{min-width:0;font-weight:550}
.commercial-fields .sub{display:block;margin-top:5px;font-weight:400}
.monthly-controls{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}
.monthly-controls label{font-size:12px;min-width:120px}
.monthly-controls input,.monthly-controls select{height:42px;margin-top:5px}
.monthly-controls input{width:120px}
.monthly-stats{margin:20px 0}
.monthly-stats .stat{padding:18px;background:#f6faff}
.monthly-stats strong{font-size:25px;overflow-wrap:anywhere}
.monthly-stats small{display:block;color:#60758a;margin-top:9px}
.monthly-table{min-width:650px}
.monthly-table th:first-child{min-width:110px}
.monthly-table td{font-variant-numeric:tabular-nums;text-align:right;min-width:105px}
.monthly-table th:not(:first-child){text-align:right}
.monthly-table tfoot{background:#edf5fc;font-weight:650}
.monthly-total{font-weight:650;background:#f3f8fc}
.monthly-missing{display:block;color:#9d572d;font-size:11px;margin-top:4px}
.monthly-basis,.monthly-warning{line-height:1.8}
.monthly-warning{background:#fff8eb;border:1px solid #ecd7b8;color:#805620}
#monthly-missing-section summary{cursor:pointer;font-weight:650;color:#173c5e}
@media(max-width:550px){.commercial-fields{grid-template-columns:1fr}.monthly-controls{width:100%}.monthly-controls label{flex:1}.monthly-controls button{width:100%}}
header{padding:22px max(28px,calc((100vw - 1320px)/2 + 28px));background:linear-gradient(120deg,#fff 0%,#fff 24%,#f0f7fd 50%,#c4e1f5 76%,#8dbfe4 100%);color:var(--ace-navy);border-bottom:1px solid var(--ace-line);display:flex;align-items:center;gap:24px}
.brand-logo{flex:0 0 auto;background:transparent;padding:0}
.brand-logo img{display:block;width:130px;max-width:100%;height:auto}
.brand-copy{min-width:0}
header small{font-size:12px;letter-spacing:.035em;color:var(--ace-blue)}header h1{font-size:28px;letter-spacing:-.025em;margin:8px 0;color:var(--ace-navy)}
header>div{font-size:14px;color:#60758a}
main{max-width:1320px;padding:0 28px;margin:24px auto}
section,.stat{border-color:var(--ace-line);box-shadow:0 3px 14px #173c5e05}
h2{color:var(--ace-navy)}
.pagenav a:hover{background:#dfedfa;color:#0d5d9c}
.pagenav a[aria-current="page"]{background:var(--ace-blue);color:white}
button,.file,.pagenav a,input,select{transition:background-color .15s,border-color .15s,box-shadow .15s}
button:hover,.file:hover{background:#f0f6fc;border-color:#8eb8d8}
button.primary:hover{background:#0b62a5;border-color:#0b62a5}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible,.file:focus-within{outline:3px solid #8cc8f1;outline-offset:2px}
input,select{color:#21374c;min-width:0}
input::placeholder{color:#8293a3}
input[type="file"]{padding:10px;background:#f8fbfe}
input[type="file"]::file-selector-button{font:inherit;color:#255276;background:#eaf3fb;border:1px solid #c4d5e5;border-radius:5px;padding:7px 12px;margin-right:12px;cursor:pointer}
.project-grid{grid-template-columns:repeat(12,minmax(0,1fr));gap:20px 18px;align-items:start}
.project-grid>label{grid-column:span 3}
.project-grid>label:nth-child(-n+4){grid-column:span 3}
.project-grid label{min-width:0;font-weight:550;line-height:1.5}
.project-grid input,.project-grid select{font-weight:400;height:46px;padding:10px 12px}
.category-badge{display:inline-block;padding:5px 9px;border-radius:6px;background:#eaf3fb;color:#315777;font-size:12px;white-space:nowrap}
.category-badge.unclassified{background:#eff1f4;color:#6a7f93}
.project-grid .sub{display:block;margin-top:5px;font-weight:400;font-size:12px}
.date-range{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;grid-column:span 6;min-width:0}
input[type="date"]{font-size:14px}
.actions button.primary{min-width:92px}
.day.today{box-shadow:inset 0 0 0 2px var(--ace-blue)}
.stat strong{color:var(--ace-navy)}
.pagenav{flex-wrap:wrap}
.forecast-caption{margin:8px 0 0}
.forecast-controls{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.forecast-controls label{font-size:12px}
.forecast-controls input{width:165px;height:43px;margin-top:5px}
.forecast-stats{margin:20px 0 14px}
.forecast-stats .stat{background:#f6faff;padding:18px;margin:0;box-shadow:none}
.forecast-stats strong.over{color:#b84c38}
.forecast-key{display:flex;gap:20px;flex-wrap:wrap;font-size:12px;color:#60758a;margin:22px 0}
.forecast-key span{display:flex;align-items:center;gap:7px}
.forecast-key i{width:12px;height:12px;border-radius:3px}
.key-demand,.demand-bar{background:#1173be}
.key-capacity,.capacity-bar{background:#d5e8f8;border:1px solid #8dbfe4}
.key-over,.excess-bar{background:#c06548}
.forecast-chart{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;min-width:660px;margin-bottom:22px}
.forecast-column{text-align:center;font-size:12px;color:#315777}
.forecast-value{display:block;font-size:12px;font-weight:650;margin-bottom:6px}
.forecast-bars{height:140px;display:flex;gap:7px;justify-content:center;align-items:flex-end;border-bottom:1px solid #cfdeec;margin-bottom:10px}
.forecast-bars i{display:block;width:27px;border-radius:5px 5px 0 0;max-height:130px;min-height:1px}
.forecast-column small{display:block;font-size:11px;color:#60758a;margin-top:4px}
.planning-status{display:inline-block;font-size:11px;border-radius:20px;padding:4px 10px;background:#edf5fc;color:#32648b}
.planning-status.over{background:#fff0e9;color:#a2462a}
.planning-status.tight{background:#fff6dd;color:#856211}
.day-alert{display:block;margin-top:5px;font-size:11px}
.forecast-table td,.capacity-table td{padding:12px 10px}
.capacity-section summary{font-size:19px;font-weight:700;color:var(--ace-navy);cursor:pointer}
.capacity-section form{margin-top:22px}
.capacity-base{display:grid;grid-template-columns:minmax(230px,1fr) 2fr;gap:24px;align-items:start}
.capacity-base input{max-width:250px}
.capacity-base .sub{display:block;margin-top:6px;font-size:12px}
.capacity-formula{margin:0}
.capacity-table{min-width:760px}
.capacity-table input{margin:0;padding:9px 10px;min-width:90px;width:100%;font-size:13px}
.capacity-table td:nth-child(3),.capacity-table td:nth-child(4){width:145px}
.capacity-table td:last-child{min-width:200px}
.workdate[aria-pressed="true"]{background:#edf5fc;color:#315777;border-color:#c4d5e5}
.project-status-control{font-size:12px;color:#60758a;min-width:145px}
.project-status-control select{font-size:13px;padding:8px 10px;margin-top:4px;color:#21374c}
.project-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.project-filters button{padding:8px 14px;font-size:12px}
.project-filters button[aria-pressed="true"]{background:#1173be;border-color:#1173be;color:white}
.project-stage{display:inline-block;border-radius:16px;padding:5px 10px;font-size:11px;background:#fff5dc;color:#876418}
.project-stage.inprogress{background:#e5f1fc;color:#1765a2}
.project-stage.completed{background:#e8edf3;color:#405970}
.completion-field{display:block;max-width:340px;margin-bottom:22px}
.completion-field[hidden]{display:none}
.completion-note{display:block;color:#526e87;margin-top:5px;font-size:11px}
.overdue-panel{background:#fffaf1;border:1px solid #edd6b2}
.overdue-panel h2{font-size:17px;color:#83551e;margin:0}
.overdue-item{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid #efdfc7;padding:12px 0}
.overdue-item small{display:block;margin-top:5px;color:#83551e}
.overdue-item .actions{margin:0;flex-shrink:0}
.overdue-item button{font-size:12px;padding:8px 12px}
.overdue-badge{display:block;color:#a44729;font-weight:600;font-size:11px;margin-top:6px}
.overdue-row{background:#fffaf5}
.completed-row{background:#f6f8fb}
.row-project-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:155px;max-width:210px}
.row-project-actions button{font-size:11px;padding:6px 9px}
#project-action-dialog{border:1px solid #c8d8e7;border-radius:16px;padding:28px;width:min(500px,calc(100% - 32px));color:#21374c;box-shadow:0 20px 70px #153d6030}
#project-action-dialog::backdrop{background:#17344e70}
#project-action-dialog h2{font-size:20px;margin:0}
#project-action-dialog .toolbar{gap:14px}
#project-action-name{font-weight:650;margin:22px 0 10px}
#project-action-date{width:100%}
.action-error{color:#a44729;font-size:13px;line-height:1.6;min-height:20px}
@media(max-width:550px){.overdue-item{align-items:flex-start;flex-direction:column}#project-action-dialog{padding:22px}}
.schedule-pending{display:block;color:#876418;font-size:11px;margin-top:5px}
#excel-preview td:last-child{white-space:normal;min-width:230px;max-width:380px;line-height:1.6}
#excel-preview .import-error td:last-child{color:#a2462a;background:#fff8f4}
@media(max-width:700px){.capacity-base{grid-template-columns:1fr}.forecast-controls{width:100%}.forecast-stats{gap:10px}.forecast-stats .stat{padding:16px}}
@media(max-width:700px){main{padding:0 16px;margin:18px auto}header{padding:22px 20px}header h1{font-size:24px}.project-grid{gap:18px 14px}.project-grid>label,.project-grid>label:nth-child(-n+4){grid-column:span 6}.date-range{grid-column:span 12;gap:14px}.project-grid input{padding:10px}.pagenav a{padding:11px 15px}}
@media(max-width:700px){header{gap:20px;background:linear-gradient(120deg,#fff 0%,#fff 40%,#edf6fd 80%,#8dbfe4 100%)}.brand-logo img{width:110px}}
@media(max-width:520px){header{flex-direction:column;align-items:flex-start;gap:16px}.brand-logo img{width:110px}header h1{font-size:23px}}
@media(max-width:380px){.project-grid>label,.project-grid>label:nth-child(-n+4){grid-column:span 12}.date-range{grid-template-columns:minmax(0,1fr)}}

.open-connection{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-top:10px;flex-wrap:wrap}.open-connection button{padding:7px 12px;font-size:12px}#open-status{font-size:12px;color:#315777}
