:root{--ink:#17211d;--muted:#718079;--line:#e4e9e6;--bg:#f4f6f3;--panel:#fff;--green:#1d6b55;--green-dark:#142b25;--mint:#e4f0eb;--lime:#b8de68;--amber:#f0b957;--red:#d8655b;--blue:#477b9d;--radius:16px;--shadow:0 12px 32px rgba(21,46,38,.08)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"DM Sans",sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:256px;background:var(--green-dark);color:#fff;padding:26px 18px 20px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 28px}.brand-mark{width:40px;height:40px;border-radius:12px;background:var(--lime);color:var(--green-dark);display:grid;place-items:center;font-family:Manrope;font-weight:800;font-size:22px}.brand b{display:block;font:800 19px Manrope}.brand small{display:block;color:#91a59e;font-size:9px;letter-spacing:1.8px;margin-top:3px}nav{display:flex;flex-direction:column;gap:5px;overflow:auto}.nav-label{font-size:10px;letter-spacing:1.5px;color:#718b82;padding:18px 12px 7px}.nav-item{border:0;background:transparent;color:#aabbb5;border-radius:10px;padding:11px 12px;text-align:left;display:flex;align-items:center;gap:12px;font-weight:600;font-size:14px}.nav-item span:first-child{width:20px;text-align:center;font-size:17px}.nav-item.active,.nav-item:hover{background:#244139;color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--lime)}.sidebar-foot{margin-top:auto;border-top:1px solid #29443c;padding:18px 8px 0;display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:12px;background:#d8e8e1;color:var(--green-dark);display:grid;place-items:center;font-weight:700}.sidebar-foot strong,.sidebar-foot small{display:block;font-size:12px}.sidebar-foot small{color:#849a92;margin-top:2px}.sidebar-foot .icon-btn{margin-left:auto;color:#aabbb5}.main{margin-left:256px;min-height:100vh}.topbar{height:78px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 34px;position:sticky;top:0;z-index:10}.menu-btn{display:none}.project-switch span{font-size:11px;color:var(--muted);display:block}.project-switch button{background:transparent;border:0;padding:2px 0;font-weight:700}.top-actions{display:flex;align-items:center;gap:13px;margin-left:auto}.global-search{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);padding:0 14px;border-radius:10px;height:40px}.global-search input{width:240px;border:0;outline:0;background:transparent}.icon-btn{border:0;background:transparent;font-weight:700}.notification{position:relative;font-size:20px}.notification i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--red);right:3px;top:3px}.primary,.secondary,.danger,.ghost{border:0;border-radius:10px;padding:11px 18px;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover{background:#15523f}.secondary{background:var(--mint);color:var(--green)}.danger{background:#f9e9e7;color:#aa443c}.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.compact{padding:10px 14px}.content{padding:32px 34px 60px;max-width:1600px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:25px}.eyebrow{color:var(--green);font-weight:800;font-size:11px;letter-spacing:1.6px;text-transform:uppercase}.page-head h1{font:800 30px Manrope;margin:5px 0}.page-head p{margin:0;color:var(--muted)}.date-badge{background:#fff;border:1px solid var(--line);padding:10px 14px;border-radius:10px;font-size:13px;color:var(--muted)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden}.kpi::after{content:"";position:absolute;width:80px;height:80px;border-radius:50%;background:var(--mint);right:-26px;top:-30px}.kpi-top{display:flex;justify-content:space-between;color:var(--muted);font-weight:600;font-size:13px}.kpi-icon{color:var(--green);font-size:18px}.kpi strong{font:800 28px Manrope;display:block;margin:15px 0 5px}.trend{font-size:12px;color:var(--green)}.trend.down{color:var(--red)}.dashboard-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 2px rgba(0,0,0,.01)}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}.panel-head h2{font:700 16px Manrope;margin:0}.panel-head a{font-size:12px;color:var(--green);font-weight:700}.chart-wrap{height:280px;padding:25px 22px 20px;display:flex;gap:15px}.y-axis{font-size:10px;color:#98a29e;display:flex;flex-direction:column;justify-content:space-between;padding-bottom:24px}.chart{position:relative;flex:1;border-bottom:1px solid var(--line);display:flex;align-items:flex-end;justify-content:space-around;gap:12px;background:repeating-linear-gradient(to bottom,#fff 0,#fff 54px,#edf0ee 55px)}.bar-group{height:100%;display:flex;align-items:flex-end;gap:4px;position:relative}.bar{width:13px;border-radius:5px 5px 0 0;background:var(--green)}.bar.alt{background:var(--lime)}.bar-group label{position:absolute;bottom:-22px;width:50px;left:50%;transform:translateX(-50%);font-size:10px;text-align:center;color:var(--muted)}.activity-list{padding:5px 22px}.activity{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.activity:last-child{border:0}.activity-icon{width:34px;height:34px;border-radius:10px;background:var(--mint);display:grid;place-items:center;color:var(--green)}.activity p{margin:0;font-size:13px}.activity small{color:var(--muted)}.activity time{font-size:11px;color:var(--muted)}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.searchbox{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 13px;height:42px;min-width:280px}.searchbox input{border:0;outline:0;width:100%}.toolbar select{height:42px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:#fff}.toolbar .primary{margin-left:auto}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:850px}.data-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);padding:13px 16px;background:#f8faf8;border-bottom:1px solid var(--line)}.data-table td{padding:15px 16px;border-bottom:1px solid var(--line);font-size:13px}.data-table tr:last-child td{border:0}.data-table tbody tr:hover{background:#fbfcfb}.name-cell{display:flex;align-items:center;gap:10px;font-weight:700}.mini-avatar{width:32px;height:32px;border-radius:9px;background:var(--mint);color:var(--green);display:grid;place-items:center;font-size:11px}.pill{display:inline-block;padding:5px 9px;border-radius:99px;background:#edf2ef;color:#56645f;font-size:11px;font-weight:700}.pill.hot,.pill.booked,.pill.paid{background:#e1f2ea;color:#176246}.pill.warm,.pill.follow-up,.pill.partial{background:#fff2d9;color:#966711}.pill.cold,.pill.available{background:#e7eff7;color:#3e6e91}.pill.cancelled,.pill.overdue{background:#fae7e5;color:#a84840}.money{font-weight:700;font-variant-numeric:tabular-nums}.table-actions{display:flex;gap:5px}.table-actions button{border:0;background:transparent;color:var(--green);font-weight:700}.inventory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.unit-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:17px}.unit-card-top{display:flex;justify-content:space-between;align-items:start}.unit-no{font:800 22px Manrope}.unit-card p{color:var(--muted);font-size:12px;margin:5px 0 18px}.unit-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-top:15px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.unit-meta b{display:block;color:var(--ink);font-size:13px;margin-top:3px}.modal-root:empty{display:none}.modal-root{position:fixed;inset:0;background:rgba(9,24,19,.55);z-index:50;display:grid;place-items:center;padding:20px}.modal{width:min(640px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:22px 24px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font:800 20px Manrope}.modal-body{padding:22px 24px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field.full{grid-column:1/-1}.field label{display:block;font-size:12px;font-weight:700;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;border:1px solid #dce2df;border-radius:9px;padding:11px 12px;outline:0;background:#fff}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f0eb}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:0 24px 22px}.toast{position:fixed;right:25px;bottom:25px;background:var(--green-dark);color:#fff;padding:13px 18px;border-radius:10px;z-index:80;opacity:0;transform:translateY(15px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}.empty{padding:70px 20px;text-align:center;color:var(--muted)}
@media(max-width:1100px){.kpi-grid,.inventory-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.global-search{display:none}}
@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}.main{margin:0}.menu-btn{display:block;border:0;background:transparent;font-size:20px;margin-right:15px}.topbar{padding:0 18px}.content{padding:24px 18px}.kpi-grid,.inventory-grid{grid-template-columns:1fr}.page-head{align-items:start;gap:15px}.date-badge{display:none}.toolbar{flex-wrap:wrap}.toolbar .primary{margin-left:0}.searchbox{min-width:100%}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
.activity small{display:block;margin-top:3px}
.unit-card{cursor:pointer;transition:transform .16s,box-shadow .16s}.unit-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.unit-summary{grid-template-columns:1fr 1fr}.unit-summary .kpi strong{font-size:19px}.direction-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.direction{border:1px solid var(--line);border-radius:12px;padding:14px}.direction span{display:block;color:var(--green);font-size:10px;text-transform:uppercase;letter-spacing:1px;font-weight:800}.direction b,.direction small{display:block;margin-top:5px}.direction small{color:var(--muted)}
.field-hint{display:block;margin-top:6px;color:var(--muted);font-size:12px}
.stage-modal{width:min(820px,100%)}.stage-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.stage-summary span{padding:12px;border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:11px}.stage-summary b{display:block;color:var(--ink);font-size:15px;margin-top:4px}.stage-list{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:20px}.stage-row{display:grid;grid-template-columns:1.6fr 1fr auto auto;gap:14px;align-items:center;padding:13px 15px;border-bottom:1px solid var(--line)}.stage-row:last-child{border-bottom:0}.stage-row small{display:block;color:var(--muted);margin-top:3px}.danger-text{color:var(--red)}.danger-text:disabled{opacity:.35;cursor:not-allowed}.stage-form{grid-template-columns:1.5fr 1fr 1fr auto}.stage-submit{display:flex;align-items:flex-end}.compact-empty{padding:24px}.pill.upcoming{background:#e7eff7;color:#3e6e91}
.unit-card.available{background:#f1faf5;border-color:#bfe2cd}.unit-card.booked{background:#fff3f1;border-color:#efc5c0}.plot-dossier{width:min(1040px,100%)}.plot-dossier h3{font:800 15px Manrope;margin:24px 0 10px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.detail-grid span{border:1px solid var(--line);border-radius:10px;padding:12px;color:var(--muted);font-size:11px}.detail-grid b{display:block;color:var(--ink);margin-top:4px}.dossier-table{border:1px solid var(--line);border-radius:12px;max-height:260px}.ownership-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden}.ownership-list>div{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.ownership-list>div:last-child{border-bottom:0}.ownership-list span{color:var(--muted);font-size:12px}.transfer-note{background:#fff6df;border:1px solid #efd79b;border-radius:10px;padding:12px;font-size:12px;line-height:1.5}
.pill.current-buyer{background:#e1f2ea;color:#176246}.pill.previous-buyer{background:#f3eceb;color:#85534e}
@media(max-width:760px){.stage-summary{grid-template-columns:1fr 1fr}.stage-row{grid-template-columns:1fr auto}.stage-row .pill{justify-self:start}.stage-form{grid-template-columns:1fr}.detail-grid{grid-template-columns:1fr}.ownership-list>div{grid-template-columns:1fr auto}.ownership-list span{grid-column:1/-1}}

/* Glassmorphism theme */
:root{--ink:#10211b;--muted:#5f746b;--line:rgba(255,255,255,.62);--bg:#e8f1ed;--panel:rgba(255,255,255,.62);--green:#078f61;--green-dark:#063e31;--mint:rgba(211,246,229,.72);--lime:#62e39d;--red:#df3f49;--radius:18px;--shadow:0 18px 50px rgba(16,58,45,.14),inset 0 1px 0 rgba(255,255,255,.72);--glass:rgba(255,255,255,.58);--glass-strong:rgba(255,255,255,.76);--glass-border:rgba(255,255,255,.72)}
html,body{background:linear-gradient(135deg,#d8eee5 0%,#f5ece9 48%,#dbece8 100%);background-attachment:fixed}
body::before,body::after{content:"";position:fixed;border-radius:50%;filter:blur(8px);pointer-events:none;z-index:-1}
body::before{width:430px;height:430px;background:rgba(45,205,135,.22);left:12%;top:-150px}
body::after{width:480px;height:480px;background:rgba(231,63,73,.14);right:-130px;bottom:-180px}
.sidebar{background:linear-gradient(180deg,rgba(5,55,42,.91),rgba(5,39,32,.82));border-right:1px solid rgba(255,255,255,.17);box-shadow:18px 0 45px rgba(8,49,38,.18);backdrop-filter:blur(22px) saturate(140%);-webkit-backdrop-filter:blur(22px) saturate(140%)}
.brand-mark{background:linear-gradient(145deg,#7af0ad,#36c97b);box-shadow:0 8px 24px rgba(47,214,126,.34),inset 0 1px 0 rgba(255,255,255,.7)}
.nav-item.active,.nav-item:hover{background:rgba(255,255,255,.12);box-shadow:inset 0 1px rgba(255,255,255,.1)}.nav-item.active{box-shadow:inset 3px 0 #65efa2,inset 0 1px rgba(255,255,255,.12)}
.topbar{background:rgba(255,255,255,.55);border-color:rgba(255,255,255,.7);box-shadow:0 8px 28px rgba(22,64,52,.08);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%)}
.panel,.kpi,.modal,.date-badge,.searchbox,.toolbar select,.global-search,.ghost{background:var(--glass);border:1px solid var(--glass-border);box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%)}
.modal-root{background:rgba(7,31,24,.46);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.modal{background:rgba(248,252,250,.88);border:1px solid rgba(255,255,255,.82)}
.global-search,.searchbox{box-shadow:inset 0 1px 0 rgba(255,255,255,.68),0 8px 24px rgba(23,65,52,.07)}
.field input,.field select,.field textarea{background:rgba(255,255,255,.64);border-color:rgba(119,151,139,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:#18a872;box-shadow:0 0 0 4px rgba(11,157,103,.14)}
.primary{background:linear-gradient(135deg,#079c68,#057852);box-shadow:0 9px 22px rgba(5,143,94,.25),inset 0 1px 0 rgba(255,255,255,.22)}.primary:hover{background:linear-gradient(135deg,#08aa72,#046d4a);transform:translateY(-1px)}
.danger{background:linear-gradient(135deg,#ed535d,#cf303c);color:#fff;box-shadow:0 8px 20px rgba(216,54,65,.23)}
.secondary{background:rgba(221,250,235,.72);border:1px solid rgba(21,155,101,.18)}
.data-table th{background:rgba(235,246,241,.68)}.data-table tbody tr:hover{background:rgba(255,255,255,.48)}
.kpi::after{background:linear-gradient(145deg,rgba(64,220,137,.28),rgba(255,255,255,.08))}.kpi-icon,.eyebrow,.panel-head a,.table-actions button{color:#057a53}
.unit-card{position:relative;overflow:hidden;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.75);box-shadow:var(--shadow);backdrop-filter:blur(16px) saturate(135%);-webkit-backdrop-filter:blur(16px) saturate(135%)}
.unit-card::before{content:"";position:absolute;inset:0 auto 0 0;width:6px}.unit-card.available{background:linear-gradient(135deg,rgba(217,255,233,.9),rgba(244,255,248,.7));border:2px solid rgba(15,174,99,.58);box-shadow:0 16px 38px rgba(9,142,82,.18),inset 0 1px 0 #fff}.unit-card.available::before{background:#08a85f;box-shadow:0 0 18px rgba(8,168,95,.65)}
.unit-card.booked{background:linear-gradient(135deg,rgba(255,222,224,.94),rgba(255,245,244,.72));border:2px solid rgba(222,55,66,.59);box-shadow:0 16px 38px rgba(205,45,56,.18),inset 0 1px 0 #fff}.unit-card.booked::before{background:#df3340;box-shadow:0 0 18px rgba(223,51,64,.62)}
.unit-card.available .unit-no{color:#057b48}.unit-card.booked .unit-no{color:#b9212d}
.unit-card.blocked{background:linear-gradient(135deg,rgba(255,239,200,.94),rgba(255,249,232,.8));border:2px solid rgba(224,148,19,.65);box-shadow:0 16px 38px rgba(181,112,0,.17),inset 0 1px 0 #fff}.unit-card.blocked::before{background:#e29a18;box-shadow:0 0 18px rgba(226,154,24,.58)}.unit-card.blocked .unit-no{color:#996000}.unit-card.blocked .plot-identity{color:#8a5700;border-color:rgba(224,148,19,.36);box-shadow:0 8px 18px rgba(181,112,0,.16),inset 0 1px 0 #fff}.unit-card.blocked .plot-identity::after{background:rgba(240,174,48,.23)}.pill.blocked{background:#fff0c9;color:#925b00;border-color:#e9bd65}.plot-block-action{color:#925b00;border-color:#e0ae4a;background:#fff8e7}
.pill.available,.pill.current-buyer,.pill.paid{background:#08a85f;color:#fff;box-shadow:0 5px 14px rgba(8,168,95,.22)}.pill.booked,.pill.previous-buyer,.pill.cancelled,.pill.overdue{background:#df3340;color:#fff;box-shadow:0 5px 14px rgba(223,51,64,.22)}
.trend{color:#078a59}.trend.down,.danger-text{color:#cf2733}
.stage-summary span,.detail-grid span,.direction,.stage-list,.ownership-list,.dossier-table{background:rgba(255,255,255,.44);border-color:rgba(255,255,255,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.toast{background:rgba(5,55,42,.92);border:1px solid rgba(255,255,255,.2);box-shadow:var(--shadow);backdrop-filter:blur(15px)}
.head-actions{display:flex;gap:10px;align-items:center}.unit-outstanding{grid-column:1/-1;background:rgba(223,51,64,.1);border:1px solid rgba(223,51,64,.24);border-radius:10px;padding:9px 10px;color:#a6232e!important}.unit-outstanding b{color:#b9212d!important;font-size:15px!important}.subline{display:block;color:var(--muted);font-weight:400;margin-top:3px}.wide-detail{grid-column:span 2}.reminder-summary{display:grid;grid-template-columns:repeat(3,minmax(0,260px));gap:16px;margin-bottom:18px}
.promise-summary{grid-template-columns:repeat(4,minmax(0,1fr));max-width:none}.pill.promise-overdue{background:rgba(222,45,58,.14);color:#b11f2b;border-color:rgba(222,45,58,.3)}.promise-link{border:1px solid rgba(222,45,58,.3)!important;background:rgba(222,45,58,.1)!important;color:#b11f2b!important;font-weight:750;white-space:nowrap}.previous-promise{display:flex;flex-direction:column;gap:5px;padding:14px 16px;margin-bottom:18px;border-radius:14px;background:rgba(230,161,30,.11);border:1px solid rgba(230,161,30,.25)}.promise-expired-callout{display:flex;flex-direction:column;gap:7px;padding:18px;margin-bottom:18px;border-radius:16px;background:rgba(222,45,58,.11);border:1px solid rgba(222,45,58,.28);color:#8f1721}.promise-expired-callout b{font-size:18px}.promise-expired-callout span{color:#6b2a30}
@media(max-width:760px){.head-actions{align-items:stretch;flex-direction:column}.head-actions button{width:100%}.wide-detail{grid-column:auto}.reminder-summary{grid-template-columns:1fr}}

/* Modern inventory card identity */
.unit-card{padding:12px 13px 11px}.unit-card-top{align-items:center;gap:9px}.plot-identity{min-width:78px;min-height:56px;padding:7px 11px;border-radius:12px;display:flex;flex-direction:column;justify-content:center;position:relative;isolation:isolate;overflow:hidden;background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.92);box-shadow:0 8px 18px rgba(15,55,43,.12),inset 0 1px 0 #fff}.plot-identity::after{content:"";position:absolute;width:48px;height:48px;border-radius:50%;right:-23px;bottom:-27px;z-index:-1}.plot-identity span{font:800 8px Manrope;text-transform:uppercase;letter-spacing:1.5px;opacity:.68}.plot-identity strong{font:800 22px Manrope;line-height:1;margin-top:3px;letter-spacing:-.5px}.plot-caption{display:flex;align-items:center;gap:6px;margin:8px 1px 10px;color:var(--muted);font-size:11px;font-weight:700}.plot-caption span{font-size:7px;opacity:.55}.unit-card .unit-meta{gap:6px;padding-top:9px;font-size:10px}.unit-card .unit-meta b{font-size:12px}.unit-card .unit-outstanding{padding:6px 8px}.unit-card .unit-outstanding b{font-size:13px!important}.unit-card .pill{padding:4px 7px;font-size:9px}.unit-card.available .plot-identity{color:#056f43;border-color:rgba(18,174,101,.3);box-shadow:0 8px 18px rgba(8,145,83,.17),inset 0 1px 0 #fff}.unit-card.available .plot-identity::after{background:rgba(19,190,109,.2)}.unit-card.booked .plot-identity{color:#b21e2a;border-color:rgba(221,51,64,.3);box-shadow:0 8px 18px rgba(195,38,50,.17),inset 0 1px 0 #fff}.unit-card.booked .plot-identity::after{background:rgba(223,51,64,.18)}.unit-card:hover .plot-identity{transform:translateY(-1px) scale(1.015);transition:transform .18s ease}

/* Reminder removal */
.confirm-modal{width:min(470px,100%)}
.confirm-text{margin:0;color:var(--muted);line-height:1.6}
.confirm-text b{color:var(--ink)}
.table-actions button.danger-text{color:#cf2733}
.data-table tr.is-dismissed{opacity:.5}
.pill.removed{background:#ece9e8;color:#6b615f}
.dismissed-note{display:flex;justify-content:flex-end;align-items:center;gap:6px;margin-top:12px;color:var(--muted);font-size:13px}
.linklike{background:none;border:0;padding:0;font:inherit;color:#057a53;font-weight:700;cursor:pointer;text-decoration:underline}

/* Reminder date-range filter */
.reminder-filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px 18px;margin-bottom:16px;padding:13px 15px;border-radius:14px;background:var(--glass,rgba(255,255,255,.62));border:1px solid rgba(255,255,255,.72);box-shadow:0 8px 24px rgba(23,65,52,.07)}
.rf-dates{display:flex;gap:10px}
.rf-dates label{display:flex;flex-direction:column;gap:5px;font:700 10px Manrope;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.rf-dates input{padding:8px 10px;border-radius:10px;border:1px solid rgba(119,151,139,.28);background:rgba(255,255,255,.72);font:600 13px "DM Sans",sans-serif;color:var(--ink)}
.rf-dates input:focus{outline:0;border-color:#18a872;box-shadow:0 0 0 4px rgba(11,168,114,.13)}
.rf-check{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;padding-bottom:9px}
.rf-check input{width:15px;height:15px;accent-color:#079c68;cursor:pointer}
.rf-presets{display:flex;gap:7px;margin-left:auto;padding-bottom:5px}
.rf-presets button{padding:8px 13px;border-radius:999px;border:1px solid rgba(119,151,139,.26);background:rgba(255,255,255,.6);font:700 12px "DM Sans",sans-serif;color:var(--muted);cursor:pointer}
.rf-presets button:hover{color:#057a53;border-color:rgba(18,174,101,.4)}
.rf-presets button.is-on{background:linear-gradient(135deg,#079c68,#057852);border-color:transparent;color:#fff;box-shadow:0 7px 18px rgba(5,143,94,.24)}
@media(max-width:760px){.reminder-filter{gap:12px}.rf-presets{margin-left:0;width:100%}.rf-presets button{flex:1}}
.notification{position:relative;width:38px;height:38px;display:grid;place-items:center;font-size:0}.notification svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.notification i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--red);right:7px;top:6px;border:1px solid #fff}.panel-head small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.reminder-dashboard-row{grid-template-columns:36px minmax(0,1fr) auto auto}.reminder-dashboard-row .activity-icon.reminder-overdue{background:rgba(223,51,64,.12);color:var(--red);font-weight:800}.reminder-dashboard-row .pill{min-width:72px;text-align:center}.reminder-dashboard-row p small{display:block;margin-top:3px}.reminder-dashboard-list .compact-empty{min-height:255px;display:grid;place-items:center}@media(max-width:760px){.reminder-dashboard-row{grid-template-columns:36px minmax(0,1fr) auto}.reminder-dashboard-row>.pill{grid-column:2/4;justify-self:start}.reminder-dashboard-row>.money{font-size:12px}}

/* Mobile nav drawer scrim */
.nav-scrim{display:none}
@media(max-width:760px){
  .nav-scrim{display:block;position:fixed;inset:0;z-index:19;background:rgba(6,32,25,.45);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .2s}
  .nav-scrim.show{opacity:1;pointer-events:auto}
}

/* Page-header CTAs: wrap below the title rather than being crushed beside it.
   flex-shrink:0 keeps the buttons at their natural size at every width. */
.page-head{flex-wrap:wrap;gap:16px}
.page-head>*:first-child{flex:1 1 280px;min-width:0}
.head-actions{flex-shrink:0;margin-left:auto}
.head-actions button,.page-head>.primary{white-space:nowrap}
@media(max-width:760px){
  .page-head{flex-direction:column;align-items:stretch}
  .page-head>*:first-child{flex:0 0 auto}
  .head-actions{flex-direction:column;align-items:stretch;gap:9px;margin-left:0}
  .head-actions button{width:100%}
  .page-head>.primary{margin-left:0;width:100%}
}

/* Inventory status tabs */
.status-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.status-tabs button{display:flex;align-items:center;gap:7px;padding:9px 15px;border-radius:999px;border:1px solid rgba(119,151,139,.26);background:rgba(255,255,255,.62);font:700 13px "DM Sans",sans-serif;color:var(--muted);cursor:pointer}
.status-tabs button:hover{color:#057a53;border-color:rgba(18,174,101,.4)}
.status-tabs button span{font-size:11px;padding:2px 7px;border-radius:999px;background:rgba(15,80,58,.09);color:inherit}
.status-tabs button.is-on{background:linear-gradient(135deg,#079c68,#057852);border-color:transparent;color:#fff;box-shadow:0 7px 18px rgba(5,143,94,.24)}
.status-tabs button.is-on span{background:rgba(255,255,255,.24)}

/* Search-scope select */
.toolbar select[data-search-scope]{min-width:150px}

/* Plot boundaries toggle */
.boundary-toggle{display:flex;align-items:center;gap:8px;margin:18px 0 10px;font:600 13px "DM Sans",sans-serif;color:var(--ink);cursor:pointer}
.boundary-toggle input{width:15px;height:15px;accent-color:#079c68;cursor:pointer}
.direction-grid[hidden]{display:none}

/* Access gate */
.auth-screen{width:100%;min-height:100vh;display:grid;place-items:center;padding:22px}
.auth-root[hidden]{display:none}
body.auth-locked{overflow:hidden}
body.auth-locked .app-shell{filter:blur(6px);pointer-events:none;user-select:none}
.auth-root{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:22px;background:rgba(7,31,24,.5);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.auth-card{width:min(400px,100%);background:rgba(250,253,251,.95);border:1px solid rgba(255,255,255,.85);border-radius:20px;padding:28px 26px;box-shadow:0 26px 70px rgba(6,40,30,.32)}
.auth-brand{display:flex;align-items:center;gap:11px;margin-bottom:20px}
.auth-brand .brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font:800 18px Manrope;color:#04301f}
.auth-brand b{display:block;font:800 15px Manrope;letter-spacing:-.2px}
.auth-brand small{display:block;font-size:9px;letter-spacing:1.6px;color:var(--muted);font-weight:700}
.auth-card h1{margin:0 0 6px;font:800 22px Manrope;letter-spacing:-.4px}
.auth-sub{margin:0 0 18px;color:var(--muted);font-size:13px;line-height:1.55}
.auth-warn{margin:0 0 16px;padding:9px 11px;border-radius:10px;background:#fdf1e7;color:#9a5316;font-size:12px;line-height:1.5}
.auth-field{display:block;margin-bottom:13px}
.auth-field span{display:block;margin-bottom:6px;font:700 11px Manrope;text-transform:uppercase;letter-spacing:.7px;color:var(--muted)}
.auth-field input{width:100%;padding:11px 13px;border-radius:11px;border:1px solid rgba(119,151,139,.28);background:rgba(255,255,255,.8);font:500 14px "DM Sans",sans-serif;color:var(--ink)}
.auth-field input:focus{outline:0;border-color:#18a872;box-shadow:0 0 0 4px rgba(11,168,114,.13)}
.auth-btn{width:100%;margin-top:6px;padding:12px;border:0;border-radius:11px;background:linear-gradient(135deg,#079c68,#057852);color:#fff;font:700 14px "DM Sans",sans-serif;cursor:pointer;box-shadow:0 9px 22px rgba(5,143,94,.25)}
.auth-error{margin:12px 0 0;padding:9px 11px;border-radius:10px;background:#fdecec;color:#b3242f;font-size:12.5px;line-height:1.5}
.auth-error[hidden]{display:none}
.auth-foot{margin-top:16px;text-align:center}
.auth-link{background:none;border:0;padding:0;font:600 13px "DM Sans",sans-serif;color:#057a53;cursor:pointer;text-decoration:underline}
.security-note{margin:0 0 16px;line-height:1.6}
.security-note b{color:var(--ink)}

/* Inventory land-area overview */
.inventory-area-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}
.area-card{position:relative;overflow:hidden;padding:18px 20px;border:1px solid rgba(255,255,255,.86);border-radius:18px;background:rgba(255,255,255,.68);box-shadow:var(--shadow)}
.area-card::after{content:"";position:absolute;right:-22px;top:-28px;width:92px;height:92px;border-radius:50%;background:rgba(15,143,96,.1)}
.area-card span{display:block;color:var(--muted);font:700 12px Manrope;text-transform:uppercase;letter-spacing:.55px}
.area-card strong{display:block;margin-top:7px;font:800 25px Manrope;color:var(--ink)}
.area-card small{display:block;margin-top:4px;color:var(--muted);font-size:12px}
.area-card.available{border-color:rgba(20,176,100,.28);background:rgba(225,251,236,.72)}
.area-card.available strong{color:#087948}
.area-card.booked{border-color:rgba(225,60,67,.24);background:rgba(255,235,236,.7)}
.area-card.booked strong{color:#c62d35}
.area-card.blocked{border-color:rgba(224,148,19,.3);background:rgba(255,241,207,.76)}
.area-card.blocked strong{color:#9a6100}
.phase-list{display:grid;gap:9px}
.phase-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(150px,1fr) auto auto;align-items:center;gap:14px;padding:12px 14px;border:1px solid rgba(119,151,139,.2);border-radius:13px;background:rgba(255,255,255,.54)}
.phase-row b,.phase-row span,.phase-row small{display:block}.phase-row small{color:var(--muted)}
@media(max-width:760px){.inventory-area-summary{grid-template-columns:1fr}.phase-row{grid-template-columns:1fr 1fr}.auth-screen{padding:16px}}


/* Row actions: real buttons, not bare text */
.table-actions{display:flex;gap:6px;align-items:center;flex-wrap:nowrap;justify-content:flex-end}
.data-table td.table-actions{white-space:nowrap}
.table-actions button{
  padding:6px 12px;border-radius:9px;
  border:1px solid rgba(119,151,139,.32);
  background:rgba(255,255,255,.72);
  color:#057a53;font:700 12px "DM Sans",sans-serif;
  line-height:1.4;white-space:nowrap;cursor:pointer;
  transition:background .15s,border-color .15s,box-shadow .15s;
}
.table-actions button:hover{background:#fff;border-color:rgba(18,174,101,.55);box-shadow:0 3px 9px rgba(8,80,56,.12)}
.table-actions button:focus-visible{outline:0;border-color:#18a872;box-shadow:0 0 0 3px rgba(11,168,114,.2)}
.table-actions button:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}

/* Destructive icon-only action (trash) */
.table-actions button.icon-action{
  padding:0;width:30px;height:30px;flex:0 0 30px;
  display:grid;place-items:center;
  color:#cf2733;border-color:rgba(207,39,51,.3);background:rgba(207,39,51,.07);
}
.table-actions button.icon-action:hover{background:rgba(207,39,51,.14);border-color:rgba(207,39,51,.55);box-shadow:0 3px 9px rgba(180,30,40,.16)}
.table-actions button.icon-action:focus-visible{border-color:#cf2733;box-shadow:0 0 0 3px rgba(207,39,51,.22)}
.table-actions button.icon-action svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

@media(max-width:760px){
  .table-actions button{padding:7px 11px}
  .table-actions button.icon-action{width:32px;height:32px;flex:0 0 32px}
}

/* Phase selector (only rendered when more than one phase exists) */
.phase-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.phase-tabs-label{font:700 10px Manrope;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-right:2px}
.phase-tabs button{display:flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;border:1px solid rgba(119,151,139,.26);background:rgba(255,255,255,.62);font:700 12.5px "DM Sans",sans-serif;color:var(--muted);cursor:pointer}
.phase-tabs button:hover{color:#057a53;border-color:rgba(18,174,101,.4)}
.phase-tabs button span{font-size:10.5px;padding:2px 7px;border-radius:999px;background:rgba(15,80,58,.09)}
.phase-tabs button.is-on{background:var(--green-dark);border-color:transparent;color:#fff;box-shadow:0 6px 16px rgba(6,62,49,.22)}
.phase-tabs button.is-on span{background:rgba(255,255,255,.22)}

/* Spreadsheet import preview */
.import-preview{margin-top:14px;padding:14px;border-radius:12px;border:1px solid rgba(18,174,101,.28);background:rgba(19,190,109,.06)}
.import-preview b{display:block;margin-bottom:4px;color:#05674a}
.import-preview small{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.import-preview .data-table{min-width:0;margin-top:10px;background:#fff;border-radius:9px;overflow:hidden}
.import-preview .data-table th,.import-preview .data-table td{padding:7px 10px;font-size:12px}
#importPreview .auth-error{margin-top:14px}

/* Inventory view toggle + size filter */
.inventory-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}
.view-toggle{display:flex;gap:0;border:1px solid rgba(119,151,139,.3);border-radius:10px;overflow:hidden;background:rgba(255,255,255,.65)}
.view-toggle button{border:0;background:transparent;padding:9px 15px;font:700 12.5px "DM Sans",sans-serif;color:var(--muted);cursor:pointer}
.view-toggle button+button{border-left:1px solid rgba(119,151,139,.3)}
.view-toggle button:hover{color:#057a53}
.view-toggle button.is-on{background:linear-gradient(135deg,#079c68,#057852);color:#fff}
.size-filter{display:flex;align-items:center;gap:8px;margin-left:auto}
.size-filter span{font:700 10px Manrope;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted)}
.size-filter select{height:40px;border:1px solid rgba(119,151,139,.3);border-radius:10px;padding:0 12px;background:#fff;font:600 13px "DM Sans",sans-serif;min-width:180px}

/* Sortable table headers */
.sortable-table th.sortable{cursor:pointer;user-select:none;white-space:nowrap;position:relative;padding-right:26px}
.sortable-table th.sortable:hover{color:#057a53;background:#f2f7f4}
.sortable-table th.sortable i{position:absolute;right:11px;top:50%;transform:translateY(-50%);width:8px;height:10px;opacity:.3}
.sortable-table th.sortable i::before,.sortable-table th.sortable i::after{content:"";position:absolute;left:0;border-left:4px solid transparent;border-right:4px solid transparent}
.sortable-table th.sortable i::before{top:0;border-bottom:4px solid currentColor}
.sortable-table th.sortable i::after{bottom:0;border-top:4px solid currentColor}
.sortable-table th.sorted-asc,.sortable-table th.sorted-desc{color:#057a53}
.sortable-table th.sorted-asc i,.sortable-table th.sorted-desc i{opacity:1}
.sortable-table th.sorted-asc i::after{opacity:.2}
.sortable-table th.sorted-desc i::before{opacity:.2}
.sortable-table tfoot td{padding:13px 16px;border-top:2px solid var(--line);background:#f8faf8;font-size:12.5px;color:var(--muted)}

@media(max-width:760px){.size-filter{margin-left:0;width:100%}.size-filter select{flex:1}}

/* Sidebar logout */
.sidebar-foot .logout-btn{margin-left:6px;color:#aabbb5;display:grid;place-items:center;padding:6px;border-radius:9px;transition:background .15s,color .15s}
.sidebar-foot .logout-btn:hover{background:rgba(255,255,255,.12);color:#ff9b9b}
.sidebar-foot .logout-btn svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* Party ledger + credit balances */
.credit{color:#0a7d55}
.money.credit,.stage-summary b.credit{color:#0a7d55}
.ledger-note{margin:0 0 16px;padding:11px 13px;border-radius:11px;background:#fff6e8;border:1px solid #f2ddba;color:#8a5c14;font-size:12.5px;line-height:1.55}
.panel-note{margin-bottom:16px}
.name-cell small.subline,.data-table small.subline{display:block;color:var(--muted);font-size:11px;margin-top:2px}

/* Payment allocation preview */
.alloc-preview{margin-top:12px;padding:12px 13px;border-radius:11px;border:1px solid rgba(18,174,101,.28);background:rgba(19,190,109,.06)}
.alloc-preview>b{display:block;margin-bottom:8px;color:#05674a;font-size:12.5px}
.alloc-row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:12.5px;border-top:1px solid rgba(18,174,101,.16)}
.alloc-row:first-of-type{border-top:0}
.alloc-row span{color:var(--muted)}
.alloc-advance{display:block;margin-top:8px;color:#8a5c14;font-size:12px;line-height:1.5}

/* Credit (overpaid) balance on a plot card */
.unit-card .unit-outstanding.is-credit{background:rgba(10,125,85,.09);border-color:rgba(10,125,85,.25)}
.unit-card .unit-outstanding.is-credit b{color:#0a7d55!important}

/* Clickable KPI tiles */
.kpi-clickable{cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}
.kpi-clickable:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(10,60,44,.13);border-color:rgba(18,174,101,.42)}
.kpi-clickable:focus-visible{outline:0;border-color:#18a872;box-shadow:0 0 0 4px rgba(11,168,114,.2)}
.kpi-clickable::before{content:"›";position:absolute;right:16px;bottom:12px;font-size:19px;line-height:1;color:var(--muted);opacity:0;transition:opacity .15s,transform .15s}
.kpi-clickable:hover::before{opacity:.75;transform:translateX(3px)}
.kpi-clickable.is-active{border-color:#18a872;box-shadow:0 0 0 2px rgba(11,168,114,.22)}

/* Active filter chip */
.filter-chip{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;padding:10px 13px;border-radius:11px;background:rgba(19,190,109,.08);border:1px solid rgba(18,174,101,.28);font-size:13px;color:var(--muted)}
.filter-chip b{color:var(--ink)}

/* Multi-row installment builder */
.stage-grid{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:12px}
.stage-grid-head,.stage-grid-row{display:grid;grid-template-columns:1.6fr 1fr 1fr 38px;gap:8px;align-items:center;padding:8px 10px}
.stage-grid-head{background:#f4f8f6;font:700 10px Manrope;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}
.stage-grid-row{border-top:1px solid var(--line)}
.stage-grid-row:nth-child(even){background:rgba(246,250,248,.6)}
.stage-grid-row input{width:100%;border:1px solid #dce2df;border-radius:8px;padding:8px 10px;outline:0;background:#fff;font:500 13px "DM Sans",sans-serif}
.stage-grid-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px #e5f0eb}
.stage-grid-row .icon-btn{padding:4px;border-radius:7px;opacity:.45}
.stage-grid-row .icon-btn:hover{opacity:1;background:rgba(207,39,51,.1)}
.stage-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:8px}
.stage-foot #stageTotals{margin:0 auto 0 0}
.stage-modal{width:min(760px,100%)}
@media(max-width:760px){
  .stage-grid-head{display:none}
  .stage-grid-row{grid-template-columns:1fr 1fr 38px;gap:6px}
  .stage-grid-row input[name="name"]{grid-column:1/-1}
  .stage-foot{flex-direction:column;align-items:stretch}
  .stage-foot #stageTotals{margin:0}
}

/* Ownership pills: soft, single line — the earlier solid-green rule was
   overriding the pastel style and .pill{min-width:72px} forced a wrap. */
.pill{white-space:nowrap}
.pill.current-owner,.pill.current-buyer{background:#e3f3ec;color:#12704f;box-shadow:none;min-width:0;
  border:1px solid rgba(18,174,101,.28);padding:5px 11px}
.pill.previous-owner,.pill.previous-buyer{background:#f2eeed;color:#7a5a55;box-shadow:none;min-width:0;
  border:1px solid rgba(122,90,85,.2);padding:5px 11px}

/* Plot numbers in the party ledger */
.plot-list{max-width:230px}
.plot-chip{display:inline-block;margin:2px 4px 2px 0;padding:2px 8px;border-radius:7px;
  background:#eef4f1;border:1px solid rgba(119,151,139,.24);font-size:11.5px;font-weight:700;color:#2c4a40}
.plot-more{display:inline-block;padding:2px 7px;border-radius:7px;background:transparent;
  font-size:11.5px;font-weight:700;color:var(--muted)}

/* Write-off action */
.table-actions button.warn-action{color:#9a5316;border-color:rgba(154,83,22,.3);background:rgba(214,138,44,.09)}
.table-actions button.warn-action:hover{background:rgba(214,138,44,.16);border-color:rgba(154,83,22,.5);box-shadow:0 3px 9px rgba(154,83,22,.14)}

/* Balance status pills — these three previously shared the default grey */
.pill.outstanding{background:#fdeceb;color:#b3352c;border:1px solid rgba(179,53,44,.18)}
.pill.settled{background:#e4f4ea;color:#1a7344;border:1px solid rgba(26,115,68,.2)}
.pill.in-credit{background:#e7f0f9;color:#2f6690;border:1px solid rgba(47,102,144,.2)}

/* Row action cells sit in the vertical middle again.
   display:flex on a <td> takes it out of table-cell layout, so the cell no
   longer stretches to the row height and vertical-align stops applying.
   Keep the cell a real table-cell and lay the buttons out inline instead. */
.data-table td.table-actions{display:table-cell;vertical-align:middle;text-align:right;white-space:nowrap}
.data-table td.table-actions button{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
.data-table td.table-actions button+button{margin-left:6px}

/* Wrapped plot chips read as one centred block rather than drifting upward */
.data-table td.plot-list{vertical-align:middle}
.plot-list{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.plot-chip{margin:0}
.plot-more{margin:0}

/* Documents */
.doc-block{margin-top:22px}
.doc-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.doc-head h3{margin:0}
.doc-upload{display:inline-block;cursor:pointer;padding:8px 14px;border-radius:10px;border:1px solid var(--line);background:#fff;font:700 12.5px "DM Sans",sans-serif;color:var(--ink)}
.doc-upload:hover{border-color:rgba(18,174,101,.5);color:#057a53}
.doc-progress{margin-bottom:10px;padding:9px 12px;border-radius:10px;background:rgba(19,190,109,.08);border:1px solid rgba(18,174,101,.25);font-size:12.5px;color:#05674a}
.doc-progress.is-error{background:#fdecec;border-color:rgba(179,53,44,.25);color:#b3242f}
.doc-progress[hidden]{display:none}
.doc-list{display:flex;flex-direction:column;gap:8px}
.doc-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}
.doc-icon{width:32px;height:32px;flex:0 0 32px;display:grid;place-items:center;border-radius:9px;background:var(--mint);color:var(--green);font-size:15px}
.doc-meta{flex:1;min-width:0}
.doc-meta b{display:block;font-size:13px}
.doc-meta small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-link{font:700 12px "DM Sans",sans-serif;color:#057a53;white-space:nowrap;padding:6px 10px;border-radius:8px;border:1px solid rgba(119,151,139,.3)}
.doc-link:hover{background:#f2f8f5}
.doc-row .icon-action{padding:0;width:30px;height:30px;flex:0 0 30px;display:grid;place-items:center;border-radius:9px;border:1px solid rgba(207,39,51,.3);background:rgba(207,39,51,.07);color:#cf2733}
.doc-row .icon-action svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* Activity log */
.audit-detail{max-width:340px;font-size:12px;color:var(--muted);word-break:break-word}
.data-table .pill{text-transform:capitalize}

/* Backup panel */
.panel-head small{display:block;color:var(--muted);font-size:12px;margin-top:3px}
a.primary{display:inline-block;text-decoration:none}
@media(max-width:760px){
  .doc-row{flex-wrap:wrap}
  .doc-meta{flex:1 1 100%;order:2}
  .doc-link{order:3}
}

/* Activity log: search and both filters share one row */
.activity-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px}
.activity-controls .searchbox{flex:1 1 280px}
.activity-controls .size-filter{margin-left:0;flex:0 0 auto}
.activity-controls .size-filter select{min-width:170px}
@media(max-width:760px){
  .activity-controls{gap:10px}
  .activity-controls .searchbox{flex:1 1 100%}
  .activity-controls .size-filter{flex:1 1 100%}
  .activity-controls .size-filter select{width:100%;min-width:0}
}

/* Ledger view toggle + plot numbers in the party summary */
.ledger-toggle{margin-bottom:14px}
.stage-summary .summary-plots{display:block;margin-top:5px;font-size:11.5px;font-weight:600;color:var(--muted);line-height:1.5}

/* Ledger switch is a capsule, not a full-width bar */
.ledger-toggle{display:inline-flex;width:auto;max-width:100%;border-radius:999px;overflow:hidden}
.ledger-toggle button{padding:9px 20px;border-radius:0;white-space:nowrap}
.ledger-toggle button.is-on{border-radius:0}

/* Write-off button inside the plot dossier */
.modal-actions .ghost.warn-action{color:#9a5316;border-color:rgba(154,83,22,.34);background:rgba(214,138,44,.1)}
.modal-actions .ghost.warn-action:hover{background:rgba(214,138,44,.18);border-color:rgba(154,83,22,.55)}

/* Plot numbers read as plain text in the party ledger */
.plot-list{max-width:220px;font-weight:600;color:#2c4a40;line-height:1.55;white-space:normal}

/* Activity log date range */
.activity-range{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}
.range-toggle{display:inline-flex;width:auto;border-radius:999px;overflow:hidden}
.range-toggle button{padding:8px 16px;border-radius:0;white-space:nowrap;font-size:12.5px}
.range-date{display:flex;align-items:center;gap:7px;font:700 10px Manrope;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.range-date input{padding:8px 10px;border-radius:10px;border:1px solid rgba(119,151,139,.3);background:#fff;font:600 13px "DM Sans",sans-serif;color:var(--ink)}
.range-date input:focus{outline:0;border-color:#18a872;box-shadow:0 0 0 3px rgba(11,168,114,.15)}
@media(max-width:760px){
  .activity-range{gap:10px}
  .range-toggle{width:100%}
  .range-toggle button{flex:1;padding:8px 6px}
  .range-date{flex:1 1 45%}
  .range-date input{width:100%}
}

/* Booking commission interpretation feedback */
.commission-preview{min-height:18px;margin-top:7px;padding:7px 9px;border-radius:9px;background:rgba(20,168,111,.08);color:#087a52;font-size:12px;font-weight:700}
.commission-preview:empty{display:none}
.installment-builder{width:100%;min-height:52px}.installment-percent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:8px;margin-bottom:8px}.installment-percent-grid label{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid rgba(20,75,61,.15);border-radius:12px;background:rgba(255,255,255,.55)}.installment-percent-grid label span{font-weight:800;color:#08785b}.installment-percent-grid label input{min-width:0;width:100%;border:0;background:transparent;padding:2px}.installment-percent-grid label b{color:#557168}.split-amounts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.split-amounts label{display:flex;flex-direction:column;gap:6px;font-weight:700}.split-amounts input{width:100%}@media(max-width:620px){.split-amounts{grid-template-columns:1fr}}

/* Compact phone layout; tablet and desktop sizing remain unchanged. */
@media(max-width:760px){
 .content{padding:16px 12px 40px}.topbar{height:60px;padding:0 12px}.top-actions{gap:6px}.top-actions .primary{padding:8px 9px;font-size:11px}.notification{width:32px;height:32px}
 .page-head{margin-bottom:14px;gap:9px;flex-direction:column}.page-head h1{font-size:23px;margin:3px 0}.page-head p{font-size:12px;line-height:1.4}.page-head .head-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:7px}.page-head .head-actions button{padding:9px 7px;font-size:11px}
 .inventory-area-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:11px}.area-card{padding:11px 12px;border-radius:13px;min-height:91px}.area-card::after{width:58px;height:58px;right:-18px;top:-21px}.area-card span{font-size:9px;letter-spacing:.25px}.area-card strong{font-size:16px;margin-top:5px;line-height:1.15}.area-card small{font-size:9px;margin-top:3px}
 .status-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:10px}.status-tabs button{justify-content:center;gap:3px;padding:7px 4px;font-size:10px;min-width:0}.status-tabs button span{font-size:8px;padding:1px 4px}
 .phase-tabs{gap:5px;margin-bottom:9px}.phase-tabs button{padding:6px 9px;font-size:10px;gap:4px}.phase-tabs button span{font-size:8px;padding:1px 4px}
 .inventory-controls{gap:7px}.view-toggle button{padding:7px 9px;font-size:10px}.size-filter{min-width:0!important}.size-filter span{font-size:9px}.size-filter select{height:34px;min-width:0;font-size:10px;padding:0 7px}
 .toolbar{gap:7px;margin-bottom:10px}.searchbox{height:36px;padding:0 10px}.searchbox input,.toolbar select{font-size:11px}.toolbar select{height:36px;padding:0 8px}
 .inventory-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.unit-card{padding:9px 9px 8px;border-radius:11px}.unit-card::before{width:4px}.plot-identity{min-width:55px;min-height:43px;padding:5px 7px;border-radius:9px}.plot-identity strong{font-size:17px}.plot-caption{font-size:9px;margin:6px 1px}.unit-card .pill{font-size:8px;padding:3px 5px}.unit-card .unit-meta{grid-template-columns:1fr;gap:4px;padding-top:6px;font-size:8px}.unit-card .unit-meta b{font-size:10px;margin-top:1px}.unit-card .unit-outstanding{padding:4px 6px}.unit-card .unit-outstanding b{font-size:11px!important}
 .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}.kpi{padding:12px;border-radius:13px}.kpi strong{font-size:18px;margin:8px 0 3px}.kpi-top,.trend{font-size:9px}.panel-head{padding:13px 14px}.activity-list{padding:4px 13px}.activity{padding:10px 0}.modal-root{padding:8px}.modal-head{padding:15px}.modal-body{padding:15px}.modal-actions{padding:0 15px 15px;gap:6px;flex-wrap:wrap}.modal-actions button{padding:9px 11px;font-size:11px}
}
@media(max-width:390px){.inventory-grid{grid-template-columns:1fr}.status-tabs{grid-template-columns:repeat(2,1fr)}}

/* Plot actions remain accessible when credit adjustment is available. */
.plot-dossier .modal-actions{flex-wrap:wrap}
