:root{--ink:#17201b;--muted:#708077;--line:#e4e9e4;--paper:#f6f8f5;--card:#fff;--green:#237b53;--soft:#e4f3e8;--amber:#fff0d9;--red:#ffe7e3;--shadow:0 14px 40px #17201b0c}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px Inter,system-ui,-apple-system,Segoe UI,sans-serif}.app{display:grid;grid-template-columns:230px 1fr;min-height:100vh}.side{background:var(--ink);color:#dbe7de;padding:22px 16px;display:flex;flex-direction:column}.brand{font-size:20px;font-weight:850;letter-spacing:-.05em;display:flex;align-items:center;gap:9px}.mark{width:34px;height:34px;border-radius:11px;background:#a9df78;color:#173322;display:grid;place-items:center}.nav{display:grid;gap:5px;margin-top:35px}.nav button,.admin{border:0;background:transparent;color:#b9c9bd;text-align:left;padding:11px 12px;border-radius:10px;font:inherit;cursor:pointer}.nav button.active,.nav button:hover,.admin:hover{background:#2a3b30;color:#fff}.side-foot{margin-top:auto;border-top:1px solid #33463a;padding:16px 10px;color:#9cac9f;line-height:1.5;font-size:12px}.main{max-width:1500px;width:100%;margin:auto;padding:28px 34px 50px}.head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.kicker{font-size:11px;color:var(--green);font-weight:800;text-transform:uppercase;letter-spacing:.14em}.head h1{font-size:34px;letter-spacing:-.055em;margin:7px 0 4px}.sub,.muted{color:var(--muted)}.actions{display:flex;gap:9px;align-items:center}.btn,.select,.search{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:10px 12px;font:inherit}.btn{cursor:pointer;font-weight:750}.primary{background:var(--green);border-color:var(--green);color:#fff}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:26px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.metric{padding:18px}.label{font-size:11px;color:var(--muted);font-weight:700}.value{font-size:27px;font-weight:850;letter-spacing:-.05em;margin:8px 0}.positive{color:var(--green);font-size:12px}.layout{display:grid;grid-template-columns:1.25fr 1fr;gap:14px;margin-top:14px}.panel{padding:20px}.panel h2{margin:0 0 16px;font-size:16px;letter-spacing:-.03em}.bar{display:grid;grid-template-columns:130px 1fr 70px;gap:10px;align-items:center;margin:15px 0;font-size:13px}.track{height:9px;background:#edf1ed;border-radius:99px;overflow:hidden}.fill{height:100%;background:var(--green);border-radius:99px}.right{text-align:right;font-weight:750}.activity{display:grid}.activity-item{display:grid;grid-template-columns:34px 1fr auto;gap:11px;align-items:center;padding:12px 0;border-top:1px solid var(--line)}.activity-item:first-child{border-top:0;padding-top:0}.ico{width:34px;height:34px;border-radius:11px;background:var(--soft);display:grid;place-items:center}.activity-item strong{font-size:13px;display:block}.activity-item small{font-size:11px;color:var(--muted)}.view{display:none}.view.show{display:block}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:24px 0 15px}.toolbar h2{margin:0;font-size:19px;letter-spacing:-.04em}.search{min-width:220px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.site-card{padding:18px}.site-card h3{margin:0 0 3px;font-size:17px}.site-card .location{font-size:12px;color:var(--muted)}.site-stat{display:flex;justify-content:space-between;margin-top:15px;font-size:12px}.progress{height:8px;background:#eef1ee;border-radius:99px;overflow:hidden;margin:8px 0 13px}.progress span{display:block;height:100%;background:var(--green)}.contact{display:flex;gap:7px;margin-top:15px;flex-wrap:wrap}.contact a,.small-action{color:var(--green);font-size:12px;text-decoration:none;border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fff}.table{width:100%;border-collapse:collapse}.table th{text-align:left;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:0 4px 10px 0}.table td{border-top:1px solid var(--line);padding:12px 4px 12px 0;vertical-align:middle}.pill{display:inline-block;padding:5px 8px;border-radius:99px;background:var(--soft);color:var(--green);font-size:11px;font-weight:750}.pill.amber{background:var(--amber);color:#9a5b18}.pill.red{background:var(--red);color:#a4493d}.tabs{display:flex;gap:6px;margin-bottom:15px;flex-wrap:wrap}.tabs button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 11px;font:inherit;cursor:pointer}.tabs button.active{background:var(--ink);color:#fff;border-color:var(--ink)}.kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:14px}.mini{padding:15px}.mini .value{font-size:21px}.row{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding:12px 0}.row:first-child{border-top:0}.form{display:grid;gap:12px;margin-top:17px}.form label{font-size:12px;color:var(--muted);font-weight:700}.form input,.form select,.form textarea{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:9px;padding:10px;font:inherit;background:#fff}.form textarea{min-height:78px;resize:vertical}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.modal{position:fixed;inset:0;background:#10221977;display:none;align-items:center;justify-content:center;padding:18px;z-index:10}.modal.open{display:flex}.dialog{width:min(600px,100%);background:#fff;border-radius:18px;padding:22px;box-shadow:0 30px 90px #0003;max-height:90vh;overflow:auto}.dialog h2{margin:0 0 4px}.dialog-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.toast{position:fixed;right:20px;bottom:20px;background:var(--ink);color:#fff;padding:12px 15px;border-radius:10px;display:none;z-index:20}.toast.show{display:block}.roster{display:grid;gap:8px}.worker-row{display:grid;grid-template-columns:24px 1fr 125px 100px;gap:8px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:9px}.worker-row select{border:1px solid var(--line);border-radius:7px;padding:6px}@media(max-width:950px){.app{grid-template-columns:1fr}.side{display:none}.main{padding:22px 16px}.grid{grid-template-columns:repeat(2,1fr)}.layout{grid-template-columns:1fr}.cards{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.head{display:block}.actions{margin-top:15px}.grid,.cards,.kpi-row{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.search{min-width:0;width:100%}.worker-row{grid-template-columns:24px 1fr 90px}.worker-row .rate{display:none}}

/* Modern interaction layer */
:root{--green-deep:#176542;--lime:#b4ed79;--glow:#b4ed7938;--shadow-soft:0 18px 45px #13251b12}
button,a,input,select,textarea{transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease,opacity .2s ease}
.side{position:relative;overflow:hidden;background:linear-gradient(160deg,#101c16 0%,#15261d 100%);box-shadow:12px 0 36px #10221918}
.side:after{content:"";position:absolute;inset:auto -80px 80px auto;width:180px;height:180px;border-radius:50%;background:#8dde5620;filter:blur(3px);pointer-events:none}
.brand{position:relative;z-index:1;letter-spacing:-.04em}.brand span:last-child{font-size:19px}
.mark{box-shadow:0 0 0 6px #a9df7810,0 8px 20px #0003;animation:brand-pulse 4s ease-in-out infinite}
.nav{position:relative;z-index:1;gap:7px;margin-top:42px}.nav button,.admin{position:relative;display:flex;align-items:center;gap:11px;padding:12px 13px;color:#b9c9bd;border:1px solid transparent;overflow:hidden}
.nav button:before,.admin:before{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:#ffffff0c;color:#9bb2a2;font-size:13px;font-weight:800;content:""}
.nav button[data-icon="overview"]:before{content:"⌂"}.nav button[data-icon="sites"]:before{content:"▦"}.nav button[data-icon="operations"]:before{content:"◈"}.nav button[data-icon="reports"]:before{content:"▤"}.admin[data-icon="settings"]:before{content:"⚙"}
.nav button:after,.admin:after{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 4px 4px 0;background:var(--lime);transform:scaleY(0);transition:transform .2s ease}
.nav button.active,.nav button:hover,.admin:hover{background:#ffffff0d;border-color:#ffffff10;color:#fff;transform:translateX(2px)}.nav button.active:before,.nav button:hover:before,.admin:hover:before{background:#b4ed7820;color:var(--lime)}.nav button.active:after{transform:scaleY(1)}
.admin{margin-top:16px}.side-foot{position:relative;z-index:1;border-color:#ffffff16}.side-foot b{color:#dcebdc}
.main{animation:page-in .45s ease both}.head h1{font-size:36px}.head .sub{max-width:620px}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;padding:11px 15px;box-shadow:0 1px 0 #fff inset,0 5px 14px #17201b0a}.btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #17201b18}.btn:active{transform:translateY(0) scale(.98);box-shadow:0 2px 7px #17201b12}.primary{background:linear-gradient(135deg,#27865b,#1e704c);box-shadow:0 8px 18px #237b5330}.primary:hover{background:linear-gradient(135deg,#309967,#237b53);box-shadow:0 11px 24px #237b5345}.btn-icon{width:18px;height:18px;display:grid;place-items:center;border:1px solid currentColor;border-radius:6px;font-size:13px;line-height:1}
.small-action,.contact a{display:inline-flex;align-items:center;gap:6px;border-radius:9px;padding:8px 10px;box-shadow:0 1px 0 #fff inset}.small-action:hover,.contact a:hover{background:var(--soft);border-color:#b9dcc2;transform:translateY(-1px)}
.tabs button{border-radius:10px;padding:10px 13px}.tabs button:hover{transform:translateY(-1px);border-color:#b9dcc2}.tabs button.active{background:linear-gradient(135deg,#17251e,#263a2e);box-shadow:0 6px 14px #17201b1c}
.card{box-shadow:var(--shadow-soft);transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.card:hover{transform:translateY(-3px);box-shadow:0 22px 50px #13251b18;border-color:#d0ddd1}.site-card{animation:card-in .45s ease both}.site-card:nth-child(2){animation-delay:.06s}.site-card:nth-child(3){animation-delay:.12s}.progress span,.fill{background:linear-gradient(90deg,#237b53,#75c85e);box-shadow:0 0 12px #75c85e55}
.search:focus,.form input:focus,.form select:focus,.form textarea:focus{outline:0;border-color:#79bd8b;box-shadow:0 0 0 4px #79bd8b22}.modal.open .dialog{animation:dialog-in .24s ease both}.toast.show{animation:toast-in .25s ease both}
@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes card-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes dialog-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes brand-pulse{0%,100%{box-shadow:0 0 0 6px #a9df7810,0 8px 20px #0003}50%{box-shadow:0 0 0 9px #a9df7818,0 8px 22px #0003}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Lucide-style SVG icon system */
.nav button:before,.admin:before{display:none}
.nav-icon{width:28px;height:28px;display:grid;place-items:center;border:1px solid #ffffff12;border-radius:9px;background:#ffffff09;color:#9bb2a2;flex:0 0 28px;transition:background .2s ease,color .2s ease,transform .2s ease}
.nav-svg{width:15px;height:15px;display:block}.nav button.active .nav-icon,.nav button:hover .nav-icon,.admin:hover .nav-icon{background:#b4ed7820;color:var(--lime);transform:scale(1.06)}
.nav button span:last-child,.admin span:last-child{white-space:nowrap}
.brand .mark{font-family:Inter,system-ui,sans-serif}
.contact-icon{display:grid;place-items:center;width:16px;height:16px}.contact-svg{width:15px;height:15px;display:block}.contact a:hover .contact-icon,.small-action:hover .contact-icon{transform:scale(1.08)}
.site-card{position:relative}.site-status{display:inline-flex;position:absolute;top:18px;right:18px;margin:0;padding:5px 9px}.site-status.status-active{background:#e3f5e8;color:#24754c}.site-status.status-on-hold{background:#fff0d8;color:#9a5b18}.site-status.status-completed{background:#e6edf7;color:#45658b}.danger-action{color:#a34b48;border-color:#f0d5d2}.danger-action:hover{background:#fff0ee;border-color:#e3aaa5;color:#8b3734}
.site-stage-progress{margin-top:14px;color:var(--muted);font-size:11px}.site-stage-progress>div{display:flex;justify-content:space-between;gap:8px}.site-stage-progress b{color:var(--green)}.site-stage-progress>i{display:block;height:7px;margin-top:6px;border-radius:99px;background:#edf2ed;overflow:hidden}.site-stage-progress em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#237b53,#75c85e);box-shadow:0 0 10px #75c85e55}
.site-detail-fields{display:grid;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.site-detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}.site-detail-item{display:grid;gap:7px;min-height:68px;padding:13px;background:#fff}.site-detail-item b{font-size:13px;line-height:1.35}.site-details-panel .panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}@media(max-width:700px){.site-detail-grid{grid-template-columns:repeat(2,1fr)}}
.budget-balance-card .value{margin-bottom:6px}.budget-expense-line{display:flex;justify-content:space-between;gap:12px;margin:10px 0 8px;color:#66776d;font-size:12px}.budget-expense-line b{color:#15231c}.budget-progress{height:9px;border-radius:999px;background:#e8eeea;overflow:hidden}.budget-progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#177c55,#8dce61);transition:width .35s ease}.budget-progress-meta{display:flex;justify-content:space-between;gap:12px;margin-top:9px;color:#177c55;font-size:12px}.budget-progress-meta b{color:#15231c}
.site-metric-button{border:1px solid var(--line);text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.site-metric-button:hover{transform:translateY(-2px);border-color:#9ecfb2;box-shadow:0 14px 28px #183d2d12}.site-snapshot-panel{margin-top:14px}.snapshot-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.snapshot-grid>div{display:grid;gap:6px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fbfdfb}.snapshot-grid b{font-size:16px}.site-record-dock{position:fixed;right:28px;bottom:28px;z-index:100;display:grid;justify-items:end;gap:10px}.site-record-toggle{box-shadow:0 12px 28px #176b4a35}.site-record-menu{order:-1;display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 18px 40px #17352a20;animation:record-menu-up .2s ease both}.site-record-menu[hidden]{display:none!important}.site-record-menu .btn{white-space:nowrap}@keyframes record-menu-up{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@media(max-width:700px){.snapshot-grid{grid-template-columns:1fr}.site-record-dock{right:16px;bottom:16px}}
.site-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.status-callout{display:grid;gap:5px;padding:11px 0;border-top:1px solid var(--line)}.status-callout:first-of-type{border-top:0;padding-top:0}.status-callout b{font-size:14px;line-height:1.4}.site-section-total{border-top:1px solid var(--line);margin-top:8px;padding-top:10px}.financial-list{display:grid;gap:0}.financial-list>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line);font-size:13px}.financial-list>div:first-child{border-top:0;padding-top:0}.financial-total{margin-top:5px;color:var(--green);font-weight:750}@media(max-width:700px){.site-control-grid{grid-template-columns:1fr}}
.site-workspace-view .grid>.metric:nth-child(1){background:linear-gradient(145deg,#fff 0%,#f1f8ff 100%);border-color:#d6e5f4}.site-workspace-view .grid>.metric:nth-child(2){background:linear-gradient(145deg,#fff 0%,#f2fbf3 100%);border-color:#d4ead7}.site-workspace-view .grid>.metric:nth-child(3){background:linear-gradient(145deg,#fff 0%,#fff8ed 100%);border-color:#f2e2c7}.site-workspace-view .grid>.metric:nth-child(4){background:linear-gradient(145deg,#fff 0%,#f8f1ff 100%);border-color:#e4d8f1}.site-workspace-view .site-control-grid>.panel:nth-child(1){border-top:3px solid #68a7d8}.site-workspace-view .site-control-grid>.panel:nth-child(2){border-top:3px solid #e2b75c}.site-workspace-view .site-control-grid>.panel:nth-child(3){border-top:3px solid #6bb88a}.site-workspace-view .site-control-grid>.panel:nth-child(4){border-top:3px solid #a580d2}.site-details-modal{position:fixed;inset:0;z-index:50;display:flex;justify-content:flex-end;align-items:stretch;background:#10221955}.site-details-modal[hidden]{display:none}.site-details-dialog{width:min(560px,92vw);height:100%;max-height:100vh;overflow:auto;padding:28px;border:0;border-left:1px solid #d9e4db;border-radius:24px 0 0 24px;background:linear-gradient(180deg,#ffffff 0%,#f8fbf8 100%);box-shadow:-20px 0 70px #10221925;animation:details-drawer-in .28s ease both}.site-details-dialog .panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}.site-details-dialog .panel-head h2{font-size:22px;margin:0}.site-details-dialog .site-detail-grid{background:#dfe9e1}.site-details-dialog .site-detail-item{background:#fbfdfb}@keyframes details-drawer-in{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:none}}@media(max-width:700px){.site-details-dialog{width:100%;border-radius:20px 20px 0 0;align-self:flex-end;height:auto;max-height:88vh}.site-details-modal{align-items:flex-end}}
.site-title-link{display:block;width:max-content;max-width:100%;padding:0;border:0;background:transparent;color:var(--ink);font:inherit;font-size:17px;font-weight:800;text-align:left;cursor:pointer}.site-title-link:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;color:var(--green)}
.overview-head{align-items:center}.overview-head .actions{align-items:center}.overview-filter-label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;font-weight:750}.overview-filter{min-width:150px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 30px 10px 11px;color:var(--ink);font:inherit}.overview-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:26px}.overview-metric{display:grid;gap:4px;padding:19px;text-align:left;cursor:pointer;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.overview-metric:hover{transform:translateY(-3px);box-shadow:0 18px 35px #13251b18}.overview-metric .value{display:block;margin:7px 0 1px}.metric-blue{background:linear-gradient(145deg,#fff,#f1f7fd);border-color:#d8e6f2}.metric-green{background:linear-gradient(145deg,#fff,#f1faf3);border-color:#d4ead8}.metric-amber{background:linear-gradient(145deg,#fff,#fff8ed);border-color:#f0e1c7}.metric-purple{background:linear-gradient(145deg,#fff,#f8f1ff);border-color:#e5d8f2}.overview-grid{display:grid;gap:14px;margin-top:14px}.overview-grid-top{grid-template-columns:1.25fr 1fr}.overview-grid-middle,.overview-grid-bottom{grid-template-columns:1fr 1fr}.overview-panel{padding:20px;overflow:hidden}.overview-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.overview-panel-head h2{margin:0;font-size:17px;letter-spacing:-.035em}.overview-panel-head p{font-size:12px;margin:5px 0 0}.overview-chart-kpi{font-size:13px;font-weight:800;color:var(--green);white-space:nowrap}.overview-site-table-head{display:grid;grid-template-columns:minmax(150px,1.5fr) 100px 75px 100px 55px;gap:10px;padding:0 12px 8px;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.07em}.overview-site-row{width:100%;display:grid;grid-template-columns:minmax(150px,1.5fr) 100px 75px 100px 55px;gap:10px;align-items:center;padding:13px 12px;border:0;border-top:1px solid var(--line);background:transparent;text-align:left;color:var(--ink);font:inherit;cursor:pointer}.overview-site-row:hover{background:#f8fbf8}.overview-site-row span:first-child{display:grid;gap:4px}.overview-site-row strong{font-size:13px}.overview-site-row small{color:var(--muted);font-size:11px}.overview-site-status{justify-self:start;border-radius:99px;padding:5px 8px;font-size:10px;font-weight:800;background:#e3f5e8;color:#24754c}.overview-site-status.on-hold{background:var(--amber);color:#9a5b18}.overview-site-status.completed{background:#e6edf7;color:#45658b}.overview-site-number,.overview-site-budget{display:grid;gap:3px}.overview-site-number b,.overview-site-budget b{font-size:12px}.overview-donut-row{display:flex;align-items:center;gap:22px;margin:6px 0 18px}.overview-donut{width:154px;height:154px;flex:0 0 154px;border-radius:50%;display:grid;place-items:center}.overview-donut>div{width:92px;height:92px;border-radius:50%;background:#fff;display:grid;place-items:center;align-content:center;box-shadow:0 4px 15px #17201b12}.overview-donut strong{font-size:15px}.overview-donut small{color:var(--muted);font-size:11px;margin-top:2px}.overview-legend{display:grid;gap:11px;width:100%}.overview-legend span{display:grid;grid-template-columns:12px 1fr auto;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.overview-legend i{width:10px;height:10px;border-radius:50%}.overview-legend b{color:var(--ink);font-size:12px}.legend-green{background:#2f8a62}.legend-amber{background:#db9d41}.legend-purple{background:#9877c7}.legend-grey{background:#dbeadf}.overview-budget-track{height:9px;background:#e9f0eb;border-radius:99px;overflow:hidden}.overview-budget-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2d8b62,#9bd16e);transition:width .35s ease}.overview-budget-meta{display:flex;justify-content:space-between;margin-top:9px;font-size:12px;color:var(--muted)}.overview-budget-meta b{color:var(--green)}.overview-bars{height:190px;display:flex;align-items:flex-end;gap:14px;padding:8px 8px 0;border-bottom:1px solid var(--line)}.overview-bar-col{height:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px;min-width:0}.overview-bar-col small{color:var(--muted);font-size:10px;white-space:nowrap}.overview-bar-value{font-size:10px;color:var(--muted);min-height:14px;white-space:nowrap}.overview-bar-track{height:130px;width:100%;max-width:42px;display:flex;align-items:flex-end;background:#f1f5f1;border-radius:8px 8px 2px 2px;overflow:hidden}.overview-bar-track i{display:block;width:100%;min-height:4px;border-radius:7px 7px 0 0;background:linear-gradient(180deg,#63bd79,#287b59);transition:height .35s ease}.overview-ops-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.overview-ops-grid>div{display:grid;gap:3px;padding:13px 10px;background:#f8fbf8;border-radius:10px}.overview-ops-grid strong{font-size:20px;letter-spacing:-.04em}.overview-ops-grid span{font-size:11px;color:var(--muted)}.overview-action-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.overview-action-list button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 8px;color:var(--green);font:inherit;font-size:11px;font-weight:750;cursor:pointer}.overview-action-list button:hover{background:var(--soft);border-color:#b9dcc2}.overview-alert-count{min-width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:var(--amber);color:#9a5b18;font-weight:800;font-size:12px}.overview-alert-list{display:grid;gap:10px}.overview-alert{display:flex;gap:10px;padding:11px;border-radius:11px;background:#f8fbf8}.overview-alert.red{background:#fff4f1}.overview-alert.amber{background:#fff9ef}.overview-alert.blue{background:#f1f7fd}.overview-alert-dot{width:9px;height:9px;flex:0 0 9px;margin-top:4px;border-radius:50%;background:#4aa270}.overview-alert.red .overview-alert-dot{background:#c55b4e}.overview-alert.amber .overview-alert-dot{background:#db9d41}.overview-alert.blue .overview-alert-dot{background:#5b98c5}.overview-alert strong{font-size:12px}.overview-alert p{margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.4}@media(max-width:1100px){.overview-metrics{grid-template-columns:repeat(2,1fr)}.overview-grid-top,.overview-grid-middle,.overview-grid-bottom{grid-template-columns:1fr}}@media(max-width:700px){.overview-head .actions{display:grid;grid-template-columns:1fr}.overview-filter-label{justify-content:space-between}.overview-filter{flex:1}.overview-metrics{grid-template-columns:1fr 1fr}.overview-site-table-head{display:none}.overview-site-row{grid-template-columns:1fr auto;gap:8px;padding:14px 5px}.overview-site-row .overview-site-status{grid-column:2;grid-row:1}.overview-site-row .overview-site-number,.overview-site-row .overview-site-budget{grid-row:2}.overview-site-row .overview-site-number:nth-of-type(3){grid-column:2}.overview-site-row .overview-site-budget{grid-column:1}.overview-donut-row{align-items:flex-start;gap:14px}.overview-donut{width:120px;height:120px;flex-basis:120px}.overview-donut>div{width:76px;height:76px}.overview-donut strong{font-size:12px}.overview-action-list{grid-template-columns:1fr}.overview-panel{padding:16px}}@media(max-width:480px){.overview-metrics{grid-template-columns:1fr}.overview-ops-grid{grid-template-columns:1fr 1fr}.overview-ops-grid>div:last-child{grid-column:1/-1}}
.site-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px;margin-top:16px;padding-top:13px;border-top:1px solid var(--line)}.site-summary-grid div{display:grid;gap:3px;min-width:0}.site-summary-grid span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.site-summary-grid b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:560px){.site-summary-grid{gap:8px}}
.work-status-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;padding:13px 0;border-top:1px solid var(--line)}.work-status-row:first-of-type{border-top:0}.work-status-row>div{display:grid;gap:6px}.work-status-row select,.work-status-row input,.work-status-row textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);padding:9px 10px;font:inherit}.work-status-row textarea{min-height:68px;resize:vertical}.work-status-row select:focus,.work-status-row input:focus,.work-status-row textarea:focus{outline:0;border-color:#79bd8b;box-shadow:0 0 0 4px #79bd8b22}.work-status-row button:disabled{opacity:.65;cursor:wait}@media(max-width:560px){.work-status-row{grid-template-columns:1fr}.work-status-row button{justify-self:start}}
.work-status-live-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:99px;background:#e3f5e8;color:#237b53;font-size:11px;font-weight:800}.work-status-live-badge i,.work-live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#35a967;box-shadow:0 0 0 4px #35a96720,0 0 14px #35a967aa;animation:live-glow 1.8s ease-in-out infinite}.work-timeline{position:relative;margin:7px 0 14px;padding:2px 0 2px 5px}.work-timeline:before{content:"";position:absolute;left:13px;top:12px;bottom:12px;width:2px;background:linear-gradient(#b8d9c2,#dfe9e1)}.work-timeline-item{position:relative;display:grid;grid-template-columns:28px 1fr;gap:11px;min-height:47px}.work-timeline-marker{position:relative;z-index:1;display:flex;justify-content:center;padding-top:5px}.work-timeline-marker span{width:15px;height:15px;border:3px solid #d7e7db;border-radius:50%;background:#fff}.work-timeline-item.past .work-timeline-marker span{background:#2f8a62;border-color:#2f8a62;box-shadow:0 0 0 4px #2f8a6218}.work-timeline-item.live .work-timeline-marker span{width:17px;height:17px;border-color:#35a967;background:#fff;box-shadow:0 0 0 5px #35a96720,0 0 17px #35a96799;animation:live-glow 1.8s ease-in-out infinite}.work-timeline-item.future .work-timeline-marker span{border-color:#d9e3db;background:#f7faf7}.work-timeline-content{padding:0 0 12px}.work-timeline-meta{display:flex;align-items:center;gap:7px;min-height:15px}.work-timeline-label{text-transform:uppercase;letter-spacing:.09em;font-size:9px;font-weight:850;color:#7c8e82}.work-timeline-item.live .work-timeline-label{color:#2f8a62}.work-timeline-content>strong{display:block;margin-top:2px;font-size:13px}.work-timeline-item.future .work-timeline-content>strong{color:#8a998f;font-weight:650}.work-timeline-control{display:flex;gap:8px;align-items:center;margin-top:8px}.work-timeline-control select{min-width:170px;border:1px solid #9bc9aa;border-radius:8px;background:#fff;padding:8px 10px;color:var(--ink);font:inherit;font-size:12px;box-shadow:0 0 0 3px #35a96712}.work-timeline-control .small-action{padding:7px 10px}@keyframes live-glow{0%,100%{opacity:.82;box-shadow:0 0 0 4px #35a96718,0 0 10px #35a96777}50%{opacity:1;box-shadow:0 0 0 6px #35a96728,0 0 21px #35a967bb}}
.work-timeline{display:flex;position:relative;gap:0;overflow-x:auto;padding:13px 6px 6px;margin:7px 0 18px;scrollbar-width:thin}.work-timeline:before{content:"";position:absolute;left:22px;right:22px;top:20px;bottom:auto;width:auto;height:2px;background:linear-gradient(90deg,#2f8a62 0%,#2f8a62 38%,#b8d9c2 48%,#dfe9e1 100%)}.work-timeline-item{position:relative;display:flex;flex:1;flex-direction:column;gap:0;min-width:108px;min-height:0;padding:0 7px}.work-timeline-marker{order:0;display:flex;justify-content:center;padding:0 0 10px}.work-timeline-content{order:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0 0 4px;text-align:center}.work-timeline-meta{justify-content:center;min-height:14px}.work-timeline-content>strong{font-size:12px}.work-timeline-item.past .work-timeline-content>strong{color:#386e50}.work-timeline-item.live .work-timeline-content>strong{color:#1c774e;font-size:13px}.work-timeline-control{flex-direction:column;align-items:stretch;width:100%;margin-top:8px}.work-timeline-control select{min-width:0;width:100%;font-size:11px;padding:7px}.work-timeline-control .small-action{align-self:center}.work-timeline-item.future .work-timeline-content>strong{color:#8a998f}.work-timeline-item.future .work-timeline-marker span{background:#fff}.work-timeline-item.live .work-timeline-marker span{position:relative;z-index:2}.work-timeline-item.past .work-timeline-marker span{position:relative;z-index:2}@media(max-width:700px){.work-timeline{justify-content:flex-start}.work-timeline-item{flex:0 0 112px}}
.site-workspace-view{min-width:0;overflow-x:hidden}.site-control-grid,.site-control-grid>.panel{min-width:0}.work-timeline{max-width:100%;min-width:0}
.site-control-grid>.work-status-full-panel{grid-column:1/-1}.work-status-full-panel .work-timeline{padding-top:15px;padding-bottom:4px}.work-status-full-panel .work-timeline-item{min-width:132px}@media(max-width:700px){.site-control-grid>.work-status-full-panel{grid-column:auto}}
.work-timeline-item{border:0;background:transparent;color:inherit;font:inherit;cursor:pointer;text-align:center;border-radius:10px}.work-timeline-item:hover .work-timeline-content>strong{color:var(--green);transform:translateY(-1px)}.work-timeline-item.is-saving{opacity:.55;cursor:wait}.work-timeline-item.is-saving .work-timeline-marker span{animation:live-glow .8s ease-in-out infinite}
.record-actions{display:inline-flex;align-items:center;gap:6px;margin-left:12px;flex:0 0 auto}.record-actions .small-action{padding:5px 8px;font-size:11px}.small-action.danger,.btn.danger{color:#a4493d;border-color:#efc4bd;background:#fff7f5}.small-action.danger:hover,.btn.danger:hover{background:var(--red);border-color:#df9f95}.record-edit-summary{display:grid;gap:4px;padding:12px;border-radius:10px;background:#f6faf6;border:1px solid var(--line);margin-bottom:4px}.record-edit-summary span{font-size:12px;color:var(--muted)}.required{color:#b34b3e}.record-manager{display:grid;gap:0}.record-manager-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding:12px 0}.record-manager-row:first-of-type{border-top:0}.record-manager-row span:first-child{display:grid;gap:3px}.record-manager-row small{color:var(--muted);font-size:11px}.financial-list>div{display:flex;align-items:center;gap:10px}.financial-list>div>span:first-child{margin-right:auto}.financial-list .small-action{padding:5px 8px;font-size:11px}@media(max-width:700px){.record-actions{margin-left:4px}.record-actions .small-action{padding:5px 6px}.record-manager-row{align-items:flex-start}.record-manager-row .record-actions{margin-left:auto}}
.audit-panel{margin-top:14px}.audit-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;border-top:1px solid var(--line);padding:11px 0}.audit-row:first-of-type{border-top:0}.audit-row span:first-child{display:grid;gap:4px}.audit-row small{color:var(--muted);font-size:11px}.audit-row>.muted{font-size:11px;white-space:nowrap;color:var(--green)}
.site-control-grid>.panel:has(.financial-list){grid-column:1/-1}
.workforce-history-head{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line,#dfe7e1);margin-top:14px;padding-top:14px}.labour-history-row{align-items:flex-start}.labour-history-row small{line-height:1.45}.workforce-report{min-width:0}
.labour-analytics-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-top:26px}.labour-calendar-panel,.labour-roster-panel{margin-top:14px}.labour-calendar-panel .panel-head{align-items:center}.labour-calendar-nav{display:flex;align-items:center;gap:8px;flex-shrink:0}.labour-calendar-nav .btn{min-width:34px;padding:7px 9px}.labour-calendar-nav .btn:disabled{opacity:.4;cursor:not-allowed}.labour-calendar-weekdays,.labour-calendar-grid{display:grid;grid-template-columns:repeat(7,38px);gap:5px;justify-content:start}.labour-calendar-weekdays{margin:18px 0 7px;color:var(--muted);font-size:10px;font-weight:750;text-align:center}.labour-calendar-cell{width:38px;height:38px;border:1px solid var(--line);border-radius:8px;background:#fbfcfb;color:var(--muted);display:grid;place-items:center;align-content:center;font:inherit;font-size:12px}.labour-calendar-cell.active{background:#e0f4e7;border-color:#67b98b;color:var(--green);font-weight:850;cursor:pointer;box-shadow:0 4px 14px #237b5318}.labour-calendar-cell.active:hover{background:#c8ecd5;transform:translateY(-1px)}.labour-calendar-cell i{font-style:normal;font-size:9px;margin-top:1px;color:#17643f}.labour-calendar-cell.empty{border-color:transparent;background:transparent}.labour-calendar-legend{display:flex;gap:18px;margin-top:14px;color:var(--muted);font-size:12px}.labour-calendar-legend span{display:flex;align-items:center;gap:6px}.legend-active,.legend-empty{width:10px;height:10px;border-radius:3px;display:inline-block}.legend-active{background:#67b98b}.legend-empty{border:1px solid var(--line);background:#fbfcfb}.labour-register-row{align-items:flex-start}.labour-date-modal{position:fixed;inset:0;background:#10221977;display:flex;align-items:center;justify-content:center;padding:18px;z-index:12}.labour-date-modal[hidden]{display:none}.labour-date-dialog{width:min(620px,100%);padding:20px;max-height:85vh;overflow:auto;box-shadow:0 30px 90px #0003}.labour-date-dialog .panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.labour-date-dialog .panel-head h2{margin:0}.labour-date-dialog .btn{white-space:nowrap}@media(max-width:850px){.labour-analytics-summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.labour-analytics-summary{grid-template-columns:1fr 1fr}.labour-calendar-nav .pill{font-size:11px}.labour-calendar-weekdays,.labour-calendar-grid{grid-template-columns:repeat(7,32px);gap:4px}.labour-calendar-cell{width:32px;height:32px;font-size:11px}}
.labour-analytics-work-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,1fr);gap:14px;margin-top:14px}.labour-analytics-work-grid .labour-calendar-panel,.labour-analytics-work-grid .labour-roster-panel{margin-top:0}.labour-roster-panel{max-height:430px;overflow:auto}.labour-analytics-section{margin-top:14px}.labour-insight-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.labour-insight-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:5px;box-shadow:var(--shadow)}.labour-insight-card strong{font-size:24px;letter-spacing:-.04em}.labour-insight-card small{color:var(--muted);font-size:11px}.labour-analytics-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:14px;margin-top:14px}.labour-chart-panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:var(--shadow)}.labour-chart-panel .panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:15px}.labour-chart-panel .panel-head h2{margin:0;font-size:16px}.labour-chart-panel .panel-head p{margin:4px 0 0;font-size:12px}.labour-chart-legend{display:flex;gap:16px;color:var(--muted);font-size:11px;margin-bottom:10px}.labour-chart-legend span{display:flex;align-items:center;gap:5px}.hours-key,.wage-key{width:9px;height:9px;border-radius:3px;display:inline-block}.hours-key{background:#63bb7d}.wage-key{background:#d9a343}.labour-skill-row{border-top:1px solid var(--line);padding:12px 0}.labour-skill-label{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:12px}.labour-skill-label span{display:grid;gap:3px}.labour-skill-label small{color:var(--muted);font-size:10px}.labour-skill-label strong{white-space:nowrap;font-size:11px}.labour-bar-track{height:7px;background:#edf3ee;border-radius:99px;overflow:hidden;margin-top:7px}.labour-bar-track.wage{height:4px;margin-top:4px}.labour-bar-track i{display:block;height:100%;border-radius:inherit;background:#d9a343}.labour-bar-track i.hours{background:#63bb7d}.labour-shift-list{display:grid}.labour-shift-row{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:13px 0;font-size:13px}.labour-utility-note{display:grid;gap:5px;margin-top:18px;padding:13px;border-radius:11px;background:#f2faf4;color:var(--green);font-size:12px}.labour-utility-note span{color:var(--muted);line-height:1.45}@media(max-width:950px){.labour-analytics-work-grid,.labour-analytics-grid{grid-template-columns:1fr}.labour-insight-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.labour-insight-grid{grid-template-columns:1fr 1fr}.labour-analytics-work-grid{display:block}.labour-roster-panel{margin-top:14px!important}}
.labour-analytics-work-grid .labour-roster-panel{max-height:360px}
.attendance-tools{display:grid;gap:10px;padding:12px;border:1px solid #dfe9e1;border-radius:12px;background:#f7fbf8}.attendance-same-crew{justify-self:start;color:var(--green);border-color:#9ed0ad;background:#e9f7ed}.attendance-search-row{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:8px}.attendance-search{min-width:0;width:100%}.attendance-help{margin:0;font-size:11px}.attendance-form{display:grid;gap:10px}.attendance-roster-section{display:grid;gap:7px}.attendance-section-title{display:flex;justify-content:space-between;align-items:center;padding-top:5px;font-size:12px}.attendance-roster-section+.attendance-roster-section{margin-top:7px}.attendance-all-workers{border:1px solid var(--line);border-radius:10px;padding:10px}.attendance-all-workers summary{cursor:pointer;color:var(--green);font-weight:750;font-size:12px}.attendance-all-workers .attendance-roster-section{margin-top:10px}.attendance-worker{min-height:56px;grid-template-columns:24px minmax(0,1fr) 112px 145px;cursor:pointer;transition:background .15s ease,border-color .15s ease}.attendance-worker:hover{background:#f7fbf8;border-color:#afd7ba}.attendance-worker.is-selected{background:#eef9f1;border-color:#8fc9a1}.attendance-worker.is-conflict{background:#fff7f4;border-color:#f1c2b8;cursor:not-allowed}.worker-copy{display:grid;gap:3px;min-width:0}.worker-copy b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.worker-copy small{font-size:11px}.worker-source{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attendance-summary{position:sticky;bottom:0;z-index:2;display:flex;justify-content:flex-end;gap:5px;padding:10px 0;margin-top:4px;border-top:1px solid var(--line);background:#fff;color:var(--green)}.attendance-empty{padding:15px;border:1px dashed var(--line);border-radius:10px;text-align:center;color:var(--muted)}
@media(max-width:700px){.attendance-search-row{grid-template-columns:1fr}.attendance-worker{grid-template-columns:24px minmax(0,1fr) 92px}.worker-source{display:none}}
.dialog-foot{position:sticky;bottom:-22px;padding:12px 0 0;background:#fff;border-top:1px solid var(--line);z-index:3}
.view#labour .panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.view#labour .panel-head h2{margin:0}
.view#labour .panel-head [data-add="attendance"]{display:inline-flex;color:#fff;border-color:#237b53;background:linear-gradient(135deg,#2d9364,#1e704c);box-shadow:0 6px 14px #237b5330}
.view#labour .head .actions [data-add-labour]{white-space:nowrap}
.view#labour .panel-head [data-add-labour]{color:var(--green);border-color:#a9d5b5;background:#f4fbf5;white-space:nowrap}
.view#labour .panel-head [data-add-labour]:hover{background:#e5f6e9;border-color:#75b98a;transform:translateY(-1px);box-shadow:0 6px 14px #237b5318}
.view#materials .panel-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin-bottom:14px}
.view#payments .panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}
.view#materials .panel-head h2,.view#payments .panel-head h2{margin:0}
.view#materials .panel-head [data-add="material"]{display:none}
.view#payments .panel-head [data-add="entry"]{display:none}
.view#materials .panel-head [data-add],.view#payments .panel-head [data-add],.view#materials .panel-head [data-add-vendor]{color:var(--green);border-color:#a9d5b5;background:#f4fbf5;white-space:nowrap}
.view#materials .panel-head [data-add]:hover,.view#payments .panel-head [data-add]:hover,.view#materials .panel-head [data-add-vendor]:hover{background:#e5f6e9;border-color:#75b98a;transform:translateY(-1px);box-shadow:0 6px 14px #237b5318}
.attendance-worker[hidden],.attendance-roster-section[hidden]{display:none!important}.attendance-feedback{margin:0;color:var(--green);font-size:11px;min-height:16px}.attendance-footer-summary{margin-right:auto;color:var(--green);font-size:12px;font-weight:750}
.labour-pie-layout{display:flex;align-items:center;gap:24px;min-height:220px}.labour-pie-chart{width:190px;height:190px;flex:0 0 190px;border-radius:50%;display:grid;place-items:center;box-shadow:0 8px 25px #17201b12}.labour-pie-chart>div{width:105px;height:105px;border-radius:50%;background:#fff;display:grid;place-items:center;align-content:center;text-align:center;box-shadow:0 3px 14px #17201b12}.labour-pie-chart strong{font-size:20px;letter-spacing:-.04em}.labour-pie-chart small{font-size:10px;color:var(--muted);margin-top:2px}.labour-pie-legend{display:grid;gap:11px;width:100%}.labour-pie-legend-row{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:12px}.labour-pie-legend-row span{display:flex;align-items:center;gap:7px}.labour-pie-legend-row i{width:10px;height:10px;border-radius:3px;display:inline-block}.labour-pie-legend-row strong{white-space:nowrap;font-size:11px}@media(max-width:560px){.labour-pie-layout{gap:14px}.labour-pie-chart{width:145px;height:145px;flex-basis:145px}.labour-pie-chart>div{width:82px;height:82px}.labour-pie-chart strong{font-size:16px}}
.site-control-grid>.panel:nth-child(2),.site-control-grid>.panel:nth-child(3){align-self:start;height:420px;box-sizing:border-box;overflow-y:auto;scrollbar-width:thin}
@media(max-width:700px){.site-control-grid>.panel:nth-child(2),.site-control-grid>.panel:nth-child(3){height:auto;max-height:420px}}
.global-data-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 2px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,#ffffff,#f7fbf8);box-shadow:0 8px 24px #18352a08}.global-data-title{margin-right:auto;color:var(--muted);font-size:12px;font-weight:700}.global-data-toolbar label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;font-weight:700}.global-data-toolbar select,.global-data-toolbar input{min-height:32px;padding:6px 9px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font:inherit;font-weight:600}.global-data-toolbar .small-action{min-height:32px}.global-data-toolbar [hidden]{display:none!important}@media(max-width:700px){.global-data-toolbar{align-items:stretch}.global-data-title{width:100%;margin-right:0}.global-data-toolbar label{flex:1;flex-direction:column;align-items:stretch}.global-data-toolbar select,.global-data-toolbar input{width:100%}}
.global-empty-state{margin:18px 0;padding:24px;text-align:center;border:1px dashed var(--line);border-radius:14px;background:#f8fbf9}
.vendor-form{gap:14px}.vendor-section{display:grid;gap:10px;padding:0 0 14px;border-bottom:1px solid var(--line)}.vendor-section h3{margin:0;font-size:14px}.vendor-section details,.vendor-form details{padding:12px 0}.vendor-form details summary{cursor:pointer;color:var(--ink);font-weight:800;list-style:none}.vendor-form details summary::-webkit-details-marker{display:none}.vendor-form details summary:before{content:'＋';display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border:1px solid #b9d8c2;border-radius:50%;color:var(--green);font-size:13px}.vendor-form details[open] summary:before{content:'−'}.vendor-form details[open]{gap:12px}.vendor-form details summary small{margin-left:6px;color:var(--muted);font-weight:600}.choice-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:-5px}.choice-chips label{position:relative}.choice-chips input{position:absolute;opacity:0;pointer-events:none}.choice-chips span{display:block;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:#fbfdfb;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer;transition:.16s ease}.choice-chips input:checked+span{border-color:#75b98a;background:#e8f7ec;color:var(--green);box-shadow:0 3px 8px #237b5314}.vendor-materials{max-height:100px;overflow:auto;padding:2px}.toggle-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink)}.toggle-row input{accent-color:var(--green)}.owner-only{display:grid;gap:10px;padding:12px;border-radius:10px;background:#f7faf8;border:1px dashed #c8ddd0}.owner-only>b{font-size:11px;color:var(--green)}
.vendor-form label.toggle-row{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin:2px 0}.vendor-form label.toggle-row input{width:auto;margin:0;flex:0 0 auto}.vendor-form label.toggle-row span{display:inline;color:var(--ink);font-size:12px;line-height:1.3}.vendor-form [data-whatsapp-number]{margin-top:-4px}
.vendor-items-heading{display:grid;gap:3px;margin-top:4px}.vendor-items-heading small{color:var(--muted);font-size:11px}.vendor-item-groups{display:grid;gap:8px;max-height:260px;overflow:auto;padding-right:3px}.vendor-item-group{border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:#fbfdfb}.vendor-item-group[hidden]{display:none}.vendor-item-group summary{cursor:pointer;font-weight:800;font-size:12px;list-style:none}.vendor-item-group summary::-webkit-details-marker{display:none}.vendor-item-group summary:before{content:'＋';display:inline-grid;place-items:center;width:18px;height:18px;margin-right:6px;border:1px solid #b9d8c2;border-radius:50%;color:var(--green);font-size:12px}.vendor-item-group[open] summary:before{content:'−'}.vendor-item-group summary small{margin-left:5px;color:var(--muted);font-weight:600}.vendor-item-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.vendor-item-chip{position:relative}.vendor-item-chip input{position:absolute;opacity:0;pointer-events:none}.vendor-item-chip span{display:block;padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer;transition:.16s ease}.vendor-item-chip input:checked+span{border-color:#75b98a;background:#e8f7ec;color:var(--green);box-shadow:0 3px 8px #237b5314}.vendor-item-chip small{font-size:9px;font-weight:600;opacity:.8}.link-action,.add-item-link{border:0;background:transparent;color:var(--green);font:inherit;font-size:11px;font-weight:750;cursor:pointer;margin-top:8px;padding:2px}.link-action:hover,.add-item-link:hover{text-decoration:underline}.vendor-custom-item{display:flex;gap:6px;flex:1 1 100%;margin-top:6px}.vendor-custom-item input{min-width:0;flex:1}.vendor-custom-item .small-action{padding:5px 9px}
.side{position:sticky;top:0;height:100vh;align-self:start}
.vendor-directory-panel{margin-top:14px}.vendor-directory-table{display:grid}.vendor-directory-head,.vendor-directory-row{display:grid;grid-template-columns:1.4fr 1fr 1.1fr 1fr .8fr;gap:14px;align-items:center}.vendor-directory-head{padding:0 12px 10px;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.vendor-directory-row{width:100%;padding:14px 12px;border:0;border-top:1px solid var(--line);background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer;transition:background .16s ease,transform .16s ease}.vendor-directory-row:hover{background:#f5faf6;transform:translateX(2px)}.vendor-directory-row span:first-child{display:grid;gap:4px}.vendor-directory-row small{color:var(--muted);font-size:11px}.vendor-directory-row>b:last-child{text-align:right}.vendor-empty{padding:24px 12px}.vendor-profile-modal{position:fixed;inset:0;background:#10221977;display:flex;align-items:center;justify-content:center;padding:18px;z-index:12}.vendor-profile-modal[hidden]{display:none}.vendor-profile-dialog{width:min(680px,100%);max-height:86vh;overflow:auto;padding:20px;box-shadow:0 30px 90px #0003}.vendor-profile-dialog .panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.vendor-profile-dialog .panel-head h2{margin:0}.vendor-profile-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.vendor-profile-stats>div{display:grid;gap:5px;padding:13px;border-radius:10px;background:#f5faf6;border:1px solid var(--line)}.vendor-profile-stats span{color:var(--muted);font-size:11px}.vendor-profile-details{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}.vendor-profile-details p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.vendor-profile-details b{color:var(--ink)}.vendor-profile-dialog h3{font-size:14px;margin:16px 0 4px}@media(max-width:700px){.vendor-directory-head{display:none}.vendor-directory-row{grid-template-columns:1fr auto;gap:5px 10px}.vendor-directory-row span:nth-child(2),.vendor-directory-row span:nth-child(3),.vendor-directory-row span:nth-child(4){font-size:11px;color:var(--muted)}.vendor-directory-row span:nth-child(2):before{content:'Type · '}.vendor-directory-row span:nth-child(3):before{content:'Mobile · '}.vendor-directory-row span:nth-child(4):before{content:'Terms · '}.vendor-profile-stats,.vendor-profile-details{grid-template-columns:1fr}}
.site-card .contact a,.site-card .contact .small-action{transition:transform .18s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease,color .18s ease}.site-card .contact a{color:#176a4a;border-color:#a9d6bb;background:linear-gradient(135deg,#f1fbf4,#dff3e6);box-shadow:0 4px 10px #237b5318}.site-card .contact a:hover{color:#fff;background:linear-gradient(135deg,#2d9364,#1e704c);border-color:#237b53;box-shadow:0 8px 18px #237b5338;transform:translateY(-2px)}.site-card .contact .small-action[data-site-detail]{color:#245d8c;border-color:#b9d4eb;background:linear-gradient(135deg,#f4f9fe,#e7f1fb);box-shadow:0 4px 10px #2e73a918}.site-card .contact .small-action[data-site-detail]:hover{color:#fff;background:linear-gradient(135deg,#3d86ba,#2b648f);border-color:#2e73a9;box-shadow:0 8px 18px #2e73a938;transform:translateY(-2px)}.site-card .contact .edit-action{color:#8b641d;border-color:#e4cd96;background:linear-gradient(135deg,#fffaf0,#fff0cb);box-shadow:0 4px 10px #bd8d2b18}.site-card .contact .edit-action:hover{color:#fff;background:linear-gradient(135deg,#c49335,#9c6e1d);border-color:#ad7b22;box-shadow:0 8px 18px #bd8d2b38;transform:translateY(-2px)}.site-card .contact .danger-action{color:#a4493d;border-color:#e8b9b1;background:linear-gradient(135deg,#fff8f6,#ffe9e4);box-shadow:0 4px 10px #bd514418}.site-card .contact .danger-action:hover{color:#fff;background:linear-gradient(135deg,#c96155,#a4493d);border-color:#a4493d;box-shadow:0 8px 18px #bd514438;transform:translateY(-2px)}.site-card .contact .small-action:active,.site-card .contact a:active{transform:translateY(0) scale(.97);box-shadow:0 2px 5px #17201b20}
/* Standard form width */
.dialog,.labour-date-dialog,.vendor-profile-dialog{width:min(760px,calc(100vw - 32px))}
@media(max-width:560px){.dialog,.labour-date-dialog,.vendor-profile-dialog{width:calc(100vw - 24px)}}
.labour-mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px;padding:5px;background:#eef5ef;border-radius:12px}.labour-mode{border:0;background:transparent;border-radius:9px;padding:10px;font:inherit;font-weight:800;color:var(--muted);cursor:pointer}.labour-mode.active{background:#fff;color:var(--green);box-shadow:0 3px 10px #17201b12}.labour-onboarding{display:grid;gap:14px}.labour-form-section{display:grid;gap:10px;padding:0 0 15px;border-bottom:1px solid var(--line)}.labour-form-section h3{margin:0;font-size:14px}.labour-form-section summary{cursor:pointer;font-weight:800;list-style:none}.labour-form-section summary::-webkit-details-marker{display:none}.labour-form-section summary:before{content:'＋';display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border:1px solid #b9d8c2;border-radius:50%;color:var(--green)}.labour-form-section[open] summary:before{content:'−'}.field-help{display:block;margin-top:4px;color:var(--muted);font-size:11px;font-weight:500}.labour-photo-row{display:flex;align-items:center;gap:12px}.labour-photo{width:68px;height:68px;display:grid;place-items:center;border:1px dashed #91c9a3;border-radius:14px;background:#f4fbf5;color:var(--green);cursor:pointer}.labour-photo input{display:none}.labour-photo span{display:grid;place-items:center;font-size:24px}.labour-photo small{font-size:10px;font-weight:700}.labour-photo-help{display:grid;gap:4px}.labour-photo-help small{color:var(--muted)}.choice-chip input,.check-chip input{position:absolute;opacity:0;pointer-events:none}.choice-chip span,.check-chip span{display:block;padding:8px 10px;border:1px solid var(--line);border-radius:999px;background:#fbfdfb;color:var(--muted);font-size:11px;font-weight:700;cursor:pointer}.choice-chip input:checked+span,.check-chip input:checked+span{border-color:#75b98a;background:#e8f7ec;color:var(--green);box-shadow:0 3px 8px #237b5314}.check-chip-grid{display:flex;flex-wrap:wrap;gap:7px}.check-chip{position:relative}.rate-card,.team-members{display:grid;gap:8px}.rate-card-row,.team-member-row{display:grid;grid-template-columns:1fr 120px auto;gap:8px;align-items:center}.team-member-row{grid-template-columns:1fr 1fr 1fr auto}.rate-card-row select,.rate-card-row input,.team-member-row input,.team-member-row select{margin-top:0}.rate-add{justify-self:start}.form-note{margin:0;color:var(--muted);font-size:11px}.labour-success{display:grid;gap:14px;text-align:center;padding:24px 8px}.success-mark{width:44px;height:44px;margin:auto;display:grid;place-items:center;border-radius:50%;background:var(--soft);color:var(--green);font-size:25px;font-weight:850}.labour-success h3{margin:0}.labour-success label{text-align:left;color:var(--muted);font-size:12px;font-weight:700}.labour-success select{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit}.success-actions{display:flex;justify-content:center;gap:8px}.attendance-feedback{padding:9px 11px;border-radius:9px;background:#fff2ed;color:#a4493d;font-size:12px}.attendance-feedback[hidden]{display:none}@media(max-width:560px){.rate-card-row,.team-member-row{grid-template-columns:1fr 1fr}.rate-card-row button,.team-member-row button{grid-column:1/-1;justify-self:start}.success-actions{flex-direction:column}}
/* Labour onboarding form polish */
.modal:has(.labour-mode-toggle) .dialog{width:min(820px,calc(100vw - 32px));padding:28px 30px 20px;border:1px solid #dfe9e1;border-top:4px solid var(--green);border-radius:22px}
.modal:has(.labour-mode-toggle) .dialog h2{font-size:24px;letter-spacing:-.045em}
.modal:has(.labour-mode-toggle) #modal-sub{font-size:13px;line-height:1.5;margin-bottom:20px}
.modal:has(.labour-mode-toggle) .labour-mode-toggle{margin:0 0 22px;background:#edf5ef;border:1px solid #dfe9e1;padding:4px;border-radius:14px}
.modal:has(.labour-mode-toggle) .labour-mode{min-height:42px;transition:background .18s ease,box-shadow .18s ease,color .18s ease}
.modal:has(.labour-mode-toggle) .labour-mode:hover{color:var(--green);background:#f7fbf8}
.modal:has(.labour-mode-toggle) .labour-mode.active{box-shadow:0 4px 12px #17201b16}
.modal:has(.labour-mode-toggle) .labour-form-section{padding:18px 0 20px;gap:13px}
.modal:has(.labour-mode-toggle) .labour-form-section:first-child{padding-top:0}
.modal:has(.labour-mode-toggle) .labour-form-section h3{font-size:14px;letter-spacing:-.01em}
.modal:has(.labour-mode-toggle) .labour-form-section>label:not(.toggle-row):not(.choice-chip):not(.check-chip),.modal:has(.labour-mode-toggle) .form-grid>label{display:grid;gap:7px;color:#53645a;font-size:11px;font-weight:800;letter-spacing:.01em}
.modal:has(.labour-mode-toggle) input:not([type=radio]):not([type=checkbox]):not([type=file]),.modal:has(.labour-mode-toggle) select,.modal:has(.labour-mode-toggle) textarea{width:100%;min-height:42px;margin-top:0;border:1px solid #d6e1d8;border-radius:10px;padding:10px 12px;background:#fbfdfb;color:var(--ink);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.modal:has(.labour-mode-toggle) textarea{min-height:82px;resize:vertical}
.modal:has(.labour-mode-toggle) input:not([type=radio]):not([type=checkbox]):not([type=file]):hover,.modal:has(.labour-mode-toggle) select:hover,.modal:has(.labour-mode-toggle) textarea:hover{background:#fff;border-color:#b8d1be}
.modal:has(.labour-mode-toggle) input:not([type=radio]):not([type=checkbox]):not([type=file]):focus,.modal:has(.labour-mode-toggle) select:focus,.modal:has(.labour-mode-toggle) textarea:focus{outline:0;border-color:#4ea26e;box-shadow:0 0 0 4px #4ea26e1c;background:#fff}
.modal:has(.labour-mode-toggle) .toggle-row{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid #dfe9e1;border-radius:10px;background:#f8fbf8;color:#53645a;font-size:12px;font-weight:700}
.modal:has(.labour-mode-toggle) .toggle-row input{accent-color:var(--green);width:16px;height:16px;margin:0}
.modal:has(.labour-mode-toggle) .choice-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:-4px}
.modal:has(.labour-mode-toggle) .choice-chip span,.modal:has(.labour-mode-toggle) .check-chip span{padding:9px 12px;border-radius:10px;background:#fff;font-size:11px;transition:transform .15s ease,border-color .15s ease,background .15s ease,box-shadow .15s ease}
.modal:has(.labour-mode-toggle) .choice-chip span:hover,.modal:has(.labour-mode-toggle) .check-chip span:hover{transform:translateY(-1px);border-color:#8dc49b}
.modal:has(.labour-mode-toggle) .check-chip-grid{gap:8px}
.modal:has(.labour-mode-toggle) .labour-photo{width:76px;height:76px;border-radius:16px;box-shadow:inset 0 0 0 1px #d5ead9}
.modal:has(.labour-mode-toggle) .labour-photo-help{font-size:12px}
.modal:has(.labour-mode-toggle) details.labour-form-section{margin-top:2px;padding:15px 0;border-bottom:1px solid #e3ebe4}
.modal:has(.labour-mode-toggle) details.labour-form-section summary{display:flex;align-items:center;color:var(--ink);font-size:13px}
.modal:has(.labour-mode-toggle) details.labour-form-section summary small{margin-left:7px;color:var(--muted);font-weight:600}
.modal:has(.labour-mode-toggle) .rate-card-row,.modal:has(.labour-mode-toggle) .team-member-row{padding:9px;border:1px solid #e1eae2;border-radius:11px;background:#fbfdfb}
.modal:has(.labour-mode-toggle) .small-action{padding:8px 10px;background:#fff;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .15s ease}
.modal:has(.labour-mode-toggle) .small-action:hover{background:#edf8f0;border-color:#9bcaaa;transform:translateY(-1px)}
.modal:has(.labour-mode-toggle) .dialog-foot{margin-top:12px;padding-top:16px}
.modal:has(.labour-mode-toggle) #modal-save{min-width:132px;box-shadow:0 8px 18px #237b5330}
@media(max-width:560px){.modal:has(.labour-mode-toggle) .dialog{padding:22px 18px 16px}.modal:has(.labour-mode-toggle) .form-grid{grid-template-columns:1fr}.modal:has(.labour-mode-toggle) .dialog-foot{bottom:-16px;margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}}
/* Material onboarding form */
.modal:has(.material-onboarding) .dialog{width:min(820px,calc(100vw - 32px));padding:28px 30px 20px;border:1px solid #dfe9e1;border-top:4px solid var(--green);border-radius:22px}
.modal:has(.material-onboarding) .dialog h2{font-size:24px;letter-spacing:-.045em}.modal:has(.material-onboarding) #modal-sub{font-size:13px;line-height:1.5;margin-bottom:20px}
.material-onboarding{display:grid;gap:0}.material-form-section{display:grid;gap:13px;padding:18px 0 20px;border-bottom:1px solid var(--line)}.material-form-section:first-child{padding-top:0}.material-form-section h3{margin:0;font-size:14px}.section-eyebrow{color:#b17820;font-size:10px;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.material-form-section>label:not(.toggle-row):not(.preferred-rate),.material-form-section .form-grid>label{display:grid;gap:7px;color:#53645a;font-size:11px;font-weight:800;letter-spacing:.01em}.material-form-section input:not([type=radio]):not([type=checkbox]):not([type=file]),.material-form-section select,.material-form-section textarea{width:100%;min-height:42px;margin-top:0;border:1px solid #d6e1d8;border-radius:10px;padding:10px 12px;background:#fbfdfb;color:var(--ink);font:inherit;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}.material-form-section textarea{min-height:82px;resize:vertical}.material-form-section input:not([type=radio]):not([type=checkbox]):not([type=file]):focus,.material-form-section select:focus,.material-form-section textarea:focus{outline:0;border-color:#d49a38;box-shadow:0 0 0 4px #d49a3820;background:#fff}.material-form-section input:not([type=radio]):not([type=checkbox]):not([type=file]):hover,.material-form-section select:hover,.material-form-section textarea:hover{background:#fff;border-color:#c7d9ca}.rate-context{color:#b17820;font-weight:800}.material-form-section summary{display:flex;align-items:center;gap:7px;cursor:pointer;list-style:none;font-size:13px;font-weight:800}.material-form-section summary::-webkit-details-marker{display:none}.material-form-section summary:before{content:'＋';display:inline-grid;place-items:center;width:20px;height:20px;border:1px solid #bfd8c5;border-radius:50%;color:var(--green)}.material-form-section[open] summary:before{content:'−'}.material-form-section summary small{color:var(--muted);font-size:11px;font-weight:600}.form-note{margin:0;color:var(--muted);font-size:11px;line-height:1.45}.material-vendor-row{display:grid;grid-template-columns:1.4fr .8fr 1fr auto auto;gap:8px;align-items:center;padding:9px;border:1px solid #e1eae2;border-radius:11px;background:#fbfdfb}.preferred-rate{display:flex!important;align-items:center;gap:5px;color:#b17820!important;font-size:11px!important;white-space:nowrap}.preferred-rate input{accent-color:#d49a38}.toggle-row{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid #dfe9e1;border-radius:10px;background:#f8fbf8;color:#53645a;font-size:12px;font-weight:700}.toggle-row input{accent-color:var(--green);width:16px;height:16px;margin:0}.material-success{display:grid;gap:14px;text-align:center;padding:24px 8px}.success-actions{display:flex;justify-content:center;gap:8px}.modal:has(.material-onboarding) #modal-save{min-width:132px;background:var(--green);border-color:var(--green);color:#fff;box-shadow:0 8px 18px #237b5330}.modal:has(.material-onboarding) .dialog-foot{margin-top:12px;padding-top:16px}@media(max-width:700px){.material-vendor-row{grid-template-columns:1fr 1fr}.material-vendor-row .preferred-rate{grid-column:1}.material-vendor-row [data-mo-remove-vendor]{grid-column:2;justify-self:end}}@media(max-width:560px){.modal:has(.material-onboarding) .dialog{padding:22px 18px 16px}.modal:has(.material-onboarding) .form-grid{grid-template-columns:1fr}.modal:has(.material-onboarding) .dialog-foot{bottom:-16px;margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}}
/* Payment entry form */
.modal:has(.payment-onboarding) .dialog{width:min(840px,calc(100vw - 32px));padding:28px 30px 20px;border:1px solid #dfe9e1;border-top:4px solid var(--green);border-radius:22px}.modal:has(.payment-onboarding) .dialog h2{font-size:24px;letter-spacing:-.045em}.modal:has(.payment-onboarding) #modal-save{min-width:140px;box-shadow:0 8px 18px #237b5330}.payment-onboarding{display:grid;gap:0}.payment-type-section{padding-bottom:20px;border-bottom:1px solid var(--line)}.payment-type-section h3{margin:4px 0 13px;font-size:14px}.payment-type-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.payment-type-tile{min-height:94px;text-align:left;border:1px solid #dce7de;border-radius:13px;background:#fbfdfb;padding:11px;cursor:pointer;display:grid;align-content:start;gap:6px;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease,background .16s ease}.payment-type-tile:hover{transform:translateY(-2px);border-color:#87bd96;box-shadow:0 7px 16px #237b5314}.payment-type-tile.active{background:#eaf7ed;border-color:#55a871;box-shadow:0 0 0 2px #55a87122}.payment-type-tile strong{font-size:12px}.payment-type-tile small{color:var(--muted);font-size:10px;line-height:1.3}.payment-type-badge{color:var(--green);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}.payment-form-section{display:grid;gap:13px;padding:18px 0 20px;border-bottom:1px solid var(--line)}.payment-form-section:last-child{border-bottom:0}.payment-form-section>label:not(.toggle-row),.payment-form-section .form-grid>label{display:grid;gap:7px;color:#53645a;font-size:11px;font-weight:800;letter-spacing:.01em}.payment-form-section input:not([type=radio]):not([type=checkbox]):not([type=file]),.payment-form-section select,.payment-form-section textarea{width:100%;min-height:42px;margin-top:0;border:1px solid #d6e1d8;border-radius:10px;padding:10px 12px;background:#fbfdfb;color:var(--ink);font:inherit}.payment-form-section textarea{min-height:78px;resize:vertical}.payment-form-section input:focus,.payment-form-section select:focus,.payment-form-section textarea:focus{outline:0;border-color:#4ea26e;box-shadow:0 0 0 4px #4ea26e1c;background:#fff}.payment-mode-chips{display:flex;flex-wrap:wrap;gap:8px}.payment-mode-chips label{position:relative}.payment-mode-chips input{position:absolute;opacity:0}.payment-mode-chips span{display:block;border:1px solid #d6e1d8;border-radius:10px;background:#fff;padding:9px 12px;color:var(--muted);font-size:11px;font-weight:750;cursor:pointer}.payment-mode-chips input:checked+span{border-color:#69ae7e;background:#e8f7ec;color:var(--green);box-shadow:0 3px 8px #237b5314}.payment-due-list{display:grid;gap:7px;max-height:190px;overflow:auto;padding-right:3px}.payment-due-row{display:grid!important;grid-template-columns:18px 1fr auto;gap:9px;align-items:center;padding:10px 11px;border:1px solid #e1eae2;border-radius:10px;background:#fbfdfb;color:var(--ink)!important;font-size:12px!important}.payment-due-row input{accent-color:var(--green);width:16px;height:16px}.payment-due-row span{display:grid;gap:3px}.payment-due-row small{color:var(--muted);font-size:10px;font-weight:500}.payment-due-row strong{color:var(--green)}.payment-form-section .toggle-row{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid #dfe9e1;border-radius:10px;background:#f8fbf8;color:#53645a;font-size:12px;font-weight:700}.payment-form-section .toggle-row input{accent-color:var(--green);width:16px;height:16px;margin:0}@media(max-width:780px){.payment-type-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:560px){.modal:has(.payment-onboarding) .dialog{padding:22px 18px 16px}.payment-type-grid{grid-template-columns:1fr 1fr}.modal:has(.payment-onboarding) .form-grid{grid-template-columns:1fr}.modal:has(.payment-onboarding) .dialog-foot{bottom:-16px;margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}}
/* Reports workspace */
.report-filter-bar{display:flex;gap:9px;align-items:end}.report-filter-bar label{display:grid;gap:6px;color:var(--muted);font-size:11px;font-weight:800}.report-filter-bar select{min-width:145px;border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px 12px;color:var(--ink);font:inherit}.report-section-heading{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:14px}.report-section-heading h2{margin:4px 0 0;font-size:19px;letter-spacing:-.04em}.report-attention{margin-top:28px}.report-attention-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.attention-card{padding:17px;border:1px solid var(--line);border-top:3px solid var(--green);border-radius:15px;background:#fff;box-shadow:var(--shadow);display:grid;gap:6px}.attention-card span{font-size:11px;color:var(--muted);font-weight:750}.attention-card b{font-size:24px;letter-spacing:-.05em}.attention-card small{font-size:11px;color:var(--muted)}.attention-amber{border-top-color:#d49a38}.attention-amber b{color:#a96d19}.attention-purple{border-top-color:#8e70c5}.attention-purple b{color:#7256a5}.attention-red{border-top-color:#cf6d60}.attention-red b{color:#b04c42}.report-library{margin-top:26px}.report-library-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.report-library-group{padding:15px;border:1px solid var(--line);border-radius:15px;background:#fff}.report-library-group h3{margin:0 0 9px;font-size:13px}.report-library-item{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;border:1px solid transparent;border-top-color:var(--line);background:transparent;padding:11px 3px;color:var(--ink);cursor:pointer;font:inherit}.report-library-item:first-of-type{border-top:0}.report-library-item:hover,.report-library-item.selected{color:var(--green);background:#f3faf4;border-radius:9px;padding-left:9px;padding-right:9px}.report-library-item span:first-child{display:grid;gap:3px}.report-library-item b{font-size:12px}.report-library-item small{color:var(--muted);font-size:10px;line-height:1.3}.report-preview-card{margin-top:16px}.report-preview-head{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:15px}.report-preview-head h2{margin:4px 0;font-size:18px}.report-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.report-actions .btn{font-size:11px;padding:8px 10px}.reports-table-wrap{overflow:auto}.reports-table{min-width:880px}.reports-table td{font-size:12px}.report-link{border:0;background:transparent;padding:0;color:var(--green);font:inherit;font-weight:800;cursor:pointer}.report-link:hover{text-decoration:underline}.reports-table td:first-child{min-width:150px}.negative{color:#b04c42}.pill.green{background:var(--soft);color:var(--green)}@media(max-width:950px){.report-attention-grid{grid-template-columns:repeat(2,1fr)}.report-library-grid{grid-template-columns:repeat(2,1fr)}.report-filter-bar{margin-top:18px}}@media(max-width:560px){.report-filter-bar{display:grid;grid-template-columns:1fr 1fr}.report-filter-bar select{min-width:0}.report-section-heading{display:block}.report-section-heading>.muted{display:block;margin-top:6px}.report-attention-grid,.report-library-grid{grid-template-columns:1fr}.report-preview-head{display:block}.report-actions{justify-content:flex-start;margin-top:12px}}
.report-drilldown{margin-top:16px;border:1px solid #d9e7dc;border-radius:13px;background:#f8fbf8;padding:15px}.report-drilldown-head{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:9px}.report-drilldown h3{margin:3px 0;font-size:15px}.report-drill-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border-top:1px solid #e1eae2;padding:10px 0;font-size:12px}.report-drill-row span{display:grid;gap:3px}.report-drill-row small{color:var(--muted);font-size:10px}.report-drill-row strong{color:var(--green)}
/* Reports decision viewer */
.reports-viewer{display:grid;gap:22px}.reports-viewer-head{display:flex;justify-content:space-between;align-items:end;gap:22px}.reports-viewer-head h1{margin:5px 0 7px}.reports-viewer-filters{display:flex;gap:10px}.reports-viewer-filters label{display:grid;gap:6px;color:var(--muted);font-size:11px;font-weight:800}.reports-viewer-filters select{min-width:150px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff;color:var(--ink);font:inherit}.ui-section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}.ui-section-head h2{margin:4px 0 0;font-size:18px}.ui-attention-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ui-attention-card{display:grid;gap:7px;text-align:left;padding:16px;border:1px solid var(--line);border-top:3px solid var(--green);border-radius:15px;background:#fff;box-shadow:var(--shadow);cursor:pointer;transition:transform .18s,box-shadow .18s}.ui-attention-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px #16332614}.ui-attention-card span,.ui-attention-card small{color:var(--muted);font-size:11px}.ui-attention-card b{font-size:21px;letter-spacing:-.04em}.ui-attention-card em{color:var(--green);font-size:11px;font-style:normal;font-weight:800}.ui-attention-card.ui-amber{border-top-color:#d49a38}.ui-attention-card.ui-purple{border-top-color:#8d6cc3}.ui-attention-card.ui-red{border-top-color:#cf6d60}.reports-two-pane{display:grid;grid-template-columns:235px minmax(0,1fr);gap:16px;align-items:start}.ui-report-nav,.ui-report-preview{border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow)}.ui-report-nav{position:sticky;top:18px;padding:13px;max-height:calc(100vh - 36px);overflow:auto}.ui-nav-head{display:grid;gap:10px}.ui-nav-head strong{font-size:14px}.ui-nav-head input{border:1px solid var(--line);border-radius:9px;padding:9px 10px;font:inherit;color:var(--ink)}.ui-pinned-label{margin:17px 3px 7px;color:var(--muted);font-size:9px;font-weight:900;letter-spacing:.12em}.ui-nav-list{display:grid;gap:3px}.ui-report-button{display:grid;gap:3px;text-align:left;width:100%;padding:10px;border:0;border-radius:9px;background:transparent;color:var(--ink);cursor:pointer;font:inherit}.ui-report-button:hover,.ui-report-button.active{background:#eaf7ed;color:var(--green)}.ui-report-button span{font-size:12px;font-weight:800}.ui-report-button small{color:var(--muted);font-size:10px;line-height:1.25}.ui-report-button.active small{color:#4d8660}.ui-report-preview{padding:20px;min-width:0}.ui-preview-head{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:18px}.ui-preview-head h2{margin:4px 0;font-size:20px}.ui-preview-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.ui-preview-actions .btn{font-size:11px;padding:8px 10px}.ui-chart{display:grid;gap:10px;margin-bottom:18px;padding:15px;border:1px solid #e1ebe3;border-radius:13px;background:#fbfdfb}.ui-chart-title{font-size:12px;font-weight:850}.ui-chart-row{display:grid;grid-template-columns:165px minmax(100px,1fr) 145px;gap:10px;align-items:center;font-size:11px}.ui-chart-row span{height:9px;background:#edf2ee;border-radius:999px;overflow:hidden}.ui-chart-row i{display:block;height:100%;background:linear-gradient(90deg,#2a8b5d,#7ac269);border-radius:inherit}.ui-chart-row small{color:var(--muted);text-align:right}.ui-table-scroll{overflow:auto}.ui-report-table{width:100%;min-width:760px;border-collapse:collapse}.ui-report-table th{padding:9px 8px;text-align:left;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line)}.ui-report-table td{padding:12px 8px;border-bottom:1px solid #e8eee9;font-size:12px}.ui-report-table tbody tr[data-ui-drill]{cursor:pointer}.ui-report-table tbody tr[data-ui-drill]:hover{background:#f5fbf6}.ui-link{border:0;background:transparent;color:var(--green);font:inherit;font-weight:850;padding:0;cursor:pointer}.ui-negative{color:#b04c42;font-weight:800}.ui-kpi-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}.ui-kpi-strip div{padding:13px;border:1px solid var(--line);border-radius:11px;background:#fbfdfb}.ui-kpi-strip b,.ui-kpi-strip small{display:block}.ui-kpi-strip b{font-size:20px}.ui-kpi-strip small{margin-top:4px;color:var(--muted);font-size:10px}.ui-empty-note{padding:24px;border:1px dashed #bfd5c4;border-radius:13px;background:#f8fcf9;margin-bottom:16px}.ui-empty-note strong{font-size:15px}.ui-empty-note p{margin:5px 0;color:var(--muted);font-size:12px}.ui-empty-note small,.ui-last-updated{color:var(--muted);font-size:10px}.ui-last-updated{margin-top:14px;text-align:right}@media(max-width:950px){.ui-attention-grid{grid-template-columns:repeat(2,1fr)}.reports-two-pane{grid-template-columns:200px minmax(0,1fr)}}@media(max-width:680px){.reports-viewer-head,.ui-preview-head{display:grid;align-items:start}.reports-viewer-filters{width:100%}.reports-viewer-filters label{flex:1}.reports-viewer-filters select{min-width:0;width:100%}.reports-two-pane{grid-template-columns:1fr}.ui-report-nav{position:static;max-height:300px}.ui-attention-grid{grid-template-columns:1fr}.ui-chart-row{grid-template-columns:1fr}.ui-chart-row small{text-align:left}.ui-kpi-strip{grid-template-columns:1fr 1fr}.ui-preview-actions{justify-content:flex-start}}
 .ui-nav-groups{display:grid;gap:3px;margin-top:10px}.ui-nav-group{border-top:1px solid #e7eee8;padding-top:4px}.ui-nav-group summary{cursor:pointer;padding:9px 4px;color:var(--muted);font-size:10px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;list-style:none}.ui-nav-group summary::-webkit-details-marker{display:none}.ui-nav-group summary:before{content:'＋';margin-right:5px;color:var(--green)}.ui-nav-group[open] summary:before{content:'−'}.ui-nav-group summary span{float:right}.ui-nav-group .ui-report-button{padding-left:7px}
@media print{.sidebar,.topbar,.ui-report-nav,.ui-attention-section,.ui-preview-actions{display:none!important}.reports-two-pane{display:block}.ui-report-preview{border:0;box-shadow:none}.reports-viewer{display:block}}
.purchase-register-panel{margin-top:14px}.purchase-register-panel .panel-head{align-items:center}.purchase-register-panel .btn{font-size:11px}.modal.open{z-index:1000}.vendor-profile-modal,.labour-date-modal{z-index:900}
.settings-page-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.settings-page-grid .panel{display:grid;gap:14px}.settings-page-grid label{display:grid;gap:6px;color:var(--muted);font-size:11px;font-weight:800}.settings-page-grid input,.settings-page-grid select{min-height:40px;border:1px solid var(--line);border-radius:9px;padding:9px 11px;color:var(--ink);font:inherit;background:#fff}.settings-rate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.settings-rate-grid label{color:var(--ink)}@media(max-width:700px){.settings-page-grid{grid-template-columns:1fr}.settings-rate-grid{grid-template-columns:1fr 1fr}}
input.groundwork-invalid, select.groundwork-invalid, textarea.groundwork-invalid { border-color: #c84747 !important; box-shadow: 0 0 0 3px rgba(200, 71, 71, .12); }

/* Stage 3: consistent navigation, touch targets and responsive layouts. */
.side{position:sticky;top:0;height:100vh;align-self:start;z-index:20}
.nav button,.admin{transition:background .16s ease,color .16s ease,transform .16s ease,box-shadow .16s ease}
.nav button:hover,.admin:hover{transform:translateX(2px)}
.btn,.small-action{transition:background .16s ease,color .16s ease,border-color .16s ease,box-shadow .16s ease,transform .16s ease}
.btn:hover,.small-action:hover{transform:translateY(-1px);box-shadow:0 6px 14px #18352a12}
.dialog{width:min(760px,calc(100vw - 32px));max-height:min(88vh,900px);overflow:auto}
@media(max-width:950px){
  .app{grid-template-columns:1fr}
  .side{display:flex;align-items:center;min-height:58px;height:auto;padding:8px 10px;background:var(--dark);overflow:hidden}
  .side .brand,.side .side-foot,.side .admin{display:none}
  .side .nav{display:flex;gap:4px;margin:0;width:100%;overflow-x:auto;scrollbar-width:none}
  .side .nav::-webkit-scrollbar{display:none}
  .side .nav button{flex:0 0 auto;white-space:nowrap;padding:9px 12px}
  .main{min-width:0;padding:18px}
}
@media(max-width:560px){
  .main{padding:12px}
  .grid,.cards,.kpi-row,.overview-grid,.settings-page-grid{grid-template-columns:1fr!important}
  .head{gap:12px;align-items:flex-start}
  .head .actions,.head .report-filter-bar{width:100%;display:flex;flex-wrap:wrap}
  .head .actions>*{flex:1 1 auto}
  .dialog{width:calc(100vw - 20px);max-height:92vh;padding:18px}
  .form-grid{grid-template-columns:1fr!important}
  .dialog-foot{bottom:-18px}
  .labour-pie-layout{flex-direction:column;align-items:stretch}
}
.stage4-labour-directory,.stage4-material-insights,.stage4-vendor-balances,.stage4-payment-queue{margin-top:14px}
.stage5-data-tools{grid-column:1/-1}.stage5-tool-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.stage5-tool-actions label{cursor:pointer}.stage5-tool-actions input{display:none}
.stage4-directory-tools{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:8px;margin-bottom:12px}.stage4-directory-tools input,.stage4-directory-tools select{min-height:38px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff;font:inherit}.stage4-worker-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stage4-worker-card,.stage4-vendor-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);text-align:left;font:inherit;cursor:pointer}.stage4-worker-card:hover,.stage4-vendor-row:hover{background:#f5fbf6;border-color:#a9d5b5}.stage4-worker-card small,.stage4-vendor-row small,.stage4-material-grid small,.stage4-bill-row small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.stage4-avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#e3f5e8;color:var(--green);font-weight:850}.stage4-pagination{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:12px}.stage4-pagination span:last-child{display:flex;gap:6px}.stage4-pagination button:disabled{opacity:.45;cursor:not-allowed}.stage4-wage-report{display:grid;grid-template-columns:1.2fr repeat(3,minmax(90px,1fr));gap:8px;margin-bottom:12px;padding:10px;border:1px solid #e2eee4;border-radius:10px;background:#f8fcf9}.stage4-wage-report>div{display:grid;gap:3px}.stage4-wage-report small{color:var(--muted);font-size:10px}.stage4-wage-report span{display:grid;gap:3px;padding-left:10px;border-left:1px solid var(--line)}.stage4-wage-report em{font-style:normal;color:var(--muted);font-size:10px}.stage4-wage-report strong{font-size:12px}.stage4-material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stage4-material-grid article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;padding:11px;border:1px solid var(--line);border-radius:10px}.stage4-material-grid article b{font-size:12px}.stage4-material-grid article strong{text-align:right;font-size:12px}.stage4-material-grid article>small{grid-column:1/-1}.stage4-vendor-list,.stage4-bill-list{display:grid}.stage4-vendor-row,.stage4-bill-row{border:0;border-top:1px solid var(--line);border-radius:0;padding:12px 0}.stage4-vendor-row:first-child,.stage4-bill-row:first-child{border-top:0}.stage4-vendor-row strong,.stage4-bill-row strong{white-space:nowrap}.stage4-due{color:#b04c42}.stage4-bill-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.vendor-profile-modal[data-modal-overlay]{z-index:1200}
@media(max-width:700px){.stage4-directory-tools,.stage4-worker-grid,.stage4-material-grid{grid-template-columns:1fr}.stage4-wage-report{grid-template-columns:1fr 1fr}.stage4-wage-report>div{grid-column:1/-1}.stage4-wage-report span:nth-of-type(n+3){display:none}}
.stage5-data-tools{grid-column:1/-1}
.stage5-tool-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.stage5-tool-actions label{cursor:pointer}
.stage5-tool-actions input{display:none}
.stage5-auth-backdrop{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;background:rgba(10,25,18,.72);backdrop-filter:blur(8px);padding:20px}
.stage5-auth-card{width:min(430px,100%);background:#fff;border:1px solid #dce7df;border-radius:22px;box-shadow:0 24px 80px rgba(0,0,0,.25);padding:30px;display:grid;gap:14px}
.stage5-auth-card h1{margin:0;font-size:28px}
.stage5-auth-card label{display:grid;gap:6px;font-weight:700;color:#53665c}
.stage5-auth-card input{border:1px solid #d7e2db;border-radius:10px;padding:12px;font:inherit}
.stage5-auth-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.stage5-auth-error{min-height:20px;color:#b3261e;margin:0}
