
:root{
 --bg:#f4f6f8;--panel:#fff;--text:#202833;--muted:#6b7280;--line:#e4e7eb;
 --accent:#d96b22;--accent-soft:#fff3e8;--dark:#111827;--dark2:#1f2937;
 --good:#19875d;--warn:#b87807;--bad:#c24545;--blue:#2f6fb3;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}
button,input,select,textarea{font:inherit}button{cursor:pointer}
.app{display:grid;grid-template-columns:270px 1fr;min-height:100vh}
.sidebar{background:var(--dark);color:#fff;height:100vh;position:sticky;top:0;overflow:auto;padding:18px 14px}
.brand{display:flex;gap:11px;align-items:center;padding:3px 8px 18px;border-bottom:1px solid #2b3545}
.logo-img{width:64px;height:46px;object-fit:contain;display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}
.brand h1{font-size:15px;margin:0;line-height:1.15}.brand small{color:#aeb6c3;font-size:11px}
.nav-group{margin-top:15px}.nav-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#7f8a9b;padding:0 10px 7px;font-weight:800}
.nav button{width:100%;border:0;background:transparent;color:#d5dae1;padding:9px 10px;text-align:left;border-radius:8px;margin:2px 0;font-size:13px}
.nav button:hover,.nav button.active{background:#263143;color:#fff}
.main{padding:24px 28px 36px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:20px}
.title h2{margin:0;font-size:25px}.title p{margin:5px 0 0;color:var(--muted);font-size:13px}.right-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rolebox{border:1px solid var(--line);background:#fff;border-radius:9px;padding:8px 10px;font-size:12px}
.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;padding:9px 12px;border-radius:8px;font-size:12px;font-weight:700;color:#303946}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.dark{background:var(--dark2);border-color:var(--dark2);color:#fff}.btn.danger{color:var(--bad)}
.grid{display:grid;gap:14px}.cards{grid-template-columns:repeat(4,minmax(0,1fr))}.two{grid-template-columns:1.3fr .7fr}.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0}.kpi-label{font-size:12px;color:var(--muted);margin-bottom:9px}.kpi-value{font-size:25px;font-weight:900}.kpi-sub{font-size:11px;color:var(--muted);margin-top:7px}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-title h3{margin:0;font-size:15px}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left;font-size:12px;vertical-align:top}
th{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.045em;font-weight:800;background:#fafbfc}tbody tr:hover{background:#fbfcfd}
.badge{display:inline-flex;padding:4px 7px;border-radius:999px;background:#edf1f5;color:#45505e;font-size:10px;font-weight:800;white-space:nowrap}.badge.good{background:#e7f5ef;color:var(--good)}.badge.warn{background:#fff1d6;color:#946000}.badge.bad{background:#fde9e9;color:var(--bad)}.badge.blue{background:#e9f1fb;color:var(--blue)}
.pipeline{display:grid;grid-template-columns:repeat(6,minmax(170px,1fr));gap:10px;overflow:auto;padding-bottom:6px}.stage{background:#eef1f4;border-radius:11px;padding:11px;min-height:240px}.stage-head{display:flex;justify-content:space-between;font-size:12px;font-weight:900}.stage-total{font-size:10px;color:var(--muted);margin:4px 0 10px}.ticket{background:#fff;border:1px solid var(--line);border-radius:9px;padding:10px;margin-bottom:8px}.ticket strong{display:block;font-size:12px}.ticket small{color:var(--muted)}
.progress{height:7px;background:#e9edf1;border-radius:999px;overflow:hidden}.progress span{display:block;height:100%;background:var(--accent)}
.project-card{display:grid;grid-template-columns:1fr auto;gap:12px;border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:10px}.project-card h4{margin:0 0 4px;font-size:14px}.project-card p{margin:0;color:var(--muted);font-size:11px}
.metric-line{display:flex;justify-content:space-between;gap:10px;font-size:11px;margin:7px 0}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.search{min-width:220px;flex:1;border:1px solid var(--line);padding:9px 11px;border-radius:8px;background:#fff}
.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:14px}.tabs button{border:0;background:transparent;padding:10px 12px;font-size:12px;font-weight:800;color:var(--muted);border-bottom:2px solid transparent}.tabs button.active{color:var(--accent);border-color:var(--accent)}
.notice{border-left:3px solid var(--accent);background:#fff9f4;padding:11px 12px;border-radius:7px;margin-bottom:9px}.notice b{font-size:12px}.notice div{font-size:11px;color:var(--muted);margin-top:3px}
.modal{position:fixed;inset:0;background:rgba(17,24,39,.55);display:none;align-items:center;justify-content:center;padding:18px;z-index:100}.modal.open{display:flex}.modal-box{width:min(860px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:14px;padding:18px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.modal-head h3{margin:0}.close{border:0;background:transparent;font-size:22px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.field{display:grid;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:11px;color:var(--muted);font-weight:800}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff}.field textarea{min-height:80px}
.signature-box{grid-column:1/-1;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fafbfc}
.signature-box-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}
.signature-box-head b{font-size:11px;color:var(--muted)}
.signature-pad{width:100%;height:170px;display:block;background:#fff;border:1px dashed #b9c2cc;border-radius:8px;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:none}
.signature-pad path{fill:none;stroke:#111827;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* Signature modal uses a stable top-anchored viewport.
   This prevents iPad/iPhone Safari's browser chrome from repeatedly
   re-centering the dialog while a finger or stylus is moving. */
.modal.signature-mode{
 align-items:flex-start;
 justify-content:center;
 overflow:hidden;
 padding:12px;
 overscroll-behavior:none;
}
.modal.signature-mode .modal-box{
 margin-top:0;
 max-height:calc(100vh - 24px);
 max-height:calc(100svh - 24px);
 overflow-y:auto;
 overscroll-behavior:contain;
 -webkit-overflow-scrolling:touch;
}
.modal.signature-mode.signature-drawing .modal-box{
 overflow:hidden!important;
}
.modal.signature-mode .signature-pad{
 height:190px;
 cursor:crosshair;
}
.labour-terms{
 max-height:260px;
 overflow:auto;
 border:1px solid #d8e1ea;
 background:#f8fafc;
 border-radius:10px;
 padding:12px 16px;
 line-height:1.55;
 color:#25384a;
}
.labour-terms ol{margin:0;padding-left:22px}
.labour-terms li{margin:0 0 9px}
.subcontractor-terms{
 max-height:330px;
 overflow:auto;
 border:1px solid #d8e1ea;
 background:#f8fafc;
 border-radius:10px;
 padding:13px 17px;
 line-height:1.55;
 color:#25384a;
}
.subcontractor-terms-title{font-weight:900;margin-bottom:10px;color:#163d62}
.subcontractor-terms ol{margin:0;padding-left:23px}
.subcontractor-terms li{margin:0 0 9px}

.employee-terms{
 max-height:390px;
 overflow:auto;
 border:1px solid #d8e1ea;
 background:#f8fafc;
 border-radius:10px;
 padding:13px 17px;
 line-height:1.55;
 color:#25384a;
}
.employee-terms-title{font-weight:900;margin-bottom:10px;color:#163d62}
.employee-terms ol{margin:0;padding-left:23px}
.employee-terms li{margin:0 0 12px}
.employee-terms li>div{margin-top:3px}

.employee-contract-mode .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.employee-contract-mode .signature-box{grid-column:1/-1}
.subcontractor-contract-mode .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.subcontractor-contract-mode .signature-box{grid-column:1/-1}
.labour-agreement-mode .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.labour-agreement-mode .signature-box{grid-column:1/-1}
@media(max-width:700px){
 .labour-agreement-mode .form-grid{grid-template-columns:1fr}
 .employee-contract-mode .form-grid{grid-template-columns:1fr}
 .subcontractor-contract-mode .form-grid{grid-template-columns:1fr}
 .employee-terms,.subcontractor-terms{max-height:280px}
}
@media(max-width:900px){
 .modal.signature-mode{padding:8px}
 .modal.signature-mode .modal-box{
  width:100%;
  max-height:calc(100vh - 16px);
  max-height:calc(100svh - 16px);
  border-radius:12px;
 }
 .modal.signature-mode .signature-pad{height:210px}
}
.contract-sign-status{font-size:10px;color:var(--muted);display:block;margin-top:4px}
.contract-sign-preview{height:65px;width:100%;display:block;border-bottom:1px solid #777;margin-bottom:5px}
.contract-sign-preview path{fill:none!important;stroke:#111827!important;stroke-width:2.2!important;stroke-linecap:round!important;stroke-linejoin:round!important}
.subhead{grid-column:1/-1;margin-top:6px;padding:9px 10px;background:#f6f7f9;border-radius:7px;font-weight:800;font-size:12px}
.material-grid,.plant-grid{grid-column:1/-1;border:1px solid var(--line);border-radius:9px;overflow:auto}.material-grid table,.plant-grid table{min-width:700px}
.gantt{border:1px solid var(--line);border-radius:10px;overflow:hidden}.gantt-head,.gantt-row{display:grid;grid-template-columns:220px 1fr;min-width:760px}.gantt-head{background:#f7f8fa;font-size:10px;font-weight:800}.gantt-head>div,.gantt-row>div{border-bottom:1px solid var(--line);padding:9px}.gantt-timeline{position:relative;min-height:34px;background:repeating-linear-gradient(to right,#fff 0,#fff calc(8.33% - 1px),#edf0f3 calc(8.33% - 1px),#edf0f3 8.33%)}.gantt-bar{position:absolute;top:8px;height:18px;background:var(--accent);border-radius:4px;min-width:5px}.gantt-label{font-size:10px;color:#fff;padding:3px 5px;white-space:nowrap;overflow:hidden}
.file-chip{display:inline-flex;gap:6px;align-items:center;background:#f0f3f6;padding:5px 7px;border-radius:6px;font-size:10px}.file-chip button{border:0;background:transparent;color:var(--blue);font-weight:800;padding:0}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.quick{border:1px solid var(--line);background:#fff;border-radius:10px;padding:14px;text-align:left}.quick b{display:block;margin-bottom:4px}.quick span{font-size:11px;color:var(--muted)}


.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.photo-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}
.photo-card img{width:100%;height:190px;object-fit:cover;display:block;background:#eef0f2}
.photo-card-body{padding:10px}.photo-card-body b{display:block;margin-bottom:4px}.photo-card-body small{display:block;color:var(--muted);line-height:1.4}
@media(max-width:1000px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.photo-grid{grid-template-columns:1fr}.photo-card img{height:220px}}

.sheet-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.sheet-toolbar label{font-size:11px;font-weight:800;color:var(--muted)}
.sheet-select{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 10px;min-width:230px}
.sheet{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
.sheet table{min-width:1050px}
.sheet th{position:sticky;top:0;z-index:2}
.sheet input,.sheet select,.sheet textarea{width:100%;min-width:80px;border:1px solid transparent;background:transparent;padding:7px 6px;border-radius:5px;font-size:11px}
.sheet textarea{min-width:190px;min-height:48px;resize:vertical}
.sheet input:focus,.sheet select:focus,.sheet textarea:focus{outline:none;border-color:#cdd3da;background:#fff}
.sheet .num{min-width:82px;text-align:right}
.sheet .wide{min-width:180px}
.sheet .date{min-width:125px}
.sheet-actions{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}
.sheet-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.sheet-tabs button{border:1px solid var(--line);background:#fff;padding:8px 11px;border-radius:8px;font-size:11px;font-weight:800}
.sheet-tabs button.active{background:var(--dark2);color:#fff;border-color:var(--dark2)}

.ui-icon{width:15px;height:15px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 15px;opacity:.82}
.ui-icon svg{width:15px;height:15px;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-label-text,.nav-item-label,.ui-tab-label{display:inline-flex;align-items:center;gap:7px;min-width:0}
.nav-label-text{font-weight:inherit}
.nav-item-label span:last-child,.ui-tab-label span:last-child{min-width:0}
.nav button .ui-icon{opacity:.72}
.nav button.active .ui-icon,.tabs button.active .ui-icon,.sheet-tabs button.active .ui-icon,.programme-subtabs button.active .ui-icon{opacity:1}
.tabs button,.sheet-tabs button,.programme-subtabs button{display:inline-flex;align-items:center}


.site-log-stack{display:grid;gap:12px}
.site-log-section{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fff}
.site-log-section h4{margin:0 0 10px;font-size:13px}
.site-log-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.site-log-fields .full{grid-column:1/-1}
.site-log-fields label{display:grid;gap:5px;font-size:11px;font-weight:800;color:var(--muted)}
.site-log-fields input,.site-log-fields select,.site-log-fields textarea{border:1px solid var(--line);border-radius:8px;padding:9px;background:#fff}
.site-log-fields textarea{min-height:86px;resize:vertical}
@media(max-width:780px){.site-log-fields{grid-template-columns:1fr}.site-log-fields .full{grid-column:auto}}


#printArea{display:none}
.print-doc{font-family:Arial,Helvetica,sans-serif;color:#202124;background:#fff;padding:8mm}
.print-doc h1{font-size:22px;margin:0}.print-doc h2{font-size:15px;margin:20px 0 8px;border-bottom:2px solid #222;padding-bottom:5px}
.print-doc .print-meta{font-size:12px;color:#555;margin:6px 0 18px;line-height:1.55}
.print-doc table{width:100%;border-collapse:collapse;font-size:11px}.print-doc th,.print-doc td{border:1px solid #aaa;padding:7px;text-align:left;vertical-align:top}.print-doc th{background:#f1f1f1}
.print-doc .print-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}.print-doc .print-box{border:1px solid #bbb;padding:8px}.print-doc .print-total{text-align:right;font-size:15px;font-weight:800;margin-top:12px}
.print-doc .print-sign{display:grid;grid-template-columns:1fr 1fr;gap:60px;margin-top:55px}.print-doc .print-line{border-top:1px solid #333;padding-top:6px;font-size:11px}
.employee-photo{width:46px;height:46px;border-radius:8px;object-fit:cover;background:#eef0f2;border:1px solid var(--line)}
.request-sheet{border:1px solid var(--line);border-radius:10px;margin-bottom:14px;overflow:hidden;background:#fff}.request-head{padding:12px;background:#f7f8fa;border-bottom:1px solid var(--line)}
.request-head-grid{display:grid;grid-template-columns:140px 1fr 180px auto;gap:8px;align-items:end}.request-head label{display:grid;gap:4px;font-size:10px;font-weight:800;color:var(--muted)}.request-head input,.request-head select{border:1px solid var(--line);border-radius:7px;padding:8px;background:#fff}
@media(max-width:900px){.request-head-grid{grid-template-columns:1fr 1fr}.request-head-grid .request-actions{grid-column:1/-1}}@media(max-width:600px){.request-head-grid{grid-template-columns:1fr}}
@page{size:A4 portrait;margin:6mm 5mm 7mm 5mm}
@media print{
 body.printing{background:#fff!important}
 body.printing .mobile-top,body.printing .app,body.printing .modal{display:none!important}
 body.printing #printArea{display:block!important}
 #printArea{display:block!important}
 .print-doc{padding:0!important;width:auto!important;max-width:none!important}
 .print-doc table{font-size:10px}
 .print-doc .card{box-shadow:none!important;border:1px solid #ccc!important;margin-bottom:10px!important}
 .print-doc .grid{display:block!important}
 .print-doc .cards>.card{margin-bottom:8px!important}
}

.mobile-start{display:none}
.mobile-start-btn{width:50px;height:50px;border:0;border-radius:12px;background:var(--dark);box-shadow:0 8px 24px rgba(0,0,0,.28);padding:12px;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:4px}
.mobile-start-btn span{display:block;background:var(--accent);border-radius:2px}
@media(max-width:780px){
 .mobile-top{display:none!important}
 .mobile-start{display:block;position:fixed;left:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:120}
 .mobile-start-btn{display:grid}
 .sidebar{display:none;position:fixed!important;left:12px;bottom:calc(72px + env(safe-area-inset-bottom));top:auto!important;width:min(88vw,320px)!important;height:auto!important;max-height:calc(100vh - 100px);overflow:auto;z-index:115;border-radius:14px;box-shadow:0 16px 44px rgba(0,0,0,.34)}
 .sidebar.open{display:block}
 .main{padding:17px 17px calc(86px + env(safe-area-inset-bottom))!important}
}

.mobile-top{display:none}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.two,.three{grid-template-columns:1fr}.quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:780px){.app{grid-template-columns:1fr}.sidebar{display:none;position:fixed;width:270px;z-index:90}.sidebar.open{display:block}.mobile-top{display:flex;background:var(--dark);color:#fff;padding:11px 15px;justify-content:space-between}.mobile-top button{background:transparent;color:#fff;border:0}.main{padding:17px}.cards,.quick-grid{grid-template-columns:1fr}.topbar{flex-direction:column}.form-grid{grid-template-columns:1fr}.field.full,.subhead,.material-grid,.plant-grid{grid-column:auto}}

/* Kolsom v0.17 visual refresh */
:root{--bg:#eef3f8;--panel:#fff;--text:#172235;--muted:#69778a;--line:#dce4ed;--accent:#ef7b19;--accent-soft:#fff1df;--dark:#082b52;--dark2:#123d6b;--good:#16845b;--warn:#bf7800;--bad:#c74444;--blue:#1768ad;--navy:#082b52;--shadow:0 10px 28px rgba(8,43,82,.08)}
html,body{background:radial-gradient(circle at 92% 4%,rgba(239,123,25,.08),transparent 22%),linear-gradient(180deg,#f8fbfe 0,#eef3f8 320px,#edf2f7 100%)}
.sidebar{background:linear-gradient(180deg,#06284b 0%,#0a315b 46%,#071d36 100%);box-shadow:10px 0 28px rgba(5,27,51,.08);padding:18px 14px 22px}.brand{padding:5px 8px 20px;border-bottom:1px solid rgba(255,255,255,.12)}.brand h1{font-size:16px}.brand small{color:#adc3d8}.logo-img{width:72px;height:50px}.nav-label{color:#7fa1be;letter-spacing:.14em}.nav button{color:#dbe8f4;padding:10px 11px;border-radius:9px;transition:.15s;border-left:3px solid transparent}.nav button:hover{background:rgba(255,255,255,.08);transform:translateX(2px)}.nav button.active{background:linear-gradient(90deg,rgba(239,123,25,.95),rgba(239,123,25,.72));color:#fff;border-left-color:#ffd19f;box-shadow:0 6px 16px rgba(0,0,0,.14)}
.main{padding:24px 30px 42px}.topbar{background:linear-gradient(120deg,#fff 0%,#f7fbff 70%,#fff5e9 100%);border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:var(--shadow);position:relative;overflow:hidden;margin-bottom:20px}.topbar:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:linear-gradient(#ef7b19,#f5aa4b)}.title h2{font-size:26px;color:var(--navy);letter-spacing:-.02em}.title p{color:#718096}.rolebox{border:1px solid #c7d6e6;background:#fff;box-shadow:0 3px 10px rgba(8,43,82,.05)}
.card{border:1px solid #dce6ef;border-radius:14px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s;background:rgba(255,255,255,.98)}.cards>.card{position:relative;overflow:hidden}.cards>.card:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--accent),#f5aa4b)}.cards>.card:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(8,43,82,.11)}.kpi-label{font-weight:800;color:#718096;text-transform:uppercase;letter-spacing:.04em;font-size:10px}.kpi-value{color:var(--navy);font-size:26px}.section-title h3{font-size:16px;color:var(--navy)}.section-title{border-bottom:1px solid #edf1f5;padding-bottom:10px}.btn{border-radius:9px;box-shadow:0 2px 5px rgba(8,43,82,.04)}.btn.primary{background:linear-gradient(135deg,#ef7b19,#e8640c);border-color:#e86b10;box-shadow:0 5px 12px rgba(239,123,25,.2)}.btn.dark{background:linear-gradient(135deg,#0d3d70,#082b52)}
table{border-collapse:separate;border-spacing:0}th{background:#f1f6fb;color:#53657a;border-bottom:1px solid #dce5ee}tbody tr:hover{background:#f8fbfe}.table-wrap{border:1px solid #e0e7ef;border-radius:10px;overflow:auto}.tabs{background:#edf3f8;border:1px solid #dae4ed;border-radius:11px;padding:5px;margin-bottom:15px}.tabs button{border-bottom:0;border-radius:7px;padding:9px 12px}.tabs button.active{background:#fff;color:var(--navy);box-shadow:0 3px 10px rgba(8,43,82,.08)}.notice{border-left:4px solid var(--accent);background:linear-gradient(90deg,#fff7ee,#fff)}.project-card{background:linear-gradient(115deg,#fff,#fbfdff);border-left:4px solid var(--accent);box-shadow:0 5px 16px rgba(8,43,82,.05)}.progress{height:8px;background:#e7edf3}.progress span{background:linear-gradient(90deg,#ef7b19,#f4a348)}.gantt-head{background:#eaf2f9;color:var(--navy)}.gantt-bar{background:linear-gradient(90deg,#1768ad,#0d3d70);box-shadow:0 3px 8px rgba(13,61,112,.2)}.sheet{box-shadow:0 5px 16px rgba(8,43,82,.04)}.sheet th{background:#eaf2f9;color:#40556d}.sheet-tabs button.active{background:linear-gradient(135deg,#0d3d70,#082b52)}.modal{backdrop-filter:blur(4px)}.modal-box{border:1px solid #dce5ed;box-shadow:0 24px 80px rgba(4,24,44,.28)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:#7ea6c9;box-shadow:0 0 0 3px rgba(23,104,173,.10)}
.control-strip{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#f4f8fc;border:1px solid #dce7f0;border-radius:10px;padding:10px;margin-bottom:12px}.control-strip b{color:var(--navy)}.mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.mini-stat{padding:12px;border:1px solid #dfe7ef;border-radius:10px;background:linear-gradient(135deg,#fff,#f8fbfe)}.mini-stat strong{display:block;color:var(--navy);font-size:18px}.mini-stat span{font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase}.report-cover{padding:16px;border-radius:13px;background:linear-gradient(120deg,#082b52,#0d4a85);color:#fff;margin-bottom:14px}.report-cover h3{margin:0;font-size:18px}.report-cover p{margin:5px 0 0;color:#d5e4f2;font-size:11px}.curve-wrap{border:1px solid #dce6ef;border-radius:10px;background:#fff;padding:10px;overflow:auto}@media(max-width:900px){.mini-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.main{padding:18px 16px 90px}}


.hse-inline{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.compact-manpower{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:8px}
.compact-manpower label{display:grid;gap:4px;font-size:10px;font-weight:800;color:var(--muted)}
.compact-manpower input{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px;background:#fff}
.embedded-table{margin-top:10px;border-top:1px solid #e6edf4;padding-top:10px}
.week-day{min-width:62px;text-align:center}
.week-day select{min-width:54px;text-align:center;font-weight:900}
@media(max-width:900px){.compact-manpower{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.hse-inline{grid-template-columns:1fr 1fr}.compact-manpower{grid-template-columns:repeat(2,1fr)}}


.date-with-day{display:inline-grid;gap:2px}.date-with-day small{font-size:10px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.03em}
.day-status-banner{padding:10px 12px;border-radius:10px;border:1px solid #dce6ef;background:#f7fafc;margin-bottom:10px;font-size:11px}.day-status-banner.nonwork{background:#fff4e6;border-color:#f0c894;color:#80510a}
.complete-tick{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#16845b;color:#fff;font-weight:900;font-size:15px}
.pending-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#bf7800;margin-right:5px}
.sub-photo{width:58px;height:68px;object-fit:cover;border:1px solid var(--line);border-radius:8px;background:#f2f5f8}
.wo-card{border:1px solid var(--line);border-radius:12px;background:#fff;margin-top:12px;overflow:hidden}.wo-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:13px 14px;background:#f6f9fc;border-bottom:1px solid var(--line)}.wo-body{padding:12px}
.approval-chip{display:inline-flex;align-items:center;gap:5px}


@media print{
 .print-doc{font-size:8pt!important}
 .print-doc h1{font-size:17px!important}.print-doc h2{font-size:11px!important;margin:11px 0 5px!important}.print-doc h3{font-size:9px!important}
 .print-doc .print-meta{font-size:8px!important;margin:4px 0 9px!important}
 .print-doc .table-wrap,.print-doc .sheet,.print-doc .gantt,.print-doc .curve-wrap{overflow:visible!important;max-width:100%!important}
 .print-doc table{width:100%!important;max-width:100%!important;min-width:0!important;font-size:7px!important;border-collapse:collapse!important;table-layout:auto!important}
 .print-doc th,.print-doc td{padding:2px 3px!important;line-height:1.15!important;white-space:normal!important;overflow-wrap:anywhere!important}
 .print-doc .gantt-head,.print-doc .gantt-row{min-width:0!important;grid-template-columns:120px 1fr!important}
 .print-doc .gantt-head>div,.print-doc .gantt-row>div{padding:3px!important;font-size:6px!important}.print-doc .gantt-label{font-size:5.5px!important;padding:2px!important}
 .print-doc svg{min-width:0!important;max-width:100%!important;width:100%!important}.print-doc img{max-width:100%!important}
 .print-doc .print-sign{margin-top:28px!important}
 .print-doc .employee-terms,.print-doc .subcontractor-terms,.print-doc .labour-terms{
  max-height:none!important;overflow:visible!important;background:#fff!important;border-color:#aaa!important
 }
 .print-doc .employee-terms li,.print-doc .subcontractor-terms li,.print-doc .labour-terms li{
  break-inside:avoid
 }
 .print-doc .contract-sign-preview path{
  fill:none!important;stroke:#111827!important;stroke-width:2.2!important;
  stroke-linecap:round!important;stroke-linejoin:round!important
 }
}
.programme-subtabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px;padding:5px;background:#edf3f8;border:1px solid #dbe5ee;border-radius:10px}
.programme-subtabs button{border:0;background:transparent;border-radius:7px;padding:8px 11px;font-weight:800;color:#53657a;cursor:pointer}.programme-subtabs button.active{background:#fff;color:var(--navy);box-shadow:0 3px 9px rgba(8,43,82,.09)}
.gantt-expanded{position:fixed!important;inset:12px!important;z-index:400!important;background:#fff!important;padding:16px!important;overflow:auto!important;border-radius:14px!important;box-shadow:0 28px 80px rgba(0,0,0,.32)!important}.gantt-expanded .gantt-head,.gantt-expanded .gantt-row{min-width:1100px}
.day-status-inline{font-size:9px;font-weight:800;margin-top:2px}.day-status-inline.nonwork{color:#b15d00}


.report-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}
.report-chart{border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px;overflow:hidden}
.report-chart h4{margin:0 0 8px;color:var(--navy);font-size:13px}
.chart-note{font-size:10px;color:var(--muted);margin-top:5px}
.hierarchy-step{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#f8fbfd;margin-bottom:8px}
.hierarchy-step strong{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--orange);color:#fff}
.activity-card{border:1px solid var(--line);border-radius:11px;padding:11px;margin-bottom:10px;background:#fff}
.activity-card .activity-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:7px}
.summary-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media(max-width:900px){.report-chart-grid,.summary-columns{grid-template-columns:1fr}}
@media print{.report-chart-grid,.summary-columns{grid-template-columns:repeat(2,minmax(0,1fr))!important}.report-chart{break-inside:avoid}.report-chart svg{height:auto!important}.hierarchy-step{break-inside:avoid}}



.auth-gate{
 position:fixed;inset:0;z-index:3000;display:grid;place-items:center;padding:24px;
 background:
  radial-gradient(circle at 12% 12%,rgba(238,125,35,.16),transparent 28%),
  radial-gradient(circle at 88% 86%,rgba(71,126,176,.17),transparent 30%),
  linear-gradient(135deg,#07192e 0%,#0a2b4f 58%,#102f4d 100%);
 overflow:auto
}
.auth-gate::before{
 content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;
 background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);
 background-size:44px 44px
}
.auth-gate.hidden{display:none}
.auth-shell{
 position:relative;width:min(920px,100%);min-height:540px;display:grid;grid-template-columns:.92fr 1.08fr;
 border-radius:24px;overflow:hidden;box-shadow:0 36px 100px rgba(0,0,0,.42);background:#fff;
 border:1px solid rgba(255,255,255,.22)
}
.auth-brand{
 position:relative;padding:44px 40px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;
 background:linear-gradient(155deg,#0a2748 0%,#0c355f 68%,#103a65 100%);
 overflow:hidden
}
.auth-brand::after{
 content:"";position:absolute;width:270px;height:270px;border-radius:50%;right:-120px;bottom:-100px;
 border:42px solid rgba(238,125,35,.15)
}
.auth-brand-logo{
 width:205px;max-height:92px;object-fit:contain;object-position:left center;filter:drop-shadow(0 8px 18px rgba(0,0,0,.15))
}
.auth-brand-copy{position:relative;z-index:1}
.auth-kicker{
 display:inline-flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;
 border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);
 font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase
}
.auth-kicker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 4px rgba(238,125,35,.15)}
.auth-brand h1{font-size:30px;line-height:1.12;margin:18px 0 10px;letter-spacing:-.02em}
.auth-brand p{font-size:12px;line-height:1.65;color:#c8d6e5;margin:0;max-width:310px}
.auth-modules{display:grid;gap:9px;margin-top:22px}
.auth-module{display:flex;align-items:center;gap:10px;font-size:10px;font-weight:700;color:#dce8f3}
.auth-module span{width:24px;height:24px;display:grid;place-items:center;border-radius:7px;background:rgba(255,255,255,.08);font-size:11px}
.auth-foot{position:relative;z-index:1;font-size:9px;color:#91a7bc;letter-spacing:.04em}
.auth-card{
 padding:48px 46px 42px;background:#fff;display:flex;flex-direction:column;justify-content:center
}
.auth-card-logo-mobile{display:none;width:150px;max-height:72px;object-fit:contain;margin:0 auto 14px}
.auth-card h2{margin:0;color:var(--navy);font-size:27px;letter-spacing:-.02em}
.auth-card .auth-sub{color:#77889a;font-size:11px;line-height:1.5;margin:7px 0 25px}
.auth-card label{display:grid;gap:7px;margin:11px 0;font-size:10px;font-weight:800;color:#50647a;letter-spacing:.02em}
.auth-input-wrap{position:relative}
.auth-card input{
 width:100%;box-sizing:border-box;border:1px solid #d6e0e9;border-radius:11px;padding:12px 13px;
 font:inherit;background:#fbfcfe;color:#17324d;outline:none;transition:.15s ease
}
.auth-card input:focus{border-color:#ef8a37;box-shadow:0 0 0 3px rgba(238,125,35,.12);background:#fff}
.auth-submit{
 width:100%;margin-top:16px;padding:12px 14px;border:none;border-radius:11px;color:#fff;font-weight:800;
 background:linear-gradient(135deg,#ef8a37,#dc6e23);box-shadow:0 12px 24px rgba(220,110,35,.22);cursor:pointer
}
.auth-submit:hover{filter:brightness(.98);transform:translateY(-1px)}
.auth-error{
 min-height:0;margin:12px 0 0;color:#b42318;font-size:10px;font-weight:700;line-height:1.4;
 padding:0;text-align:left
}
.auth-error:empty{display:none}
.auth-help{
 margin-top:19px;padding:12px 13px;border-radius:10px;background:#f5f8fb;color:#66798b;
 font-size:9.5px;line-height:1.5;border:1px solid #edf2f6
}
.auth-security{display:flex;align-items:center;gap:7px;margin-top:16px;color:#8a9aaa;font-size:9px}
.auth-security .shield{width:19px;height:19px;border-radius:6px;display:grid;place-items:center;background:#edf4f8;color:#315a78;font-weight:900}
.cloud-head{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.cloud-pill{display:inline-flex;align-items:center;gap:6px;border:1px solid #d8e3ed;background:#fff;border-radius:999px;padding:7px 9px;font-size:10px;font-weight:800;color:#4d6175}
.cloud-dot{width:7px;height:7px;border-radius:50%;background:#8999a7}
.cloud-pill.online .cloud-dot{background:#198754}
.cloud-pill.syncing .cloud-dot{background:#ef7b19;animation:cloudPulse .8s infinite alternate}
.cloud-pill.error .cloud-dot{background:#c9362b}
@keyframes cloudPulse{from{opacity:.35}to{opacity:1}}
.cloud-user{font-size:10px;color:#637689;max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rolebox:disabled{opacity:1;cursor:not-allowed;background:#f4f7fa;color:#314b64}
.database-banner{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;margin-bottom:12px;background:#f4f9fd;border:1px solid #cfe0ed;border-radius:11px;font-size:10px;color:#49637b}
.database-banner strong{color:var(--navy)}
.restore-banner{
 display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;margin-bottom:12px;
 border:1px solid #f2d5bd;background:#fff8f2;border-radius:11px;color:#6e4a2f;font-size:10px
}
.restore-banner strong{color:#9b4f18}
@media(max-width:780px){
 .cloud-head{justify-content:flex-start}.cloud-user{display:none}
 .auth-gate{padding:14px}
 .auth-shell{grid-template-columns:1fr;min-height:auto;max-width:470px}
 .auth-brand{display:none}
 .auth-card{padding:30px 24px 26px}
 .auth-card-logo-mobile{display:block}
 .auth-card h2{text-align:center;font-size:24px}
 .auth-card .auth-sub{text-align:center;margin-bottom:20px}
}
.cloud-user{display:none}.auth-card{padding:20px}}


.site-progress-stack{display:grid;gap:14px;margin-top:14px}
.daily-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.daily-summary-grid label{display:grid;gap:5px;font-size:10px;font-weight:800;color:#52667a}
.daily-summary-grid label.full{grid-column:1/-1}
.daily-summary-grid input,.daily-summary-grid select,.daily-summary-grid textarea{
 width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:8px 9px;background:#fff;font:inherit
}
.daily-summary-grid textarea{min-height:72px;resize:vertical}
.summary-meta{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:9px 11px;border-radius:9px;background:#f6f9fb;border:1px solid #e5edf3;font-size:10px;color:#627488}
.compact-details{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.compact-details>summary{cursor:pointer;list-style:none;padding:12px 14px;font-weight:900;color:var(--navy);background:#f7f9fb}
.compact-details>summary::-webkit-details-marker{display:none}
.compact-details>summary::after{content:"+";float:right;font-size:16px;color:var(--orange)}
.compact-details[open]>summary::after{content:"–"}
.compact-details-body{padding:12px}
.progress-percent{display:flex;align-items:center;gap:7px}
.progress-percent .complete-tick{flex:0 0 auto}
@media(max-width:900px){.daily-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.daily-summary-grid{grid-template-columns:1fr}}


/* ===========================================================
   v0.25.6.6 — Kolsom Blue Theme
   Light on PC/tablet, automatic dark mode on phones.
   =========================================================== */
:root{
 --bg:#f3f6fa;
 --panel:#ffffff;
 --text:#102b49;
 --muted:#687d92;
 --line:#dbe5ee;
 --accent:#ef7b19;
 --accent-soft:#fff1e4;
 --dark:#041d36;
 --dark2:#0a3158;
 --good:#13815b;
 --warn:#b87807;
 --bad:#c24545;
 --blue:#246ca8;
}

/* Desktop / tablet shell */
html,body{background:var(--bg);color:var(--text)}
.app{grid-template-columns:258px 1fr}
.sidebar{
 background:linear-gradient(180deg,#041d36 0%,#062746 54%,#041b32 100%);
 padding:17px 13px 22px;
 border-right:1px solid rgba(255,255,255,.04);
}
.brand{
 padding:5px 8px 18px;
 border-bottom:1px solid rgba(255,255,255,.10);
}
.brand h1{font-size:16px;letter-spacing:-.01em}
.brand small{color:#9eb3c7}
.logo-img{width:67px;height:48px}

/* Sidebar group header becomes dropdown button */
.nav-group{margin-top:11px}
.nav-label.nav-toggle{
 width:100%;
 border:0;
 background:transparent;
 color:#91a9bd;
 padding:8px 9px 7px;
 display:flex;
 align-items:center;
 justify-content:space-between;
 gap:10px;
 text-align:left;
 font-size:9px;
 letter-spacing:.11em;
 text-transform:uppercase;
 font-weight:900;
 border-radius:7px;
 cursor:pointer;
}
.nav-label.nav-toggle:hover{
 background:rgba(255,255,255,.055);
 color:#d5e2ed;
}
.nav-caret{
 color:#ef8a33;
 font-size:12px;
 line-height:1;
 transition:transform .16s ease;
}
.nav-group.collapsed .nav{display:none}
.nav-group.collapsed{margin-bottom:2px}
.nav button{
 padding:9px 10px;
 margin:2px 0;
 border-radius:8px;
 color:#cad8e4;
 font-size:12px;
 transition:background .14s ease,color .14s ease,transform .14s ease;
}
.nav button:hover{
 background:rgba(255,255,255,.075);
 color:#fff;
 transform:none;
}
.nav button.active{
 background:linear-gradient(100deg,#ef7b19 0%,#cf641d 100%);
 color:#fff;
 box-shadow:0 6px 15px rgba(0,0,0,.16);
}
.nav button.active::after{display:none}

/* Content */
.main{
 padding:23px 27px 38px;
 background:
  radial-gradient(circle at 94% 0%,rgba(239,123,25,.045),transparent 23%),
  var(--bg);
}
.topbar{
 position:sticky;
 top:8px;
 z-index:70;
 margin-bottom:18px;
 padding:18px 20px;
 border:1px solid #d9e4ed;
 border-left:5px solid var(--accent);
 border-radius:15px;
 background:rgba(255,255,255,.97);
 box-shadow:0 10px 28px rgba(16,43,73,.07);
 backdrop-filter:blur(10px);
}
.title h2{
 color:#0b3157;
 font-size:27px;
 letter-spacing:-.025em;
}
.title p{color:#73869a;line-height:1.35}
.right-top{justify-content:flex-end}
.cloud-pill{
 background:#f8fbfd;
 border-color:#d9e5ed;
}
.rolebox{
 background:#f8fafc;
 border-color:#d4e0ea;
 color:#254563;
 min-width:210px;
}
.btn{
 border-color:#d5e0ea;
 color:#27435f;
 background:#fff;
 border-radius:9px;
 box-shadow:0 2px 7px rgba(21,54,84,.035);
}
.btn:hover{background:#f7fafc}
.btn.primary{
 background:linear-gradient(100deg,#ef7b19,#dc6e23);
 border-color:#df7024;
 color:#fff;
 box-shadow:0 7px 16px rgba(222,111,34,.20);
}
.btn.dark{
 background:#0a3158;
 border-color:#0a3158;
 color:#fff;
}
.card{
 background:#fff;
 border:1px solid #dbe5ee;
 border-radius:13px;
 box-shadow:0 6px 18px rgba(16,43,73,.045);
}
.kpi-label{
 color:#6c8094;
 font-size:10px;
 font-weight:900;
 text-transform:uppercase;
 letter-spacing:.055em;
}
.kpi-value{color:#082f55}
.section-title h3{color:#123958}
.progress{background:#e7edf3}
.progress span{background:linear-gradient(90deg,#ef7b19,#ee963d)}

/* Project workspace tabs */
.tabs{
 position:sticky;
 top:116px;
 z-index:50;
 background:#f5f8fb;
 border:1px solid #dbe4ed;
 padding:6px;
 border-radius:11px;
 box-shadow:0 5px 14px rgba(16,43,73,.045);
}
.tabs button{
 color:#5d7287;
 border-radius:8px;
}
.tabs button.active{
 background:#fff;
 color:#0b3157;
 box-shadow:0 3px 10px rgba(15,45,74,.09);
}
.programme-subtabs{
 background:#f5f8fb;
 border-color:#dce5ed;
}
.programme-subtabs button.active{
 background:#0a3158;
 color:#fff;
}

/* Tables */
.table-wrap{
 border:1px solid #e0e7ee;
 border-radius:10px;
 background:#fff;
}
table{background:#fff}
th{
 color:#60758a;
 background:#f5f8fb;
 border-bottom-color:#dbe5ed;
}
td{border-bottom-color:#e5ebf0}
tbody tr:hover{background:#f8fafc}
input,select,textarea{
 border-color:#d5e0ea!important;
 color:#1d3d5a;
}
input:focus,select:focus,textarea:focus{
 outline:none;
 border-color:#ef913f!important;
 box-shadow:0 0 0 3px rgba(239,123,25,.09);
}
.sheet-actions{
 background:rgba(255,255,255,.97);
 border-top-color:#dfe7ee;
}

/* Modals */
.modal-box{
 border:1px solid #dce5ed;
 box-shadow:0 28px 70px rgba(2,22,42,.22);
}
.modal-head{border-bottom:1px solid #e2e8ee}
.modal-actions{
 background:#fff;
 border-top-color:#e1e8ee;
}

/* Mobile navigation button */
.mobile-start-btn{
 background:#041d36;
 border:1px solid rgba(255,255,255,.10);
}

/* Phone dark mode only — tablets stay light */
@media(max-width:640px){
 :root{
  --bg:#061524;
  --panel:#0b2238;
  --text:#eaf2f9;
  --muted:#98acbf;
  --line:#1a3a55;
  --accent:#ff7f19;
  --accent-soft:#322315;
  --dark:#031426;
  --dark2:#092a49;
  --blue:#67a9dd;
 }

 html,body{background:#061524;color:var(--text)}
 .main{
  background:
   radial-gradient(circle at 100% 0%,rgba(255,127,25,.06),transparent 25%),
   #061524!important;
  padding:14px 12px calc(86px + env(safe-area-inset-bottom))!important;
 }
 .topbar{
  top:5px;
  padding:14px 14px;
  border-color:#163753;
  border-left-color:var(--accent);
  background:rgba(8,29,48,.97);
  box-shadow:0 12px 30px rgba(0,0,0,.24);
 }
 .title h2{color:#f0f6fb;font-size:23px}
 .title p{color:#9db1c3}
 .right-top{
  width:100%;
  justify-content:flex-start;
  gap:7px;
 }
 .rolebox{
  width:100%;
  min-width:0;
  background:#0c2943;
  color:#e9f1f7;
  border-color:#1e4664;
 }
 .cloud-pill{
  background:#0b263e;
  color:#d9e8f3;
  border-color:#1a415f;
 }
 .cloud-user{color:#9fb3c5}
 .btn{
  background:#0b2944;
  color:#e8f0f6;
  border-color:#1b4666;
  box-shadow:none;
 }
 .btn:hover{background:#103554}
 .btn.primary{
  background:linear-gradient(100deg,#ff7f19,#df6714);
  border-color:#f37618;
  color:#fff;
 }
 .btn.dark{background:#102f4f;border-color:#1a486d}

 .card,
 .request-sheet,
 .site-log-section,
 .compact-details,
 .report-chart,
 .photo-card,
 .project-card,
 .ticket,
 .stage,
 .notice{
  background:#0a2137!important;
  color:#eaf2f9!important;
  border-color:#183b58!important;
  box-shadow:none!important;
 }
 .kpi-label,.kpi-sub,.section-title span,.metric-line span,.stage-total,.ticket small{
  color:#93aabe!important;
 }
 .kpi-value,.section-title h3,.metric-line b{color:#eef6fc!important}
 .table-wrap{
  background:#091e32;
  border-color:#173a56;
 }
 table{background:#091e32;color:#e6eef5}
 th{
  background:#0d2942!important;
  color:#9cb1c3!important;
  border-bottom-color:#1b405c!important;
 }
 td{border-bottom-color:#16364f!important;color:#dce8f1}
 tbody tr:hover{background:#0c2a43!important}
 input,select,textarea{
  background:#0b2943!important;
  color:#e8f1f7!important;
  border-color:#1c4564!important;
 }
 input::placeholder,textarea::placeholder{color:#7891a7}
 .sheet-toolbar,
 .request-head,
 .control-strip,
 .summary-meta,
 .database-banner{
  background:#0b263e!important;
  color:#b9c9d6!important;
  border-color:#193d59!important;
 }
 .tabs{
  top:153px;
  background:#081d30;
  border-color:#153a56;
  box-shadow:none;
 }
 .tabs button{color:#9db0c1}
 .tabs button.active{
  background:#103451;
  color:#fff;
  box-shadow:none;
 }
 .programme-subtabs{
  background:#081d30!important;
  border-color:#153a56!important;
 }
 .programme-subtabs button{color:#9db1c4}
 .programme-subtabs button.active{background:#ef7b19;color:#fff}
 .sheet-actions,
 .modal-actions{
  background:rgba(7,25,42,.98)!important;
  border-color:#173a55!important;
 }
 .modal{background:rgba(0,0,0,.62)}
 .modal-box{
  background:#081d30;
  color:#edf4fa;
  border-color:#1b425f;
 }
 .modal-head{border-bottom-color:#1b415e}
 .modal-head h3{color:#f2f7fb}
 .close{color:#b9cad7}
 .sidebar{
  background:linear-gradient(180deg,#02182d,#04223d 62%,#03192e)!important;
  border:1px solid #16405f;
 }
 .brand{border-bottom-color:#153954}
 .nav-label.nav-toggle{color:#86a2b8}
 .nav button{color:#bed0df}
 .nav button.active{
  background:linear-gradient(100deg,#f47a18,#d05c12);
  color:#fff;
 }
 .mobile-start-btn{
  background:#061f38;
  border-color:#224d6c;
  box-shadow:0 10px 26px rgba(0,0,0,.38);
 }
 .badge{background:#17344b;color:#c9d8e3}
 .badge.good{background:#103d33;color:#83dfbd}
 .badge.warn{background:#493717;color:#ffd27e}
 .badge.bad{background:#4a2428;color:#ff9b9b}
 .badge.blue{background:#183c59;color:#8cc8f5}
}

/* Tablet remains light, but give tabs room */
@media(min-width:641px) and (max-width:900px){
 .main{padding:20px 20px 34px}
 .topbar{padding:16px 17px}
 .app{grid-template-columns:235px 1fr}
}


/* Retained usability behavior from v0.25.6.5 */
.section-title{gap:10px;flex-wrap:wrap}
.section-title>div:last-child{display:flex;gap:7px;flex-wrap:wrap}
.sheet-actions{position:sticky;bottom:8px;z-index:30;padding-top:10px}
.modal-actions{position:sticky;bottom:0;z-index:15;padding-top:12px}
.btn:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:780px){
 .section-title>div:last-child{width:100%;overflow-x:auto;flex-wrap:nowrap}
 .section-title>div:last-child .btn{flex:0 0 auto;white-space:nowrap}
}


/* ===========================================================
   v0.25.6.7 — Mobile full-width correction
   =========================================================== */

/* Larger collapse / expand control on all screen sizes */
.nav-label.nav-toggle{
 min-height:42px;
 padding:7px 8px 7px 10px;
}
.nav-caret{
 display:inline-flex;
 align-items:center;
 justify-content:center;
 flex:0 0 34px;
 width:34px;
 height:34px;
 border-radius:8px;
 background:rgba(255,255,255,.07);
 color:#ff942f;
 font-size:22px;
 font-weight:900;
 line-height:1;
 letter-spacing:0;
}
.nav-label.nav-toggle:hover .nav-caret{
 background:rgba(255,255,255,.12);
}

/* Phone must be a genuine single-column application. */
@media(max-width:640px){
 html,body{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:hidden!important;
 }

 .app{
  display:block!important;
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
 }

 .main{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
  margin:0!important;
  padding:14px 12px calc(86px + env(safe-area-inset-bottom))!important;
  overflow-x:hidden!important;
 }

 .main > *,
 #content,
 #projectTabContent{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
 }

 .topbar,
 .card,
 .database-banner,
 .request-sheet,
 .site-log-section,
 .compact-details,
 .report-chart,
 .photo-card,
 .project-card,
 .ticket,
 .stage,
 .notice{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
 }

 .topbar{
  margin-left:0!important;
  margin-right:0!important;
 }

 .grid,
 .cards,
 .two,
 .three,
 .quick-grid,
 .report-chart-grid,
 .summary-columns{
  grid-template-columns:minmax(0,1fr)!important;
  width:100%!important;
  min-width:0!important;
 }

 .sheet-toolbar,
 .control-strip,
 .section-title,
 .right-top{
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
 }

 .sheet-toolbar{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:8px!important;
  align-items:stretch!important;
 }

 .sheet-toolbar label,
 .sheet-toolbar input,
 .sheet-toolbar select,
 .sheet-toolbar button{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  box-sizing:border-box!important;
 }

 .daily-summary-grid{
  grid-template-columns:minmax(0,1fr)!important;
 }

 .form-grid{
  grid-template-columns:minmax(0,1fr)!important;
 }

 .field,
 .field.full,
 .subhead,
 .material-grid,
 .plant-grid{
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
 }

 input,
 select,
 textarea{
  max-width:100%!important;
  box-sizing:border-box!important;
 }

 /* Tables remain horizontally scrollable rather than widening the page. */
 .table-wrap,
 .sheet{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  -webkit-overflow-scrolling:touch;
 }
 .table-wrap table,
 .sheet table{
  width:max-content;
  min-width:100%;
 }

 /* Sidebar remains an overlay and must never reserve application width. */
 .sidebar{
  position:fixed!important;
  width:min(88vw,340px)!important;
  max-width:340px!important;
  left:12px!important;
  right:auto!important;
  top:auto!important;
  bottom:calc(72px + env(safe-area-inset-bottom))!important;
  box-sizing:border-box!important;
 }

 .nav-caret{
  flex-basis:38px;
  width:38px;
  height:38px;
  font-size:25px;
  border-radius:10px;
 }
 .nav-label.nav-toggle{
  min-height:48px;
  padding:5px 5px 5px 10px;
  font-size:10px;
 }
}


/* ===========================================================
   v0.25.6.8 — Mobile theme cleanup
   =========================================================== */

/* Medium-size module chevrons, no tile/background */
.nav-caret{
 display:inline-flex!important;
 align-items:center!important;
 justify-content:center!important;
 flex:0 0 24px!important;
 width:24px!important;
 height:24px!important;
 border-radius:0!important;
 background:transparent!important;
 box-shadow:none!important;
 color:#f08a2b!important;
 font-size:17px!important;
 font-weight:800!important;
 line-height:1!important;
}
.nav-label.nav-toggle:hover .nav-caret{
 background:transparent!important;
}
.nav-label.nav-toggle{
 min-height:38px!important;
 padding:6px 7px 6px 10px!important;
}

/* Mobile dark-theme leaks */
@media(max-width:640px){

 /* Slightly larger touch target while keeping the icon itself restrained */
 .nav-caret{
  flex-basis:26px!important;
  width:26px!important;
  height:28px!important;
  font-size:19px!important;
 }
 .nav-label.nav-toggle{
  min-height:42px!important;
  padding:5px 6px 5px 10px!important;
 }

 /* Optional Site Matters collapsible heading */
 .compact-details>summary{
  background:#0d2942!important;
  color:#eef5fa!important;
  border-bottom:1px solid #1a405d!important;
 }
 .compact-details>summary::after{
  color:#ff8a25!important;
 }
 .compact-details[open]>summary{
  background:#0d2942!important;
  color:#eef5fa!important;
 }
 .compact-details-body{
  background:#0a2137!important;
  color:#e8f1f7!important;
 }

 /* Day status / working-day strips */
 .day-status-banner{
  background:#0b2943!important;
  color:#dce8f1!important;
  border-color:#1c4564!important;
 }
 .day-status-banner.nonwork{
  background:#2d2419!important;
  color:#ffd49a!important;
  border-color:#75502a!important;
 }
 .day-status-inline{
  color:#a9bed0!important;
 }
 .day-status-inline.nonwork{
  color:#ffaf63!important;
 }

 /* Programme guidance rows */
 .hierarchy-step{
  background:#0b2943!important;
  color:#e6eef5!important;
  border-color:#1b4564!important;
  box-shadow:none!important;
 }
 .hierarchy-step b{
  color:#edf5fb!important;
 }
 .hierarchy-step .kpi-sub{
  color:#9db2c4!important;
 }
 .hierarchy-step strong{
  background:#ef7b19!important;
  color:#fff!important;
 }

 /* Sheet sub-tabs: no white active state on phone */
 .sheet-tabs{
  background:transparent!important;
 }
 .sheet-tabs button{
  background:#0b2943!important;
  color:#c5d5e1!important;
  border-color:#1c4564!important;
  box-shadow:none!important;
 }
 .sheet-tabs button.active{
  background:#ef7b19!important;
  color:#fff!important;
  border-color:#ef7b19!important;
  box-shadow:none!important;
 }

 /* Any nested tabs that still inherit desktop white */
 .tabs button.active{
  background:#103451!important;
  color:#fff!important;
 }
 .programme-subtabs button.active{
  background:#ef7b19!important;
  color:#fff!important;
 }

 /* White notices/rows that can be created by desktop status styles */
 .control-strip,
 .summary-meta,
 .database-banner,
 .request-head{
  background:#0b263e!important;
  color:#b9c9d6!important;
  border-color:#193d59!important;
 }

 /* Keep disabled form elements dark instead of browser-white */
 input:disabled,
 select:disabled,
 textarea:disabled{
  background:#0a243b!important;
  color:#8fa6ba!important;
  border-color:#183d59!important;
  opacity:1!important;
  -webkit-text-fill-color:#8fa6ba!important;
 }
}


/* v0.25.6.9 simplified Programme */
.programme-hierarchy-gantt .gantt-wbs-row{
 background:#f3f7fa;
 border-top:1px solid #d4e0e9;
 border-bottom:1px solid #dbe5ed;
}
.programme-hierarchy-gantt .gantt-wbs-label{
 padding-left:10px!important;
}
.programme-hierarchy-gantt .gantt-wbs-label b{
 color:#0a3158;
 font-weight:900;
}
.programme-hierarchy-gantt .gantt-activity-label{
 padding-left:28px!important;
}
.programme-hierarchy-gantt .gantt-wbs-bar{
 background:linear-gradient(90deg,#0a3158,#1e5c8d)!important;
 height:18px!important;
 margin-top:-3px;
}
.programme-hierarchy-gantt .gantt-activity-bar{
 background:linear-gradient(90deg,#ef7b19,#efa34f)!important;
}
.programme-sheet input,
.programme-sheet select{
 min-width:115px;
}
.programme-sheet input.wide{
 min-width:260px;
}
.programme-sheet td:nth-child(6){
 white-space:nowrap;
}
.programme-sheet th.pred-col,.programme-sheet td.pred-col{
 width:96px;
 min-width:96px;
 max-width:96px;
}
.programme-sheet .programme-predecessor{
 width:118px!important;
 min-width:118px!important;
 max-width:118px!important;
 font-size:11px;
}
.programme-sheet th.pred-col,.programme-sheet td.pred-col{
 width:126px;
 min-width:126px;
 max-width:126px;
}
.weekly-plan-sheet table{min-width:760px}
.monthly-plan-sheet table{min-width:1080px}
.weekly-plan-sheet input.num,.monthly-plan-sheet input.num{min-width:76px}
@media(max-width:640px){
 .programme-hierarchy-gantt .gantt-wbs-row{
  background:#0d2942!important;
  border-color:#1d4766!important;
 }
 .programme-hierarchy-gantt .gantt-wbs-label b{
  color:#f0f6fb!important;
 }
 .programme-hierarchy-gantt .gantt-activity-label{
  padding-left:22px!important;
 }
 .programme-hierarchy-gantt .gantt-wbs-bar{
  background:linear-gradient(90deg,#3579ae,#62a3d2)!important;
 }
 .programme-hierarchy-gantt .gantt-activity-bar{
  background:linear-gradient(90deg,#ef7b19,#f2a250)!important;
 }
}


/* ===========================================================
   v0.25.7.0 — Finance Phase 1
   =========================================================== */
.finance-run-card .grid.cards{margin-top:12px}
.finance-run-card .section-title>div:first-child{min-width:220px}
.finance-run-card input.num{min-width:110px}
@media(max-width:640px){
 .finance-run-card .section-title>div:last-child{
  width:100%;
  display:flex;
  overflow-x:auto;
  flex-wrap:nowrap;
  padding-bottom:3px;
 }
 .finance-run-card .section-title>div:last-child .btn{flex:0 0 auto}
}


/* ===========================================================
   v0.25.7.1 — Planning & Weekly/Monthly Plans
   =========================================================== */
.planning-plan-card .grid.cards{margin-top:12px}
.project-plan-sheet input{min-width:115px}
.project-plan-sheet input.wide{min-width:280px}
.file-chip{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.file-chip button{
 border:1px solid #cfdce7;
 background:#fff;
 color:#24435f;
 border-radius:6px;
 padding:4px 7px;
 cursor:pointer;
 font-size:11px;
 font-weight:800;
}
@media(max-width:640px){
 .planning-plan-card .section-title>div:last-child{
  width:100%;
  overflow-x:auto;
  display:flex;
  flex-wrap:nowrap;
  padding-bottom:3px;
 }
 .planning-plan-card .section-title>div:last-child .btn{flex:0 0 auto}
 .file-chip button{
  background:#0e3150;
  color:#eaf3f9;
  border-color:#23506f;
 }
}


/* v0.25.7.2 — restricted project user */
.access-scope-note{
 border-left:4px solid var(--accent);
 padding:10px 12px;
 background:#f7fafc;
 border-radius:8px;
 color:#526b80;
}
@media(max-width:640px){
 .access-scope-note{background:#0b2943;color:#a9bfd0}
}


/* ===========================================================
   v0.25.9.18 — Unified spreadsheets and numeric entry
   =========================================================== */
.number-format{font-variant-numeric:tabular-nums;text-align:right!important;letter-spacing:.01em}
.sheet,.programme-sheet,.project-plan-sheet,.material-grid,.plant-grid{
 border:1px solid #d9e3ec!important;border-radius:12px!important;background:#fff!important;
 box-shadow:0 6px 20px rgba(10,47,82,.055)!important;overflow:auto!important;
}
.sheet table,.programme-sheet table,.project-plan-sheet table,.material-grid table,.plant-grid table{
 border-collapse:separate!important;border-spacing:0!important;background:#fff!important;
}
.sheet th,.programme-sheet th,.project-plan-sheet th,.material-grid th,.plant-grid th{
 position:sticky;top:0;z-index:3;background:#eef4f9!important;color:#425b72!important;
 font-size:10px!important;font-weight:900!important;letter-spacing:.055em!important;
 border-bottom:1px solid #d2dee8!important;padding:10px 9px!important;white-space:nowrap;
}
.sheet td,.programme-sheet td,.project-plan-sheet td,.material-grid td,.plant-grid td{
 border-bottom:1px solid #e7edf2!important;padding:6px 7px!important;vertical-align:middle!important;
}
.sheet tbody tr:nth-child(even),.programme-sheet tbody tr:nth-child(even),.project-plan-sheet tbody tr:nth-child(even),.material-grid tbody tr:nth-child(even),.plant-grid tbody tr:nth-child(even){background:#fbfdff}
.sheet tbody tr:hover,.programme-sheet tbody tr:hover,.project-plan-sheet tbody tr:hover,.material-grid tbody tr:hover,.plant-grid tbody tr:hover{background:#f5f9fc!important}
.sheet input,.sheet select,.sheet textarea,.programme-sheet input,.programme-sheet select,.project-plan-sheet input,.project-plan-sheet select,.material-grid input,.material-grid select,.plant-grid input,.plant-grid select{
 min-height:34px;border:1px solid transparent!important;border-radius:7px!important;background:transparent!important;
 padding:7px 8px!important;font-size:11px!important;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease;
}
.sheet input:hover,.sheet select:hover,.sheet textarea:hover,.programme-sheet input:hover,.programme-sheet select:hover,.project-plan-sheet input:hover,.project-plan-sheet select:hover,.material-grid input:hover,.material-grid select:hover,.plant-grid input:hover,.plant-grid select:hover{background:#fff!important;border-color:#dbe5ed!important}
.sheet input:focus,.sheet select:focus,.sheet textarea:focus,.programme-sheet input:focus,.programme-sheet select:focus,.project-plan-sheet input:focus,.project-plan-sheet select:focus,.material-grid input:focus,.material-grid select:focus,.plant-grid input:focus,.plant-grid select:focus{
 background:#fff!important;border-color:#ef913f!important;box-shadow:0 0 0 3px rgba(239,123,25,.10)!important;outline:none!important;
}
.sheet tr.new-entry td{background:#fff8ef!important;border-top:2px solid #f2c89f!important}
.sheet tr.new-entry td:first-child{box-shadow:inset 3px 0 0 #ef7b19}
.sheet .linked-ledger-row td{background:#f8fafc;color:#52667a}
.sheet tfoot th,.sheet tfoot td{position:sticky;bottom:0;z-index:2;background:#edf4f9!important;border-top:1px solid #ccd9e4!important;font-weight:900}
.sheet-toolbar{padding:10px 12px;border:1px solid #dde6ee;border-radius:10px;background:#f8fbfd}
.sheet-select{border-color:#d6e1ea!important}
.finance-sheet table{min-width:880px}
.finance-sheet .num-cell{text-align:right;font-variant-numeric:tabular-nums}
.request-sheet{border-color:#d9e3ec!important;border-radius:12px!important;box-shadow:0 6px 20px rgba(10,47,82,.045)!important}
.request-head{background:#eef4f9!important;border-bottom-color:#d2dee8!important}
@media(max-width:640px){
 .sheet td,.programme-sheet td,.project-plan-sheet td,.material-grid td,.plant-grid td{padding:5px 6px!important}
 .sheet input,.sheet select,.programme-sheet input,.programme-sheet select,.project-plan-sheet input,.project-plan-sheet select{min-height:38px}
}

.unified-sheet{border:1px solid #d9e3ec!important;border-radius:12px!important;background:#fff!important;box-shadow:0 6px 20px rgba(10,47,82,.055)!important;overflow:auto!important}
.unified-sheet table{border-collapse:separate!important;border-spacing:0!important;background:#fff!important}
.unified-sheet th{position:sticky;top:0;z-index:3;background:#eef4f9!important;color:#425b72!important;font-size:10px!important;font-weight:900!important;letter-spacing:.055em!important;border-bottom:1px solid #d2dee8!important;padding:10px 9px!important;white-space:nowrap}
.unified-sheet td{border-bottom:1px solid #e7edf2!important;padding:6px 7px!important;vertical-align:middle!important}
.unified-sheet tbody tr:nth-child(even){background:#fbfdff}.unified-sheet tbody tr:hover{background:#f5f9fc!important}
.unified-sheet input,.unified-sheet select,.unified-sheet textarea{min-height:34px;border:1px solid transparent!important;border-radius:7px!important;background:transparent!important;padding:7px 8px!important;font-size:11px!important;transition:border-color .12s ease,background .12s ease,box-shadow .12s ease}
.unified-sheet input:hover,.unified-sheet select:hover,.unified-sheet textarea:hover{background:#fff!important;border-color:#dbe5ed!important}
.unified-sheet input:focus,.unified-sheet select:focus,.unified-sheet textarea:focus{background:#fff!important;border-color:#ef913f!important;box-shadow:0 0 0 3px rgba(239,123,25,.10)!important;outline:none!important}
.unified-sheet tr.new-entry td{background:#fff8ef!important;border-top:2px solid #f2c89f!important}.unified-sheet tr.new-entry td:first-child{box-shadow:inset 3px 0 0 #ef7b19}


/* v0.25.9.26.2 — Storage & Sync Reliability Hotfix */
/* v0.25.9.19 — Phase 1 UX foundation */
.portal-utility-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-7px 0 16px;position:relative;z-index:45}
.portal-breadcrumbs{display:flex;align-items:center;gap:5px;min-width:0;overflow:auto;scrollbar-width:none;white-space:nowrap;padding:2px 0}
.portal-breadcrumbs::-webkit-scrollbar{display:none}
.portal-crumb{border:0;background:transparent;color:#72869a;font-size:11px;font-weight:800;padding:5px 4px;border-radius:6px;cursor:pointer;white-space:nowrap}
.portal-crumb:hover{background:#edf3f8;color:var(--navy)}
.portal-crumb.current{color:var(--navy);cursor:default}
.portal-crumb-sep{color:#a5b2bf;font-size:11px}
.portal-utility-right{display:flex;align-items:center;gap:9px;margin-left:auto;min-width:0}
.portal-save-state{display:inline-flex;align-items:center;gap:6px;border:1px solid #d9e4ed;background:#fff;color:#5f7488;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:900;white-space:nowrap;box-shadow:0 2px 7px rgba(8,43,82,.04)}
.portal-save-state:before{content:"";width:7px;height:7px;border-radius:50%;background:#22a06b;box-shadow:0 0 0 3px rgba(34,160,107,.10)}
.portal-save-state.pending:before{background:#d58b00;box-shadow:0 0 0 3px rgba(213,139,0,.10)}
.portal-save-state.error:before{background:#c74444;box-shadow:0 0 0 3px rgba(199,68,68,.10)}
.portal-search-shell{position:relative;width:min(360px,34vw);min-width:240px}
.portal-search-box{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #d8e3ed;border-radius:10px;padding:7px 9px;box-shadow:0 3px 10px rgba(8,43,82,.04)}
.portal-search-box:focus-within{border-color:#8aaac7;box-shadow:0 0 0 3px rgba(23,104,173,.08)}
.portal-search-box .ui-icon{color:#60778d;flex:0 0 auto}
.portal-search-box input{border:0!important;box-shadow:none!important;outline:0!important;background:transparent!important;padding:0!important;min-height:24px;width:100%;font-size:12px}
.portal-search-box kbd{font:800 9px/1 system-ui,sans-serif;color:#718397;background:#f2f6f9;border:1px solid #dce5ed;border-radius:5px;padding:4px 5px;white-space:nowrap}
.portal-search-panel{display:none;position:absolute;right:0;top:calc(100% + 7px);width:min(520px,88vw);max-height:min(62vh,520px);overflow:auto;background:#fff;border:1px solid #d9e3ec;border-radius:12px;box-shadow:0 18px 50px rgba(5,30,55,.20);padding:7px;z-index:150}
.portal-search-panel.open{display:block}
.portal-search-hint{padding:13px 12px;color:#74879a;font-size:11px}
.portal-search-result{width:100%;border:0;background:transparent;text-align:left;padding:10px 11px;border-radius:9px;cursor:pointer;display:grid;grid-template-columns:1fr auto;gap:5px 10px;color:#1d3d5a}
.portal-search-result:hover,.portal-search-result.active{background:#f2f7fb}
.portal-search-result strong{font-size:12px;color:var(--navy)}
.portal-search-result small{grid-column:1/2;color:#74879a;font-size:10px;line-height:1.35}
.portal-search-type{align-self:start;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:#476782;background:#eaf2f8;border-radius:999px;padding:4px 7px}
.portal-search-footer{border-top:1px solid #e7edf2;margin-top:5px;padding:8px 10px;color:#8191a1;font-size:9px}
.portal-toast{position:fixed;right:22px;bottom:22px;z-index:250;background:#0a3158;color:#fff;border-radius:10px;padding:10px 13px;font-size:11px;font-weight:800;box-shadow:0 12px 30px rgba(3,26,48,.24);opacity:0;transform:translateY(8px);pointer-events:none;transition:.18s}
.portal-toast.show{opacity:1;transform:translateY(0)}

/* Spreadsheet interaction consistency */
.unified-sheet{position:relative}
.unified-sheet tr:focus-within td{background:#fffaf3!important}
.unified-sheet td:focus-within{box-shadow:inset 0 0 0 1px rgba(239,123,25,.22)}
.sheet-quick-tools{display:flex;align-items:center;gap:8px;position:sticky;left:0;z-index:7;width:max-content;min-width:min(100%,520px);padding:7px 8px;margin:0 0 6px;background:#f6f9fc;border:1px solid #e0e8ef;border-radius:9px}
.sheet-quick-tools input{min-height:30px!important;width:220px!important;background:#fff!important;border:1px solid #d9e4ed!important;padding:5px 8px!important}
.sheet-quick-tools span{font-size:9px;color:#72869a;font-weight:800;white-space:nowrap}
.sheet-paste-note{font-size:9px!important;color:#7f8f9f!important}
@media(min-width:781px){
 .unified-sheet thead th:first-child{position:sticky!important;left:0;z-index:6!important;box-shadow:1px 0 0 #d7e1e9}
 .unified-sheet tbody td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 #e2e9ef}
 .unified-sheet tbody tr:nth-child(even) td:first-child{background:#fbfdff}
 .unified-sheet tbody tr:hover td:first-child,.unified-sheet tbody tr:focus-within td:first-child{background:#fffaf3!important}
}

@media(max-width:900px){
 .portal-utility-bar{align-items:flex-start;flex-direction:column;gap:8px;margin-top:-5px}
 .portal-utility-right{width:100%;margin-left:0;flex-wrap:wrap}
 .portal-search-shell{order:-1;width:100%;min-width:0}
 .portal-save-state{margin-left:auto}
 .portal-breadcrumbs{width:100%}
 .portal-search-box kbd{display:none}
}
@media(max-width:640px){
 .portal-utility-bar{z-index:70}
 .portal-search-box{background:#0c263d;border-color:#24445d}
 .portal-search-box input{color:#eaf2f9!important}
 .portal-search-box input::placeholder{color:#89a0b5}
 .portal-search-panel{background:#0b2238;border-color:#24445d;color:#eaf2f9}
 .portal-search-result{color:#dce8f2}.portal-search-result strong{color:#fff}.portal-search-result small{color:#9fb1c1}.portal-search-result:hover,.portal-search-result.active{background:#12334e}
 .portal-search-type{background:#173b58;color:#a9d4f5}.portal-search-footer{border-color:#1d3b54;color:#8fa5b7}
 .portal-save-state{background:#0c263d;border-color:#24445d;color:#b6c8d7}
 .portal-crumb{color:#8fa5b7}.portal-crumb.current{color:#eaf2f9}.portal-crumb:hover{background:#102c45;color:#fff}
 .sheet-quick-tools{background:#0d2942;border-color:#24445d}.sheet-quick-tools input{background:#0b2238!important;color:#eaf2f9!important;border-color:#2a4b65!important}
}


/* v0.25.9.22 — print isolation retained from v0.25.9.20 */
@media print{
 body.printing> *:not(#printArea){display:none!important}
 body.printing #printArea{display:block!important;position:static!important;inset:auto!important;width:100%!important;height:auto!important;background:#fff!important}
 body.printing .mobile-start,body.printing .mobile-top,body.printing .portal-utility-bar,body.printing .portal-toast,body.printing .auth-gate{display:none!important}
 body.printing .print-doc{box-shadow:none!important}
}

/* v0.25.9.24 persistent column resizing */
.unified-sheet table th,.table-wrap table th{position:relative}
.portal-col-resizer{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;touch-action:none;z-index:5}
.portal-col-resizer:after{content:"";position:absolute;top:22%;bottom:22%;left:3px;width:1px;background:#c5d2dc;opacity:.25}
.unified-sheet table th:hover>.portal-col-resizer:after,.table-wrap table th:hover>.portal-col-resizer:after{opacity:1;background:#7b96aa}
.portal-col-resizing{user-select:none!important;cursor:col-resize!important}
/* Keep guidance compact. Full workflows belong in the screens, not long instruction banners. */
.control-strip span,.section-title>div>span,.notice>div{line-height:1.35}
.control-strip span{max-width:min(720px,72vw);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.control-strip span{max-width:78vw}}

/* v0.25.9.25 programme print refinement */
@media print{
 .print-doc table.print-program-table{table-layout:fixed!important;width:100%!important;font-size:6.2px!important}
 .print-doc table.print-program-table th,.print-doc table.print-program-table td{padding:2px 2.5px!important;line-height:1.25!important;word-break:break-word!important;overflow-wrap:anywhere!important}
 .print-doc table.print-program-table thead{display:table-header-group!important}
 .print-doc table.print-program-table tr{break-inside:avoid!important;page-break-inside:avoid!important}
 .print-doc table.print-program-table tr.print-program-group td{background:#eaf0f5!important;font-weight:800!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
 .print-doc .print-gantt-wrap{width:100%!important;overflow:visible!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
 .print-doc .print-gantt-wrap .gantt{width:100%!important;overflow:visible!important;border-radius:0!important}
 .print-doc .print-gantt-wrap .gantt-head,.print-doc .print-gantt-wrap .gantt-row{min-width:0!important;grid-template-columns:42mm minmax(0,1fr)!important}
 .print-doc .print-gantt-wrap .gantt-head>div,.print-doc .print-gantt-wrap .gantt-row>div{padding:2.5px!important;font-size:6.2px!important}
 .print-doc .print-gantt-wrap .gantt-timeline{min-height:24px!important;background-size:auto!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
 .print-doc .print-gantt-wrap .gantt-bar{top:5px!important;height:14px!important;min-width:2px!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
 .print-doc .print-gantt-wrap .gantt-label{font-size:5.5px!important;line-height:1.1!important;padding:2px!important}
 .print-doc .print-gantt-wrap .gantt-row{break-inside:avoid!important;page-break-inside:avoid!important}
 .print-doc .print-page-break{break-before:page!important;page-break-before:always!important}
}

/* Production reliability patch R7.1 */
.programme-sheet th:first-child,.programme-sheet td:first-child{width:38px!important;min-width:38px!important;max-width:38px!important;text-align:center;padding-left:4px!important;padding-right:4px!important}
.programme-sheet th:first-child input[type=checkbox],.programme-sheet td:first-child input[type=checkbox]{width:16px!important;height:16px!important;min-width:16px!important;padding:0!important;margin:0 auto!important}
@media print{body:not(.printing) .sidebar,body:not(.printing) .topbar,body:not(.printing) #mobileMenuButton,body:not(.printing) .no-print{display:none!important}body:not(.printing) .app{display:block!important}body:not(.printing) .main{padding:0!important}body:not(.printing) button{display:none!important}}


/* Site Operations resource refinements */
.manpower-no-col,.manpower-no-cell{width:54px;min-width:54px;max-width:54px}
.manpower-no-input{width:46px!important;min-width:46px!important;max-width:46px!important;padding-left:5px!important;padding-right:5px!important}
.p7-resource-section h4{margin:4px 0 10px}
.p7-resource-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.p7-machinery-title{margin-top:18px}
.p7-machinery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.p7-resource-button{appearance:none;width:100%;text-align:left;cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;align-items:flex-start}
.p7-resource-button .kpi-label,.p7-resource-button .kpi-sub{display:block}
.p7-machinery-report{grid-column:1/-1}
@media(max-width:900px){.p7-resource-grid,.p7-machinery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.p7-resource-grid,.p7-machinery-grid{grid-template-columns:1fr}.manpower-no-col,.manpower-no-cell{width:48px;min-width:48px;max-width:48px}.manpower-no-input{width:40px!important;min-width:40px!important;max-width:40px!important}}
