:root{
  --bg:#f6f4ee; --page:#f1efe7; --surface:#ffffff; --surface-2:#efece2;
  --text:#1d1a14; --text-dim:#6d6656; --text-mute:#8c8571;
  --border:#e4ddc9; --border-strong:#d7cdae;
  --accent:#e0a300; --accent-ink:#1d1a14; --accent-soft:#fbedc4; --accent-line:#c98e00;
  --success:#1f7a3d; --success-soft:#e3f3e6;
  --warning:#b5650b; --warning-soft:#fbead0;
  --danger:#b3352b; --danger-soft:#fbe4e0;
  --info:#2a5f8f; --info-soft:#e4eef6;
  --radius:12px;
  --shadow:0 1px 2px rgba(29,26,20,.05), 0 10px 28px -16px rgba(29,26,20,.28);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#16140f; --page:#100f0b; --surface:#1d1a14; --surface-2:#242019;
    --text:#f3efe4; --text-dim:#bdb49c; --text-mute:#8f876f;
    --border:#332d20; --border-strong:#413923;
    --accent:#f0b429; --accent-ink:#1a1509; --accent-soft:#3a2c0c; --accent-line:#f0b429;
    --success:#39c06a; --success-soft:#173620;
    --warning:#f0a83c; --warning-soft:#3a2a10;
    --danger:#f2685f; --danger-soft:#3a1c18;
    --info:#6fa8d8; --info-soft:#172a38;
  }
}
:root[data-theme="dark"]{
  --bg:#16140f; --page:#100f0b; --surface:#1d1a14; --surface-2:#242019;
  --text:#f3efe4; --text-dim:#bdb49c; --text-mute:#8f876f;
  --border:#332d20; --border-strong:#413923;
  --accent:#f0b429; --accent-ink:#1a1509; --accent-soft:#3a2c0c; --accent-line:#f0b429;
  --success:#39c06a; --success-soft:#173620;
  --warning:#f0a83c; --warning-soft:#3a2a10;
  --danger:#f2685f; --danger-soft:#3a1c18;
  --info:#6fa8d8; --info-soft:#172a38;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--page);color:var(--text);font-family:"Poppins",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:14px;}
h1,h2,h3,.brand,.section-title{font-family:"Poppins",system-ui,sans-serif;font-weight:700;}
.num,.money,td.num{font-family:"Poppins",system-ui,sans-serif;font-variant-numeric:tabular-nums;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;}

.shell{display:grid;grid-template-columns:236px 1fr;min-height:100vh;}
@media (max-width:900px){.shell{grid-template-columns:1fr;}}

.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:100vh;overflow-y:auto;}
@media (max-width:900px){
  .sidebar{position:fixed;left:0;top:0;bottom:0;width:250px;height:100vh;z-index:60;transform:translateX(-105%);transition:transform .2s ease;box-shadow:var(--shadow);}
  .sidebar.open{transform:translateX(0);}
}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px;}
.brand-mark{width:34px;height:34px;border-radius:9px;background:linear-gradient(155deg,var(--accent),var(--accent-line));display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent-ink);font-weight:800;}
.brand-text .t1{font-weight:800;font-size:15px;}
.brand-text .t2{font-size:11px;color:var(--text-mute);font-weight:500;text-transform:uppercase;letter-spacing:.3px;}
.nav{display:flex;flex-direction:column;gap:2px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--text-dim);font-size:13.5px;font-weight:600;border:1px solid transparent;}
.nav-item:hover{background:var(--surface-2);color:var(--text);}
.nav-item.active{background:var(--accent-soft);color:var(--text);border-color:var(--accent-line);}
.sidebar-foot{margin-top:auto;padding-top:10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:4px;}
.viewer-chip{display:flex;align-items:center;gap:9px;padding:8px;}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex-shrink:0;}
.viewer-chip .name{font-size:12.5px;font-weight:700;}
.viewer-chip .role{font-size:10.5px;color:var(--text-mute);}
.hamburger{display:none;position:fixed;top:12px;left:12px;z-index:70;border:1px solid var(--border);background:var(--surface);border-radius:9px;width:38px;height:38px;font-size:18px;}
.scrim{position:fixed;inset:0;background:rgba(15,13,9,.45);z-index:55;display:none;}
.scrim.show{display:block;}
@media (max-width:900px){.hamburger{display:block;} .topbar{padding-left:58px;}}

.main{min-width:0;}
.topbar{position:sticky;top:0;z-index:40;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(6px);border-bottom:1px solid var(--border);padding:16px 22px;}
.topbar h1{font-size:19px;font-weight:800;margin:0;}
.content{padding:20px 22px 60px;max-width:1200px;}

.flash{padding:10px 14px;border-radius:9px;font-size:13px;font-weight:600;margin-bottom:14px;}
.flash.success{background:var(--success-soft);color:var(--success);}
.flash.error{background:var(--danger-soft);color:var(--danger);}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);}
.card-pad{padding:16px 18px;}
.section-title{font-size:15px;font-weight:800;margin:0 0 10px;}
.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px;}

.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px;}
@media (max-width:900px){.kpi-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.kpi-grid{grid-template-columns:1fr;}}
.kpi-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);}
.kpi-label{font-size:11px;font-weight:700;color:var(--text-mute);text-transform:uppercase;letter-spacing:.5px;}
.kpi-value{font-size:24px;font-weight:800;margin-top:4px;}
.kpi-sub{font-size:12px;color:var(--text-dim);margin-top:4px;}

.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);margin-bottom:18px;}
table{border-collapse:collapse;width:100%;min-width:640px;font-size:13px;}
thead th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-mute);font-weight:700;padding:11px 14px;border-bottom:1px solid var(--border);background:var(--surface-2);}
tbody td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle;}
tbody tr:last-child td{border-bottom:none;}
tbody tr:hover{background:var(--surface-2);}
td.num,th.num{text-align:right;}
.row-title{font-weight:700;}
.row-sub{font-size:11.5px;color:var(--text-mute);margin-top:1px;}
.row-actions{display:flex;gap:6px;justify-content:flex-end;}

.badge{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap;}
.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;}
.badge.good{background:var(--success-soft);color:var(--success);}
.badge.warn{background:var(--warning-soft);color:var(--warning);}
.badge.bad{background:var(--danger-soft);color:var(--danger);}
.badge.info{background:var(--info-soft);color:var(--info);}
.badge.neutral{background:var(--surface-2);color:var(--text-dim);}

.btn{display:inline-flex;align-items:center;gap:7px;border-radius:9px;padding:8px 14px;font-size:13px;font-weight:700;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);cursor:pointer;}
.btn:hover{background:var(--surface-2);}
.btn-primary{background:var(--accent);border-color:var(--accent-line);color:var(--accent-ink);}
.btn-danger{color:#fff;background:var(--danger);border-color:var(--danger);}
.btn-sm{padding:5px 10px;font-size:12px;border-radius:7px;}
.btn[disabled]{opacity:.5;cursor:not-allowed;}

.form-card{max-width:720px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px;}
.form-grid .full{grid-column:1/-1;}
@media (max-width:600px){.form-grid{grid-template-columns:1fr;}}
.field label{display:block;font-size:12px;font-weight:700;color:var(--text-dim);margin-bottom:5px;}
.field .hint{display:block;font-size:11px;color:var(--text-mute);margin-top:4px;font-weight:500;}
input[type=text],input[type=number],input[type=date],input[type=tel],input[type=email],input[type=password],input[type=search],select,textarea{
  font:inherit;border:1px solid var(--border-strong);border-radius:8px;padding:8px 10px;background:var(--surface);color:var(--text);width:100%;
}
textarea{resize:vertical;min-height:64px;}
.form-actions{display:flex;gap:8px;padding:0 18px 18px;}

.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:44px 20px;color:var(--text-dim);}
.empty h3{margin:0;font-size:15px;color:var(--text);}
.empty p{margin:0;font-size:13px;max-width:340px;}

.item-rows{display:flex;flex-direction:column;gap:8px;margin:10px 0;}
.item-row{display:grid;grid-template-columns:1fr 60px 100px 100px 32px;gap:8px;align-items:center;}
@media (max-width:600px){.item-row{grid-template-columns:1fr 1fr;}}
.item-row .rm{background:none;border:none;color:var(--danger);cursor:pointer;font-size:16px;}
.totals-row{display:flex;justify-content:flex-end;gap:22px;font-size:13px;padding:4px 18px;}
.totals-row.grand{font-weight:800;font-size:15px;}

.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:28px;}
.login-card h1{font-size:20px;margin:0 0 4px;}
.login-card p{color:var(--text-mute);font-size:13px;margin:0 0 20px;}

.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;}
.person-card{display:flex;gap:11px;align-items:center;padding:13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);}
.person-card .name{font-weight:700;font-size:13.5px;}
.person-card .meta{font-size:11.5px;color:var(--text-mute);}

.bars{display:flex;align-items:flex-end;gap:14px;height:140px;padding:10px 4px 0;}
.bar-group{display:flex;flex-direction:column;align-items:center;gap:6px;flex:1;height:100%;justify-content:flex-end;}
.bar-pair{display:flex;gap:3px;align-items:flex-end;height:100%;}
.bar{width:16px;border-radius:3px 3px 0 0;}
.bar.rev{background:#2a78d6;}
.bar.exp{background:#eb6834;}
.bar-label{font-size:10.5px;color:var(--text-mute);}
.legend{display:flex;gap:16px;font-size:12px;color:var(--text-dim);margin-bottom:8px;}
.legend .lg{display:flex;align-items:center;gap:6px;font-weight:600;}
.legend .sw{width:10px;height:10px;border-radius:3px;}
[hidden]{display:none!important;}

/* ---- theme toggle ---- */
.theme-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border-radius:9px;color:var(--text-dim);font-size:13px;font-weight:600;background:none;border:1px solid var(--border);width:100%;cursor:pointer;}
.theme-toggle:hover{background:var(--surface-2);color:var(--text);}

/* ---- pagination ---- */
.pagination{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:12px 4px;font-size:12.5px;}
.page-link{padding:6px 10px;border-radius:7px;border:1px solid var(--border);color:var(--text-dim);font-weight:600;}
.page-link:hover{background:var(--surface-2);color:var(--text);}
.page-link.current{background:var(--accent);border-color:var(--accent-line);color:var(--accent-ink);}
.page-link.disabled{opacity:.4;pointer-events:none;}
.page-ellipsis{padding:6px 2px;color:var(--text-mute);}
.page-count{margin-left:auto;color:var(--text-mute);}

/* ---- custom confirm dialog (replaces native confirm()) ---- */
.confirm-overlay{position:fixed;inset:0;background:rgba(15,13,9,.5);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px;}
.confirm-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-width:360px;width:100%;padding:20px;}
.confirm-box p{margin:0 0 18px;font-size:13.5px;color:var(--text-dim);}
.confirm-actions{display:flex;gap:8px;justify-content:flex-end;}

/* ---- filter bar (search + status dropdown row) ---- */
.filter-bar{display:flex;gap:8px;flex-wrap:wrap;}
.filter-bar select{width:auto;}

/* ---- document list widget (leases / landlords) ---- */
.doc-list{display:flex;flex-direction:column;gap:6px;margin:10px 0;}
.doc-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface-2);font-size:12.5px;}
.doc-row .doc-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-row .doc-meta{color:var(--text-mute);font-size:11px;}

/* ---- map ---- */
#hoardingMap{width:100%;height:520px;border-radius:var(--radius);border:1px solid var(--border);}
.leaflet-popup-content h4{margin:0 0 4px;font-size:13px;}

/* ---- calendar ---- */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-dow{font-size:10.5px;font-weight:700;color:var(--text-mute);text-transform:uppercase;text-align:center;padding-bottom:4px;}
.cal-cell{min-height:70px;border:1px solid var(--border);border-radius:8px;padding:6px;font-size:11px;background:var(--surface);}
.cal-cell.other-month{opacity:.35;}
.cal-cell.today{border-color:var(--accent-line);box-shadow:0 0 0 1px var(--accent-line) inset;}
.cal-daynum{font-weight:700;font-size:11px;margin-bottom:3px;}
.cal-chip{display:block;font-size:9.5px;font-weight:600;padding:1px 5px;border-radius:5px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--info-soft);color:var(--info);}
.cal-chip.clash{background:var(--danger-soft);color:var(--danger);}

/* ---- reports ---- */
.report-bar-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12.5px;}
.report-bar-row:last-child{border-bottom:none;}
.report-bar-label{width:150px;flex-shrink:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.report-bar-track{flex:1;background:var(--surface-2);border-radius:5px;height:14px;overflow:hidden;}
.report-bar-fill{height:100%;background:#2a78d6;border-radius:5px;}
.report-bar-fill.alt{background:#eb6834;}
.report-bar-value{width:110px;flex-shrink:0;text-align:right;font-weight:700;font-variant-numeric:tabular-nums;}
