:root{--navy:#082b40;--cyan:#087e98;--bright:#29c9e5;--ink:#162f41;--muted:#597080;--line:#dbe4e9;--bg:#f2f5f7;--white:#fff;--green:#13724e;--amber:#95610b;--red:#b43c3c;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:3px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--cyan)}.top{height:70px;background:var(--navy);color:white;display:flex;align-items:center;justify-content:space-between;padding:0 30px;border-bottom:3px solid var(--bright);gap:15px}.brand{font-size:21px;font-weight:650;letter-spacing:-.6px}.brand span{font-weight:350;color:#b8e8f1}.top small{color:#a4c2cf}.identity{display:flex;align-items:center;gap:14px;font-size:14px}.identity button{border:1px solid #406072;color:#fff;background:transparent;border-radius:5px;padding:7px 12px}.shell{display:grid;grid-template-columns:206px minmax(0,1fr);min-height:calc(100vh - 70px)}aside{background:white;border-right:1px solid var(--line);padding:26px 14px;display:flex;flex-direction:column;gap:5px}.nav-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:1.2px;margin:7px 12px 12px}.nav{border:0;text-align:left;display:flex;align-items:center;gap:11px;padding:12px;background:transparent;color:#466070;border-radius:5px;font-size:14px}.nav.active{background:#e7f4f7;color:#076981;font-weight:650}.nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6}.aside-footer{margin-top:auto;padding:32px 10px 8px;font-size:12px;line-height:1.6;color:var(--muted)}main{padding:28px 32px;max-width:1600px;width:100%;margin:0 auto}.eyebrow{color:var(--muted);font-size:12px;letter-spacing:1px;text-transform:uppercase;margin-bottom:10px}h1{font-size:26px;line-height:1.3;letter-spacing:-.6px;margin:0 0 8px}h2{font-size:18px;margin:0}h3{font-size:16px;margin:0 0 10px}p{line-height:1.6}p.subtitle{font-size:14px;color:var(--muted);margin:0 0 24px}.heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:5px;padding:9px 14px;font-size:14px;font-weight:550;min-height:39px;text-decoration:none}.btn.primary{background:var(--cyan);border-color:var(--cyan);color:white}.btn.danger{color:var(--red);border-color:#e9c8c8}.btn.small{padding:6px 10px;min-height:32px;font-size:13px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.notice{padding:12px 16px;background:#e8f4f7;border-left:3px solid var(--cyan);font-size:14px;line-height:1.5;margin:18px 0}.notice.warn{background:#fff7e7;border-color:#c78c2a}.panel{background:#fff;border:1px solid var(--line);border-radius:7px;margin:18px 0;overflow:hidden}.panel-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;align-items:center}.panel-body{padding:20px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:7px;margin:20px 0}.metric{padding:20px;border-right:1px solid var(--line)}.metric:last-child{border:0}.metric label{display:block;color:var(--muted);font-size:13px;margin-bottom:9px}.metric strong{font-size:25px;font-weight:600;letter-spacing:-.8px}.metric small{font-size:12px;color:var(--muted);display:block;margin-top:7px}.badge{display:inline-block;padding:4px 8px;font-size:12px;font-weight:550;background:#eef2f5;color:#516879;border-radius:4px;white-space:nowrap}.badge.active,.badge.approved,.badge.accepted{background:#e6f4ee;color:var(--green)}.badge.pending,.badge.draft{background:#fff2d8;color:var(--amber)}.badge.returned,.badge.declined{background:#fbeaea;color:var(--red)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap}th{background:#f7f9fa;color:var(--muted);font-size:12px;font-weight:600;padding:12px 17px;text-transform:uppercase;letter-spacing:.5px}td{padding:15px 17px;border-top:1px solid #e8edf0;font-size:14px}td.wrap{white-space:normal;min-width:200px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.code{font-size:12px;color:var(--muted);display:block;margin-bottom:5px}.row-link{border:0;background:none;text-align:left;padding:0;color:var(--ink);font-weight:600;font-size:15px}.row-link:hover{color:var(--cyan);text-decoration:underline}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);overflow:auto;white-space:nowrap;margin-bottom:24px}.tab{border:0;border-bottom:3px solid transparent;background:none;padding:14px 0;color:var(--muted);font-size:14px}.tab.active{border-color:var(--cyan);color:var(--cyan);font-weight:600}.split{display:grid;grid-template-columns:1.15fr 1fr;gap:20px}.split .panel{margin:0}.progress{width:110px;height:5px;background:#e6edf1;border-radius:3px;margin-top:8px;overflow:hidden}.progress i{display:block;height:100%;background:var(--cyan)}progress{width:110px;height:6px;accent-color:var(--cyan);display:block;margin-top:6px}dt{font-size:13px;color:var(--muted);margin-bottom:6px}dd{margin:0 0 18px;font-size:14px}.timeline{list-style:none;padding:0;margin:0}.timeline li{position:relative;margin-left:7px;padding:0 0 24px 25px;border-left:1px solid var(--line)}.timeline li:before{content:'';position:absolute;width:7px;height:7px;border-radius:50%;background:var(--cyan);top:5px;left:-4px}.timeline p{font-size:14px;margin:3px 0}.timeline small{font-size:12px;color:var(--muted)}.empty{padding:48px 24px;text-align:center;color:var(--muted);font-size:14px}.empty h3{color:var(--ink)}.login{max-width:800px;margin:6vh auto;background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden}.login img{display:block;width:100%}.login-body{padding:32px 40px}.profiles{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0}.profile{background:#fff;border:1px solid var(--line);border-radius:5px;text-align:left;padding:16px;color:var(--ink)}.profile:hover{border-color:var(--cyan);background:#f2fafb}.profile strong,.profile small{display:block}.profile small{margin-top:5px;color:var(--muted)}.muted{color:var(--muted)}.fine{font-size:12px}.checklist{list-style:none;padding:0;line-height:1.8;font-size:14px}.checklist li{margin:7px 0}.checklist li:before{content:'✓';color:var(--green);margin-right:10px}dialog{border:1px solid var(--line);border-radius:9px;padding:0;max-width:640px;width:calc(100% - 32px);max-height:90vh;box-shadow:0 20px 80px #082b4033}dialog::backdrop{background:#082b4077}.modal-head{padding:22px 24px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line);align-items:center}.modal-head button{border:0;background:none;font-size:25px;color:var(--muted)}form{padding:22px 24px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:17px}.field{display:block;margin-bottom:16px;font-size:14px;font-weight:550}.fields .field{margin:0}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{display:block;width:100%;margin-top:7px;border:1px solid #bacbd5;border-radius:4px;padding:10px;background:#fff;color:var(--ink);font-size:15px}.field textarea{min-height:88px;resize:vertical}.field small{display:block;font-weight:400;color:var(--muted);margin-top:6px;font-size:12px}.form-footer{display:flex;justify-content:flex-end;gap:9px;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.form-error{color:var(--red);font-size:14px;line-height:1.5;margin:14px 0 0}.check-row{display:flex;gap:14px;flex-wrap:wrap;font-size:14px;margin:12px 0}.check-row label{display:flex;gap:7px;align-items:center}.review-item{padding:20px;border-bottom:1px solid var(--line)}.review-item:last-child{border:0}.review-item p{font-size:14px;white-space:pre-wrap;margin:12px 0}.review-item header{display:flex;justify-content:space-between;gap:15px;align-items:center}.review-item small{font-size:12px;color:var(--muted)}.review-item img{max-height:220px;max-width:100%;border-radius:5px}.tag{color:var(--cyan);font-size:12px;font-weight:600}.roadmap{max-width:950px}.roadmap p{font-size:14px}.back{border:0;background:none;padding:0;color:var(--muted);font-size:13px;margin-bottom:18px}.stat-line{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0;font-size:14px}.stat-line:last-child{border:0}.amount{font-variant-numeric:tabular-nums}.loading{padding:40px}#toast{position:fixed;bottom:24px;right:24px;background:var(--navy);color:#fff;border-radius:5px;padding:14px 22px;box-shadow:0 5px 22px #0002;max-width:380px;display:none;z-index:4;font-size:14px}.mobile-only{display:none}@media(max-width:1050px){main{padding:24px}.shell{grid-template-columns:170px minmax(0,1fr)}.metrics{grid-template-columns:repeat(2,1fr)}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid var(--line)}.split{grid-template-columns:1fr}.identity small{display:none}}@media(max-width:700px){.top{height:auto;min-height:67px;padding:12px 17px;align-items:flex-start}.brand{font-size:20px}.top .identity{font-size:12px;gap:8px;flex-direction:column;align-items:flex-end}.top .identity button{padding:4px 8px}.shell{display:block}aside{flex-direction:row;padding:6px 10px;gap:0;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto}.nav{white-space:nowrap;padding:11px;font-size:13px;gap:6px}.nav svg{width:16px;height:16px}.nav-label,.aside-footer{display:none}main{padding:22px 16px}h1{font-size:23px}.heading{flex-wrap:wrap;margin-bottom:15px}.heading .actions{width:100%}.heading .actions .btn{flex:1}.metric{padding:16px}.metric strong{font-size:22px}.panel-head{padding:16px;flex-wrap:wrap}.panel-body{padding:16px}.fields{grid-template-columns:1fr}.field.full{grid-column:auto}.btn{min-height:44px}.btn.small{min-height:40px}.profiles{grid-template-columns:1fr}.login{margin:18px 12px}.login-body{padding:24px}.tabs{gap:22px}.table-wrap{overscroll-behavior-x:contain}td,th{padding:13px}.review-item{padding:16px}.review-item header{align-items:flex-start}.review-item .actions{margin-top:14px}.modal-head{padding:18px}form{padding:18px}.back{min-height:30px}.mobile-only{display:block}#toast{left:16px;right:16px;bottom:16px;max-width:none}}
/* v0.2 — compact commercial workspace */
.top{height:60px;padding:0 25px}.shell{min-height:calc(100vh - 60px);grid-template-columns:210px minmax(0,1fr)}.shell>aside{padding:19px 12px;gap:2px}.nav{padding:9px 12px;min-height:38px}.nav-label{margin:14px 12px 6px;font-size:11px}.brand{font-size:20px}.language{background:#103b50;color:#fff;border:1px solid #406072;border-radius:4px;padding:6px;font-size:13px}.top .identity{gap:12px}main{padding:26px 28px}.heading.compact{margin-bottom:17px}.heading.compact h1{font-size:25px}.heading.compact .subtitle{margin-bottom:0}.panel-head p{margin:5px 0 0}.pipeline-strip{display:flex;background:#fff;border:1px solid var(--line);border-radius:5px;margin:20px 0;overflow:auto}.pipeline-strip button{flex:1;min-width:125px;display:flex;align-items:center;gap:7px;background:none;border:0;border-right:1px solid var(--line);padding:14px 12px;text-align:left;font-size:12px;color:var(--muted)}.pipeline-strip button:last-child{border:0}.pipeline-strip button.chosen{background:#e7f4f7;color:#006c84;box-shadow:inset 0 -2px var(--cyan)}.pipeline-strip button span{color:#8294a0;font-size:11px}.pipeline-strip button b{margin-left:auto;font-size:16px;color:var(--ink)}.worktable{margin:15px 0}.worktable .panel-head{padding:15px 18px}.worktable td{padding:17px}.search{border:1px solid var(--line);border-radius:4px;padding:8px 10px;width:250px;font-size:14px}.workflow-note{font-size:14px;line-height:1.7;color:var(--muted);max-width:820px;margin-top:24px}.workflow-note strong{color:var(--ink)}.journey{display:flex;margin:24px 0 6px;padding-bottom:20px;gap:0;border-bottom:1px solid var(--line);overflow:auto}.journey>div{flex:1;min-width:115px;display:flex;align-items:center;gap:7px;position:relative;font-size:12px;color:#8b99a4}.journey>div:after{content:'';height:1px;background:var(--line);flex:1;margin:0 12px}.journey>div:last-child:after{display:none}.journey span{border:1px solid var(--line);background:#fff;border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:11px;flex-shrink:0}.journey .current{color:var(--cyan)}.journey .current span{background:var(--cyan);color:white;border-color:var(--cyan)}.journey .done{color:#476774}.journey .done span{background:#dff0ef;border-color:#b5d9d6}.commercial-layout{display:grid;grid-template-columns:minmax(0,1fr) 235px;gap:22px}.commercial-layout>div>.panel:first-child{margin-top:0}.context-panel{display:block;min-width:0;padding:0 0 0 20px!important;border:0;border-left:1px solid var(--line);background:transparent}.context-section{padding-bottom:22px;margin-bottom:20px;border-bottom:1px solid var(--line)}.context-section dl{margin-bottom:0}.context-section dd{font-size:14px}.context-section h3{font-size:14px}.context-section .btn{font-size:13px;padding:8px 12px}.document-link{display:flex;gap:9px;text-align:left;background:none;border:0;padding:8px 0;color:var(--ink);font-size:12px;width:100%;word-break:break-word}.document-link>span{font-size:9px;background:#e5edf2;padding:7px 4px;align-self:start}.document-link small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.commercial-layout table td{padding:12px;font-size:13px}.commercial-layout table th{padding:11px 12px;font-size:11px}.commercial-layout .panel-head{padding:15px}.commercial-layout .panel-head h2{font-size:16px}.commercial-layout .btn.small{font-size:12px;padding:5px 8px;min-height:30px}.next-step{display:flex;gap:18px;align-items:flex-start;padding:16px 3px;color:var(--muted);font-size:14px}.next-step>span{color:var(--cyan);font-size:12px;white-space:nowrap;margin-top:3px}.next-step strong{color:var(--ink)}.next-step p{margin:6px 0}.release-bar{display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid var(--line);padding:20px 0;font-size:14px}.release-bar p{font-size:13px;line-height:1.5;color:var(--muted);margin:6px 0 0}.release-bar .btn{white-space:nowrap}.price-summary{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}.price-summary>div{padding:18px 15px;border-right:1px solid var(--line)}.price-summary label{font-size:12px;color:var(--muted);display:block;margin-bottom:8px}.price-summary strong{font-size:19px;font-weight:600}.price-summary .sale{background:#edf7f9;color:#066d83;border-right:0}.preserve{white-space:pre-wrap}.facts{display:grid;grid-template-columns:1fr 1fr;gap:15px}.preop-checks{border-top:1px solid var(--line)}.preop-checks>div{padding:15px 0;border-bottom:1px solid var(--line)}.preop-checks span{font-size:12px;color:var(--cyan);margin-right:10px}.preop-checks p{font-size:14px;margin:6px 0}.pdf-viewer{width:100%;height:60vh;border:1px solid var(--line);margin-bottom:15px}.legacy-tag{color:var(--muted);font-size:12px;margin-top:6px}.top .context-label{font-size:12px;margin-left:30px;color:#a5c9d7;letter-spacing:.8px}.profile strong{font-size:15px}.login h1{margin-top:7px}.login .language{float:right;color:var(--ink);background:#fff;border-color:var(--line)}.profiles{gap:10px}.profile{padding:13px}.nav[disabled]{opacity:.55;cursor:default}.commercial-layout .panel{border-radius:5px}.badge.neutral{background:#eaf2f6;color:#2b586d}
@media(min-width:1500px){.commercial-layout{grid-template-columns:minmax(0,1fr) 265px}}
@media(max-width:1150px){.commercial-layout{grid-template-columns:1fr}.context-panel{display:grid;grid-template-columns:1fr 1fr;gap:20px;border:0;padding:0!important}.context-panel>p{grid-column:1/-1}.commercial-layout .table-wrap{max-width:100%}.top .context-label{display:none}}
@media(max-width:700px){.top{height:auto;padding:12px 16px}.shell{display:block}.shell>aside{padding:5px 8px}.top .identity{gap:7px;display:flex}.identity>span{display:none}.identity .language{font-size:12px}.journey>div{min-width:130px}.pipeline-strip button{min-width:150px}.commercial-layout{display:block}.context-panel{display:block;margin-top:25px}.context-section{padding:15px 0}.search{width:100%}.panel-head .search{flex:1;min-width:160px}.release-bar{flex-direction:column;align-items:stretch}.price-summary{grid-template-columns:1fr 1fr}.price-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.facts{grid-template-columns:1fr}.commercial-layout .btn.small{min-height:42px}.shell>aside .nav-label{display:none}main{padding:20px 16px}.heading.compact h1{font-size:23px}.context-panel>p{margin:0}.nav{min-height:42px}.pdf-viewer{height:55vh}}
.pdf-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 0}.pdf-page{min-width:48px;text-align:center}.pdf-canvas-wrap{max-height:65vh;overflow:auto;background:#e4e9ed;padding:8px}.pdf-canvas-wrap canvas{display:block;margin:0 auto;background:white}#pdf-preview{background:white;padding:6px}#pdf-preview:fullscreen{padding:20px;overflow:auto}#pdf-preview:fullscreen .pdf-canvas-wrap{max-height:85vh}.pdf-expanded{position:fixed;inset:0;z-index:1000;overflow:auto}

.rfq-card{padding:18px;border-top:1px solid var(--line)}.composition-row{padding:10px 0;border-bottom:1px solid #e0e5e8}.rfq-card h3{margin:0}.rfq-card td{vertical-align:top}

.cost-details-table{table-layout:fixed;min-width:0}.cost-details-table th:first-child{width:56%}.cost-details-table th:nth-child(2){width:22%}.cost-details-table th:nth-child(3){width:22%}.cost-details-table td,.cost-details-table th,.cost-details-table .code{white-space:normal;overflow-wrap:anywhere}.cost-details-table td{padding:12px 8px}.rfq-card td:first-child{max-width:240px;white-space:normal}.rfq-card .code{white-space:normal;overflow-wrap:anywhere}

/* Customer presentation obscures the internal estimate behind the dialog. */
dialog.customer-view::backdrop{background:#f3f6f8}

.proposal-brand{display:block;width:100%;max-width:100%;height:auto;object-fit:contain}

.deadline-warning{background:#fff1cf;color:#785000}

.bid-financials{margin:20px 0}.bid-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.bid-kpi{background:#fff;border:1px solid #dce3e9;border-radius:10px;padding:18px;border-top:3px solid #b98b4b}.bid-kpi h2{font-size:14px;margin:0 0 15px;color:#48596b}.bid-kpi-values{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;overflow-wrap:anywhere}.bid-kpi-values strong{font-size:23px;font-variant-numeric:tabular-nums;color:#142a42}.bid-kpi>span{font-size:13px}.bid-kpi p{font-size:12px;color:#617184;margin:8px 0 0}.bid-kpi .bid-kpi-missing{color:#915519}@media(max-width:1150px){.bid-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.bid-kpi-grid{grid-template-columns:1fr}}

.dashboard-sections{display:grid;gap:20px}.dashboard-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 0;border-bottom:1px solid #e4e9ef}.dashboard-row:last-child{border-bottom:0}.dashboard-row p{margin:7px 0}.dashboard-row progress{max-width:320px;width:100%}@media(max-width:620px){.dashboard-row{align-items:flex-start;flex-direction:column}}

.contract-item{border:1px solid #dce3e9;border-radius:8px;margin:16px 0;padding:14px}.contract-item legend{font-weight:600;max-width:100%;overflow-wrap:anywhere}

.assignment-scope{padding:10px 0;border-bottom:1px solid #e4e9ef;min-width:200px}.assignment-scope:last-child{border-bottom:0}.assignment-scope>.badge{margin:4px 0}

@media print {
  body:has(.planning-gantt) .sidebar, body:has(.planning-gantt) .back,
  body:has(.planning-gantt) .tabs, body:has(.planning-gantt) button,
  body:has(.planning-gantt) .language {display:none!important}
  body:has(.planning-gantt) .table-wrap {overflow:visible!important}
  body:has(.planning-gantt) .planning-gantt {width:100%;font-size:8px}
  body:has(.planning-gantt) .planning-gantt th {min-width:0!important}
  body:has(.planning-gantt) .planning-gantt td {min-width:0!important}
  body:has(.planning-gantt) {print-color-adjust:exact;-webkit-print-color-adjust:exact}
}
.wbs-visual table{font-size:11px;min-width:1130px;width:100%}.wbs-visual thead th{background:#102b50;color:white;font-size:10px;white-space:nowrap;padding:9px 7px}.wbs-visual td{padding:8px 7px;border-bottom:1px solid #e8edf5;white-space:nowrap}.wbs-visual .wbs-description{white-space:normal;min-width:300px;width:38%}.wbs-parent{background:#eaf1fc}.wbs-child:nth-child(even){background:#f8faff}.wbs-title{display:flex;align-items:center;gap:7px}.wbs-title strong{font-size:11px;font-weight:550}.wbs-code{color:#606be8;font-size:10px;white-space:nowrap}.wbs-parent .wbs-code{color:#183b65;font-weight:700}.wbs-toggle{border:0;background:none;color:#315580;cursor:pointer;padding:2px}.wbs-branch{color:#8189ed}.wbs-weight{margin-left:auto;background:#eeedff;color:#7162dc;font-size:10px;padding:2px 4px;border-radius:3px}.wbs-value{font-weight:650}.wbs-remaining{color:#d68919;font-weight:600}.wbs-progress{display:flex;align-items:center;gap:4px;min-width:85px}.wbs-progress progress,.wbs-progress .bar{width:50px}.wbs-status{font-size:9px;text-transform:uppercase;background:#edf1f5;color:#738297;padding:3px 5px;border-radius:3px}.wbs-status.started{background:#e9efff;color:#3d5bba}.wbs-status.done{background:#e2f7ee;color:#138764}.wbs-actions{display:flex;gap:3px}.wbs-actions .btn{padding:3px 6px;min-width:25px;color:#3b72c6}.wbs-visual .fine{padding:0 14px 12px}

.wbs-actions{flex-wrap:wrap;min-width:115px}.wbs-actions .btn{font-size:11px;padding:5px 8px;white-space:nowrap}

dialog.progress-drawer{margin:0 0 0 auto;height:100dvh;max-height:100dvh;width:430px;max-width:95vw;border-radius:0;padding:0}.progress-drawer .metrics{grid-template-columns:1fr 1fr}.progress-drawer .metric{padding:12px}.progress-drawer .metric strong{font-size:20px}.progress-drawer .form-footer{position:sticky;bottom:0;background:white;padding:12px 0}

.wbs-actions .btn{width:32px;height:32px;min-width:32px;padding:4px;display:inline-flex;align-items:center;justify-content:center;font-size:19px}.wbs-actions{flex-wrap:nowrap}

.wbs-actions{gap:5px}.wbs-actions .btn{width:29px;height:29px;min-width:29px;border:1px solid #dce5f0;border-radius:5px;color:#537cc6;background:#fff;box-shadow:none}.wbs-actions .btn:hover{background:#edf4ff;border-color:#8daee2;color:#255baf}.wbs-actions .btn svg{width:17px;height:17px;display:block}.wbs-actions .btn:focus-visible{outline:2px solid #2863b9;outline-offset:2px}

.wbs-title{display:flex;align-items:center;gap:7px;flex-wrap:nowrap}.wbs-code{white-space:nowrap}.wbs-title strong{font-weight:600}

.gantt-panel{overflow:hidden}.gantt-heading{display:flex;align-items:baseline;gap:10px}.refined-gantt{table-layout:fixed;min-width:1254px;width:100%;border-collapse:collapse;font-size:11px}.refined-gantt thead th{background:#102b50;color:#b8c8df;text-align:center;padding:4px 2px;border-bottom:1px solid #244265;font-size:9px;letter-spacing:0;text-transform:none}.refined-gantt thead .gantt-task-head{text-align:left;padding:12px;color:white;font-size:11px}.gantt-task-head small{display:block;color:#f5b844;margin-top:5px;font-size:10px}.refined-gantt thead .gantt-week{background:#183a63;color:#f6b442;font-size:11px;border-left:1px solid #2b4b72}.refined-gantt thead .weekend{color:#728ba9}.refined-gantt td{border-bottom:1px solid #e8edf5;padding:0;height:39px}.gantt-task-cell{background:#f8faff}.gantt-parent .gantt-task-cell{background:white;font-weight:650}.gantt-task-cell>div{display:flex;align-items:center;gap:10px;padding-right:5px;padding-left:8px}.gantt-leaf .gantt-task-cell>div{padding-left:20px}.gantt-code{color:#7382db;font-size:10px;flex-shrink:0}.gantt-parent .gantt-code{color:#234364}.gantt-task-name{line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gantt-percent{color:#6e83a0;text-align:center;background:#f8faff;font-size:10px}.gantt-date-action{margin-left:auto;background:none;border:0;color:#7894bd;cursor:pointer;padding:3px}.gantt-date-action svg{width:14px;height:14px}.gantt-track{position:relative;background:white}.gantt-day-bg{position:absolute;top:0;bottom:0;border-left:1px solid #f1f4f8;pointer-events:none}.gantt-day-bg.weekend{background:#f5f7fa}.gantt-today-line{position:absolute;top:0;bottom:0;border-left:1px solid #ff9a9a;z-index:2;pointer-events:none}.gantt-bar{position:absolute;top:11px;height:17px;background:#e0e6ee;border-radius:10px;overflow:hidden;min-width:2px;z-index:3}.gantt-fill{position:absolute;inset:0 auto 0 0;background:#45b6a0}.gantt-bar-label{position:relative;display:block;padding:2px 7px;font-size:9px;font-weight:650;color:#334861;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-undated{position:relative;color:#93a0b1;font-size:10px;padding-left:10px}.gantt-legend{display:flex;align-items:center;gap:18px;padding:14px;color:#77869a;font-size:11px;flex-wrap:wrap}.gantt-legend>span{display:flex;align-items:center;gap:5px}.gantt-legend i{width:16px;height:7px;border-radius:6px;display:inline-block}.gantt-legend .planned{background:#e0e6ee}.gantt-legend .executed{background:#45b6a0}.gantt-legend .today{width:2px;height:12px;background:#ff9a9a}.gantt-legend small{margin-left:auto}@media print{.refined-gantt{min-width:0;font-size:8px}.gantt-date-action,.gantt-panel .actions{display:none}.gantt-day-bg.weekend{print-color-adjust:exact}.gantt-panel{overflow:visible}}
/* Explicit cell widths keep Safari's fixed table layout from collapsing the task column. */
.refined-gantt thead .gantt-task-head,.refined-gantt tbody .gantt-task-cell{width:310px;min-width:310px;max-width:310px;white-space:normal;overflow:hidden}
.refined-gantt thead th[rowspan]:nth-child(2),.refined-gantt .gantt-percent{width:48px;min-width:48px;max-width:48px}
.refined-gantt .gantt-task-cell>div{display:grid;grid-template-columns:max-content minmax(0,1fr) 22px;gap:9px;width:100%;min-width:0;align-items:center}
.refined-gantt .gantt-task-name{min-width:0;white-space:normal;overflow-wrap:anywhere;font-size:11px}
.refined-gantt .gantt-date-action{width:22px;min-width:22px;margin:0;padding:3px;justify-self:end}

.refined-gantt col.gantt-col-task{width:310px}.refined-gantt col.gantt-col-percent{width:48px}.refined-gantt col.gantt-col-day{width:32px}

.project-register{min-width:1120px}.project-register th{font-size:10px;padding:12px 10px}.project-register td{font-size:12px;padding:14px 10px}.project-register td.wrap{min-width:130px;max-width:210px}.project-register td.wrap:first-child{min-width:230px}.project-register .row-link{font-size:13px}.project-progress-caption{display:block;color:var(--muted);font-size:10px;margin-top:4px}

.issue-flag{position:relative}.issue-dot{position:absolute;right:2px;top:2px;width:6px;height:6px;background:#df9a20;border-radius:50%}.issue-history{padding:12px 0;border-bottom:1px solid var(--line)}.issue-footnote{padding:0 20px 12px}.review-item details{margin:14px 0}.review-item summary{cursor:pointer;font-size:13px}

/* Pre-execution work queue */
.prep-header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:26px}.prep-header h1{margin:8px 0}.prep-header p,.prep-section-title p{color:#64788a;margin:8px 0}.prep-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:32px}.prep-metrics>div{background:white;border:1px solid #dce5eb;border-radius:12px;padding:20px 24px;display:flex;flex-direction:column;gap:8px}.prep-metrics strong{font-size:32px;color:#137f91}.prep-metrics small{color:#64788a}.prep-section{margin:28px 0}.prep-section-title h2{font-size:19px;margin:0}.prep-section-title h2 span{display:inline-block;background:#e7eff3;color:#527082;border-radius:20px;padding:3px 9px;font-size:13px;margin-left:8px}.prep-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;margin-top:18px}.prep-card{background:white;border:1px solid #d8e4ea;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px #153c4f06;padding:22px;min-width:0}.prep-card-top{display:flex;justify-content:space-between;gap:14px}.prep-status{font-size:12px;font-weight:700;color:#14778a;background:#e5f3f6;border-radius:20px;padding:5px 10px}.prep-card h3{margin:16px 0 5px;line-height:1.4}.prep-card h3 button{font-size:18px;text-align:left}.prep-client{margin:5px 0;font-weight:600;color:#536c7d}.prep-contract{padding:16px 0;border-top:1px solid #edf1f5;border-bottom:1px solid #edf1f5;display:flex;justify-content:space-between;gap:16px;margin-top:18px}.prep-contract span{color:#64788a}.prep-contract strong{font-size:20px}.prep-team{display:grid;gap:10px;margin:20px 0}.prep-team>div{display:flex;justify-content:space-between;gap:16px}.prep-team dt{color:#64788a;font-size:13px}.prep-team dd{margin:0;text-align:right;font-size:13px}.prep-checks{display:flex;flex-wrap:wrap;gap:7px}.prep-check{font-size:12px;border-radius:6px;padding:6px 8px;display:flex;gap:5px}.prep-check.complete{background:#eaf5ee;color:#297048}.prep-check.pending{background:#fff5e7;color:#906218}.prep-detail{font-size:12px;color:#64788a;margin:16px 0}.prep-card footer{border-top:1px solid #edf1f5;padding-top:16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.prep-card footer>span{font-size:12px;color:#64788a}.prep-awaiting{margin-top:18px}.prep-awaiting article{background:white;border:1px solid #dce5eb;border-radius:10px;padding:20px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:12px}.prep-awaiting h3{margin:10px 0 5px}.prep-awaiting p{margin:0;color:#64788a}.prep-empty{padding:28px;border:1px dashed #cddde5;border-radius:12px;background:#f8fbfc;color:#64788a;width:100%;box-sizing:border-box}.prep-empty strong{color:#486577}.prep-empty p{margin:8px 0 0}@media(max-width:760px){.prep-metrics{grid-template-columns:1fr}.prep-grid{grid-template-columns:1fr}.prep-awaiting article{align-items:flex-start;flex-direction:column}.prep-header{align-items:flex-start}}
/* Touch-friendly initial site visit */
.walk{max-width:1100px}.walk input,.walk select,.walk button{min-height:46px}.walk-groups{display:flex;gap:8px;overflow-x:auto;padding:16px 0;scrollbar-width:thin}.walk-groups button{white-space:nowrap;flex:none}.walk-item{padding:20px 0;border-top:1px solid var(--border,#ddd)}.walk-item h3{margin:0 0 8px}.walk-entry{background:#f4f7fa;border-radius:10px;padding:14px;margin-top:10px}.walk-entry p{white-space:pre-wrap}.walk-entry .actions{margin-top:12px}.walk .heading{gap:12px;align-items:center}.walk label{display:block}.walk input[type=search]{width:100%}@media(max-width:800px){.walk{padding:16px}.walk-item{padding:18px 0}.walk-item .heading{display:flex;flex-wrap:wrap}.walk-entry .actions{flex-wrap:wrap}#modal input,#modal select,#modal button{min-height:44px}}
#modal:has(input[name=camera]) label{display:flex;flex-direction:column;gap:8px;margin:16px 0;font-size:14px;font-weight:600}#modal:has(input[name=camera]) input,#modal:has(input[name=camera]) select,#modal:has(input[name=camera]) textarea{display:block;width:100%;max-width:100%;box-sizing:border-box;border:1px solid #bccbd2;border-radius:8px;padding:12px;background:white;font:inherit;font-weight:400}#modal:has(input[name=camera]) input[type=file]{font-size:13px}#modal:has(input[name=camera]){max-height:90dvh;overflow-y:auto}
/* Desktop walkthrough workspace with a compact checklist and persistent groups. */
.walk{max-width:none;padding:0;background:transparent}.walk-top{display:flex;justify-content:space-between;align-items:center;gap:24px;background:#fff;border:1px solid #d9e4e9;border-radius:12px;padding:24px 28px;margin-bottom:20px}.walk-top h2{font-size:24px;margin:6px 0 8px}.walk-top p{margin:0;color:#607780}.walk-count{display:flex;flex-direction:column;gap:5px;min-width:170px;border-left:1px solid #d9e4e9;padding-left:24px;color:#52707d;font-size:13px}.walk-count strong{font-size:28px;color:#086f80}.walk-count strong span{font-size:18px;color:#7b929b}.walk-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}.walk-groups{display:flex;flex-direction:column;gap:4px;overflow:visible;padding:12px;background:white;border:1px solid #d9e4e9;border-radius:12px;position:sticky;top:20px}.walk-nav-title{padding:10px 12px;color:#6a808b;font-size:11px;letter-spacing:.07em;font-weight:700}.walk-groups button{display:flex;justify-content:space-between;gap:8px;text-align:left;white-space:normal;align-items:center;min-height:44px;border:0;background:transparent;border-radius:7px;padding:10px 12px;color:#4b6471;font-size:12px;font-weight:600;cursor:pointer}.walk-groups button:hover{background:#f0f6f8}.walk-groups button.selected{background:#e1f2f5;color:#086c7d}.walk-groups button small{white-space:nowrap;color:#68818a;font-weight:400}.walk-main{min-width:0;background:white;border:1px solid #d9e4e9;border-radius:12px;overflow:hidden}.walk-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 24px;border-bottom:1px solid #d9e4e9;background:#fafcfd}.walk-toolbar h3{margin:0 0 6px;font-size:16px}.walk-toolbar p{margin:0;font-size:13px;color:#69818c}.walk-toolbar label{min-width:220px;font-size:12px;color:#637984}.walk-toolbar input[type=search]{margin-top:6px;border:1px solid #cbdbe1;border-radius:8px;padding:10px 12px;font-size:14px;min-height:42px;background:white}.walk-item{padding:16px 24px;border-top:0;border-bottom:1px solid #e5edf0}.walk-item:last-child{border-bottom:0}.walk-item .heading{margin:0;min-height:38px;display:flex;justify-content:space-between;align-items:center;gap:16px}.walk-item h3{font-size:14px;margin:0 0 5px}.walk-item small{font-size:12px;color:#7c8d95}.walk-item .btn.primary{min-height:38px;padding:8px 14px;font-size:12px;background:#eff7f9;color:#087286;border:1px solid #c2dce2;white-space:nowrap}.walk-entry{background:#f5f9fa;margin:12px 0 0;padding:14px 16px}.walk-footnote{padding:16px 24px;font-size:12px;color:#71858f;background:#fafcfd;border-top:1px solid #e5edf0}@media(max-width:1050px){.walk-layout{grid-template-columns:210px minmax(0,1fr);gap:12px}.walk-toolbar{align-items:stretch;flex-direction:column;gap:12px}.walk-toolbar label{min-width:0}.walk-top{padding:20px}}@media(max-width:700px){.walk-top{align-items:flex-start;flex-direction:column;gap:14px}.walk-count{border-left:0;padding-left:0}.walk-layout{display:block}.walk-groups{position:static;flex-direction:row;overflow-x:auto;margin-bottom:12px;gap:6px}.walk-nav-title{display:none}.walk-groups button{flex:none;max-width:200px;min-height:48px}.walk-main .walk-item{padding:16px}.walk-item .btn.primary{min-height:44px}.walk-toolbar{padding:18px}.walk-top h2{font-size:22px}}
.walk-review-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#edf6f7;border:1px solid #cce0e4;border-radius:10px;padding:18px 22px;margin-bottom:16px}.walk-review-bar p{font-size:13px;color:#587681;margin:6px 0 0}.walk-draft{display:flex;align-items:center;justify-content:space-between;gap:16px;background:white;padding:12px 18px;border:1px solid #d9e4e9;border-radius:8px;margin-bottom:12px}.walk-review-item{border:1px solid #ccdbe1;border-radius:8px;padding:18px;margin:20px 0}.walk-review-item details{overflow-wrap:anywhere}.walk-review-item details p{white-space:pre-wrap}@media(max-width:800px){.walk-review-bar,.walk-draft{flex-direction:column;align-items:stretch}}
.nec-category-list{display:flex;flex-wrap:wrap;gap:6px;max-height:220px;overflow:auto;padding:8px 0}#nec-results{max-height:55vh;overflow:auto}#nec-message{color:var(--muted);padding:8px 0}
/* Craftsman explorer: category navigation and prices remain side by side. */
#modal:has(.nec-workspace){width:min(1440px,96vw);max-width:96vw;height:92dvh;max-height:92dvh;padding:0;overflow:hidden}
#modal:has(.nec-workspace) #modal-content{height:100%;display:flex;flex-direction:column;min-height:0}
#modal:has(.nec-workspace) .modal-head{flex:none;padding:18px 24px}
#modal:has(.nec-workspace) form{flex:1;min-height:0;display:flex;flex-direction:column;padding:16px 24px;gap:10px;overflow:hidden}
#modal:has(.nec-workspace) form>p{margin:0}
#modal:has(.nec-workspace) form>.fields{grid-template-columns:180px minmax(250px,1fr);max-width:760px;margin:0}
#modal:has(.nec-workspace) .form-footer{flex:none;margin:0;padding-top:10px}
#modal:has(.nec-workspace) .form-error:empty{display:none}
.nec-workspace{display:grid;grid-template-columns:310px minmax(0,1fr);gap:24px;flex:1;min-height:0;border-top:1px solid var(--line);padding-top:14px}
.nec-sidebar{display:flex;flex-direction:column;min-height:0;min-width:0;border-right:1px solid var(--line);padding-right:18px}
#nec-categories{display:flex;flex-direction:column;flex:1;min-height:0}
#nec-categories>p{margin:10px 0}
.nec-workspace .nec-category-list{display:flex;flex-direction:column;flex-wrap:nowrap;max-height:none;min-height:0;overflow-y:auto;gap:4px;padding:0 4px 12px 0}
.nec-category-list .btn{flex:none;text-align:left;justify-content:flex-start;white-space:normal;line-height:1.4;border-color:transparent;padding:10px 12px}
.nec-category-list .btn:hover{background:#f0f6f8}.nec-category-list .btn.selected{background:#e7f4f7;border-color:#087e98;color:#076981}
.nec-main{min-width:0;min-height:0;display:flex;flex-direction:column}
.nec-main #nec-message{flex:none;margin:0;padding:0 0 8px}
.nec-main #nec-message:empty{display:none}
.nec-main #nec-results{flex:1;max-height:none;min-height:0;overflow-y:auto;padding-right:12px}
.nec-main .rfq-card{padding:18px;background:#fff;border:1px solid var(--line);border-radius:8px;margin:12px 0}
@media(max-width:760px){#modal:has(.nec-workspace){width:98vw;max-width:98vw;height:96dvh;max-height:96dvh}#modal:has(.nec-workspace) form{padding:12px}.nec-workspace{grid-template-columns:190px minmax(0,1fr);gap:12px}.nec-sidebar{padding-right:10px}#modal:has(.nec-workspace) form>.fields{grid-template-columns:110px minmax(0,1fr)}}
@media(max-width:480px){.nec-workspace{grid-template-columns:1fr;grid-template-rows:180px minmax(0,1fr)}.nec-sidebar{border-right:0;border-bottom:1px solid var(--line);padding:0}.nec-category-list .btn{padding:6px 8px}}
#modal:has(.nec-workspace) form>.fields{grid-template-columns:150px minmax(230px,1fr) 180px;max-width:100%}
@media(max-width:760px){#modal:has(.nec-workspace) form>.fields{grid-template-columns:100px minmax(0,1fr)}#modal:has(.nec-workspace) form>.fields>:last-child{grid-column:1/-1}}

.gantt-scroll{overflow-x:scroll;scrollbar-gutter:stable;scrollbar-width:auto}.gantt-scroll::-webkit-scrollbar{height:13px}.gantt-scroll::-webkit-scrollbar-track{background:#e8edf5}.gantt-scroll::-webkit-scrollbar-thumb{background:#8b9db5;border-radius:7px;border:2px solid #e8edf5}.gantt-scroll .gantt-task-cell,.gantt-scroll .gantt-task-head{position:sticky;left:0;z-index:5}.gantt-scroll .gantt-percent{position:sticky;left:310px;z-index:5}@media print{.planning-gantt.refined-gantt{width:100%!important;min-width:0!important}.gantt-scroll .gantt-task-cell,.gantt-scroll .gantt-task-head,.gantt-scroll .gantt-percent{position:static}}

.team-card-preview{width:100%;height:60vh;border:0}.team-card-image{max-width:100%;max-height:60vh;object-fit:contain}
/* Operational document review uses the available desktop width. */
dialog.finance-modal{width:min(1200px,96vw);max-width:96vw}.finance-modal .table-wrap{overflow:auto}.finance-cost-line{align-items:end}.submittal-material{margin:18px 0;padding:16px;border:1px solid #d9e0e7;border-radius:10px}

.co-entry{padding:12px 0;border-bottom:1px solid #d5e1e6}.co-entry .fields{align-items:end}.co-section .panel-head{padding:0 0 10px}.co-entry [data-cost-total]{padding:12px}[data-co-photos]>div{display:flex;align-items:center;gap:12px;margin:8px 0;flex-wrap:wrap}

.co-entry{background:#f5f8fa;border:1px solid #d5e1e6;border-left:3px solid var(--cyan);border-radius:7px;padding:16px;margin:14px 0}.co-entry header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.co-entry-main{margin-bottom:16px}.co-entry-costs{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:12px}.co-entry[data-kind="labor"] .co-entry-costs{grid-template-columns:repeat(3,minmax(0,1fr))}.co-entry .field{min-width:0}.co-entry input{min-height:44px;box-sizing:border-box}.co-entry [data-cost-total]{display:block;margin-top:7px;min-height:44px;padding:12px;background:#e5f3ed;border:1px solid #c9e2d5;border-radius:4px;color:var(--green);font-variant-numeric:tabular-nums}.co-formula{color:var(--muted);text-align:right}.co-section>p{border-top:1px solid var(--line);padding-top:14px}.co-section>p strong{display:flex;justify-content:space-between}.co-entry .field:last-child{margin-bottom:0}@media(max-width:700px){.co-entry .fields,.co-entry[data-kind="labor"] .co-entry-costs{grid-template-columns:1fr 1fr}.co-entry{padding:12px}.co-entry-main>.field:last-child,.co-line-total{grid-column:1/-1}}

/* Full-width reference workspace for preserved estimates and their items. */
#modal:has(.estimate-history-table){width:96vw;max-width:1600px;height:90dvh;max-height:94dvh;overflow:hidden}
#modal:has(.estimate-history-table) #modal-content{height:100%;display:flex;flex-direction:column;min-height:0}
#modal:has(.estimate-history-table) .modal-head{flex:none}
#modal:has(.estimate-history-table) form{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;gap:12px}
#modal:has(.estimate-history-table) form>p{margin:0;flex:none}
#modal:has(.estimate-history-table) .field{flex:none}
#modal:has(.estimate-history-table) .form-footer{flex:none;margin-top:0}
#modal:has(.estimate-history-table) .form-error:empty{display:none}
.estimate-history-table{flex:1;min-height:0;overflow:auto}
.estimate-history-table table{width:100%}
.estimate-history-table th{position:sticky;top:0;z-index:1;background:#f2f5f7;white-space:normal}
.estimate-history-table td:first-child{min-width:230px;max-width:380px;white-space:normal}
.estimate-history-table td{vertical-align:top}
@media(max-width:700px){#modal:has(.estimate-history-table){width:98vw;height:94dvh}#modal:has(.estimate-history-table) form{padding:12px}.estimate-history-table td:first-child{min-width:180px}}
#modal:has(.daily-editor){width:min(1100px,96vw);max-width:96vw}.daily-editor textarea{min-height:100px}.daily-activity{border:1px solid var(--line);border-radius:8px;padding:16px;margin:12px 0}.daily-photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.daily-photo-grid figure{margin:0}.daily-photo-grid img{max-width:100%;height:160px;object-fit:contain}.daily-editor button,.daily-editor input,.daily-editor select{min-height:44px}.daily-editor [data-daily-suggestion] textarea{width:100%}
/* Tablet-friendly diary workspace: source records beside the English review. */
#modal:has(.daily-editor){width:min(1440px,97vw);max-width:97vw;height:94dvh;max-height:94dvh;padding:0;overflow:hidden;color:var(--ink)}
#modal:has(.daily-editor) #modal-content{height:100%;display:flex;flex-direction:column;min-height:0}
#modal:has(.daily-editor) .modal-head{padding:18px 24px;flex:none}
#modal:has(.daily-editor) form{padding:0;display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}
.daily-editor{flex:1;overflow-y:auto;min-height:0;padding:22px;background:#f2f6f8}
.daily-intro{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.daily-intro h2{font-size:23px;margin:5px 0}.daily-intro p{margin:4px 0 0;font-size:14px;color:var(--muted)}.daily-pill{border:1px solid #c6e6ed;background:#e8f6f8;border-radius:20px;padding:9px 16px;font-size:12px;color:#08657a;white-space:nowrap}
.daily-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px;align-items:start}.daily-source{display:grid;gap:18px;min-width:0}.daily-section{background:white;border:1px solid #dce6eb;border-radius:12px;padding:22px;min-width:0;box-shadow:0 2px 6px #082b4005}.daily-section h3{display:flex;align-items:center;gap:10px;font-size:17px;margin:0 0 20px}.daily-section h3>span{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border-radius:8px;background:#e7f4f7;color:#087e98;font-size:12px}.daily-english{border-top:4px solid #087e98}
.daily-editor label.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px;font-size:13px;font-weight:600;line-height:1.5}.daily-editor .fields{gap:16px;align-items:end;margin-bottom:0}.daily-editor input:not([type=checkbox]):not([type=hidden]),.daily-editor select,.daily-editor textarea{width:100%;box-sizing:border-box;font:inherit;font-size:15px;color:var(--ink);border:1px solid #bfced7;border-radius:7px;padding:11px 12px;background:#fff;min-height:46px}.daily-editor textarea{min-height:110px;line-height:1.6;resize:vertical}.daily-editor textarea[name=english_report]{min-height:310px}.daily-editor input[type=file]{font-size:12px;background:#f6fafc;border:1px dashed #a8c4d0;padding:14px 10px}.daily-editor .check-row{align-items:flex-start;font-size:13px;line-height:1.6;margin:15px 0}.daily-editor input[type=checkbox]{width:18px;height:18px;flex:none;min-height:18px;margin-top:2px}.daily-activity{padding:16px;background:#f8fbfc;margin:0 0 14px;border-radius:9px}.daily-activity [data-daily-remove]{color:#8b4b4b;background:transparent;border-color:transparent;padding:4px 0;font-size:12px;min-height:36px}.daily-editor [data-daily-add]{border-style:dashed;width:100%;color:#087e98;margin-bottom:18px}.daily-editor [data-daily-ai]{background:#087e98;color:white;border-color:#087e98;width:100%}
#modal:has(.daily-editor) .form-footer{padding:14px 24px;margin:0;background:white;border-top:1px solid var(--line);flex:none}#modal:has(.daily-editor) .form-error:empty{display:none}#modal:has(.daily-editor) .form-error:not(:empty){padding:10px 24px;margin:0}
@media(max-width:900px){.daily-layout{grid-template-columns:1fr}.daily-intro{align-items:flex-start}.daily-pill{display:none}.daily-editor{padding:16px}.daily-section{padding:18px}.daily-editor textarea[name=english_report]{min-height:220px}}
@media(max-width:520px){.daily-editor .fields{grid-template-columns:1fr}.daily-intro h2{font-size:20px}.daily-section{padding:14px}}

/* JMO visual identity: navy navigation, clear work surfaces and restrained accents. */
:root{--navy:#102e50;--cyan:#087f9b;--bright:#36c5dc;--bg:#f1f6fa;--line:#dce6ef;--ink:#19344d;--muted:#61788c}
body{background:linear-gradient(145deg,#edf5fa 0%,#f7f9fc 65%,#edf6f8 100%)}
.top{background:#102e50;border-bottom:3px solid #24b9d0;box-shadow:0 2px 12px #092b4214}
.shell>aside{background:linear-gradient(180deg,#102e50,#15395c);border-right:1px solid #214668;color:#d6e5f2}
.shell>aside .nav-label{color:#8eabc7;font-size:10px;font-weight:700;letter-spacing:1.6px;margin-top:22px}
.shell>aside .nav{color:#c3d5e6;border-radius:8px;border-left:3px solid transparent;padding:12px 10px;transition:background .15s,color .15s}
.shell>aside .nav:hover:not(:disabled){background:#224c70;color:#fff}
.shell>aside .nav.active{background:#245680;color:#fff;border-left-color:#36c5dc;box-shadow:0 3px 10px #061a2b22}
.shell>aside .nav:disabled{color:#99b0c5;opacity:.65}
.shell>aside .aside-footer{color:#92aec7;border-top:1px solid #2b4b69;margin-top:auto;padding-top:20px}
main>.eyebrow,.heading .eyebrow,.prep-header .eyebrow{color:#087f9b;font-weight:650}
h1{color:#102e50}h2{color:#173b59}
.panel{border-color:#dae5ee;border-radius:11px;box-shadow:0 3px 12px #163c5606;overflow:hidden}
.panel-head{background:linear-gradient(90deg,#f3f9fc,#fff);border-bottom-color:#e1eaf1}
.btn{border-radius:7px;border-color:#cedde8;transition:background .15s,box-shadow .15s}
.btn:hover:not(:disabled){background:#eef7fa;border-color:#9cc7d6}
.btn.primary{background:#087f9b;border-color:#087f9b;color:#fff;box-shadow:0 2px 5px #087f9b1c}
.btn.primary:hover:not(:disabled){background:#076d86;border-color:#076d86;color:#fff}
.tabs{border-bottom-color:#cbdde9;gap:4px}.tab{border-radius:7px 7px 0 0}.tab:hover{background:#e6f1f7}.tab.active{background:#e4f3f8;color:#066f8b;border-bottom-color:#0c91ad}
.metrics{gap:14px;background:transparent;border:0;overflow:visible}
.metrics>div{background:#fff;border:1px solid #dbe7ef;border-top:3px solid #1c809d;border-radius:10px;box-shadow:0 3px 10px #163c5607;padding:20px}
.metrics>div:nth-child(2){border-top-color:#537eb7}.metrics>div:nth-child(3){border-top-color:#279b82}.metrics>div:nth-child(4){border-top-color:#c5983e}
.metrics strong{color:#153c59}.metrics label{color:#587287}
.bid-kpi,.prep-metrics>div{border-radius:10px;border-top:3px solid #258ba6;background:#fff;box-shadow:0 3px 10px #163c5607}
.bid-kpi:nth-child(2),.prep-metrics>div:nth-child(2){border-top-color:#547fb8}.bid-kpi:nth-child(3){border-top-color:#b99643}.bid-kpi:nth-child(4){border-top-color:#28987e}
th{background:#edf5fa;color:#466883}tbody tr:hover{background:#f3f9fc}
input:focus,select:focus,textarea:focus{outline:2px solid #42a9c25c;outline-offset:1px;border-color:#198ba7}
.badge.approved{background:#e5f5ee;color:#176c50}.badge.neutral{background:#e9f2fa;color:#315f85}.badge.pending{background:#fff4da;color:#815b16}
#modal{border-color:#d4e3ed;box-shadow:0 22px 70px #082b4038;border-radius:12px}.modal-head{background:#f1f8fc;border-bottom-color:#dce9f1}.modal-head h2{color:#123954}
@media(prefers-reduced-motion:reduce){.btn,.shell>aside .nav{transition:none}}
/* Project sections: distinct, touch-friendly tabs rather than a line of labels. */
.tabs[role=tablist]{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px;background:#e5eff6;border:1px solid #cfdfeb;border-radius:12px;margin-bottom:24px;overflow:visible}
.tabs[role=tablist]>.tab{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:44px;padding:10px 16px;margin:0;border:1px solid #ccdce8;border-radius:8px;background:#fff;color:#42617b;font-size:13px;font-weight:600;line-height:1.35;white-space:nowrap;box-shadow:0 1px 2px #12395408}
.tabs[role=tablist]>.tab:hover{background:#f1fafd;border-color:#75b7ca;color:#076f88}
.tabs[role=tablist]>.tab.active{background:#123c60;color:#fff;border-color:#123c60;box-shadow:inset 0 -3px 0 #36c5dc,0 2px 5px #1239541a}
.tabs[role=tablist]>.tab:focus-visible{outline:3px solid #18a7c4;outline-offset:2px}
@media(max-width:700px){.tabs[role=tablist]{gap:7px;padding:10px}.tabs[role=tablist]>.tab{padding:10px 13px;font-size:13px}}
/* File-folder tabs: overlapping shoulders, with the selected folder in front. */
.tabs[role=tablist]{isolation:isolate;position:relative;display:flex;flex-wrap:nowrap;align-items:flex-end;gap:0;padding:12px 10px 0;background:transparent;border:0;border-bottom:2px solid #b5cfdf;border-radius:0;margin-bottom:22px;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#9bb9cd transparent}
.tabs[role=tablist]>.tab{position:relative;z-index:1;flex:0 0 auto;min-height:46px;margin:0 -6px 0 0;padding:13px 23px 12px;border:1px solid #b5cfdf;border-bottom:0;border-radius:13px 18px 0 0;background:linear-gradient(180deg,#e4eef5,#d5e4ee);color:#46677f;font-size:13px;font-weight:600;line-height:1.35;box-shadow:3px -2px 5px #12395409;transform:skewX(-7deg);transform-origin:bottom;white-space:nowrap}
.tabs[role=tablist]>.tab:hover{z-index:3;background:linear-gradient(180deg,#f4fbff,#e7f3f9);border-color:#79aebf;color:#0a6882}
.tabs[role=tablist]>.tab.active{z-index:5;min-height:54px;padding-top:17px;padding-bottom:15px;background:#fff;color:#123c60;border-color:#8eafc5;box-shadow:inset 0 4px 0 #1598b5,3px -2px 8px #12395412}
.tabs[role=tablist]>.tab:focus-visible{z-index:6;outline:2px solid #087f9b;outline-offset:-4px}
@media(max-width:700px){.tabs[role=tablist]{gap:0;padding:10px 8px 0}.tabs[role=tablist]>.tab{padding:12px 20px;margin-right:-6px}.tabs[role=tablist]>.tab.active{padding:16px 20px}}
/* Compact folder tabs for the complete project navigation on desktop. */
.tabs[role=tablist]{padding-top:8px}
.tabs[role=tablist]>.tab{min-height:36px;padding:9px 13px 8px;font-size:12px;letter-spacing:-.15px;border-radius:10px 14px 0 0;margin-right:-5px}
.tabs[role=tablist]>.tab.active{min-height:42px;padding:12px 13px 11px;box-shadow:inset 0 3px 0 #1598b5,3px -2px 8px #12395412}
@media(min-width:1100px){.tabs[role=tablist]>.tab{flex:0 1 auto;min-width:0;padding-left:11px;padding-right:11px}}
@media(max-width:700px){.tabs[role=tablist]>.tab{min-height:44px;padding:12px 15px;font-size:12px}.tabs[role=tablist]>.tab.active{min-height:48px;padding:14px 15px}}
/* JMO blue folder tabs, with an unmistakable selected state. */
.tabs[role=tablist]{border-bottom-color:#3988aa}
.tabs[role=tablist]>.tab{background:linear-gradient(180deg,#c5e8f5,#aed9ed);border-color:#76b4d0;color:#174966;box-shadow:3px -2px 5px #12395412}
.tabs[role=tablist]>.tab:hover{background:linear-gradient(180deg,#9bdef0,#79cbe4);border-color:#3397b8;color:#103a56}
.tabs[role=tablist]>.tab.active{background:linear-gradient(180deg,#194e77,#123c60);border-color:#123c60;color:#fff;box-shadow:inset 0 3px 0 #36d4e8,3px -2px 8px #12395424}
.tabs[role=tablist]>.tab:focus-visible{outline-color:#08a7c7}
/* Slightly roomier folders with a muted petroleum palette. */
.tabs[role=tablist]{border-bottom-color:#437581}
.tabs[role=tablist]>.tab{min-height:40px;padding:11px 14px 10px;font-size:12.5px;background:linear-gradient(180deg,#427783,#32616f);border-color:#244f5d;color:#f5fbfc}
.tabs[role=tablist]>.tab:hover{background:linear-gradient(180deg,#518c97,#3a7784);border-color:#235968;color:#fff}
.tabs[role=tablist]>.tab.active{min-height:46px;padding:14px 14px 13px;background:linear-gradient(180deg,#173b52,#102e43);border-color:#102e43;color:#fff;box-shadow:inset 0 3px 0 #43c8c5,3px -2px 8px #12395424}
@media(min-width:1100px){.tabs[role=tablist]>.tab{padding-left:12px;padding-right:12px}}
@media(max-width:700px){.tabs[role=tablist]>.tab{min-height:44px;padding:12px 15px}.tabs[role=tablist]>.tab.active{min-height:48px;padding:14px 15px}}
/* Match the folder navigation to the JMO sidebar navy. */
.tabs[role=tablist]{border-bottom-color:#244b6c}
.tabs[role=tablist]>.tab{background:#173b5d;border-color:#0e2c48;color:#e0ecf6}
.tabs[role=tablist]>.tab:hover{background:#245476;border-color:#173c5c;color:#fff}
.tabs[role=tablist]>.tab.active{background:#102e50;border-color:#102e50;color:#fff;box-shadow:inset 0 3px 0 #36c5dc,3px -2px 8px #12395424}
/* Lighter folder palette, retaining the approved shape and size. */
.tabs[role=tablist]{border-bottom-color:#a6c7dd}
.tabs[role=tablist]>.tab{background:#dcecf8;border-color:#a6c7dd;color:#284d6c}
.tabs[role=tablist]>.tab:hover{background:#c7e3f5;border-color:#79aecb;color:#173f60}
.tabs[role=tablist]>.tab.active{background:#b9dcef;border-color:#78acc8;color:#143d59;box-shadow:inset 0 3px 0 #0796b5,3px -2px 8px #12395412}
/* Restore the user's preferred petroleum folders and navy active tab. */
.tabs[role=tablist]{border-bottom-color:#437581}
.tabs[role=tablist]>.tab{background:linear-gradient(180deg,#427783,#32616f);border-color:#244f5d;color:#f5fbfc}
.tabs[role=tablist]>.tab:hover{background:linear-gradient(180deg,#518c97,#3a7784);border-color:#235968;color:#fff}
.tabs[role=tablist]>.tab.active{background:linear-gradient(180deg,#173b52,#102e43);border-color:#102e43;color:#fff;box-shadow:inset 0 3px 0 #43c8c5,3px -2px 8px #12395424}

/* Compact, color-coded WBS; scoped to keep other tables and folder tabs intact. */
.wbs-visual .panel-head{padding:10px 14px;gap:10px}
.wbs-visual .panel-head h2{font-size:16px;margin:0}
.wbs-visual .panel-head .actions{gap:6px}
.wbs-visual .panel-head .btn{font-size:11px;min-height:30px;padding:6px 9px;border-radius:5px;box-shadow:none}
.wbs-visual table{font-size:11px;font-variant-numeric:tabular-nums}
.wbs-visual table thead th{padding:8px 6px;background:#122f53;color:#fff;font-size:10px;letter-spacing:.025em}
.wbs-visual table tbody td{padding:6px;border-bottom:1px solid #dfe8f3;font-size:11px;line-height:1.35}
.wbs-visual table tbody .wbs-parent{background:#eaf3ff}
.wbs-visual table tbody .wbs-child{background:#fbfdff}
.wbs-visual table tbody .wbs-child:nth-child(even){background:#f4f8ff}
.wbs-visual table tbody tr:hover{background:#e5f2ff}
.wbs-visual .wbs-title{gap:6px}
.wbs-visual .wbs-title strong{font-size:11px;font-weight:500;line-height:1.4}
.wbs-visual .wbs-parent .wbs-title strong{font-weight:650}
.wbs-visual .wbs-code,.wbs-visual .wbs-branch{color:#6255d9}
.wbs-visual .wbs-parent .wbs-code{color:#173b65}
.wbs-visual .wbs-value{color:#183b65;text-align:right}
.wbs-visual .wbs-remaining{color:#b65300;font-weight:700;text-align:right}
.wbs-visual td:nth-child(7){color:#087c58;text-align:right}
.wbs-visual td:nth-child(8){color:#b65300;text-align:right}
.wbs-visual td:nth-child(9){color:#65758b;text-align:right}
.wbs-visual td[title]{color:#7c899a}
.wbs-visual .wbs-progress small{font-size:10px;color:#526f91}
.wbs-visual .wbs-progress progress{accent-color:#139778}
.wbs-visual .wbs-status{font-size:9px;letter-spacing:.035em;padding:3px 5px}
.wbs-visual .wbs-status.started{background:#e0edff;color:#245ab3}
.wbs-visual .wbs-status.done{background:#dcf7ec;color:#067348}
.wbs-visual .wbs-actions{gap:4px}
.wbs-visual .wbs-actions .btn{width:26px;min-width:26px;height:26px;padding:4px;border-radius:5px;background:#fff;box-shadow:none}
.wbs-visual .wbs-actions .btn svg{width:15px;height:15px}
.wbs-visual .wbs-actions [data-action="new-progress"]{color:#079365;border-color:#a9dfcc;background:#f1fcf7}
.wbs-visual .wbs-actions [data-action="planning-child"]{color:#7951cf;border-color:#d9c8f6;background:#f8f4ff}
.wbs-visual .wbs-actions [data-action="new-subcontract"]{color:#b96605;border-color:#f2d0a2;background:#fff8ee}
.wbs-visual .wbs-actions [data-action="planning-edit-item"],.wbs-visual .wbs-actions [data-action="planning-edit-progress"]{color:#286ed0;border-color:#bad2f5;background:#f2f7ff}
.wbs-visual .wbs-actions [data-action="planning-dates"]{color:#067f91;border-color:#a6dce3;background:#eefbfd}
.wbs-visual .wbs-actions [data-action="issue-create"]{color:#b66a08;border-color:#f0d5ac;background:#fff9ef}
.wbs-visual .wbs-actions .btn:hover{filter:brightness(.94);transform:translateY(-1px)}
.wbs-visual .panel-head a[download],.wbs-visual .panel-head [data-action="new-wbs"]{background:#098461;border-color:#098461;color:#fff}
.wbs-visual .panel-head [data-action="wbs-import"]{background:#173b65;border-color:#173b65;color:#fff}
.wbs-visual .panel-head [data-action="wbs-source"]{background:#edf0ff;border-color:#c8d1ee;color:#5144a2}
.wbs-visual .panel-head [data-action="new-subcontract"]{background:#fff5e7;border-color:#eacba0;color:#965100}
.wbs-visual .panel-head .btn:disabled{opacity:.45;cursor:not-allowed}
.wbs-visual .fine{font-size:11px}
@media(pointer:coarse){.wbs-visual .wbs-actions .btn{width:44px;min-width:44px;height:44px}.wbs-visual .panel-head .btn{min-height:44px}}

/* Materials: separate requirements from consistently aligned row actions. */
.materials-panel .panel-head{background:linear-gradient(110deg,#edf8f6,#f4f8ff);border-top:3px solid #168974;align-items:flex-start;gap:18px}
.materials-panel .panel-head h2{color:#174c52;font-size:18px}
.materials-panel .panel-head p{font-size:12px;color:#526a7d;max-width:650px;margin:5px 0 0}
.materials-panel .panel-head .actions{gap:7px;flex-wrap:wrap}
.materials-panel .materials-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#f4fafb;border-bottom:1px solid #dce9ed;padding:12px 16px}
.materials-panel .materials-toolbar>b{font-size:12px;color:#355571;padding:6px 10px;background:#e6eef7;border-radius:6px}
.materials-panel table{font-size:12px;min-width:1050px}
.materials-panel table th{background:#173b55;color:#fff;font-size:10px;padding:10px;letter-spacing:.035em}
.materials-panel table td{padding:12px 10px;vertical-align:middle;border-bottom:1px solid #e1ebf1}
.materials-panel tbody tr:nth-child(even){background:#f5fafc}
.materials-panel tbody tr:hover{background:#edf7f7}
.materials-panel td:nth-child(2){min-width:200px}
.materials-panel td:nth-child(3){font-weight:650;color:#225876;white-space:nowrap;font-variant-numeric:tabular-nums}
.materials-panel td:nth-child(4){color:#28634f;min-width:170px;font-variant-numeric:tabular-nums}
.materials-panel td:nth-child(4) small{color:#65768a}
.materials-panel .material-submittal-status{min-width:125px}
.material-requirement{display:table;border-radius:5px;padding:4px 8px;font-size:11px;font-weight:650;white-space:nowrap}
.material-requirement.required{background:#fff0d9;color:#995300}
.material-requirement.optional{background:#e8f1f4;color:#4c6678}
.material-submittal-status>.btn{display:block;margin-top:7px}
.material-row-actions{display:grid;grid-template-columns:1fr;gap:7px;min-width:140px}
.material-row-actions .btn{width:100%;margin:0;white-space:nowrap;text-align:center}
.materials-panel .btn{font-size:11px;border-radius:6px;padding:7px 10px;box-shadow:none}
.materials-panel [data-action="material-submittal"],.materials-panel [data-action="material-submittal-select"]{background:#f1ecff;border-color:#d8c9f4;color:#6842a3}
.materials-panel [data-action="material-detail"]{background:#e7f6f0;border-color:#abd9c7;color:#116c4b}
.materials-panel [data-action="material-template"]{background:#168260;border-color:#168260;color:#fff}
.materials-panel [data-action="material-import"]{background:#214e74;border-color:#214e74;color:#fff}
.materials-panel [data-action="material-from-estimate"]{background:#eef0ff;border-color:#c8d1f0;color:#4d51a1}
.materials-panel [data-action="material-submit"],.materials-panel [data-action="material-approve"]{background:#087d78;border-color:#087d78;color:#fff}
.materials-panel [data-action="material-edit"]{background:#fff6e6;border-color:#ead1a5;color:#925506}
.materials-panel .btn:hover{filter:brightness(.95)}
@media(pointer:coarse){.materials-panel .btn{min-height:44px}}
.rfq-pick{display:block;padding:10px;border-bottom:1px solid #dde8ef;font-size:13px}.rfq-vendor{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px;background:#f2f8fc;margin:5px 0}.rfq-vendor input[type=email]{max-width:340px}.rfq-quote-row{border:1px solid #cbdfe6;border-radius:8px;margin:14px 0;padding:14px}.rfq-quote-row legend{font-weight:650;color:#165961}

/* Purchasing workspace */
.hub-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 22px}.hub-tabs button{border:1px solid #b7cedb;border-radius:9px;background:#e8f3f6;padding:11px 16px;color:#235165;font-weight:650;cursor:pointer}.hub-tabs button.active{background:#164657;color:white;border-color:#164657;box-shadow:inset 0 3px #39c6cf}.hub-filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin:18px 0}.hub-filters .field{flex:1;min-width:140px}.hub-metrics{display:flex;gap:16px;flex-wrap:wrap;margin:18px 0}.hub-metrics>div{background:#edf7f5;border-left:4px solid #219782;border-radius:8px;padding:18px;min-width:200px;flex:1}.hub-metrics b{display:block;font-size:25px;color:#164657}.hub-actions{display:flex;gap:12px;margin:16px 0}.hub-actions .btn{background:#e6f4ed;color:#15634a}.hub-request-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.hub-table{max-height:65vh}.hub-table th{position:sticky;top:0;background:#edf5f8}.hub-table td{font-size:12px;padding:9px}.hub-table small,small.hub-warning{display:block}.hub-warning{color:#9b5a00}.hub-bar{display:flex;gap:18px;align-items:center;padding:10px}.hub-bar progress{flex:1}.hub-item{border:1px solid #c6d9e0;border-radius:8px;padding:16px;margin:12px 0}.hub-item .fields{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
/* Compact purchasing entry: one row per selected material. */
.direct-header{display:grid;grid-template-columns:1.4fr 1.4fr 1fr 1fr;gap:14px;margin:18px 0 24px}.direct-header .field{margin:0}.direct-table{min-width:810px;width:100%}.direct-table td{vertical-align:top;padding:12px 9px}.direct-table td:nth-child(2){min-width:235px;max-width:380px}.direct-table td:nth-child(3),.direct-table td:nth-child(4){width:115px}.direct-table input[type=number]{width:100%;min-width:75px;padding:9px;border:1px solid #cbd5e1;border-radius:6px}.direct-table input[type=checkbox]{width:17px;height:17px;accent-color:#147d86}.direct-table small{display:block;color:#62758a;margin-top:5px;font-size:11px}.direct-table tr.selected{background:#eff9f8}.direct-table summary{cursor:pointer;color:#147d86;font-weight:600;white-space:nowrap}.direct-table details .field{margin:10px 0 0;min-width:100px}.direct-table .direct-total{white-space:nowrap;font-weight:650;padding-top:23px}.direct-summary{display:flex;justify-content:space-between;align-items:center;padding:16px;background:#e7f3f4;border-radius:9px;margin-top:15px;color:#174956}.direct-summary strong{font-size:20px}@media(max-width:950px){.direct-header{grid-template-columns:1fr 1fr}}@media(max-width:550px){.direct-header{grid-template-columns:1fr}.direct-summary{font-size:12px}.direct-summary strong{font-size:17px}}
/* Align native Safari selects with text/date controls in the purchase header. */
.direct-header{align-items:end}.direct-header .field{display:flex;flex-direction:column;justify-content:flex-end;gap:8px;min-width:0}.direct-header .field>small{display:none}.direct-header .field>input:not([type=hidden]),.direct-header .field>select{box-sizing:border-box;display:block;width:100%;height:44px;min-height:44px;margin:0;padding:10px 12px;border:1px solid #bdcedb;border-radius:6px;background-color:#fff;color:#173448;line-height:22px;font-size:14px}.direct-header .field>select{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23496175' stroke-width='1.6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.purchasing-buyer-inline{font-size:13px;color:#62758a;margin:-5px 0 15px;padding:0 2px}.purchasing-buyer-inline strong{color:#294e60;font-weight:600}
.hub-metrics small{display:block;margin-top:5px;color:#62758a;font-size:11px}.hub-metrics>div:last-child b{font-variant-numeric:tabular-nums}

/* Structured customer/vendor registration. */
.party-form{display:grid;gap:16px}.party-form-section{border:1px solid #d9e5ec;border-radius:12px;padding:20px;background:#fff}.party-section-title{display:flex;align-items:center;gap:12px;margin-bottom:18px}.party-section-title>span{display:grid;place-items:center;width:36px;height:36px;flex-shrink:0;border-radius:10px;background:#e2f3f2;color:#22636a;font-size:13px;font-weight:750}.party-section-title h3{margin:0;color:#163b52;font-size:17px}.party-section-title p{margin:5px 0 0;color:#627785;font-size:13px}.party-form .fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.party-form .field{margin:0;min-width:0}.party-form input:not([type=checkbox]),.party-form select{width:100%;min-height:44px;margin-top:7px;border:1px solid #c9d9e2;border-radius:7px;background:#fbfdff;padding:10px 12px}.party-form .check-row{margin-top:16px;gap:14px;flex-wrap:wrap}.party-contact-row{padding:14px;background:#f3f8fb;border-radius:9px;margin-bottom:12px}.party-contact-row>.btn{margin-top:12px}.party-form input:focus,.party-form select:focus{outline:2px solid #2f8796;outline-offset:2px}@media(max-width:600px){.party-form .fields{grid-template-columns:1fr}.party-form-section{padding:14px}}

/* Fit the entire schedule horizontally on paper; retain daily scrolling on screen. */
.gantt-print-head,.gantt-month-grid{display:none}
@media print {
 @page jmo-schedule {size:A3 landscape;margin:10mm}
 body:has(.planning-gantt){page:jmo-schedule}
 body:has(.planning-gantt) .top,body:has(.planning-gantt) aside,
 body:has(.planning-gantt) main> :not(.gantt-panel),
 body:has(.planning-gantt) .gantt-screen-head{display:none!important}
 body:has(.planning-gantt) .shell{display:block!important;margin:0!important}
 body:has(.planning-gantt) main{padding:0!important;margin:0!important;max-width:none!important;width:100%!important}
 .gantt-panel{border:0!important;box-shadow:none!important;overflow:visible!important}
 .planning-gantt thead{display:table-header-group!important;break-inside:avoid!important;page-break-inside:avoid!important}
 .gantt-print-head{display:table-row!important;break-inside:avoid!important;page-break-inside:avoid!important}
 .gantt-scroll{overflow:visible!important;max-height:none!important;height:auto!important}
 .planning-gantt tbody{display:table-row-group!important}
 .gantt-print-head th{font-size:8pt!important;padding:7px 1px!important;color:#173c58!important;background:#e3edf4!important;border:1px solid #b7cbd9!important}
 .gantt-print-head small{display:block;font-weight:normal;font-size:7pt;margin-top:3px}
 .planning-gantt.refined-gantt{width:100%!important;min-width:0!important;table-layout:fixed!important}
 .refined-gantt col.gantt-col-task{width:29%!important}
 .refined-gantt col.gantt-col-percent{width:3%!important}
 .refined-gantt col.gantt-col-day{width:auto!important}
 .refined-gantt tbody tr{break-inside:avoid;page-break-inside:avoid}
 .refined-gantt td{height:28px!important;font-size:7pt!important}
 .gantt-task-cell>div{gap:5px!important;padding-top:4px;padding-bottom:4px}
 .gantt-task-name{display:block!important;overflow:visible!important;font-size:7pt!important}
 .gantt-code{font-size:6.5pt!important}
 .gantt-day-bg,.gantt-bar-label{display:none!important}
 .gantt-month-grid{display:block;position:absolute;top:0;bottom:0;border-left:1px solid #bfd0dc;pointer-events:none}
 .gantt-bar{top:8px!important;height:12px!important;background:#4c91b5!important;border:1px solid #36799e;border-radius:2px!important;print-color-adjust:exact}
 .gantt-bar.parent-bar{background:#173e5a!important;border-color:#173e5a}
 .gantt-fill{background:#29a476!important}
 .gantt-undated{font-size:7pt!important}
 .gantt-panel .panel-head{padding:4px 0 8px!important}
 .gantt-legend{padding:8px 0!important;font-size:7pt!important}
 .gantt-legend .planned{background:#4c91b5!important}
}

/* Every physical page owns a complete month header, including Safari printing. */
#schedule-print-pages{display:none}
@media print {
 body:has(#schedule-print-pages)>:not(#schedule-print-pages){display:none!important}
 #schedule-print-pages{display:block!important}
 body:has(#schedule-print-pages){margin:0!important;padding:0!important;background:white!important}
 #schedule-print-pages{margin:0!important;padding:0!important}
 .schedule-paper-page{margin:0!important;padding:0!important;border:0!important;min-height:0!important;height:auto!important;break-before:auto;page-break-before:auto;break-after:auto;page-break-after:auto;break-inside:auto;page-break-inside:auto}
 .schedule-paper-page+.schedule-paper-page{break-before:page;page-break-before:always}
 #schedule-print-pages table{margin:0!important}
 #schedule-print-pages .gantt-task-cell{white-space:normal!important}
 #schedule-print-pages .gantt-task-name{overflow-wrap:anywhere}
 .schedule-paper-title{font-size:11pt;font-weight:700;color:#173e5a;margin:0 0 8px}
 .schedule-paper-footer{font-size:8pt;color:#526878;text-align:right;margin-top:8px}
 #schedule-print-pages .gantt-print-head{display:table-row!important}
 #schedule-print-pages .gantt-task-cell,#schedule-print-pages .gantt-percent{position:static!important}
 #schedule-print-pages .gantt-task-name{font-size:7pt!important;line-height:1.2!important}
 #schedule-print-pages td{height:30px!important}
}

/* Tablet field workspace: full-width content and touch-sized navigation. */
.tablet-menu,.tablet-shade,.tablet-project-cards{display:none}
@media screen and (max-width:1250px){
 .top{height:64px;padding:0 18px;gap:12px;position:sticky;top:0;z-index:50}
 .top .context-label{display:none}.top .identity{gap:10px;font-size:13px}.top .brand{font-size:21px}
 .tablet-menu{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid #638198;border-radius:8px;background:transparent;color:white}
 .shell{display:block;min-height:calc(100dvh - 64px)}
 .shell>aside{display:none;position:fixed;left:0;top:64px;bottom:0;width:270px;overflow:auto;z-index:60;box-shadow:8px 0 30px #102d4b33;padding:18px 12px}
 .tablet-menu-open .shell>aside{display:flex}.tablet-menu-open .tablet-shade{display:block;position:fixed;inset:64px 0 0;background:#0b233a66;border:0;z-index:55;width:100%}
 .shell>main{padding:22px 24px;max-width:none;min-width:0}
 main>.heading{margin-bottom:20px;gap:16px}main>.heading h1{font-size:24px;line-height:1.3;overflow-wrap:anywhere}
 .heading>div:first-child{min-width:0}.heading>.actions{flex-shrink:0;max-width:260px}
 .tabs[role=tablist]{display:flex;flex-wrap:wrap;gap:7px;white-space:normal;overflow:visible;padding:0 0 12px;margin:0 0 18px;border-bottom:1px solid #bfd2dd;isolation:auto}
 .tabs[role=tablist]>.tab,.tabs[role=tablist]>.tab.active{flex:0 0 auto;min-width:0;max-width:none;min-height:44px;height:auto;margin:0;padding:10px 15px;transform:none;clip-path:none;border-radius:8px;font-size:13px;font-style:normal;white-space:nowrap;box-shadow:none;position:relative}
 .tabs[role=tablist]>.tab.active{box-shadow:inset 0 3px 0 #43c8c5}
 .btn,.btn.small,.row-link{min-height:44px}.actions{gap:10px}
 .projects-desktop{display:none}.tablet-project-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0}
 .tablet-project-card{padding:22px;border:1px solid #cfdee8;border-radius:14px;background:white;box-shadow:0 4px 16px #173c5a08}
 .tablet-project-card h2{font-size:20px;line-height:1.4;margin:16px 0 8px}.tablet-project-card p{font-size:14px;margin:0 0 20px}
 .tablet-project-meta{display:grid;gap:14px;margin-bottom:22px}.tablet-project-meta small{display:block;color:#647c8e;font-size:12px;margin-bottom:4px}.tablet-project-meta strong{font-size:14px;font-weight:550}
 .tablet-project-card>.btn{width:100%}
 .table-wrap{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;scrollbar-width:auto}
 .wbs-visual table{min-width:1050px}.wbs-visual th:first-child,.wbs-visual td:first-child{min-width:260px;max-width:340px;white-space:normal}
 .wbs-visual th:last-child,.wbs-visual td:last-child{position:sticky;right:0;background:#f4f9fc;z-index:2;box-shadow:-3px 0 5px #19354e14}
 .daily-report-panel>.panel-body{padding:16px 20px}.daily-report-panel>.panel-body>.field{max-width:280px;margin:0}
 .daily-report-panel .panel-head p{margin:5px 0 0;max-width:650px}.daily-report-panel input{min-height:44px;width:100%;max-width:100%}
 dialog{max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px)}
 input,select,textarea{font-size:16px}.fields{min-width:0}
}
@media screen and (max-width:850px){
 .top .identity>span{display:none}.top .identity button{font-size:12px;padding:8px}.tablet-menu span{display:none}
 .shell>main{padding:18px 16px}.tablet-project-cards{grid-template-columns:1fr}
 main>.heading{flex-wrap:wrap}.heading>.actions{max-width:none}.tabs[role=tablist]>.tab,.tabs[role=tablist]>.tab.active{font-size:13px;padding:10px 12px}
 .panel-head{flex-wrap:wrap;gap:12px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:1fr}
}
@media screen and (max-width:1250px){
 .wbs-visual table td{font-size:13px;line-height:1.45}.wbs-visual table th{font-size:11px}
 .wbs-visual table th:last-child{background:#123052;color:white}
 .wbs-visual .panel-head .btn{min-height:44px}
 .tablet-project-card details{margin:0 0 18px;font-size:14px}.tablet-project-card summary{min-height:44px;display:flex;align-items:center;color:#087e98;cursor:pointer}
}

.hourly-submenu{display:flex;flex-wrap:wrap;gap:8px;padding:16px 20px;border-bottom:1px solid #dce7ed;background:#f4f9fc}.hourly-submenu .btn{min-height:44px}.hourly-entry-panel{max-width:850px;min-height:200px}.hourly-entry-panel>p{color:#587182;max-width:700px}.hourly-entry-panel .actions{margin:16px 0}
/* Receipt editor: aligned controls and readable descriptions on desktop/tablet. */
#modal:has(#hub-items){width:min(1280px,96vw);max-width:96vw}
#modal:has(#hub-items) .fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:end;margin:16px 0}
#modal:has(#hub-items) label.field{display:flex;flex-direction:column;gap:7px;min-width:0;margin:0;font-size:13px;font-weight:600}
#modal:has(#hub-items) input:not([type=checkbox]):not([type=hidden]),#modal:has(#hub-items) select{width:100%;box-sizing:border-box;min-height:44px;border:1px solid #bdcfdc;border-radius:7px;padding:10px 12px;background:#fff;font:inherit}
#modal:has(#hub-items) .hub-section-title{border-top:1px solid #d4e2ea;padding-top:20px;margin-top:24px;color:#173e58}
#modal:has(#hub-items) .hub-item{border:1px solid #ccdde5;border-left:3px solid #168ca3;background:#f6fafc;border-radius:9px;padding:16px;margin:12px 0;min-width:0}
#modal:has(#hub-items) .hub-item .fields{grid-template-columns:repeat(6,minmax(0,1fr));margin:0 0 12px;gap:12px}
#modal:has(#hub-items) .hub-item label:has([data-field=description]){grid-column:1/-1}
#modal:has(#hub-items) .hub-line-total{display:flex;align-items:center;box-sizing:border-box;min-height:44px;border-radius:7px;background:#e1f2ed;color:#176b51;font-variant-numeric:tabular-nums;white-space:nowrap}
#modal:has(#hub-items) .hub-remove{float:right}
#modal:has(#hub-items) #hub-totals{padding:18px;border:1px solid #b6d5df;border-left:4px solid #07859b;background:#eaf5f8;border-radius:8px;font-weight:600;line-height:1.8;margin:18px 0}
#modal:has(#hub-items) #hub-scan{margin:12px}
#modal:has(#hub-items) #hub-scan-note{line-height:1.6;border-radius:7px}
@media(max-width:900px){#modal:has(#hub-items) .hub-item .fields{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:580px){#modal:has(#hub-items) .fields{grid-template-columns:1fr}#modal:has(#hub-items) .hub-item .fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
.hub-project-filter{display:flex;gap:12px;align-items:flex-end;background:#eaf4f8;padding:16px;border:1px solid #c7dce6;border-radius:9px;margin-bottom:16px}.hub-project-filter .field{flex:1;max-width:760px;margin:0}.hub-project-filter select{width:100%;min-height:44px}.hub-project-filter .btn{min-height:44px}
.hub-request-list{width:100%;border-collapse:collapse;font-size:13px}.hub-request-list th,.hub-request-list td{padding:11px 12px;vertical-align:middle}.hub-request-list td:first-child{min-width:180px}.hub-request-list td:nth-child(2){max-width:280px}.hub-request-list small{display:block;color:var(--muted);margin-top:4px}.hub-request-list tbody tr:hover{background:#eef7fa}.hub-request-list .badge{font-size:12px;white-space:normal}.hub-actions{align-items:center;margin-bottom:16px}
/* Safari native selects need an explicit appearance and height. */
#modal:has(#hub-items) .fields>label.field{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;line-height:20px}
#modal:has(#hub-items) .fields>label.field>small{position:absolute;right:0;top:0;line-height:20px;font-weight:400;font-size:11px;margin:0}
#modal:has(#hub-items) .fields input:not([type=hidden]):not([type=checkbox]),#modal:has(#hub-items) .fields select{height:44px;min-height:44px;max-height:44px;margin:0;box-sizing:border-box;line-height:22px}
#modal:has(#hub-items) .fields select{-webkit-appearance:none;appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%23547183' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}

.bid-kpi-grid:has(.tm-kpi){grid-template-columns:repeat(5,minmax(0,1fr))}.bid-kpi.tm-kpi{border-top-color:#078ca0;background:#f0fafb}@media(max-width:1150px){.bid-kpi-grid:has(.tm-kpi){grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.bid-kpi-grid:has(.tm-kpi){grid-template-columns:1fr}}

/* Keep the authenticated header controls on one line, including narrow tablets. */
.top{align-items:center}
.top .identity{min-width:0;flex-direction:row;align-items:center;flex-wrap:nowrap}
.top .identity:last-child{flex-shrink:0}
.top .identity button,.top .language{flex-shrink:0;white-space:nowrap}
@media screen and (max-width:700px){
 .top{height:64px;padding:0 12px;gap:8px}
 .top .identity{gap:8px}
 .top .brand{font-size:18px;white-space:nowrap}
 .top .language{width:112px;max-width:112px;min-height:36px;padding:6px}
 .top .identity button{min-height:36px}
}

/* Drawer navigation overrides the old horizontal phone navigation. */
@media screen and (max-width:1250px){
 .shell>aside{flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;max-width:calc(100vw - 40px)}
 .shell>aside>.nav{flex:0 0 auto;width:100%;min-height:44px;height:auto;white-space:normal;overflow-wrap:anywhere;line-height:1.35}
 .shell>aside>.nav svg{flex:0 0 auto}
 .shell>aside>.nav-label{display:block;flex:0 0 auto;margin:16px 12px 6px}
 .shell>aside>.aside-footer{display:block;flex:0 0 auto}
}
