:root{font-family:"Yu Gothic",Meiryo,system-ui,sans-serif;color:#182d43;background:#f0f4f8;font-size:16px;font-weight:500;--navy:#13324e;--blue:#126cbd;--line:#d9e2eb}*{box-sizing:border-box}body{margin:0}header{height:84px;background:var(--navy);color:white;display:flex;justify-content:space-between;align-items:center;padding:0 36px}.brand{display:flex;align-items:center;gap:14px;font-weight:700;font-size:20px}.brand small{display:block;font-weight:400;font-size:12px;color:#c4d5e4;margin-top:3px}.mark{border:1px solid #6c8ca6;border-radius:7px;padding:8px 11px;font-size:20px}.header-right{display:flex;align-items:center;gap:16px}.badge{font-size:13px;background:#2d4b65;border:1px solid #7894aa;color:white;padding:5px 12px;border-radius:4px}main{max-width:1800px;margin:0 auto;padding:30px 36px}h1{font-size:25px;margin:0 0 8px}h2{font-size:21px;margin:0}h3{font-size:16px}small{font-size:13px;font-weight:400;color:#647b8d}button,input{font:inherit}button{cursor:pointer;border:1px solid #c7d4df;background:white;color:var(--navy);border-radius:5px;padding:10px 17px;font-size:14px;font-weight:700}button:hover{background:#edf4fb}button:focus-visible,input:focus-visible{outline:3px solid #8ec8ff;outline-offset:2px}button:disabled{opacity:.45;cursor:wait}.primary{color:white;background:var(--blue);border-color:var(--blue)}.primary:hover{background:#075a9f}.quiet{background:transparent;color:inherit;border-color:#6a8296}.topline,.toolbar,.dialog-head,.dialog-foot{display:flex;justify-content:space-between;align-items:center;gap:18px}.topline{margin-bottom:25px}.muted{color:#5b7186;font-size:14px}.search{max-width:430px;width:100%;margin-bottom:20px}input{border:1px solid #bfcddb;border-radius:5px;background:white;padding:11px 12px;min-width:0;font-size:15px;color:#172e44}.search input{width:100%}.panel{background:white;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 4px 14px #17385305}.list-table{border-collapse:collapse;width:100%}.list-table th{background:#edf3f8;color:#556e82;text-align:left;font-size:14px;padding:16px 20px}.list-table td{padding:22px 20px;border-top:1px solid var(--line)}.list-table td:first-child{width:170px;font-size:14px;font-weight:700;color:var(--blue)}.list-table td:nth-child(2){font-weight:700}.list-table tr:hover td{background:#f7fbff}.list-table td small{display:block;margin-top:5px}.list-table button{padding:8px 17px}.empty{padding:50px;text-align:center;color:#647b8d}.back{border:0;background:transparent;padding:0;margin:0 0 18px;color:#47657e}.tabs{display:flex;gap:6px;overflow:auto;border-bottom:1px solid #c5d5e3;margin-top:24px;margin-bottom:23px;padding-bottom:0}.tab{white-space:nowrap;border-radius:5px 5px 0 0;background:#e6edf4;border-bottom:none;padding:14px 24px;color:#4d657a}.tab.active{color:var(--blue);background:white;border-top:3px solid var(--blue);padding-top:12px}.toolbar{margin:0 0 16px;flex-wrap:wrap}.week-controls{display:flex;gap:10px;align-items:center}.week-range{font-weight:700;padding:0 10px;font-size:17px;min-width:250px;text-align:center}.week-controls button{padding:9px 12px}.actions{display:flex;align-items:center;gap:10px}.save-state{font-size:13px;color:#577386}.save-state.dirty{color:#b7680a}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.stat{background:white;border:1px solid var(--line);border-radius:6px;padding:16px 20px}.stat label{display:block;color:#60768a;font-size:13px}.stat b{display:block;font-size:23px;margin-top:7px;font-variant-numeric:tabular-nums}.stat.highlight{border-color:#afcfe9;background:#f7fbff}.table-scroll{overflow:auto;max-height:65vh;position:relative;border:1px solid #ccd9e5;background:white;border-radius:6px}.progress-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:1840px;font-size:14px}.progress-table th,.progress-table td{border-right:1px solid #dde5ec;border-bottom:1px solid #dde5ec;padding:12px 10px;text-align:right;height:73px;vertical-align:middle}.progress-table thead th{position:sticky;top:0;background:#e9f0f6;color:#456078;font-size:13px;height:59px;z-index:5;text-align:center}.progress-table .fixed{position:sticky;z-index:3;background:white}.progress-table thead .fixed{z-index:7;background:#e9f0f6}.c-name{left:0;width:270px!important;text-align:left!important}.c-qty{left:270px;width:95px!important}.c-unit{left:365px;width:65px!important;text-align:center!important}.c-price{left:430px;width:110px!important;box-shadow:4px 0 6px #1a3b5210;border-right:2px solid #9db6ca!important}.name-button{border:0;background:transparent;text-align:left;font-size:14px;font-weight:700;padding:0;width:100%;line-height:1.7}.name-button small{display:block;color:#7790a3;font-size:12px;font-weight:400}.day-cell{width:140px}.day-cell input{width:100%;padding:7px 8px;text-align:right;font-size:15px;font-variant-numeric:tabular-nums}.day-cell input::-webkit-inner-spin-button{appearance:none}.day-cell small{display:block;margin-top:5px;font-size:12px}.sun{color:#ae4c4c!important;background:#fff4f4!important}.sat{color:#2878b9!important}.summary{width:160px;background:#f8fafc}.negative{color:#bb3e38!important}.table-note{display:flex;justify-content:space-between;gap:10px;color:#657b90;font-size:13px;margin-top:12px}.login{max-width:410px;margin:7vh auto;background:white;border:1px solid var(--line);padding:35px;border-radius:8px}.login label{margin-top:20px}.login .primary{width:100%;margin-top:24px}label{display:block;font-size:14px}label input{display:block;width:100%;margin-top:7px}dialog{border:0;border-radius:10px;padding:28px;width:min(620px,94vw);max-height:90vh;box-shadow:0 20px 80px #0e263c50;color:var(--navy)}dialog::backdrop{background:#102b4466}dialog .dialog-head{margin-bottom:24px}dialog .dialog-head button{padding:3px 11px;font-size:25px;border:0}dialog label{margin:14px 0}.choices{max-height:190px;overflow:auto;border:1px solid #d8e3eb;border-radius:5px}.choice{display:flex;gap:12px;align-items:center;margin:0!important;padding:12px 14px;cursor:pointer;border-bottom:1px solid #edf1f5}.choice:hover{background:#f3f8fc}.choice input{display:inline;width:auto;margin:0;accent-color:var(--blue)}.choice small{display:block}.dialog-foot{margin-top:25px;padding-top:18px;border-top:1px solid var(--line);font-size:14px}.field-grid{display:grid;grid-template-columns:1fr 90px 1fr;gap:13px}#notice{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);padding:13px 22px;background:var(--navy);color:white;box-shadow:0 4px 25px #142c3f30;border-radius:6px;z-index:20;max-width:90vw;display:none;font-size:14px}#notice.error{background:#a53e32}.selected-label{color:var(--blue);font-weight:700}.section-label{font-size:13px;font-weight:700;color:#54718a;text-transform:uppercase;letter-spacing:.05em;margin-bottom:9px}
@media(max-width:900px){header{padding:0 18px;height:76px}main{padding:24px 18px}.stats{grid-template-columns:repeat(2,1fr)}.week-range{min-width:0;font-size:15px}.toolbar{gap:15px}.list-table th,.list-table td{padding:14px 12px}.list-table th:first-child,.list-table td:first-child{width:110px}.list-table th:nth-child(4),.list-table td:nth-child(4){display:none}.topline{align-items:flex-start}.topline h1{font-size:21px}.table-note{flex-direction:column}.brand{font-size:17px}}
@media(max-width:600px){.stats{gap:8px}.stat{padding:13px}.stat b{font-size:19px}.brand small{font-size:12px}.badge{font-size:12px;padding:4px 7px}.mark{display:none}.header-right{gap:8px}.list-table th:nth-child(3),.list-table td:nth-child(3){display:none}.topline{flex-direction:column}.topline button{width:100%}.actions{width:100%;justify-content:flex-end}.week-controls{width:100%;justify-content:space-between;gap:4px}.week-range{padding:0;font-size:14px}.tabs{margin-top:15px}.tab{padding:12px 17px}.table-scroll{max-height:60vh}.progress-table{width:1840px}.field-grid{grid-template-columns:1fr 80px 1fr}.c-name{width:160px!important;left:0}.c-qty{left:160px;width:65px!important}.c-unit{left:225px;width:45px!important}.c-price{left:270px;width:80px!important}.progress-table col:nth-child(1){width:160px!important}.progress-table col:nth-child(2){width:65px!important}.progress-table col:nth-child(3){width:45px!important}.progress-table col:nth-child(4){width:80px!important}.progress-table th,.progress-table td{padding:9px 5px}.name-button{font-size:13px}.header-right .quiet{padding:7px;font-size:12px}}
.list-table .open-col{width:125px!important;text-align:center;font-weight:500}.list-table td:first-child{color:inherit}.list-table td:nth-child(2){width:150px;color:var(--blue);font-size:14px}.list-table td:nth-child(3){font-weight:700}.list-table .open-project{min-width:88px;min-height:50px;padding:12px 22px;font-size:17px}.project-choice{display:flex;flex-direction:column;gap:5px;align-items:flex-start;width:100%;border:0;border-radius:0;border-bottom:1px solid var(--line);padding:15px 18px;text-align:left;font-size:16px}.project-choice small{color:var(--blue)}.project-choice:disabled{cursor:default}.mobile-items{display:none}.topline h1{overflow-wrap:anywhere}.actions{flex-wrap:wrap}.mobile-item{background:white;border:1px solid var(--line);border-radius:7px;padding:18px;margin-bottom:16px}.mobile-item .name-button{font-size:16px}.mobile-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;font-size:14px;padding:13px 0;border-bottom:1px solid var(--line)}.mobile-days{display:grid;gap:4px;margin-top:10px}.mobile-day{display:grid;grid-template-columns:85px minmax(0,1fr) 78px;align-items:center;gap:9px;font-size:14px;margin:0}.mobile-day input{font-size:16px;text-align:right;min-height:46px;margin:0;width:100%;padding:8px}.mobile-day small{text-align:right;font-size:12px;overflow-wrap:anywhere}.mobile-summary{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;border-top:1px solid var(--line);margin-top:13px;padding-top:13px;font-size:14px}
@media(max-width:900px){.list-table th:nth-child(4),.list-table td:nth-child(4){display:table-cell}.list-table th:nth-child(5),.list-table td:nth-child(5){display:none}button{min-height:44px}input{font-size:16px}}
@media(max-width:600px){.list-table,.list-table tbody{display:block;width:100%}.list-table thead{display:none}.list-table tr{display:grid;grid-template-columns:88px minmax(0,1fr);padding:15px 12px;gap:5px 13px;border-bottom:1px solid var(--line)}.list-table tr:last-child{border-bottom:0}.list-table td{border:0;padding:0!important;width:auto!important}.list-table td:nth-child(1){grid-row:1 / 3;display:flex;align-items:center}.list-table td:nth-child(2){grid-column:2;display:block}.list-table td:nth-child(3){grid-column:2;display:block;overflow-wrap:anywhere;font-size:15px}.list-table td:nth-child(4),.list-table td:nth-child(5){display:none}.list-table .open-project{width:88px;min-height:54px;padding:12px 15px;font-size:18px}.table-scroll{display:none}.mobile-items{display:block}.actions{gap:8px}.actions button{flex:1;min-width:95px;padding:10px 8px}.save-state{width:100%;text-align:right}.stats{margin:14px 0}.stat b{overflow-wrap:anywhere}.week-controls{flex-wrap:wrap}.week-range{flex:1;font-size:13px;white-space:normal}.week-controls button{font-size:13px;padding:9px}.tabs{margin-bottom:15px}.field-grid{grid-template-columns:1fr 80px}.field-grid label:last-child{grid-column:1 / -1}.dialog-foot{flex-wrap:wrap}.dialog-foot button{width:100%}dialog{padding:20px}.choices{max-height:45vh}}

/* Compact vendor totals and project-wide list totals. */
.vendor-stats-label{font-size:12px;color:#54718a;margin:12px 0 5px;font-weight:700}
.stats{gap:8px;margin:5px 0 15px}.stat{padding:9px 12px}.stat label{font-size:12px}.stat b{font-size:17px;margin-top:3px}
.list-table th.list-money,.list-table td.list-money{display:table-cell;text-align:right;font-size:13px;padding:14px 10px;white-space:nowrap}.list-table th.list-money{white-space:normal}.list-table td:nth-child(8){white-space:nowrap}.list-table td:nth-child(9){font-size:12px;white-space:nowrap}
@media(max-width:1100px) and (min-width:601px){.list-table td,.list-table th{padding:14px 8px}.list-table td:nth-child(2){width:110px}.list-table .open-col{width:100px!important}.list-table td:nth-child(9),.list-table th:nth-child(9){display:none}}
@media(max-width:600px){.stat{padding:8px 10px}.stat b{font-size:16px}.list-table td.list-money{display:flex;grid-column:1 / -1;justify-content:space-between;gap:8px;white-space:normal;font-size:13px;padding:3px 0!important}.list-table td.list-money::before{content:attr(data-label);color:#60768a;font-size:12px;font-weight:400}.list-table td:nth-child(4){margin-top:10px}.list-table td:nth-child(8){display:block;grid-column:1 / -1;margin-top:7px;font-size:12px;color:#60768a}.list-table td:nth-child(9){display:none}.week-controls{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto}.week-range{font-size:12px}.week-controls button{padding:9px 7px;min-height:44px;white-space:nowrap}}

.row-name{display:flex;align-items:center;gap:10px}.row-name .name-button{flex:1;min-width:0;overflow-wrap:anywhere}.row-controls{display:grid;grid-template-columns:28px 28px;grid-template-rows:28px 28px;gap:3px;flex-shrink:0}.row-controls button{padding:0;min-width:28px;min-height:28px;font-size:18px;line-height:1;border-radius:4px;color:#126cbd}.row-controls .insert-row{grid-column:1;grid-row:1 / 3;align-self:center;background:#126cbd;color:white}.row-controls button[data-move]{grid-column:2}.row-controls button:disabled{cursor:default;opacity:.3}
@media(max-width:600px){.row-controls{grid-template-columns:44px 44px;grid-template-rows:44px 44px}.row-controls button{min-width:44px;min-height:44px}.row-name{gap:12px}}

/* Fit the full week and pin totals at the right edge. */
.table-scroll{--name-width:220px;--qty-width:65px;--unit-width:40px;--price-width:80px;--summary-width:110px}
.progress-table{width:100%;min-width:1000px;font-size:13px}.progress-table th,.progress-table td{padding:9px 6px}.progress-table thead th{font-size:12px}.progress-table th small{font-size:10px}.progress-table col.col-name{width:var(--name-width)!important}.progress-table col.col-qty{width:var(--qty-width)!important}.progress-table col.col-unit{width:var(--unit-width)!important}.progress-table col.col-price{width:var(--price-width)!important}.progress-table col.col-summary{width:var(--summary-width)!important}
.progress-table .c-name{left:0;width:var(--name-width)!important}.progress-table .c-qty{left:var(--name-width);width:var(--qty-width)!important}.progress-table .c-unit{left:calc(var(--name-width) + var(--qty-width));width:var(--unit-width)!important}.progress-table .c-price{left:calc(var(--name-width) + var(--qty-width) + var(--unit-width));width:var(--price-width)!important}
.progress-table .day-cell{width:auto}.day-cell input{padding:7px 4px;font-size:13px}.day-cell small{font-size:11px;overflow-wrap:anywhere}.progress-table .summary{width:var(--summary-width)}.summary small{font-size:12px;overflow-wrap:anywhere}.summary b{font-size:13px}
.progress-table .fixed-right{position:sticky;background:#f3f7fb;z-index:4}.progress-table .c-remaining{right:0}.progress-table .c-cumulative{right:var(--summary-width);border-left:2px solid #9db6ca;box-shadow:-4px 0 6px #1a3b5210}.progress-table thead .fixed-right{z-index:8;background:#e9f0f6}
.row-controls button[data-move]{background:#fff;color:#075a9f;border:2px solid #126cbd;font-size:17px;font-weight:900}.row-controls button[data-move]:hover:not(:disabled){background:#126cbd;color:white}.row-controls button[data-move]:disabled{opacity:1;color:#8ba0b2;border-color:#c8d3dd;background:#edf1f5}
.project-stats{margin:6px 0 14px}.project-stats .stat{background:#e8f1f9;border-color:#c4d9eb}.project-stats .stat b{font-size:17px}.row-name .name-button{font-size:13px}.row-controls{gap:2px;grid-template-columns:25px 25px;grid-template-rows:25px 25px}.row-controls button{min-width:25px;min-height:25px}
@media(max-width:600px){.row-controls{grid-template-columns:44px 44px;grid-template-rows:44px 44px}.row-controls button{min-width:44px;min-height:44px}.project-stats .stat b{font-size:16px}.row-name .name-button{font-size:16px}}
