*{box-sizing:border-box}body{margin:0;background:#f3f6f9;color:#162c41;font:16px Arial,Helvetica,sans-serif}header{background:#102c44;color:white;padding:26px 5%;display:flex;align-items:center;justify-content:space-between;font-size:21px}.version{font-size:12px;border:1px solid #8093a3;border-radius:4px;padding:4px;margin-left:12px}#account{font-size:14px}header button{margin-left:12px}main{max-width:1500px;margin:auto;padding:38px 5%}h1{font-size:34px;letter-spacing:-1px;margin:8px 0 12px}p{line-height:1.55;color:#617389}.eyebrow{font-size:12px;font-weight:bold;letter-spacing:2px}.heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}button,input,select,textarea{font:inherit}button{border:1px solid #cfdae5;border-radius:6px;background:white;color:#254869;padding:10px 14px;cursor:pointer;font-size:14px}button:hover{background:#eaf1fa}button:disabled,select:disabled{opacity:.6;cursor:default}.primary{background:#145ee5;color:white;border:0;font-weight:bold}.primary:hover{background:#174bb0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:25px 0}.stats div{background:white;border:1px solid #dce4ed;border-radius:8px;padding:22px;display:flex;align-items:center;justify-content:space-between;gap:15px}.stats span{font-size:14px;color:#617389}.stats strong{font-size:28px}.toolbar{display:flex;align-items:center;gap:12px;border-bottom:1px solid #dce4ed;padding-bottom:16px}.toolbar nav{margin-right:auto;display:flex;gap:4px}.selected{background:#dceaff;border-color:#a9c8f7;color:#164fac}#refreshed{font-size:12px;color:#617389}.filters{display:flex;gap:12px;margin:20px 0}input,select,textarea{border:1px solid #cedae5;background:white;border-radius:5px;padding:10px;color:#213c56;max-width:100%}#search{min-width:280px;flex:1}.table-wrap{background:white;border:1px solid #d8e2ec;border-radius:10px;overflow:auto}table{border-collapse:collapse;width:100%;min-width:1040px}th{text-align:left;background:#eaf0f6;color:#4d667e;font-size:12px;text-transform:uppercase;letter-spacing:.5px;padding:17px}td{padding:19px 17px;font-size:14px;border-top:1px solid #e0e7ef;max-width:290px;overflow-wrap:break-word}tr:nth-child(even){background:#f8fafc}.description button{font-size:15px;font-weight:bold;padding:0;border:0;background:none;text-align:left;color:#173e68}.description{min-width:240px}.muted{color:#8699aa}small{display:block;font-size:12px;color:#718399;margin-top:7px}.status{font-size:13px;font-weight:600;max-width:240px}.s0{background:#edf2f7;color:#52667b}.s1{background:#e6efff;color:#1957b6;border-color:#bbd0f7}.s2{background:#eee8ff;color:#6742a9;border-color:#d6c7f4}.s3{background:#e1f4e9;color:#237346;border-color:#b3dfc3}.s4{background:#fff0c2;color:#7a5200;border-color:#e6c76a}.s5{background:#fddcc7;color:#8a3a08;border-color:#efb48e}.s6{background:#dfe5ec;color:#3b4859;border-color:#b6c0cc}.empty{text-align:center;padding:35px}footer{display:flex;justify-content:space-between;align-items:center;margin-top:25px;font-size:12px;color:#718399}footer button{margin-left:8px}label{display:block;font-size:14px;font-weight:bold;color:#435e76;margin:16px 0}label input,label select,label textarea{display:block;width:100%;margin-top:7px;font-weight:normal}dialog{border:1px solid #ccd9e6;border-radius:12px;padding:25px;width:650px;max-width:95vw;max-height:92vh;overflow:auto;color:#162c41}dialog::backdrop{background:#102c4477}.dialog-title{display:flex;align-items:center;justify-content:space-between}.dialog-title h2{margin:0;font-size:22px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}fieldset{border:0;padding:0}#history article{border-left:2px solid #dce4ed;padding-left:13px;font-size:14px;margin:20px 0}#history p{white-space:pre-wrap}#message,#taskError,#userError,#passwordError{color:#954526;font-size:14px;white-space:pre-wrap}#login{max-width:430px;background:white;border:1px solid #dce4ed;border-radius:10px;padding:30px;margin:30px auto}#login h1{font-size:26px}.user-row{display:flex;gap:8px;align-items:center;padding:15px 0;border-bottom:1px solid #dce4ed}.user-row div{flex:1}.user-row button{font-size:12px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #8ebaf7;outline-offset:2px}@media(max-width:800px){header{padding:20px;font-size:17px;gap:14px;flex-wrap:wrap}main{padding:25px 20px}.heading{align-items:start;gap:12px}h1{font-size:27px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stats div{padding:15px}.toolbar,.filters,footer{flex-wrap:wrap}.toolbar nav{flex-wrap:wrap}.grid{grid-template-columns:1fr}footer{gap:12px}.user-row{flex-wrap:wrap}}

.date-cell{white-space:nowrap;min-width:125px}table{min-width:1300px}#sortCreated,#sortCompleted{background:transparent;border:0;padding:0;text-align:left;font-weight:bold;color:#174fa2;font-size:12px;text-transform:uppercase;letter-spacing:.5px}

table{min-width:1630px}.latest-update{min-width:220px;max-width:320px;white-space:pre-wrap;line-height:1.5}.overdue-text{color:#ac3535;font-weight:bold}.followup-due{display:inline-block;background:#fff0cc;color:#855300;padding:7px 9px;border-radius:5px}.followup-due small{color:inherit;margin-top:3px}.list-key{font-size:12px}.toolbar nav{flex-wrap:wrap}

.remember-login{display:flex;align-items:center;gap:9px;font-weight:normal}.remember-login input{width:18px;height:18px;margin:0;flex-shrink:0}

/* Compact workspace: preserve readable text and all requested columns. */
header{padding:14px 24px;font-size:18px}main{max-width:1920px;padding:18px 24px}.heading{margin:0 0 12px;align-items:center}h1{font-size:24px;letter-spacing:-.5px;margin:0}.stats{display:flex;gap:18px;flex-wrap:wrap;margin:8px 0 14px}.stats div{background:none;border:0;padding:0;gap:7px}.stats span{font-size:13px}.stats strong{font-size:16px}.toolbar{padding-bottom:10px;gap:8px}.toolbar nav{gap:3px}.toolbar button,footer button{padding:7px 10px}.filters{gap:8px;margin:12px 0}.filters input,.filters select{padding:8px 10px;font-size:14px}table{min-width:1300px}th{padding:10px;font-size:12px}td{padding:10px;font-size:14px}.description{min-width:190px}.description button{font-size:14px}.description small{margin-top:4px}.date-cell{min-width:103px}.latest-update{min-width:170px;max-width:240px;line-height:1.35}.status{font-size:12px;padding:7px;max-width:195px}td>button{font-size:12px;padding:6px 8px}.followup-due{padding:4px 6px}footer{margin-top:12px}dialog{padding:20px}dialog label{margin:11px 0}.task-actions{display:flex;justify-content:space-between;gap:10px}.danger{border-color:#e0b4b4;color:#a52e37;background:#fff4f4}.table-wrap{max-height:calc(100vh - 270px)}thead{position:sticky;top:0;z-index:1}#history article{margin:12px 0}@media(max-width:800px){header{padding:12px 16px}main{padding:16px}.stats{gap:10px 18px}.table-wrap{max-height:none}.heading{align-items:center}h1{font-size:22px}}

.owner-label{display:inline-flex;gap:6px;align-items:center}.owner-color{width:15px;height:15px;flex-shrink:0}.color-choice{font-size:12px;margin:0}.color-choice input{width:34px;height:30px;padding:2px;margin:3px 0 0;cursor:pointer}.user-row{flex-wrap:wrap}.user-row div{min-width:140px}table{min-width:1190px}

.attachment-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #e0e7ef;font-size:14px}.attachment-row a{color:#145ee5;overflow-wrap:anywhere}.attachment-row div{min-width:0}.attachment-row button{font-size:12px;padding:6px 9px}#attachmentsList h3{font-size:16px}

.page-tabs,.calendar-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.page-tabs .selected{background:#163c51;color:white}.calendar-toolbar h2{margin:0 12px;font-size:20px}.calendar-scroll{overflow-x:auto}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));min-width:840px;border-top:1px solid #ccd6dc;border-left:1px solid #ccd6dc}.weekday{padding:8px;background:#eaf0f4;font-weight:600;text-align:center}.calendar-day,.weekday{border-right:1px solid #ccd6dc;border-bottom:1px solid #ccd6dc}.calendar-day{min-height:125px;padding:6px;background:white}.calendar-day.outside{background:#f1f4f6}.calendar-today{box-shadow:inset 0 0 0 2px #197c9b}.day-number{border:0;padding:3px 7px;background:transparent;font-weight:700}.crew-entry{display:block;width:100%;text-align:left;background:#e8f3f7;border:1px solid #c3dde8;border-left:3px solid #197c9b;margin-top:5px;padding:6px;white-space:normal;overflow-wrap:anywhere}.crew-entry strong,.crew-entry span{display:block}.crew-entry span{font-size:11px;margin-top:3px;color:#385364}[hidden]{display:none!important}

.crew-search{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.crew-search label{margin:0}.crew-search input[type=checkbox]{width:auto}.crew-match{background:#fff1ac;border:2px solid #a66a00;border-left-width:5px}.crew-dim{background:#f2f4f5;color:#65717a;border-color:#d9dfe2}.crew-dim span{color:#65717a}#selectedCrew{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}#selectedCrew button{background:#e8f3f7}

#crewManagement{width:min(660px,94vw);padding:16px}#crewManagement .dialog-title h2{font-size:19px;margin:0}#crewManagement p{font-size:12px;margin:8px 0}#crewRoster{max-height:45vh;overflow-y:auto}#crewRoster .user-row{display:grid;grid-template-columns:minmax(100px,1fr) 125px 90px 65px;gap:6px;align-items:center;padding:6px 0;margin:0;border-bottom:1px solid #e1e6eb}#crewManagement input,#crewManagement select,#crewManagement button{font-size:12px;padding:6px 8px;min-height:30px}#crewManagement h3{font-size:14px;margin:12px 0 6px}#crewMemberForm{display:grid;grid-template-columns:minmax(120px,1fr) 125px auto;gap:8px;align-items:end}#crewMemberForm label{margin:0;font-size:12px}#crewRoster b{font-size:13px;overflow-wrap:anywhere}@media(max-width:520px){#crewRoster .user-row{grid-template-columns:1fr 1fr}#crewMemberForm{grid-template-columns:1fr}}

.calendar-day[data-day-cell]{cursor:pointer}.calendar-day[data-day-cell]:hover{background:#f5fafc}.day-number{width:100%;text-align:left}.day-number:focus-visible{outline:2px solid #197c9b}#daySummary{width:min(850px,94vw)}.day-summary-columns{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:16px}.day-summary-columns h3{margin:8px 0}.daily-assignment{border-bottom:1px solid #dbe3e9;padding:8px 0}.daily-assignment p{margin:5px 0;white-space:pre-wrap}.daily-person{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #e5e9ed}.daily-person span{color:#617280;font-size:12px}@media(max-width:600px){.day-summary-columns{grid-template-columns:1fr}}

.crew-pick{width:100%;text-align:left;background:white}.crew-pick:not(:disabled):hover{background:#e8f3f7}.crew-pick:disabled{opacity:.65}#crewBuilder{background:#f2f7fa;border:1px solid #c6d9e4;border-radius:8px;padding:12px;margin:12px 0}#crewBuilder h3{margin:0 0 6px}#crewBuilder p{font-size:12px}#builderPeople{margin-bottom:10px}.daily-assignment>button{margin-right:6px;margin-bottom:5px}

/* Compact monthly overview and wide daily workspace */
.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));min-width:840px}.calendar-day{height:124px;min-height:124px;max-height:124px;box-sizing:border-box;overflow:hidden;padding:4px}.day-number{display:flex;align-items:center;justify-content:space-between;height:25px;padding:3px 5px}.day-number small{font-size:10px;font-weight:400;color:#617280}.calendar-day .crew-entry{height:27px;margin-top:3px;padding:4px 5px;overflow:hidden}.calendar-day .crew-entry span{display:block;font-size:11px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:0}.calendar-more{display:block;border:0;background:transparent;color:#146481;font-size:11px;padding:3px 5px;height:23px}#daySummary{width:min(1440px,96vw);max-width:96vw;max-height:90vh;padding:16px;box-sizing:border-box}#daySummary .dialog-title h2{font-size:20px}#daySummaryCounts,#daySummaryNotice{margin:5px 0;font-size:12px}.day-summary-columns{grid-template-columns:minmax(220px,.85fr) minmax(320px,1.1fr) minmax(280px,1fr);gap:14px;height:min(570px,65vh);margin:12px 0}.day-summary-columns>section,.builder-column{min-width:0;min-height:0;overflow:auto;padding:0 8px}.day-summary-columns h3{font-size:15px;margin:4px 0 8px}.day-summary-columns p{font-size:12px;margin:5px 0}.daily-person{padding:5px 7px;font-size:12px;gap:6px}.daily-assignment{padding:6px 0;font-size:12px}.daily-assignment p{max-height:60px;overflow:auto}.daily-assignment button{font-size:12px;padding:5px 7px}#crewBuilder{margin:0;padding:8px;border-radius:5px}#crewBuilder input,#crewBuilder select,#crewBuilder textarea{font-size:12px;padding:6px}#crewBuilder label{font-size:12px;margin:6px 0}#crewBuilder .grid{gap:8px}#crewBuilder button{font-size:12px;padding:6px 8px}#builderPeople{max-height:200px;overflow:auto}.builder-actions{position:sticky;bottom:0;background:#f2f7fa;padding:8px 0 2px;display:flex;gap:7px}.builder-column:has(#crewBuilder:not([hidden]))>.builder-placeholder{display:none}@media(max-width:950px){.day-summary-columns{grid-template-columns:1fr;height:auto}.day-summary-columns>section,.builder-column{max-height:360px;overflow:auto}#daySummary{max-height:94vh}.builder-column{max-height:480px}}

.vacation-entry{background:#f1e7ff!important;border-color:#b895d7!important;color:#632f8c!important}#daySummary.summary-collapsed{width:min(760px,96vw)}.summary-collapsed .day-summary-columns{grid-template-columns:1fr;height:auto;max-height:60vh}.summary-collapsed .day-summary-columns>section:first-child,.summary-collapsed .builder-column{display:none}.summary-collapsed .day-summary-columns>section:last-child{max-height:60vh;overflow:auto}#vacationList{max-height:32vh;overflow:auto}#vacationDialog{width:min(700px,94vw)}

.unscheduled-flag{color:#b91c1c;background:#fee2e2;border-radius:3px;padding:1px 4px;font-size:11px;font-weight:700;line-height:16px;white-space:nowrap;margin:0 3px}.day-number{gap:2px}

.calendar-day.office-closed{background:#e5e7eb}.closed-label{display:block;width:100%;font-size:12px;font-weight:800;letter-spacing:.5px;color:#fff;background:#374151;border:0;border-radius:3px;height:25px;padding:3px;margin-top:3px}#holidayList{max-height:34vh;overflow:auto}#holidayDialog{width:min(700px,94vw)}

.cad-link-controls{border-top:1px solid #d6e0e5;padding-top:8px;margin:8px 0}.cad-existing{width:100%;min-height:75px}.cad-link-controls input[type=checkbox]{width:auto}.readiness{padding:6px 8px;border-radius:4px;font-size:13px}.readiness.ready{background:#d9f4df;color:#14532d}.readiness.blocked{background:#fee2e2;color:#991b1b}.readiness.pending{background:#fff1c2;color:#713f12}#linkedCadTasks button{display:block;margin:5px 0}

/* V4 Phase 1 */
.dir-row{display:flex;gap:6px;align-items:center;margin-top:6px}
.dir-row select{flex:1;min-width:0}
.dir-row button{padding:8px 10px;font-size:12px;white-space:nowrap}
.claim{display:block;margin-top:6px;padding:4px 8px;font-size:12px}
#claimPanel{display:flex;align-items:center;gap:10px;margin:8px 0}
#claimPanel[hidden]{display:none}
#claimPanel small{margin:0}
.backup-status{border-radius:999px;padding:6px 12px;font-size:12px}
.backup-status.ok{background:#e7f6ea;border-color:#b7e1c1;color:#14532d}
.backup-status.warn{background:#fff6d6;border-color:#f0d88a;color:#713f12}
.backup-status.bad{background:#fee2e2;border-color:#f3b4b4;color:#991b1b}
#clientDialog{width:min(860px,94vw)}
.dir-add-form{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}
.dir-add-form label{flex:1;min-width:220px}
.dir-tools{display:flex;gap:12px;align-items:center;margin:14px 0 4px;flex-wrap:wrap}
.dir-tools #clientFilter{flex:1;min-width:200px}
.dir-tools label{display:inline-flex;gap:6px;align-items:center;margin:0;font-weight:normal;white-space:nowrap}
.dir-client-row{border:1px solid #dce4ed;border-radius:8px;padding:10px 12px;margin:10px 0;background:white}
.dir-client-row.inactive,.dir-project-row.inactive{opacity:.7}
.dir-head,.dir-project-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.dir-head>div,.dir-project-row>div{flex:1;min-width:180px}
.dir-head small,.dir-project-row small{margin-top:2px}
.dir-head button,.dir-project-row button,.dir-merge button{font-size:12px;padding:6px 10px}
.dir-projects{margin:8px 0 0 14px;border-left:2px solid #e3eaf2;padding-left:12px}
.dir-project-row{padding:6px 0;border-bottom:1px solid #eef2f6}
.dir-project-row:last-child{border-bottom:0}
.dir-project-row .job{font-size:12px;color:#4d667e;background:#eef3f8;border-radius:4px;padding:1px 6px}
.dir-merge{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;background:#fff8f0;border:1px solid #f1d6b8;border-radius:6px;padding:8px 10px;margin:6px 0}
.dir-merge small{flex-basis:100%;margin:0}

/* V4 Phase 2 */
.view-toggle{display:inline-flex;margin-right:6px}
.view-toggle button{border-radius:0}
.view-toggle button:first-child{border-radius:6px 0 0 6px}
.view-toggle button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}
.cancelled-entry{background:#f3f4f6!important;border-color:#d1d5db!important;border-left-color:#9ca3af!important;color:#6b7280!important}
.cancelled-entry span,.cancelled-entry strong{color:#6b7280!important}
.calendar-day .cancelled-entry span:not(.entry-status){text-decoration:line-through}
.week-grid .calendar-day{height:auto;min-height:340px;max-height:none;overflow:visible}
.week-grid .calendar-day .crew-entry{height:auto;overflow:visible;padding:6px 7px;margin-top:6px}
.week-grid .calendar-day .crew-entry span{white-space:normal;overflow:visible;font-size:11.5px;margin-top:2px}
.week-entry strong{font-size:13px}
.week-entry .entry-place{font-weight:600;color:#1f3b52}
.entry-status{display:inline-block!important;font-size:10.5px!important;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#6b7280!important;text-decoration:none!important;margin:0 0 3px!important}
.entry-status.moved{color:#145ee5!important}
.readiness-mini{display:inline-block!important;border-radius:3px;padding:1px 5px;margin-top:4px!important}
.readiness-mini.ready{background:#d9f4df;color:#14532d!important}
.readiness-mini.blocked{background:#fee2e2;color:#991b1b!important}
.readiness-mini.pending{background:#fff1c2;color:#713f12!important}
.readiness-mini.neutral{background:#eef2f6;color:#4d667e!important}
.showup-mini{color:#7c2d12!important;font-weight:600}
#scheduleStatus:empty{display:none}
.status-banner{background:#f3f4f6;border:1px solid #d1d5db;border-left:4px solid #6b7280;border-radius:6px;padding:8px 10px;color:#374151;font-weight:600;margin:4px 0 8px}
.status-banner small{font-weight:400}
.status-link{margin:4px 0;font-size:13px}
.status-link button{font-size:12px;padding:4px 8px;margin-left:6px}
.status-actions{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.status-actions button{font-size:13px;padding:7px 10px}
.status-panel{background:#f8fafc;border:1px solid #dce4ed;border-radius:8px;padding:10px 12px;margin:6px 0 10px}
.status-panel small{margin-top:6px}
.status-buttons{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.status-buttons button{font-size:13px;padding:7px 10px}
.showup-wrap{overflow-x:auto}
.showup-table{min-width:0;width:100%}
.showup-table th,.showup-table td{padding:6px;font-size:12px}
.showup-table input[type=number]{width:72px;padding:6px}
.showup-table select,.showup-table input{padding:6px;font-size:12px}
.showup-table button{font-size:11px;padding:5px 7px;white-space:nowrap}
#showupDialog{width:min(1000px,95vw)}
.showup-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.showup-filters label{display:flex;flex-direction:column;gap:4px;align-items:stretch;margin:0}
.showup-review{min-width:760px}
.showup-review td{padding:8px 10px;font-size:13px}
.showup-review select{font-size:12px;padding:6px}
.showup-review .pending-row{background:#fffbea}
.showup-totals{color:#1f3b52;margin:10px 0}
.cancelled-summary{opacity:.75}
#scheduleHistory article{border-top:1px solid #e5e9ed;padding:6px 0;font-size:13px}
#scheduleHistory article p{margin:2px 0}

/* V4 Phase 3 - PLA */
.page-tabs button+button{margin-left:4px}
.crew-row{display:flex!important;flex-wrap:wrap;gap:6px;align-items:center}
.crew-row>div{flex:1;min-width:180px}
.pla-tags{display:inline-flex;flex-wrap:wrap;gap:4px;margin-left:8px;vertical-align:middle}
.pla-tag{font-size:11px;background:#eef2ff;color:#3730a3;border:1px solid #c7d2fe;border-radius:10px;padding:1px 7px}
.pla-editor{background:#f8fafc;border:1px solid #dce4ed;border-radius:8px;padding:10px 12px;margin:6px 0 10px}
.pla-checks{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 0}
.pla-checks label{font-weight:normal}
.pla-rule-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 0;border-bottom:1px solid #eef2f6}
.pla-rule-row select,.pla-rule-row input{padding:6px;font-size:12px}
.pla-rule-row input[data-rule-count]{width:60px}
.pla-rule-row input[data-rule-note]{flex:1;min-width:140px}
.pla-rule-row span{font-size:12px;color:#4d667e}
.pla-rule-row button{font-size:12px;padding:5px 8px}
.pla-rule-tag{font-size:11px;border-radius:10px;padding:2px 8px;white-space:nowrap}
.pla-rule-tag.none,.pla-rule-tag.verify{background:#f3f4f6;color:#4b5563}
.pla-rule-tag.ok{background:#e7f6ea;color:#14532d}
.pla-check:empty{display:none}
.pla-check{border:1px solid #e3e8ee;border-radius:8px;padding:6px 10px;margin:8px 0;background:#fcfdfe}
.pla-check h3{margin:4px 0;font-size:14px}
.pla-line{margin:3px 0;font-size:13px;line-height:1.4}
.pla-line.warn{color:#92400e}
.pla-line.verify{color:#4b5563}
.pla-line.ok{color:#166534}
.pla-missing{color:#92400e;font-style:normal}
.pla-mini{display:inline-block!important;border-radius:3px;padding:1px 5px;margin-top:4px!important;margin-left:4px!important}
.pla-mini.warn{background:#fff1c2;color:#92400e!important}
.pla-mini.verify{background:#f3f4f6;color:#4b5563!important}
.pla-mini.ok{background:#e7f6ea;color:#166534!important}
.pla-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:12px 0}
.pla-filters label{display:flex;flex-direction:column;gap:4px;align-items:stretch;margin:0;font-size:12px}
.pla-filters select,.pla-filters input{padding:8px;font-size:13px}
.pla-range{display:inline-flex;gap:4px}
.pla-range button,.pla-filters>button{padding:8px 10px;font-size:12px}
.pla-toolbar{margin:4px 0 12px}
.pla-toolbar #plaCount{margin-right:auto;font-weight:600;color:#1f3b52}
.button-link{border:1px solid #cfdae5;border-radius:6px;background:white;color:#254869;padding:10px 14px;font-size:14px;text-decoration:none}
.button-link:hover{background:#eaf1fa}
.pla-summary{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}
.pla-summary>div{background:white;border:1px solid #dce4ed;border-radius:8px;padding:10px 14px}
.pla-summary h3{margin:4px 0 8px;font-size:14px}
.pla-totals{min-width:0}
.pla-totals th,.pla-totals td{padding:6px 10px;font-size:12px}
.pla-totals tfoot td{font-weight:700;border-top:2px solid #dce4ed}
.compliance-panel{background:#f8fafc!important}
.compliance-panel p{font-size:13px;margin:0}
.pla-table td{padding:10px 12px}
.pla-actions{white-space:nowrap}
.pla-actions button{font-size:12px;padding:5px 8px;margin:2px}
.pla-status{display:inline-block;font-size:12px;font-weight:600;border-radius:4px;padding:2px 7px}
.pla-status.ok{background:#e7f6ea;color:#14532d}
.pla-status.warn{background:#fff1c2;color:#713f12}
.pla-status.pending{background:#e8f0fe;color:#1e40af}
.warn-text{color:#92400e}
.pla-status-line{margin:4px 0}
.correction{border-top:1px solid #e5e9ed;padding:6px 0;font-size:13px}
.correction ul{margin:4px 0 0 18px;padding:0}
#plaHistory article{border-top:1px solid #e5e9ed;padding:6px 0;font-size:13px}
#plaHistory article p{margin:2px 0}
#plaDialog,#plaBatchDialog{width:min(760px,95vw)}
@media (max-width:800px){.pla-summary{grid-template-columns:1fr}}

/* Consolidated Manage panel and calendar controls */
#manageOpen{margin-left:12px}
.manage-dialog{width:min(1100px,96vw);height:min(86vh,900px);padding:0;overflow:hidden}
.manage-layout{display:grid;grid-template-columns:210px 1fr;height:100%}
.manage-nav{background:#f3f6f9;border-right:1px solid #dce4ed;padding:16px 10px;overflow:auto}
.manage-group{font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:#718399;margin:14px 8px 6px}
.manage-group:first-child{margin-top:0}
.manage-nav button{display:block;width:100%;text-align:left;border:0;background:transparent;border-radius:6px;padding:9px 10px;margin:1px 0;font-size:14px;color:#254869}
.manage-nav button:hover{background:#e6edf5}
.manage-nav button.selected{background:#dceaff;color:#164fac;font-weight:700}
.manage-body{overflow:auto;padding:20px 24px}
.manage-body .dialog-title{position:sticky;top:-20px;background:white;z-index:1;padding:4px 0 8px;margin-top:-4px}
.manage-section>p:first-child{margin-top:0}
.reason-row{display:flex;gap:8px;align-items:center;margin:6px 0}
.reason-row input{flex:1;max-width:380px}
.reason-row small{margin:0}
#backupDetail .backup-status{display:inline-block;margin:0 0 8px}
@media (max-width:760px){.manage-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr}.manage-nav{display:flex;flex-wrap:wrap;gap:4px;border-right:0;border-bottom:1px solid #dce4ed;padding:8px}.manage-nav button{width:auto}.manage-group{display:none}}
.calendar-toolbar .toolbar-spacer{flex:1}
.icon-button{font-size:18px;line-height:1;padding:8px 12px}
.count-badge{display:inline-block;min-width:20px;margin-left:6px;padding:1px 6px;border-radius:10px;background:#b45309;color:white;font-size:12px;font-weight:700;text-align:center}
.crew-search{gap:10px}
#calSearch{flex:1;min-width:260px;max-width:460px}
.filter-menu{position:relative}
.filter-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:20;background:white;border:1px solid #cfdae5;border-radius:8px;box-shadow:0 8px 24px rgba(16,44,68,.15);padding:12px 14px;min-width:260px;display:flex;flex-direction:column;gap:10px}
.filter-panel[hidden]{display:none}
.filter-panel label{display:flex;flex-direction:column;gap:4px;align-items:stretch;font-size:12px}
.filter-panel label.remember-login{flex-direction:row;align-items:center;font-size:14px;font-weight:normal}
#crewMatchCount{color:#4d667e;font-size:13px}

/* Day view and date picker */
.picker-wrap{position:relative;display:inline-block}
.title-button{border:0;background:transparent;font-size:20px;font-weight:700;color:#162c41;padding:6px 10px;margin:0 4px;border-radius:6px}
.title-button::after{content:' ▾';font-size:13px;color:#617389}
.title-button:hover,.title-button[aria-expanded=true]{background:#eaf1fa}
.date-picker{position:absolute;top:calc(100% + 6px);left:0;z-index:30;background:white;border:1px solid #cfdae5;border-radius:10px;box-shadow:0 10px 28px rgba(16,44,68,.18);padding:12px;width:292px}
.date-picker[hidden]{display:none}
.picker-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:8px}
.picker-head b{font-size:16px}
.picker-head button{padding:5px 10px;font-size:13px}
.picker-head select{padding:5px 6px;font-size:13px;flex:1}
.picker-months{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.picker-months button{padding:10px 0;font-size:14px}
.picker-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.picker-dow{font-size:11px;font-weight:700;color:#718399;text-align:center;padding:4px 0}
.picker-days button{position:relative;padding:7px 0 9px;font-size:13px;border:0;border-radius:6px;background:transparent}
.picker-days button:hover{background:#eaf1fa}
.date-picker .selected{background:#dceaff!important;color:#164fac;font-weight:700}
.date-picker .today{box-shadow:inset 0 0 0 2px #197c9b}
.picker-days .closed{color:#9ca3af;text-decoration:line-through}
.busy-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#197c9b;vertical-align:middle}
.picker-days .busy-dot{position:absolute;left:50%;bottom:3px;margin-left:-2.5px}
.picker-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;font-size:12px}
.picker-foot button{padding:6px 10px;font-size:12px}
.day-grid{display:block!important;min-width:0!important;border:0!important}
.day-view{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.day-main{display:flex;flex-direction:column;gap:10px}
.day-counts{margin:0;color:#4d667e;font-size:13px}
.day-closed{margin:0;background:#374151;color:white;font-weight:700;border-radius:6px;padding:8px 12px}
.day-card{display:flex;flex-direction:column;gap:5px;text-align:left;width:100%;background:white;border:1px solid #c3dde8;border-left:4px solid #197c9b;border-radius:8px;padding:12px 14px;font-size:13px;color:#1f3b52}
.day-card:hover{background:#f5fafc}
.day-card>span{display:block}
.day-card-place{font-size:15px}
.day-card-crew b{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#617389}
.day-card-notes{white-space:pre-wrap;color:#4d667e}
.day-card-tags{display:flex!important;flex-wrap:wrap;gap:6px;align-items:center}
.day-card-tags .readiness-mini,.day-card-tags .pla-mini{margin:0!important}
.file-mini{font-size:11px;color:#617389}
.day-card-cad{font-size:12px;color:#4d667e}
.day-card-pla{font-size:12px;color:#92400e}
.day-card.cancelled-entry .day-card-place,.day-card.cancelled-entry .day-card-crew{text-decoration:line-through}
.day-side{background:white;border:1px solid #dce4ed;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:10px;position:sticky;top:12px}
.day-side h3{font-size:14px;margin:4px 0 6px;display:flex;align-items:center;gap:6px}
.side-count{font-size:12px;font-weight:400;color:#617389}
.day-side .daily-person{flex-direction:column;gap:1px}
@media (max-width:900px){.day-view{grid-template-columns:1fr}.day-side{position:static}}

/* Second backup copy + designation editor */
.offsite-grid{display:grid;grid-template-columns:repeat(3,minmax(0,180px));gap:12px}
#offsiteForm label{display:flex;flex-direction:column;gap:4px;align-items:stretch}
#offsiteFolder{width:100%}
#offsiteSuggest button{font-size:12px;padding:4px 8px;margin-left:4px}
#backupDetail .backup-status{display:inline-block;margin:0 8px 6px 0}
#desEditForm label:not(.remember-login){display:flex;flex-direction:column;gap:4px;max-width:420px}

/* Field role: my jobs */
.crew-entry.my-job{border-left-color:#c2410c!important;border-left-width:5px!important}
.day-card.my-job{border-left-color:#c2410c;border-left-width:6px;box-shadow:0 0 0 1px #fdba74}
.mine-tag{display:inline-block!important;align-self:flex-start;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#9a3412;background:#ffedd5;border-radius:4px;padding:2px 7px}
.day-mine{margin:0;font-weight:700;color:#9a3412}
.linked-cad{padding:6px 0;border-bottom:1px solid #e5e9ed}
.linked-cad a{display:block;font-size:13px;margin-top:3px}
.user-row select{padding:6px;font-size:12px}
@media (max-width:600px){
 main{padding:16px 12px}
 header{padding:14px 12px;font-size:17px}
 .calendar-toolbar{gap:6px}
 .calendar-toolbar .toolbar-spacer{display:none}
 .title-button{font-size:16px;padding:4px 6px}
 #calSearch{min-width:0;width:100%;max-width:none;flex-basis:100%}
 .crew-search>p.muted{display:none}
 .day-card{padding:10px}
 .date-picker{left:auto;right:-60px}
}

/* UI round 2: dialogs, toasts, tabs, task list, calendar */
.ui-dialog{width:min(460px,92vw);padding:22px 24px}
.ui-dialog h2{margin:0 0 8px;font-size:19px}
#uiMessage{margin:0 0 10px;color:#334e68;white-space:pre-line}
#uiFields label{display:flex;flex-direction:column;gap:6px;margin:10px 0}
#uiFields input,#uiFields textarea{width:100%}
#uiError{color:#b91c1c;margin:4px 0;min-height:0}
.ui-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.danger-solid{background:#b91c1c;color:white;border:0;font-weight:bold}
.danger-solid:hover{background:#991b1b}
.toasts{position:fixed;inset:auto 16px 16px auto;pointer-events:none;margin:0;padding:0;border:0;background:transparent;display:flex;flex-direction:column;gap:8px;width:min(380px,calc(100vw - 32px));overflow:visible}
.toasts:not(:popover-open){display:none}
.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;background:#102c44;color:white;border-radius:8px;padding:12px 12px 12px 14px;box-shadow:0 10px 24px rgba(16,44,68,.25);font-size:14px;line-height:1.4;animation:toast-in .18s ease-out}
.toast span{flex:1}
.toast button{background:transparent;border:0;color:inherit;font-size:18px;line-height:1;padding:0 4px;opacity:.8}
.toast-error{background:#991b1b}
@keyframes toast-in{from{transform:translateY(-6px);opacity:0}to{transform:none;opacity:1}}
.tabbed-dialog{width:min(760px,95vw);padding:0;display:none;flex-direction:column;overflow:hidden;max-height:92vh}
.tabbed-dialog[open]{display:flex}
.tabbed-dialog form{display:flex;flex-direction:column;min-height:0;flex:1}
.tabbed-dialog .dialog-title{padding:20px 24px 0;margin:0}
.dialog-tabs{display:flex;gap:2px;padding:10px 20px 0;border-bottom:1px solid #dce4ed;overflow-x:auto}
.dialog-tabs button{border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;padding:9px 12px;font-size:14px;color:#4d667e;white-space:nowrap}
.dialog-tabs button:hover{background:#f3f6f9}
.dialog-tabs button.selected{border-bottom-color:#145ee5;color:#164fac;font-weight:700}
.dialog-tabs button[hidden]{display:none}
.tab-count{display:inline-block;min-width:18px;padding:0 6px;border-radius:9px;background:#e6edf5;color:#4d667e;font-size:11px;font-weight:700;text-align:center}
.tab-warn{color:#b45309}
.dialog-body{overflow:auto;padding:4px 24px 16px;flex:1;min-height:200px}
.tab-hidden{display:none!important}
.dialog-footer{border-top:1px solid #dce4ed;background:#f8fafc;padding:10px 24px;display:flex;align-items:center;gap:12px}
.dialog-footer p{flex:1;margin:0;font-size:13px}
.dialog-footer .task-actions{display:flex;gap:8px;margin:0}
.dialog-footer #scheduleError,.dialog-footer #taskError{color:#7c2d12}
.dialog-body fieldset{border:0;padding:0;margin:0}
.task-row{cursor:pointer}
.task-row:hover{background:#f0f6ff!important}
td{padding:10px 14px}
th{padding:12px 14px}
.status{padding:5px 8px;font-size:12px}
.description button{font-size:14px}
.priority-badge{display:inline-block;margin-left:8px;font-size:11px;font-weight:700;border-radius:4px;padding:1px 6px;vertical-align:middle}
.priority-badge.high{background:#fff1c2;color:#854d0e}
.priority-badge.urgent{background:#fee2e2;color:#991b1b}
.new-badge{display:inline-block;margin-left:6px;font-size:11px;font-weight:700;border-radius:4px;padding:1px 6px;background:#dbeafe;color:#1e40af}
.new-row td:first-child{box-shadow:inset 4px 0 0 #2563eb}
.overdue-chip,.due-today-chip{display:block;width:max-content;margin-top:3px;font-size:11px;font-weight:700;border-radius:4px;padding:1px 6px}
.overdue-chip{background:#fee2e2;color:#991b1b}
.due-today-chip{background:#fff1c2;color:#854d0e}
#views button .tab-count{margin-left:4px}
#views .count-badge{background:#2563eb}
.calendar-day.busy-2{background:#f6fafc}
.calendar-day.busy-3{background:#eef6f9}
.day-number small.busy-count{color:#0f5f78;font-weight:700}

/* PLA week timesheet */
.pla-modebar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:6px 0}
#plaWeekNav{display:inline-flex;align-items:center;gap:6px}
#plaWeekNav[hidden]{display:none}
#plaWeekNav b{min-width:180px;text-align:center}
.pla-grid{min-width:900px}
.pla-grid th,.pla-grid td{padding:6px 8px;font-size:13px;text-align:left}
.pla-grid th small{display:inline;margin-left:4px}
.pla-grid th.grid-today{background:#dceaff;color:#164fac}
.grid-cell{width:74px}
.grid-cell input{width:64px;padding:5px 6px;font-size:13px;text-align:right}
.grid-cell.scheduled input{background:#f0f8fb}
.grid-cell.changed input{border-color:#145ee5;box-shadow:0 0 0 2px #dceaff}
.grid-cell.st-needs-correction input{border-color:#d97706}
.grid-cell.approved{color:#166534;font-weight:600;white-space:nowrap}
.grid-cell.multi{color:#4d667e}
.grid-cell.multi small{display:block;margin:0;font-size:10px}
.grid-total,.pla-grid tfoot td{font-weight:700}
.pla-grid tfoot td{border-top:2px solid #dce4ed}
.grid-add{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;padding:10px;background:#f8fafc;border:1px solid #dce4ed;border-radius:8px}
.grid-add[hidden]{display:none}
.grid-add select{padding:7px;font-size:13px}
#plaGrid .status-buttons .spacer{flex:1}
.toast .toast-action{border:1px solid rgba(255,255,255,.6);border-radius:5px;font-size:13px;padding:3px 10px;opacity:1}

/* Consistent buttons: one blue main action per screen, outlined secondary, red outline for permanent removals */
button{transition:background .12s,border-color .12s}
button:focus-visible,.button-link:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid #145ee5;outline-offset:2px}
.primary,.primary:hover{border:1px solid transparent}
.primary:disabled{background:#93b4ef;cursor:default}
.danger{background:white;border:1px solid #e0b4b4;color:#a52e37}
.danger:hover{background:#fff1f1;border-color:#d38c8c}
.accent{background:white;border:1px solid #145ee5;color:#145ee5;font-weight:bold}
.accent:hover{background:#eef4ff}
/* one small size for buttons inside lists, rows and panels */
.user-row button,.crew-row button,.dir-head button,.dir-project-row button,.pla-actions button,.status-actions button,.status-buttons button,.attachment-row button,.daily-assignment button,.grid-add button,.pla-rule-row button,.reason-row button,.claim,.linked-cad button,#offsiteSuggest button,.status-link button,#linkedCadTasks button,.dir-merge button{font-size:12px;padding:6px 10px;border-radius:6px;line-height:1.3}
.dialog-footer .task-actions button,.ui-actions button{font-size:14px;padding:9px 16px}
.dialog-footer .task-actions .danger{margin-right:auto}
@media (max-width:600px){#refreshCalendar .btn-label{display:none}}
.tabbed-dialog .dialog-title,.tabbed-dialog .dialog-tabs,.tabbed-dialog .dialog-footer{flex-shrink:0}

/* Batch 5: PLA mode, Off, missing hours, day status, jobs without crew */
.pla-mode-select{display:flex;flex-direction:column;gap:4px;max-width:360px;margin:8px 0}
.off-btn{font-size:11px!important;padding:3px 8px!important;margin-left:auto}
.pick-row{display:flex;align-items:center;gap:6px}
.pick-row .crew-pick{flex:1}
.off-entry{background:#f3f4f6}
.off-entry button{font-size:11px;padding:3px 8px;margin-left:auto}
.off-line{font-size:11px;color:#4b5563;background:#f3f4f6;border-radius:4px;padding:3px 6px;margin-top:5px}
.day-side .daily-person{flex-direction:row;flex-wrap:wrap;align-items:center}
.day-side .daily-person strong{flex-basis:100%}
.needs-crew{background:repeating-linear-gradient(-45deg,#fff,#fff 6px,#f5f7fa 6px,#f5f7fa 12px)!important;border-style:dashed!important;border-left-style:solid!important;border-left-color:#7c3aed!important}
.entry-status.need{color:#6d28d9!important}
.need-line{font-weight:700;color:#6d28d9}
.need-text{color:#6d28d9}
.staff-btn{display:inline-block;margin-left:8px;font-weight:700;font-size:12px;color:#145ee5;border:1px solid #145ee5;border-radius:5px;padding:2px 8px;cursor:pointer;background:white}
.staff-btn:hover{background:#eef4ff}
.need-summary{border-left:3px solid #7c3aed;padding-left:8px}
.ds-chip{display:inline-block;font-size:10.5px;font-weight:700;border-radius:9px;padding:1px 7px;white-space:nowrap;line-height:1.5}
.ds-chip.ds-pending{background:#fff1c2;color:#854d0e}
.ds-chip.ds-set{background:#dcfce7;color:#166534}
.ds-chip.ds-updated{background:#dbeafe;color:#1e40af}
.calendar-day.ds-pending{outline:1px dashed #d4a72c;outline-offset:-3px}
.calendar-day.ds-updated{outline:2px solid #93c5fd;outline-offset:-3px}
.day-status{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid #e3e8ee;border-radius:8px;padding:8px 12px;background:white}
.day-status.ds-pending{border-color:#f0d88a;background:#fffbeb}
.day-status.ds-set{border-color:#b7e1c1;background:#f0fdf4}
.day-status.ds-updated{border-color:#93c5fd;background:#eff6ff}
.day-status .ds-text{flex:1;font-size:13px;color:#1f3b52}
.day-status .ds-text small{display:inline;margin-left:6px}
.day-status button{font-size:12px;padding:6px 10px}
.day-status-bar:empty{display:none}
.day-status-bar{margin:6px 0}
.calendar-footnote{margin:14px 0 0;font-size:13px;color:#4d667e;font-style:italic;text-align:center}
.grid-cell.missing input{border:2px solid #f59e0b;background:#fffbeb}
.missing-table td{padding:8px 10px}
.dismissed-row{opacity:.6}
#plaMissing .status-buttons b{margin-right:6px}

.small-note{font-size:12px;margin:8px 2px 0}

/* PLA paperwork checklist */
.paper-intro p{margin:4px 0 8px;max-width:900px}.paper-intro a{color:#145ee5}
.paper-card{background:white;border:1px solid #dce4ed;border-radius:8px;margin:10px 0;overflow:hidden}
.paper-toggle{display:flex;align-items:center;gap:12px;flex-wrap:wrap;width:100%;text-align:left;background:white;border:0;border-radius:0;padding:12px 14px;font-size:14px;cursor:pointer}
.paper-toggle:hover{background:#f5f9fc}.paper-title{font-weight:700;color:#162c41;min-width:220px}.paper-title small{font-weight:normal;color:#5b6b7b}
.paper-meta{color:#4d667e;font-size:13px}.paper-progress{margin-left:auto;font-size:13px}.paper-caret{color:#4d667e}
.paper-body{border-top:1px solid #e3e9f0;padding:12px 14px;background:#fbfcfe}
.paper-meta-form{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:10px}.paper-meta-form label{font-size:13px;margin:0;min-width:170px}
.paper-table{min-width:1000px}.paper-table td{vertical-align:top}.paper-table td small{display:block;color:#5b6b7b;font-size:12px;margin-top:3px;line-height:1.4;font-weight:normal}
.paper-table td:first-child{max-width:420px}.paper-table select{width:auto;margin-right:6px}.paper-table input{width:100%;min-width:140px}
.paper-table tr.late td:first-child{border-left:4px solid #c55252}.paper-table tr.soon td:first-child{border-left:4px solid #d39a1f}.paper-table tr.ok td:first-child{border-left:4px solid #3f9b5a}
.paper-table tr.ok b,.paper-table tr.na b{color:#4b5563}
.paper-chip{display:inline-block;font-size:11px;font-weight:700;border-radius:10px;padding:2px 8px;white-space:nowrap;background:#eef2f6;color:#4b5563}
.paper-chip.late{background:#fde8e8;color:#9b1c1c}.paper-chip.soon{background:#fdf3d8;color:#7a4b00}.paper-chip.ok{background:#e7f6ea;color:#14532d}.paper-chip.info{background:#e6eefb;color:#1e40af}
.paper-history{list-style:none;margin:8px 0 0;padding:0;max-height:260px;overflow-y:auto;font-size:13px}.paper-history li{padding:6px 0;border-bottom:1px solid #e6ecf2}.paper-history small{display:block;color:#5b6b7b}
.count-badge.late{background:#b42318}.tab-count.late{background:#fde8e8;color:#9b1c1c}
@media (max-width:600px){.paper-progress{margin-left:0}.paper-title{min-width:0}}

/* Hiring-goal compliance */
.comp-toolbar{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:6px 0 4px}.comp-toolbar label{margin:0;font-size:13px}.comp-toolbar select{min-width:240px}
.comp-goals{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}
.comp-goal{background:white;border:1px solid #dce4ed;border-top:4px solid #cbd5e1;border-radius:8px;padding:12px 14px}.comp-goal.ok{border-top-color:#3f9b5a}.comp-goal.late{border-top-color:#c55252}
.comp-goal-head{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:14px}.comp-pct{font-size:30px;font-weight:700;margin:6px 0 4px;letter-spacing:-.5px}
.comp-bar{position:relative;height:8px;background:#e6ecf2;border-radius:4px;margin:4px 0 8px}.comp-bar span{position:absolute;left:0;top:0;bottom:0;background:#4d7fb8;border-radius:4px}.comp-goal.ok .comp-bar span{background:#3f9b5a}.comp-goal.late .comp-bar span{background:#c55252}
.comp-bar i{position:absolute;top:-3px;bottom:-3px;width:2px;background:#162c41}.comp-goal small{color:#5b6b7b;font-size:12px}.comp-need{margin:8px 0 0;font-size:13px;color:#9b1c1c}
.comp-notes{margin:0 0 8px;padding-left:18px;font-size:13px;color:#4d667e}
.comp-section{background:white;border:1px solid #dce4ed;border-radius:8px;padding:12px 14px;margin:12px 0}.comp-section h3{margin:0 0 8px;font-size:16px}
.comp-table{min-width:700px}.comp-table td.comp-short{color:#9b1c1c;font-weight:700}.gf-table{min-width:900px}.gf-table td small{display:block;color:#5b6b7b;font-size:12px}
.gf-form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:10px 0}.gf-form label{margin:0;font-size:13px}.gf-form .gf-outcome{flex:1;min-width:240px}.gf-form .gf-outcome input{width:100%}
.comp-workers,.comp-tiers{margin-top:10px}.comp-workers input[data-cw-zip]{width:90px}.comp-tier-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.comp-tier-cols textarea{width:100%;font-family:monospace;font-size:13px}
@media (max-width:600px){.comp-tier-cols{grid-template-columns:1fr}.comp-toolbar select{min-width:0;width:100%}}

.hours-box{margin:.6rem 0;padding:.6rem .8rem;border:1px solid var(--line,#c9d1dc);border-radius:8px}.hours-box h3{margin:0 0 .4rem;font-size:.95rem}.hours-box small{display:block;margin-top:.3rem;color:#5b6675}
.ot-toggle{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.ot-toggle input[role=switch]{appearance:none;width:2.4rem;height:1.3rem;border-radius:1rem;background:#9aa5b4;position:relative;cursor:pointer;transition:background .15s;flex:none}.ot-toggle input[role=switch]::after{content:'';position:absolute;top:.15rem;left:.15rem;width:1rem;height:1rem;border-radius:50%;background:#fff;transition:transform .15s}.ot-toggle input[role=switch]:checked{background:#1f6feb}.ot-toggle input[role=switch]:checked::after{transform:translateX(1.1rem)}.ot-toggle input[role=switch]:focus-visible{outline:2px solid #1f6feb;outline-offset:2px}.ot-toggle small{flex-basis:100%}
.heading-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.card-day{background:#fff;border:1px solid #d5dde6;border-radius:10px;padding:14px 16px;margin:0 0 12px}.card-day-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.card-day h2{margin:0 0 2px;font-size:18px}.card-day p{margin:0}.card-day-actions{display:flex;gap:8px;flex-wrap:wrap}.card-day ul{margin:10px 0 0;padding-left:18px}.card-day li{margin:3px 0}.hours-chip{display:inline-block;background:#e8eef6;border-radius:10px;padding:0 8px;font-size:12px;font-weight:bold}
.today-chip{background:#e8f1fb;border:1px solid #9bb8d9;color:#102c44;border-radius:14px;padding:4px 12px;font-weight:bold;cursor:pointer}.card-week{margin:0 0 18px}.week-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:15px;margin:0 0 8px;padding-bottom:6px;border-bottom:2px solid #c3d0de;color:#163c51}.week-total{font-weight:bold}.card-day h3{margin:0 0 2px;font-size:18px}.over-chip{display:inline-block;background:#fff1d6;color:#7a4a00;border:1px solid #e3b25c;border-radius:10px;padding:0 8px;font-size:12px;font-weight:bold;vertical-align:middle}.warn-note{color:#7a4a00;background:#fff1d6;border-radius:6px;padding:0 8px;margin:0}.warn-note:empty{display:none}.preview-dialog{width:min(900px,95vw);height:90vh;padding:0}.preview-dialog[open]{display:flex;flex-direction:column}.preview-dialog iframe{flex:1;border:0;width:100%;background:#fff}.preview-dialog .dialog-title{padding:10px 14px}
.today-chip{margin-right:12px}

/* V5: rows are tinted by status; a coloured bar on the left edge repeats it */
tr.task-row.row-s0,tr.task-row.row-s0:nth-child(even){background:#ffffff}tr.task-row.row-s0 td:first-child{box-shadow:inset 5px 0 0 #94a3b8}
tr.task-row.row-s1,tr.task-row.row-s1:nth-child(even){background:#e7f0fe}tr.task-row.row-s1 td:first-child{box-shadow:inset 5px 0 0 #2f6fed}
tr.task-row.row-s2,tr.task-row.row-s2:nth-child(even){background:#f1eafd}tr.task-row.row-s2 td:first-child{box-shadow:inset 5px 0 0 #7c4dde}
tr.task-row.row-s3,tr.task-row.row-s3:nth-child(even){background:#e5f5ec}tr.task-row.row-s3 td:first-child{box-shadow:inset 5px 0 0 #1f9d62}
tr.task-row.row-s4,tr.task-row.row-s4:nth-child(even){background:#fff3d1}tr.task-row.row-s4 td:first-child{box-shadow:inset 5px 0 0 #e09a00}
tr.task-row.row-s5,tr.task-row.row-s5:nth-child(even){background:#fde9dc}tr.task-row.row-s5 td:first-child{box-shadow:inset 5px 0 0 #e8590c}
tr.task-row.row-s6,tr.task-row.row-s6:nth-child(even){background:#e9edf2}tr.task-row.row-s6 td:first-child{box-shadow:inset 5px 0 0 #5b6b80}
tr.task-row.row-s6 td{color:#4a5668}
tr.task-row.new-row td:first-child{box-shadow:inset 5px 0 0 #2563eb}
tr.task-row.overdue-row td:first-child{box-shadow:inset 5px 0 0 #d92d20}
tr.task-row td:nth-child(2),tr.task-row td:nth-child(3),tr.task-row td:nth-child(7){white-space:nowrap}
tr.task-row select.status{width:196px;max-width:196px;font-size:12px}

/* V5 dashboard */
.stats.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin:18px 0 12px}
.stats.tiles .tile{display:block;text-align:left;background:#fff;border:1px solid #dce4ed;border-left:5px solid #2f6fed;border-radius:10px;padding:12px 14px;cursor:pointer;font:inherit;color:inherit}
.stats.tiles .tile:hover{box-shadow:0 2px 8px #0f2b4620}
.stats.tiles .tile strong{display:block;font-size:26px;line-height:1.1;color:#10283f}
.stats.tiles .tile span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#617389;margin-top:4px}
.stats.tiles .t-purple{border-left-color:#7c4dde}.stats.tiles .t-amber{border-left-color:#e09a00}.stats.tiles .t-red{border-left-color:#d92d20}.stats.tiles .t-green{border-left-color:#1f9d62}
.sub-tabs{display:inline-flex;margin:4px 0 12px}
.sub-tabs button{border-radius:0}.sub-tabs button:first-child{border-radius:6px 0 0 6px}.sub-tabs button:last-child{border-radius:0 6px 6px 0;margin-left:-1px}
.sub-tabs .selected{background:#e7f0fe;color:#1a5fe6;font-weight:700;border-color:#9dbcf5}
.dash-filter{display:flex;align-items:center;gap:12px;background:#fff3d1;border:1px solid #e0b34a;border-radius:8px;padding:7px 12px;margin:0 0 12px;font-size:14px}
.dash-filter button{padding:4px 10px;font-size:13px}
.dash-chips{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px;font-size:13px}
.chip-btn{border-radius:12px;padding:3px 11px;font-size:13px;font-weight:700;border:1px solid transparent;cursor:pointer}
.chip-btn.bad{background:#fde2e0;color:#b42318}.chip-btn.warn{background:#fff3d1;color:#8a5a00}.chip-btn.ok{background:#e9edf2;color:#44546a}
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.dcard{background:#fff;border:1px solid #dce4ed;border-radius:10px;padding:14px 16px;min-width:0}
.dcard.full{grid-column:1/3}
.dcard h3{margin:0 0 12px;font-size:15px}.dcard h3 small{font-weight:400;color:#617389;margin-left:6px;font-size:12px}
.dcard table{width:100%;border-collapse:collapse;font-size:13px}
.dcard th{text-align:left;color:#617389;font-size:11px;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid #dce4ed}
.dcard td{padding:7px 8px;border-bottom:1px solid #eef2f6}
.dcard tr.click{cursor:pointer}.dcard tr.click:hover td{background:#f3f7fc}
.dcard .bad{color:#b42318}
.pipe{display:flex;height:34px;border-radius:6px;overflow:hidden;background:#eef2f6}
.pipe button{border:0;border-radius:0;color:#fff;font-weight:700;padding:0;min-width:22px;cursor:pointer}
.pipe-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:#44546a}
.leg-item{border:0;background:none;padding:2px 0;font-size:12px;cursor:pointer;color:inherit}
.leg-item i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px}
.pipe .s0,.leg-item i.s0{background:#94a3b8}.pipe .s1,.leg-item i.s1{background:#2f6fed}.pipe .s2,.leg-item i.s2{background:#7c4dde}.pipe .s3,.leg-item i.s3{background:#1f9d62}.pipe .s4,.leg-item i.s4{background:#e09a00}.pipe .s5,.leg-item i.s5{background:#e8590c}.pipe .s6,.leg-item i.s6{background:#5b6b80}
.due-bars{display:grid;grid-template-columns:repeat(15,1fr);gap:4px;align-items:end;height:150px}
.due-col,.wk-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;height:100%;border:0;background:none;padding:0;text-align:center;cursor:pointer;font-size:11px;color:#617389}
.due-col .due-n,.wk-col .wk-n{font-weight:700;color:#10283f;font-size:12px}
.due-bar,.wk-bar{display:block;background:#2f6fed;border-radius:3px 3px 0 0;min-height:3px}
.due-col.od .due-bar{background:#d92d20}.due-col.we .due-bar{background:#cfd9e3}.due-col.td .due-l{font-weight:700;color:#10283f}
.due-col:hover .due-bar{filter:brightness(1.1)}
.due-l,.wk-l{display:block;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:clip}
.wk-bars{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;align-items:end;height:150px}
.wk-col{cursor:default}.wk-bar{background:#1f9d62}.wk-col.cur .wk-bar{background:#7bc9a4}
.why{border-radius:10px;padding:1px 8px;font-size:12px;font-weight:700;white-space:nowrap}
.why.r{background:#fde2e0;color:#b42318}.why.o{background:#fde9dc;color:#b64208}.why.y{background:#fff3d1;color:#8a5a00}.why.g{background:#e9edf2;color:#44546a}
@media(max-width:1000px){.stats.tiles{grid-template-columns:repeat(3,1fr)}.dash-grid{grid-template-columns:1fr}.dcard.full{grid-column:auto}}
@media(max-width:560px){.stats.tiles{grid-template-columns:repeat(2,1fr)}.due-bars{grid-template-columns:repeat(8,1fr);height:auto}}
.dcard table{min-width:0!important;width:100%}
.dcard th,.dcard td{background:none}
.dcard h3 small{display:inline;margin-top:0}
.dcard p.muted{display:block;margin:10px 0 0;font-size:12px}
.hours-col{display:none}table.show-hours .hours-col{display:table-cell}
tr.month-row{cursor:pointer}
tr.month-row td{background:#e9eff6!important;border-top:8px solid #f3f6f9;padding:11px 14px!important;font-weight:700;color:#10283f}
tr.month-row td small{display:inline;margin:0 0 0 12px;font-weight:400;color:#617389}
tr.month-row .month-hrs{float:right;color:#163c51}
tr.month-row:hover td{background:#dde7f2!important}
tr.more-row{cursor:pointer}tr.more-row td{color:#1a5fe6;font-weight:700;font-size:13px;background:#fff!important;padding:9px 14px!important}
table.show-hours tr:not(.month-row):not(.more-row)>:nth-child(2),table.show-hours tr:not(.month-row):not(.more-row)>:nth-child(9){display:none}
table.show-hours{min-width:0}

/* V6 billing, date worked, undo, filters, client cards */
.date-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.date-row label{flex:1;min-width:150px}.shortcuts{display:flex;gap:6px;padding-bottom:2px}.shortcuts button{padding:6px 10px;font-size:13px}
.date-note{background:#fff7d6;border:1px solid #e6cf6e;color:#6b5400;border-radius:8px;padding:8px 10px;margin:6px 0;font-size:13px}.nc-note{background:#eef0f3;border:1px solid #cfd4db;color:#444;border-radius:8px;padding:8px 10px;margin:6px 0;font-size:13px}
.bill-diff{margin:2px 0 8px}.linkish{background:none;border:0;color:#1a56b8;text-decoration:underline;cursor:pointer;padding:2px 0;font-size:13px}
.nc-chip{display:inline-block;background:#e4e6ea;color:#555;border-radius:999px;padding:1px 9px;font-size:12px;font-weight:600;white-space:nowrap}
.toast-undo{position:relative;overflow:hidden;background:#222;color:#fff;gap:14px;align-items:center}.toast-undo .toast-action{background:none;border:0;color:#8ec5ff;font-weight:700;cursor:pointer;text-decoration:underline}.toast-undo .toast-close{color:#ddd}
.undo-bar{position:absolute;left:0;bottom:0;height:3px;width:100%;background:#8ec5ff;transform-origin:left;animation:undoshrink 10s linear forwards}@keyframes undoshrink{to{transform:scaleX(0)}}
.filter-note{margin:4px 0 8px;font-size:13px;color:#2f6b3a}.clear-filters{background:#fff;border:1px solid #c0392b;color:#c0392b;border-radius:8px;padding:6px 12px;cursor:pointer}
.filters .filter-on{border-color:#1a56b8!important;background:#eef4ff}
.card-day-actions{flex-wrap:wrap}
.cc-section{margin-top:10px;border-top:1px solid #e3e6ea;padding-top:8px}.cc-toggle{background:none;border:0;cursor:pointer;font-weight:600;padding:2px 0;text-align:left}.cc-toggle small{font-weight:400;color:#666;margin-left:8px}
.cc-list{display:none;list-style:none;margin:8px 0 0;padding:0}.cc-section.open .cc-list{display:block}
.cc-list li{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid #eef0f2}.cc-main{flex:1;display:flex;flex-direction:column;gap:2px}.cc-hrs{min-width:60px;text-align:right;font-variant-numeric:tabular-nums}.cc-btns{display:flex;gap:6px;align-items:center}

.prog-chip{display:inline-block;background:#e8f0ff;color:#1a56b8;border:1px solid #bcd0f5;border-radius:999px;padding:0 8px;font-size:11px;font-weight:600;white-space:nowrap}
.tl{list-style:none;padding:0;margin:8px 0}.tl li{display:flex;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid #eef0f2}.tl .d{width:110px;font-weight:600;flex:none}.tl .n{flex:1}.tl .h{width:70px;text-align:right;flex:none}
[data-tab="time"] .tot{background:#eef4ff;border-radius:8px;padding:8px 12px;font-weight:600;margin-bottom:8px}
.eod-dialog{width:min(980px,96vw)}.eod-top{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin-bottom:8px}.eod-top label{min-width:170px}.eod-total{flex:1;text-align:right;font-weight:600;background:#eef4ff;border-radius:8px;padding:8px 12px}
table.eod{width:100%;border-collapse:collapse;table-layout:fixed;min-width:0!important}.eod th{text-align:left;font-size:12px;color:#5a6b7b;text-transform:uppercase;padding:6px 8px;border-bottom:2px solid #dfe4ea}.eod th:nth-child(1){width:30%}.eod th:nth-child(2){width:11%}.eod th:nth-child(4){width:19%}
.eod td{padding:10px 8px;border-bottom:1px solid #eef0f2;vertical-align:top}.eod .t b{display:block}.eod .t span,.eod .t select,.eod .t input{display:block}.eod .t span.nc-chip{display:inline-block}.eod .t input,.eod .t select{width:100%;margin:6px 0 0}.eod input[type=number]{width:70px}.eod textarea{width:100%}
.eod tr.on{background:#f3f8ff}.eod tr.eod-new{background:#f0fbf3}.eod .done{font-size:12px;color:#2f6b3a}.eod .new-chip{background:#d6f0dc;color:#1f6b33}
.eod .sw label{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;margin:0 0 4px;font-weight:400;font-size:13px}.eod .sw input[type=checkbox]{width:auto!important;margin:0}.eod .sw .ec{width:100px;margin:2px 0 6px}
.eerr{color:#b42318;font-size:13px;margin:4px 0 0}.eod-help{font-size:13px}
.cc-main .nc-chip,.cc-main .prog-chip{align-self:flex-start}

/* Calendar sub-tab */
.tcal-bar{display:flex;align-items:center;justify-content:center;gap:10px;margin:12px 0}.tcal-bar h2{margin:0 10px;font-size:20px;min-width:180px;text-align:center}
.tcal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid #d9e0e8;border-top:1px solid #d9e0e8;background:#fff}
.tdow{background:#eef2f7;font-size:12px;font-weight:700;text-transform:uppercase;color:#5a6b7b;padding:6px 8px;border-right:1px solid #d9e0e8;border-bottom:1px solid #d9e0e8}
.tday{min-height:118px;padding:5px;border-right:1px solid #d9e0e8;border-bottom:1px solid #d9e0e8;cursor:pointer;min-width:0}.tday.out{background:#f7f8fa;opacity:.55}.tday.today{box-shadow:inset 0 0 0 2px #1a56b8}.tday.sel{background:#eef6ff;box-shadow:inset 0 0 0 2px #7aa7e8}
.tdn{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin-bottom:3px}.tdt{font-size:11px;color:#2f6b3a;font-weight:600}
.tchip{display:block;width:100%;text-align:left;margin:2px 0;padding:2px 6px;border:0;border-radius:4px;font-size:12px;line-height:1.25;overflow:hidden;cursor:pointer;background:#e3f4e8;border-left:3px solid #2f9e57;color:#102c44}
.tchip span{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tchip em{display:block;font-style:normal;color:#4a6b55;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tchip.k-prog{background:#eaf1ff;border-left:3px dashed #3b73d1}.tchip.k-prog em{color:#4a5f8a}.tchip.k-nc{background:#fde8e8;border-left:3px solid #d13b3b}.tchip.k-nc em{color:#9a4a4a}
.tchip .pg{display:block;font-style:normal;font-size:11px;color:#1a56b8;font-weight:600}.tmore{font-size:11px;color:#1a56b8;font-weight:600;padding:0 4px}
.tcal-legend{display:flex;gap:16px;font-size:12px;color:#5a6b7b;margin:8px 0 2px}.tcal-legend b{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin-right:5px}.tcal-legend .k-done{background:#e3f4e8;border-left:3px solid #2f9e57}.tcal-legend .k-prog{background:#eaf1ff;border-left:3px dashed #3b73d1}.tcal-legend .k-nc{background:#fde8e8;border-left:3px solid #d13b3b}
.tcal-note{font-size:12px;margin:2px 0 0}
.tcal-detail{background:#fff;border:1px solid #d9e0e8;border-radius:10px;margin-top:14px;padding:14px 16px}.tcal-detail h3{margin:0 0 8px}.tcal-detail table{width:100%;border-collapse:collapse;min-width:0!important}.tcal-detail td{padding:8px;border-top:1px solid #eef0f2}
.nc-chip.nr{background:#fbd5d5;color:#a01919}

/* Delete time cards + End of day cards layout (Oct 15) */
.danger-outline{background:#fff;border:1px solid #e0b4b4;color:#a52e37}
.danger-outline:hover{background:#fff1f1;border-color:#d38c8c}
.eod-dialog{width:min(1040px,96vw);max-width:none;padding:0}
.eod-dialog form{display:flex;flex-direction:column;max-height:92vh}
.eod-grid{display:grid;grid-template-columns:300px 1fr;gap:0;padding:0;overflow:auto;min-height:0}
.eod-side{background:#f5f8fb;border-right:1px solid #e3e7ec;padding:18px}
.eod-main{padding:18px 20px;display:flex;flex-direction:column;gap:12px}
.eod-side .daynav{display:flex;align-items:center;gap:6px;margin-bottom:10px}.eod-side .daynav input{flex:1;min-width:0;text-align:center}
.eod-side .shortcuts.center{justify-content:center;margin:0 0 12px}
.eod-side .big{background:#fff;border:1px solid #d5dde6;border-radius:12px;padding:14px;text-align:center}
.eod-side .big .n{font-size:38px;font-weight:700;color:#102c44;line-height:1}.eod-side .big .l{font-size:12px;color:#5a6b7b;margin-top:4px}
.eod-side .split{display:flex;gap:8px;margin-top:10px;justify-content:center;font-size:12px}.eod-side .split span{background:#eef2f7;border-radius:999px;padding:2px 10px}
.eod-side h4{margin:18px 0 6px;font-size:12px;text-transform:uppercase;color:#5a6b7b;letter-spacing:.04em}
.eod-side .lg{background:#fff;border:1px solid #e0e6ec;border-radius:8px;padding:8px 10px;margin-bottom:6px;font-size:13px}.eod-side .lg b{display:block}
.eod-side .lg .r{display:flex;justify-content:space-between;color:#5a6b7b;margin-top:2px}.eod-side .lg .r a{color:#1a56b8;font-size:12px}.eod-side .lg .bad{color:#a01919}
.eod-side .lgn{font-size:13px}
.eod-side .pend{background:#eef4ff;border:1px dashed #7aa7e8;border-radius:10px;padding:10px 12px;font-size:13px;margin-top:12px}.eod-side .pend b{font-size:15px}
.eod-main .miss{border:2px dashed #9bb7dd;border-radius:12px;padding:12px 14px;background:#fbfdff;margin-bottom:8px}
.eod-main .miss h3{margin:0 0 8px;font-size:15px}.eod-main .miss .g{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}.eod-main .miss label{margin:0;font-size:12px}
.eod-main .mrow{display:flex;gap:14px;align-items:center;margin-top:8px;flex-wrap:wrap}.eod-main .mrow .en{flex:1;min-width:200px}.eod-main .mrow .chk{margin:0;font-size:13px;white-space:nowrap}
.eod-main .chk input,.eod-main .ot input{width:auto}
.eod-main .tc{border:1px solid #d5dde6;border-radius:12px;padding:12px 14px;background:#fff;margin-bottom:8px}
.eod-main .tc.open{border-color:#7aa7e8;box-shadow:0 0 0 3px #eaf1ff}.eod-main .tc.done{background:#f3fbf5;border-color:#b9e0c4}
.eod-main .tc .top{display:flex;justify-content:space-between;align-items:center;gap:10px}.eod-main .tc .top b{font-size:15px}
.eod-main .sub{font-size:12px;color:#5a6b7b}
.eod-main .tc .row{display:grid;grid-template-columns:240px 1fr;gap:14px;margin-top:10px}
.eod-main .tc textarea{width:100%}
.eod .step,.eod-main .step{display:flex;align-items:center;gap:6px}
.step button{width:34px;height:34px;padding:0;font-size:18px}.step input{width:74px;text-align:center;font-size:18px;font-weight:700}
.quick{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.quick button{padding:3px 10px;font-size:12px;border-radius:999px}
.seg{display:inline-flex;border:1px solid #c8d2dd;border-radius:8px;overflow:hidden;margin-top:8px}
.seg .sg{border:0;border-right:1px solid #c8d2dd;border-radius:0;background:#fff;padding:5px 10px;font-size:12px;color:inherit}.seg .sg:last-child{border-right:0}
.seg .sg.on{background:#1a56b8;color:#fff}.seg .sg.red.on{background:#c0392b;color:#fff}
.eod-main .ec{display:block;margin-top:8px;width:140px}.eod-main .ot{display:block;margin:8px 0 0;font-size:13px}
.chipok{background:#d6f0dc;color:#1f6b33;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:600}
.eerr{color:#a01919;font-size:13px;margin:6px 0 0}.eerr:empty{display:none}
.eod-help{font-size:12px}
.eod-dialog .dialog-title{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;border-bottom:1px solid #e3e7ec}.eod-dialog .dialog-title h2{margin:0}
.eod-dialog .dialog-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 22px;border-top:1px solid #e3e7ec;background:#fafbfc}.eod-dialog .dialog-footer p{margin:0;color:#a01919;font-size:13px}
.brand{display:flex;align-items:center;gap:12px}.logo-plate{background:#fff;border-radius:8px;padding:4px 10px;display:inline-flex;align-items:center}.logo{height:30px;width:auto;display:block}.brand-name{font-weight:600}

/* ---- Desktop alerts button ---- */
.alerts-btn{white-space:nowrap}
.alerts-btn.alerts-on{background:#ecfdf3;border-color:#a7e3bd;color:#166534}
#alertsHelp ol{padding-left:20px;line-height:1.6}

#chatTab .count-badge{background:#dc2626}

/* ---- Office chat ---- */
#chatPage .heading{margin-bottom:14px}
.chat-layout{display:grid;grid-template-columns:220px 1fr;gap:16px;height:calc(100vh - 300px);min-height:420px}
.chat-channels{display:flex;flex-direction:column;gap:6px;background:white;border:1px solid #d8e2ec;border-radius:10px;padding:10px;align-self:start}
.chat-channels button{display:flex;justify-content:space-between;align-items:center;text-align:left;border:0;background:transparent;padding:10px 12px;font-weight:600}
.chat-channels button:hover{background:#eaf1fa}
.chat-channels button.selected{background:#163c51;color:white}
.chat-channels .count-badge{background:#dc2626}
.chat-main{position:relative;display:flex;flex-direction:column;background:white;border:1px solid #d8e2ec;border-radius:10px;min-height:0;overflow:hidden}
.chat-head{padding:12px 18px;border-bottom:1px solid #e0e7ef}
.chat-head h2{margin:0;font-size:18px}
.chat-log{flex:1;overflow-y:auto;padding:10px 18px 14px;min-height:0}
.chat-empty{text-align:center;margin-top:40px}
.chat-older{text-align:center;margin:6px 0 10px}
.chat-day{display:flex;align-items:center;gap:10px;margin:16px 0 6px;color:#718399;font-size:12px;font-weight:700}
.chat-day:before,.chat-day:after{content:"";flex:1;border-top:1px solid #e0e7ef}
.chat-msg{padding:1px 0}
.chat-msg.head{margin-top:10px}
.chat-who{display:flex;align-items:center;gap:6px;font-size:14px}
.chat-who small{margin:0;display:inline}
.chat-body{position:relative;padding:3px 34px 3px 22px;border-radius:6px;font-size:14px;line-height:1.45}
.chat-body:hover{background:#f3f6f9}
.chat-msg.mine .chat-who b{color:#145ee5}
.chat-text{white-space:pre-wrap;overflow-wrap:anywhere}
.chat-text a{color:#145ee5}
.chat-file{display:inline-flex;align-items:center;gap:8px;margin-top:4px;padding:8px 12px;border:1px solid #cfdae5;border-radius:8px;background:#f8fafc;color:#173e68;text-decoration:none;font-weight:600}
.chat-file:hover{background:#eaf1fa}
.chat-file small{margin:0;display:inline}
.chat-del{position:absolute;right:4px;top:2px;display:none;border:0;background:transparent;color:#991b1b;font-size:18px;line-height:1;padding:2px 6px}
.chat-body:hover .chat-del,.chat-del:focus{display:block}
.chat-jump{position:absolute;left:50%;transform:translateX(-50%);bottom:84px;background:#145ee5;color:white;border:0;border-radius:16px;padding:6px 14px;box-shadow:0 4px 12px rgba(16,44,68,.25)}
.chat-jump[hidden]{display:none}
.chat-form{border-top:1px solid #e0e7ef;padding:10px 12px}
.chat-pending{font-size:13px;margin:0 0 8px;color:#254869}
.chat-pending small{display:inline;margin:0 6px}
.chat-pending button{padding:3px 8px;font-size:12px}
.chat-compose{display:flex;gap:8px;align-items:flex-end}
.chat-compose textarea{flex:1;resize:none;min-height:42px;max-height:160px;line-height:1.4}
.chat-compose #chatAttach{font-size:18px;padding:8px 11px}
#chatPage.drop .chat-main{outline:3px dashed #145ee5;outline-offset:-3px}
@media (max-width:760px){.chat-layout{grid-template-columns:1fr;height:auto}.chat-channels{flex-direction:row;flex-wrap:wrap}.chat-main{height:70vh}}
.chat-channels{max-height:100%;overflow-y:auto;gap:2px}
.chat-section{font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#718399;padding:10px 12px 4px}
.chat-section:first-child{padding-top:2px}
.chat-channels .dm-name{display:flex;align-items:center;gap:6px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-none{font-size:13px;margin:4px 12px}
/* ---- Who's online ---- */
.header-right{display:flex;align-items:center}
.presence-btn{display:inline-flex;align-items:center;gap:7px;background:transparent;color:white;border:1px solid #4b6a85;border-radius:16px;padding:6px 12px;font-size:13px;margin-left:0}
.presence-btn:hover{background:#1c3d5a}
.presence-list{position:fixed;inset:64px 24px auto auto;margin:0;width:min(400px,calc(100vw - 32px));max-height:70vh;overflow:auto;border:1px solid #d8e2ec;border-radius:10px;padding:14px 16px;background:white;color:#162c41;box-shadow:0 12px 30px rgba(16,44,68,.25)}
.presence-list h3{margin:0 0 8px;font-size:16px}
.presence-list p{font-size:12px;margin:10px 0 0}
.pres-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:10px;padding:7px 0;border-top:1px solid #eef2f6;font-size:14px}
.pres-row:first-of-type{border-top:0}
.pres-name{display:flex;align-items:center;gap:8px;min-width:0}
.pres-name small{display:inline;margin:0}
.pres-state{font-size:12px;color:#718399;white-space:nowrap}
.pres-row button{padding:4px 9px;font-size:12px}
.pres{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;background:#b8c4d0}
.pres-online{background:#16a34a;box-shadow:0 0 0 2px #dcfce7}
.pres-away{background:#f59e0b;box-shadow:0 0 0 2px #fef3c7}
.chat-channels .dm-name .pres{margin-left:2px}
/* BCS Hub online sign-in */
.hub-auth{margin-top:4px}
.hub-form h2{font-size:20px;margin:6px 0 10px}
.hub-form label:not(.remember-login){display:flex;flex-direction:column;align-items:stretch;gap:6px}
.hub-form input:not([type=checkbox]):not([type=radio]){width:100%;box-sizing:border-box}
.hub-form label small{font-weight:normal;color:#8699aa}
.hub-form button.primary{width:100%;padding:12px;border-radius:6px;margin-top:6px;cursor:pointer}
.hub-role{border:1px solid #dce4ed;border-radius:6px;padding:6px 14px;margin:14px 0}
.hub-role legend{font-size:14px;font-weight:bold;color:#435e76;padding:0 4px}
.hub-role label{margin:8px 0}
.hub-small{font-size:14px}
.hub-links{margin:12px 0 0;text-align:right}
.hub-switch{margin:18px 0 0;padding-top:14px;border-top:1px solid #dce4ed;text-align:center;font-size:15px}
.link-btn{background:none;border:0;padding:0;color:#145ee5;font:inherit;cursor:pointer;text-decoration:underline}
.hub-msg{padding:10px 12px;border-radius:6px;font-size:15px;margin:0 0 6px}
.hub-err{background:#fdecec;color:#9b1c1c;border:1px solid #f5c2c2}
.hub-ok{background:#e8f6ee;color:#1d6b3e;border:1px solid #bfe3cd}
.hub-warn{color:#b45309;font-weight:bold}
.pending-users{border:1px solid #dce4ed;border-radius:8px;padding:4px 14px 10px;margin:0 0 16px;background:#f8fafc}
.pending-users h3{margin:12px 0 4px}
.pending-row:last-child{border-bottom:0}
#manageOpen .count-badge{margin-left:6px}
@media (max-width:520px){#login{margin:16px;padding:20px}}

/* ===== Phone layout (BCS Hub mobile). Only applies to screens up to 700px wide; desktop is unchanged. ===== */
@media (max-width:700px){
  /* Compact one-row header */
  header{padding:8px 12px;gap:8px;flex-wrap:nowrap;font-size:16px}
  .brand{gap:8px;min-width:0}
  .logo-plate{padding:3px 7px}
  .logo{height:24px}
  .brand{flex:0 0 auto}
  .brand-name{font-size:16px;white-space:nowrap}
  .hub-online .brand-name,body:has(#manageOpen) .brand-name{display:none}
  .header-right{display:flex;align-items:center;gap:6px;flex-shrink:0;min-width:0}
  #account{display:flex;align-items:center;gap:6px;font-size:13px;flex-wrap:nowrap}
  #account>span{display:none}
  #account button{padding:6px 9px;font-size:13px;white-space:nowrap}
  .today-chip{margin-right:0!important;padding:4px 8px!important;font-size:12px}
  .header-right{min-width:0;overflow:hidden}
  .presence-btn{padding:4px 8px;font-size:12px;white-space:nowrap}

  main{padding:0 12px 24px!important}

  /* Main tabs: one swipeable row that stays at the top while scrolling */
  .page-tabs{display:flex!important;flex-wrap:nowrap;overflow-x:auto;gap:6px;position:sticky;top:0;z-index:30;background:#f3f6f9;margin:0 -12px 8px;padding:8px 12px;border-bottom:1px solid #dce4ed;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .page-tabs::-webkit-scrollbar{display:none}
  .page-tabs button{flex:0 0 auto;margin:0!important;white-space:nowrap;padding:9px 14px}

  /* Button rows that would wrap into several lines: swipe sideways instead */
  #views,.view-toggle,.sub-tabs,.manage-nav,.dialog-tabs{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto;max-width:100%;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  #views::-webkit-scrollbar,.view-toggle::-webkit-scrollbar,.sub-tabs::-webkit-scrollbar,.manage-nav::-webkit-scrollbar,.dialog-tabs::-webkit-scrollbar{display:none}
  #views button,.view-toggle button,.sub-tabs button,.manage-nav button,.dialog-tabs button{flex:0 0 auto;white-space:nowrap}
  .toolbar nav{flex-wrap:nowrap!important}

  /* Bigger touch targets for form controls (16px also stops iPhone zooming in on tap) */
  input:not([type=checkbox]):not([type=radio]):not([type=color]),select,textarea{font-size:16px;min-height:42px}

  /* ---- CAD task list: each task becomes a card ---- */
  table:has(>#rows){min-width:0!important;width:100%}
  table:has(>#rows) thead{display:none}
  table:has(>#rows),table:has(>#rows) tbody{display:block}
  table:has(>#rows) tr.task-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"desc desc" "client proj" "due owner" "status status";gap:4px 10px;padding:12px 12px 12px 14px;border-bottom:1px solid #dce4ed;position:relative}
  table:has(>#rows) tr.task-row>td{display:block;padding:0;border:0;min-width:0;background:none}
  table:has(>#rows) tr.task-row>td:nth-child(1),table:has(>#rows) tr.task-row>td:nth-child(2),table:has(>#rows) tr.task-row>td:nth-child(9),table:has(>#rows) tr.task-row>td:nth-child(10),table:has(>#rows) tr.task-row>td:nth-child(11){display:none}
  table:has(>#rows) tr.task-row>td:nth-child(5){grid-area:desc;font-size:16px}
  table:has(>#rows) tr.task-row>td:nth-child(5) button{font-size:16px;font-weight:bold;text-align:left;padding:0}
  table:has(>#rows) tr.task-row>td:nth-child(3),table:has(>#rows) tr.task-row>td:nth-child(4){font-size:14px;color:#435e76;overflow:hidden;text-overflow:ellipsis}
  table:has(>#rows) tr.task-row>td:nth-child(3){grid-area:client;font-weight:bold}
  table:has(>#rows) tr.task-row>td:nth-child(4){grid-area:proj;text-align:right}
  table:has(>#rows) tr.task-row>td:nth-child(4) small{margin-left:4px}
  table:has(>#rows) tr.task-row>td:nth-child(6){grid-area:due;font-size:14px}
  table:has(>#rows) tr.task-row>td:nth-child(6)::before{content:'Due ';color:#8699aa}
  table:has(>#rows) tr.task-row>td:nth-child(7){grid-area:owner;font-size:14px;text-align:right}
  table:has(>#rows) tr.task-row>td:nth-child(8){grid-area:status}
  table:has(>#rows) tr.task-row>td:nth-child(8) select{width:100%!important;max-width:none!important}
  table:has(>#rows) tr:not(.task-row){display:block}
  table:has(>#rows) tr:not(.task-row)>td{display:block}
  .table-wrap{max-height:none!important}

  /* ---- Crew calendar ---- */
  .calendar-grid{min-width:0!important;grid-template-columns:repeat(7,minmax(0,1fr))!important}
  .weekday{padding:6px 0;font-size:12px}
  /* Month: compact cells, assignments shown as colored bars; tap a day to see it */
  .calendar-grid:not(.week-grid) .calendar-day{height:76px;min-height:76px;max-height:76px;padding:2px}
  .calendar-grid:not(.week-grid) .calendar-day .day-number{font-size:13px;padding:2px 4px}
  .calendar-grid:not(.week-grid) .calendar-day .crew-entry{height:6px;min-height:0;margin-top:2px;padding:0;border-radius:3px;font-size:0;line-height:0}
  .calendar-grid:not(.week-grid) .calendar-day .crew-entry *{display:none!important}
  .calendar-grid:not(.week-grid) .calendar-more{font-size:10px;line-height:1.2;padding:0 2px}
  /* Week: one day per row, full detail */
  .calendar-grid.week-grid{grid-template-columns:1fr!important}
  .calendar-grid.week-grid .weekday{display:none}
  .calendar-grid.week-grid .calendar-day{min-height:0!important;padding:8px 10px}
  .calendar-grid.week-grid .calendar-day .day-number{font-weight:bold;font-size:15px}
  .calendar-grid.week-grid .calendar-day .crew-entry span{font-size:13px}

  /* ---- Chat: channel list becomes a swipeable row above the messages ---- */
  .chat-layout{display:flex!important;flex-direction:column;height:auto!important;min-height:0;gap:10px}
  .chat-channels{flex-direction:row!important;flex-wrap:nowrap;overflow-x:auto;align-items:center;padding:8px;scrollbar-width:none;align-self:stretch!important;min-width:0;max-width:100%}
  .chat-main{min-width:0}
  .chat-channels::-webkit-scrollbar{display:none}
  .chat-channels>*{flex:0 0 auto;white-space:nowrap}
  .chat-main{height:calc(100dvh - 190px);min-height:360px}
  .chat-log{padding:8px 12px}
  .chat-body{padding-right:30px}

  /* ---- Dialogs fill the screen ---- */
  dialog,dialog[open]{width:100vw!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;margin:0!important;border-radius:0!important;border:0!important}
  #uiDialog{height:auto!important;max-height:90dvh!important;width:92vw!important;max-width:92vw!important;margin:auto!important;border-radius:12px!important}

  /* Wide data tables (PLA, show-up review) keep sideways scrolling inside their box */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  footer{font-size:12px}
}
@media (max-width:430px){
  #account .today-chip{display:none}
  .presence-btn{padding:4px 6px}
}
