:root{--accent:#2563eb;--sidebar:#0f172a;--page-bg:#f1f5f9;--card-bg:#ffffff;--text:#0f172a;}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f5f7;color:#17202a}button,input,select{font:inherit}button{border:0;border-radius:10px;padding:11px 15px;background:#17202a;color:white;cursor:pointer}button.secondary{background:#e7ebef;color:#17202a}.shell{min-height:100vh;display:grid;place-items:center;padding:20px}.login .card{max-width:430px;width:100%}.card{background:white;border:1px solid #dfe4e8;border-radius:16px;padding:20px;box-shadow:0 3px 14px #00000008}.content{padding:24px;max-width:1300px;width:100%;margin:auto}header,.bar,.row{display:flex;align-items:center;justify-content:space-between;gap:12px}header{margin-bottom:22px}.layout{min-height:100vh;display:grid;grid-template-columns:230px 1fr}aside{background:#111820;color:white;padding:20px;display:flex;flex-direction:column;gap:8px}.brand{font-weight:800;font-size:25px;padding:10px 8px 20px}.nav{background:transparent;text-align:left;color:#d8e0e8}.nav.on,.nav:hover{background:#25313d}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stats span{display:block;color:#697581;font-size:14px}.stats b{display:block;font-size:25px;margin-top:8px}.pill{display:inline-block;padding:4px 9px;border-radius:999px;background:#e9eef2;font-size:12px}.pill.off{opacity:.55}.muted{color:#697581}.error{color:#b42318;min-height:20px}label{display:block;margin:12px 0 6px;font-weight:600}input,select{width:100%;padding:11px;border:1px solid #cdd5dc;border-radius:9px;background:white}hr{border:0;border-top:1px solid #e3e7ea;margin:18px 0}.row{padding:14px 0;border-bottom:1px solid #edf0f2}.modal{position:fixed;inset:0;background:#0008;display:grid;place-items:center;padding:16px;z-index:10}.modalbox{background:white;border-radius:16px;width:min(760px,100%);max-height:90vh;overflow:auto;padding:20px}.permgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.check{font-weight:400;background:#f6f8fa;padding:9px;border-radius:8px}.check input{width:auto;margin-right:6px}.login h1{margin-top:0}@media(max-width:800px){.layout{grid-template-columns:1fr}aside{position:sticky;top:0;z-index:5;display:flex;flex-direction:row;overflow:auto;padding:8px}.brand{padding:8px}.nav{white-space:nowrap}.content{padding:14px}.stats{grid-template-columns:repeat(2,1fr)}header{align-items:flex-start}.permgrid{grid-template-columns:1fr}}@media(max-width:480px){.stats{grid-template-columns:1fr}.row{align-items:flex-start;flex-wrap:wrap}.modalbox{padding:15px}}

textarea{width:100%;padding:11px;border:1px solid #cdd5dc;border-radius:9px;font:inherit;resize:vertical}.modulegrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:16px 0}.modulegrid button{min-height:48px}@media(max-width:800px){.modulegrid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.modulegrid{grid-template-columns:1fr}}
.gantt{display:grid;gap:8px;margin:12px 0 18px}.ganttrow{display:grid;grid-template-columns:180px 1fr 180px;gap:8px;align-items:center}.glabel{font-size:.9rem;overflow:hidden;text-overflow:ellipsis}.gbar{min-height:28px;border-radius:6px;background:linear-gradient(90deg,currentColor var(--pct),#e5e7eb var(--pct));display:flex;align-items:center;padding:0 8px;font-size:.72rem}.gdates{font-size:.78rem;color:#667085}@media(max-width:700px){.ganttrow{grid-template-columns:1fr}.gbar{min-height:24px}.gdates{margin-top:-5px}}
.plan-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.plan-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}.plan-stat{padding:12px;background:#f6f8fa;border-radius:10px}.plan-stat b{display:block;font-size:18px}.gantt-head{display:grid;grid-template-columns:220px 1fr 180px;gap:8px;font-size:.75rem;font-weight:700;color:#667085;padding-bottom:6px}.ganttrow{min-height:34px}.gbar{overflow:hidden;white-space:nowrap}.critical{font-weight:800}.resource-table{width:100%;overflow:auto}.resource-table table{width:100%;border-collapse:collapse}.resource-table th,.resource-table td{padding:8px;border-bottom:1px solid #edf0f2;text-align:left;white-space:nowrap}@media(max-width:700px){.plan-summary{grid-template-columns:repeat(2,1fr)}.gantt-head{grid-template-columns:1fr}.gantt-head div:nth-child(2),.gantt-head div:nth-child(3){display:none}}
.mini-kpis{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.mini-kpis span{font-size:12px;padding:3px 7px;border:1px solid #ddd;border-radius:999px}.project-summary-row{align-items:center}

.req{font-weight:700}.modal label{display:block;margin-top:8px}

/* Phase 19 - dashboard refresh */
body{background:#f6f8fb;color:#172033}
.layout{grid-template-columns:248px 1fr}
aside{background:linear-gradient(180deg,#16283a 0%,#203a52 100%);padding:18px 12px;box-shadow:4px 0 18px rgba(15,35,55,.08)}
.brand{display:flex;align-items:center;gap:10px;font-size:23px;padding:10px 12px 24px;color:#fff}.brand:before{content:"";width:10px;height:10px;border-radius:50%;background:#36b37e;box-shadow:0 0 0 5px rgba(54,179,126,.15)}
.nav{border-radius:10px;color:#dce7f0;padding:11px 13px;transition:.15s}.nav.on,.nav:hover{background:rgba(255,255,255,.11);color:#fff}
.content{max-width:1450px;padding:28px 32px}.content>header{margin-bottom:24px}.content>header h1{margin:0 0 5px;font-size:30px;letter-spacing:-.4px}
.card{border:1px solid #e2e8f0;box-shadow:0 5px 20px rgba(31,50,70,.05);border-radius:16px}
.eyebrow{display:block;font-size:11px;font-weight:800;letter-spacing:1.1px;color:#738195;margin-bottom:5px}
.dash-welcome{display:flex;justify-content:space-between;gap:20px;align-items:end;background:linear-gradient(135deg,#ffffff 0%,#eef7ff 100%);border:1px solid #dce9f5;border-radius:18px;padding:24px;margin-bottom:18px}
.dash-welcome h2{margin:0;font-size:25px}.dash-welcome p{margin:5px 0 0;color:#637083}.dash-filter{min-width:250px}.dash-filter label{margin:0 0 6px}.dash-filter select{background:#fff}
.dash-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.summary-card{background:#fff;border:1px solid #e1e7ef;border-radius:15px;padding:18px;position:relative;overflow:hidden}.summary-card:after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#4b8bd8}.summary-card:nth-child(2):after{background:#36a269}.summary-card:nth-child(3):after{background:#e0a22b}.summary-card:nth-child(4):after{background:#8a67c7}.summary-card span,.summary-card small{display:block;color:#6d7888}.summary-card b{display:block;font-size:30px;margin:6px 0 2px}.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px}.dash-main{min-width:0}.dash-side{display:flex;flex-direction:column;gap:18px}.section-head{display:flex;justify-content:space-between;align-items:end;margin:4px 0 12px}.section-head h2{margin:0;font-size:20px}.section-head .eyebrow{margin-bottom:2px}.projects-head{margin-top:26px}
.dash-actions{display:grid;grid-template-columns:repeat(5,1fr);gap:11px}.dash-action{color:#172033;background:#fff;border:1px solid #e0e6ee;border-radius:14px;text-align:left;padding:15px;display:grid;grid-template-columns:28px 1fr 16px;align-items:center;gap:9px;box-shadow:0 3px 12px rgba(31,50,70,.04);transition:transform .12s,box-shadow .12s,border-color .12s}.dash-action:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(31,50,70,.08);border-color:#b9c7d8}.dash-action b{font-size:23px;display:block}.dash-action small{display:block;color:#6d7888;margin-top:2px}.dash-arrow{font-size:18px;color:#8190a2}.dash-icon{width:25px;height:25px;border-radius:8px;background:#dcecff;position:relative}.dash-action.red .dash-icon{background:#ffe0e0}.dash-action.amber .dash-icon{background:#fff0ca}.dash-action.purple .dash-icon{background:#eee4ff}.dash-action.teal .dash-icon{background:#d8f3ef}
.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.project-card{background:#fff;border:1px solid #e1e7ef;border-radius:16px;padding:18px;box-shadow:0 4px 16px rgba(31,50,70,.04)}.project-card-head{display:flex;justify-content:space-between;gap:10px;align-items:start}.project-card h3{margin:0;font-size:18px}.project-meta{color:#687588;font-size:13px;margin:6px 0 14px}.linkbtn{background:transparent;color:#2868a9;padding:4px 0}.project-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.kpi-chip{border-radius:10px;padding:9px 6px;text-align:center;background:#f5f8fc;color:#26364b;border:1px solid transparent}.kpi-chip:hover{border-color:#b9c7d8}.kpi-chip b{display:block;font-size:18px}.kpi-chip span{font-size:11px;color:#66758a}.kpi-chip.blue{background:#eef6ff}.kpi-chip.red{background:#fff0f0}.kpi-chip.amber{background:#fff8e8}.kpi-chip.purple{background:#f5efff}.kpi-chip.teal{background:#eaf9f6}.project-footer{display:flex;justify-content:space-between;gap:10px;margin-top:13px;padding-top:12px;border-top:1px solid #edf1f5;font-size:12px;color:#6b7787}.project-footer b{color:#27374a}
.activity-card{padding:18px}.activity-row{display:flex;gap:10px;padding:11px 0;border-bottom:1px solid #edf1f5}.activity-row:last-child{border-bottom:0}.activity-dot{width:8px;height:8px;border-radius:50%;background:#4b8bd8;margin-top:7px;flex:none}.quick-card{padding:18px}.quick-card h3{margin-top:0}.quick-card button{width:100%;margin-top:8px}.empty-state{padding:24px;text-align:center;color:#7a8797;background:#fafbfd;border:1px dashed #d8e0e9;border-radius:12px}
.record-row{gap:15px}.record-open{background:transparent;color:#172033;text-align:left;padding:0;flex:1}.record-open b,.record-open span{display:block}.record-open:hover{color:#2868a9}.record-detail{padding-top:4px}.record-title{padding:8px 0 18px;border-bottom:1px solid #edf1f5}.record-title h2{margin:0 0 8px}.detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}.detail-field{background:#f7f9fb;border:1px solid #e7ecf1;border-radius:10px;padding:11px}.detail-field span{display:block;color:#738095;font-size:11px;text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.detail-field b{font-weight:600;white-space:pre-wrap}.detail-actions{display:flex;justify-content:flex-end}
@media(max-width:1050px){.dash-grid{grid-template-columns:1fr}.dash-actions{grid-template-columns:repeat(3,1fr)}.project-grid{grid-template-columns:1fr}.dash-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.content{padding:16px}.dash-welcome{align-items:stretch;flex-direction:column}.dash-filter{min-width:0}.dash-actions{grid-template-columns:repeat(2,1fr)}.project-kpis{grid-template-columns:repeat(3,1fr)}.project-footer{flex-direction:column}.detail-grid{grid-template-columns:1fr}}
@media(max-width:480px){.dash-summary{grid-template-columns:1fr}.dash-actions{grid-template-columns:1fr}.project-kpis{grid-template-columns:repeat(2,1fr)}}
.dash-record{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;background:#fff;color:#172033;border:1px solid #e4eaf1;border-radius:11px;padding:12px 14px;margin:6px 0}.dash-record:hover{border-color:#8db5dc;background:#f8fbff}.dash-record b,.dash-record small{display:block}.dash-record small{color:#718096;margin-top:3px}.detail-toolbar{margin-bottom:8px}


/* Phase 19B - unified visual language across the application */
:root{--cc-navy:#17324d;--cc-blue:#2f80c9;--cc-blue-soft:#eaf4ff;--cc-green:#2f9e68;--cc-green-soft:#e9f8f0;--cc-amber:#d99718;--cc-amber-soft:#fff6df;--cc-red:#d9534f;--cc-red-soft:#fff0ef;--cc-purple:#7a5bc7;--cc-purple-soft:#f3efff;--cc-teal:#168c91;--cc-teal-soft:#e9f8f8;--cc-border:#dfe7ef;--cc-text:#172033;--cc-muted:#66758a}
body{background:#f4f7fa;color:var(--cc-text)}
button{background:var(--cc-navy);box-shadow:0 1px 2px rgba(20,45,70,.08)}
button:hover{filter:brightness(1.06)}
button.secondary{background:#edf2f6;color:var(--cc-navy);border:1px solid #d8e1ea}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(47,128,201,.14);border-color:var(--cc-blue)}
.card{border-color:var(--cc-border)}
.modulegrid button{background:#fff;color:var(--cc-navy);border:1px solid var(--cc-border);font-weight:650}
.modulegrid button:hover{background:var(--cc-blue-soft);border-color:#b8d7f2;color:#1769a8}
.modulegrid button:nth-child(4n+1){border-left:4px solid var(--cc-blue)}
.modulegrid button:nth-child(4n+2){border-left:4px solid var(--cc-red)}
.modulegrid button:nth-child(4n+3){border-left:4px solid var(--cc-amber)}
.modulegrid button:nth-child(4n+4){border-left:4px solid var(--cc-purple)}
.record-row{background:#fff;border:1px solid #e6edf3;border-radius:12px;margin:8px 0;padding:10px 12px;box-shadow:0 2px 8px rgba(31,50,70,.025)}
.record-row:hover{border-color:#c7d9e9}
.record-open{border-left:4px solid var(--cc-blue);padding:9px 10px;border-radius:7px}
.programme-row{background:#fff;border:1px solid var(--cc-border);border-radius:12px;margin:8px 0;padding:14px 16px;box-shadow:0 2px 8px rgba(31,50,70,.03)}
.programme-row:nth-child(odd){border-left:4px solid var(--cc-blue)}
.programme-row:nth-child(even){border-left:4px solid var(--cc-green)}
.planning-shell{padding:22px}
.plan-error{background:var(--cc-red-soft);border:1px solid #f1c4c2;border-radius:12px;padding:16px;margin-top:16px;color:#9e2f2c}
.plan-error button{margin-top:12px}
.plan-toolbar button{border:1px solid transparent}
.plan-toolbar button:nth-child(1){background:var(--cc-blue)}
.plan-toolbar button:nth-child(2){background:#edf2f6;color:var(--cc-navy)}
.plan-toolbar button:nth-child(3){background:var(--cc-purple);color:#fff}
.plan-toolbar button:nth-child(4){background:var(--cc-teal);color:#fff}
.plan-toolbar button:nth-child(5){background:var(--cc-amber);color:#fff}
.plan-toolbar button:nth-child(6){background:var(--cc-green);color:#fff}
.plan-toolbar button:nth-child(7){background:var(--cc-blue);color:#fff}
.plan-toolbar button:nth-child(8){background:#edf2f6;color:var(--cc-navy)}
.plan-toolbar button:nth-child(9){background:var(--cc-red);color:#fff}
.plan-toolbar button:nth-child(10),.plan-toolbar button:nth-child(11){background:#edf2f6;color:var(--cc-navy)}
.plan-stat{background:#f8fafc;border:1px solid #e4ebf2;position:relative;overflow:hidden}
.plan-stat:nth-child(1){border-top:3px solid var(--cc-blue)}
.plan-stat:nth-child(2){border-top:3px solid var(--cc-green)}
.plan-stat:nth-child(3){border-top:3px solid var(--cc-red)}
.plan-stat:nth-child(4){border-top:3px solid var(--cc-purple)}
.ganttrow{padding:4px 0}
.gbar{color:var(--cc-blue);background:linear-gradient(90deg,currentColor var(--pct),#e8eef4 var(--pct));border:1px solid #dce5ed}
.gbar:has(+ .gdates){ }
.glabel.critical{color:#b33a36}
.ganttrow:has(.critical) .gbar{color:var(--cc-red)}
.ganttrow:nth-child(3n) .gbar{color:var(--cc-green)}
.ganttrow:nth-child(4n) .gbar{color:var(--cc-purple)}
.resource-table th{background:#edf4fa;color:var(--cc-navy)}
.resource-table tr:hover td{background:#f8fbfd}
.success{color:#217a4e;background:var(--cc-green-soft);border:1px solid #bfe5cf;border-radius:8px;padding:9px}
.error{color:#a33430}
.pill{background:var(--cc-blue-soft);color:#236a9e;border:1px solid #cde3f6}

@media(max-width:800px){.content>header h1{font-size:25px}.planning-shell{padding:16px}.plan-toolbar button{flex:1;min-width:145px}}

/* Phase 20 - connected project control room */
.cockpit-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-end;background:linear-gradient(135deg,#ffffff 0%,#eef7ff 100%);border:1px solid #dce9f5;border-radius:18px;padding:22px;margin-bottom:16px}.cockpit-head h2{margin:0;font-size:26px}.cockpit-head p{margin:5px 0 0}.cockpit-actions{display:flex;gap:8px;flex-wrap:wrap}.cockpit-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:18px}.cockpit-strip>div{background:#fff;border:1px solid var(--cc-border);border-radius:12px;padding:13px;position:relative;overflow:hidden}.cockpit-strip>div:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cc-blue)}.cockpit-strip>div:nth-child(2):before{background:var(--cc-green)}.cockpit-strip>div:nth-child(3):before{background:var(--cc-amber)}.cockpit-strip>div:nth-child(4):before{background:var(--cc-purple)}.cockpit-strip>div:nth-child(5):before{background:var(--cc-teal)}.cockpit-strip>div:nth-child(6):before{background:var(--cc-blue)}.cockpit-strip span,.cockpit-strip small{display:block;color:var(--cc-muted);font-size:12px}.cockpit-strip b{display:block;font-size:23px;margin:4px 0}.cockpit-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px}.cockpit-modules{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.cockpit-module{background:#fff;color:var(--cc-text);border:1px solid var(--cc-border);border-left:4px solid var(--cc-blue);border-radius:12px;text-align:left;padding:13px;display:block}.cockpit-module:nth-child(4n+2){border-left-color:var(--cc-green)}.cockpit-module:nth-child(4n+3){border-left-color:var(--cc-amber)}.cockpit-module:nth-child(4n+4){border-left-color:var(--cc-purple)}.cockpit-module:hover{background:#f8fbff;border-color:#bfd3e5}.cockpit-module-name,.cockpit-module b,.cockpit-module .muted{display:block}.cockpit-module b{font-size:23px;margin:3px 0}.cockpit-module .muted{font-size:11px}.cockpit-programme{background:#fff;border:1px solid var(--cc-border);border-radius:14px;padding:17px;margin-top:18px;border-top:4px solid var(--cc-blue)}.cockpit-programme-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.cockpit-programme h3{margin:0}.cockpit-programme p{margin:4px 0 0}.progress-track{height:10px;background:#e9eef3;border-radius:999px;overflow:hidden;margin:15px 0 10px}.progress-track span{display:block;height:100%;background:var(--cc-blue);border-radius:999px}.cockpit-programme-foot{display:flex;justify-content:space-between;gap:10px;color:var(--cc-muted);font-size:12px}.cockpit-section{margin-top:24px}.cockpit-attention,.cockpit-recent{width:100%;background:#fff;color:var(--cc-text);border:1px solid var(--cc-border);border-radius:11px;padding:12px 14px;margin:6px 0;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:12px}.cockpit-attention:hover,.cockpit-recent:hover{background:#fff9f9;border-color:#e7b6b3}.cockpit-attention b,.cockpit-attention small,.cockpit-recent b,.cockpit-recent small{display:block}.cockpit-attention small,.cockpit-recent small{color:var(--cc-muted);margin-top:3px}.cockpit-badge{padding:5px 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}.cockpit-badge.red{background:var(--cc-red-soft);color:#a33430}.cockpit-side{display:flex;flex-direction:column;gap:16px}.cockpit-side .card{padding:17px}.cockpit-help h3{margin-top:0}.cockpit-help button{width:100%;margin-top:8px}
@media(max-width:1100px){.cockpit-strip{grid-template-columns:repeat(3,1fr)}.cockpit-grid{grid-template-columns:1fr}.cockpit-modules{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.cockpit-head{align-items:stretch;flex-direction:column}.cockpit-strip{grid-template-columns:repeat(2,1fr)}.cockpit-modules{grid-template-columns:repeat(2,1fr)}.cockpit-programme-head,.cockpit-programme-foot{flex-direction:column}.cockpit-actions button{flex:1}.cockpit-attention,.cockpit-recent{align-items:flex-start}}
@media(max-width:480px){.cockpit-strip,.cockpit-modules{grid-template-columns:1fr}}

/* Phase 25 - Intelligent Daily Site Control */
.daily-head{display:flex;justify-content:space-between;gap:18px;align-items:end;background:linear-gradient(135deg,#fff,#eef7ff);border:1px solid #dce9f5;border-radius:18px;padding:20px;margin-bottom:16px}.daily-head h2{margin:0}.daily-head select{max-width:340px}.daily-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.daily-kpis>div{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:14px}.daily-kpis span,.daily-kpis small{display:block;color:#687789;font-size:12px}.daily-kpis b{display:block;font-size:25px;margin:5px 0}.daily-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px}.daily-card{margin-bottom:16px}.attendance-row,.daily-task{display:grid;grid-template-columns:1fr auto 110px;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid #edf0f2}.attendance-row small,.daily-task small{display:block;color:#718096;font-size:12px;margin-top:3px}.attendance-row .check{margin:0;font-weight:500;background:#f7f9fb}.attendance-row input[type=number]{width:110px}.daily-task.late{background:#fff3f3;border:1px solid #f2b8b8;border-radius:10px;padding:11px;margin:7px 0}.daily-task select{width:130px}.daily-task input[type=number]{width:90px}.notice-danger{display:flex;gap:10px;align-items:center;background:#ffe7e7;border:1px solid #ef9a9a;color:#9b1c1c;border-radius:12px;padding:12px;margin:10px 0}.notice-danger span{font-size:13px}.daily-control-list{display:grid;gap:8px}.daily-control-list button{display:flex;justify-content:space-between;background:#f7f9fb;color:#172033;border:1px solid #e2e8f0}.daily-control-list button:hover{background:#eef5fb}@media(max-width:900px){.daily-kpis{grid-template-columns:repeat(3,1fr)}.daily-grid{grid-template-columns:1fr}}@media(max-width:600px){.daily-head{align-items:stretch;flex-direction:column}.daily-head select{max-width:none}.daily-kpis{grid-template-columns:repeat(2,1fr)}.attendance-row{grid-template-columns:1fr auto}.attendance-row input[type=number]{grid-column:1 / -1;width:100%}.daily-task{grid-template-columns:1fr}.daily-task select,.daily-task input[type=number]{width:100%}}

/* Phase 26 - mobile-first Daily Site Control */
.daily-quickbar{display:flex;justify-content:space-between;align-items:center;gap:16px;background:#fff;border:1px solid var(--cc-border);border-left:5px solid var(--cc-blue);border-radius:14px;padding:13px 15px;margin-bottom:14px;box-shadow:0 2px 8px rgba(20,45,70,.04)}
.daily-quickbar b{display:block;font-size:20px;margin:2px 0}.daily-quickbar .muted{font-size:12px}.daily-quick-actions{display:flex;gap:8px;flex-wrap:wrap}.daily-quick-actions button{white-space:nowrap}
.attendance-row{min-height:58px}.attendance-row .check{cursor:pointer;padding:9px 10px;border:1px solid #dfe7ef;border-radius:10px}.attendance-row .check input{width:auto;margin-right:5px}
@media(max-width:700px){
 .daily-quickbar{position:sticky;top:8px;z-index:20;align-items:stretch;flex-direction:column;padding:12px;background:rgba(255,255,255,.97);backdrop-filter:blur(8px)}
 .daily-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.daily-quick-actions button:last-child{grid-column:1 / -1;font-size:16px;padding:13px}
 .daily-kpis{grid-template-columns:repeat(2,1fr);gap:8px}.daily-kpis>div{padding:11px}.daily-kpis b{font-size:22px}
 .daily-card{padding:14px}.daily-card h2{font-size:19px}.daily-card .section-head{gap:8px;align-items:flex-start;flex-direction:column}
 .attendance-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 0}.attendance-row .check{align-self:center}.attendance-row input[type=number]{grid-column:1 / -1;height:42px}
 .daily-task{padding:12px 0;gap:8px}.daily-task select,.daily-task input[type=number]{height:42px;font-size:16px}
 .daily-task.late{padding:12px;margin:7px 0}.notice-danger{align-items:flex-start;flex-direction:column}
 .daily-control-list button{min-height:46px;padding:12px}.daily-card textarea{min-height:70px}
 .daily-grid{gap:10px}
 .daily-grid aside{display:flex;flex-direction:column}
 .daily-grid aside .daily-card:last-child{position:sticky;bottom:8px;z-index:15;box-shadow:0 4px 20px rgba(20,45,70,.14)}
}
@media(max-width:420px){.daily-kpis{grid-template-columns:1fr 1fr}.daily-kpis b{font-size:20px}.daily-head{padding:14px}.daily-head h2{font-size:21px}}

.quick-capture{border-top:4px solid var(--blue,#2563eb)}
.quick-capture-grid{display:grid;grid-template-columns:180px 1fr;gap:12px}
.quick-capture-grid .wide{grid-column:1/-1}
.quick-capture-actions{display:flex;gap:12px;align-items:center;margin-top:12px;flex-wrap:wrap}
.photo-input{display:inline-flex;align-items:center;gap:8px;border:1px solid #cbd5e1;border-radius:10px;padding:10px 14px;background:#fff;cursor:pointer;font-weight:700}
.photo-input input{max-width:180px}
@media(max-width:700px){.quick-capture-grid{grid-template-columns:1fr}.quick-capture-grid .wide{grid-column:auto}.quick-capture-actions button,.photo-input{width:100%;justify-content:center}}

/* Phase 28 - PM attention-first dashboard */
.dash-hero{display:flex;justify-content:space-between;gap:18px;align-items:center;background:linear-gradient(135deg,#fff,#edf7ff);border:1px solid #d9e8f5;border-radius:18px;padding:22px;margin-bottom:14px}.dash-hero h2{margin:3px 0 4px;font-size:28px;color:var(--cc-navy)}.dash-hero p{margin:0;color:var(--cc-muted)}.dash-hero-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.dash-hero-actions select{min-width:220px}.dash-today-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.dash-today-strip>div{background:#fff;border:1px solid var(--cc-border);border-radius:13px;padding:13px 14px;position:relative;overflow:hidden}.dash-today-strip>div:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cc-blue)}.dash-today-strip>div:nth-child(2):before{background:var(--cc-green)}.dash-today-strip>div:nth-child(3):before{background:var(--cc-amber)}.dash-today-strip>div:nth-child(4):before{background:var(--cc-purple)}.dash-today-strip>div:nth-child(5):before{background:var(--cc-red)}.dash-today-strip .attention{background:#fff5f5;border-color:#f0b4b4}.dash-today-strip span,.dash-today-strip small{display:block;color:var(--cc-muted);font-size:11px}.dash-today-strip b{display:block;font-size:24px;margin:4px 0}.dash-priority-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px}.priority-card{background:#fff;border:1px solid var(--cc-border);border-radius:15px;padding:16px;box-shadow:0 2px 8px rgba(20,45,70,.035);min-width:0}.priority-card.late-card{border-top:4px solid var(--cc-red)}.priority-card.today-card{border-top:4px solid var(--cc-blue)}.priority-card.manpower-card{border-top:4px solid var(--cc-amber)}.priority-card.daily-card-dash{border-top:4px solid var(--cc-teal)}.priority-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:9px}.priority-head h2{margin:2px 0 0;font-size:18px}.count{min-width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#edf4fa;color:var(--cc-navy);font-weight:800}.danger-count{background:var(--cc-red-soft);color:#a33430}.today-count{background:var(--cc-blue-soft);color:#236a9e}.warning-count{background:var(--cc-amber-soft);color:#946b00}.attention-item{width:100%;border:1px solid #e3e9ee;background:#f9fbfc;color:var(--cc-text)!important;border-radius:10px;padding:12px 13px;margin:6px 0;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:12px;line-height:1.3;min-height:58px}.attention-item>span{display:block;min-width:0;flex:1;color:var(--cc-text)!important}.attention-item b{display:block;color:var(--cc-navy)!important;font-size:14px;font-weight:800;line-height:1.3}.attention-item small{display:block;color:#56657a!important;font-size:12px;line-height:1.35;margin-top:4px}.attention-item strong{flex:none;color:var(--cc-navy)!important;font-size:11px;font-weight:900;letter-spacing:.02em;white-space:nowrap;border-radius:999px;padding:6px 9px;background:#fff;border:1px solid #cfd9e3}.attention-item:hover{background:#f1f7fc;border-color:#bdd3e4}.attention-item.danger{background:#fff1f1;border-color:#efb6b6}.attention-item.danger b{color:#8f2622!important}.attention-item.danger small{color:#7d3c38!important}.attention-item.danger strong{color:#8f2622!important;border-color:#e7b0ad;background:#fff7f7}.attention-item.danger:hover{background:#ffe7e7}.attention-item.warning{background:#fff9e8;border-color:#efd38a}.attention-item.warning b{color:#704d00!important}.attention-item.warning small{color:#705f39!important}.attention-item.warning strong{color:#704d00!important;border-color:#e4cb8b;background:#fffdf5}.attention-item.today{background:#f1f7ff;border-color:#c8dff5}.attention-item.today b{color:#174a78!important}.attention-item.today small{color:#526d88!important}.attention-item.today strong{color:#174a78!important;border-color:#b9d3eb;background:#fff}.attention-item.neutral{background:#f5fbfb;border-color:#c8e5e3}.attention-item.neutral b{color:#175b57!important}.attention-item.neutral small{color:#56716f!important}.attention-item.neutral strong{color:#175b57!important;border-color:#b9d9d6;background:#fff}.priority-empty{padding:14px;border-radius:10px;background:#f7f9fb;color:var(--cc-muted);font-size:13px}.priority-empty.good{background:#effaf3;color:#217a4e}
.task-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}.task-detail-grid>div{background:#f7f9fb;border:1px solid #e3e9ee;border-radius:10px;padding:10px}.task-detail-grid .eyebrow{display:block}.task-detail-grid b{display:block;margin-top:4px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
@media(max-width:1000px){.dash-today-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.dash-hero{align-items:stretch;flex-direction:column;padding:17px}.dash-hero h2{font-size:23px}.dash-hero-actions{display:grid;grid-template-columns:1fr}.dash-hero-actions select,.dash-hero-actions button{width:100%}.dash-today-strip{grid-template-columns:repeat(2,1fr);gap:8px}.dash-priority-grid{grid-template-columns:1fr}.attention-item{min-height:54px}.task-detail-grid{grid-template-columns:1fr}}
.morning-steps{display:flex;gap:8px;margin:0 0 10px;overflow:auto}.morning-step{display:flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;background:#eef2f6;color:#64748b;font-size:13px;white-space:nowrap}.morning-step b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#cbd5e1;color:#fff}.morning-step.active{background:#e8f2ff;color:#175ea8}.morning-step.active b{background:#2878c8}.morning-bar{border-left-color:#20a36a}.daily-progress-strip{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:10px 14px;margin-bottom:14px;display:grid;grid-template-columns:auto 1fr;gap:15px;align-items:center}.daily-progress-strip span{display:block;color:#718096;font-size:12px}.progress{height:8px;background:#e8edf2;border-radius:99px;overflow:hidden}.progress span{height:100%;display:block;background:#20a36a;border-radius:99px;transition:width .2s ease}.task-actions{display:flex;gap:6px;align-items:center}.morning-save{position:sticky;top:76px}.big-save{width:100%;padding:15px;font-size:15px;font-weight:800}.save-checks{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.save-checks span{font-size:12px;background:#eef8f2;color:#197047;padding:5px 8px;border-radius:999px}.morning-card h2{margin-bottom:2px}@media(max-width:600px){.daily-progress-strip{grid-template-columns:1fr}.morning-steps{margin-bottom:8px}.morning-save{position:static}.task-actions{width:100%}.task-actions select,.task-actions input{flex:1;width:auto}.big-save{position:sticky;bottom:10px;z-index:15;box-shadow:0 8px 24px rgba(20,45,70,.18)}}

:root{
 --cc-navy:#132238;--cc-blue:#2563eb;--cc-blue-soft:#eef4ff;--cc-green:#16845b;
 --cc-amber:#b86b00;--cc-red:#c33a35;--cc-purple:#7357b8;--cc-border:#dfe5ec;
 --cc-bg:#f6f8fb;--cc-text:#17202a;--cc-muted:#667085;
}
body{background:var(--cc-bg);color:var(--cc-text)}
.layout{grid-template-columns:252px 1fr}
aside{background:linear-gradient(180deg,#132238 0%,#0f1b2b 100%);padding:16px 12px;box-shadow:8px 0 28px #0b16260c}
.brand-block{padding:8px 10px 18px;border-bottom:1px solid #ffffff18;margin-bottom:10px}
.brand-logo-img,.brand-logo-placeholder{width:58px;height:58px;border-radius:14px;object-fit:contain;background:white;display:grid;place-items:center;color:#526174;font-size:11px;font-weight:800;letter-spacing:.08em;border:1px solid #ffffff22;margin-bottom:10px}
.brand-logo-placeholder{background:#eef3f9;color:#526174}
.brand-logo-placeholder.large{width:84px;height:84px;margin:0}
.brand-name{font-weight:800;font-size:15px;color:white;line-height:1.2}
.brand-product{font-size:11px;color:#9fb0c5;margin-top:4px}
.nav{border-radius:10px;padding:10px 12px;color:#cdd8e5;transition:.15s}
.nav.on{background:#ffffff12;color:white;box-shadow:inset 3px 0 0 #4d8dff}
.nav:hover{background:#ffffff0d;color:white}
.nav-logout{margin-top:auto}
.content{max-width:1440px;padding:28px 30px}
header{padding-bottom:18px;border-bottom:1px solid var(--cc-border)}
header h1{margin:4px 0 3px;font-size:28px;letter-spacing:-.02em}
.eyebrow{font-size:10px;font-weight:800;letter-spacing:.12em;color:#708096}
.header-badges{display:flex;gap:8px;align-items:center}
.card{border-color:var(--cc-border);box-shadow:0 6px 22px #10233d08;border-radius:14px}
.card h2{margin:3px 0 4px;font-size:19px}
button{background:var(--cc-navy);box-shadow:0 2px 7px rgba(19,34,56,.14)}
button:hover{filter:brightness(.97);transform:translateY(-1px)}
button.secondary{background:#eef2f6;color:#253247;box-shadow:none}
.stats{gap:16px}
.stats .card{border-top:3px solid var(--cc-blue)}
.pill{background:#eef3f8;color:#435267}
.pill.green{background:#e7f6ed;color:#187143}.pill.amber{background:#fff4d8;color:#8a5a00}.pill.red{background:#fde9e7;color:#a12d28}
.project-row{display:flex;justify-content:space-between;gap:18px;padding:17px 0;border-bottom:1px solid #edf0f4;align-items:center}
.project-row-title{display:flex;align-items:center;gap:8px}
.project-row-title b{font-size:15px}
.project-row-actions{display:flex;gap:8px;flex-wrap:wrap}
.project-meta{font-size:12px;color:var(--cc-muted);margin-top:5px}
.status-dot{width:8px;height:8px;border-radius:50%;background:#25a56f;display:inline-block}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.brand-settings-card{margin-bottom:16px}
.brand-preview{display:flex;align-items:center;gap:16px;margin-top:16px;padding:16px;border:1px dashed #cfd8e3;border-radius:12px;background:#fafcff}
.brand-preview img{width:84px;height:84px;object-fit:contain;border-radius:12px;background:white;border:1px solid var(--cc-border)}
.access-ladder{margin-top:18px;display:grid;gap:8px}
.ladder-row{display:grid;grid-template-columns:44px 1fr auto auto;gap:14px;align-items:center;padding:12px;border:1px solid var(--cc-border);border-radius:12px;background:#fbfcfe}
.ladder-level{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--cc-blue-soft);color:var(--cc-blue);font-weight:800}
.ladder-copy b{display:block}
.access-summary{display:flex;align-items:center;gap:14px;padding:14px;background:#f7f9fc;border:1px solid var(--cc-border);border-radius:12px}
.access-level-big{font-weight:900;color:var(--cc-blue);font-size:22px}
.advanced-permissions{margin-top:16px;border-top:1px solid var(--cc-border);padding-top:12px}
.advanced-permissions summary{cursor:pointer;font-weight:700;color:#344054;padding:8px 0}
.permgrid{max-height:430px;overflow:auto;padding:10px 0}
@media(max-width:800px){
 .layout{grid-template-columns:1fr}
 aside{position:sticky;top:0;z-index:20;flex-direction:row;overflow:auto;align-items:center}
 .brand-block{display:flex;align-items:center;gap:8px;border:0;padding:4px 8px;margin:0;min-width:max-content}
 .brand-logo-img,.brand-logo-placeholder{width:38px;height:38px;margin:0;border-radius:9px}
 .brand-name,.brand-product{display:none}
 .nav-logout{margin-top:0}
 .content{padding:16px}
 .form-grid{grid-template-columns:1fr}
 .ladder-row{grid-template-columns:38px 1fr auto}
 .ladder-row button{grid-column:2/4;justify-self:start}
}

/* Phase 32.7 professional company theming: only the navigation shell and page header are customisable.
   Semantic dashboard colours, action/status tiles, project health colours and ordinary controls remain fixed. */
body{background:var(--cc-bg);color:var(--cc-text)}
aside{background:var(--sidebar)}
.content>header{border-top:4px solid var(--header-color);padding-top:14px}
.content>header h1{color:var(--cc-text)}
.header-badges .pill{border:1px solid color-mix(in srgb,var(--header-color) 28%, #dfe5ec);}
.brand-block{border-bottom-color:rgba(255,255,255,.14)}
.nav.on{background:rgba(255,255,255,.10);color:#fff;box-shadow:inset 3px 0 0 var(--header-color)}
.nav:hover{background:rgba(255,255,255,.06);color:#fff}
.stats .card{border-top-color:var(--cc-blue)}
.dash-today-strip>div:before{background:var(--cc-blue)}
.today-card{border-top-color:var(--cc-blue)!important}
.today-count{background:var(--cc-blue-soft);color:#236a9e}
.ladder-level{background:var(--cc-blue-soft);color:var(--cc-blue)}
.access-level-big{color:var(--cc-blue)}
.card{color:var(--cc-text);background:#fff}
body .content,body .card,body .row{color:var(--cc-text)}
:root{--blue:#2563eb;--header-color:#2563eb}
.backup-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.backup-actions label.button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.warning-box{padding:12px 14px;border:1px solid #f59e0b;border-radius:10px;background:#fffbeb;color:#78350f;font-size:.9rem}

/* Phase 32.17 - clearer programme editing and button explanations */
button[data-help]{position:relative}
button[data-help]:hover::before,button[data-help]:focus-visible::before{content:attr(data-help);position:absolute;z-index:50;left:0;bottom:calc(100% + 8px);width:max-content;max-width:280px;padding:8px 10px;border-radius:8px;background:#132238;color:#fff;font-size:12px;font-weight:500;line-height:1.35;text-align:left;box-shadow:0 8px 24px rgba(15,23,42,.18);pointer-events:none;white-space:normal}
.danger-button{background:#b42318!important;color:#fff!important}
.danger-button:hover{background:#922018!important}
.programme-task-row{align-items:center}
.programme-task-row .task-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.programme-help-card{display:flex;gap:10px;align-items:flex-start;background:#f7fbff;border-color:#cfe1f5;margin:12px 0}
.programme-help-card span{color:var(--cc-muted);font-size:13px;line-height:1.45}
.programme-bar{cursor:default}
@media(max-width:700px){button[data-help]:hover::before{display:none}.programme-help-card{display:block}.programme-task-row .task-actions{width:100%;justify-content:flex-start}.programme-task-row .task-actions button{flex:1;min-width:85px}}
/* Phase 32.19 - keep each programme activity on one Gantt row with actions at the far right. */
.gantt-head,.ganttrow{grid-template-columns:minmax(180px,1.15fr) minmax(170px,1fr) 180px minmax(250px,auto)}
.gantt-actions{justify-content:flex-end;white-space:nowrap}
.gantt-actions button{min-width:72px}
.training-docs{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;align-items:center}
.training-doc{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid var(--cc-border);border-radius:8px;background:#f8fafc}
.training-doc a{font-size:12px;color:var(--cc-blue);text-decoration:none}
.training-doc a:hover{text-decoration:underline}
.training-doc button{padding:4px 7px;font-size:11px}
@media(max-width:900px){.gantt-head,.ganttrow{grid-template-columns:1fr}.gantt-head div:nth-child(2),.gantt-head div:nth-child(3),.gantt-head div:nth-child(4){display:none}.gantt-actions{justify-content:flex-start;margin-top:5px}.gantt-actions button{flex:1;min-width:80px}}
/* Phase 32.20 — simple PM cockpit and RAG explanation */
.rag-button{cursor:pointer;border:0;font-weight:800}.rag-button.green{background:#e9f7ef;color:#207747}.rag-button.amber{background:#fff3cf;color:#8a6500}.rag-button.red{background:#ffe7e7;color:#a52f2f}.rag-summary{display:flex;gap:14px;align-items:center;border:1px solid var(--cc-border);border-radius:14px;padding:15px;margin-bottom:12px}.rag-summary.green{background:#effaf3;border-color:#bfe2ca}.rag-summary.amber{background:#fff9e8;border-color:#efd38a}.rag-summary.red{background:#fff1f1;border-color:#efb6b6}.rag-big{font-size:22px;font-weight:900;min-width:76px;text-align:center}.rag-summary.green .rag-big{color:#217a4e}.rag-summary.amber .rag-big{color:#946b00}.rag-summary.red .rag-big{color:#a33430}.mini-row{padding:7px 0;border-top:1px solid #edf1f5}.pm-brief{background:linear-gradient(135deg,#fff,#f2f8ff);border:1px solid #d7e6f3;border-radius:17px;padding:18px;margin:0 0 16px;box-shadow:0 3px 12px rgba(20,45,70,.035)}.pm-brief-head{display:flex;justify-content:space-between;gap:15px;align-items:center}.pm-brief-head h2{margin:2px 0 4px;font-size:21px}.pm-brief-head p{margin:0;color:var(--cc-muted);font-size:13px}.pm-brief-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:14px}.pm-brief-grid button{background:#fff;border:1px solid #dfe7ee;border-radius:12px;text-align:left;padding:12px;color:var(--cc-text)}.pm-brief-grid button:hover{border-color:#9dbbd3;transform:translateY(-1px)}.pm-brief-grid b,.pm-brief-grid span,.pm-brief-grid small{display:block}.pm-brief-grid b{font-size:25px}.pm-brief-grid span{font-weight:800;margin-top:2px}.pm-brief-grid small{color:var(--cc-muted);margin-top:3px}.pm-chase{display:block;margin-top:12px}.pm-chase>b{display:block;margin-bottom:8px}.pm-chase-grid{width:100%}.pm-chase span{background:#fff4dc;border:1px solid #efd38a;border-radius:999px;padding:6px 9px;font-size:12px}.pm-clear{margin-top:12px;padding:10px;border-radius:10px;background:#effaf3;color:#217a4e;font-size:13px}.external-approval-row{align-items:center}.external-approval-row .row-actions{display:flex;gap:6px}@media(max-width:900px){.pm-chase-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.pm-brief-head{align-items:stretch;flex-direction:column}.pm-brief-grid{grid-template-columns:repeat(2,1fr)}.external-approval-row{align-items:flex-start;flex-direction:column}.external-approval-row .row-actions{width:100%}.external-approval-row .row-actions button{flex:1}}@media(max-width:430px){.pm-brief-grid{grid-template-columns:1fr}.pm-chase-grid{grid-template-columns:1fr}}

/* Phase 32.21 - programme views open as local tabs directly beneath the programme toolbar. */
.programme-shell{overflow:visible}
.programme-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:10px 0 0;border-bottom:1px solid var(--cc-border)}
.programme-tab{border:0!important;border-radius:9px 9px 0 0!important;background:#edf2f6!important;color:var(--cc-navy)!important;padding:9px 13px!important;box-shadow:none!important}
.programme-tab:hover{background:#e3eaf0!important}
.programme-tab.active{background:var(--cc-blue)!important;color:#fff!important}
.programme-tab-content{padding-top:14px;min-height:120px}
.programme-tab-content>.card{box-shadow:none;border-color:var(--cc-border)}
@media(max-width:800px){.programme-tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:1px}.programme-tab{white-space:nowrap}.programme-tab-content{padding-top:10px}}

/* Phase 32.22 — month calendar styled as a programme board with activity tabs inside each date. */
.programme-calendar{background:#fff;border:1px solid var(--cc-border);border-radius:14px;overflow:hidden}
.calendar-month-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:linear-gradient(90deg,#5b7fc2,#6b8fd0);color:#fff}
.calendar-month-bar h2{margin:0;text-align:center;font-size:20px;letter-spacing:.2px}.calendar-month-bar span{display:block;text-align:center;font-size:12px;opacity:.9;margin-top:2px}.calendar-month-bar button{min-width:42px;background:#fff!important;color:var(--cc-navy)!important;border:0!important;font-size:22px;padding:7px 12px!important}
.calendar-grid{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr))}.calendar-header{background:#5b7fc2;color:#fff}.calendar-head-day{padding:9px 6px;text-align:center;font-size:12px;font-weight:800;border-left:1px solid rgba(255,255,255,.28)}.calendar-week-head{padding:9px 4px;text-align:center;font-size:11px;font-weight:800}.calendar-body{background:#d9dee6}.calendar-week-number{background:#5b7fc2;color:#fff;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;font-size:12px;font-weight:800;border-top:1px solid rgba(255,255,255,.35)}
.calendar-cell{min-height:112px;background:#fff;padding:6px;border-left:1px solid #d9dee6;border-top:1px solid #d9dee6;cursor:pointer;overflow:hidden}.calendar-cell:hover{background:#f8fbff}.calendar-cell.outside{background:#f1f3f7;color:#a4acb8}.calendar-cell.non-working{background:#fff7f7}.calendar-date-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.calendar-date-number{font-weight:800;font-size:13px;color:#44506a}.calendar-cell.outside .calendar-date-number{color:#b9bec7}.calendar-add{padding:1px 6px!important;min-width:0!important;border-radius:5px!important;background:#edf2f6!important;color:#506070!important;border:0!important;font-size:13px!important;line-height:18px}.calendar-add:hover{background:#dce6ef!important}.calendar-task-list{display:flex;flex-direction:column;gap:3px}.calendar-task-tab,.calendar-exception-tab,.calendar-more-tab{display:flex;align-items:center;justify-content:space-between;gap:5px;width:100%;box-sizing:border-box;border:0;border-left:4px solid #5b7fc2;border-radius:4px;background:#edf4ff;color:#23344d;text-align:left;padding:4px 6px;font-size:10px;line-height:1.2;cursor:pointer;overflow:hidden}.calendar-task-tab:hover,.calendar-more-tab:hover{filter:brightness(.97);transform:translateX(1px)}.calendar-task-tab span{font-weight:800;flex:none}.calendar-task-tab.starting{border-left-color:#3b82f6}.calendar-task-tab.ongoing{border-left-color:#16a34a;background:#eef9f1}.calendar-task-tab.held-up{border-left-color:#d97706;background:#fff6e6}.calendar-task-tab.finished{border-left-color:#64748b;background:#f1f4f7}.calendar-task-tab.critical{border-left-color:#c9362b;background:#fff0ef}.calendar-exception-tab{cursor:default;border-left-color:#c9362b;background:#fff0ef;font-weight:800;margin-bottom:3px}.calendar-exception-tab.working{border-left-color:#16824d;background:#effaf3}.calendar-more-tab{background:#f4f6f8;color:#526070;border-left-color:#94a3b8;justify-content:center;font-weight:800}.calendar-detail-list{max-height:50vh;overflow:auto}.calendar-detail-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #edf0f3}.calendar-detail-row small{display:block;color:var(--cc-muted);margin-top:3px}.calendar-detail-row button{flex:none}@media(max-width:900px){.calendar-grid{grid-template-columns:34px repeat(7,minmax(90px,1fr));min-width:665px}.programme-calendar{overflow-x:auto}.calendar-month-bar{min-width:665px}.calendar-cell{min-height:95px}}@media(max-width:600px){.calendar-cell{min-height:82px}.calendar-task-tab{font-size:9px;padding:3px 4px}.calendar-head-day{font-size:10px}}

/* Phase 34.2 - tile-first controls, grouped project overview and logo editor */
.brand-logo-link{display:block;width:58px;height:58px;overflow:hidden;border-radius:14px;background:#fff;margin-bottom:10px}
.brand-logo-link .brand-logo-img{margin:0;width:58px;height:58px}
.morning-dashboard{margin-top:14px}.morning-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.morning-tile{position:relative;text-align:left;min-height:128px;background:#fff;color:var(--cc-text);border:1px solid var(--cc-border);border-top:4px solid var(--cc-blue);border-radius:14px;padding:15px;box-shadow:0 4px 14px rgba(20,45,70,.05);display:flex;flex-direction:column;align-items:flex-start}.morning-tile:hover{filter:none;transform:translateY(-2px);border-color:#b9c9da}.morning-tile-icon{font-size:22px;margin-bottom:8px}.morning-tile b{font-size:14px}.morning-tile strong{font-size:27px;margin-top:6px}.morning-tile small{color:var(--cc-muted);font-size:11px}.morning-open{position:absolute;right:13px;bottom:13px;font-size:11px;font-weight:800;color:#506176}.morning-tile.high{border-top-color:var(--cc-red)}.morning-tile.problems{border-top-color:var(--cc-amber)}.morning-tile.actions{border-top-color:var(--cc-purple)}.morning-tile.late{border-top-color:var(--cc-amber)}.morning-tile.work{border-top-color:var(--cc-blue)}.morning-tile.progress{border-top-color:var(--cc-green)}.morning-tile.close{border-top-color:var(--cc-teal)}
.morning-detail{margin-top:14px;background:#fff;border:1px solid var(--cc-border);border-radius:14px;padding:16px;min-height:80px}.morning-detail-empty{min-height:70px;display:grid;place-items:center;color:var(--cc-muted);font-size:13px}.morning-detail-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.morning-detail-head h3{margin:3px 0}.detail-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid #edf0f4}.detail-row>div{flex:1}.detail-row b,.detail-row small{display:block}.detail-row small{color:var(--cc-muted);font-size:11px;margin-top:3px}.detail-row.clickable{width:100%;background:transparent;color:var(--cc-text);border:0;border-bottom:1px solid #edf0f4;text-align:left;border-radius:0;box-shadow:none}.detail-row.clickable:hover{filter:none;transform:none;background:#f8fafc}.closeout-tile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px}.risk-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-left:5px;vertical-align:middle}.risk-low{background:#21a366}.risk-medium{background:#f59e0b}.risk-high{background:#dc2626}.morning-progress-large{display:flex;align-items:center;gap:25px;padding:12px}.progress-pie{--progress:0%;width:128px;height:128px;border-radius:50%;background:conic-gradient(var(--cc-green) var(--progress),#e8edf2 0);display:grid;place-items:center;position:relative;flex:none}.progress-pie:after{content:"";position:absolute;inset:13px;background:#fff;border-radius:50%}.progress-pie span{position:relative;z-index:1;font-weight:900;font-size:22px}.logo-editor{display:grid;grid-template-columns:180px 1fr;gap:18px;margin:14px 0}.logo-editor-stage{width:180px;height:180px;overflow:hidden;background:#f4f7fa;border:1px solid var(--cc-border);border-radius:12px;display:grid;place-items:center;position:relative}.logo-editor-stage img{width:150px;height:150px;object-fit:contain;background:#fff}.logo-editor-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--cc-muted);font-size:11px;text-align:center;padding:15px}.logo-editor-controls{display:grid;gap:10px}.logo-editor-controls label{font-size:12px}.logo-editor-controls input[type=range]{width:100%}.brand-preview-logo{width:84px;height:84px;overflow:hidden;border-radius:12px;background:#fff;border:1px solid var(--cc-border);display:grid;place-items:center}.brand-preview-logo img{width:84px;height:84px;object-fit:contain}.control-groups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0}.control-group-tile{background:#fff;color:var(--cc-text);border:1px solid var(--cc-border);border-top:4px solid var(--cc-blue);border-radius:14px;padding:16px;text-align:left;display:flex;flex-direction:column;gap:6px;min-height:130px}.control-group-tile:hover{filter:none;transform:translateY(-2px)}.control-group-tile b{font-size:17px}.control-group-tile strong{font-size:26px}.control-group-tile small{color:var(--cc-muted)}.group-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.group-detail-tile{background:#f7f9fc;color:var(--cc-text);border:1px solid var(--cc-border);border-radius:12px;padding:13px;text-align:left;display:flex;justify-content:space-between;align-items:center}.group-detail-tile:hover{filter:none}.project-progress-card{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border:1px solid var(--cc-border);border-radius:15px;padding:18px;margin:14px 0}.project-progress-value{font-size:38px;font-weight:900;color:var(--cc-navy);margin-top:3px}.validation-error{background:#fff1f1;border:1px solid #efb6b6;border-radius:10px;padding:12px;margin:10px 0;color:#9d302b}.bulk-preview{background:#f3faf6;border:1px solid #b8dec8;border-radius:10px;padding:12px;margin-top:10px}.bulk-preview>div{font-size:12px;padding:3px 0}
@media(max-width:1000px){.morning-tile-grid,.closeout-tile-grid,.control-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.morning-tile-grid,.closeout-tile-grid,.control-groups,.group-detail-grid{grid-template-columns:1fr}.logo-editor{grid-template-columns:1fr}.project-progress-card{align-items:flex-start;flex-direction:column}.morning-progress-large{flex-direction:column;align-items:flex-start}.morning-tile{min-height:115px}}

/* Phase 34.3 refinements */
.logo-editor-stage{cursor:grab;touch-action:none}.logo-editor-stage:active{cursor:grabbing}.logo-editor-stage img{user-select:none;pointer-events:auto}
.objective-date{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:10px;margin:8px 0;font-size:11px}.objective-date span{font-weight:800;letter-spacing:.5px}.objective-date b{font-size:12px}.objective-date.on-track{background:#eaf8ef;border:1px solid #b9dec6;color:#1f7a45}.objective-date.due{background:#fff6df;border:1px solid #efd48e;color:#8a6100}.objective-date.overdue{background:#fff0ef;border:1px solid #efb4ae;color:#a52e29}.objective-date.none{background:#f4f6f8;border:1px solid #dfe4ea;color:#66758a}
.close-task-card{width:100%;box-sizing:border-box;background:#fff;border:1px solid var(--cc-border);border-radius:12px;padding:14px;margin:8px 0}.close-task-name{width:100%;padding-bottom:11px;border-bottom:1px solid #edf0f4}.close-task-name b{display:block;font-size:15px}.close-task-name small{display:block;color:var(--cc-muted);margin-top:5px}.close-task-controls{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:12px;margin-top:11px}.close-task-controls label{font-size:11px;font-weight:700}.close-task-controls select,.close-task-controls input{display:block;width:100%;box-sizing:border-box;margin-top:5px}.close-task-controls label:last-child{position:relative}.close-task-controls label:last-child span{position:absolute;right:10px;bottom:10px}@media(max-width:650px){.close-task-controls{grid-template-columns:1fr}}

.job-progress{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:10px 12px;background:#f8fafc;border:1px solid #e5eaf0;border-radius:12px;margin:9px 0}.job-progress>b,.job-progress>div:first-child>b{font-size:25px;display:block;margin-top:2px}.progress-pie-small{width:58px;height:58px;font-size:12px}.progress-pie-small:after{inset:7px}.progress-pie-small span{font-size:12px}
/* Phase 34.4 visual refresh and controls */
.brand-logo-link,.brand-logo-img,.brand-logo-placeholder{position:relative;overflow:hidden}
.brand-logo-link{isolation:isolate}
.brand-logo-img{position:absolute!important;left:50%!important;top:50%!important;margin:0!important;width:150px!important;height:150px!important;object-fit:contain!important}
.brand-logo-placeholder{position:relative!important}
.brand-preview-logo{position:relative;overflow:hidden}
.brand-preview-logo img{position:absolute!important;left:50%!important;top:50%!important;width:150px!important;height:150px!important;object-fit:contain!important;margin:0!important}
.logo-editor-stage img{position:absolute!important;left:50%!important;top:50%!important;width:150px!important;height:150px!important;object-fit:contain!important;margin:0!important}
.morning-welcome{display:flex;justify-content:space-between;align-items:center;gap:22px;padding:24px 26px;border-radius:20px;background:linear-gradient(135deg,#ffffff 0%,#eef6ff 55%,#f4fbf7 100%);border:1px solid #d9e6f2;box-shadow:0 10px 30px rgba(25,55,85,.07);position:relative;overflow:hidden}
.morning-welcome:after{content:"";position:absolute;right:-70px;top:-90px;width:220px;height:220px;border-radius:50%;background:rgba(37,99,235,.08);pointer-events:none}
.morning-welcome h2{margin:3px 0 5px;font-size:27px;letter-spacing:-.5px}.morning-welcome p{margin:0;color:var(--cc-muted);font-size:14px}
.morning-project-select{min-width:280px;position:relative;z-index:1}.morning-project-select span{display:block;font-size:10px;font-weight:900;letter-spacing:.12em;color:var(--cc-muted);margin-bottom:5px}.morning-project-select select{width:100%;background:#fff;font-weight:700;border-radius:11px}
.morning-summary{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:14px 0}.morning-summary>div{padding:13px 15px;border:1px solid var(--cc-border);border-radius:13px;background:#fff;box-shadow:0 3px 12px rgba(20,45,70,.035)}.morning-summary b,.morning-summary span{display:block}.morning-summary b{font-size:23px;color:var(--cc-navy)}.morning-summary span{font-size:11px;color:var(--cc-muted);margin-top:2px}
.morning-tile{min-height:145px;border-radius:17px;padding:17px;box-shadow:0 7px 20px rgba(20,45,70,.06);background:linear-gradient(180deg,#fff,#fbfdff)}.morning-tile-icon{font-size:25px}.morning-tile strong{font-size:31px}.morning-tile:hover{box-shadow:0 12px 28px rgba(20,45,70,.10);transform:translateY(-3px)}
.morning-detail{box-shadow:0 5px 18px rgba(20,45,70,.045);min-height:95px}.morning-detail-empty{gap:4px;flex-direction:column}.morning-detail-empty strong{font-size:13px;color:var(--cc-navy);letter-spacing:.08em}.morning-detail-empty span{font-size:12px}
.control-group-tile{box-shadow:0 6px 18px rgba(20,45,70,.045);cursor:pointer}.control-group-tile:active{transform:translateY(0)}
.audit-list{max-height:55vh;overflow:auto}.audit-row{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #edf0f4}.audit-row small{display:block;color:var(--cc-muted);margin-top:3px}.audit-row>span{font-size:11px;color:var(--cc-muted)}
.staff-filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:8px;margin:12px 0}.staff-filters input,.staff-filters select{width:100%}
@media(max-width:900px){.morning-summary{grid-template-columns:repeat(3,1fr)}.staff-filters{grid-template-columns:1fr 1fr}.morning-welcome{align-items:stretch;flex-direction:column}.morning-project-select{min-width:0;width:100%}}
@media(max-width:600px){.morning-summary{grid-template-columns:repeat(2,1fr)}.staff-filters{grid-template-columns:1fr}.morning-welcome h2{font-size:23px}}


/* Phase 34.6 - To-Do and executive report */
.todo-hero{display:flex;justify-content:space-between;align-items:center;gap:18px;background:linear-gradient(135deg,#fff,#eef6ff);border-top:4px solid var(--cc-blue)}
.todo-list{display:grid;gap:12px;margin-top:14px}.todo-card{background:#fff;border:1px solid var(--cc-border);border-radius:15px;padding:16px;box-shadow:0 5px 16px rgba(20,45,70,.045);border-left:5px solid var(--cc-amber)}
.todo-card.todo-high{border-left-color:var(--cc-red);background:linear-gradient(90deg,#fff8f8,#fff)}.todo-card.todo-low{border-left-color:var(--cc-green)}.todo-main{display:flex;justify-content:space-between;gap:16px}.todo-main h3{margin:3px 0 5px}.todo-main p{margin:0 0 7px;color:var(--cc-muted);white-space:pre-wrap}.todo-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.todo-actions button{min-width:120px}
@media(max-width:650px){.todo-hero,.todo-main{align-items:stretch;flex-direction:column}.todo-actions{display:grid;grid-template-columns:1fr}.todo-actions button{width:100%}}
/* Phase 34.7 labour board / resource controls */
.labour-board{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;align-items:start;max-height:70vh;overflow:auto;padding:4px}
.labour-column{background:#f8fafc;border:1px solid #dbe3ef;border-radius:14px;overflow:hidden;min-width:0}
.labour-column-head{padding:12px 13px;background:linear-gradient(180deg,#f8fbff,#eef4fb);border-bottom:1px solid #dbe3ef;display:flex;justify-content:space-between;gap:10px;align-items:flex-start;position:sticky;top:0;z-index:1}
.labour-column-head span{font-size:11px;color:#64748b;text-align:right}
.labour-person{background:#fff;border:1px solid #e2e8f0;border-radius:9px;padding:8px 10px;margin:7px;font-size:13px}
.labour-person b{display:block}.labour-person small{display:block;color:#64748b;margin-top:2px}
.handover-import-card,.handover-review{border:1px solid #dbe4f0;background:#f8fbff;border-radius:14px;padding:16px;margin:10px 0 16px}.handover-import-card h3,.handover-review h3{margin:4px 0 6px}.handover-review{background:#f7fbf8;border-color:#cfe6d7}.handover-mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}.handover-mini-grid>div{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:4px}.handover-mini-grid span{font-size:12px;color:#64748b}.handover-suggestion{padding:10px;border-left:4px solid #2563eb;background:#fff;margin-top:10px}.handover-detail{max-height:240px;overflow:auto;font-size:12px;line-height:1.45}.handover-detail ul{margin:6px 0 12px;padding-left:20px}@media(max-width:800px){.handover-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Phase 34.10 grouped programme + linked actions */
.programme-tree{display:flex;flex-direction:column;gap:10px;margin-top:18px}
.programme-tree-item{margin-left:calc(var(--depth,0) * 18px)}
.programme-tree-main{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--border,#dbe3ec);border-radius:10px;background:var(--card,#fff)}
.programme-group>.programme-tree-main{background:#f8fafc;border-left:4px solid var(--accent,#2563eb)}
.programme-tree-main b{display:block}.programme-tree-main small{display:block;margin-top:4px;color:#64748b}
.programme-tree-children{display:flex;flex-direction:column;gap:7px;margin-top:7px}
.programme-tree-actions,.tile-row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.programme-chronological{margin-top:18px;border:1px solid var(--border,#dbe3ec);border-radius:10px;padding:12px;background:#fff}
.programme-chronological summary{cursor:pointer;font-weight:700;padding:4px}
.action-linked-card{margin-top:18px}.action-linked-card .section-head{margin-bottom:8px}
.project-info-card{margin-bottom:14px}.project-info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.project-info-grid>div{padding:11px 12px;border:1px solid var(--line,#dbe3ef);border-radius:10px;background:#fbfdff}.project-info-grid span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin-bottom:4px}.project-info-grid b{font-size:13px;line-height:1.35}.handover-import-summary{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line,#dbe3ef)}.handover-import-summary>div{padding:10px;border-radius:9px;background:#f5f8fc}.handover-import-summary b,.handover-import-summary span{display:block}.handover-import-summary span{font-size:12px;color:#64748b;margin-top:3px}@media(max-width:900px){.project-info-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.handover-import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.project-info-grid,.handover-import-summary{grid-template-columns:1fr}}

.objective-chip{border:1px solid #dfe4ea;border-radius:12px;padding:9px 12px;font-weight:800;cursor:pointer}.objective-chip.objective-good{background:#eaf8ef;border-color:#b9dec6;color:#1f7a45}.objective-chip.objective-warn{background:#fff6df;border-color:#efd48e;color:#8a6100}.objective-chip.objective-danger{background:#fff0ef;border-color:#efb4ae;color:#a52e29}.objective-chip.objective-neutral{background:#f4f6f8;color:#66758a}
.pm-chase-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:8px;width:100%}.chase-tile{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px;border:1px solid #e5b95d;border-radius:10px;background:#fffaf0;text-align:left}.chase-tile b{font-size:12px}.chase-tile small{color:#66758a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.chase-tile span{font-size:11px;font-weight:800;margin-top:2px}.notice-board-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.notice-section{background:#fff;border:1px solid #e1e7ef;border-radius:12px;padding:12px}.notice-item{width:100%;display:flex;justify-content:space-between;gap:10px;text-align:left;padding:11px;margin-top:7px;border:1px solid #dfe4ea;border-radius:10px;background:#f8fafc}.notice-item.high{border-left:4px solid #c0392b}.notice-item.medium{border-left:4px solid #d89b24}.notice-item.low{border-left:4px solid #4b8f67}.notice-item small{display:block;color:#66758a;margin-top:3px}.notice-board-hero{display:flex;justify-content:space-between;align-items:center}
/* Phase 34.14 - branding containment and removal */
.brand-logo-link{position:relative!important;display:block!important;width:58px!important;height:58px!important;overflow:hidden!important;border-radius:14px!important;background:#fff!important;margin-bottom:10px!important;isolation:isolate}
.brand-logo-img{position:relative!important;left:auto!important;top:auto!important;width:58px!important;height:58px!important;object-fit:contain!important;margin:0!important;display:block!important}
.brand-preview-logo{position:relative!important;overflow:hidden!important}
.brand-preview-logo img{position:absolute!important;left:50%!important;top:50%!important;width:150px!important;height:150px!important;object-fit:contain!important;margin:0!important}
.logo-editor-stage img{position:absolute!important;left:50%!important;top:50%!important;width:150px!important;height:150px!important;object-fit:contain!important;margin:0!important}
button.danger{background:#b42318;color:#fff}
/* Phase 34.18 - Road to 10 UX: grouped navigation, clearer hierarchy and safer staff lifecycle */
.nav-group{margin-top:10px;padding-top:7px;border-top:1px solid rgba(255,255,255,.09)}
.nav-group:first-of-type{margin-top:8px;border-top:0}
.nav-group-label{padding:7px 12px 4px;color:#94a8bb;font-size:10px;font-weight:800;letter-spacing:1.2px}
.nav-group .nav{width:100%;margin:2px 0}
.nav-group-bottom{margin-top:auto}
.nav-group-bottom .nav{margin-top:2px}
@media(max-width:700px){.nav-group-label{padding-left:9px}.nav-group{margin-top:6px}}

/* Phase 34.20 - Road to 10: onboarding, feedback and global loading state */
#ccBusy{position:fixed;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--cc-blue),var(--header-color),var(--cc-blue));z-index:9999;transform:scaleX(0);transform-origin:left;opacity:0;transition:transform .25s ease,opacity .15s ease}
body.cc-busy #ccBusy{transform:scaleX(.72);opacity:1;animation:ccBusy 1.2s ease-in-out infinite alternate}
@keyframes ccBusy{from{transform:scaleX(.18)}to{transform:scaleX(.92)}}
.cc-toasts{position:fixed;right:18px;bottom:18px;z-index:10000;display:grid;gap:8px;max-width:min(420px,calc(100vw - 36px))}
.cc-toast{padding:12px 14px;border:1px solid var(--cc-border);border-radius:11px;background:#fff;color:var(--cc-text);box-shadow:0 12px 32px rgba(15,23,42,.16);font-size:13px;font-weight:650;animation:ccIn .18s ease-out}
.cc-toast.success{border-left:4px solid #16a34a}.cc-toast.error{border-left:4px solid #dc2626}.cc-toast.out{opacity:0;transform:translateY(5px);transition:.18s}
@keyframes ccIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.onboarding-card{margin:16px 0;padding:18px;border:1px solid var(--cc-border);border-radius:14px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 6px 22px rgba(16,35,61,.05)}
.onboarding-card h3{margin:3px 0}.onboarding-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:14px 0}
.onboarding-step{min-height:78px;text-align:left;background:#f6f8fb;color:var(--cc-text);border:1px solid var(--cc-border);box-shadow:none;padding:11px;border-radius:11px;display:flex;flex-direction:column;gap:4px}
.onboarding-step b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--cc-blue-soft);color:var(--cc-blue)}.onboarding-step span{font-weight:750}.onboarding-step small{color:var(--cc-muted)}.onboarding-step.done{border-color:#b7dfc4;background:#f4fbf6}.onboarding-step.done b{background:#dcf5e4;color:#187143}
@media(max-width:900px){.onboarding-steps{grid-template-columns:1fr 1fr}}@media(max-width:560px){.onboarding-steps{grid-template-columns:1fr}.cc-toasts{left:18px;right:18px}}


/* Phase 34.25 - field/mobile usability hardening */
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #2f80c9;outline-offset:2px}
button{min-height:44px}.nav{min-height:44px}.mobile-bottom-nav{display:none}
.empty-state{padding:24px;text-align:center;border:1px dashed #cbd5e1;border-radius:14px;background:#f8fafc;color:#66758a}.empty-state b{display:block;color:#172033;margin-bottom:5px}
.validation-error{margin-top:12px;padding:12px;border:1px solid #efb0ad;background:#fff4f3;border-radius:10px;color:#8d2d29}.bulk-preview{margin-top:12px;padding:12px;border:1px solid #cfe2f2;background:#f7fbff;border-radius:10px}.bulk-preview>div{padding:4px 0}
@media(max-width:700px){
  body{padding-bottom:72px}.content{padding:12px}.content>header{position:sticky;top:0;z-index:30;background:#f3f5f7;padding:8px 0 10px;margin-bottom:12px}.content>header h1{font-size:22px;margin:2px 0}.header-badges{display:none}
  aside{display:none}.layout{display:block;min-height:100vh}.mobile-bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;height:68px;background:rgba(17,24,32,.98);z-index:100;border-top:1px solid rgba(255,255,255,.12);padding:5px 4px calc(5px + env(safe-area-inset-bottom))}.mobile-nav-item{min-height:56px;padding:6px 3px;background:transparent;color:#d8e0e8;border-radius:10px;font-size:11px;font-weight:700}.mobile-nav-item.on{background:rgba(255,255,255,.13);color:#fff}.mobile-nav-item span{display:block}
  .cockpit-strip,.daily-kpis{grid-template-columns:repeat(2,1fr)}.cockpit-modules{grid-template-columns:repeat(2,1fr)}.plan-toolbar{position:sticky;top:50px;z-index:20;background:#f3f5f7;padding:6px 0}.plan-toolbar button{min-height:46px}.gantt{overflow-x:auto}.ganttrow{min-width:620px}.resource-table{overflow-x:auto}
}
@media(max-width:480px){.content{padding:10px}.cockpit-strip,.cockpit-modules,.daily-kpis{grid-template-columns:1fr 1fr;gap:7px}.cockpit-strip>div,.daily-kpis>div{padding:10px}.cockpit-strip b,.daily-kpis b{font-size:20px}.project-grid{grid-template-columns:1fr}.plan-toolbar button{min-width:0;padding:10px 9px;font-size:13px}.modal{padding:8px}.modalbox{max-height:calc(100vh - 16px);border-radius:14px}}
/* Phase 34.32 - management exception controls */
.management-filters{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.management-health-row{transition:opacity .15s ease}.management-health-row[data-band="Red"]{border-left:4px solid var(--cc-red)}.management-health-row[data-band="Amber"]{border-left:4px solid var(--cc-amber)}.management-health-row[data-band="Green"]{border-left:4px solid var(--cc-green)}
@media(max-width:700px){.management-filters{display:grid;grid-template-columns:repeat(2,1fr);width:100%}.management-filters button{width:100%}}

/* Phase 34.33 - UI/UX final polish */
#ccBusy{height:4px}
#ccBusy[aria-busy="true"]::after{content:attr(data-label);position:absolute;right:10px;top:5px;font-size:10px;font-weight:700;color:var(--cc-muted);background:#fff;padding:2px 6px;border-radius:8px;box-shadow:0 1px 4px rgba(15,23,42,.08)}
.cc-toasts{pointer-events:none}.cc-toast{pointer-events:auto;line-height:1.35}
button:disabled{cursor:not-allowed;opacity:.58}
.card>h2:first-child,.card>h3:first-child{margin-top:0}
.empty-state strong{display:block;font-size:15px;color:var(--cc-text);margin-bottom:4px}
.empty-state small{display:block;margin-top:5px;color:var(--cc-muted)}
@media(max-width:700px){.content button,.content select,.content input,.content textarea{max-width:100%;box-sizing:border-box}.content .bar{gap:10px;align-items:stretch}.content .bar>button{width:100%}.content table{font-size:12px}.content th,.content td{padding:7px 8px}.content .row-actions{display:grid;grid-template-columns:1fr;gap:7px}.content .row-actions button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* 34.36.20 - Project Overview management-board redesign */
.dash-grid-full{grid-template-columns:1fr!important}
.project-card{padding:20px 22px;box-shadow:0 5px 18px rgba(31,50,70,.055)}
.project-card-head{align-items:flex-start}
.project-card-title{min-width:0;flex:1}
.project-card-title h3{font-size:20px;line-height:1.2;margin:3px 0 5px;color:#172033}
.project-subtitle{font-size:13px;color:#687588;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.project-status-badge{flex:none;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900;letter-spacing:.04em;border:1px solid #dfe4ea;background:#f4f6f8;color:#66758a}
.project-status-badge.good{background:#eaf8ef;border-color:#b9dec6;color:#1f7a45}
.project-status-badge.warn{background:#fff6df;border-color:#efd48e;color:#8a6100}
.project-status-badge.danger{background:#fff0ef;border-color:#efb4ae;color:#a52e29}
.project-status-badge.neutral{background:#f4f6f8;border-color:#dfe4ea;color:#66758a}
.project-summary-line{display:flex;gap:18px;flex-wrap:wrap;margin:14px 0 12px;padding-bottom:12px;border-bottom:1px solid #edf1f5;color:#687588;font-size:12px}
.project-summary-line b{color:#27374a}
.project-progress-block{padding:13px 14px;background:#f8fafc;border:1px solid #e5eaf0;border-radius:12px;margin-bottom:12px}
.project-progress-label{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px;color:#687588;font-weight:800;letter-spacing:.05em}
.project-progress-label strong{font-size:20px;color:#172033;letter-spacing:0}
.project-progress-track{height:9px;background:#e4eaf0;border-radius:999px;overflow:hidden;margin-top:9px}
.project-progress-track span{display:block;height:100%;background:var(--cc-blue,#2563eb);border-radius:999px;transition:width .2s ease}
.project-status-danger .project-progress-track span{background:#c9362b}
.project-status-warn .project-progress-track span{background:#d97706}
.project-footer{align-items:center;flex-wrap:wrap}
.project-open{margin-left:auto;background:#17202a;color:#fff;padding:9px 13px;font-weight:800}
.project-open:hover{background:#263746}
@media(max-width:1050px){.project-grid{grid-template-columns:1fr}}
@media(max-width:700px){.project-card{padding:16px}.project-card-head{gap:8px}.project-card-title h3{font-size:18px}.project-footer{align-items:flex-start}.project-open{margin-left:0;width:100%}}
/* Phase 34.36.22 - ensure company branding renders reliably in the desktop/mobile navigation. */
.brand-logo-shell{position:relative!important;display:block!important;width:58px!important;height:58px!important;flex:none!important;overflow:hidden!important;border-radius:14px!important;background:#fff!important;margin-bottom:10px!important}
.brand-logo-shell .brand-logo-img{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:contain!important;display:block!important;margin:0!important;transform:none!important;transform-origin:center!important}
.brand-logo-fallback{position:absolute!important;inset:0!important;display:none;place-items:center!important;background:#eef3f9!important;color:#526174!important;font-size:11px!important;font-weight:800!important;letter-spacing:.08em!important}
@media(max-width:800px){.brand-logo-shell{width:38px!important;height:38px!important;margin:0!important;border-radius:9px!important}.brand-logo-shell .brand-logo-img{width:100%!important;height:100%!important}}

/* 34.36.29 Weekly Jobs & Labour Board */
.meeting-hero{display:flex;justify-content:space-between;gap:18px;align-items:center}.meeting-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.meeting-actions select{min-width:150px}.meeting-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.meeting-kpis>div{background:#fff;border:1px solid var(--cc-border);border-radius:13px;padding:14px}.meeting-kpis b,.meeting-kpis span{display:block}.meeting-kpis b{font-size:25px;color:var(--cc-navy)}.meeting-kpis span{font-size:11px;color:var(--cc-muted)}.meeting-board-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px}.meeting-jobs-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.meeting-job{background:#fff;border:1px solid var(--cc-border);border-radius:14px;padding:14px;min-height:170px}.meeting-job:hover{border-color:#9bb9d4}.meeting-job-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border-bottom:1px solid #edf0f4;padding-bottom:10px;margin-bottom:10px}.meeting-job-head h3{margin:3px 0}.meeting-job-head small{color:var(--cc-muted)}.meeting-staff-stack{display:flex;flex-wrap:wrap;gap:7px;min-height:74px}.meeting-person{border:2px solid color-mix(in srgb,var(--staff-bg) 72%,#111 28%);background:var(--staff-bg);color:var(--staff-fg);border-radius:10px;padding:9px 11px;cursor:grab;min-width:120px;box-shadow:0 1px 2px rgba(15,23,42,.08);transition:transform .12s ease,box-shadow .12s ease}.meeting-person:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(15,23,42,.12)}.meeting-person:active{cursor:grabbing}.meeting-person.assigned{background:var(--staff-bg)}.meeting-person b,.meeting-person small{display:block}.meeting-person small{font-size:11px;color:var(--staff-fg);opacity:.82;margin-top:2px;font-weight:700}.meeting-empty{border:1px dashed #cbd5df;border-radius:10px;padding:15px;color:var(--cc-muted);width:100%;text-align:center}.meeting-free{display:flex;flex-wrap:wrap;gap:7px}.meeting-note{width:100%;display:flex;justify-content:space-between;gap:10px;text-align:left;background:#fff;border:1px solid var(--cc-border);color:var(--cc-text);padding:10px;border-radius:10px;margin:5px 0}.meeting-note small{display:block;color:var(--cc-muted);margin-top:3px}.meeting-note span{font-size:10px;font-weight:800}.meeting-note.high{border-left:4px solid #dc2626}.meeting-note.medium{border-left:4px solid #f59e0b}.meeting-note.low{border-left:4px solid #16845b}.meeting-level-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.meeting-level-key{display:inline-flex;align-items:center;gap:4px;padding:5px 8px;border-radius:999px;background:var(--staff-bg);color:var(--staff-fg);border:1px solid color-mix(in srgb,var(--staff-bg) 70%,#111 30%);font-size:11px;font-weight:700}.meeting-side{display:grid;gap:12px;align-content:start}.meeting-side .card{margin:0}
@media(max-width:900px){.meeting-board-layout{grid-template-columns:1fr}.meeting-jobs-grid{grid-template-columns:1fr}.meeting-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.meeting-hero{align-items:flex-start;flex-direction:column}}

.meeting-minutes-card{margin-top:14px}.meeting-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.meeting-meta-chip{display:inline-block;background:#f3f6f9;border:1px solid var(--cc-border);border-radius:8px;padding:5px 8px;font-size:11px}.meeting-table-wrap{overflow:auto;border:1px solid var(--cc-border);border-radius:12px}.meeting-edit-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1100px;background:#fff}.meeting-edit-table th{position:sticky;top:0;background:#eef3f7;text-align:left;padding:9px;font-size:11px;text-transform:uppercase;letter-spacing:.03em;z-index:1}.meeting-edit-table td{border-top:1px solid #e7ebef;padding:6px;vertical-align:top}.meeting-edit-table input,.meeting-edit-table textarea,.meeting-edit-table select{width:100%;box-sizing:border-box;border:1px solid #d7dde4;border-radius:6px;padding:7px;font:inherit;font-size:12px;background:#fff}.meeting-edit-table textarea{min-height:48px;resize:vertical}.meeting-edit-table td:first-child{width:34px;color:var(--cc-muted);font-weight:700}.meeting-edit-table td:last-child{width:58px}.meeting-edit-table tr:has(select[data-f="status"] option:checked[value="Closed"]){opacity:.7}.button.secondary{cursor:pointer}
/* 34.36.33 weekly meeting required labour pool + four-week lookahead */
.meeting-required-pool{margin:12px 0 14px;padding:14px;background:#f8fafc;border:1px solid var(--cc-border);border-radius:14px}.meeting-required-pool h3{margin:3px 0}.meeting-required-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.meeting-required-tile{min-width:112px;padding:9px 11px;border-radius:10px;border:2px solid color-mix(in srgb,var(--staff-bg) 72%,#111 28%);background:var(--staff-bg);color:var(--staff-fg);cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.08)}.meeting-required-tile small,.meeting-required-tile b{display:block}.meeting-required-tile small{font-size:10px;opacity:.78;margin-top:2px}.meeting-required-tile:active{cursor:grabbing}.meeting-required-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;min-height:22px}.meeting-required-count{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border-radius:8px;background:var(--staff-bg);color:var(--staff-fg);font-size:11px;font-weight:700}.meeting-required-count button{border:0;background:transparent;color:inherit;font-weight:900;cursor:pointer;padding:0 2px;font-size:14px}.lookahead-list{display:grid;gap:7px}.lookahead-item{padding:8px 9px;border:1px solid var(--cc-border);border-radius:9px;background:#fff}.lookahead-item b,.lookahead-item span{display:block}.lookahead-item span{font-size:12px;margin-top:2px}.lookahead-item small{display:block;color:var(--cc-muted);margin-top:4px;font-size:10px}
@media(max-width:900px){.meeting-required-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.meeting-required-tile{min-width:0}}
/* 34.36.36 weekly labour planning: Monday tabs, level totals and compact Excel-style minutes. */
.meeting-week-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0}.meeting-week-tab{appearance:none;border:1px solid var(--cc-border);background:#fff;border-radius:12px;padding:11px 12px;text-align:left;cursor:pointer;color:var(--cc-text)}.meeting-week-tab b,.meeting-week-tab small{display:block}.meeting-week-tab small{margin-top:3px;color:var(--cc-muted);font-size:10px}.meeting-week-tab.active{border-color:#1d4ed8;box-shadow:0 0 0 2px rgba(29,78,216,.12);background:#f7fbff}.labour-summary{margin:14px 0}.labour-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px}.labour-summary-item{border:2px solid color-mix(in srgb,var(--staff-bg) 72%,#111 28%);border-radius:11px;padding:10px 11px;background:var(--staff-bg);color:var(--staff-fg)}.labour-summary-item b{font-size:24px;line-height:1}.labour-summary-item span,.labour-summary-item small{display:block}.labour-summary-item span{font-weight:800;margin-top:4px}.labour-summary-item small{font-size:10px;margin-top:3px;font-weight:700;opacity:.85}.minutes-section{margin:14px 0;border:1px solid var(--cc-border);border-radius:12px;overflow:hidden;background:#fff}.minutes-section-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#eef3f7;border-bottom:1px solid var(--cc-border);text-transform:uppercase;font-size:12px;letter-spacing:.03em}.meeting-edit-table.compact{min-width:920px}.meeting-edit-table.compact th,.meeting-edit-table.compact td{padding:6px}.meeting-edit-table.compact textarea{min-height:34px;height:34px;resize:vertical}.meeting-edit-table.compact td:nth-child(2){min-width:480px}.meeting-edit-table.compact tr:hover{background:#f8fafc}
@media(max-width:900px){.meeting-week-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.labour-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.meeting-week-tabs{grid-template-columns:1fr}.labour-summary-grid{grid-template-columns:1fr}}

.handover-intake-browser{display:flex;flex-direction:column;gap:8px}
.handover-intake-row{align-items:flex-start;gap:12px}
.handover-intake-row .record-open{flex:1;text-align:left;background:transparent;border:0;padding:4px}
.handover-intake-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.handover-intake-actions select{min-width:170px}

/* 34.36.40 minutes polish: remove management "Next moves" panel, give minutes text maximum space, auto-grow full text, and brighten each section. */
.meeting-minutes-card .meeting-section{}
.meeting-edit-table.compact{min-width:980px;table-layout:fixed}
.meeting-edit-table.compact th,.meeting-edit-table.compact td{padding:7px}
.meeting-edit-table.compact th:nth-child(1),.meeting-edit-table.compact td:nth-child(1){width:34px}
.meeting-edit-table.compact th:nth-child(2),.meeting-edit-table.compact td:nth-child(2){width:auto;min-width:560px}
.meeting-edit-table.compact th:nth-child(3),.meeting-edit-table.compact td:nth-child(3){width:130px}
.meeting-edit-table.compact th:nth-child(4),.meeting-edit-table.compact td:nth-child(4){width:105px}
.meeting-edit-table.compact th:nth-child(5),.meeting-edit-table.compact td:nth-child(5){width:105px}
.meeting-edit-table.compact th:nth-child(6),.meeting-edit-table.compact td:nth-child(6){width:115px}
.meeting-edit-table.compact th:nth-child(7),.meeting-edit-table.compact td:nth-child(7){width:58px}
.meeting-edit-table.compact textarea[data-f="description"]{display:block;width:100%;min-height:48px;height:auto;line-height:1.35;resize:none;overflow:hidden;padding:9px 10px;background:#fff}
.meeting-edit-table.compact input,.meeting-edit-table.compact select{min-height:38px}
.minutes-section{border:1px solid transparent;box-shadow:0 3px 12px rgba(15,23,42,.06)}
.minutes-section-1{border-color:#93c5fd;background:#eff6ff}.minutes-section-1 .minutes-section-head{background:#dbeafe;color:#1e40af}
.minutes-section-2{border-color:#86efac;background:#f0fdf4}.minutes-section-2 .minutes-section-head{background:#dcfce7;color:#166534}
.minutes-section-3{border-color:#fcd34d;background:#fffbeb}.minutes-section-3 .minutes-section-head{background:#fef3c7;color:#92400e}
.minutes-section-4{border-color:#fda4af;background:#fff1f2}.minutes-section-4 .minutes-section-head{background:#ffe4e6;color:#9f1239}
.minutes-section-5{border-color:#c4b5fd;background:#faf5ff}.minutes-section-5 .minutes-section-head{background:#ede9fe;color:#6b21a8}
.minutes-section-6{border-color:#67e8f9;background:#ecfeff}.minutes-section-6 .minutes-section-head{background:#cffafe;color:#155e75}
.minutes-section-7{border-color:#fdba74;background:#fff7ed}.minutes-section-7 .minutes-section-head{background:#ffedd5;color:#9a3412}
.minutes-section .minutes-section-head{font-size:12px;font-weight:800;padding:11px 13px}
.minutes-section .meeting-edit-table{background:rgba(255,255,255,.92)}
.minutes-section .meeting-edit-table th{background:rgba(255,255,255,.72)}
@media(max-width:1100px){.meeting-edit-table.compact{min-width:900px}.meeting-edit-table.compact th:nth-child(2),.meeting-edit-table.compact td:nth-child(2){min-width:500px}}
/* Minutes workspace — visual match to the approved Minutes design */
.meeting-minutes-workspace{margin-top:16px}
.minutes-page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:10px;padding:2px 2px 10px}
.minutes-page-title{display:flex;align-items:center;gap:12px}.minutes-page-title h2{margin:0;font-size:26px}.minutes-doc-icon{width:34px;height:38px;border-radius:7px;display:grid;place-items:center;background:#e8f1ff;color:#1671e8;font-size:22px;font-weight:900}.minutes-page-controls{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.minutes-page-controls label{display:grid;gap:4px;font-size:10px;font-weight:800;color:#64748b;text-transform:none}.minutes-page-controls select,.minutes-page-controls input{height:38px;min-width:122px;border:1px solid #d5dce5;border-radius:8px;background:#fff;padding:0 10px;font:inherit;color:#172033}.minutes-add-button,.minutes-export-button,.minutes-print-button{height:38px;border:0;border-radius:8px;padding:0 15px;font-weight:800;cursor:pointer}.minutes-add-button{background:#12a968;color:#fff}.minutes-export-button{background:#1476e8;color:#fff}.minutes-print-button{background:#64748b;color:#fff}.minutes-meta-strip{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.minutes-meta-strip:empty{display:none}
.minutes-section{margin:12px 0;border-radius:10px;overflow:hidden;border-width:1px;box-shadow:0 2px 8px rgba(15,23,42,.05)}
.minutes-section-head{min-height:43px;padding:8px 12px;display:flex;justify-content:space-between;align-items:center;text-transform:none;font-size:14px;letter-spacing:0}.minutes-section-title{display:flex;align-items:center;gap:9px}.minutes-section-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:rgba(255,255,255,.78);font-size:15px}.minutes-section-title b{font-size:14px}.minutes-section-title .pill{background:rgba(255,255,255,.72);border-color:rgba(0,0,0,.06);font-size:10px}.minutes-chevron{font-size:20px;font-weight:900}
.meeting-edit-table.compact{width:100%;min-width:0;table-layout:fixed;border-collapse:separate;border-spacing:0}.meeting-edit-table.compact th{padding:8px 8px;background:rgba(255,255,255,.76);font-size:10px;color:#334155}.meeting-edit-table.compact td{padding:5px 6px;border-top:1px solid rgba(148,163,184,.20)}.meeting-edit-table.compact .col-num{width:38px}.meeting-edit-table.compact .col-minutes{width:auto}.meeting-edit-table.compact .col-assignee{width:145px}.meeting-edit-table.compact .col-status{width:108px}.meeting-edit-table.compact .col-priority{width:112px}.meeting-edit-table.compact .col-project{width:135px}.meeting-edit-table.compact .col-actions{width:72px}.minutes-number-cell{font-weight:800;color:#64748b;text-align:center}.meeting-edit-table.compact textarea[data-f="description"]{width:100%;min-height:48px;height:auto;resize:none;overflow:hidden;line-height:1.35;border-radius:7px;padding:8px 9px;font-size:12px}.meeting-edit-table.compact input,.meeting-edit-table.compact select{min-height:38px;height:38px;border-radius:7px;font-size:12px;padding:7px 9px}.meeting-edit-table.compact select[data-f="priority"]{font-weight:700}.minutes-row-actions{display:flex;gap:5px;justify-content:center}.icon-button{width:32px;height:32px;border:1px solid #d5dce5;background:#fff;border-radius:7px;display:grid;place-items:center;cursor:pointer;color:#334155;font-weight:900}.icon-button:hover{background:#f1f5f9}.icon-button.danger{color:#dc2626;background:#fff7f7;border-color:#fecaca}.saved-flash{box-shadow:0 0 0 2px rgba(18,169,104,.18)!important;border-color:#12a968!important}
.minutes-section-1{border-color:#93c5fd;background:#eff6ff}.minutes-section-1 .minutes-section-head{background:#dbeafe;color:#1e40af}.minutes-section-2{border-color:#86efac;background:#f0fdf4}.minutes-section-2 .minutes-section-head{background:#dcfce7;color:#166534}.minutes-section-3{border-color:#fcd34d;background:#fffbeb}.minutes-section-3 .minutes-section-head{background:#fef3c7;color:#92400e}.minutes-section-4{border-color:#fda4af;background:#fff1f2}.minutes-section-4 .minutes-section-head{background:#ffe4e6;color:#9f1239}.minutes-section-5{border-color:#c4b5fd;background:#faf5ff}.minutes-section-5 .minutes-section-head{background:#ede9fe;color:#6b21a8}.minutes-section-6{border-color:#67e8f9;background:#ecfeff}.minutes-section-6 .minutes-section-head{background:#cffafe;color:#155e75}.minutes-section-7{border-color:#fdba74;background:#fff7ed}.minutes-section-7 .minutes-section-head{background:#ffedd5;color:#9a3412}
@media(max-width:1000px){.minutes-page-head{align-items:flex-start;flex-direction:column}.minutes-page-controls{width:100%}.meeting-edit-table.compact{min-width:850px}.meeting-edit-table.compact .col-minutes{min-width:430px}}
@media print{.minutes-page-controls,.minutes-meta-strip,.minutes-row-actions{display:none!important}.minutes-section{break-inside:avoid}.meeting-minutes-workspace{margin-top:0}}
.minutes-section-add{display:flex;justify-content:center;padding:8px 0 10px;background:rgba(255,255,255,.72);border-top:1px solid rgba(148,163,184,.18)}
.minutes-section-add-button{width:32px;height:32px;border-radius:50%;border:1px solid rgba(71,85,105,.22);background:#fff;color:#1671e8;font-size:23px;line-height:1;display:grid;place-items:center;cursor:pointer;font-weight:800;box-shadow:0 1px 4px rgba(15,23,42,.08)}
.minutes-section-add-button:hover{transform:scale(1.06);background:#f0f7ff}

/* 34.36.51 Minutes + test/version sync */
.minutes-section-add-button{line-height:0;padding:0;align-items:center;justify-content:center;font-family:Arial,sans-serif;font-size:22px}
.minutes-section-add{min-height:46px;align-items:center}
.meeting-edit-table.compact textarea[data-f="description"]{min-height:52px;height:auto;white-space:pre-wrap;overflow:hidden}
.meeting-edit-table.compact .minutes-priority-select{font-weight:800;border-width:1px}
.meeting-edit-table.compact .minutes-priority-select.priority-low{background:#edf8ef;border-color:#b9dfc0;color:#28743c}
.meeting-edit-table.compact .minutes-priority-select.priority-medium{background:#fff7df;border-color:#efd28a;color:#8a5a00}
.meeting-edit-table.compact .minutes-priority-select.priority-high{background:#fff0ef;border-color:#e7aaa5;color:#a43a32}
.meeting-edit-table.compact .minutes-project-cell select{background:#fff}
.labour-summary-item{padding:12px 13px}
.labour-summary-item b{font-size:28px}
.labour-summary-item small{font-size:11px}
.meeting-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}
.meeting-kpis .labour-kpi{border-left:4px solid #cbd5e1}
.meeting-kpis .labour-kpi.actual{border-left-color:#73b9d9}
.meeting-kpis .labour-kpi.required{border-left-color:#e7c39b}
.meeting-kpis .labour-kpi.short{border-left-color:#b8c0ca}
.meeting-kpis .labour-kpi.short.has-short{border-left-color:#ef6b62;background:#fff7f6}
.meeting-kpis .labour-kpi b{font-size:26px}
@media(max-width:1100px){.meeting-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.meeting-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Minutes polish: semantic section colours/icons and a clear workbook upload action. */
.meeting-upload-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 15px;border-radius:8px;background:#1476e8;color:#fff;font-weight:800;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.12);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}
.meeting-upload-button:hover{background:#0f67d0;transform:translateY(-1px);box-shadow:0 4px 10px rgba(15,23,42,.14)}
.meeting-upload-button:active{transform:translateY(0)}
.meeting-upload-button input{display:none}
.minutes-section{border-width:1px;box-shadow:0 2px 8px rgba(15,23,42,.05)}
.minutes-theme-programme{border-color:#9bbff0;background:#f5f9ff}.minutes-theme-programme .minutes-section-head{background:#e4efff;color:#24528a}
.minutes-theme-safety{border-color:#a9d9bd;background:#f5fcf7}.minutes-theme-safety .minutes-section-head{background:#e5f6ea;color:#286b43}
.minutes-theme-materials{border-color:#ead49b;background:#fffcf3}.minutes-theme-materials .minutes-section-head{background:#fff3ce;color:#82621b}
.minutes-theme-actions{border-color:#e7b0aa;background:#fff7f6}.minutes-theme-actions .minutes-section-head{background:#fbe8e5;color:#8d4039}
.minutes-theme-quality{border-color:#c5b8e8;background:#faf8ff}.minutes-theme-quality .minutes-section-head{background:#eee9fb;color:#604d91}
.minutes-theme-risks{border-color:#e3b3b3;background:#fff8f8}.minutes-theme-risks .minutes-section-head{background:#fbe8e8;color:#8d3c3c}
.minutes-theme-closeout{border-color:#9fd5d2;background:#f4fbfb}.minutes-theme-closeout .minutes-section-head{background:#e1f4f3;color:#256b69}
.minutes-theme-custom-1{border-color:#b7c8df;background:#f7faff}.minutes-theme-custom-1 .minutes-section-head{background:#eaf1fa;color:#3d5877}
.minutes-theme-custom-2{border-color:#c4d8c8;background:#f7fbf8}.minutes-theme-custom-2 .minutes-section-head{background:#eaf5ed;color:#3f6b49}
.minutes-theme-custom-3{border-color:#d8c6b5;background:#fcfaf7}.minutes-theme-custom-3 .minutes-section-head{background:#f4ece4;color:#765c45}
.minutes-theme-custom-4{border-color:#c7c1d8;background:#faf9fc}.minutes-theme-custom-4 .minutes-section-head{background:#eeeaf5;color:#625879}
.minutes-section-icon{border:1px solid rgba(15,23,42,.08);box-shadow:0 1px 2px rgba(15,23,42,.05);background:rgba(255,255,255,.82)}
.minutes-section-add{min-height:48px;align-items:center;justify-content:center}
.minutes-section-add-button{width:34px;height:34px;padding:0;display:grid;place-items:center;line-height:1;font-family:Arial,sans-serif;font-size:22px;border-radius:50%;background:#fff;color:#2f6fb4;border:1px solid rgba(71,85,105,.24);box-shadow:0 1px 4px rgba(15,23,42,.08)}
.minutes-section-add-button:hover{transform:scale(1.06);background:#f4f8fc}
.meeting-import-modal{display:grid;gap:12px}.meeting-import-warning{display:grid;gap:3px;padding:11px 12px;border:1px solid #b9d5f2;background:#f3f8fe;border-radius:10px;color:#294e72}.meeting-import-warning span{font-size:12px;color:#5f7285}.meeting-import-actions{display:flex;gap:8px;justify-content:flex-end}.meeting-import-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.meeting-import-section{display:grid;grid-template-columns:auto 34px 1fr;align-items:center;gap:9px;margin:0;padding:10px;border:1px solid #dbe2ea;border-radius:10px;background:#fff;cursor:pointer;font-weight:400}.meeting-import-section input{width:auto;margin:0}.meeting-import-section b,.meeting-import-section small{display:block}.meeting-import-section small{margin-top:2px;color:#697581;font-size:11px}.meeting-import-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:rgba(255,255,255,.9);border:1px solid rgba(15,23,42,.08)}
@media(max-width:650px){.meeting-import-grid{grid-template-columns:1fr}}

.export-format-modal{min-width:min(620px,86vw)}
.export-format-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
.export-format-grid button{min-height:92px;border:1px solid #d7dee8;background:#fff;border-radius:12px;padding:16px;text-align:left;display:flex;flex-direction:column;gap:7px;cursor:pointer}
.export-format-grid button:hover{border-color:#2563eb;box-shadow:0 3px 12px rgba(15,23,42,.10)}
.export-format-grid button b{font-size:15px}
.export-format-grid button small{color:#64748b}
@media(max-width:700px){.export-format-grid{grid-template-columns:1fr}.export-format-modal{min-width:0}}

/* 34.36.65: Project Minutes has six semantic columns; do not apply Weekly Meeting Board's seven-column sizing. */
.project-minute-table{width:100%;min-width:1100px;table-layout:fixed}
.project-minute-table th:nth-child(1),.project-minute-table td:nth-child(1){width:48%;min-width:420px}
.project-minute-table th:nth-child(2),.project-minute-table td:nth-child(2){width:17%;min-width:150px}
.project-minute-table th:nth-child(3),.project-minute-table td:nth-child(3){width:10%;min-width:95px}
.project-minute-table th:nth-child(4),.project-minute-table td:nth-child(4){width:9%;min-width:85px}
.project-minute-table th:nth-child(5),.project-minute-table td:nth-child(5){width:9%;min-width:100px}
.project-minute-table th:nth-child(6),.project-minute-table td:nth-child(6){width:140px;min-width:140px}
.project-minute-table td:first-child{color:inherit;font-weight:400}
.project-minute-table .project-minute-title{display:block;width:100%;min-height:38px;font-weight:700}
.project-minute-table .project-minute-desc{display:block;width:100%;min-height:100px;height:auto;white-space:pre-wrap;line-height:1.4;resize:vertical;margin-top:6px}
.project-minute-table td{vertical-align:top}


/* 34.36.71: Isolate Project Minutes columns from legacy Weekly Meeting Board sizing. */
.resource-table .meeting-edit-table.project-minute-table{width:100%!important;min-width:1180px!important;table-layout:fixed!important;border-collapse:separate}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(1),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(1){width:48%!important;min-width:520px!important;max-width:none!important}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(2),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(2){width:16%!important;min-width:160px!important}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(3),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(3){width:9%!important;min-width:105px!important}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(4),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(4){width:8%!important;min-width:95px!important}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(5),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(5){width:9%!important;min-width:115px!important}
.resource-table .meeting-edit-table.project-minute-table th:nth-child(6),
.resource-table .meeting-edit-table.project-minute-table td:nth-child(6){width:160px!important;min-width:160px!important}
.resource-table .meeting-edit-table.project-minute-table td:first-child{width:48%!important;min-width:520px!important;max-width:none!important;white-space:normal!important;vertical-align:top!important}
.resource-table .meeting-edit-table.project-minute-table td:first-child .project-minute-title{box-sizing:border-box!important;width:100%!important;min-width:480px!important;min-height:38px!important;display:block!important}
.resource-table .meeting-edit-table.project-minute-table td:first-child .project-minute-desc{box-sizing:border-box!important;width:100%!important;min-width:480px!important;min-height:110px!important;height:110px!important;display:block!important;resize:vertical!important;white-space:pre-wrap!important;overflow:auto!important;line-height:1.4!important}
.resource-table .meeting-edit-table.project-minute-table td{vertical-align:top!important}
.resource-table .meeting-edit-table.project-minute-table td select{box-sizing:border-box;max-width:100%;min-width:0}

/* 34.36.72: Make project minute title and description distinct and readable. */
.project-minute-table .project-minute-field-label{display:block;font-size:10px;font-weight:700;letter-spacing:.03em;color:#64748b;margin:2px 0 4px}
.project-minute-table .project-minute-title{margin-bottom:8px;min-height:38px}
.project-minute-table .project-minute-desc{min-height:110px;height:110px}
.project-minute-table .project-minute-source-owner{display:block;margin-top:4px;color:#64748b;font-size:10px;white-space:normal}

/* Bulk user upload: explain partial import before confirmation. */
.bulk-upload-summary{margin:10px 0 6px;padding:10px 12px;border:1px solid var(--line,#d9e2ef);border-radius:8px;background:var(--surface-soft,#f7faff);font-size:13px}
