/* ==========================================================================
   PROPERTY ERP V5 — PROFESSIONAL WORKSPACE / MOBILE-FIRST OVERRIDES
   ========================================================================== */
:root{
  --v5-ink:#18212f;
  --v5-sub:#6d7888;
  --v5-line:#e5e9ef;
  --v5-soft:#f7f8fa;
  --v5-canvas:#eef1f3;
  --v5-navy:#111827;
  --v5-blue:#355f86;
  --v5-green:#3f7858;
  --v5-amber:#9a7115;
  --v5-red:#a64f4b;
}
body{font-size:13px;background:#f4f5f7;color:var(--v5-ink)}
.sidebar{width:236px}
.shell{margin-left:236px}
.sidebar-brand{padding-left:18px;padding-right:14px}
.sidebar-nav{padding:8px 10px 14px}
.nav-group{margin:16px 9px 6px;font-size:7px;letter-spacing:.14em}
.nav-item{min-height:36px;border-radius:8px;padding:0 9px;font-size:9.5px}
.nav-item svg{width:15px;height:15px}
.topbar{height:62px;padding:0 22px;border-bottom-color:#e7eaf0;background:rgba(255,255,255,.97)}
.content{padding:22px 24px 86px;max-width:1680px}
.search-box{height:36px;border-radius:9px;max-width:510px}
.project-switcher{height:36px;min-width:142px}
.icon-button{width:34px;height:34px;border-radius:8px}
.profile .avatar{width:31px;height:31px}
.page-header{margin-bottom:17px;align-items:center}
.page-title{font-size:21px;letter-spacing:-.03em}
.page-subtitle{font-size:9.5px;margin-top:4px}
.btn{height:34px;font-size:9px;border-radius:8px;padding:0 11px}
.panel{border-radius:10px;box-shadow:0 1px 2px rgba(10,20,35,.025)}
.panel-header{min-height:44px;padding:9px 13px}
.panel-body{padding:13px}
.metric{min-height:96px;padding:13px 14px;border-radius:10px;box-shadow:none}
.metric-value{font-size:22px;margin-top:10px}
.metric-sub{font-size:8px}
.grid{gap:10px}.section-gap{margin-top:10px}
th{height:35px}th,td{padding:9px 11px}.toolbar{min-height:48px;padding:8px 10px}

/* Role workboard */
.workboard{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.62fr);gap:10px}
.workboard-main,.workboard-side{display:grid;gap:10px;align-content:start}
.focus-list{display:grid;gap:0}
.focus-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf0f3}
.focus-item:last-child{border-bottom:0}
.focus-icon{width:30px;height:30px;border:1px solid var(--v5-line);border-radius:8px;display:grid;place-items:center;background:#fafbfc;color:#637084;font-size:8px;font-weight:800}
.focus-copy strong{display:block;font-size:9.5px;color:#293548}.focus-copy span{display:block;margin-top:3px;font-size:8px;color:#7a8595;line-height:1.4}
.focus-value{font-size:9px;font-weight:750;color:#344155;white-space:nowrap}

/* =========================== SITEPLAN V5 =========================== */
.siteplan-shell{background:#fff;border:1px solid var(--v5-line);border-radius:11px;overflow:hidden}
.siteplan-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-bottom:1px solid var(--v5-line);background:#fbfbfc;flex-wrap:wrap}
.siteplan-toolbar-left,.siteplan-toolbar-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.siteplan-toolbar select,.siteplan-toolbar input{height:32px;border:1px solid var(--v5-line);background:#fff;border-radius:7px;padding:0 9px;font-size:8.5px;color:#445065;outline:none}
.siteplan-toolbar input{width:150px}
.siteplan-status-strip{display:flex;gap:11px;align-items:center;flex-wrap:wrap;font-size:7.5px;color:#6f7a89}
.siteplan-status-strip span{display:flex;align-items:center;gap:5px}.siteplan-status-strip i{display:block;width:8px;height:8px;border-radius:2px;border:1px solid rgba(0,0,0,.12)}
.siteplan-viewport{height:min(68vh,690px);min-height:500px;position:relative;overflow:hidden;background:#dde1e4;touch-action:none;cursor:grab}
.siteplan-viewport.dragging{cursor:grabbing}
.siteplan-canvas{width:1100px;height:720px;transform-origin:0 0;will-change:transform;user-select:none}
.siteplan-canvas svg{display:block;width:1100px;height:720px;overflow:visible}
.siteplan-canvas text{font-family:Inter,ui-sans-serif,system-ui,sans-serif;pointer-events:none}
.plan-land{fill:#e5e8e4;stroke:#c8cec8;stroke-width:2}
.plan-road{fill:#c7cdd2}.plan-road-line{stroke:#f5f6f6;stroke-width:2;stroke-dasharray:16 13;opacity:.85}
.plan-green{fill:#cfdccf;stroke:#aabbaa;stroke-width:1.5}.plan-water{fill:#cfdde3;stroke:#a9bac3}.plan-facility{fill:#e8e4dc;stroke:#c7bfae;stroke-width:1.5}
.plan-label{fill:#7a8484;font-size:13px;font-weight:800;letter-spacing:.11em}.plan-mini{fill:#6e787d;font-size:10px;font-weight:700}
.plan-unit{stroke-width:2;transition:filter .12s,opacity .12s,stroke-width .12s;cursor:pointer;vector-effect:non-scaling-stroke}
.plan-unit:hover{filter:brightness(.97);stroke-width:3}.plan-unit.available{fill:#f5fbf7;stroke:#79a38a}.plan-unit.booking{fill:#fff8df;stroke:#c6a24c}.plan-unit.sold{fill:#dfe3e6;stroke:#9da7af}.plan-unit.hold{fill:#fff0ef;stroke:#c47c77}
.plan-unit.filtered{opacity:.14}.plan-unit.selected{stroke:#1f2937;stroke-width:4}
.plan-unit-label{fill:#243141;font-size:13px;font-weight:800}.plan-unit-type{fill:#667180;font-size:9px;font-weight:700}
.siteplan-hint{position:absolute;left:12px;bottom:12px;background:rgba(17,24,39,.88);color:#fff;padding:7px 9px;border-radius:7px;font-size:7.5px;box-shadow:0 4px 14px rgba(0,0,0,.12);pointer-events:none}
.siteplan-empty{height:500px;display:grid;place-items:center;text-align:center;padding:30px;background:#f5f6f7;color:#697586}.siteplan-empty strong{display:block;color:#334155;margin-bottom:6px;font-size:12px}
.plan-zoom{display:flex;background:#fff;border:1px solid var(--v5-line);border-radius:7px;overflow:hidden}.plan-zoom button{width:32px;height:30px;border:0;border-right:1px solid var(--v5-line);background:#fff;color:#4c596b;font-weight:800}.plan-zoom button:last-child{border-right:0}.plan-zoom button:hover{background:#f6f7f9}

/* Unit detail side sheet */
.detail-layer{position:fixed;inset:0;z-index:420;pointer-events:none}
.detail-backdrop{position:absolute;inset:0;background:rgba(10,16,26,.26);opacity:0;transition:.18s;pointer-events:none}
.detail-sheet{position:absolute;right:0;top:0;bottom:0;width:min(430px,92vw);background:#fff;border-left:1px solid #e2e6ec;box-shadow:-18px 0 50px rgba(12,20,32,.12);transform:translateX(104%);transition:.22s ease;display:flex;flex-direction:column;pointer-events:auto}
.detail-layer.open{pointer-events:auto}.detail-layer.open .detail-backdrop{opacity:1;pointer-events:auto}.detail-layer.open .detail-sheet{transform:none}
.detail-head{padding:15px 16px 13px;border-bottom:1px solid var(--v5-line);display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.detail-head small{display:block;font-size:7.5px;color:#8490a0;text-transform:uppercase;letter-spacing:.12em;font-weight:800}.detail-head h2{margin:4px 0 0;font-size:20px;letter-spacing:-.03em}.detail-close{width:32px;height:32px;border:1px solid var(--v5-line);background:#fff;border-radius:8px;font-size:18px;color:#738092}
.detail-body{padding:15px 16px 92px;overflow:auto}.detail-footer{position:absolute;left:0;right:0;bottom:0;padding:11px 16px max(11px,env(safe-area-inset-bottom));background:rgba(255,255,255,.98);border-top:1px solid var(--v5-line);display:grid;grid-template-columns:1fr 1.3fr;gap:7px}
.unit-hero{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:13px;border:1px solid var(--v5-line);border-radius:10px;background:#fafbfc}.unit-price{font-size:17px;font-weight:780;letter-spacing:-.035em;color:#1e293b}.unit-meta-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}.unit-meta{border:1px solid #eaedf1;border-radius:9px;padding:10px;background:#fff}.unit-meta span{display:block;font-size:7px;color:#8b95a3;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.unit-meta strong{display:block;font-size:10px;margin-top:5px;color:#334155}
.unit-timeline{position:relative;margin-top:5px}.timeline-step{display:grid;grid-template-columns:16px 1fr;gap:9px;padding:6px 0}.timeline-dot{width:9px;height:9px;border-radius:50%;background:#ccd2da;margin-top:2px;position:relative}.timeline-step:not(:last-child) .timeline-dot:after{content:"";position:absolute;width:1px;background:#e2e6eb;top:10px;bottom:-14px;left:4px}.timeline-step.done .timeline-dot{background:#617a68}.timeline-step strong{font-size:8.5px;color:#354154}.timeline-step span{display:block;font-size:7.5px;color:#8993a0;margin-top:2px}

/* =========================== ATTENDANCE V5 =========================== */
.attendance-v5{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.7fr);gap:10px}
.att-clock-card{background:#111827;color:#fff;border-radius:12px;padding:18px;min-height:265px;position:relative;overflow:hidden}.att-clock-card:after{content:"";position:absolute;width:240px;height:240px;border:1px solid rgba(255,255,255,.06);border-radius:50%;right:-85px;bottom:-100px;box-shadow:0 0 0 48px rgba(255,255,255,.02)}
.att-clock-label{font-size:7.5px;color:#aeb7c6;font-weight:800;text-transform:uppercase;letter-spacing:.12em}.att-clock-date{font-size:10px;color:#d2d7df;margin-top:6px}.att-clock-time{font-size:46px;font-weight:760;letter-spacing:-.055em;margin-top:16px;line-height:1}
.att-location-card{margin-top:18px;padding:11px 12px;border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);border-radius:9px;position:relative;z-index:2}.att-location-card strong{display:block;font-size:9.5px}.att-location-card span{display:block;font-size:8px;color:#bbc3cf;margin-top:4px;line-height:1.5}
.att-main-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px;position:relative;z-index:2}.att-main-actions .btn{height:40px}.att-main-actions .btn-light{background:#fff;color:#18212f;border-color:#fff}.att-main-actions .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.2)}
.gps-status{border:1px solid var(--v5-line);background:#fff;border-radius:11px;padding:14px}.gps-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.gps-head h3{margin:0;font-size:10px}.gps-pill{font-size:7px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:5px 7px;border-radius:999px;background:#eef1f4;color:#6b7686}.gps-pill.valid{background:#edf7f0;color:#39724f}.gps-pill.invalid{background:#fff0ef;color:#a34d49}
.gps-visual{height:150px;border:1px solid #e7eaee;border-radius:9px;background:linear-gradient(90deg,#f4f5f7 1px,transparent 1px),linear-gradient(#f4f5f7 1px,transparent 1px),#fafbfc;background-size:22px 22px;margin-top:12px;position:relative;overflow:hidden}.gps-radius{position:absolute;width:104px;height:104px;border:1.5px dashed #66839d;background:rgba(80,113,142,.05);border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}.gps-office{position:absolute;width:10px;height:10px;border-radius:50%;background:#23384a;left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 5px rgba(35,56,74,.1)}.gps-user{position:absolute;width:10px;height:10px;border-radius:50%;background:#b36c37;left:58%;top:43%;transform:translate(-50%,-50%);box-shadow:0 0 0 5px rgba(179,108,55,.12)}.gps-visual-label{position:absolute;left:8px;bottom:7px;font-size:7px;color:#8a94a2;background:rgba(255,255,255,.88);padding:3px 5px;border-radius:4px}
.gps-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px}.gps-stat{border:1px solid #edf0f3;border-radius:8px;padding:8px}.gps-stat span{display:block;font-size:6.5px;color:#8b96a4;text-transform:uppercase;font-weight:800;letter-spacing:.07em}.gps-stat strong{display:block;margin-top:4px;font-size:9px;color:#354154;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.attendance-list-mobile{display:none}

/* Mobile card lists for generic tables */
.v5-mobile-list{display:none}
.v5-mobile-card{border:1px solid var(--v5-line);background:#fff;border-radius:9px;padding:11px}.v5-mobile-card+.v5-mobile-card{margin-top:7px}.v5-mobile-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.v5-mobile-card-head strong{font-size:9.5px}.v5-mobile-card-head span{font-size:7.5px;color:#7c8797}.v5-mobile-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:9px}.v5-mobile-card-grid div{font-size:7.5px;color:#8792a1}.v5-mobile-card-grid b{display:block;font-size:8.5px;color:#3b475a;margin-top:2px}

/* Better mobile ergonomics */
@media(max-width:980px){
  .sidebar{width:min(286px,86vw)}.shell{margin-left:0}.topbar{height:58px}.content{padding:16px 12px 78px}.workboard{grid-template-columns:1fr}
  .siteplan-viewport{height:calc(100dvh - 245px);min-height:430px}.siteplan-toolbar{padding:8px}.siteplan-toolbar-left{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto}.siteplan-toolbar-left select{min-width:0;width:100%}.siteplan-toolbar-left input{display:none}.siteplan-toolbar-right{width:100%;justify-content:space-between}.siteplan-status-strip{gap:8px}
  .attendance-v5{grid-template-columns:1fr}.att-clock-card{min-height:245px}
}
@media(max-width:720px){
  body{font-size:12px}.content{padding:13px 10px 76px}.page-header{gap:10px;margin-bottom:13px}.page-title{font-size:18px}.page-subtitle{font-size:8.5px}.page-title .badge{display:none}
  .grid-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.grid-3,.grid-2{gap:7px}.metric{min-height:86px;padding:11px}.metric-value{font-size:19px}.metric-label{font-size:7px}.metric-sub{font-size:7px;margin-top:4px}
  .panel-header{min-height:41px;padding:8px 10px}.panel-body{padding:10px}.panel-header h3{font-size:9.5px}
  .topbar{padding:0 8px}.topbar-left{gap:6px}.search-box{height:34px}.search-box input{font-size:8.5px}.top-actions .notif{display:none}.profile .avatar{width:30px;height:30px}
  .page-actions{display:flex;overflow:auto;gap:5px;padding-bottom:1px}.page-actions .btn{flex:0 0 auto;min-width:max-content}.page-actions .btn:only-child{width:100%}
  .toolbar{display:grid;grid-template-columns:1fr auto;overflow:visible;gap:6px}.toolbar input{min-width:0;width:100%}.toolbar select{max-width:126px}
  .table-wrap:not(.keep-table) table{min-width:720px}
  .pipeline{grid-template-columns:repeat(5,minmax(250px,84vw));min-height:calc(100dvh - 200px);scroll-snap-type:x mandatory}.pipe-col{min-height:0;scroll-snap-align:start}.lead-card{padding:10px}
  .siteplan-shell{border-radius:9px;margin-left:-1px;margin-right:-1px}.siteplan-viewport{height:calc(100dvh - 252px);min-height:420px}.siteplan-toolbar-right{overflow:auto;flex-wrap:nowrap}.siteplan-status-strip{min-width:max-content}.siteplan-hint{font-size:6.8px;left:8px;bottom:8px}.plan-zoom{position:absolute;right:8px;top:8px;z-index:5;box-shadow:0 3px 10px rgba(0,0,0,.08)}
  .detail-sheet{top:auto;left:0;right:0;bottom:0;width:100%;height:min(76dvh,650px);border-left:0;border-top:1px solid #e2e6ec;border-radius:16px 16px 0 0;transform:translateY(104%)}.detail-layer.open .detail-sheet{transform:none}.detail-body{padding:13px 13px 88px}.detail-footer{padding-left:12px;padding-right:12px}.detail-head{padding:13px}.unit-meta-grid{gap:6px}.unit-meta{padding:9px}
  .att-clock-card{border-radius:10px;padding:15px}.att-clock-time{font-size:40px}.gps-status{padding:11px}.gps-visual{height:130px}.gps-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
  .attendance-desktop-table{display:none}.attendance-list-mobile{display:grid;gap:7px}
  .mobile-nav{min-height:58px}.mobile-nav button{min-height:54px;font-size:6.5px}.mobile-nav button span{max-width:68px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-nav button svg{width:15px;height:15px}
  .modal-layer{padding:0;align-items:end}.modal{max-height:92dvh;border-radius:16px 16px 0 0}.form-field input,.form-field select,.form-field textarea{min-height:42px;font-size:10px}.modal-footer .btn{height:42px}
}
@media(max-width:390px){
  .content{padding-left:8px;padding-right:8px}.grid-4{gap:6px}.metric{padding:10px;min-height:82px}.metric-value{font-size:18px}.metric-sub{white-space:normal}.topbar-left>.icon-button{width:32px;height:32px}.search-box{padding-left:9px}.search-box svg{display:none}.siteplan-viewport{height:calc(100dvh - 246px)}.att-main-actions{grid-template-columns:1fr}.gps-stats{gap:4px}.gps-stat{padding:7px 5px}.detail-footer{grid-template-columns:1fr 1fr}.login-form-side{padding:22px 16px}
}
@media(max-width:360px){
  .content{padding-left:7px;padding-right:7px}.page-title{font-size:17px}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{min-height:80px}.siteplan-viewport{min-height:390px}.mobile-nav button span{font-size:6px}.top-actions .profile{display:none}.search-box input::placeholder{color:transparent}
}
