:root{--bg:#f5f7f7;--card:#fff;--text:#17201e;--muted:#687572;--line:#dfe6e4;--accent:#0b5a50;--accent2:#e8f2f0;--danger:#9c2f2f;--danger2:#f8eaea;--shadow:0 8px 30px rgba(14,40,35,.06)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Tahoma,Arial,sans-serif}.app-shell{max-width:1280px;margin:auto;padding:18px}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.topbar strong{display:block;font-size:1.15rem}.topbar .muted{display:block}.userbox{display:flex;gap:14px;align-items:center}.muted,.hint,small{color:var(--muted)}.flash{padding:12px 14px;border-radius:12px;margin-bottom:14px;background:#e8f2f0}.flash.error{background:var(--danger2);color:var(--danger)}.auth-card,.card,.hero-card,.lab-card,.metric{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.auth-card{max-width:520px;margin:60px auto;padding:26px}.card{padding:20px;margin:16px 0}.hero-card{padding:20px;display:flex;justify-content:space-between;gap:20px;align-items:center}.narrow{max-width:900px;margin:auto}.stack{display:grid;gap:14px}.grid3,.grid-form{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.grid-form{grid-template-columns:repeat(2,1fr);align-items:end}.label,label{display:grid;gap:7px;font-size:.94rem}input,select,button{font:inherit}input,select{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--text)}button,a{transition:.15s}.primary-btn,.secondary-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border-radius:11px;padding:11px 15px;cursor:pointer}.primary-btn{background:var(--accent);color:#fff;border:1px solid var(--accent)}.secondary-btn{background:#fff;color:var(--text);border:1px solid var(--line)}.secondary-btn.small{padding:7px 10px;font-size:.86rem}.linkbtn{border:0;background:none;color:var(--accent);cursor:pointer;padding:0}.badge,.status{display:inline-block;padding:6px 10px;border-radius:999px;background:var(--accent2);color:var(--accent);font-size:.86rem}.status.absent{background:var(--danger2);color:var(--danger)}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.tabs a{padding:9px 12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--text);background:#fff}.page-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin:16px 0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric{padding:17px}.metric span{display:block;color:var(--muted);font-size:.9rem}.metric strong{font-size:1.65rem;margin-top:8px;display:block}.lab-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.lab-card{padding:18px;text-decoration:none;color:inherit}.lab-card:hover{transform:translateY(-2px)}.lab-card h3{margin-top:0}.lab-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;color:var(--muted)}.lab-stats b{color:var(--text)}.section-link{margin:18px 0}.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:16px;margin:16px 0}table{width:100%;border-collapse:collapse;min-width:780px}th,td{padding:12px 13px;text-align:right;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#f0f4f3;font-size:.9rem}td small{display:block;margin-top:4px}.filters,.inline-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:14px 0}.filters>*,.inline-form>*{min-width:160px}.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.event-btn{padding:15px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}.event-btn.danger{color:var(--danger)}.event-btn:disabled{opacity:.35;cursor:not-allowed}.event-btn.active{border-color:var(--accent);background:var(--accent2)}.event-btn.danger.active{border-color:var(--danger);background:var(--danger2)}.hidden{display:none!important}.gps-box{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px;border:1px solid var(--line);border-radius:12px}canvas{width:100%;height:180px;border:1px dashed #aebbb8;border-radius:12px;background:#fff;touch-action:none}.info-box{padding:14px;border-radius:12px;background:var(--accent2);margin:14px 0}.map{height:600px;border-radius:16px;border:1px solid var(--line);overflow:hidden}.legend{display:flex;gap:16px;margin:10px 0}.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-left:5px}.dot.green{background:#1f8f62}.dot.red{background:#c44343}@media(max-width:900px){.grid3,.grid-form,.metrics,.lab-grid{grid-template-columns:repeat(2,1fr)}.map{height:500px}}@media(max-width:600px){.app-shell{padding:12px}.topbar,.page-head,.hero-card{align-items:stretch;flex-direction:column}.grid3,.grid-form,.metrics,.lab-grid,.action-grid{grid-template-columns:1fr}.filters,.inline-form{display:grid}.filters>*,.inline-form>*{min-width:0}.auth-card{margin:20px auto;padding:20px}.map{height:430px}.userbox{justify-content:space-between}}
.map-employee-popup{min-width:220px;line-height:1.8}.map-employee-popup .late-text{display:inline-block;margin-top:4px;color:#9c5a00;background:#fff4dc;border-radius:8px;padding:2px 7px}
.danger-zone{border-color:#eccaca;background:#fffafa}.danger-zone-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.danger-zone h2{color:var(--danger);margin-top:0}.danger-count{display:inline-flex;white-space:nowrap;padding:6px 10px;border-radius:999px;background:var(--danger2);color:var(--danger);font-size:.86rem}.delete-all-form{display:flex;gap:14px;align-items:center;justify-content:space-between;margin-top:14px;padding-top:14px;border-top:1px solid #efd5d5}.confirm-check{display:flex;grid-template-columns:none;align-items:center;gap:9px;color:#6f3232}.confirm-check input{width:auto;margin:0}.danger-btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--danger);background:var(--danger);color:#fff;border-radius:11px;padding:11px 15px;cursor:pointer}.danger-btn:disabled{opacity:.4;cursor:not-allowed}.danger-link{border:0;background:var(--danger2);color:var(--danger);border-radius:9px;padding:7px 10px;cursor:pointer}.danger-link:hover,.danger-btn:hover:not(:disabled){filter:brightness(.96)}@media(max-width:600px){.danger-zone-head,.delete-all-form{align-items:stretch;flex-direction:column}.danger-count{align-self:flex-start}.danger-btn{width:100%}}
.employee-map-dot{display:block;width:20px;height:20px;border-radius:50%;border:3px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.38)}.lab-map-pin{display:flex;width:28px;height:28px;align-items:center;justify-content:center;border-radius:8px 8px 8px 2px;transform:rotate(-45deg);background:#2f6fb3;color:#fff;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35);font-weight:700}.lab-map-pin::first-letter{transform:rotate(45deg)}.dot.gray{background:#8a9491}.dot.blue{background:#2f6fb3}.map-summary{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 12px}.map-summary span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 11px}.map-summary b{margin-right:4px}.map-summary .summary-green{border-color:#b8ddd0}.map-summary .summary-red{border-color:#edcaca}.map-summary .summary-gray{border-color:#d4d9d7}.map-legend{flex-wrap:wrap}.map-lab-popup{min-width:210px;line-height:1.8}.unlocated-box{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.unlocated-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.unlocated-list span{background:#f0f4f3;border-radius:999px;padding:6px 10px;font-size:.88rem}.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large{background:rgba(11,90,80,.16)}.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div{background:rgba(11,90,80,.82);color:#fff}
.report-summary-metrics{grid-template-columns:repeat(6,1fr)}.report-security-note{line-height:1.8}.report-security-note strong{color:var(--accent)}@media(max-width:1000px){.report-summary-metrics{grid-template-columns:repeat(3,1fr)}}@media(max-width:600px){.report-summary-metrics{grid-template-columns:repeat(2,1fr)}}

/* V1.1.0 map correction patch */
.map-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:8px 0 10px}.map-status-filters,.map-layer-toggles{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.map-toolbar label{display:inline-flex;grid-template-columns:none;align-items:center;gap:6px;font-size:.9rem;cursor:pointer}.map-toolbar input[type=checkbox]{width:16px;height:16px;margin:0}.dot.green-dark{background:#0c6f4d}.dot.amber{background:#d18a00}.map-summary .summary-amber{border-color:#eed29a}.employee-marker-wrap,.lab-marker-wrap{background:none!important;border:0!important}.employee-map-dot{display:block;width:22px;height:22px;border-radius:50%;background:var(--employee-color,#8b949e);border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.38);position:relative}.employee-map-dot::after{content:"";position:absolute;inset:-5px;border:1px solid color-mix(in srgb,var(--employee-color,#8b949e) 55%,transparent);border-radius:50%}.employee-cluster-wrap{background:none!important;border:0!important}.employee-cluster{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:3px solid #fff;box-shadow:0 3px 12px rgba(0,0,0,.3)}.employee-cluster span{width:25px;height:25px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.94);color:#20302c;font-weight:700;font-size:.78rem;box-shadow:0 1px 4px rgba(0,0,0,.15)}.lab-marker-shell{display:flex;position:relative;width:44px;height:44px;align-items:center;justify-content:center}.lab-screen-halo{position:absolute;width:42px;height:42px;border:2px dashed rgba(11,90,80,.5);border-radius:50%;background:rgba(11,90,80,.06)}.lab-map-pin{position:relative;z-index:2}.popup-status{display:inline-block;padding:3px 8px;border-radius:999px}.popup-present,.popup-completed{background:#e8f5ef;color:#0b6f4d}.popup-no_record{background:#eef0f1;color:#5d666b}.popup-absent{background:#faecee;color:#a92e39}.popup-incomplete{background:#fff3d9;color:#8b5a00}.leaflet-pane.leaflet-geofence-pane-pane path{vector-effect:non-scaling-stroke}.leaflet-tooltip{font-family:Tahoma,Arial,sans-serif}.map-lab-popup strong,.map-employee-popup strong{font-weight:700}@media(max-width:700px){.map-toolbar{align-items:stretch}.map-status-filters,.map-layer-toggles{width:100%}.map-toolbar label{font-size:.84rem}}

/* V2.0 Multi-project workspace */
.project-context-bar{display:flex;align-items:center;gap:12px;justify-content:space-between;background:linear-gradient(135deg,#0b5a50,#083f39);color:#fff;border-radius:16px;padding:12px 15px;margin-bottom:10px;box-shadow:var(--shadow)}
.project-context-name{display:flex;gap:9px;align-items:baseline}.project-context-name span{font-size:.78rem;opacity:.78}.project-context-name strong{font-size:1rem}.project-switch-form{margin-inline-start:auto;min-width:240px}.project-switch-form select{background:rgba(255,255,255,.96);border:0;padding:9px 11px}.project-context-bar .secondary-btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff}
.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;justify-content:space-between;gap:16px;align-items:center;box-shadow:var(--shadow)}.project-card.active-project-card{border-color:#8fc5ba;box-shadow:0 10px 32px rgba(11,90,80,.10)}.project-kicker{font-size:.76rem;color:var(--accent);background:var(--accent2);border-radius:999px;padding:5px 8px}.project-card h2{margin:10px 0 7px}.location-list{display:grid;gap:12px}.location-editor{margin:0}.location-form{grid-template-columns:repeat(4,minmax(0,1fr))}.switch-line{display:flex;grid-template-columns:none;align-items:center;gap:8px}.switch-line input{width:auto}.empty-state{text-align:center;padding:34px}
.admin-project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-project-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}.admin-project-card h3{margin:7px 0}.admin-project-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.manager-project-tags{display:flex;gap:5px;flex-wrap:wrap}.manager-project-tags span{font-size:.78rem;padding:4px 7px;border-radius:999px;background:#eef3f2;color:#48615b}.checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.checkbox-grid label{display:flex;grid-template-columns:none;align-items:center;gap:7px;border:1px solid var(--line);padding:9px;border-radius:10px}.checkbox-grid input{width:auto}
@media(max-width:900px){.project-grid,.admin-project-grid{grid-template-columns:1fr}.location-form{grid-template-columns:repeat(2,minmax(0,1fr))}.project-context-bar{align-items:stretch;flex-wrap:wrap}.project-switch-form{min-width:0;flex:1 1 240px}}
@media(max-width:600px){.location-form,.checkbox-grid{grid-template-columns:1fr}.project-card{align-items:stretch;flex-direction:column}.project-context-name{align-items:flex-start;flex-direction:column}.project-switch-form{width:100%}}
