:root{--navy:#06256d;--navy2:#0c397e;--blue:#1654b0;--accent:#2677d1;--sky:#eaf2fd;--bg:#f5f8fc;--white:#fff;--ink:#192b46;--muted:#687a91;--border:#e0e8f1;--good:#087c59;--goodbg:#e4f7ef;--warn:#a5690b;--warnbg:#fff4df;--danger:#a92f3d;--dangerbg:#ffedf0;--shadow:0 3px 20px rgba(14,46,96,.04)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg);font-size:14px}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:var(--blue)}.app-shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;width:250px;flex:0 0 250px;background:linear-gradient(160deg,#061d55 0%,#0a3379 100%);padding:24px 16px;color:#fff;display:flex;flex-direction:column}.brand{display:block;padding:7px 8px 11px}.brand img{width:172px;max-width:100%;height:63px;object-fit:contain;object-position:center;filter:brightness(0) invert(1)}.side-project{padding:21px 14px 24px;margin:8px 0 19px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.10);border-radius:12px;display:flex;flex-direction:column;gap:5px}.side-project strong{font:800 21px Manrope,sans-serif;letter-spacing:-.6px}.side-project span:last-child{font-size:12px;color:#cbdaf4}.eyebrow{font-size:10px;letter-spacing:1.3px;font-weight:800;color:#aac2ee}.nav-label{font-weight:800;font-size:10px;letter-spacing:1.1px;margin:0 15px 12px;color:#a2b9de}.side-nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#dbe6fa;display:flex;gap:12px;align-items:center;text-align:left;padding:13px 13px;border-radius:10px;font-weight:600;width:100%;transition:background .15s}.nav-item:hover{background:rgba(255,255,255,.07)}.nav-item.active{background:rgba(255,255,255,.15);color:white}.nav-icon{font-size:19px;width:23px;display:inline-grid;place-items:center}.side-footer{margin-top:auto;padding:21px 11px 4px;font-size:12px;color:#c5d6ef;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.side-footer small{display:block;flex-basis:100%;opacity:.75;margin-left:16px}.pulse-dot{width:8px;height:8px;background:#7fe2b0;border-radius:50%}.main{flex:1;min-width:0}.topbar{height:81px;display:flex;justify-content:space-between;align-items:center;padding:15px clamp(20px,3.3vw,58px);background:var(--white);border-bottom:1px solid var(--border)}.crumb{font-size:12px;color:var(--muted);margin-bottom:5px}.crumb span{padding:0 6px;color:#b1bfd0}.topbar strong{font-size:17px;font-family:Manrope,sans-serif}.right-tools{display:flex;align-items:center;gap:14px}.demo-label{color:#8b5a0c;border:1px solid #efddb6;background:#fff7e7;font-size:10px;border-radius:30px;padding:7px 10px;font-weight:800;letter-spacing:.6px}.avatar{display:grid;place-items:center;width:35px;height:35px;background:var(--sky);color:var(--navy);font-weight:800;border-radius:50%}.notice{margin:20px clamp(20px,3.3vw,58px) 0;background:#fff8ec;border:1px solid #f1dcac;border-left:4px solid #d99c32;color:#6c552e;border-radius:8px;padding:10px 14px;font-size:12px;line-height:1.55}.content{padding:28px clamp(20px,3.3vw,58px) 46px;max-width:1600px}.app-footer{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:#97a5b6;padding:0 clamp(20px,3.3vw,58px) 22px}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:25px}.kicker{font-size:11px;font-weight:800;letter-spacing:1.5px;color:var(--blue);text-transform:uppercase;margin-bottom:8px}.page-heading h1{font:800 clamp(25px,2.7vw,34px)/1.16 Manrope,sans-serif;letter-spacing:-1.3px;margin:0 0 9px}.subtext{color:var(--muted);line-height:1.6;max-width:760px;margin:0;font-size:13px}.page-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.button{border:1px solid var(--border);background:#fff;color:var(--ink);border-radius:9px;min-height:40px;padding:10px 14px;font-weight:700;display:inline-flex;justify-content:center;gap:8px;align-items:center;text-decoration:none;white-space:nowrap;font-size:12px}.button:hover{border-color:#adc2dc;background:#fbfdff}.button.primary{background:var(--navy);border-color:var(--navy);color:#fff}.button.primary:hover{background:var(--navy2)}.button.blue{color:var(--navy);background:var(--sky);border-color:var(--sky)}.button.sm{min-height:31px;padding:6px 10px}.button.danger{color:var(--danger);background:var(--dangerbg);border-color:#f4d8df}.grid-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.kpi,.panel,.building-card{border:1px solid var(--border);border-radius:13px;background:#fff;box-shadow:var(--shadow)}.kpi{padding:20px}.kpi-label{font-size:12px;font-weight:600;color:var(--muted);display:flex;justify-content:space-between}.kpi-label span{font-size:17px;color:#6c9cd6}.kpi-number{font:800 33px Manrope,sans-serif;letter-spacing:-1.4px;margin:11px 0 4px}.kpi-foot{font-size:11px;color:#7c8ca1}.kpi-foot strong{color:var(--good)}.two-col{display:grid;grid-template-columns:1.34fr 1fr;gap:18px}.panel{overflow:hidden}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:20px 21px 14px}.panel-head h2{font:800 16px Manrope,sans-serif;margin:0}.panel-head p{color:var(--muted);font-size:12px;margin:5px 0 0}.panel-body{padding:0 21px 21px}.muted{color:var(--muted)}.muted-sm{font-size:12px;color:var(--muted)}.panel-spacer{height:8px}.building-cards{display:grid;grid-template-columns:1fr 1fr;gap:15px}.building-card{padding:21px;position:relative;overflow:hidden;min-height:177px}.building-card:before{content:"";position:absolute;right:-32px;top:-35px;width:135px;height:135px;border-radius:30px;transform:rotate(28deg);background:#eef5ff}.building-card .value{font:800 29px Manrope,sans-serif;margin:14px 0 2px;position:relative}.building-card .label{font:800 16px Manrope,sans-serif;position:relative}.building-card .desc{color:var(--muted);font-size:12px;position:relative}.building-card .code{background:var(--sky);color:var(--navy);border-radius:20px;padding:5px 8px;font-weight:700;font-size:10px;position:relative}.building-card footer{display:flex;justify-content:space-between;align-items:center;margin-top:17px;position:relative}.fine{font-size:11px;color:var(--muted)}.pill{font-size:10px;font-weight:800;border-radius:6px;padding:5px 8px;letter-spacing:.2px;white-space:nowrap}.pill.good{color:var(--good);background:var(--goodbg)}.pill.warn{color:var(--warn);background:var(--warnbg)}.pill.neutral{color:#566882;background:#edf2f7}.pill.blue{color:var(--navy);background:var(--sky)}.pill.red{color:var(--danger);background:var(--dangerbg)}.row{display:flex;align-items:center;gap:10px}.split{display:flex;align-items:center;justify-content:space-between;gap:10px}.list-rows{display:grid;gap:0}.list-row{display:flex;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid #edf2f6}.list-row:last-child{border-bottom:0}.bullet-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:9px;background:#eef5ff;color:#2e65ae;font-size:19px;flex:0 0 36px}.list-row strong{font-size:12px}.list-row small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.list-row .push{margin-left:auto}.progress-track{background:#eaf0f7;height:8px;border-radius:20px;overflow:hidden}.progress-bar{background:var(--blue);height:100%;border-radius:20px}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:12px}.table th{text-transform:uppercase;letter-spacing:.65px;color:#8090a3;background:#f8fafd;font-size:10px;text-align:left;padding:13px 17px;white-space:nowrap}.table td{padding:13px 17px;border-top:1px solid #edf1f6;vertical-align:middle}.table tbody tr:hover{background:#fafcfe}.table .mono{font-weight:800;font-family:Manrope,sans-serif;color:var(--navy)}.filters{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.input,.select{border:1px solid #d9e3ee;border-radius:8px;padding:10px 12px;background:#fff;color:var(--ink);min-height:39px;max-width:100%;outline:none;font-size:12px}.input:focus,.select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(38,119,209,.10)}.input[type="date"]{min-width:150px}.select{min-width:105px}.grow{flex:1;min-width:170px}.cards-stack{display:grid;gap:16px}.floor-layout{display:grid;grid-template-columns:185px minmax(0,1fr);gap:16px}.floor-list{display:grid;gap:7px;align-content:start}.floor-button{border:1px solid var(--border);border-radius:9px;padding:13px 11px;text-align:left;background:#fff;display:flex;justify-content:space-between;gap:8px;color:var(--ink);font-weight:700}.floor-button.active{background:var(--navy);border-color:var(--navy);color:#fff}.floor-button .count{opacity:.6;font-weight:500;font-size:11px}.floor-map{padding:22px}.floor-map>.split{margin-bottom:17px}.floor-map .note{background:#f6f9fe;border:1px solid #e6edf7;padding:10px 12px;border-radius:8px;font-size:11px;color:#6c7891;margin-top:16px;line-height:1.5}.unit-grid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px}.unit-tile{border:1px solid #dce5ef;border-radius:8px;min-height:57px;display:grid;place-items:center;background:#f7f9fc;color:#516479;gap:0;padding:8px 3px;line-height:1.2}.unit-tile:hover,.unit-tile.active{outline:2px solid var(--accent);outline-offset:1px}.unit-tile strong{font:800 12px Manrope,sans-serif}.unit-tile small{font-size:9px}.unit-tile.invited{background:#e8f2fd;border-color:#c0dcfb;color:#1f5b9b}.unit-tile.registered{background:#fff7e7;border-color:#ecd8a5;color:#966b26}.unit-tile.booked{background:#e0f3ef;border-color:#a5d9ca;color:#0b785b}.unit-tile.completed{background:#d7eee9;border-color:#85cbb9;color:#086249}.unit-detail{margin-top:15px;background:#f4f8fd;border:1px solid #dce7f5;border-radius:10px;padding:15px}.unit-detail h3{font-size:14px;margin:0 0 6px}.unit-detail .detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:12px}.detail-grid label{color:var(--muted);display:block;font-size:10px;margin-bottom:4px}.detail-grid span{font-size:12px;font-weight:700}.legend{display:flex;flex-wrap:wrap;gap:13px;margin:13px 0}.legend .key{display:flex;align-items:center;gap:6px;font-size:11px;color:#687b90}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-top:12px}.weekday{text-align:center;font-size:10px;text-transform:uppercase;color:#8493a7;font-weight:700;margin-bottom:2px}.day{min-height:68px;text-align:left;background:#fff;border:1px solid #dde6f1;border-radius:8px;padding:9px;display:flex;flex-direction:column;justify-content:space-between}.day:hover{border-color:#93b4d9}.day.selected{background:#eef5ff;border-color:#4f83c9;box-shadow:0 0 0 1px #4f83c9}.day .daynum{font:700 12px Manrope,sans-serif}.day .daycount{font-size:10px;color:#7c8ca1}.day .daycount.has{color:#0a725d;font-weight:700}.day.othermonth{opacity:.2;pointer-events:none}.booking-grid{display:grid;grid-template-columns:1.12fr 1fr;gap:17px}.booking-form{display:grid;gap:12px}.form-item{display:flex;flex-direction:column;gap:6px}.form-item label{font-size:11px;font-weight:700;color:#556982}.form-note{font-size:11px;color:#7c8ca1;line-height:1.6}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.slot{border:1px solid #dce4ef;border-radius:9px;padding:12px 7px;background:#fff;display:grid;gap:5px;text-align:center;min-height:69px}.slot strong{font-size:11px}.slot span{font-size:10px;color:var(--muted)}.slot.selected{background:#eef5ff;border-color:#3174c8}.slot.unavailable{background:#f7f9fb;color:#98a4b3}.slot.unavailable span{color:#a65c5c}.upload-zone{border:1.5px dashed #b8cfe8;background:#f9fcff;padding:30px;text-align:center;border-radius:12px}.upload-symbol{font-size:35px;color:#2c6bbc}.upload-zone h3{margin:9px 0 5px;font-size:16px}.upload-zone p{font-size:12px;color:var(--muted);line-height:1.6}.upload-zone input{display:none}.validation{padding:14px;border-radius:9px;border:1px solid #d4e5f9;background:#f5faff;font-size:12px}.validation.bad{background:#fff7f7;border-color:#f6d5d9}.errors{margin:8px 0 0;padding-left:17px;max-height:115px;overflow:auto}.errors li{margin:5px 0}.statmini{font:800 25px Manrope,sans-serif}.handover-item{padding:12px 0;border-bottom:1px solid #eef2f7;display:flex;align-items:center;gap:12px}.handover-item:last-child{border-bottom:none}.handover-item .item-text{flex:1;font-size:12px;font-weight:600}.handover-item .select{min-width:120px;max-width:135px;padding:8px 9px}.handover-group{margin-bottom:15px}.handover-group .panel-head{border-bottom:1px solid var(--border)}.small-note{color:var(--muted);font-size:11px;line-height:1.7}.tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:15px}.tab{border:1px solid var(--border);background:#fff;border-radius:9px;padding:9px 12px;font-size:12px;font-weight:700}.tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.summary-card{background:#f5f9ff;border:1px solid #dce9fa;border-radius:11px;padding:18px}.summary-card strong{display:block;font-size:15px;margin:7px 0}.summary-card p{color:var(--muted);font-size:12px;line-height:1.6;margin:0}.info-table{width:100%;border-collapse:collapse}.info-table th,.info-table td{border-bottom:1px solid #edf1f6;text-align:left;font-size:12px;padding:12px 4px}.info-table th{width:200px;color:var(--muted);font-weight:500}.toast{position:fixed;bottom:22px;right:22px;background:#0a2b64;color:white;padding:11px 16px;border-radius:9px;box-shadow:0 12px 30px #0003;opacity:0;transform:translateY(12px);pointer-events:none;transition:.18s;max-width:min(400px,90vw);font-size:12px;z-index:20}.toast.show{opacity:1;transform:translateY(0)}.empty{display:grid;place-items:center;min-height:150px;text-align:center;color:var(--muted);font-size:12px}.empty strong{display:block;color:var(--ink);font-size:15px;margin-bottom:7px}.code-list{background:#0b274f;color:#d4e4ff;padding:16px;border-radius:9px;overflow:auto;font:12px/1.65 monospace}.section-gap{margin-top:19px}.desktop-only{display:initial}
@media(max-width:1180px){.grid-kpis{grid-template-columns:repeat(2,1fr)}.unit-grid{grid-template-columns:repeat(6,1fr)}.two-col{grid-template-columns:1fr}.booking-grid{grid-template-columns:1fr}.sidebar{width:215px;flex-basis:215px}.brand img{width:155px}.side-project strong{font-size:19px}}
@media(max-width:730px){.app-shell{display:block}.sidebar{position:relative;width:100%;height:auto;padding:8px 12px;display:block}.brand{display:inline-block;padding:0}.brand img{height:42px;width:114px}.side-project,.nav-label,.side-footer{display:none}.side-nav{display:flex;gap:5px;overflow:auto;margin-top:5px;padding-bottom:4px}.nav-item{flex:0 0 auto;width:auto;font-size:11px;padding:9px}.nav-icon{font-size:15px;width:16px}.topbar{height:auto;padding:13px 16px}.right-tools{gap:6px}.demo-label{font-size:8px;letter-spacing:0;padding:6px}.avatar{width:31px;height:31px}.notice{margin:12px 14px 0}.content{padding:20px 14px 30px}.page-heading{flex-direction:column;gap:12px}.grid-kpis{gap:9px}.kpi{padding:14px}.kpi-number{font-size:27px}.building-cards,.summary-grid{grid-template-columns:1fr}.floor-layout{grid-template-columns:1fr}.floor-list{grid-template-columns:repeat(6,1fr);gap:5px}.floor-button{padding:9px 6px;display:block;text-align:center}.floor-button .count{display:block;margin-top:3px}.unit-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.floor-map{padding:13px}.unit-detail .detail-grid{grid-template-columns:1fr 1fr}.calendar-grid{gap:4px}.day{padding:6px;min-height:54px}.day .daycount{font-size:8px}.slots{grid-template-columns:1fr}.app-footer{display:grid;padding:0 15px 20px}.table th,.table td{padding:10px}.panel-head{padding:16px}.panel-body{padding:0 16px 16px}.handover-item{flex-wrap:wrap}.handover-item .select{max-width:100%}}

.utility-form-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}@media(max-width:1180px){.utility-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:730px){.utility-form-grid{grid-template-columns:1fr}}

/* Phase two: drawing-anchored suite map + resident portal link */
.header-resident-link{background:#eaf3ff;border:1px solid #c4daf4;border-radius:9px;padding:10px 12px;font-size:11px;font-weight:800;color:#174b98;text-decoration:none;white-space:nowrap}
.header-resident-link:hover{background:#dcecff}
.management-map-scroll{overflow:auto;background:#f4f7fa;border:1px solid #dce6ef;border-radius:11px}
.management-map-stage{min-width:900px;position:relative;line-height:0}
.management-map-stage img{display:block;width:100%;height:auto}
.management-map-pin{position:absolute;transform:translate(-50%,-50%);min-width:25px;height:25px;padding:0 3px;display:grid;place-items:center;border-radius:15px;border:2px solid white;box-shadow:0 2px 6px #05255344;color:white;background:#174891;font-size:9px;font-weight:850;line-height:1}
.management-map-pin:hover,.management-map-pin.selected{transform:translate(-50%,-50%) scale(1.33);background:#f3a83c;color:#172f55;z-index:5}
.management-map-pin.faded{opacity:.15}
.management-map-pin.invited{background:#4ca5da}.management-map-pin.registered{background:#d29a3a}.management-map-pin.booked{background:#23846a}.management-map-pin.completed{background:#136748}
.manager-detail-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:17px}
@media(max-width:730px){.header-resident-link{font-size:9px;padding:7px 9px}.management-map-stage{min-width:940px}.management-map-pin{width:25px;height:25px}.floor-map{padding:12px}}
