/* © 2026 AHBA Development — Proprietary & confidential. Unauthorized copying, reuse, or distribution is prohibited. */
:root{--ink:#102925;--muted:#71817d;--deep:#082c28;--green:#18a57b;--lime:#c9f36a;--coral:#ff765f;--amber:#e9a93d;--blue:#4285f4;--bg:#f3f5f1;--line:#e3e8e2;--white:#fff;--shadow:0 14px 34px rgba(24,49,44,.07);font-family:'DM Sans',sans-serif;color:var(--ink)}*{box-sizing:border-box}body{margin:0;background:var(--bg);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}.sidebar{background:#092c29;color:white;padding:24px 18px 18px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:244px;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 30px}.brand-mark{width:36px;height:36px;background:var(--lime);border-radius:11px;display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:9px}.brand-mark span{display:block;width:4px;background:var(--deep);border-radius:3px}.brand-mark span:nth-child(1){height:10px}.brand-mark span:nth-child(2){height:18px}.brand-mark span:nth-child(3){height:14px}.brand strong{font:800 18px Manrope}.brand small,.user-card small{display:block;color:#91aaa5;font-size:11px;margin-top:2px}.nav-list{display:flex;flex-direction:column;gap:5px}.nav-item{width:100%;border:0;background:transparent;color:#95aca7;display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;text-align:left;font-weight:600;font-size:13px;transition:background .15s ease,color .15s ease}.nav-item:hover{background:#123a36;color:#fff}.nav-item.active{background:#17443f;color:#fff;box-shadow:inset 3px 0 var(--lime)}.nav-item svg{width:18px;height:18px}.nav-item b{margin-left:auto;background:#ff775f;color:#fff;border-radius:20px;padding:2px 7px;font-size:10px}.sidebar-spacer{flex:1}.shift-card{background:#123b37;border:1px solid #204b47;border-radius:14px;padding:14px;margin-bottom:10px}.shift-head{display:flex;justify-content:space-between;color:#91aaa5;font-size:10px;text-transform:uppercase;letter-spacing:.08em}.live-dot{color:var(--lime)}.live-dot:before{content:'';display:inline-block;width:5px;height:5px;background:var(--lime);border-radius:50%;margin-right:4px}.shift-card strong{display:block;font-size:12px;margin:9px 0}.shift-progress{height:4px;background:#27504c;border-radius:3px;margin-bottom:7px}.shift-progress span{display:block;width:31%;height:100%;background:var(--lime);border-radius:3px}.shift-card small{color:#91aaa5}.user-card{border:0;background:transparent;color:#fff;display:flex;align-items:center;gap:10px;width:100%;padding:10px 8px;text-align:left;border-radius:10px;transition:background .15s ease}.user-card:hover{background:#123a36}.user-card .avatar{width:34px;height:34px;background:#f1bf75;color:#5b3515;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:12px}.user-card>span:nth-child(2){flex:1}.user-card strong{font-size:12px}.user-card svg{width:15px;transition:transform .2s ease}.user-card[aria-expanded="true"] svg{transform:rotate(90deg)}.main{grid-column:2;min-width:0}.topbar{height:92px;background:rgba(255,255,255,.88);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;position:sticky;top:0;z-index:20}.title-wrap p,.eyebrow{font-size:9px;letter-spacing:.15em;font-weight:800;color:#8a9894;margin:0 0 4px}.title-wrap h1{font:800 21px Manrope;margin:0}.top-actions{display:flex;align-items:center;gap:9px}.date-chip{height:39px;border:1px solid var(--line);border-radius:10px;padding:0 13px;display:flex;align-items:center;gap:8px;background:white;font-size:12px;color:#52635f}.date-chip svg,.icon-btn svg,.primary-btn svg,.secondary-btn svg,.text-btn svg,.search-box svg{width:16px;height:16px}.icon-btn{border:1px solid var(--line);background:#fff;border-radius:10px;width:39px;height:39px;display:grid;place-items:center;color:#5f706c;transition:background .15s ease,border-color .15s ease,color .15s ease}.icon-btn:hover{background:#f4f6f3;color:var(--ink)}.notification{position:relative}.notification span.notif-dot{position:absolute;width:7px;height:7px;background:var(--coral);border:2px solid white;border-radius:50%;top:7px;right:7px}.primary-btn,.secondary-btn{height:40px;border-radius:10px;padding:0 15px;border:0;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:700;font-size:12px;transition:background .15s ease,transform .05s ease,box-shadow .15s ease}.primary-btn{background:var(--deep);color:white;box-shadow:0 8px 18px rgba(8,44,40,.16)}.primary-btn:hover{background:#0f413b}.primary-btn:active,.secondary-btn:active{transform:translateY(1px)}.secondary-btn{border:1px solid var(--line);background:#fff;color:var(--ink)}.secondary-btn:hover{background:#f4f6f3}.page{display:none;padding:25px 30px 40px;animation:fade .25s ease}.page.active{display:block}@keyframes fade{from{opacity:.4;transform:translateY(3px)}}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:18px;position:relative;overflow:hidden;min-height:154px;box-shadow:0 4px 20px rgba(25,48,43,.025);transition:box-shadow .2s ease,transform .2s ease}.metric-card:hover{box-shadow:0 10px 28px rgba(25,48,43,.07);transform:translateY(-2px)}.metric-card.accent-green:after,.metric-card.accent-coral:after{content:'';position:absolute;width:80px;height:80px;border-radius:50%;right:-26px;top:-31px;background:#e7f9ea}.metric-card.accent-coral:after{background:#fff0ed}.metric-top{display:flex;align-items:center;justify-content:space-between;color:#657672;font-size:11px;font-weight:600}.metric-top svg{width:17px;height:17px;color:#8b9996}.metric-value{display:flex;align-items:baseline;gap:5px;margin:15px 0 9px}.metric-value strong{font:800 28px Manrope;letter-spacing:-.04em}.metric-value span{font-size:11px;color:#94a09d}.metric-foot{display:flex;align-items:center;gap:6px;font-size:10px;color:#879591}.metric-foot b{color:#52635f}.metric-foot.positive b{color:#12946e}.metric-foot.warning b{color:#d16d4c}.amber-dot{width:6px;height:6px;background:var(--amber);border-radius:50%}.mini-bars{position:absolute;display:flex;align-items:flex-end;gap:4px;right:16px;bottom:15px;height:37px}.mini-bars span{display:block;width:5px;background:#b6e5d5;border-radius:3px}.avatar-stack{position:absolute;right:16px;bottom:15px;display:flex}.avatar-stack span{width:25px;height:25px;border:2px solid white;border-radius:50%;margin-left:-6px;display:grid;place-items:center;color:white;font-size:8px;font-weight:700}.sparkline{position:absolute;right:12px;bottom:9px;width:48%;height:45px}.sparkline svg{width:100%;height:100%;overflow:visible}.sparkline path:not(.spark-fill){fill:none;stroke:#18a57b;stroke-width:2}.spark-fill{fill:#e9f8f1}.budget-bar{height:5px;background:#f1e9e5;border-radius:4px;margin-top:14px}.budget-bar span{height:100%;display:block;background:var(--coral);border-radius:4px;width:73%;transition:.4s}.overview-layout{display:grid;grid-template-columns:minmax(0,1.68fr) minmax(290px,.72fr);gap:14px;margin-bottom:14px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 4px 20px rgba(25,48,43,.025);overflow:hidden}.panel-head{padding:17px 19px 14px;display:flex;align-items:center;justify-content:space-between}.panel h2,.page-toolbar h2{font:800 14px Manrope;margin:0}.panel-head p,.page-toolbar p{font-size:10px;color:#8a9894;margin:4px 0 0}.map-actions{display:flex;align-items:center;gap:3px}.seg{border:0;background:#f4f6f3;border-radius:7px;padding:7px 10px;font-size:9px;color:#74827f;transition:background .15s ease,color .15s ease}.seg:hover{background:#e9ede8}.seg.active{background:#e5f4ed;color:#107b5e;font-weight:700}.map-actions .icon-btn{width:29px;height:29px;border-radius:7px;margin-left:4px}.map-canvas{height:356px;position:relative;overflow:hidden;background:#eef2ec}.map-art{position:absolute;width:100%;height:100%;transition:transform .25s ease;transform-origin:center}.team-pin{position:absolute;transform:translate(-50%,-50%);z-index:2;transition:transform .2s ease}.pin-dot{width:31px;height:31px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:grid;place-items:center;box-shadow:0 4px 10px #315d5545;border:2px solid white}.pin-dot span{transform:rotate(45deg);font-size:8px;font-weight:800;color:white}.team-pin.on-site .pin-dot{background:var(--green)}.team-pin.en-route .pin-dot{background:var(--blue)}.team-pin.available .pin-dot{background:var(--amber)}.pin-tooltip{position:absolute;display:none;white-space:nowrap;bottom:39px;left:50%;transform:translateX(-50%);background:#102925;color:#fff;border-radius:7px;padding:7px 9px;font-size:9px;box-shadow:var(--shadow)}.team-pin:hover{z-index:5}.team-pin:hover{transform:translate(-50%,-50%) scale(1.12)}.team-pin:hover .pin-tooltip{display:block}.map-legend{position:absolute;left:14px;bottom:12px;background:rgba(255,255,255,.93);padding:8px 11px;border-radius:8px;display:flex;gap:12px;box-shadow:0 4px 12px #315d551f;font-size:9px;color:#60716d}.map-legend i{width:6px;height:6px;display:inline-block;border-radius:50%;margin-right:4px}.pin-green{background:var(--green)}.pin-blue{background:var(--blue)}.pin-amber{background:var(--amber)}.map-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;box-shadow:0 4px 12px #315d551f;border-radius:7px;overflow:hidden}.map-zoom button{width:29px;height:28px;border:0;background:#fff;transition:background .15s ease}.map-zoom button:hover{background:#f1f4f0}.map-zoom button+button{border-top:1px solid var(--line)}.activity-panel{min-height:422px}.text-btn{border:0;background:transparent;color:#178262;font-size:10px;font-weight:700;display:inline-flex;align-items:center;gap:4px}.text-btn:hover{text-decoration:underline}.activity-list{padding:0 18px}.activity-item{display:grid;grid-template-columns:29px 1fr auto;gap:10px;padding:13px 0;border-top:1px solid #edf0ec;align-items:flex-start}.activity-icon{width:28px;height:28px;border-radius:9px;background:#e9f6f0;color:#16936e;display:grid;place-items:center}.activity-icon.blue{background:#e9f0ff;color:#4285f4}.activity-icon.coral{background:#fff0ed;color:#ef6b55}.activity-icon svg{width:13px}.activity-copy strong{font-size:10px;display:block}.activity-copy p{font-size:9px;color:#82918d;line-height:1.45;margin:3px 0}.activity-copy b{color:#50615d}.activity-item time{font-size:8px;color:#a0aaa8}.bottom-layout{display:grid;grid-template-columns:minmax(0,1.68fr) minmax(290px,.72fr);gap:14px}table{border-collapse:collapse;width:100%}th{text-align:left;color:#889591;text-transform:uppercase;font-size:8px;letter-spacing:.07em;padding:10px 16px;background:#f8f9f7;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}td{padding:12px 16px;border-bottom:1px solid #edf0ec;font-size:10px;color:#586965}tbody tr{transition:background .12s ease}tbody tr:hover td{background:#fafbf9}tbody tr:last-child td{border-bottom:0}td strong{display:block;color:var(--ink);font-size:10px}.status{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:4px 8px;font-size:8px;font-weight:700;background:#f1f3f1;color:#687974}.status:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.status.pending,.status.unassigned{background:#fff4e1;color:#b97a16}.status.en-route{background:#eaf1ff;color:#3473d8}.status.on-site,.status.completed{background:#e7f7ef;color:#11825f}.status.offline,.status.cancelled{background:#f2f2f2;color:#87928f}.status.assigned{background:#f0ebff;color:#7959c7}.status.in-progress{background:#e8f7f5;color:#168b81}.assign-btn{border:1px solid #dfe5df;background:white;border-radius:7px;padding:5px 9px;color:#127b5d;font-size:8px;font-weight:700;transition:background .15s ease,border-color .15s ease}.assign-btn:hover{background:#e7f7ef;border-color:#9fd9c2}.expense-chart-wrap{display:flex;align-items:center;justify-content:center;gap:28px;padding:8px 18px 24px}.donut{width:116px;height:116px;border-radius:50%;background:conic-gradient(var(--green) 0 36%,var(--coral) 36% 63%,var(--amber) 63% 83%,var(--blue) 83% 94%,#b0bab7 94%);display:grid;place-items:center}.donut>div{width:71px;height:71px;background:#fff;border-radius:50%;display:grid;place-content:center;text-align:center}.donut strong{font:800 15px Manrope}.donut span{font-size:8px;color:#86948f}.expense-legend{display:flex;flex-direction:column;gap:9px}.legend-row{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:7px;font-size:9px;color:#74837f}.legend-row i{width:6px;height:6px;border-radius:2px}.legend-row b{color:var(--ink)}.page-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-toolbar h2{font-size:19px}.toolbar-actions{display:flex;gap:8px}.search-box{height:39px;border:1px solid var(--line);background:#fff;border-radius:10px;display:flex;align-items:center;gap:7px;padding:0 12px;color:#7e8d89;min-width:235px;transition:border-color .15s ease,box-shadow .15s ease}.search-box:focus-within{border-color:var(--green);box-shadow:0 0 0 3px #18a57b17}.search-box input{border:0;outline:0;width:100%;font-size:11px}.dispatch-stats,.expense-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.small-stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px}.small-stat span{font-size:9px;color:#7f8d89}.small-stat strong{display:block;font:800 20px Manrope;margin-top:6px}.dispatch-board{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:start}.board-column{background:#e9ede8;border-radius:14px;padding:10px;min-height:500px}.column-head{display:flex;justify-content:space-between;align-items:center;padding:5px 4px 12px}.column-head strong{font:700 11px Manrope}.column-head span{background:#fff;border-radius:20px;min-width:22px;padding:3px;text-align:center;font-size:9px}.job-card{background:#fff;border:1px solid #dde4de;border-radius:11px;padding:12px;margin-bottom:8px;box-shadow:0 3px 9px rgba(20,45,40,.035);transition:box-shadow .15s ease,transform .15s ease}.job-card:not(.empty):hover{box-shadow:0 8px 18px rgba(20,45,40,.09);transform:translateY(-1px)}.job-card.empty{background:transparent;border-style:dashed;box-shadow:none;text-align:center;color:#9aa6a2}.job-card .job-top{display:flex;justify-content:space-between;align-items:center}.job-card .job-id{font-size:8px;color:#74837f;font-weight:700}.priority{font-size:7px;text-transform:uppercase;color:#d6614e;background:#fff0ed;border-radius:10px;padding:3px 6px}.job-card h3{font:700 11px Manrope;margin:10px 0 3px}.job-card p{font-size:9px;color:#74837f;margin:0 0 10px}.job-meta{display:flex;justify-content:space-between;border-top:1px solid #edf0ec;padding-top:9px;font-size:8px;color:#7b8986}.job-actions{margin-top:10px}.job-actions button{width:100%}.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.team-card{background:white;border:1px solid var(--line);border-radius:14px;padding:15px;position:relative;transition:box-shadow .2s ease,transform .2s ease}.team-card:hover{box-shadow:0 10px 24px rgba(25,48,43,.07);transform:translateY(-2px)}.team-card-head{display:flex;align-items:center;gap:10px}.team-avatar{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:white;font-weight:800;font-size:11px}.team-card h3{font:700 12px Manrope;margin:0}.team-card p{font-size:9px;color:#7d8c88;margin:4px 0}.team-card .status{position:absolute;right:12px;top:12px}.load-row{display:flex;justify-content:space-between;font-size:8px;color:#7d8c88;margin-top:14px}.load-row b{color:var(--ink)}.load-bar{height:5px;background:#edf0ec;border-radius:3px;margin:6px 0 13px}.load-bar span{display:block;height:100%;background:var(--green);border-radius:3px}.team-info{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #edf0ec;padding-top:11px}.team-info span{font-size:8px;color:#82908c}.team-info strong{font-size:10px;display:block;margin-top:3px}.full-table .filter-row{padding:14px 16px;display:flex;justify-content:space-between}.filter-chips{display:flex;gap:4px}.filter-chips button{border:0;border-radius:8px;background:#f1f4f0;color:#71817d;font-size:9px;padding:7px 11px;transition:background .15s ease,color .15s ease}.filter-chips button:hover{background:#e6ebe4}.filter-chips button.active{background:var(--deep);color:#fff}.expense-page-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:14px;margin-bottom:14px}.bar-chart{height:245px;padding:28px 25px 20px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;border-top:1px solid var(--line);background:repeating-linear-gradient(to bottom,#fff 0,#fff 49px,#edf0ec 50px)}.bar-col{height:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:7px}.bar-col span{width:65%;max-width:38px;background:#a8ddcc;border-radius:7px 7px 2px 2px;min-height:6px;transition:.4s}.bar-col.today span{background:var(--green)}.bar-col b{font-size:8px;color:#778783}.category-list{padding:4px 18px 18px}.category-row{padding:10px 0;border-top:1px solid var(--line)}.category-top{display:flex;justify-content:space-between;font-size:9px}.category-top span{color:#6f807c}.category-top b{font-size:10px}.category-bar{height:5px;background:#edf0ec;border-radius:3px;margin-top:7px}.category-bar span{display:block;height:100%;border-radius:3px;transition:width .4s ease}.budget-pill{font-size:8px;color:#a46d13;background:#fff3db;padding:5px 8px;border-radius:12px}.expense-log{margin-top:0}.modal{border:0;padding:0;border-radius:18px;width:min(670px,calc(100% - 30px));box-shadow:0 30px 80px #0a28255c;color:var(--ink);overflow:hidden}.small-modal{width:min(500px,calc(100% - 30px))}.modal::backdrop{background:transparent}.modal-backdrop{position:fixed;inset:0;background:rgba(4,24,22,.55);backdrop-filter:blur(3px);z-index:40;display:none}.modal-backdrop.show{display:block}.modal[open]{z-index:50;animation:modalIn .2s ease}@keyframes modalIn{from{opacity:0;transform:translateY(8px) scale(.99)}}.modal-head{padding:23px 25px 17px;display:flex;justify-content:space-between;border-bottom:1px solid var(--line)}.modal-head h2{font:800 20px Manrope;margin:2px 0}.modal-head p{font-size:10px;color:#7c8a87;margin:0}.modal-head .icon-btn{width:34px;height:34px}.form-grid{padding:20px 25px;display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field.full{grid-column:1/-1}.field span{font-size:9px;font-weight:700;color:#586965}.field input,.field select,.field textarea{width:100%;border:1px solid #dfe5df;border-radius:9px;padding:10px 11px;outline:0;color:var(--ink);font-size:11px;background:white}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #18a57b17}.field textarea{resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:15px 25px 21px;background:#f8faf7;border-top:1px solid var(--line)}.assignment-list{padding:12px 20px 22px;max-height:440px;overflow:auto}.assignment-item{display:grid;grid-template-columns:37px 1fr auto;gap:10px;align-items:center;padding:11px;border:1px solid var(--line);border-radius:10px;margin-top:8px}.assignment-item.recommended{border-color:#79c9ac;background:#f2fbf7}.assignment-item strong{font-size:11px}.assignment-item p{font-size:8px;color:#7b8986;margin:3px 0}.recommend{font-size:7px;background:#dff6ec;color:#11805f;border-radius:10px;padding:3px 6px;margin-left:5px}.toast{position:fixed;z-index:70;right:25px;bottom:25px;background:#102925;color:#fff;padding:12px 17px;border-radius:11px;display:flex;align-items:center;gap:9px;font-size:11px;box-shadow:0 12px 30px #0c252144;transform:translateY(80px);opacity:0;transition:.3s}.toast.show{transform:translateY(0);opacity:1}.toast svg{width:15px;color:var(--lime)}.mobile-only{display:none}
@media(max-width:1100px){.summary-grid{grid-template-columns:1fr 1fr}.team-grid{grid-template-columns:repeat(3,1fr)}.dispatch-board{grid-template-columns:1fr 1fr}.overview-layout,.bottom-layout{grid-template-columns:1fr}.expense-panel{min-height:270px}}
@media(max-width:760px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none}.main{grid-column:auto}.topbar{padding:0 15px;height:76px}.mobile-only{display:grid}.title-wrap p{display:none}.title-wrap h1{font-size:16px}.date-chip,.top-actions>.primary-btn{display:none}.page{padding:16px}.summary-grid,.dispatch-stats,.expense-summary{grid-template-columns:1fr 1fr}.overview-layout,.bottom-layout,.expense-page-grid{grid-template-columns:1fr}.team-grid{grid-template-columns:1fr 1fr}.dispatch-board{grid-template-columns:1fr}.page-toolbar{align-items:flex-start}.page-toolbar p{max-width:220px}.toolbar-actions .secondary-btn{display:none}.table-wrap{overflow:auto}.queue-panel table{min-width:600px}.full-table table,.expense-log table{min-width:780px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.notif-pop{position:fixed;right:12px;left:12px;width:auto}}
@media(max-width:480px){.summary-grid,.team-grid{grid-template-columns:1fr}.metric-card{min-height:145px}.top-actions{gap:5px}.page-toolbar{flex-direction:column;gap:12px}.search-box{width:100%}.filter-row{flex-direction:column;gap:10px}.filter-chips{overflow:auto}.map-canvas{height:310px}}
.team-pin{border:0;background:transparent;padding:0}

/* ---- UI polish additions ---- */
:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:8px}
.sidebar :focus-visible{outline-color:var(--lime)}
.sidebar-scrim{position:fixed;inset:0;background:rgba(4,24,22,.45);backdrop-filter:blur(2px);z-index:25;display:none}
@media(max-width:760px){.sidebar-scrim:not([hidden]){display:block}}
.sidebar-close{position:absolute;top:18px;right:16px;width:32px;height:32px;border-color:#204b47;background:#123a36;color:#cfe1dc}
.brand{position:relative}
.notif-wrap{position:relative}
.notif-pop{position:absolute;top:48px;right:0;width:300px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);z-index:60;overflow:hidden;animation:popIn .16s ease}
@keyframes popIn{from{opacity:0;transform:translateY(-6px)}}
.notif-pop-head{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:1px solid var(--line)}
.notif-pop-head strong{font:800 12px Manrope}
.notif-pop-list{max-height:330px;overflow:auto}
.notif-item{display:grid;grid-template-columns:28px 1fr auto;gap:10px;padding:11px 15px;border-top:1px solid #f0f2ee;align-items:flex-start}
.notif-item:first-child{border-top:0}
.notif-item strong{font-size:10px;display:block}
.notif-item p{font-size:9px;color:#82918d;margin:3px 0 0;line-height:1.4}
.notif-item b{color:#50615d}
.notif-item time{font-size:8px;color:#a0aaa8}
.role-menu{position:absolute;left:18px;right:18px;bottom:66px;background:#0e3531;border:1px solid #204b47;border-radius:12px;padding:6px;box-shadow:0 16px 34px rgba(4,20,18,.45);z-index:60;animation:popIn .16s ease}
.role-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;color:#cfe1dc;font-size:12px;font-weight:600;padding:9px 10px;border-radius:8px;transition:background .12s ease}
.role-menu button:hover{background:#17443f;color:#fff}
.empty-row{padding:26px 16px;text-align:center;font-size:10px;color:#9aa6a2;grid-column:1/-1}
.empty-cell{text-align:center;color:#9aa6a2}
.map-panel.expanded{position:fixed;inset:16px;z-index:65;margin:0;box-shadow:0 30px 80px rgba(4,24,22,.4)}
.map-panel.expanded .map-canvas{height:calc(100vh - 130px)}
@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
/* --- Fit-to-screen: no page-level horizontal scroll; wide tables scroll inside their panel --- */
html,body{overflow-x:hidden;max-width:100%}
.app-shell{max-width:100vw}
.main{min-width:0;overflow-x:hidden}
.page{max-width:100%;overflow-x:hidden}
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.panel,.full-table,.metric-card,.small-stat{min-width:0}
.summary-grid,.dispatch-stats,.expense-summary,.team-grid{min-width:0}
/* laptops: tighten so 4-up cards + map fit without overflow */
@media(max-width:1400px){
  .summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  .overview-layout,.bottom-layout{grid-template-columns:minmax(0,1.6fr) minmax(260px,.8fr)}
}

/* Redispatch counter — prominent on each job card */
.redispatch{font:800 13px Manrope;color:#fff;background:#e9a93d;border-radius:8px;padding:3px 10px;letter-spacing:.02em;line-height:1;box-shadow:0 2px 6px rgba(233,169,61,.35)}
.redispatch.hi{background:#d6492f;box-shadow:0 2px 7px rgba(214,73,47,.4)}

/* Access control: clear sideways scroll with a visible scrollbar; sticky header + user column */
.row-actions{display:flex;flex-wrap:wrap;gap:3px;justify-content:flex-end;min-width:96px}
.access-table{overflow:auto;max-width:100%;max-height:74vh;-webkit-overflow-scrolling:touch;
  scrollbar-width:thin;scrollbar-color:#18a57b #eef1ed}
.access-table::-webkit-scrollbar{height:12px;width:12px}
.access-table::-webkit-scrollbar-track{background:#eef1ed;border-radius:8px}
.access-table::-webkit-scrollbar-thumb{background:#18a57b;border-radius:8px;border:2px solid #eef1ed}
.access-table table{min-width:0;width:100%}
.access-table th,.access-table td{padding:7px 8px;font-size:9px;white-space:nowrap}
.access-table thead th{position:sticky;top:0;z-index:3;background:#f8f9f7}
/* permission columns: vertical headers + narrow cells so the whole matrix fits up to Actions */
.access-table th.perm{writing-mode:vertical-rl;transform:rotate(180deg);vertical-align:bottom;height:78px;padding:6px 1px;font-size:8px;letter-spacing:0;font-weight:700}
.access-table td.perm{width:24px;min-width:24px;max-width:24px;padding:6px 1px;text-align:center}
/* keep the User name visible while scrolling sideways */
.access-table th:first-child,.access-table td:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:1px 0 0 var(--line)}
.access-table thead th:first-child{z-index:4;background:#f8f9f7}
.access-table input[type=checkbox]{width:15px;height:15px}
.access-table .assign-btn{font-size:8px;padding:4px 6px}