<style>
@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Playfair+Display:ital,wght@0,600;0,700;1,600&display=swap');
*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --bg:#f0ede7;--surface:#fffefb;--surface2:#f7f4ef;--surface3:#ede9e2;
  --border:#ddd8ce;--border2:#c8c2b6;
  --text:#18160f;--text2:#635c4e;--text3:#9e9485;
  --accent:#b5784a;--accent2:#7d5228;--accent-bg:#f8ede0;
  --red:#b83228;--red-bg:#fdf1f0;--red-border:#eebfba;
  --orange:#b86818;--orange-bg:#fdf3e8;--orange-border:#eecfa0;
  --green:#256645;--green-bg:#edf7f2;--green-border:#a8d8be;
  --blue:#1e5799;--blue-bg:#edf3fb;--blue-border:#a8c8ed;
  --purple:#5e3f9e;--purple-bg:#f2eefb;--purple-border:#c8b0ed;
  --shadow:0 1px 4px rgba(0,0,0,.06),0 2px 8px rgba(0,0,0,.04);
  --shadow-md:0 4px 20px rgba(0,0,0,.09),0 1px 4px rgba(0,0,0,.06);
  --shadow-lg:0 16px 48px rgba(0,0,0,.14),0 4px 16px rgba(0,0,0,.08);
  --radius:10px;
  --header-h:62px;
}

/* ── Base ── */
body{background:var(--bg);color:var(--text);font-family:'DM Mono',monospace;font-size:13px;height:100vh;display:flex;flex-direction:column;
  background-image:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23b5784a' fill-opacity='0.03'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}

/* ── Header ── */
.header{
  background:var(--surface);
  border-bottom:2px solid var(--border);padding:0 32px;display:flex;align-items:center;
  justify-content:space-between;height:var(--header-h);position:sticky;top:0;z-index:200;
  box-shadow:0 2px 8px rgba(0,0,0,.06);flex-shrink:0;
}
.brand{display:flex;align-items:baseline;gap:12px;}
.brand h1{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--accent2);letter-spacing:-.3px;}
.brand-sub{font-size:9px;color:var(--text3);letter-spacing:3px;text-transform:uppercase;margin-top:2px;}
.header-right{display:flex;gap:8px;align-items:center;}
#syncStatus{color:var(--text3) !important;font-size:11px;}

/* ── Module Bar (primary navigation) ── */
.module-bar{background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 32px;box-shadow:var(--shadow);flex-shrink:0;overflow-x:auto;gap:0;}
.module-tab{padding:12px 20px;font-size:11px;font-weight:500;letter-spacing:.5px;color:var(--text3);cursor:pointer;border-bottom:3px solid transparent;transition:all .2s ease;white-space:nowrap;display:flex;align-items:center;gap:6px;position:relative;}
.module-tab:hover{color:var(--text2);background:var(--surface2);}
.module-tab.active{color:var(--accent2);border-bottom-color:var(--accent);background:var(--accent-bg);}
.module-tab .mod-icon{font-size:14px;}
.module-tab .mod-badge{background:var(--red);color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:8px;padding:0 5px;margin-left:2px;}
.mod-badge.badge-red{background:#d32f2f;color:#fff;animation:badge-pulse 2s ease-in-out infinite;}
@keyframes badge-pulse{0%,100%{opacity:1}50%{opacity:.7}}
/* Module color accents when active */
.module-tab[data-module="short-term"].active{color:var(--blue);border-bottom-color:var(--blue);background:var(--blue-bg);}
.module-tab[data-module="mtm-lt"].active{color:var(--green);border-bottom-color:var(--green);background:var(--green-bg);}
.module-tab[data-module="techtrack"].active{color:var(--orange);border-bottom-color:var(--orange);background:var(--orange-bg);}
.module-tab[data-module="parking"].active{color:var(--purple);border-bottom-color:var(--purple);background:var(--purple-bg);}
.module-tab[data-module="messages"].active{color:#1565c0;border-bottom-color:#1565c0;background:#e3f2fd;}
.module-tab[data-module="mailroom"].active{color:var(--red);border-bottom-color:var(--red);background:var(--red-bg);}
.module-bar::-webkit-scrollbar{height:0;}

/* ── Sub Nav (per-module tabs) ── */
.sub-nav{background:var(--surface2);border-bottom:1px solid var(--border);display:flex;padding:0 32px;gap:0;flex-shrink:0;overflow-x:auto;}
.sub-tab{padding:10px 18px;font-size:11px;color:var(--text3);cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;white-space:nowrap;}
.sub-tab:hover{color:var(--text);background:var(--surface3);}
.sub-tab.active{color:var(--accent2);border-bottom-color:var(--accent);font-weight:500;}
.sub-tab-right{margin-left:auto;}
/* Sub-tab attention badges — red, slightly smaller than module-tab badges */
.sub-tab .mod-badge{background:var(--red);color:#fff;font-size:9px;font-weight:700;min-width:15px;height:15px;line-height:15px;text-align:center;border-radius:8px;padding:0 5px;margin-left:5px;display:inline-block;vertical-align:middle;}
.sub-nav::-webkit-scrollbar{height:0;}

/* ── Property Selector (header) ── */
.property-selector{display:flex;align-items:center;gap:8px;padding:6px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface2);cursor:pointer;transition:all .2s;position:relative;user-select:none;}
.property-selector:hover{border-color:var(--accent);background:var(--accent-bg);}
.property-selector .prop-name{font-size:12px;font-weight:500;color:var(--text);}
.property-selector .prop-arrow{font-size:10px;color:var(--text3);margin-left:4px;transition:transform .2s;}
.property-selector.open .prop-arrow{transform:rotate(180deg);}
.property-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);min-width:280px;z-index:500;display:none;overflow:hidden;}
.property-dropdown.open{display:block;animation:propFade .2s ease;}
@keyframes propFade{from{opacity:0;transform:translateY(-8px);}to{opacity:1;transform:translateY(0);}}
.prop-dd-item{padding:12px 16px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:all .15s;border-bottom:1px solid var(--border);font-size:12px;}
.prop-dd-item:last-child{border-bottom:none;}
.prop-dd-item:hover{background:var(--accent-bg);}
.prop-dd-item.active{background:var(--accent-bg);border-left:3px solid var(--accent);}
.prop-dd-name{font-weight:500;}
.prop-dd-units{font-size:10px;color:var(--text3);}
.prop-dd-all{background:var(--surface2);font-weight:500;}

/* ── Legacy nav-tabs (keep for backward compat) ── */
.nav-tabs{background:var(--surface);border-bottom:1px solid var(--border);display:flex;padding:0 32px;gap:0;box-shadow:var(--shadow);flex-shrink:0;overflow-x:auto;display:none;}
.nav-tab{padding:14px 22px;font-size:11px;font-weight:500;letter-spacing:.5px;color:var(--text3);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;transition:all .2s ease;white-space:nowrap;position:relative;}
.nav-tab:hover{color:var(--text2);background:var(--surface2);transition:all .15s ease;}
.nav-tab.active{color:var(--accent2);border-bottom-color:var(--accent);background:var(--accent-bg);}
.nav-badge{display:inline-block;background:#FF5A5F;color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:8px;padding:0 5px;margin-left:6px;vertical-align:middle;}
.nav-notification-badge{position:absolute;top:8px;right:12px;background:var(--red);color:#fff;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;box-shadow:0 2px 4px rgba(184,50,40,.3);}
.nav-notification-badge.hidden{display:none;}

/* ── Pages ── */
.page{display:none;}.page.active{display:block;flex:1;overflow-y:auto;min-height:0;}.page.active#page-calendar{display:flex;flex-direction:column;height:calc(100vh - var(--header-h) - 96px);overflow:hidden;}#page-calendar.active{display:flex;flex-direction:column;}

/* ── Module placeholder pages ── */
.module-placeholder{padding:32px;flex:1;overflow-y:auto;}
.module-placeholder .mp-header{display:flex;align-items:center;gap:12px;margin-bottom:24px;}
.module-placeholder .mp-icon{font-size:32px;}
.module-placeholder .mp-title{font-family:'Playfair Display',serif;font-size:24px;color:var(--accent2);}
.module-placeholder .mp-subtitle{font-size:12px;color:var(--text3);margin-top:2px;}
.mp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:16px;}
.mp-card h3{font-family:'Playfair Display',serif;font-size:16px;color:var(--accent2);margin-bottom:8px;}
.mp-card p{color:var(--text2);font-size:12px;line-height:1.6;}
.mp-coming{display:inline-block;padding:4px 12px;border-radius:12px;font-size:10px;font-weight:500;background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange);margin-top:8px;}
.mp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;}
.mp-stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow);}
.mp-stat .stat-num{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;line-height:1;margin-bottom:3px;}
.mp-stat .stat-label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:1.5px;}

/* ── Stats bar ── */
.stats-bar{background:var(--surface);border-bottom:1px solid var(--border);display:flex;overflow-x:auto;box-shadow:var(--shadow);}
.stat-card{padding:16px 28px;border-right:1px solid var(--border);cursor:pointer;transition:all 0.15s ease;min-width:120px;flex-shrink:0;position:relative;}
.stat-card:hover{background:var(--surface2);transform:translateY(-1px);}
.stat-card.active{background:var(--accent-bg);}
.stat-card.active::after{content:'';position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--accent);border-radius:2px 2px 0 0;animation:slideDown 0.25s ease;}
.stat-card .last-synced{font-size:9px;color:var(--text3);margin-top:4px;}
.stat-num{font-family:'Playfair Display',serif;font-size:28px;font-weight:700;line-height:1;margin-bottom:3px;}
.stat-label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:1.5px;}
.s-overdue .stat-num{color:var(--red);}.s-soon .stat-num{color:var(--orange);}.s-ok .stat-num{color:var(--green);}.s-avail .stat-num{color:var(--blue);}

/* ── Toolbar ── */
.toolbar{padding:14px 32px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--bg);border-bottom:1px solid var(--border);}
.search-wrap{position:relative;flex:0 0 auto;width:260px;}
.search-wrap svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none;}
.search-wrap input{width:100%;box-sizing:border-box;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:9px 12px 9px 36px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text);outline:none;transition:all .2s;box-shadow:var(--shadow);}
.search-wrap input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(181,120,74,.12);}
.filter-pills{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0;}
.pill{padding:6px 14px;border-radius:20px;border:1px solid var(--border);background:var(--surface);color:var(--text2);font-family:'DM Mono',monospace;font-size:11px;cursor:pointer;transition:all .18s;white-space:nowrap;box-shadow:var(--shadow);}
.pill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);transform:translateY(-1px);}
.pill.active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 8px rgba(181,120,74,.35);}
.spacer{flex:1;min-width:0;}
select.sort-sel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;font-family:'DM Mono',monospace;font-size:11px;color:var(--text2);outline:none;cursor:pointer;width:auto;flex-shrink:0;box-shadow:var(--shadow);overflow-x:auto;}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);border:none;cursor:pointer;font-family:'DM Mono',monospace;font-size:12px;font-weight:500;transition:all 0.15s ease;white-space:nowrap;}
.btn:focus{outline:2px solid var(--accent);outline-offset:2px;}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:0 2px 8px rgba(181,120,74,.3);}
.btn-primary:hover{background:linear-gradient(135deg,#c4885a,var(--accent));box-shadow:0 4px 14px rgba(181,120,74,.4);transform:translateY(-1px);}
.btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--text2);box-shadow:var(--shadow);}
.btn-secondary:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg);transform:translateY(-1px);}
.btn-ghost{background:transparent;border:1px solid transparent;color:var(--text2);}
.btn-ghost:hover{background:var(--surface3);border-color:var(--border);}
.btn-sm{padding:5px 12px;font-size:11px;}

/* ── Table ── */
.table-wrap{padding:20px 32px 40px;overflow-x:auto;}
table{width:100%;border-collapse:separate;border-spacing:0;}
thead th{background:var(--surface2);padding:10px 14px;text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:2px;color:var(--text3);border-bottom:2px solid var(--border);cursor:pointer;user-select:none;white-space:nowrap;transition:color .15s;}
thead th:first-child{border-radius:8px 0 0 0;}
thead th:last-child{border-radius:0 8px 0 0;}
thead th:hover{color:var(--accent2);}
tbody tr{border-bottom:1px solid var(--border);transition:all .15s;cursor:pointer;}
tbody tr:hover{background:var(--surface2);transform:none;}
tbody tr:hover td{box-shadow:inset 0 -1px 0 var(--border2);}
tbody tr.row-available{background:linear-gradient(90deg,rgba(37,102,69,.04),transparent);}
tbody tr.row-available:hover{background:linear-gradient(90deg,rgba(37,102,69,.08),var(--surface2));}
tbody tr.row-overdue td:first-child{border-left:3px solid var(--red);}
tbody tr.row-soon td:first-child{border-left:3px solid var(--orange);}
td{padding:13px 14px;vertical-align:middle;}
.apt-num{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--accent2);min-width:58px;}
.tenant-name{font-size:13px;font-weight:500;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* ── Person Name + Badges ── */
.person-name-wrap{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:260px;}
.person-name-wrap:hover .person-name-text{color:var(--blue);text-decoration:underline;}
.person-name-text{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.person-badges{display:inline-flex;gap:3px;flex-shrink:0;}
.person-badge{font-size:8px;padding:1px 6px;border-radius:8px;font-weight:600;white-space:nowrap;line-height:1.4;}
.person-badge.badge-done{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.person-badge.badge-pending{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.tenant-empty{color:var(--green);font-size:11px;font-style:italic;text-transform:uppercase;letter-spacing:1px;}
.owner-cell{color:var(--text2);font-size:11px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.note-preview{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text3);font-size:11px;font-style:italic;}
.amount-cell{color:var(--green);font-weight:500;}.amount-none{color:var(--text3);}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:9px;font-weight:500;text-transform:uppercase;letter-spacing:1px;white-space:nowrap;border:1px solid transparent;}
.badge-lt{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-border);}
.badge-mtm{background:var(--purple-bg);color:var(--purple);border-color:var(--purple-border);}
.badge-short{background:var(--orange-bg);color:var(--orange);border-color:var(--orange-border);}
.badge-avail{background:var(--green-bg);color:var(--green);border-color:var(--green-border);}
.due-cell{display:flex;align-items:center;gap:7px;}
.due-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.due-overdue{color:var(--red);}.due-overdue .due-dot{background:var(--red);}
.due-soon{color:var(--orange);}.due-soon .due-dot{background:var(--orange);}
.due-ok{color:var(--text2);}.due-ok .due-dot{background:var(--green);}
.due-none{color:var(--text3);}

/* ── Action buttons ── */
.actions-cell{display:flex;gap:5px;}
.icon-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s;flex-shrink:0;box-shadow:var(--shadow);overflow-x:auto;}
.icon-btn:hover{background:var(--surface3);color:var(--text);border-color:var(--border2);transform:translateY(-1px);box-shadow:var(--shadow-md);}
.icon-btn.ib-pay:hover{background:var(--green-bg);color:var(--green);border-color:var(--green);}
.icon-btn.ib-edit:hover{background:var(--blue-bg);color:var(--blue);border-color:var(--blue);}
.icon-btn.ib-arch:hover{background:var(--orange-bg);color:var(--orange);border-color:var(--orange);}
.icon-btn.ib-restore:hover{background:var(--green-bg);color:var(--green);border-color:var(--green);}
.icon-btn.ib-del:hover{background:var(--red-bg);color:var(--red);border-color:var(--red);}

/* ── Archive section ── */
.arch-section{padding:0 32px 40px;}
.arch-toggle{display:flex;align-items:center;gap:10px;padding:14px 0;cursor:pointer;color:var(--text3);font-size:10px;text-transform:uppercase;letter-spacing:2px;border-top:1px solid var(--border);user-select:none;transition:color .15s;}
.arch-toggle:hover{color:var(--accent2);}
.arch-count{background:var(--surface3);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:10px;color:var(--text2);}
.arch-chevron{transition:transform .25s;display:inline-block;}
.arch-chevron.open{transform:rotate(180deg);}

/* ── Modals ── */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(20,16,10,.55);z-index:500;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px);}
.modal-overlay.open{display:flex;}
.modal{background:var(--surface);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:modalIn .2s cubic-bezier(.34,1.56,.64,1);}
@keyframes modalIn{from{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:none}}
.modal-header{padding:22px 26px 18px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:linear-gradient(180deg,var(--surface2),var(--surface));}
.modal-header h2{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--text);}
.apt-badge{font-family:'Playfair Display',serif;font-size:30px;font-weight:700;color:var(--accent2);line-height:1;}
.modal-close{width:32px;height:32px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .15s;flex-shrink:0;}
.modal-close:hover{background:var(--red-bg);color:var(--red);border-color:var(--red);}
.modal-body{padding:22px 26px;}
.modal-footer{padding:16px 26px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;background:var(--surface2);border-radius:0 0 16px 16px;}

/* ── Forms ── */
.form-row{margin-bottom:18px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text3);margin-bottom:6px;}
input,select,textarea{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:9px 13px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text);outline:none;transition:all .18s;box-shadow:inset 0 1px 3px rgba(0,0,0,.04);}
input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(181,120,74,.15),inset 0 1px 3px rgba(0,0,0,.04);outline:none;}
textarea{resize:vertical;min-height:72px;}
.form-hint{font-size:10px;color:var(--text3);margin-top:4px;}
.section-title{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:var(--text3);margin-bottom:14px;}
.pay-info-box{background:linear-gradient(135deg,var(--surface2),var(--accent-bg));border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:18px;display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.pay-info-item .pi-label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:3px;}
.pay-info-item .pi-value{font-size:14px;font-weight:500;}
.pi-value.overdue{color:var(--red);}.pi-value.ok{color:var(--green);}
.radio-group{display:flex;gap:8px;}
.radio-btn{flex:1;padding:9px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text2);cursor:pointer;text-align:center;font-family:'DM Mono',monospace;font-size:11px;transition:all .18s;box-shadow:var(--shadow);}
.radio-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px);}
.radio-btn.selected{background:linear-gradient(135deg,var(--accent),var(--accent2));border-color:var(--accent2);color:#fff;box-shadow:0 2px 8px rgba(181,120,74,.3);}

/* ── Detail panel ── */
.detail-overlay{display:none;position:fixed;inset:0;z-index:400;}
.detail-overlay.open{display:block;}
.detail-backdrop{position:absolute;inset:0;background:rgba(20,16,10,.35);}
/* 2026-05-10: removed panel-level overflow-y:auto. Body now scrolls
   independently so the sticky action bar stays visible while admin
   scrolls through the body content. Was: action buttons crowded out
   the bottom of the financial card because everything scrolled
   together and the buttons drifted with it. */
.detail-panel{position:absolute;top:0;right:0;bottom:0;width:400px;max-width:100vw;background:var(--surface);box-shadow:var(--shadow-lg);overflow:hidden;animation:slideIn .22s cubic-bezier(.34,1.2,.64,1);display:flex;flex-direction:column;border-left:1px solid var(--border);}
@keyframes slideIn{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
.detail-header{padding:22px 22px 18px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;background:var(--accent-bg);}
.detail-apt{font-family:'Playfair Display',serif;font-size:40px;font-weight:700;color:var(--accent2);line-height:1;}
.detail-name{font-size:15px;font-weight:500;margin-top:5px;color:var(--text);}
.detail-owner{font-size:11px;color:var(--text3);margin-top:3px;}
/* Body scrolls independently. flex:1 + min-height:0 lets it fill
   available space and scroll without pushing the sticky action bar. */
.detail-body{padding:20px;flex:1 1 auto;overflow-y:auto;min-height:0;-webkit-overflow-scrolling:touch;}
.detail-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px;}
.detail-row:last-child{border-bottom:none;}
.dr-label{color:var(--text3);font-size:9px;text-transform:uppercase;letter-spacing:1.5px;}
.dr-val{font-weight:500;text-align:right;}
.detail-note-section label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:1.5px;display:block;margin-bottom:6px;margin-top:18px;}
.detail-note-section textarea{font-size:12px;min-height:80px;}
/* Sticky at bottom — flex-shrink:0 keeps it from being squeezed.
   max-height + overflow-y lets the button bar itself scroll if the
   admin's screen is short and there are too many buttons. */
.detail-actions{padding:14px 18px;border-top:1px solid var(--border);display:flex;gap:8px;flex-wrap:wrap;background:var(--surface2);flex-shrink:0;max-height:42vh;overflow-y:auto;}

/* ── History items ── */
.history-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:11px;}
.history-item:last-child{border:none;}
.hi-date{color:var(--text3);white-space:nowrap;flex-shrink:0;min-width:80px;}
.hi-text{color:var(--text2);}

/* ── Empty state ── */
.empty-state{text-align:center;padding:60px 20px;color:var(--text3);}
.empty-state .ei{font-size:40px;margin-bottom:12px;opacity:.6;}

/* ── Toasts ── */
.toast-wrap{position:fixed;bottom:28px;right:28px;z-index:1000;display:flex;flex-direction:column;gap:10px;pointer-events:none;}
.toast{padding:12px 20px;border-radius:10px;font-size:12px;box-shadow:var(--shadow-lg);animation:toastSlideIn .3s cubic-bezier(.34,1.56,.64,1) forwards;max-width:340px;background:var(--text);color:var(--bg);border-left:4px solid rgba(255,255,255,.3);pointer-events:auto;display:flex;align-items:center;gap:10px;}
.toast.success{background:#1a4d33;color:#d4f0e2;border-left-color:#4caf80;}
.toast.error{background:#4d1a18;color:#f0d4d2;border-left-color:#e05a55;}
.toast.info{background:#1e5799;color:#d4e5f0;border-left-color:#5ba3d0;}
@keyframes toastSlideIn{from{opacity:0;transform:translateX(400px)}to{opacity:1;transform:translateX(0)}}

/* ── Dashboard (Command Center) ── */
.dash-wrap{padding:28px 32px;}
.dash-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:10px;}
.dash-title{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--accent2);}
.dash-synced{font-size:10px;color:var(--text3);margin-top:4px;letter-spacing:0.5px;}
.dash-header-actions{display:flex;align-items:center;gap:10px;}
.btn-subtle{background:var(--surface);border:1px solid var(--border);color:var(--text2);border-radius:6px;padding:8px 14px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;}
.btn-backup{background:var(--green);color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px;}
.dash-section-label{font-size:10px;text-transform:uppercase;letter-spacing:2px;color:var(--text3);margin-bottom:12px;margin-top:8px;font-weight:600;}

/* KPI Hero Row */
.dash-kpi-hero{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:28px;}
.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow);transition:all .2s;position:relative;overflow:hidden;}
.kpi-card.kpi-hero{padding:24px 26px;}
.kpi-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;}
.kv-green.kpi-card::before{background:var(--green);}
.kv-red.kpi-card::before{background:var(--red);}
.kv-blue.kpi-card::before{background:var(--blue);}
.kv-orange.kpi-card::before{background:var(--orange);}
.kv-accent.kpi-card::before{background:var(--accent);}
.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);}
.kpi-label{font-size:9px;text-transform:uppercase;letter-spacing:2px;color:var(--text3);margin-bottom:8px;}
.kpi-value{font-family:'Playfair Display',serif;font-size:32px;font-weight:700;line-height:1;margin-bottom:6px;}
.kpi-hero .kpi-value{font-size:36px;}
.kpi-sub{font-size:11px;color:var(--text3);}
.kv-green .kpi-value,.kv-green.kpi-card .kpi-value{color:var(--green);}
.kv-red .kpi-value,.kv-red.kpi-card .kpi-value{color:var(--red);}
.kv-blue .kpi-value,.kv-blue.kpi-card .kpi-value{color:var(--blue);}
.kv-orange .kpi-value,.kv-orange.kpi-card .kpi-value{color:var(--orange);}
.kv-accent .kpi-value,.kv-accent.kpi-card .kpi-value{color:var(--accent2);}

/* Dashboard Grid */
.dash-two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:24px;}
.dash-panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow);}
.dash-panel h3{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--accent2);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.dash-panel-today{border-left:3px solid var(--accent);}
.dash-full{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow);margin-bottom:24px;}
.dash-full h3{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--accent2);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);}

/* Dashboard States */
.dash-loading{font-size:12px;color:var(--text3);padding:12px 0;}
.dash-empty-state{color:var(--green);font-size:12px;padding:12px 0;}

/* Check-in / Check-out items */
.dash-move-section{margin-bottom:12px;}
.dash-move-label{font-size:9px;text-transform:uppercase;letter-spacing:1.5px;font-weight:600;padding:4px 0 8px;border-bottom:1px solid var(--border);margin-bottom:4px;}
.ci-label{color:var(--blue);}
.co-label{color:var(--orange);}
.dash-move-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;margin-bottom:6px;border:1px solid var(--border);border-left-width:3px;border-radius:8px;font-size:12px;background:var(--surface);transition:background .12s ease,box-shadow .12s ease;}
.dash-move-item:last-child{margin-bottom:0;}
.dash-move-item:hover{background:var(--surface2);box-shadow:0 1px 5px rgba(0,0,0,.06);}
.dash-move-item.ci{border-left-color:var(--blue);}
.dash-move-item.co{border-left-color:var(--orange);}
.dash-move-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.dash-move-apt{font-family:'DM Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.3px;color:var(--accent2);}
.dash-move-name{color:var(--text);font-weight:500;min-width:0;}
.dash-move-when{font-weight:700;font-size:11px;flex-shrink:0;padding:3px 10px;border-radius:999px;white-space:nowrap;background:var(--surface2);}
.dash-move-item:hover .dash-move-when{background:var(--surface);}
.dash-move-when.ci{color:var(--blue);}
.dash-move-when.co{color:var(--orange);}

/* Reminders */
.dash-action-btn{width:100%;padding:10px 16px;margin-bottom:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:none;border-radius:10px;font-weight:600;cursor:pointer;font-family:'DM Mono',monospace;font-size:12px;}
.dash-action-btn:hover{opacity:0.9;}
.dash-reminder-list{max-height:300px;overflow-y:auto;border:1px solid var(--border);border-radius:10px;}
.dash-reminder-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:12px;}
.dash-reminder-item:last-child{border:none;}
.dash-reminder-info{display:flex;align-items:center;gap:8px;flex:1;overflow:hidden;}
.dash-reminder-apt{font-family:'Playfair Display',serif;font-size:14px;font-weight:700;color:var(--accent2);flex-shrink:0;}
.dash-reminder-name{color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-reminder-type{font-size:10px;font-weight:500;flex-shrink:0;}
.dash-reminder-actions{display:flex;gap:4px;flex-shrink:0;margin-left:8px;}
.btn-send-sm{padding:5px 10px;background:var(--green);color:#fff;border:none;border-radius:5px;font-size:10px;cursor:pointer;font-family:'DM Mono',monospace;}
.btn-skip-sm{padding:5px 10px;background:var(--surface2);color:var(--text3);border:1px solid var(--border);border-radius:5px;font-size:10px;cursor:pointer;font-family:'DM Mono',monospace;}

/* Revenue Grid */
.dash-revenue-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;}
.dash-rev-item{padding:12px;background:var(--surface2);border-radius:10px;}
.dash-rev-label{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--text3);margin-bottom:6px;}
.dash-rev-value{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--text);}
.dash-rev-value.green{color:var(--green);}
.dash-rev-value.red{color:var(--red);}
.dash-email-btn{width:100%;padding:10px 16px;background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:10px;font-weight:600;cursor:pointer;font-family:'DM Mono',monospace;font-size:12px;}
.dash-email-btn:hover{background:var(--surface3);}

/* Recent Reminders */
.dash-recent-list{max-height:250px;overflow-y:auto;}
.dash-recent-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);font-size:11px;}
.dash-recent-item:last-child{border:none;}
.dash-recent-apt{font-weight:600;color:var(--text);width:40px;flex-shrink:0;}
.dash-recent-type{flex:1;color:var(--text3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-recent-status{font-size:10px;padding:3px 8px;border-radius:4px;flex-shrink:0;}
.dash-recent-status.sent{background:var(--green-bg);color:var(--green);}
.dash-recent-status.skipped{background:var(--orange-bg);color:var(--orange);}
.dash-recent-date{color:var(--text3);font-size:10px;flex-shrink:0;}

/* Urgency Items */
.urgency-item{display:flex;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:12px;gap:10px;transition:background .15s;}
.urgency-item:last-child{border:none;}
.urgency-apt{font-family:'Playfair Display',serif;font-size:16px;font-weight:700;color:var(--accent2);width:40px;flex-shrink:0;}
.urgency-name{flex:1;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.urgency-days.overdue{color:var(--red);font-weight:500;font-size:11px;}
.urgency-days.soon{color:var(--orange);font-weight:500;font-size:11px;}

/* Owner Bars */
.obar-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px;}
.obar-label{min-width:120px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;}
.obar-track{flex:1;height:6px;background:var(--surface3);border-radius:3px;overflow:hidden;}
.obar-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent),var(--accent2));}
.obar-val{min-width:72px;text-align:right;color:var(--text2);font-size:11px;}

/* Chart helpers */
.type-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text2);}
.legend-dot{width:9px;height:9px;border-radius:50%;}
.chart-wrap{position:relative;height:200px;}

/* Dashboard Tasks */
.dash-tasks-divider{height:1px;background:var(--border);margin:16px 0 12px;}
.dash-tasks-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.dash-task-add-btn{background:var(--accent);color:#fff;border:none;border-radius:6px;padding:5px 12px;font-size:11px;font-weight:600;cursor:pointer;font-family:'DM Mono',monospace;}
.dash-task-add-btn:hover{opacity:.85;}
.dash-task-form{margin-bottom:12px;padding:10px;background:var(--surface2);border-radius:8px;border:1px solid var(--border);}
.dash-task-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:inherit;background:var(--surface);color:var(--text);margin-bottom:8px;box-sizing:border-box;}
.dash-task-form-row{display:flex;gap:8px;align-items:center;}
.dash-task-date{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:11px;font-family:inherit;background:var(--surface);color:var(--text);flex:1;}
.dash-task-priority{padding:6px 8px;border:1px solid var(--border);border-radius:6px;font-size:11px;font-family:inherit;background:var(--surface);color:var(--text);flex:1;}
.dash-task-save-btn{background:var(--green);color:#fff;border:none;border-radius:6px;padding:6px 14px;font-size:11px;font-weight:600;cursor:pointer;font-family:'DM Mono',monospace;}
.dash-task-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px;min-width:0;}
.dash-task-item:last-child{border:none;}
.dash-task-check{width:16px;height:16px;border-radius:4px;border:2px solid var(--border);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;transition:all .15s;}
.dash-task-check:hover{border-color:var(--green);background:var(--green-bg);}
.dash-task-check.done{background:var(--green);border-color:var(--green);color:#fff;}
/* Task title — flex:1 1 0 + min-width:0 forces the text to ellipsize
   instead of pushing the row wider when the title is long. cursor:pointer
   signals the click-to-edit affordance. */
.dash-task-text{flex:1 1 0;min-width:0;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;}
.dash-task-text:hover{color:var(--accent2);}
.dash-task-text.done{text-decoration:line-through;color:var(--text3);}
/* Tiny "has notes" indicator next to titles that include a body */
.dash-task-notes-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--blue,#1a2874);margin-left:4px;vertical-align:middle;}
.dash-task-meta{display:flex;gap:6px;align-items:center;flex-shrink:0;}
.dash-task-due{font-size:10px;color:var(--text3);font-family:'DM Mono',monospace;}
.dash-task-due.overdue{color:var(--red);}
.dash-task-due.today{color:var(--orange);}
.dash-task-pri{font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px;}
.dash-task-pri.urgent{background:var(--red);color:#fff;}
.dash-task-pri.high{background:var(--orange);color:#fff;}
.dash-task-pri.medium{background:var(--blue-bg,#e8f0fe);color:var(--blue);}
.dash-task-pri.low{background:var(--surface2);color:var(--text3);}
.dash-task-del{font-size:14px;color:var(--text3);cursor:pointer;padding:0 4px;opacity:.5;transition:opacity .15s;}
.dash-task-del:hover{opacity:1;color:var(--red);}

/* Work Orders Due Today */
.dash-wo-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);font-size:12px;}
.dash-wo-item:last-child{border:none;}
.dash-wo-num{font-family:'DM Mono',monospace;font-size:11px;font-weight:700;color:var(--accent2);width:52px;flex-shrink:0;}
.dash-wo-title{flex:1;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-wo-status{font-size:10px;font-weight:600;padding:3px 8px;border-radius:4px;flex-shrink:0;}
.dash-wo-status.open{background:var(--orange-bg,#fff3e0);color:var(--orange);}
.dash-wo-status.in_progress{background:var(--blue-bg,#e8f0fe);color:var(--blue);}
.dash-wo-status.waiting_parts{background:var(--purple-bg,#f3e8ff);color:var(--purple);}
.dash-wo-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;padding:8px 0 4px;margin-top:4px;}
.dash-wo-group-label:first-child{margin-top:0;padding-top:0;}

/* Dashboard responsive */
@media(max-width:900px){
  .dash-two-col{grid-template-columns:1fr;}
  .dash-kpi-hero{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));}
  .kpi-hero .kpi-value{font-size:28px;}
  .dash-task-form-row{flex-wrap:wrap;}
}

/* Parking Admin */
.pk-admin-input{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:inherit;background:var(--surface);color:var(--text)}
.pk-admin-input:focus{outline:none;border-color:var(--accent)}
.pk-table{width:100%;border-collapse:collapse;font-size:12px}
.pk-table th{text-align:left;padding:10px 8px;font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--text3);border-bottom:2px solid var(--border);font-weight:600}
.pk-table td{padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:top}
.pk-table tr:hover{background:var(--surface2)}

/* REPORTS */
.report-wrap{padding:24px 28px;}
.report-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:12px;}
.report-hdr h2{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--accent2);}
.month-nav{display:flex;align-items:center;gap:10px;}
.month-nav button{width:30px;height:30px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .12s;}
.month-nav button:hover{border-color:var(--accent);color:var(--accent);}
.month-nav span{font-size:14px;font-weight:500;min-width:140px;text-align:center;}
.r-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:22px;}
.r-kpi{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow);}
.r-kpi-label{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text3);margin-bottom:5px;}
.r-kpi-value{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--accent2);margin-bottom:2px;}
.r-kpi-sub{font-size:11px;color:var(--text3);}
.r-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:18px;box-shadow:var(--shadow);}
.r-section h3{font-family:'Playfair Display',serif;font-size:14px;font-weight:700;color:var(--accent2);margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid var(--border);}
.breakdown-table{width:100%;border-collapse:collapse;}
.breakdown-table th{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--text3);padding:6px 10px;text-align:left;border-bottom:1px solid var(--border);}
.breakdown-table td{padding:9px 10px;border-bottom:1px solid var(--border);font-size:12px;}
.breakdown-table tr:last-child td{border-bottom:none;}
.breakdown-table .total-row td{font-weight:500;border-top:2px solid var(--border);background:var(--surface2);}
.dbar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:12px;}
.dbar-label{min-width:130px;color:var(--text2);}
.dbar-track{flex:1;height:10px;background:var(--surface3);border-radius:5px;overflow:hidden;}
.dbar-fill{height:100%;border-radius:5px;}
.dbar-val{min-width:65px;text-align:right;color:var(--text2);font-size:11px;}
.pred-box{background:var(--accent-bg);border:1px solid var(--orange-border);border-radius:10px;padding:16px 20px;margin-bottom:14px;}
.pred-title{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:var(--accent2);margin-bottom:6px;}
.pred-amount{font-family:'Playfair Display',serif;font-size:32px;font-weight:700;color:var(--accent2);margin-bottom:3px;}
.pred-note{font-size:11px;color:var(--text2);}
.pred-type-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px;}
.pred-type-card{border-radius:8px;padding:12px;}
.owner-report-row{display:flex;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px;gap:8px;}
.owner-report-row:last-child{border:none;}
.or-name{font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.or-apts{font-size:11px;color:var(--text3);min-width:80px;}
.or-col{min-width:80px;text-align:right;}
.trend-wrap{position:relative;height:240px;}

::-webkit-scrollbar{width:6px;height:6px;}
::-webkit-scrollbar-track{background:var(--bg);border-radius:3px;}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px;transition:background 0.15s ease;}
::-webkit-scrollbar-thumb:hover{background:var(--accent);}

/* ── CALENDAR PAGE ── */
.cal-wrap{display:flex;flex-direction:column;flex:1;min-height:0;}
.cal-toolbar{padding:10px 20px;display:flex;gap:10px;align-items:center;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0;overflow:visible;}
.cal-nav{display:flex;align-items:center;gap:8px;}
.cal-nav button{width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:all .12s;}
.cal-nav button:hover{border-color:var(--accent);color:var(--accent);}
.cal-month-label{font-family:'Playfair Display',serif;font-size:16px;font-weight:700;color:var(--accent2);min-width:140px;text-align:center;}
.cal-today-btn{padding:5px 12px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text2);cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;transition:all .12s;}
.cal-today-btn:hover{border-color:var(--accent);color:var(--accent);}
.cal-body{display:flex;flex:1;min-height:0;overflow:hidden;}
.cal-units-col{width:200px;flex-shrink:0;border-right:2px solid var(--border2);overflow-y:auto;overflow-x:hidden;background:var(--surface);z-index:10;min-height:0;}
.cal-units-col::-webkit-scrollbar{display:none;}
/* ── ST Calendar palette refresh (2026-04-24) ──
   Swap warm-brown tones for portal-navy family (#1a2874 base) so the
   ST calendar visually matches the leases page + portal. Today-col +
   header tint stays in the same blue family for a cohesive look.
   Fonts bumped 1-2px for readability. */
.cal-header-spacer{height:76px;border-bottom:2px solid var(--border2);display:flex;align-items:center;padding:0 14px;background:#eef1f8;flex-shrink:0;}
.cal-header-spacer span{font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#1a2874;font-weight:600;}
.cal-unit-row{height:44px;display:flex;align-items:center;padding:0 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;flex-shrink:0;gap:6px;}
.cal-unit-row:hover{background:#eef1f8;}
.cal-unit-name{font-size:13px;font-weight:600;color:#1a2874;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-unit-sub{font-size:10px;color:#6a7090;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px;}
.cal-unit-cell{display:flex;flex-direction:column;justify-content:center;flex:1;overflow:hidden;}
.cal-grid-outer{flex:1;overflow:auto;position:relative;background:#fff;}
.cal-grid-outer::-webkit-scrollbar{height:8px;width:8px;} .cal-grid-outer::-webkit-scrollbar-track{background:#eef1f8;border-radius:4px;} .cal-grid-outer::-webkit-scrollbar-thumb{background:#c5cde8;border-radius:4px;} .cal-grid-outer::-webkit-scrollbar-thumb:hover{background:#1a2874;}
.cal-grid{position:relative;min-width:max-content;background:#fff;}
/* 2026-04-30 — calendar cells widened ~20% (36→44 px), heights ~20%
   (44→53 px), font weights reduced from 700 → 500/600 to match the
   readable Leases-page look. */
/* 2026-05-05 v7: calendar grid + day-header bg flipped to white per Gil.
   Weekends keep the soft navy tint so they remain visually distinct.
   2026-05-06 (grid-align fix): border-right → box-shadow inset so the
   cell width stays exactly 44px even when the browser rounds borders to
   half-pixels at high DPI. The cumulative drift across 240 columns was
   making the bar overlay (positioned via x = colIdx * 44) misalign with
   the day-header row by a few pixels at the right edge. */
.cal-days-header{display:flex;height:62px;position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid #d8dfe8;}
.cal-day-hdr{display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;flex-shrink:0;font-size:11px;color:#6a7090;letter-spacing:.5px;gap:3px;cursor:default;box-sizing:border-box;background:#fff;box-shadow:inset -1px 0 0 #e5eaf4;}
.cal-day-hdr.weekend{background:rgba(26,40,116,.06);}
/* 2026-05-05: today highlight softened from bold navy → muted accent
   pill so it doesn't dominate the row. */
.cal-day-hdr.today{background:#dde4fa;color:#1a2874;box-shadow:inset 0 -2px 0 #1a2874;}
.cal-day-hdr.today .day-name{color:#1a2874;font-weight:600;}
/* 2026-05-05: sturdier sans-serif for cell day numbers — calendar is
   the daily-driver tool so readability beats decorative serif. Headings
   like "Mar 2026" outside the cell still use Playfair (kept as accent). */
.cal-day-hdr .day-num{font-family:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;font-size:18px;font-weight:600;line-height:1;color:#1a2874;letter-spacing:.2px;}
.cal-day-hdr.today .day-num{color:#1a2874;font-weight:700;}
.cal-day-hdr .day-name{font-size:11px;font-weight:500;letter-spacing:.6px;color:#1a2874;line-height:1;}
.cal-day-hdr.weekend .day-name{color:#5e6a85;}
.cal-day-hdr.today .day-name{color:#1a2874;}
.cal-rows{position:relative;background:#fff;}
/* 2026-06-09 (perf) per Gil — content-visibility tells the browser to
   skip layout/paint for off-screen rows. With ~50 units × 180 cells,
   the cumulative paint cost of all rows during scroll was the choppiness
   source. contain-intrinsic-size preserves scroll-position math (browser
   reserves 53px per row before it's painted, so scrollbar stays accurate).
   This is how Hostfully and other smooth PMS calendars achieve their
   responsiveness — they don't paint rows you can't see. */
.cal-row{display:flex;height:44px;border-bottom:1px solid #e1e5ee;position:relative;align-items:center;background:#fff;content-visibility:auto;contain-intrinsic-size:44px;}  /* 2026-08-06 per Gil: tighter rows (was 53px) — more units visible per screen, closer to Hostfully density */
/* Cell bg defaults to white; weekend / today / blocked overrides below
   layer their tints on top via background.
   2026-05-06 (grid-align fix): border-right replaced with inset
   box-shadow — see .cal-day-hdr comment for why. */
.cal-cell{width:44px;flex-shrink:0;height:100%;position:relative;cursor:pointer;transition:background .1s;box-sizing:border-box;background:#fff;box-shadow:inset -1px 0 0 #e1e5ee;}
/* 2026-05-05 v6: channel badge bumped to circle + larger glyph so it
   reads as a logo at a glance (matches the Hostfully-style example
   Gil shared). White ring gives a subtle "raised pin" feel against
   the pastel bar bg. */
.cal-ch-badge{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:700;flex-shrink:0;line-height:1;box-shadow:0 0 0 2px rgba(255,255,255,.85),0 1px 2px rgba(0,0,0,.18);font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;letter-spacing:-.3px;}

/* 2026-08-06 — the calendar's channel mark is rendered INSIDE the floating
   label (badge + guest name), not on the bar. An earlier pass drew it in
   both, which showed as a DOUBLE icon: the floating label pins itself to
   the bar's visible-left, exactly where an on-bar mark sat. The label is
   the correct home because it follows the visible portion when a long bar
   is scrolled part-way out of view. No .cal-ch-mark rule is needed — the
   generic .wpa-ch-mark below covers it. */

/* 2026-08-06 — shared channel mark, emitted by WPA_CH.mark() in
   js/channel-brand.js. Used anywhere a channel needs identifying:
   calendar bars, Pipeline cards, Channels admin, property settings.
   Size and colour come inline from the registry so one edit there
   restyles every surface. Sizing is deliberately NOT set here. */
.wpa-ch-mark{display:inline-flex;align-items:center;justify-content:center;
  border-radius:4px;font-weight:800;line-height:1;letter-spacing:-.2px;
  font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  flex-shrink:0;vertical-align:middle;user-select:none;}
/* Transparent marks (Airbnb's Bélo, Vrbo's V) need a white tile to stay
   legible against a coloured bar. */
.wpa-ch-mark.wpa-ch-img{background:#fff;padding:1.5px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(0,0,0,.10);}
/* Booking.com's logo IS a solid blue tile — fill edge-to-edge, no plate,
   or it renders as a blue square ringed in white. */
.wpa-ch-mark.wpa-ch-solid{background:transparent;padding:0;box-shadow:none;}
.wpa-ch-mark.wpa-ch-img img{width:100%;height:100%;object-fit:contain;display:block;}

.wpa-ch-pill{display:inline-flex;align-items:center;gap:5px;
  padding:2px 8px 2px 3px;border-radius:999px;
  font-size:11px;font-weight:600;line-height:1.6;white-space:nowrap;}

/* 2026-08-06 — HTML email rendered inside a chat bubble. Marketing email
   ships its own layout — fixed table widths, 600px hero images, huge
   margins — none of which belongs in a 12px bubble. Contain it rather
   than let it set the bubble's size. */
.mc-html-body{word-break:break-word;}
.mc-html-body img{max-width:100%;height:auto;border-radius:4px;}
.mc-html-body table{max-width:100%!important;width:auto!important;
  border-collapse:collapse;table-layout:auto!important;}
.mc-html-body td,.mc-html-body th{padding:2px 6px;
  max-width:100%!important;word-break:break-word;}
.mc-html-body a{color:inherit;text-decoration:underline;word-break:break-all;}
.mc-html-body p,.mc-html-body div{margin:0 0 6px;max-width:100%!important;}
.mc-html-body ul,.mc-html-body ol{margin:0 0 6px;padding-left:18px;}
.mc-html-body blockquote{margin:4px 0;padding-left:8px;
  border-left:2px solid rgba(0,0,0,.15);opacity:.85;}
/* Senders often set a white/near-white background on their wrapper, which
   would punch a white hole in a coloured bubble. */
.mc-html-body *{background-color:transparent!important;
  font-family:inherit!important;font-size:inherit!important;}
.cal-cell:hover{background:rgba(26,40,116,.08);}
.cal-cell.weekend{background:rgba(26,40,116,.04);}
.cal-cell.weekend:hover{background:rgba(26,40,116,.1);}
/* 2026-05-06: chain the today ring shadow with the default right-border
   shadow so today-col still has its column separator. */
.cal-cell.today-col{background:rgba(26,40,116,.08);box-shadow:inset 0 0 0 1px rgba(26,40,116,.18),inset -1px 0 0 #e1e5ee;}
.cal-cell.today-col:hover{background:rgba(26,40,116,.14);}
.cal-cell.blocked{background:repeating-linear-gradient(45deg,rgba(184,50,40,.07),rgba(184,50,40,.07) 4px,transparent 4px,transparent 8px);}
.cal-cell.blocked:hover{background:repeating-linear-gradient(45deg,rgba(184,50,40,.14),rgba(184,50,40,.14) 4px,transparent 4px,transparent 8px);}
/* Phase 5.4 (2026-05-04): WO icon overlay — small badge bottom-right of a cell */
.cal-cell .cal-wo-icon{position:absolute;bottom:2px;right:2px;font-size:11px;line-height:1;pointer-events:none;text-shadow:0 0 2px rgba(255,255,255,.9);z-index:6;}
/* Pastel/watercolor bars — same hue families but lighter, gentler.
   Override the bar background colors set inline by JS. */
/* 2026-05-05 (cal v4 — flat soft pastels): solid color + 1px tinted
   border drawn by cal-bar-bg. Per-theme ink color set inline by JS
   (see WPA_calBarTheme). Hover uses a soft shadow lift; brightness
   filter would wash these even-paler bars out so we skip it.
   The .bar-* class color rules are kept as a backstop for any code
   path that builds a bar without going through the theme picker. */
.cal-bar{position:absolute;top:6px;height:32px;border-radius:8px;font-size:14px;font-weight:600;z-index:5;cursor:pointer;transition:box-shadow .15s,transform .15s;box-shadow:0 1px 2px rgba(26,40,116,.06);pointer-events:auto;overflow:hidden;color:#3d3526;}
.cal-bar-bg{position:absolute;inset:0;border-radius:8px;pointer-events:none;box-sizing:border-box;}
.cal-bar:hover{box-shadow:0 4px 10px rgba(26,40,116,.16);transform:translateY(-1px);}
.cal-bar.bar-lt{color:#7a5e1a;}      /* deep ochre ink on cream-yellow */
.cal-bar.bar-avail{color:#1a4a2a;opacity:0.75;}
.cal-bar.bar-history{opacity:0.4;filter:saturate(0.6);}
.cal-bar.bar-history:hover{opacity:0.7;filter:saturate(0.9);}
.cal-bar.bar-mtm{color:#5a4226;}     /* coffee ink on cream-tan */
.cal-bar.bar-ss{color:#7a2828;}      /* wine ink on soft pink */
.cal-bar.bar-block{color:#3e2e1a;opacity:.95;}  /* cocoa ink on tan-brown */
.cal-bar-icon{font-size:10px;flex-shrink:0;}
/* Floating label — sits above the row, follows scroll */
.cal-row-labels{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden;z-index:8;}
/* 2026-05-05: dark warm ink (instead of white) for floating label —
   readable against pastel bar backgrounds. text-shadow softened to a
   white halo so the label still pops if it overlaps a darker patch. */
.cal-float-label{position:absolute;top:6px;height:32px;display:flex;align-items:center;gap:5px;padding:0 8px;font-size:13px;font-weight:600;color:#3d3526;white-space:nowrap;pointer-events:none;text-shadow:0 1px 2px rgba(255,255,255,.55);}
.cal-legend{display:flex;gap:16px;align-items:center;margin-left:auto;}
/* Cal Unit Panel */
.cal-unit-panel-overlay{display:none;position:fixed;inset:0;z-index:400;}
.cal-unit-panel-overlay.open{display:block;}
.cal-unit-panel-backdrop{position:absolute;inset:0;background:rgba(20,16,10,.35);}
.cal-unit-panel{position:absolute;left:0;top:0;bottom:0;width:320px;background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:slideIn .2s cubic-bezier(.34,1.2,.64,1);border-right:1px solid var(--border);}
.cal-unit-panel-hdr{padding:20px 20px 16px;border-bottom:1px solid var(--border);background:var(--accent-bg);display:flex;justify-content:space-between;align-items:flex-start;}
.cal-unit-panel-apt{font-family:'Playfair Display',serif;font-size:36px;font-weight:700;color:var(--accent2);line-height:1;}
.cal-unit-panel-body{padding:20px;flex:1;overflow-y:auto;}
.cal-unit-panel-footer{padding:14px 20px;border-top:1px solid var(--border);background:var(--surface2);display:flex;gap:8px;justify-content:flex-end;}
.cal-leg-item{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text2);}
.cal-leg-dot{width:10px;height:10px;border-radius:3px;}
/* PRICING LAYER */
.pxvt{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;flex-shrink:0;}
.pxvt button{padding:5px 14px;font-family:'DM Mono',monospace;font-size:11px;font-weight:500;border:none;background:var(--surface);color:var(--text2);cursor:pointer;transition:all .15s;}
.pxvt button.active{background:var(--accent);color:#fff;}
.pxvt button:first-child{border-right:1px solid var(--border);}
#pxLayer{display:none;flex:1;min-height:0;overflow:hidden;flex-direction:column;}
#pxLayer .body{display:flex;flex:1;height:100%;min-height:0;overflow:hidden;}
#pxLayer .ucol{width:200px;flex-shrink:0;border-right:2px solid var(--border2);overflow-y:auto;background:var(--surface);display:flex;flex-direction:column;}
#pxLayer .ucol::-webkit-scrollbar{display:none;}
#pxLayer .uhdr{height:76px;border-bottom:2px solid var(--border2);display:flex;flex-direction:column;justify-content:center;padding:0 14px;background:var(--surface2);gap:3px;}
#pxLayer .urow{height:44px;display:flex;align-items:center;padding:0 14px;border-bottom:1px solid var(--border);}
#pxLayer .uname{font-size:12px;font-weight:500;color:var(--accent2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#pxLayer .usub{font-size:9px;color:var(--text3);margin-top:1px;}
#pxLayer .gouter{flex:1;overflow:auto;min-height:0;}
#pxLayer .gouter::-webkit-scrollbar{height:8px;} #pxLayer .gouter::-webkit-scrollbar-track{background:var(--surface3);} #pxLayer .gouter::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px;}
#pxLayer .grid{position:relative;min-width:max-content;}
#pxLayer .mrow{display:flex;height:24px;position:sticky;top:0;z-index:21;background:var(--surface2);border-bottom:1px solid var(--border);}
#pxLayer .dhdr{display:flex;height:52px;position:sticky;top:24px;z-index:20;background:var(--surface2);border-bottom:2px solid var(--border2);}
#pxLayer .dcell{display:flex;flex-direction:column;align-items:center;justify-content:center;width:68px;flex-shrink:0;border-right:1px solid var(--border);font-size:9px;color:var(--text3);text-transform:uppercase;gap:2px;}
#pxLayer .dcell.we{background:rgba(181,120,74,.06);}
#pxLayer .dcell.td{background:var(--green);color:#fff;}
#pxLayer .dcell .dn{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;line-height:1;}
#pxLayer .rows{}
#pxLayer .prow{display:flex;height:44px;border-bottom:1px solid var(--border);position:relative;align-items:stretch;background:#fff;}
#pxLayer .pcell{width:68px;flex-shrink:0;height:100%;border-right:1px solid var(--border);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;user-select:none;background:#fff;}
#pxLayer .pcell.we{background:rgba(181,120,74,.04);}
#pxLayer .pcell.td{background:rgba(37,102,69,.06);}
#pxLayer .pcell.av{cursor:crosshair;}
#pxLayer .pcell.av:hover{background:rgba(181,120,74,.1);}
#pxLayer .pcell.sl{background:rgba(30,87,153,.18)!important;outline:1px solid rgba(30,87,153,.4);outline-offset:-1px;z-index:2;}
#pxLayer .prate{color:var(--accent2);font-size:11px;line-height:1;}
#pxLayer .prate.ov{color:var(--blue);}
#pxLayer .pmin{color:var(--text3);font-size:9px;line-height:1;}
/* Modal */
.pxsec{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:10px;}
.pxsec-h{padding:9px 14px;background:var(--surface2);font-size:11px;font-weight:600;color:var(--text2);display:flex;justify-content:space-between;}
.pxsec-b{padding:12px 14px;display:flex;flex-direction:column;gap:10px;}
.pxf{display:flex;align-items:center;gap:8px;}
.pxl{font-size:11px;color:var(--text2);min-width:100px;flex-shrink:0;}
.pxi{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text);outline:none;min-width:0;}
.pxi:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(181,120,74,.1);}
.pxs{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text);outline:none;cursor:pointer;}
.pxbadge{background:var(--accent);color:#fff;border-radius:20px;font-size:10px;font-weight:700;padding:2px 8px;margin-left:6px;}
/* Block modal */
.block-modal-info{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:12px 14px;margin-bottom:16px;font-size:12px;color:var(--text2);}
.block-modal-info strong{color:var(--accent2);}
.cal-bar-label{white-space:nowrap;}
.cal-bar-x{margin-left:6px;flex-shrink:0;width:16px;height:16px;border-radius:50%;background:rgba(255,255,255,.25);display:inline-flex;align-items:center;justify-content:center;font-size:9px;line-height:1;cursor:pointer;transition:background .15s;}
.cal-bar-x:hover{background:rgba(255,255,255,.5);}
/* 2026-05-28 per Gil — outstanding-balance indicator on calendar bars.
   Red corner dot lives on top-right of any bar whose booking still owes
   (total_amount > paid_amount). Pointer-events off so it never eats the
   bar's click handler. */
.cal-bar-owed-dot{position:absolute;top:4px;right:4px;width:10px;height:10px;border-radius:50%;background:#dc2626;box-shadow:0 0 0 2px #fff,0 1px 3px rgba(220,38,38,.45);pointer-events:none;z-index:10;}
.cal-bar.bar-owed{box-shadow:0 1px 2px rgba(220,38,38,.18),inset 0 0 0 1px rgba(220,38,38,.35);}
.cal-bar.bar-owed:hover{box-shadow:0 4px 10px rgba(220,38,38,.28),inset 0 0 0 1px rgba(220,38,38,.5);}
.loading-overlay{position:fixed;inset:0;background:rgba(244,242,238,.96);z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;}
.loading-overlay h2{font-family:'Playfair Display',serif;font-size:26px;color:var(--accent2);letter-spacing:-.3px;}
.loading-overlay p{font-size:12px;color:var(--text3);letter-spacing:.5px;}
.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 0.8s linear infinite;box-shadow:0 0 0 3px rgba(181,120,74,.1);}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes slideDown{from{opacity:0;transform:translateY(-2px)}to{opacity:1;transform:translateY(0)}}
.sync-dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block;margin-left:6px;animation:pulse 2s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.2}}

/* ── Card hover effects ── */
.automation-card,.automation-section,.prop-row,.modal,.detail-panel {
  transition:all 0.15s ease;
}
.automation-card:hover,.automation-section:hover,.prop-row:hover {
  transform:translateY(-2px);
}
@media(max-width:768px){
  .header,.toolbar,.table-wrap,.arch-section,.dash-wrap,.report-wrap{padding-left:16px;padding-right:16px;}
  .stat-card{padding:10px 16px;min-width:90px;}
  .form-grid,.dash-two-col,.pred-type-grid{grid-template-columns:1fr;}
  .brand-sub{display:none;}
  .nav-tabs{padding:0 16px;}
  .automation-grid{grid-template-columns:1fr;}
  .detail-panel{width:100% !important;max-width:100vw;}
  .cal-unit-panel{width:280px;}
}
</style>
<style id="added-styles">

/* ═══ PROPERTIES PAGE CSS ═══ */
.prop-wrap{padding:0 0 40px;}
/* Properties page — sidebar layout */
.prop-wrap{display:flex;min-height:calc(100vh - var(--header-h) - 48px);}
.prop-sidebar{
  width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);
  padding:16px 12px;display:flex;flex-direction:column;gap:8px;
  position:sticky;top:48px;height:calc(100vh - var(--header-h) - 48px);overflow-y:auto;
}
.prop-sidebar-section{font-size:9px;text-transform:uppercase;letter-spacing:1.5px;color:var(--text3);padding:4px 4px 2px;margin-top:4px;}
.prop-search-wrap{position:relative;width:100%;}
.prop-search-wrap svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none;}
.prop-search-wrap input{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px 8px 32px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text);outline:none;transition:all .2s;box-shadow:var(--shadow);box-sizing:border-box;}
.prop-search-wrap input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(181,120,74,.12);}
.prop-filter-sel{width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;font-family:'DM Mono',monospace;font-size:12px;color:var(--text2);outline:none;cursor:pointer;box-shadow:var(--shadow);}
.prop-filter-sel:focus{border-color:var(--accent);}
.prop-sidebar-btns{display:flex;flex-direction:column;gap:6px;margin-top:4px;}
.prop-main{flex:1;min-width:0;padding:0;}
.prop-count{font-family:'DM Mono',monospace;font-size:11px;color:var(--text3);padding:8px 20px;border-bottom:1px solid var(--border);text-align:right;background:var(--bg);}
.prop-showing{padding:8px 20px;font-size:11px;color:var(--text3);background:var(--bg);border-bottom:1px solid var(--border);text-align:right;}
.prop-list{padding:12px 16px;display:flex;flex-direction:column;gap:0;}
/* hide old header */
.prop-header{display:none;}
.prop-list{padding:0 32px;margin-top:8px;display:flex;flex-direction:column;gap:0;}

/* Property row — matches Hostfully layout */
.prop-row{
  display:flex;align-items:center;gap:20px;
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:18px 20px;margin-bottom:10px;
  box-shadow:var(--shadow);transition:box-shadow .18s,transform .18s;
  cursor:pointer;
}
.prop-row:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}
.prop-thumb{
  width:64px;height:64px;border-radius:10px;background:var(--surface2);
  border:1px solid var(--border);flex-shrink:0;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.prop-thumb img{width:100%;height:100%;object-fit:cover;}
.prop-thumb-icon{font-size:28px;color:var(--text3);}
.prop-info{flex:1;min-width:0;}
.prop-name{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;color:var(--accent);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.prop-name:hover{color:var(--accent2);text-decoration:underline;}
.prop-address{font-size:11px;color:var(--text2);margin-bottom:4px;}
.prop-meta{font-size:11px;color:var(--text3);display:flex;gap:10px;flex-wrap:wrap;}
.prop-meta-item{display:flex;align-items:center;gap:4px;}
.prop-tags{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap;}
.prop-tag{font-size:10px;color:var(--text3);background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:1px 8px;cursor:pointer;}
.prop-tag:hover{border-color:var(--accent);color:var(--accent);}
.prop-tag-add{color:var(--text3);font-style:italic;}

.prop-mid{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:110px;}
.prop-owner-badge{font-size:10px;color:var(--text3);background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:3px 10px;text-align:center;white-space:nowrap;}

.prop-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.prop-status-badge{
  padding:4px 12px;border-radius:6px;font-size:11px;font-weight:600;
  font-family:'DM Mono',monospace;letter-spacing:.3px;
}
.prop-status-active{background:#1a7f46;color:#fff;}
.prop-status-inactive{background:#9e9485;color:#fff;}
.prop-gear{
  width:32px;height:32px;border-radius:8px;background:var(--surface2);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  font-size:14px;transition:all .18s;color:var(--text2);text-decoration:none;
}
.prop-gear:hover{background:var(--accent-bg);border-color:var(--accent);color:var(--accent);}

.prop-empty{text-align:center;padding:60px 20px;color:var(--text3);}

@media(max-width:768px){
  .prop-sidebar{width:100%;height:auto;position:relative;top:0;flex-direction:row;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--border);}
  .prop-wrap{flex-direction:column;}
  .prop-list{padding:0 12px;}
  .prop-showing{padding:8px 16px;}
  .prop-list{padding:8px 12px;}
  .prop-mid{display:none;}
}

/* Auth */
#authScreen{position:fixed;inset:0;z-index:99999;display:none;align-items:center;justify-content:center;background:#f0ede7;background-image:url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23b5784a' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");}
#authCard{background:#fffefb;border:1px solid #ddd8ce;border-radius:20px;box-shadow:0 16px 48px rgba(0,0,0,.14);width:100%;max-width:390px;padding:42px 38px;}
#authLogo{text-align:center;margin-bottom:30px;}
#authLogo h1{font-family:'Playfair Display',serif;font-size:30px;font-weight:700;color:#7d5228;letter-spacing:-.3px;margin:0;}
#authLogo p{font-size:9px;color:#9e9485;letter-spacing:3px;text-transform:uppercase;margin:5px 0 0;}
#authTabs{display:flex;border:1px solid #ddd8ce;border-radius:10px;overflow:hidden;margin-bottom:26px;}
.auth-tab{flex:1;padding:10px;text-align:center;font-size:11px;font-weight:500;cursor:pointer;letter-spacing:.5px;color:#9e9485;background:#f7f4ef;transition:all .18s;}
.auth-tab.active{background:#7d5228;color:#fff;}
#authErr{background:#fdf1f0;border:1px solid #eebfba;border-radius:8px;padding:10px 14px;color:#b83228;font-size:11px;margin-bottom:14px;display:none;text-align:center;font-family:'DM Mono',monospace;}
.auth-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#9e9485;margin-bottom:6px;font-family:'DM Mono',monospace;}
.auth-inp{width:100%;background:#f7f4ef;border:1px solid #ddd8ce;border-radius:10px;padding:11px 14px;font-family:'DM Mono',monospace;font-size:13px;color:#18160f;outline:none;box-sizing:border-box;margin-bottom:15px;}
.auth-inp:focus{border-color:#b5784a;background:#fffefb;box-shadow:0 0 0 3px rgba(181,120,74,.12);}

#authBtn{width:100%;padding:13px;background:#7d5228;color:#fff;border:none;border-radius:10px;font-family:'DM Mono',monospace;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;}
#authBtn:hover{background:#b5784a;}
#authChangeLink{text-align:center;margin-top:14px;}
#authChangeLink span{font-size:10px;color:#9e9485;cursor:pointer;letter-spacing:.5px;text-transform:uppercase;border-bottom:1px dashed #c8c2b6;padding-bottom:1px;font-family:'DM Mono',monospace;}
#inactivityBanner{position:fixed;bottom:0;left:0;right:0;background:#b86818;color:#fff;text-align:center;padding:10px;font-size:12px;z-index:9000;display:none;font-family:'DM Mono',monospace;}
#chpwOverlay{position:fixed;inset:0;background:rgba(20,16,10,.55);z-index:100000;display:none;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(3px);}
#chpwOverlay.open{display:flex;}
#chpwBox{background:#fffefb;border-radius:16px;box-shadow:0 16px 48px rgba(0,0,0,.14);width:100%;max-width:400px;padding:32px;}
#chpwBox h3{font-family:'Playfair Display',serif;font-size:18px;color:#7d5228;margin:0 0 20px;}
.chpw-lbl{display:block;font-size:10px;text-transform:uppercase;letter-spacing:1.5px;color:#9e9485;margin-bottom:5px;font-family:'DM Mono',monospace;}
.chpw-inp{width:100%;background:#f7f4ef;border:1px solid #ddd8ce;border-radius:10px;padding:10px 13px;font-family:'DM Mono',monospace;font-size:12px;color:#18160f;outline:none;box-sizing:border-box;margin-bottom:13px;}
.chpw-inp:focus{border-color:#b5784a;}
#chpwErr{background:#fdf1f0;border:1px solid #eebfba;border-radius:8px;padding:9px 13px;color:#b83228;font-size:11px;margin-bottom:12px;display:none;font-family:'DM Mono',monospace;}
#chpwOk{background:#edf7f2;border:1px solid #a8d8be;border-radius:8px;padding:9px 13px;color:#256645;font-size:11px;margin-bottom:12px;display:none;font-family:'DM Mono',monospace;}
/* Settings page */
#page-settings .sw{padding:28px 32px;max-width:680px;}
#page-settings h2{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:#7d5228;margin:0 0 4px;}
#page-settings .si{font-size:11px;color:#9e9485;margin:0 0 24px;font-family:'DM Mono',monospace;}
#page-settings .sc{background:#fffefb;border:1px solid #ddd8ce;border-radius:14px;padding:22px 24px;margin-bottom:18px;box-shadow:0 1px 4px rgba(0,0,0,.06);}
#page-settings .sc h3{font-family:'Playfair Display',serif;font-size:16px;color:#7d5228;margin:0 0 4px;}
#page-settings .scd{font-size:11px;color:#9e9485;margin:0 0 16px;font-family:'DM Mono',monospace;}
#page-settings .sr{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid #ddd8ce;gap:12px;}
#page-settings .sr:last-child{border-bottom:none;padding-bottom:0;}
#page-settings .srl{font-size:12px;color:#635c4e;font-family:'DM Mono',monospace;}
#page-settings .srs{font-size:10px;color:#9e9485;margin-top:2px;font-family:'DM Mono',monospace;}
/* Settings sub-nav buttons */
.settings-snav{border-radius:20px!important;font-size:12px!important;padding:6px 16px!important;transition:all .2s;}
.settings-snav.active{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important;}

/* Global row delete button (used in expenses table etc) */
.jc-row-del{width:20px;height:20px;border-radius:4px;border:none;background:transparent;color:var(--muted);font-size:11px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:.4;transition:all .15s}
.jc-row-del:hover{background:rgba(176,32,64,.1);color:var(--accent3);opacity:1}

/* Automations page */
#page-automations{overflow-y:auto;background:var(--bg);}
.automation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:32px;}
.automation-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);transition:all .2s;}
.automation-card:hover{border-color:var(--accent);box-shadow:0 4px 12px rgba(181,120,74,.12);}
.automation-card h3{margin:0 0 12px;font-size:14px;font-weight:600;color:var(--text);}
.automation-card-num{font-size:28px;font-weight:700;color:var(--accent);margin-bottom:8px;font-family:'Playfair Display',serif;}
.automation-card-desc{font-size:11px;color:var(--text3);margin:0;}
.automation-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:var(--shadow);}
.automation-section h3{margin:0 0 16px;font-size:14px;font-weight:600;color:var(--text);}
.automation-btn{width:100%;padding:10px 16px;margin-bottom:16px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:none;border-radius:10px;font-weight:600;cursor:pointer;font-family:'DM Mono',monospace;font-size:12px;transition:all .2s;}
.automation-btn:hover{box-shadow:0 4px 12px rgba(181,120,74,.3);transform:translateY(-1px);}
.automation-btn:disabled{opacity:.6;cursor:not-allowed;}
.automation-list{border:1px solid var(--border);border-radius:10px;max-height:400px;overflow-y:auto;}
.automation-item{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}
.automation-item:last-child{border-bottom:none;}
.automation-item-info{flex:1;}
.automation-item-apt{font-weight:600;color:var(--text);}
.automation-item-name{font-size:11px;color:var(--text3);}
.automation-item-type{font-size:10px;color:var(--text3);margin-top:2px;}
.automation-item-actions{display:flex;gap:6px;}
.automation-btn-small{padding:6px 10px;background:var(--green);color:#fff;border:none;border-radius:6px;font-size:10px;cursor:pointer;font-family:'DM Mono',monospace;transition:all .15s;}
.automation-btn-small:hover{background:#1e4d2b;transform:translateY(-1px);}
.automation-btn-skip{background:var(--surface2);color:var(--text3);border:1px solid var(--border);}
.automation-btn-skip:hover{background:var(--surface3);border-color:var(--accent);}
.automation-empty{text-align:center;padding:32px 20px;color:var(--text3);}
.automation-empty p{margin:0;font-size:12px;}
.automation-table{width:100%;border-collapse:collapse;font-size:12px;}
.automation-table thead th{background:var(--surface2);padding:10px 14px;text-align:left;font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--text3);border-bottom:2px solid var(--border);}
.automation-table tbody td{padding:10px 14px;border-bottom:1px solid var(--border);}
.automation-table tbody tr:hover{background:var(--surface2);}
.automation-badge{font-size:10px;padding:4px 8px;border-radius:4px;display:inline-block;}
.automation-badge-sent{background:var(--green-bg);color:var(--green);}
.automation-badge-skipped{background:var(--orange-bg);color:var(--orange);}
.automation-badge-pending{background:var(--blue-bg);color:var(--blue);}
.automation-report-box{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;font-size:12px;}
.automation-report-row{margin-bottom:12px;}
.automation-report-row:last-child{margin-bottom:0;}
.automation-report-label{color:var(--text3);font-size:10px;text-transform:uppercase;letter-spacing:1px;}
.automation-report-value{font-size:18px;font-weight:700;color:var(--accent);font-family:'Playfair Display',serif;}
.automation-alert-box{background:var(--blue-bg);border:1px solid var(--blue-border);border-radius:10px;padding:16px;margin-bottom:16px;}
.automation-alert-box.orange{background:var(--orange-bg);border-color:var(--orange-border);}
.automation-alert-box h4{margin:0 0 12px;color:var(--blue);font-weight:600;font-size:12px;}
.automation-alert-box.orange h4{color:var(--orange);}
.automation-alert-item{padding:8px 0;border-bottom:1px solid var(--blue-border);font-size:11px;}
.automation-alert-box.orange .automation-alert-item{border-bottom-color:var(--orange-border);}
.automation-alert-item:last-child{border-bottom:none;}
.automation-alert-item strong{display:block;color:var(--text);margin-bottom:2px;}

/* ═══════════════════════════════════════
   MTM / LONG-TERM MODULE PAGES
   ═══════════════════════════════════════ */
.mtm-page-wrap{padding:24px 32px;flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:16px;}
.mtm-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.mtm-page-title{font-family:'Playfair Display',serif;font-size:22px;color:var(--green);margin:0;}
.mtm-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.mtm-search{padding:7px 12px;border:1px solid var(--border);border-radius:var(--radius);font-family:'DM Mono',monospace;font-size:12px;background:var(--surface);width:200px;}
.mtm-search:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-bg);}
.mtm-filter{padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius);font-family:'DM Mono',monospace;font-size:11px;background:var(--surface);cursor:pointer;}
.mtm-count{font-size:11px;color:var(--text3);white-space:nowrap;}

/* MTM Tables */
.mtm-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);}
.mtm-table{width:100%;border-collapse:collapse;font-size:12px;}
.mtm-table thead{background:var(--surface2);position:sticky;top:0;z-index:2;}
.mtm-table th{padding:10px 14px;text-align:left;font-weight:600;color:var(--text2);font-size:10px;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border);}
.mtm-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;}
.mtm-table tbody tr:hover{background:var(--green-bg);}
.mtm-table tbody tr:last-child td{border-bottom:none;}

/* Tenant row specific */
.mtm-tenant-name{font-weight:600;color:var(--text);display:block;}
.mtm-tenant-email{font-size:10px;color:var(--text3);display:block;margin-top:1px;}
.mtm-prop-unit{font-weight:500;color:var(--text);display:block;}
.mtm-prop-addr{font-size:10px;color:var(--text3);display:block;margin-top:1px;}

/* Status badges */
.mtm-badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:10px;font-weight:600;letter-spacing:.3px;}
.mtm-badge.active{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mtm-badge.future{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.mtm-badge.expiring{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.mtm-badge.expired{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.mtm-badge.mtm{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.mtm-badge.fixed{background:var(--accent-bg);color:var(--accent);border:1px solid var(--accent);}
.mtm-badge.paid{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mtm-badge.partial{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.mtm-badge.overdue{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.mtm-badge.pending{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}

/* Action buttons */
.mtm-btn{padding:4px 10px;border:1px solid var(--border);border-radius:6px;font-size:10px;font-family:'DM Mono',monospace;background:var(--surface);cursor:pointer;color:var(--text2);transition:all .15s;}
.mtm-btn:hover{background:var(--green-bg);border-color:var(--green-border);color:var(--green);}

/* Lease stats bar */
.mtm-lease-stats{display:flex;gap:12px;}
.mtm-ls{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;text-align:center;box-shadow:var(--shadow);}
.mtm-ls-num{font-size:24px;font-weight:700;display:block;}
.mtm-ls-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}
.mtm-ls.active .mtm-ls-num{color:var(--green);}
.mtm-ls.future .mtm-ls-num{color:var(--blue);}
.mtm-ls.expiring .mtm-ls-num{color:var(--orange);}
.mtm-ls.expired .mtm-ls-num{color:var(--red);}

/* Rent summary bar */
.mtm-rent-summary{display:flex;gap:12px;}
.mtm-rs{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;text-align:center;box-shadow:var(--shadow);}
.mtm-rs-num{font-size:20px;font-weight:700;display:block;}
.mtm-rs-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-top:2px;}

/* Empty state */
.mtm-empty{padding:40px;text-align:center;color:var(--text3);font-style:italic;}

/* ═══ MTM Dashboard ═══ */
.mtm-dash-wrap{padding:24px 32px;flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:20px;}
.mtm-dash-top{display:flex;gap:20px;}
.mtm-dash-collection{flex:1.2;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);}
.mtm-dash-right-col{flex:1;display:flex;flex-direction:column;gap:14px;}
.mtm-dash-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow);}
.mtm-dash-section-title{font-family:'Playfair Display',serif;font-size:14px;color:var(--accent2);margin:0 0 12px;display:flex;align-items:center;gap:8px;}
.mtm-dash-period{font-family:'DM Mono',monospace;font-size:11px;color:var(--text3);background:var(--surface2);padding:2px 8px;border-radius:4px;}

/* Donut chart */
.mtm-dash-donut-wrap{position:relative;width:180px;height:180px;margin:0 auto 16px;}
.mtm-dash-donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;}
.mtm-dash-donut-total{font-size:20px;font-weight:700;color:var(--text);}
.mtm-dash-donut-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}

/* Collection grid */
.mtm-dash-collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.mtm-dash-cg-item{display:flex;align-items:flex-start;gap:8px;}
.mtm-cg-dot{width:10px;height:10px;border-radius:50%;margin-top:3px;flex-shrink:0;}
.mtm-cg-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;}
.mtm-cg-val{font-size:14px;font-weight:600;color:var(--text);}
.mtm-cg-pct{font-size:11px;font-weight:500;}

/* Occupancy */
.mtm-dash-occ-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.mtm-dash-occ-num{font-size:28px;font-weight:700;}
.mtm-dash-occ-label{font-size:10px;color:var(--text3);text-transform:uppercase;margin-right:8px;}
.mtm-dash-occ-bar{flex:1;height:8px;background:var(--surface3);border-radius:4px;overflow:hidden;min-width:80px;}
.mtm-dash-occ-fill{height:100%;background:var(--green);border-radius:4px;transition:width .4s ease;}
.mtm-dash-occ-pct{font-size:18px;font-weight:700;color:var(--green);}

/* Lease status grid */
.mtm-dash-lease-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.mtm-dash-lg-item{display:flex;align-items:baseline;gap:6px;}
.mtm-dash-lg-num{font-size:22px;font-weight:700;}
.mtm-dash-lg-label{font-size:10px;color:var(--text3);}

/* Overdue units */
.mtm-dash-overdue-row{display:flex;align-items:baseline;gap:4px;}
.mtm-dash-overdue-big{font-size:36px;font-weight:700;color:var(--red);}
.mtm-dash-overdue-of{font-size:16px;color:var(--text3);}

/* Bottom action lists */
.mtm-dash-bottom{display:flex;gap:20px;}
.mtm-dash-half{flex:1;}
.mtm-dash-list{display:flex;flex-direction:column;gap:8px;}
.mtm-dash-list-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:var(--surface2);border-radius:6px;font-size:12px;}
.mtm-dash-list-item .mtm-li-name{font-weight:600;color:var(--text);}
.mtm-dash-list-item .mtm-li-detail{color:var(--text3);font-size:10px;}
.mtm-dash-list-item .mtm-li-val{font-weight:600;}

/* ═══ Tenants — Innago Master-Detail Layout ═══ */
.tnt-layout{display:flex;height:calc(100vh - 100px);overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);}
.tnt-sidebar{width:360px;min-width:300px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--bg);}
.tnt-sidebar-header{padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface);}
.tnt-sort-row{display:flex;gap:4px;margin-bottom:8px;}
.tnt-sort-btn{flex:1;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:10px;color:var(--text3);transition:all .12s;text-align:center;}
.tnt-sort-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.tnt-search{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);font-family:'DM Mono',monospace;font-size:11px;color:var(--text);margin-bottom:6px;}
.tnt-filter-row{display:flex;gap:6px;}
.tnt-filter-sel{flex:1;padding:5px 6px;border:1px solid var(--border);border-radius:4px;background:var(--bg);font-family:'DM Mono',monospace;font-size:10px;color:var(--text2);}
.tnt-list{flex:1;overflow-y:auto;}
.tnt-list-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
.tnt-list-item:hover{background:var(--surface2);}
.tnt-list-item.active{background:var(--accent);color:#fff;}
.tnt-list-item.active .tnt-li-name{color:#fff;}
.tnt-list-item.active .tnt-li-addr{color:rgba(255,255,255,.75);}
.tnt-li-avatar{width:40px;height:40px;border-radius:50%;background:var(--surface2);display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--text3);flex-shrink:0;border:1px solid var(--border);}
.tnt-list-item.active .tnt-li-avatar{background:rgba(255,255,255,.2);color:#fff;border-color:rgba(255,255,255,.3);}
.tnt-li-info{flex:1;min-width:0;}
.tnt-li-name{font-weight:600;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tnt-li-addr{font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* Tenant Detail Panel */
.tnt-detail{flex:1;overflow-y:auto;background:var(--bg);}
.tnt-detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text3);}
.tnt-detail-empty-icon{font-size:48px;opacity:.3;margin-bottom:12px;}
.tnt-detail-empty-text{font-size:13px;font-style:italic;}
.tnt-detail-content{padding:0;}
.tnt-detail-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--surface);}
.tnt-detail-title-area{font-family:'Playfair Display',serif;font-size:18px;color:var(--text);}
.tnt-detail-actions-area{display:flex;align-items:center;gap:8px;}
.tnt-close-btn{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;color:var(--text3);transition:all .15s;}
.tnt-close-btn:hover{background:var(--red-bg);border-color:var(--red);color:var(--red);}
/* More Actions Menu */
.tnt-more-actions{position:relative;}
.tnt-more-btn{width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;color:var(--text2);transition:all .15s;}
.tnt-more-btn:hover{background:var(--surface2);border-color:var(--text3);}
.tnt-actions-menu{display:none;position:absolute;top:34px;right:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);z-index:100;min-width:220px;overflow:hidden;}
.tnt-actions-menu.open{display:block;}
.tnt-action-item{display:flex;align-items:center;gap:10px;padding:12px 16px;cursor:pointer;font-size:13px;color:var(--text);transition:background .12s;}
.tnt-action-item:hover{background:var(--surface2);}
.tnt-action-icon{width:20px;text-align:center;font-size:15px;color:var(--text2);}
.tnt-action-count{font-size:11px;color:var(--text3);margin-left:auto;}

/* Profile Card */
.tnt-profile-card{display:grid;grid-template-columns:auto 1fr auto auto;gap:16px;align-items:start;padding:20px;border-bottom:1px solid var(--border);}
.tnt-avatar-large{width:80px;height:80px;border-radius:50%;background:var(--surface2);display:flex;align-items:center;justify-content:center;font-size:32px;color:var(--text3);border:2px solid var(--border);}
.tnt-profile-info{min-width:0;}
.tnt-profile-name{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;color:var(--text);margin-bottom:8px;line-height:1.2;}
.tnt-profile-contact{display:flex;flex-direction:column;gap:4px;}
.tnt-contact-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2);}
.tnt-contact-icon{font-size:13px;color:var(--accent);width:16px;text-align:center;}
.tnt-email-link{color:var(--accent);text-decoration:none;font-size:12px;}
.tnt-email-link:hover{text-decoration:underline;}
.tnt-profile-meta{text-align:center;min-width:120px;}
.tnt-account-status{font-size:11px;color:var(--text2);margin-bottom:8px;display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:center;}
.tnt-status-icon{font-size:14px;}
.tnt-status-check{font-size:16px;}
.tnt-tenant-since{font-size:12px;color:var(--text2);line-height:1.5;}
.tnt-tenant-since strong{display:block;font-size:13px;color:var(--text);margin-top:2px;}
.tnt-profile-insurance{min-width:130px;text-align:right;}
.tnt-insurance-label{font-size:11px;color:var(--text3);margin-bottom:4px;}
.tnt-insurance-link{font-size:12px;color:var(--accent);text-decoration:none;}
.tnt-insurance-link:hover{text-decoration:underline;}

/* Current Lease & Collection Info Row */
.tnt-info-row{display:grid;grid-template-columns:1fr 1fr;gap:0;border-bottom:1px solid var(--border);}
.tnt-info-block{padding:16px 20px;}
.tnt-info-block:first-child{border-right:1px solid var(--border);}
.tnt-info-title{font-family:'Playfair Display',serif;font-size:15px;color:var(--accent2);margin:0 0 12px;font-weight:600;}
.tnt-lease-summary{font-size:12px;color:var(--text);}
.tnt-lease-icon{font-size:14px;}
.tnt-lease-prop{font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.tnt-lease-rent-row{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;}
.tnt-lease-rent-label{font-size:11px;color:var(--text3);}
.tnt-lease-rent-amount{font-size:20px;font-weight:700;color:var(--text);}
.tnt-lease-rent-of{font-size:11px;color:var(--text3);}
.tnt-lease-dates{display:flex;gap:24px;margin-bottom:8px;font-size:12px;color:var(--text2);}
.tnt-lease-dates strong{color:var(--text);}
.tnt-view-lease-link{font-size:12px;color:var(--accent);text-decoration:none;}
.tnt-view-lease-link:hover{text-decoration:underline;}

/* Collection grid */
.tnt-collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;font-size:12px;}
.tnt-coll-item{display:flex;flex-direction:column;gap:2px;}
.tnt-coll-label{font-size:10px;color:var(--text3);}
.tnt-coll-val{font-weight:600;color:var(--text);}
.tnt-coll-val.link{color:var(--accent);cursor:pointer;}
.tnt-coll-val.link:hover{text-decoration:underline;}
.tnt-coll-val.total{font-size:15px;color:var(--text);}
.tnt-coll-view{display:flex;align-items:center;}
.tnt-coll-view a{font-size:11px;color:var(--accent);text-decoration:none;}
.tnt-coll-view a:hover{text-decoration:underline;}

/* Message History section */
.tnt-section{padding:16px 20px;border-bottom:1px solid var(--border);}
.tnt-section-title{font-family:'Playfair Display',serif;font-size:15px;color:var(--accent2);margin:0 0 10px;font-weight:600;}
.tnt-msg-table-wrap{overflow-x:auto;}
.tnt-msg-table{width:100%;border-collapse:collapse;font-size:12px;}
.tnt-msg-table thead th{padding:8px 10px;text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);font-weight:600;border-bottom:1px solid var(--border);}
.tnt-msg-table tbody td{padding:10px 10px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:top;}
.tnt-msg-table tbody tr:last-child td{border-bottom:none;}
.tnt-msg-table tbody tr:hover{background:var(--surface2);}
.tnt-msg-view-link{font-size:11px;color:var(--accent);text-decoration:none;cursor:pointer;}
.tnt-msg-view-link:hover{text-decoration:underline;}

/* ═══ Leases & Files — Innago Layout ═══ */
.lf-page{display:flex;flex-direction:column;height:calc(100vh - 100px);overflow:hidden;}
.lf-tabs-bar{display:flex;gap:0;border-bottom:2px solid var(--border);background:var(--surface);padding:0 20px;}
.lf-tab{padding:12px 24px;border:none;background:none;cursor:pointer;font-family:'DM Mono',monospace;font-size:12px;font-weight:600;color:var(--text3);letter-spacing:.5px;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.lf-tab:hover{color:var(--text);}
.lf-tab.active{color:var(--accent);border-bottom-color:var(--accent);}
.lf-tab-content{flex:1;display:flex;flex-direction:column;overflow:hidden;}
.lf-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;}
.lf-toolbar-left{display:flex;align-items:center;gap:12px;}
.lf-toolbar-right{display:flex;align-items:center;gap:8px;}
.lf-filter-sel{padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);font-family:'DM Mono',monospace;font-size:11px;color:var(--text2);min-width:120px;}
.lf-showing{font-size:11px;color:var(--text3);}
.lf-export-btn{padding:7px 18px;border:1px solid var(--accent);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);transition:all .15s;}
.lf-export-btn:hover{background:var(--accent);color:#fff;}
.lf-new-btn{padding:7px 18px;border:none;border-radius:4px;background:var(--accent);cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:#fff;transition:all .15s;}
.lf-new-btn:hover{filter:brightness(1.1);}
.lf-layout{display:flex;flex:1;overflow:hidden;border-top:1px solid var(--border);}
.lf-sidebar{width:360px;min-width:300px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--bg);}
.lf-sort-row{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--border);background:var(--surface);}
.lf-sort-btn{flex:1;padding:5px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:10px;color:var(--text3);transition:all .12s;text-align:center;}
.lf-sort-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
.lf-list{flex:1;overflow-y:auto;}
.lf-list-item{padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
.lf-list-item:hover{background:var(--surface2);}
.lf-list-item.active{background:var(--accent);color:#fff;}
.lf-list-item.active .lf-li-property{color:#fff;}
.lf-list-item.active .lf-li-date{color:rgba(255,255,255,.75);}
.lf-li-top{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.lf-li-status{display:inline-block;padding:2px 10px;border-radius:4px;font-size:10px;font-weight:600;color:#fff;text-transform:capitalize;}
.lf-li-status.active{background:var(--green);}
.lf-li-status.future{background:var(--orange);}
.lf-li-status.expired{background:var(--text3);}
.lf-li-status.expiring{background:var(--red);}
.lf-li-property{font-weight:600;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lf-li-date{font-size:11px;color:var(--text3);}

/* Lease Detail Panel (inline, not slide-over) */
.lf-detail{flex:1;overflow-y:auto;background:var(--bg);}
.lf-detail-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text3);}
.lf-detail-content{padding:0;}
.lf-detail-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--surface);}
.lf-detail-title-area{font-family:'Playfair Display',serif;font-size:18px;color:var(--text);}

/* Lease Card (Innago-style) */
.lf-lease-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin:16px 20px;padding:20px;box-shadow:var(--shadow);}
.lf-card-top{display:flex;gap:20px;align-items:flex-start;margin-bottom:12px;}
.lf-card-status-area{display:flex;flex-direction:column;gap:6px;min-width:100px;}
.lf-status-badge{display:inline-block;padding:4px 14px;border-radius:4px;font-size:11px;font-weight:700;color:#fff;text-transform:capitalize;text-align:center;}
.lf-status-badge.active{background:var(--green);}
.lf-status-badge.future{background:var(--orange);}
.lf-status-badge.expired{background:var(--text3);}
.lf-status-badge.expiring{background:var(--red);}
.lf-signed-badge{font-size:10px;color:var(--text2);display:flex;align-items:center;gap:4px;}
.lf-card-dates{flex:1;}
.lf-card-date-range{font-size:16px;font-weight:700;color:var(--text);margin-bottom:4px;}
.lf-card-rent{font-size:12px;color:var(--text2);}
.lf-card-rent span{font-weight:700;color:var(--text);}
.lf-card-property{font-size:18px;font-weight:700;color:var(--text);margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border);}
.lf-card-tenants-row{display:flex;align-items:center;justify-content:space-between;}
.lf-tenant-avatars{display:flex;gap:-6px;}
.lf-tenant-avatar{width:32px;height:32px;border-radius:50%;background:var(--surface2);border:2px solid var(--surface);display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--text3);margin-left:-6px;}
.lf-tenant-avatar:first-child{margin-left:0;}
.lf-tenant-name-tag{font-size:11px;color:var(--text2);margin-left:8px;}
.lf-more-actions{position:relative;}

/* Section Cards */
.lf-section-card{margin:12px 20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden;}
.lf-section-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--surface);}
.lf-section-header h4{font-family:'DM Mono',monospace;font-size:11px;font-weight:700;color:var(--text);letter-spacing:.5px;margin:0;}
.lf-section-header.lf-collapsible{cursor:pointer;transition:background .12s;}
.lf-section-header.lf-collapsible:hover{background:var(--surface2);}
.lf-collapse-icon{font-size:14px;color:var(--text3);}
.lf-section-body{padding:16px;border-top:1px solid var(--border);}
.lf-section-body.collapsed{display:none;}
.lf-section-desc{font-size:12px;color:var(--text2);margin:0 0 12px;}
.lf-initiate-btn{padding:6px 18px;border:1px solid var(--accent);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);transition:all .15s;}
.lf-initiate-btn:hover{background:var(--accent);color:#fff;}
.lf-doc-empty{text-align:center;padding:24px;color:var(--text3);font-size:12px;}
.lf-doc-empty-icon{font-size:40px;opacity:.25;margin-bottom:8px;}
.lf-sign-doc-btn{display:inline-block;margin-top:10px;padding:8px 20px;border:1px solid var(--accent);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);transition:all .15s;}
.lf-sign-doc-btn:hover{background:var(--accent);color:#fff;}
.lf-doc-format-note{font-size:10px;color:var(--text3);margin-top:6px;font-style:italic;}
/* Completed doc items */
.lf-doc-item{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);font-size:12px;}
.lf-doc-item:last-child{border-bottom:none;}
.lf-doc-name{font-weight:500;color:var(--text);display:flex;align-items:center;gap:8px;}
.lf-doc-date{font-size:10px;color:var(--text3);}
.lf-doc-dl{padding:3px 8px;border:1px solid var(--border);border-radius:4px;background:var(--surface);cursor:pointer;font-size:10px;color:var(--text2);transition:all .15s;}
.lf-doc-dl:hover{border-color:var(--green);color:var(--green);}
/* Notes */
.lf-note-item{padding:10px 0;border-bottom:1px solid var(--border);font-size:12px;}
.lf-note-item:last-child{border-bottom:none;}
.lf-note-meta{font-size:10px;color:var(--text3);margin-bottom:3px;}
.lf-note-text{color:var(--text);}

/* ═══ Templates Table ═══ */
.lf-template-table-wrap{flex:1;overflow:auto;padding:0 16px 16px;}
.lf-template-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:8px;}
.lf-template-table thead th{padding:10px 14px;text-align:left;font-weight:600;color:var(--text2);font-size:10px;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border);cursor:pointer;}
.lf-template-table thead th:hover{color:var(--text);}
.lf-template-table tbody td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;}
.lf-template-table tbody tr:hover{background:var(--surface2);}
.lf-template-table tbody tr:last-child td{border-bottom:none;}
.lf-tpl-name{font-weight:600;}
.lf-tpl-tenants{display:flex;align-items:center;gap:6px;color:var(--text2);}
.lf-tpl-actions{display:flex;gap:6px;}
.lf-tpl-btn{padding:4px 12px;border:1px solid var(--accent);border-radius:4px;background:var(--surface);cursor:pointer;font-family:'DM Mono',monospace;font-size:10px;color:var(--accent);transition:all .12s;}
.lf-tpl-btn:hover{background:var(--accent);color:#fff;}
.lf-tpl-btn.danger{border-color:var(--red);color:var(--red);}
.lf-tpl-btn.danger:hover{background:var(--red);color:#fff;}

/* Clickable lease rows (keep for dashboard table) */
.mtm-table tbody tr{cursor:pointer;}

/* ═══ Messages Layout ═══ */
.mtm-msg-container{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);flex:1;min-height:420px;overflow:hidden;}
.mtm-msg-list{width:340px;border-right:1px solid var(--border);overflow-y:auto;flex-shrink:0;}
.mtm-msg-item{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
.mtm-msg-item:hover{background:var(--green-bg);}
.mtm-msg-item.active{background:var(--green-bg);border-left:3px solid var(--green);}
.mtm-msg-item.unread{background:var(--surface2);}
.mtm-msg-item.unread .mtm-msg-from{font-weight:700;}
.mtm-msg-from{font-size:12px;font-weight:600;color:var(--text);margin-bottom:2px;display:flex;justify-content:space-between;}
.mtm-msg-preview{font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mtm-msg-time{font-size:9px;color:var(--text3);flex-shrink:0;}
.mtm-msg-dot{width:7px;height:7px;background:var(--green);border-radius:50%;display:inline-block;margin-right:6px;}
.mtm-msg-detail{flex:1;overflow-y:auto;padding:20px;}
.mtm-msg-detail-empty{padding:60px;text-align:center;color:var(--text3);font-style:italic;font-size:13px;}
.mtm-msg-detail-header{margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border);}
.mtm-msg-detail-from{font-size:15px;font-weight:700;color:var(--text);}
.mtm-msg-detail-meta{font-size:10px;color:var(--text3);margin-top:3px;}
.mtm-msg-detail-body{font-size:13px;line-height:1.6;color:var(--text);}
.mtm-msg-reply-box{margin-top:16px;padding-top:12px;border-top:1px solid var(--border);}
.mtm-msg-reply-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-family:'DM Mono',monospace;font-size:12px;resize:vertical;min-height:60px;background:var(--surface);}
.mtm-msg-reply-input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-bg);}
.mtm-msg-reply-btn{margin-top:8px;padding:8px 20px;background:var(--green);color:white;border:none;border-radius:var(--radius);font-family:'DM Mono',monospace;font-size:11px;cursor:pointer;transition:opacity .15s;}
.mtm-msg-reply-btn:hover{opacity:.85;}

/* ═══ MESSAGE CENTER ═══ */
.msg-center-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 16px;background:var(--surface);cursor:pointer;transition:background .12s;}
.msg-center-row:first-child{border-radius:8px 8px 0 0;}
.msg-center-row:last-child{border-radius:0 0 8px 8px;}
.msg-center-row:only-child{border-radius:8px;}
.msg-center-row:hover{background:var(--surface2);}
.msg-center-row.unread{background:var(--surface2);}
.msg-center-row.unread .msg-center-from{font-weight:700;}
.msg-center-row.unread .msg-center-preview strong{font-weight:700;}
.msg-center-left{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
.msg-center-right{display:flex;align-items:center;}
.msg-center-from{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.msg-center-unit{font-size:11px;color:var(--text3);white-space:nowrap;}
.msg-center-time{font-size:11px;color:var(--text3);white-space:nowrap;}
.msg-center-preview{width:100%;font-size:12px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.msg-center-preview strong{font-weight:500;color:var(--text);}
.msg-src-badge{font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px;white-space:nowrap;letter-spacing:.02em;text-transform:uppercase;}

/* Priority badges for maintenance */
.mtm-badge.high{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.mtm-badge.medium{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.mtm-badge.low{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mtm-badge.open,.mtm-badge.submitted{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.mtm-badge.assigned{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.mtm-badge.in-progress{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.mtm-badge.scheduled{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.mtm-badge.resolved,.mtm-badge.completed{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mtm-badge.cancelled{background:var(--surface2);color:var(--text3);border:1px solid var(--border);}
.mtm-badge.screening{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.mtm-badge.approved{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mtm-badge.denied{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.mtm-badge.withdrawn{background:var(--surface2);color:var(--text3);border:1px solid var(--border);}

/* ═══ Drill-Down Panel ═══ */
.dd-overlay,.inv-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.45);z-index:900;opacity:0;pointer-events:none;transition:opacity .25s;}
.dd-overlay.open,.inv-overlay.open{opacity:1;pointer-events:auto;}
.dd-panel{position:fixed;top:0;right:-520px;width:500px;max-width:92vw;}
.inv-panel{position:fixed;top:0;right:-620px;width:600px;max-width:92vw;}
.dd-panel,.inv-panel{height:100%;background:var(--bg);z-index:910;box-shadow:-4px 0 24px rgba(0,0,0,.18);transition:right .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;}
.dd-panel.open,.inv-panel.open{right:0;}
.dd-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;}
.dd-header-left{display:flex;align-items:center;gap:10px;}
.dd-back{background:none;border:none;font-size:18px;cursor:pointer;color:var(--text2);padding:4px 8px;border-radius:var(--radius);transition:all .15s;}
.dd-back:hover{background:var(--surface2);color:var(--text);}
.dd-title{font-family:'Playfair Display',serif;font-size:15px;font-weight:600;color:var(--text);margin:0;}
.dd-body,.inv-body{flex:1;overflow-y:auto;padding:18px;}

/* Drill-down unit list */
.dd-unit-list{display:flex;flex-direction:column;gap:0;}
.dd-unit-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:8px;cursor:pointer;transition:all .15s;}
.dd-unit-item:hover{border-color:var(--green);background:var(--green-bg);transform:translateX(3px);}
.dd-unit-left{display:flex;flex-direction:column;gap:2px;}
.dd-unit-tenant{font-size:13px;font-weight:600;color:var(--text);}
.dd-unit-prop{font-size:11px;color:var(--text3);}
.dd-unit-right{text-align:right;}
.dd-unit-amount{font-size:14px;font-weight:700;}
.dd-unit-status{font-size:10px;margin-top:2px;}
.dd-summary{display:flex;gap:12px;padding:12px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;}
.dd-summary-item{text-align:center;flex:1;}
.dd-summary-val{font-size:18px;font-weight:700;font-family:'Playfair Display',serif;}
.dd-summary-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}
.dd-empty{padding:40px;text-align:center;color:var(--text3);font-style:italic;font-size:13px;}

/* ═══ Invoice Editor — Innago-inspired ═══ */

/* Header block */
.inv-header-block{display:flex;align-items:flex-start;justify-content:space-between;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;}
.inv-header-left{display:flex;flex-direction:column;gap:6px;}
.inv-header-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}
.inv-header-num{font-family:'Playfair Display',serif;font-size:22px;font-weight:700;color:var(--text);line-height:1.1;}
.inv-header-prop{font-size:12px;color:var(--text2);margin-top:2px;}
.inv-header-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
.inv-status-badge{display:inline-block;padding:5px 14px;border-radius:20px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;}
.inv-status-badge.late{background:#fde8e8;color:#c0392b;border:1px solid #f5c6c6;}
.inv-status-badge.paid{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.inv-status-badge.processing{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.inv-status-badge.pending{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.inv-status-badge.partial{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.inv-header-dates{font-size:11px;color:var(--text3);text-align:right;}
.inv-header-dates span{color:var(--text2);font-weight:600;}
.inv-header-reminders{font-size:10px;color:var(--text3);margin-top:2px;}

/* Action buttons row — Innago style */
.inv-actions-row{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;}
.inv-action-btn{padding:8px 16px;border:1.5px solid var(--border);border-radius:var(--radius);background:transparent;cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--text2);transition:all .15s;white-space:nowrap;}
.inv-action-btn:hover{border-color:var(--green);color:var(--green);background:var(--green-bg);}
.inv-action-btn.primary{border-color:var(--green);color:var(--green);}
.inv-action-btn.primary:hover{background:var(--green);color:white;}
.inv-action-btn.danger{border-color:var(--red-border);color:var(--red);}
.inv-action-btn.danger:hover{background:var(--red-bg);}
.inv-action-btn.edit{border-color:var(--blue-border);color:var(--blue);}
.inv-action-btn.edit:hover{background:var(--blue-bg);}

/* Info three-column row */
.inv-info-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;}
.inv-info-col{display:flex;flex-direction:column;gap:3px;}
.inv-info-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;}
.inv-info-val{font-size:13px;font-weight:600;color:var(--text);line-height:1.4;}

/* Line items table */
.inv-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px;background:var(--surface);}
.inv-table{width:100%;border-collapse:collapse;font-size:12px;}
.inv-table thead{background:var(--surface2);}
.inv-table th{padding:10px 14px;text-align:left;font-size:10px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border);}
.inv-table th:last-child{text-align:right;}
.inv-table td{padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text);}
.inv-table td:last-child{text-align:right;font-weight:700;font-size:13px;}
.inv-table tr:last-child td{border-bottom:none;}
.inv-table-edit{width:80px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;font-family:'DM Mono',monospace;font-size:12px;text-align:right;background:white;color:var(--text);}
.inv-table-edit:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 2px var(--green-bg);}

/* Totals row */
.inv-totals{display:flex;flex-direction:column;align-items:flex-end;gap:6px;padding:12px 20px;margin-bottom:16px;}
.inv-total-row{display:flex;gap:24px;align-items:center;font-size:12px;}
.inv-total-label{color:var(--text3);min-width:90px;text-align:right;}
.inv-total-val{font-weight:700;color:var(--text);min-width:80px;text-align:right;font-size:13px;}
.inv-total-row.balance{font-size:14px;padding-top:6px;border-top:1px solid var(--border);}
.inv-total-row.balance .inv-total-val{color:var(--red);font-size:15px;}
.inv-total-row.balance.paid .inv-total-val{color:var(--green);}

/* Payments received section */
.inv-payments-section{margin-bottom:16px;}
.inv-section-title{font-size:11px;font-weight:600;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;display:flex;align-items:center;gap:8px;}
.inv-section-count{font-size:10px;color:var(--text3);font-weight:400;}
.inv-payments-empty{padding:16px 20px;background:var(--green-bg);border-radius:var(--radius);text-align:center;font-size:12px;color:var(--text3);font-style:italic;}
.inv-payment-item{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:6px;}
.inv-payment-left{display:flex;flex-direction:column;gap:2px;}
.inv-payment-method{font-size:12px;font-weight:600;color:var(--text);}
.inv-payment-date{font-size:10px;color:var(--text3);}
.inv-payment-amt{font-size:14px;font-weight:700;color:var(--green);}

/* Bank/account info */
.inv-bank-row{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;font-size:11px;color:var(--text3);}
.inv-bank-name{font-weight:600;color:var(--text2);}

/* Edit form section */
.inv-edit-section{padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;}
.inv-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.inv-edit-field{display:flex;flex-direction:column;gap:4px;}
.inv-edit-field.full{grid-column:span 2;}
.inv-edit-field label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;}
.inv-edit-field input,.inv-edit-field select,.inv-edit-field textarea{font-family:'DM Mono',monospace;font-size:12px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);background:white;color:var(--text);transition:border-color .15s;}
.inv-edit-field input:focus,.inv-edit-field textarea:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 3px var(--green-bg);}
.inv-edit-field textarea{resize:vertical;min-height:50px;}

/* Add Note button */
.inv-add-note-btn{padding:7px 14px;border:1px dashed var(--border);border-radius:var(--radius);background:transparent;cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--text3);transition:all .15s;display:inline-flex;align-items:center;gap:6px;}
.inv-add-note-btn:hover{border-color:var(--green);color:var(--green);background:var(--green-bg);}

/* Clickable dashboard items */
.mtm-dash-cg-item{cursor:pointer;border-radius:var(--radius);padding:4px 6px;margin:-4px -6px;transition:background .15s;}
.mtm-dash-cg-item:hover{background:var(--surface2);}
.mtm-dash-lg-item{cursor:pointer;border-radius:var(--radius);padding:6px;margin:-6px;transition:background .15s;}
.mtm-dash-lg-item:hover{background:var(--surface2);}
.mtm-dash-card{cursor:pointer;transition:border-color .15s,box-shadow .15s;}
.mtm-dash-card:hover{border-color:var(--green);box-shadow:0 2px 8px rgba(37,102,69,.12);}
.mtm-dash-list-item{cursor:pointer;padding:8px 12px;border-radius:var(--radius);transition:background .12s;}
.mtm-dash-list-item:hover{background:var(--green-bg);}
.mtm-dash-donut-wrap{cursor:pointer;}

/* Drill-down lease list */
.dd-lease-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:8px;cursor:pointer;transition:all .15s;}
.dd-lease-item:hover{border-color:var(--green);background:var(--green-bg);transform:translateX(3px);}
.dd-lease-left{display:flex;flex-direction:column;gap:2px;}
.dd-lease-tenant{font-size:13px;font-weight:600;color:var(--text);}
.dd-lease-prop{font-size:11px;color:var(--text3);}
.dd-lease-right{text-align:right;}
.dd-lease-dates{font-size:11px;color:var(--text2);}
.dd-lease-type{font-size:10px;margin-top:2px;}

/* ═══ Breadcrumb Navigation ═══ */
.dd-breadcrumb{display:flex;align-items:center;gap:0;padding:0 18px 10px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto;min-height:32px;}
.dd-crumb{font-size:11px;color:var(--text3);cursor:pointer;padding:4px 8px;border-radius:6px;transition:all .15s;white-space:nowrap;display:flex;align-items:center;gap:6px;}
.dd-crumb:hover{color:var(--green);background:var(--green-bg);}
.dd-crumb.active{color:var(--text);font-weight:600;cursor:default;}
.dd-crumb.active:hover{background:transparent;color:var(--text);}
.dd-crumb-sep{font-size:10px;color:var(--border2);margin:0 2px;user-select:none;}
.dd-crumb-icon{font-size:12px;}

/* ═══ Enhanced Drill-Down Panel ═══ */
.dd-panel{width:560px;right:-580px;}
.dd-panel.open{right:0;}
.inv-panel{width:640px;right:-660px;}

/* Drill-down search/filter bar */
.dd-filter-bar{display:flex;align-items:center;gap:8px;padding:10px 18px;background:var(--surface2);border-bottom:1px solid var(--border);flex-shrink:0;}
.dd-search-input{flex:1;padding:7px 12px;border:1px solid var(--border);border-radius:var(--radius);font-family:'DM Mono',monospace;font-size:11px;background:white;color:var(--text);transition:border-color .15s;}
.dd-search-input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 2px var(--green-bg);}
.dd-search-input::placeholder{color:var(--text3);}
.dd-filter-chip{padding:5px 12px;border:1px solid var(--border);border-radius:20px;font-size:10px;font-family:'DM Mono',monospace;color:var(--text3);cursor:pointer;background:white;transition:all .15s;white-space:nowrap;}
.dd-filter-chip:hover,.dd-filter-chip.active{border-color:var(--green);color:var(--green);background:var(--green-bg);}
.dd-result-count{font-size:10px;color:var(--text3);padding:0 18px 6px;margin-top:6px;}

/* Improved unit items with hover preview */
.dd-unit-item{position:relative;border-radius:8px;margin-bottom:6px;padding:14px 16px;border:1.5px solid var(--border);}
.dd-unit-item:hover{border-color:var(--accent);background:var(--accent-bg);transform:translateX(4px);box-shadow:0 2px 8px rgba(0,0,0,.06);}
.dd-unit-item::after{content:'›';position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--text3);transition:color .15s;}
.dd-unit-item:hover::after{color:var(--accent);}

/* Grouped drill-down sections */
.dd-group-header{font-size:11px;font-weight:600;color:var(--accent2);text-transform:uppercase;letter-spacing:.5px;padding:14px 0 8px;border-bottom:2px solid var(--accent);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;}
.dd-group-count{font-size:10px;color:var(--text3);font-weight:400;text-transform:none;letter-spacing:0;background:var(--surface2);padding:2px 8px;border-radius:10px;}

/* ═══ Enhanced Invoice Editor — Full Inline Edit ═══ */
.inv-edit-mode .inv-field-display{display:none;}
.inv-edit-mode .inv-field-edit{display:flex !important;}
.inv-field-edit{display:none !important;}

/* Editable field wrapper */
.inv-editable{position:relative;cursor:pointer;padding:2px 6px;margin:-2px -6px;border-radius:4px;border:1px solid transparent;transition:all .15s;}
.inv-editable:hover{border-color:var(--blue-border);background:var(--blue-bg);}
.inv-editable::after{content:'✎';position:absolute;right:4px;top:2px;font-size:10px;color:var(--blue);opacity:0;transition:opacity .15s;}
.inv-editable:hover::after{opacity:1;}
.inv-editable.editing{border-color:var(--green);background:white;cursor:text;}
.inv-editable.editing::after{display:none;}
.inv-editable input,.inv-editable select,.inv-editable textarea{font-family:'DM Mono',monospace;font-size:inherit;padding:4px 8px;border:1px solid var(--green);border-radius:4px;background:white;width:100%;color:var(--text);}
.inv-editable input:focus,.inv-editable textarea:focus{outline:none;box-shadow:0 0 0 2px var(--green-bg);}

/* Line items inline editing */
.inv-table.editing td{padding:8px 10px;}
.inv-table.editing .inv-cell-edit{display:block;padding:5px 8px;border:1px solid var(--border);border-radius:4px;font-family:'DM Mono',monospace;font-size:12px;width:100%;background:white;transition:border-color .15s;}
.inv-table.editing .inv-cell-edit:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 2px var(--green-bg);}
.inv-add-line-btn{width:100%;padding:10px;border:2px dashed var(--border);border-radius:var(--radius);background:transparent;cursor:pointer;font-family:'DM Mono',monospace;font-size:11px;color:var(--text3);transition:all .15s;margin-top:8px;}
.inv-add-line-btn:hover{border-color:var(--green);color:var(--green);background:var(--green-bg);}
.inv-remove-line{background:none;border:none;color:var(--red);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:4px;transition:background .15s;}
.inv-remove-line:hover{background:var(--red-bg);}

/* Invoice edit mode toggle bar */
.inv-mode-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;background:var(--surface2);border-bottom:1px solid var(--border);flex-shrink:0;}
.inv-mode-toggle{display:flex;align-items:center;gap:8px;}
.inv-mode-btn{padding:6px 14px;border:1.5px solid var(--border);border-radius:20px;font-family:'DM Mono',monospace;font-size:10px;cursor:pointer;background:white;color:var(--text2);transition:all .15s;}
.inv-mode-btn.active{border-color:var(--green);color:var(--green);background:var(--green-bg);font-weight:600;}
.inv-mode-btn:hover{border-color:var(--green);color:var(--green);}
.inv-save-bar{display:flex;gap:6px;}
.inv-save-bar .inv-action-btn{font-size:10px;padding:6px 14px;}

/* Tenant info inline edit */
.inv-tenant-section{padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;}
.inv-tenant-row{display:flex;align-items:center;gap:12px;margin-bottom:6px;}
.inv-tenant-row:last-child{margin-bottom:0;}
.inv-tenant-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;min-width:60px;}
.inv-tenant-val{font-size:12px;font-weight:600;color:var(--text);}

/* ═══ Main Dashboard Clickable KPI Cards ═══ */
.kpi-card.kpi-hero{cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden;}
.kpi-card.kpi-hero:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);}
.kpi-card.kpi-hero::after{content:'Click to drill down';position:absolute;bottom:0;left:0;right:0;padding:4px;font-size:9px;text-align:center;color:white;background:rgba(0,0,0,.4);transform:translateY(100%);transition:transform .2s ease;letter-spacing:.5px;}
.kpi-card.kpi-hero:hover::after{transform:translateY(0);}

/* Main dashboard panel clickable items */
.dash-panel{transition:border-color .15s,box-shadow .15s;}
.dash-panel.clickable{cursor:pointer;}
.dash-panel.clickable:hover{border-color:var(--accent);box-shadow:0 2px 12px rgba(181,120,74,.15);}
.dash-panel.clickable h3::after{content:' ›';color:var(--text3);font-size:12px;}

/* Chart hover ring for main dashboard charts */
.chart-wrap{position:relative;cursor:pointer;border-radius:var(--radius);transition:background .15s;}
.chart-wrap:hover{background:var(--surface2);}

/* Urgency items clickable */
.urgency-item{cursor:pointer;padding:6px 8px;border-radius:var(--radius);transition:all .15s;}
.urgency-item:hover{background:var(--accent-bg);transform:translateX(3px);}

/* Revenue grid items clickable */
.dash-rev-item{cursor:pointer;padding:8px;border-radius:var(--radius);transition:background .15s;}
.dash-rev-item:hover{background:var(--surface2);}

/* Owner bar clickable */
.obar-row{cursor:pointer;padding:4px 6px;margin:-4px -6px;border-radius:var(--radius);transition:background .15s;}
.obar-row:hover{background:var(--accent-bg);}

/* ── Delivery Module ── */
.dl-courier-btn{padding:6px 14px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s;}
.dl-courier-btn:hover{border-color:var(--accent);color:var(--accent);}
.dl-courier-active{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important;}
.dl-status-pending{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;background:#fff3cd;color:#856404;}
.dl-status-collected{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;background:#d4edda;color:#155724;}
.kpi-card.kv-red{border-left:4px solid var(--red);}

/* ── Collapsible summary sections — collapsed by default, toggle on click ── */
.collapsible-summary{position:relative;margin-bottom:16px;overflow:visible;}
.collapsible-summary:hover .summary-content{display:none;}
.collapsible-summary .summary-content{display:none;border-radius:14px;padding:20px 16px;background:var(--surface);border:1px solid var(--border);margin-top:10px;}
.collapsible-summary.open .summary-content{display:block !important;}
.collapsible-summary.open:hover .summary-content{display:block !important;}
.collapsible-summary .dash-kpi-hero{margin-bottom:0;}
.collapsible-summary .summary-title{display:none;}
.stats-toggle-btn{background:var(--surface);border:1px solid var(--border);color:var(--text2);border-radius:6px;padding:8px 14px;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s;}
.stats-toggle-btn:hover{background:var(--surface2);border-color:var(--accent);color:var(--accent);}
.collapsible-summary.open .stats-toggle-btn{background:var(--accent-bg);border-color:var(--accent);color:var(--accent);}

/* MTM collection stats — now uses collapsible-summary click toggle */

/* Messaging modal */
.msg-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:2000;display:flex;align-items:center;justify-content:center;}
.msg-box{background:var(--surface);border-radius:12px;width:420px;max-width:95vw;box-shadow:var(--shadow-lg);padding:0;overflow:hidden;}
.msg-box-header{padding:14px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.msg-box-header h3{font-size:15px;font-weight:700;color:var(--text);margin:0;}
.msg-box-body{padding:20px;}
.msg-channel-btns{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px;}
.msg-ch-btn{padding:6px 14px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--surface2);color:var(--text2);transition:all .15s;font-family:inherit;}
.msg-ch-btn:hover{background:var(--accent-bg);color:var(--accent2);border-color:var(--accent);}
.msg-ch-btn.active{background:var(--accent);color:#fff;border-color:var(--accent);}
/* 2026-08-08 — the picker is multi-select now, so a lit button means "this
   message WILL go out here", not "this is the current tab". A tick makes
   that read as a checkbox rather than a radio, which is the whole point:
   several can be on at once. */
.msg-ch-btn.active::after{content:' ✓';font-weight:700;}
.msg-textarea{width:100%;min-height:100px;border:1px solid var(--border);border-radius:8px;padding:10px;font-size:13px;font-family:inherit;resize:vertical;background:var(--surface2);color:var(--text);}
.msg-send-btn{padding:8px 20px;border:none;border-radius:8px;background:var(--accent2);color:#fff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;margin-top:10px;}
.msg-send-btn:hover{background:var(--accent);}
/* 2026-09-15 — the preview strip's inline style used to end with display:flex,
   which overrode the leading display:none and showed an empty strip on first
   open (P11). Flex layout lives here now; handleMsgFileSelect sets display:flex
   inline only when there is a file to show. */
.msg-attach-preview{align-items:center;gap:6px;}

/* Message Center contact rows — fixed geometry so patches never reflow (2026-09-15) */
#mcLeftPanel{scroll-behavior:auto;overflow-anchor:auto;position:relative;}
#mcLeftChrome{position:sticky;top:0;z-index:1;background:var(--surface);}
.mc-row{display:flex;align-items:center;gap:8px;height:53px;box-sizing:border-box;padding:0 12px;cursor:pointer;border-bottom:1px solid var(--border);background:transparent;}
.mc-row:hover{background:var(--surface2);}
.mc-row.mc-sel,.mc-row.mc-sel:hover{background:var(--accent-bg);}
.mc-row .mc-check{width:16px;height:16px;flex-shrink:0;cursor:pointer;visibility:hidden;}
#mcContactRows.mc-selecting .mc-row .mc-check{visibility:visible;}
.mc-row .mc-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}
.mc-row .mc-main{flex:1;min-width:0;overflow:hidden;}
.mc-row .mc-line1{display:flex;justify-content:space-between;align-items:baseline;}
.mc-row .mc-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mc-row .mc-unit{font-size:10px;color:var(--text3);margin-left:4px;white-space:nowrap;}
.mc-row .mc-count{font-size:9px;color:var(--text3);margin-left:2px;}
.mc-row .mc-time{font-size:9px;color:var(--text3);flex:0 0 52px;width:52px;text-align:right;margin-left:4px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.mc-row .mc-prev{font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mc-row .mc-dot{width:8px;height:8px;border-radius:50%;background:#e74c3c;flex-shrink:0;visibility:hidden;}
.mc-row.mc-unread .mc-dot{visibility:visible;}
.mc-row .mc-del{flex-shrink:0;background:none;border:none;color:var(--text3);cursor:pointer;font-size:12px;padding:3px 5px;border-radius:4px;opacity:.4;width:26px;}
.mc-row .mc-del:hover{opacity:1;color:#e74c3c;}
.mc-chip{padding:4px 10px;border-radius:4px;border:1px solid var(--border);background:var(--surface);color:var(--text2);font-size:10px;cursor:pointer;font-family:inherit;}
.mc-chip.on{background:var(--accent2);color:#fff;border-color:transparent;}
.mc-chip.unread{color:#d32f2f;border-color:#f0c8c8;font-weight:600;}
.mc-chip.unread.on{background:#d32f2f;color:#fff;}
#mcThreadBubbles,#msgThread{scroll-behavior:auto;overflow-anchor:auto;position:relative;}
.mc-img{width:200px;max-width:100%;height:160px;margin-top:6px;border-radius:6px;overflow:hidden;background:var(--surface2);}
.mc-img img{width:100%;height:100%;object-fit:contain;display:block;}
.mc-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:12px;}

/* ═══════════════════════════════════════════════════════════ */
/* ═══ DASHBOARD UNIFIED MESSAGES                           ═══ */
/* ═══════════════════════════════════════════════════════════ */
.dash-panel-messages{margin-bottom:20px;}
.dash-msg-filters{display:flex;gap:4px;}
.dash-msg-filter{
  padding:4px 12px;border-radius:16px;font-size:10px;font-weight:600;
  border:1px solid var(--border);background:var(--surface2);color:var(--text2);
  cursor:pointer;font-family:inherit;transition:all .12s;
}
.dash-msg-filter:hover{border-color:var(--accent);color:var(--accent2);}
.dash-msg-filter.active{background:var(--accent2);color:#fff;border-color:var(--accent2);}
.dash-msg-list{max-height:420px;overflow-y:auto;}
.dmsg-grid{display:flex;flex-direction:column;gap:4px;}
.dmsg-row{
  display:flex;align-items:center;gap:12px;padding:10px 14px;
  background:var(--surface2);border:1px solid transparent;border-radius:8px;
  cursor:pointer;transition:all .12s;
}
.dmsg-row:hover{background:var(--accent-bg);border-color:var(--accent);}
.dmsg-avatar{
  width:34px;height:34px;border-radius:50%;flex-shrink:0;
  background:var(--accent-bg);color:var(--accent2);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:700;
}
.dmsg-body{flex:1;min-width:0;}
.dmsg-top{display:flex;justify-content:space-between;align-items:baseline;}
.dmsg-name{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dmsg-time{font-size:10px;color:var(--text3);flex-shrink:0;margin-left:8px;}
.dmsg-meta{font-size:10px;color:var(--text3);margin-top:1px;}
.dmsg-preview{font-size:11px;color:var(--text2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dmsg-src-wrap{flex-shrink:0;}
.dmsg-src{font-size:8px;font-weight:700;padding:2px 6px;border-radius:4px;letter-spacing:.3px;white-space:nowrap;}
.dmsg-src-st{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.dmsg-src-lt{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.dmsg-src-mtm{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.dmsg-src-ft{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.dmsg-src-pk{background:var(--surface2);color:var(--text2);border:1px solid var(--border);}
.dmsg-src-dl{background:var(--accent-bg);color:var(--accent2);border:1px solid var(--accent);}
.dmsg-src-tp{background:#e8f5e9;color:#2e7d32;border:1px solid #a8d8be;}
.dmsg-src-ot{background:var(--surface2);color:var(--text2);border:1px solid var(--border);}

/* ═══════════════════════════════════════════════════════════ */
/* ═══ MOBILE APP UI — Dedicated mobile layer styles        ═══ */
/* ═══════════════════════════════════════════════════════════ */

/* When mobile is active, hide desktop completely */
body.mob-active .header,
body.mob-active .module-bar,
body.mob-active .main-wrap,
body.mob-active .sub-tab-bar{display:none !important;}
body.mob-active{overflow:hidden;}
body.mob-active #mobApp{display:flex !important;}

/* Top bar */
.mob-top-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);
  flex-shrink:0;min-height:48px;
  padding-top:calc(10px + env(safe-area-inset-top, 0px));
}
.mob-logo{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--accent2);}
#mob-top-title{font-size:12px;color:var(--text2);font-weight:500;letter-spacing:.5px;text-transform:uppercase;}
.mob-live-dot{color:var(--green);font-size:10px;}

/* Bottom navigation */
.mob-nav{
  display:flex;align-items:center;justify-content:space-around;
  background:var(--surface);border-top:1px solid var(--border);
  flex-shrink:0;min-height:56px;
  padding-bottom:env(safe-area-inset-bottom, 0px);
}
.mob-nav-btn{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  background:none;border:none;cursor:pointer;padding:6px 12px;
  color:var(--text3);font-family:inherit;transition:color .15s;
  -webkit-tap-highlight-color:transparent;
}
.mob-nav-btn.active{color:var(--accent2);}
.mob-nav-icon{font-size:20px;line-height:1;}
.mob-nav-lbl{font-size:9px;font-weight:600;letter-spacing:.3px;}

/* Page containers */
.mob-page{display:none;padding:12px 14px;min-height:100%;}

/* Back button */
.mob-back{background:none;border:none;color:var(--accent2);font-size:13px;font-weight:600;cursor:pointer;padding:6px 0;font-family:inherit;}
.mob-page-hdr{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:15px;font-weight:700;color:var(--text);}

/* ── Stats row ── */
.mob-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:16px;}
.mob-stat{
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:14px 8px;text-align:center;cursor:pointer;
  box-shadow:var(--shadow);transition:transform .1s;
}
.mob-stat:active{transform:scale(.96);}
.mob-stat-num{font-family:'Playfair Display',serif;font-size:24px;font-weight:700;line-height:1.1;}
.mob-stat-lbl{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-top:4px;}
.mob-stat-blue .mob-stat-num{color:var(--blue);}
.mob-stat-orange .mob-stat-num{color:var(--orange);}
.mob-stat-purple .mob-stat-num{color:var(--purple);}
.mob-stat-red .mob-stat-num{color:var(--red);}

/* ── Section headers ── */
.mob-section{margin-bottom:16px;}
.mob-sec-hdr{font-size:12px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;padding:0 2px;}
.mob-sec-count{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:1px 7px;font-size:10px;color:var(--text3);margin-left:6px;vertical-align:middle;}

/* ── Generic row ── */
.mob-row{
  display:flex;align-items:center;gap:10px;
  padding:12px 14px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;margin-bottom:6px;cursor:pointer;
  box-shadow:var(--shadow);transition:transform .08s;
}
.mob-row:active{transform:scale(.98);}
.mob-row-urgent{border-left:3px solid var(--red);}
.mob-row-apt{
  min-width:48px;font-size:11px;font-weight:700;color:var(--accent2);
  background:var(--accent-bg);padding:4px 8px;border-radius:6px;text-align:center;
  flex-shrink:0;
}
.mob-row-main{flex:1;min-width:0;}
.mob-row-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mob-row-sub{font-size:11px;color:var(--text3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mob-row-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;}
.mob-row-price{font-size:12px;font-weight:700;color:var(--green);}

/* ── Source badges ── */
.mob-src{font-size:9px;font-weight:700;padding:2px 7px;border-radius:6px;letter-spacing:.3px;white-space:nowrap;}
.mob-src-st{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.mob-src-lt{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.mob-src-mtm{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.mob-src-ft{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.mob-src-pk{background:var(--surface2);color:var(--text2);border:1px solid var(--border);}
.mob-src-dl{background:var(--accent-bg);color:var(--accent2);border:1px solid var(--accent);}
.mob-src-vac{background:var(--surface2);color:var(--text3);border:1px solid var(--border);}
.mob-src-ot{background:var(--surface2);color:var(--text2);border:1px solid var(--border);}

/* ── Tags ── */
.mob-tag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;white-space:nowrap;}
.mob-tag-cin{background:var(--blue-bg);color:var(--blue);}
.mob-tag-cout{background:var(--orange-bg);color:var(--orange);}
.mob-tag-bal{background:var(--red-bg);color:var(--red);}
.mob-tag-upcoming{background:var(--green-bg);color:var(--green);}

/* Context badges */
.mob-ctx{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;display:inline-block;margin-top:6px;}
.mob-ctx-cin{background:var(--blue-bg);color:var(--blue);}
.mob-ctx-cout{background:var(--orange-bg);color:var(--orange);}
.mob-ctx-instay{background:var(--green-bg);color:var(--green);}
.mob-ctx-upcoming{background:var(--purple-bg);color:var(--purple);}

/* Pipeline stages */
.mob-stage{font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;text-transform:capitalize;}
.mob-stage-inquiry{background:var(--purple-bg);color:var(--purple);}
.mob-stage-pending{background:var(--orange-bg);color:var(--orange);}
.mob-stage-confirmed{background:var(--green-bg);color:var(--green);}
.mob-stage-pre-arrival{background:var(--blue-bg);color:var(--blue);}
.mob-stage-checked-in{background:var(--green-bg);color:var(--green);}
.mob-stage-checked-out{background:var(--surface2);color:var(--text3);}

/* ── Filter bar ── */
.mob-filter-bar{display:flex;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:0 0 12px;flex-wrap:nowrap;}
.mob-filter-btn{
  padding:6px 14px;border-radius:20px;font-size:11px;font-weight:600;
  border:1px solid var(--border);background:var(--surface);color:var(--text2);
  cursor:pointer;white-space:nowrap;flex-shrink:0;font-family:inherit;
  transition:all .12s;
}
.mob-filter-btn.active{background:var(--accent2);color:#fff;border-color:var(--accent2);}

/* ── Messages ── */
.mob-msg-row{
  display:flex;align-items:flex-start;gap:10px;
  padding:12px 14px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;margin-bottom:6px;cursor:pointer;box-shadow:var(--shadow);
}
.mob-msg-row:active{background:var(--surface2);}
.mob-msg-avatar{
  width:38px;height:38px;border-radius:50%;
  background:var(--accent-bg);color:var(--accent2);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:700;flex-shrink:0;
}
.mob-msg-body{flex:1;min-width:0;}
.mob-msg-top{display:flex;justify-content:space-between;align-items:baseline;}
.mob-msg-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mob-msg-time{font-size:10px;color:var(--text3);flex-shrink:0;margin-left:8px;}
.mob-msg-unit{font-size:11px;color:var(--text3);margin-top:1px;}
.mob-msg-preview{font-size:12px;color:var(--text2);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mob-msg-src{flex-shrink:0;align-self:center;}

/* ── Thread view ── */
.mob-thread-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.mob-thread-title{font-size:16px;font-weight:700;color:var(--text);}
.mob-client-card{
  background:var(--surface);border:1px solid var(--border);border-radius:12px;
  padding:14px;margin-bottom:12px;box-shadow:var(--shadow);
}
.mob-cc-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--surface2);font-size:12px;}
.mob-cc-row:last-of-type{border-bottom:none;}
.mob-cc-label{color:var(--text3);font-size:11px;}
.mob-cc-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;}
.mob-action-btn{
  padding:7px 12px;border-radius:8px;font-size:11px;font-weight:600;
  border:1px solid var(--border);background:var(--surface2);color:var(--text2);
  cursor:pointer;text-decoration:none;font-family:inherit;display:inline-flex;align-items:center;gap:4px;
  transition:all .12s;
}
.mob-action-btn:active{background:var(--accent-bg);border-color:var(--accent);}

/* Thread bubbles */
.mob-thread-msgs{max-height:40vh;overflow-y:auto;padding:8px 0;}
.mob-thread-bubble{max-width:85%;padding:10px 14px;border-radius:14px;margin-bottom:8px;font-size:13px;}
.mob-bubble-them{background:var(--surface);border:1px solid var(--border);margin-right:auto;border-bottom-left-radius:4px;}
.mob-bubble-me{background:var(--accent2);color:#fff;margin-left:auto;border-bottom-right-radius:4px;}
.mob-bubble-time{font-size:9px;color:var(--text3);margin-top:4px;}
.mob-bubble-me .mob-bubble-time{color:rgba(255,255,255,.7);}

/* Reply box */
.mob-reply-box{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px;margin-top:8px;}
.mob-reply-input{
  width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;
  font-size:13px;font-family:inherit;resize:none;background:var(--surface2);color:var(--text);
  box-sizing:border-box;
}
.mob-reply-actions{display:flex;justify-content:space-between;align-items:center;margin-top:8px;}
.mob-reply-channel{
  padding:6px 10px;border-radius:6px;border:1px solid var(--border);
  font-size:11px;font-family:inherit;background:var(--surface);color:var(--text2);
}
.mob-reply-send{
  padding:8px 20px;border:none;border-radius:8px;
  background:var(--accent2);color:#fff;font-size:12px;font-weight:600;
  cursor:pointer;font-family:inherit;
}

/* ── Calendar agenda ── */
.mob-agenda-hdr{font-size:14px;font-weight:700;color:var(--text);margin-bottom:12px;}
.mob-agenda-day{margin-bottom:12px;}
.mob-agenda-today{border-left:3px solid var(--accent);padding-left:10px;}
.mob-agenda-date{font-size:12px;font-weight:700;color:var(--text2);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px;}
.mob-agenda-empty{font-size:12px;color:var(--text3);padding:6px 0;}
.mob-agenda-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;margin-bottom:4px;cursor:pointer;box-shadow:var(--shadow);
}
.mob-agenda-item:active{background:var(--surface2);}
.mob-agenda-ev{
  font-size:9px;font-weight:700;padding:3px 8px;border-radius:6px;
  text-transform:uppercase;letter-spacing:.3px;flex-shrink:0;min-width:60px;text-align:center;
}
.mob-ev-cin{background:var(--blue-bg);color:var(--blue);}
.mob-ev-cout{background:var(--orange-bg);color:var(--orange);}
.mob-agenda-detail{flex:1;min-width:0;}

/* ── Menu ── */
.mob-menu-list{padding:8px 0;}
.mob-menu-item{
  display:flex;align-items:center;gap:14px;
  padding:16px 14px;background:var(--surface);border:1px solid var(--border);
  border-radius:10px;margin-bottom:6px;cursor:pointer;
  font-size:14px;font-weight:500;color:var(--text);
  box-shadow:var(--shadow);
}
.mob-menu-item:active{background:var(--surface2);}
.mob-mi-icon{font-size:20px;}
.mob-menu-divider{height:1px;background:var(--border);margin:12px 0;}
.mob-menu-ver{text-align:center;font-size:10px;color:var(--text3);margin-top:20px;}

/* ── Bottom sheet ── */
#mob-sheet{
  position:fixed;inset:0;z-index:1000;
  background:rgba(0,0,0,.4);
  display:flex;flex-direction:column;justify-content:flex-end;
}
.mob-sheet-handle{
  width:36px;height:4px;background:var(--border2);border-radius:2px;
  margin:8px auto;cursor:pointer;flex-shrink:0;
}
.mob-sheet-content{
  background:var(--surface);border-radius:16px 16px 0 0;
  padding:0 16px 20px;max-height:80vh;overflow-y:auto;
  padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px));
}
.mob-sheet-name{font-family:'Playfair Display',serif;font-size:20px;font-weight:700;color:var(--accent2);margin-top:8px;}
.mob-sheet-unit{font-size:13px;color:var(--text2);margin-bottom:8px;}
.mob-sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;padding:12px;background:var(--surface2);border-radius:10px;}
.mob-sg-item{display:flex;flex-direction:column;gap:2px;}
.mob-sg-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}
.mob-bal-red{color:var(--red);font-weight:700;}
.mob-sheet-actions{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0;}
.mob-sheet-notes{margin-top:12px;padding:12px;background:var(--surface2);border-radius:10px;font-size:12px;color:var(--text2);}
.mob-sheet-history{margin-top:10px;font-size:12px;}
.mob-hist-item{padding:4px 0;border-bottom:1px solid var(--surface2);}
.mob-hist-date{color:var(--text3);font-size:10px;margin-right:6px;}

/* ── Unit badges ── */
.mob-unit-badge{font-size:10px;font-weight:600;padding:3px 10px;border-radius:20px;}
.mob-unit-occ{background:var(--green-bg);color:var(--green);}
.mob-unit-vacant{background:var(--surface2);color:var(--text3);}

/* ── Search ── */
.mob-search{
  width:100%;padding:10px 14px;border:1px solid var(--border);border-radius:10px;
  font-size:13px;font-family:inherit;background:var(--surface);color:var(--text);
  margin-bottom:12px;box-sizing:border-box;
}
.mob-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(181,120,74,.12);}

/* ── Empty state ── */
.mob-empty{text-align:center;padding:40px 20px;color:var(--text3);font-size:13px;}

/* ═══════════════════════════════════════════════════════ */
/* ═══ PWA / MOBILE RESPONSIVE — phones & small tablets ═══ */
/* ═══════════════════════════════════════════════════════ */

/* --- PWA standalone mode tweaks --- */
@media(display-mode:standalone){
  body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);}
  .header{padding-top:env(safe-area-inset-top);}
}

/* --- Mobile: 480px and below (phones) --- */
@media(max-width:480px){
  :root{--header-h:52px;}

  /* Header — compact */
  .header{padding:0 12px;gap:6px;flex-wrap:wrap;height:auto;min-height:var(--header-h);padding-top:6px;padding-bottom:6px;}
  .brand h1{font-size:18px;}
  .brand-sub{display:none;}
  .header-right{gap:4px;flex-wrap:wrap;justify-content:flex-end;}
  .header-right .btn{font-size:10px;padding:4px 8px;min-width:auto !important;}
  #headerClock{font-size:11px;min-width:auto !important;}
  #headerBackupTimestamp{display:none;}
  .property-selector{max-width:120px;}
  .prop-name{font-size:11px;}

  /* Module bar — horizontal scroll, compact */
  .module-bar{padding:0 8px;gap:0;-webkit-overflow-scrolling:touch;}
  .module-tab{padding:10px 12px;font-size:10px;letter-spacing:0;gap:4px;}
  .module-tab .mod-icon{font-size:13px;}
  .module-tab .mod-badge{font-size:8px;min-width:14px;height:14px;line-height:14px;padding:0 4px;}

  /* Sub-tabs — scrollable */
  .sub-tab-bar,.nav-tabs{padding:0 8px;gap:0;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;}
  .sub-tab,.nav-tab{padding:8px 10px;font-size:10px;white-space:nowrap;}

  /* Main content areas */
  .dash-wrap,.report-wrap,.arch-section{padding:12px !important;}
  .table-wrap{padding:8px 12px;}

  /* Dashboard cards/KPIs */
  .dash-kpi-hero{grid-template-columns:1fr 1fr !important;gap:8px;}
  .kpi-hero{padding:12px;border-radius:10px;}
  .kpi-hero .kpi-value{font-size:22px;}
  .kpi-hero .kpi-label{font-size:9px;}
  .dash-two-col{grid-template-columns:1fr !important;gap:12px;}
  .dash-section{padding:14px;border-radius:10px;}
  .dash-section h3{font-size:12px;}

  /* Tables — horizontal scroll */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  table{min-width:600px;}
  th,td{padding:8px 6px;font-size:11px;}

  /* Calendar */
  .calendar{font-size:10px;}
  .cal-cell{min-height:44px;padding:2px;}
  .cal-hdr{flex-wrap:wrap;gap:6px;padding:8px 12px;}
  .cal-hdr h2{font-size:14px;}
  .cal-unit-panel{width:100% !important;position:fixed;bottom:0;left:0;right:0;top:auto;height:55vh;border-radius:16px 16px 0 0;z-index:500;box-shadow:0 -4px 20px rgba(0,0,0,.15);}

  /* Detail panels — full width overlays */
  .detail-panel,.booking-detail,.slideout{
    width:100vw !important;max-width:100vw !important;right:0 !important;
    border-radius:0 !important;
  }

  /* Pipeline board — vertical stack on mobile */
  .pipeline-cols{flex-direction:column !important;gap:10px;}
  .pipeline-col{min-width:100% !important;max-width:100% !important;}

  /* Modals — full-width on mobile */
  .modal-content,.msg-box,.chpw-box,#chpwBox{
    width:100vw !important;max-width:100vw !important;
    border-radius:12px 12px 0 0 !important;
    position:fixed !important;bottom:0 !important;top:auto !important;
    max-height:85vh;overflow-y:auto;
  }

  /* Buttons */
  .btn{padding:6px 12px;font-size:11px;}
  .btn-sm{padding:4px 8px;font-size:10px;}

  /* Property rows */
  .prop-row{flex-wrap:wrap;padding:12px;gap:10px;}
  .prop-thumb{width:48px;height:48px;}
  .prop-info .prop-name{font-size:14px;}
  .prop-actions{width:100%;justify-content:space-between;}

  /* FieldTrack / TechTrack cards */
  .ft-job-card,.ft-wo-card{padding:12px;}

  /* Toolbar / action bars */
  .toolbar{flex-wrap:wrap;gap:6px;padding:8px 12px !important;}
  .toolbar input,.toolbar select{font-size:12px;max-width:100%;}

  /* Forms */
  .form-grid{grid-template-columns:1fr !important;}
  .form-row{flex-direction:column;}

  /* Tenant detail */
  .tnt-detail{padding:16px 12px;}

  /* Hide elements not essential on mobile */
  #headerBackupBtn{display:none;}
  .backup-history-btn{display:none;}

  /* Toast */
  .toast-wrap{bottom:12px;right:12px;left:12px;max-width:100%;}

  /* Loading overlay */
  .loading-overlay h2{font-size:20px;}
}

/* --- Small tablets: 481–768px --- */
@media(min-width:481px) and (max-width:768px){
  .header{padding:0 16px;}
  .brand h1{font-size:20px;}
  .module-tab{padding:10px 14px;font-size:10px;}
  .dash-kpi-hero{grid-template-columns:repeat(3,1fr);}
  .pipeline-cols{flex-wrap:wrap;}
  .pipeline-col{min-width:45% !important;flex:1 1 45%;}
  .detail-panel,.booking-detail,.slideout{width:85vw !important;max-width:85vw !important;}
  .cal-unit-panel{width:100% !important;}
}

/* --- Touch-friendly: increase tap targets on all touch devices --- */
@media(pointer:coarse){
  .module-tab{min-height:44px;}
  .sub-tab,.nav-tab{min-height:40px;}
  .btn,.btn-sm{min-height:36px;}
  .prop-row{min-height:60px;}
  .table-wrap td,.table-wrap th{padding:10px 8px;}
  input,select,textarea{min-height:36px;font-size:16px !important;/* prevents iOS zoom on focus */}
}

/* ══════════════════════════════════════════════════════
   PROPERTY DETAIL PAGE (LT / ST)
   ══════════════════════════════════════════════════════ */
.pd-wrap{padding:20px 28px;max-width:1400px;margin:0 auto;position:relative;}

/* ── Channel Quick Links slide-out (right edge of property detail) ──
   Collapsed default: thin vertical strip of channel logos.
   Expanded: full panel labelled "Quick Links" with name + manage + open link per row.
   2026-05-17. */
.pd-channels{position:fixed;top:120px;right:0;z-index:30;display:flex;align-items:flex-start;pointer-events:none;}
.pd-channels > *{pointer-events:auto;}
.pd-channels-toggle{position:absolute;top:14px;left:-26px;width:26px;height:36px;background:#fff;border:1px solid var(--border,#e5e7eb);border-right:none;border-radius:8px 0 0 8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--accent2,#1a2874);box-shadow:-2px 1px 6px rgba(0,0,0,.05);}
.pd-channels-toggle:hover{background:#f5f6fa;}
.pd-channels-arrow{font-size:20px;line-height:1;font-weight:300;}
.pd-channels-strip{background:#fff;border:1px solid var(--border,#e5e7eb);border-right:none;border-radius:10px 0 0 10px;padding:10px 8px;display:flex;flex-direction:column;gap:10px;box-shadow:-3px 2px 8px rgba(0,0,0,.05);}
.pd-ch-icon{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:6px;background:#fafafa;transition:transform .15s,background .15s;cursor:default;}
.pd-channels[aria-expanded="true"] .pd-ch-icon{background:transparent;}
.pd-channels-panel{display:none;background:#fff;border:1px solid var(--border,#e5e7eb);border-right:none;border-radius:10px 0 0 10px;padding:14px 16px;min-width:260px;box-shadow:-3px 2px 10px rgba(0,0,0,.06);}
.pd-channels[aria-expanded="true"] .pd-channels-strip{display:none;}
.pd-channels[aria-expanded="true"] .pd-channels-panel{display:block;}
.pd-channels-head{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--text,#1a2126);margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--border,#e5e7eb);}
.pd-channels-collapse{background:none;border:none;font-size:18px;line-height:1;color:var(--text3,#9ba2be);cursor:pointer;font-weight:300;}
.pd-channels-collapse:hover{color:var(--accent2,#1a2874);}
.pd-channels-list{display:flex;flex-direction:column;gap:8px;}
.pd-ch-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:6px;}
.pd-ch-row:hover{background:#f5f6fa;}
.pd-ch-row .pd-ch-icon{flex-shrink:0;width:28px;height:28px;}
.pd-ch-row-name{flex:1;font-size:13px;color:var(--text,#1a2126);font-weight:500;}
.pd-ch-row-name.disabled{color:var(--text3,#9ba2be);font-style:italic;}
.pd-ch-row-actions{display:flex;gap:4px;}
.pd-ch-row-actions a, .pd-ch-row-actions button{background:none;border:none;cursor:pointer;color:var(--accent2,#1a2874);padding:4px 6px;border-radius:4px;font-size:14px;text-decoration:none;}
.pd-ch-row-actions a:hover, .pd-ch-row-actions button:hover{background:rgba(26,40,116,.08);}
.pd-ch-row-actions a.disabled, .pd-ch-row-actions button.disabled{color:#c8cbd0;cursor:not-allowed;pointer-events:none;}
.pd-header{display:flex;align-items:center;gap:16px;margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--border);}
.pd-back-btn{background:none;border:1px solid var(--border);border-radius:6px;padding:6px 14px;font-family:inherit;font-size:12px;color:var(--accent2);cursor:pointer;font-weight:500;}
.pd-back-btn:hover{background:var(--accent-bg);border-color:var(--accent);}
.pd-header-info{flex:1;}
.pd-title{font-size:18px;font-weight:700;color:var(--text);letter-spacing:-.3px;}
.pd-subtitle{font-size:12px;color:var(--text3);margin-top:2px;}
.pd-header-actions{display:flex;align-items:center;gap:12px;}
.pd-view-toggle{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;}
.pd-toggle-btn{padding:7px 18px;font-family:inherit;font-size:11px;font-weight:600;border:none;background:var(--surface);color:var(--text3);cursor:pointer;transition:all .15s;}
.pd-toggle-btn.active{background:var(--accent);color:#fff;}
.pd-toggle-btn:hover:not(.active){background:var(--surface2);}
.pd-app-btn{background:var(--accent2);color:#fff;border:none;border-radius:var(--radius);padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap;}
.pd-app-btn:hover{opacity:.9;}
.pd-settings-link{font-size:18px;text-decoration:none;color:var(--text3);padding:4px;}
.pd-settings-link:hover{color:var(--accent2);}

/* ═══ Application Modal ═══ */
.app-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:9999;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(3px);}
.app-modal{background:#fff;border-radius:16px;width:560px;max-width:94vw;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.25);animation:appModalIn .2s ease-out;}
@keyframes appModalIn{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

/* Header */
.app-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:22px 26px 16px;}
.app-modal-header-left{display:flex;align-items:center;gap:12px;}
.app-modal-icon{width:40px;height:40px;background:linear-gradient(135deg,var(--accent2),#a0714a);border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;}
.app-modal-title{font-size:16px;font-weight:700;color:#222;margin:0;line-height:1.2;}
.app-modal-property{font-size:12px;color:#888;margin-top:2px;}
.app-modal-close{background:none;border:none;font-size:18px;cursor:pointer;color:#aaa;padding:4px 8px;border-radius:6px;transition:all .15s;}
.app-modal-close:hover{color:#333;background:#f0f0f0;}

/* Tabs */
.app-modal-tabs{display:flex;gap:0;padding:0 26px;border-bottom:1px solid #eee;border-top:1px solid #eee;background:#fafafa;}
.app-modal-tab{background:none;border:none;border-bottom:2px solid transparent;padding:11px 18px;font-size:13px;font-weight:500;color:#888;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .15s;}
.app-modal-tab:hover{color:#555;}
.app-modal-tab.active{color:var(--accent2);border-bottom-color:var(--accent2);font-weight:600;}

/* Body */
.app-modal-body{padding:20px 26px 8px;}
.app-modal-section-title{font-size:10px;font-weight:700;color:#999;text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;}

/* Screening options */
.app-screen-option{display:flex;align-items:center;gap:12px;padding:13px 16px;border:2px solid #e8e8e8;border-radius:12px;margin-bottom:8px;cursor:pointer;transition:all .2s;background:#fff;}
.app-screen-option:hover{border-color:#ccc;background:#fafafa;}
.app-screen-option.selected{border-color:var(--accent2);background:linear-gradient(135deg,#faf6f1,#f5ede4);box-shadow:0 2px 8px rgba(139,90,43,.12);}
.app-radio-outer{width:18px;height:18px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;}
.app-radio-inner{width:0;height:0;border-radius:50%;background:var(--accent2);transition:all .15s;}
.app-screen-option.selected .app-radio-outer{border-color:var(--accent2);}
.app-screen-option.selected .app-radio-inner{width:10px;height:10px;}
.app-screen-content{flex:1;min-width:0;}
.app-screen-name{font-size:13px;font-weight:600;color:#333;}
.app-screen-desc{font-size:11px;color:#999;margin-top:2px;line-height:1.3;}
.app-screen-option.selected .app-screen-name{color:var(--accent2);}
.app-screen-cost{font-size:11px;font-weight:700;color:#4caf50;background:#e8f5e9;padding:3px 10px;border-radius:20px;white-space:nowrap;flex-shrink:0;}
.app-screen-cost-soon{color:#ff9800;background:#fff3e0;}

/* Email row */
.app-email-row{display:flex;gap:8px;margin-bottom:14px;}
.app-email-field,.app-url-field{flex:1;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #ddd;border-radius:10px;background:#fff;transition:border-color .15s;}
.app-email-field:focus-within,.app-url-field:focus-within{border-color:var(--accent2);box-shadow:0 0 0 3px rgba(139,90,43,.08);}
.app-email-input,.app-url-input{flex:1;padding:11px 0;border:none;font-size:14px;outline:none;background:transparent;color:#333;}
.app-send-btn{background:var(--accent2);color:#fff;border:none;border-radius:10px;padding:11px 20px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;transition:all .15s;}
.app-send-btn:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 3px 10px rgba(139,90,43,.2);}
.app-send-btn:active{transform:translateY(0);}

/* Email preview */
.app-email-preview{margin-top:2px;}
.app-preview-label{font-size:10px;font-weight:600;color:#bbb;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;}
.app-preview-box{background:#f8f8f8;border:1px solid #eee;border-radius:10px;padding:12px 16px;font-size:12px;color:#666;line-height:1.5;}
.app-preview-from,.app-preview-subject{margin-bottom:4px;}
.app-preview-from strong,.app-preview-subject strong{color:#444;}
.app-preview-body{margin-top:8px;padding-top:8px;border-top:1px solid #eee;color:#999;font-size:11px;line-height:1.4;}

/* URL row */
.app-url-row{display:flex;gap:8px;margin-bottom:8px;}
.app-url-hint{font-size:11px;color:#aaa;padding-left:4px;}

/* Sent confirmation */
.app-sent-confirm{text-align:center;padding:24px 0 12px;animation:appFadeIn .3s ease;}
@keyframes appFadeIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.app-sent-text{font-size:15px;font-weight:600;color:#333;margin-top:10px;}
.app-sent-to{font-size:12px;color:#888;margin-top:4px;}

/* Footer */
.app-modal-footer{padding:12px 26px;border-top:1px solid #eee;background:#fafafa;border-radius:0 0 16px 16px;}
.app-footer-info{display:flex;align-items:center;justify-content:center;gap:8px;font-size:11px;color:#aaa;}
.app-footer-sep{color:#ddd;}

/* Stats Row */
.pd-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;}
.pd-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow);}
.pd-stat-label{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;}
.pd-stat-val{font-size:22px;font-weight:700;color:var(--text);}

/* Two-column row */
.pd-row-2col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
.pd-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 22px;box-shadow:var(--shadow);}
.pd-card-title{font-size:13px;font-weight:700;color:var(--text);margin-bottom:14px;letter-spacing:-.2px;}

/* Collection Donut */
.pd-collection-body{display:flex;align-items:center;gap:24px;}
.pd-donut-wrap{position:relative;width:180px;height:180px;flex-shrink:0;}
.pd-donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;}
.pd-donut-amount{font-size:18px;font-weight:700;color:var(--text);}
.pd-donut-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;}
.pd-legend{display:flex;flex-direction:column;gap:8px;flex:1;}
.pd-legend-item{display:flex;align-items:center;gap:8px;font-size:12px;}
.pd-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.pd-legend-text{color:var(--text2);flex:1;}
.pd-legend-val{font-weight:600;color:var(--text);}

/* Lease Snapshot */
.pd-lease-grid{display:flex;flex-direction:column;gap:10px;}
.pd-lease-item{display:flex;align-items:center;gap:10px;font-size:12px;}
.pd-lease-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.pd-lease-label{flex:1;color:var(--text2);}
.pd-lease-count{font-weight:700;font-size:15px;color:var(--text);min-width:28px;text-align:right;}

/* Units Table */
.pd-units-card{margin-bottom:18px;}
.pd-units-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.pd-unit-search{border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-family:inherit;font-size:11px;width:220px;background:var(--surface2);}
.pd-units-table{width:100%;border-collapse:collapse;font-size:12px;}
.pd-units-table th{text-align:left;padding:8px 10px;border-bottom:2px solid var(--border);color:var(--text3);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.5px;}
.pd-units-table td{padding:10px;border-bottom:1px solid var(--surface3);vertical-align:middle;}
.pd-units-table tr:hover{background:var(--surface2);cursor:pointer;}
.pd-unit-tenant-names{font-weight:500;color:var(--text);}
.pd-unit-tenant-sub{font-size:10px;color:var(--text3);margin-top:2px;}
.pd-unit-badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;}
.pd-badge-paid{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border);}
.pd-badge-partial{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.pd-badge-overdue{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);}
.pd-badge-pending{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.pd-badge-processing{background:var(--purple-bg);color:var(--purple);border:1px solid var(--purple-border);}
.pd-badge-mtm{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-border);}
.pd-badge-fixed{background:var(--blue-bg);color:var(--blue);border:1px solid var(--blue-border);}
.pd-unit-expand{font-size:14px;color:var(--text3);transition:transform .2s;}

/* ══════════════════════════════════════════════════════
   UNIT DETAIL FULL PAGE
   ══════════════════════════════════════════════════════ */
.ud-page{padding:0;overflow-y:auto;height:calc(100vh - var(--header-h) - 80px);}

/* Header */
.ud-header{display:flex;align-items:center;gap:14px;padding:12px 28px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:10;}
.ud-close-btn{background:none;border:none;font-size:20px;color:var(--text3);cursor:pointer;padding:2px 6px;}
.ud-close-btn:hover{color:var(--red);}
.ud-header-left{flex:1;}
.ud-header-label{font-size:14px;font-weight:700;color:var(--text);}
.ud-header-right{display:flex;align-items:center;gap:16px;font-size:12px;}
.ud-header-ts{color:var(--text3);}
.ud-header-action{color:var(--accent2);text-decoration:none;font-weight:500;}
.ud-header-action:hover{text-decoration:underline;}

/* Info Bar */
.ud-info-bar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;background:var(--surface2);border-bottom:1px solid var(--border);}
.ud-info-prop{display:flex;align-items:center;gap:12px;}
.ud-prop-icon{font-size:28px;width:48px;height:48px;background:var(--surface);border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;}
.ud-prop-name{font-size:15px;font-weight:700;color:var(--text);}
.ud-prop-addr{font-size:11px;color:var(--text3);margin-top:2px;}
.ud-info-stats{display:flex;gap:28px;}
.ud-info-stat{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text);}
.ud-stat-icon{font-size:16px;}

/* Lease Row */
.ud-lease-row{display:flex;align-items:center;gap:14px;padding:12px 28px;border-bottom:1px solid var(--border);}
.ud-lease-label{font-size:14px;font-weight:700;color:var(--text);}
.ud-lease-select{border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;background:var(--surface);color:var(--text);}
.ud-new-lease-btn{border:none;background:none;color:var(--accent2);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;}
.ud-new-lease-btn:hover{text-decoration:underline;}

/* Main Rows */
.ud-main-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:0 28px;margin-top:18px;}
.ud-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 22px;box-shadow:var(--shadow);}
.ud-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.ud-card-title{font-size:13px;font-weight:700;color:var(--text);}
.ud-card-link{font-size:11px;color:var(--accent2);text-decoration:none;font-weight:500;}
.ud-card-link:hover{text-decoration:underline;}
.ud-badge{display:inline-block;background:var(--accent-bg);color:var(--accent2);border-radius:10px;padding:1px 8px;font-size:11px;font-weight:600;margin-left:6px;}

/* Lease Card */
.ud-lease-card{padding:20px 24px;}
.ud-lease-days-row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;}
.ud-lease-days-label{font-size:13px;color:var(--text2);}
.ud-lease-days-val{font-size:24px;font-weight:700;color:var(--text);}
.ud-lease-bar-wrap{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-bottom:12px;background:var(--surface3);}
.ud-lease-bar-elapsed{background:var(--border2);height:100%;transition:width .3s;}
.ud-lease-bar-remaining{background:var(--accent);height:100%;transition:width .3s;}
.ud-lease-dates{display:flex;justify-content:space-between;font-size:12px;color:var(--text2);margin-bottom:14px;}
.ud-lease-date-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.3px;}
.ud-lease-mtm-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:12px;color:var(--text2);}
.ud-toggle{position:relative;width:36px;height:20px;flex-shrink:0;}
.ud-toggle input{opacity:0;width:0;height:0;}
.ud-toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--border);border-radius:20px;transition:.2s;}
.ud-toggle-slider::before{content:'';position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s;}
.ud-toggle input:checked + .ud-toggle-slider{background:var(--accent);}
.ud-toggle input:checked + .ud-toggle-slider::before{transform:translateX(16px);}
.ud-view-lease-link{display:inline-block;font-size:12px;color:var(--accent2);text-decoration:none;font-weight:500;}
.ud-view-lease-link:hover{text-decoration:underline;}

/* Collection Card */
.ud-collection-card{padding:20px 24px;}
.ud-collection-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;}
.ud-collection-title{font-size:13px;font-weight:700;color:var(--text);}
.ud-collection-month{border:1px solid var(--border);border-radius:6px;padding:4px 10px;font-family:inherit;font-size:11px;background:var(--surface);}
.ud-collection-body{display:flex;align-items:center;gap:24px;margin-bottom:10px;}
.ud-coll-donut-wrap{position:relative;width:140px;height:140px;flex-shrink:0;}
.ud-coll-donut-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;}
.ud-coll-donut-label{font-size:10px;color:var(--text3);text-transform:uppercase;}
.ud-coll-donut-amount{font-size:16px;font-weight:700;color:var(--text);}
.ud-coll-legend{display:flex;flex-direction:column;gap:8px;flex:1;}
.ud-coll-legend-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text2);}
.ud-coll-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;}
.ud-coll-val{margin-left:auto;font-weight:600;color:var(--text);}
.ud-view-invoices-link{font-size:12px;color:var(--accent2);text-decoration:none;font-weight:500;}
.ud-view-invoices-link:hover{text-decoration:underline;}

/* Tenants Card */
.ud-tenants-card{min-height:120px;}
.ud-tenants-list{display:flex;flex-wrap:wrap;gap:12px;}
.ud-tenant-chip{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:border-color .15s;min-width:180px;}
.ud-tenant-chip:hover{border-color:var(--accent);background:var(--accent-bg);}
.ud-tenant-avatar{width:36px;height:36px;border-radius:50%;background:var(--accent-bg);color:var(--accent2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;}
.ud-tenant-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;}
.ud-tenant-name{font-size:12px;font-weight:600;color:var(--text);}
.ud-tenant-verified{color:var(--accent);font-size:14px;margin-left:4px;}

/* Invoice Tabs & Table */
.ud-inv-tabs{display:flex;align-items:center;gap:4px;margin-bottom:10px;border-bottom:2px solid var(--surface3);padding-bottom:0;}
.ud-inv-tab{background:none;border:none;border-bottom:2px solid transparent;padding:8px 14px;margin-bottom:-2px;font-family:inherit;font-size:12px;color:var(--text3);cursor:pointer;font-weight:500;}
.ud-inv-tab.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600;}
.ud-inv-tab:hover:not(.active){color:var(--text2);}
.ud-inv-table{width:100%;border-collapse:collapse;font-size:12px;}
.ud-inv-table th{text-align:left;padding:8px 10px;color:var(--text3);font-weight:600;text-transform:uppercase;font-size:10px;letter-spacing:.5px;border-bottom:1px solid var(--surface3);}
.ud-inv-table td{padding:10px;border-bottom:1px solid var(--surface3);}
.ud-inv-table tr:hover{background:var(--surface2);}
.ud-inv-link{color:var(--accent2);text-decoration:none;font-weight:500;cursor:pointer;}
.ud-inv-link:hover{text-decoration:underline;}

/* Documents */
.ud-docs-list{margin-bottom:14px;}
.ud-doc-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--surface3);font-size:12px;}
.ud-doc-row:last-child{border-bottom:none;}
.ud-doc-icon{font-size:16px;flex-shrink:0;}
.ud-doc-name{flex:1;color:var(--accent2);cursor:pointer;font-weight:500;}
.ud-doc-name:hover{text-decoration:underline;}
.ud-doc-date{color:var(--text3);font-size:11px;}

/* Notes */
.ud-notes-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--surface3);}
.ud-notes-title{font-size:12px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;}
.ud-note-item{padding:8px 0;border-bottom:1px solid var(--surface3);font-size:12px;color:var(--text2);}
.ud-note-item strong{color:var(--text);font-size:10px;}
.ud-note-input{width:100%;border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-family:inherit;font-size:12px;resize:vertical;margin-top:8px;background:var(--surface2);}
.ud-note-save-btn{margin-top:6px;padding:5px 14px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:#fff;font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;}
.ud-note-save-btn:hover{opacity:.9;}

@media(max-width:900px){
  .pd-stats-row{grid-template-columns:1fr 1fr;}
  .pd-row-2col{grid-template-columns:1fr;}
  .pd-collection-body{flex-direction:column;}
  .ud-main-row{grid-template-columns:1fr;}
  .ud-info-bar{flex-direction:column;gap:12px;}
  .ud-collection-body{flex-direction:column;}
}

/* ═══════════════════════════════════════════════════════════ */
/* ═══ REVIEW ROLE (bookkeeper) — read-only Bills / Vendors   ═══ */
/* ═══════════════════════════════════════════════════════════ */
/* 2026-09-15 — the bookkeeper opens the SAME bill form / vendor ledger the admin
   uses (hoa-admin.js openBillForm / openVendorLedger in review mode). After render
   _roLockModal() puts .wpa-ro on #hoaModalBox and disables every field; these rules
   make a disabled field read as static text — same size, no grey box, no border,
   no picker arrow — and style the 👁 View button + the Read-only pill. Every
   selector is under body.wpa-review; !important beats the inline styles inp() /
   sel() / txa() / summaryRow() / billLineRow() emit (hoa-admin.js). */
/* 👁 View — the one row action in review mode; sits on .bkg-btn (hoa-admin.js
   ensureBankingGuiCss: padding 5px 11px, radius 7px, 11px/600, border #ddd8ce),
   calm neutral instead of white */
body.wpa-review .bkg-btn.bkg-view{background:#f7f4ef;color:#635c4e;border-color:#ddd8ce;}
body.wpa-review .bkg-btn.bkg-view:hover{background:#fff;color:#7a4e2b;border-color:#7a4e2b;}
/* the vendor ledger's per-bill 👁 View carries its own inline style (10px); keep it calm too */
body.wpa-review #hoaModalBox button.bkg-view{background:#f7f4ef !important;color:#635c4e !important;}
/* 👁 Read-only pill, next to the status pill in the modal head (same 3px 8px / 8px / 10px shape) */
body.wpa-review .wpa-ro-pill{display:inline-block;padding:3px 8px;border-radius:8px;font-size:10px;font-weight:700;white-space:nowrap;background:#f3ede2;color:#7a4e2b;border:1px solid #e3d9c6;}
/* the action bar's one line when nothing informational applies */
body.wpa-review .wpa-ro-hint{font-size:11px;color:var(--text3);}
/* every field in a locked modal reads as static text */
body.wpa-review #hoaModalBox.wpa-ro input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),
body.wpa-review #hoaModalBox.wpa-ro select,
body.wpa-review #hoaModalBox.wpa-ro textarea{pointer-events:none;background:transparent !important;border-color:transparent !important;box-shadow:none !important;color:var(--text) !important;-webkit-text-fill-color:var(--text);opacity:1 !important;padding-left:0 !important;appearance:none;-webkit-appearance:none;cursor:default;resize:none;transition:none !important;}
/* (transition:none — main.css:226 gives every input "transition:all .18s"; .wpa-ro lands after openModal()
   forced layout, so without it the borders faded out and every value slid 10px left on each open) */
body.wpa-review #hoaModalBox.wpa-ro select{background-image:none !important;padding-right:0 !important;}
body.wpa-review #hoaModalBox.wpa-ro input[type=date]::-webkit-calendar-picker-indicator{display:none;}
body.wpa-review #hoaModalBox.wpa-ro input[type=number]::-webkit-inner-spin-button,
body.wpa-review #hoaModalBox.wpa-ro input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0;}
body.wpa-review #hoaModalBox.wpa-ro input::placeholder,
body.wpa-review #hoaModalBox.wpa-ro textarea::placeholder{color:var(--text3);opacity:1;}
/* the money-locked text boxes the admin sees (.bkg-rotxt, hoa-admin.js openBillForm ro()) flatten the same way */
body.wpa-review #hoaModalBox.wpa-ro .bkg-rotxt{background:transparent !important;border-color:transparent !important;padding-left:0 !important;}

/* ═══════════════════════════════════════════════════════════ */
/* ═══ REVIEW ROLE (bookkeeper) — Banking tabs on a phone    ═══ */
/* ═══════════════════════════════════════════════════════════ */
/* 2026-09-15 — BOOKKEEPER-REVIEW-ROLE-SPEC §4 + requirement R-B. js/review-mode.js
   puts body.wpa-review on a review-only session and keeps it on the DESKTOP shell
   (the mobile shell has no Banking page), so a bookkeeper on a 390px phone gets the
   desktop Banking pages. Every rule here is scoped to body.wpa-review: an admin's
   layout is untouched at any width. Selectors are the ones the render functions
   emit today (banking.js / hoa-admin.js / accounting.js / payments-report.js /
   invoice.js / index.html) — see the spec's R-B notes for the file:line of each.
   !important only where an inline style or a JS-set style must lose. */
@media (max-width: 768px) {
  /* no sideways page scroll — every wide thing scrolls inside its own box below
     (the html rule needs :has(); a browser without it still gets the body clip) */
  body.wpa-review{overflow-x:hidden;}
  html:has(body.wpa-review){overflow-x:hidden;}
  body.wpa-review .page.active{overflow-x:hidden;}

  /* header — the clock's inline min-width:220px is the one thing that overflows */
  body.wpa-review .header{padding-left:10px;padding-right:10px;gap:6px;}
  body.wpa-review #headerClock{min-width:0 !important;font-size:11px;}

  /* module bar + sub-nav: one row each, finger-scrollable, never wrapping */
  body.wpa-review .module-bar,
  body.wpa-review .sub-nav{padding:0 8px;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;white-space:nowrap;-webkit-overflow-scrolling:touch;}
  body.wpa-review .module-tab{padding:10px 12px;font-size:10px;letter-spacing:0;gap:4px;flex:0 0 auto;}
  body.wpa-review .sub-tab{padding:9px 11px;font-size:10px;flex:0 0 auto;}
  /* the review badge keeps only the eye; the text rides in .wpa-review-txt (review-mode.js) */
  body.wpa-review #wpaReviewBadge .wpa-review-txt{display:none;}
  body.wpa-review #wpaReviewBadge{padding-left:10px;padding-right:10px;}
  body.wpa-review #wpaReviewSignOut{padding-left:10px;padding-right:10px;}

  /* page gutters: the Banking pages carry padding:18px 24px INLINE on their wrapper div */
  body.wpa-review #page-banking > div,
  body.wpa-review #page-banking-ledger > div,
  body.wpa-review #page-banking-reconcile > div,
  body.wpa-review #page-banking-bills > div,
  body.wpa-review #page-banking-vendors > div,
  body.wpa-review #page-banking-accounting > div{padding:8px !important;}
  body.wpa-review #page-reports .report-wrap{padding:8px !important;}
  body.wpa-review #page-reports .r-section{padding:12px;}
  body.wpa-review #page-banking h2,
  body.wpa-review #page-banking-ledger h2,
  body.wpa-review #page-banking-reconcile h2{font-size:18px;}

  /* card grids → one column (the account grid's columns are inline on #bkAcctGrid) */
  body.wpa-review #bkAcctGrid{grid-template-columns:1fr !important;}
  body.wpa-review #page-banking-accounting .acct-grid2,
  body.wpa-review #page-banking-accounting .acct-kv,
  body.wpa-review #page-reports .r-kpi-grid,
  body.wpa-review #page-reports .wpa-pr-kpis{grid-template-columns:1fr;}
  body.wpa-review #page-reports .pred-type-grid{grid-template-columns:1fr;}
  /* Income by Owner: the <summary> is an inline 4-column grid; stack it 2×2, unit list full width */
  body.wpa-review #page-reports .owner-report-row > summary{grid-template-columns:1fr auto !important;gap:6px 12px !important;padding:10px 8px !important;}
  body.wpa-review #page-reports .owner-report-row > summary .or-apts{grid-column:1 / -1;white-space:normal !important;}
  body.wpa-review #page-reports .dbar-label{min-width:90px;}

  /* toolbars wrap; fixed-width filter boxes give way */
  body.wpa-review .bkg-head,
  body.wpa-review .bkg-head .act,
  body.wpa-review .bkg-bar,
  body.wpa-review .bkg-bulk,
  body.wpa-review .acct-head,
  body.wpa-review .acct-ch,
  body.wpa-review .acct-chr,
  body.wpa-review .acct-row,
  body.wpa-review .report-hdr,
  body.wpa-review .report-view-toggle,
  body.wpa-review .wpa-pr-hd,
  body.wpa-review .wpa-pr-presets,
  body.wpa-review .wpa-pr-filter-row,
  body.wpa-review .wpa-pr-table-hd,
  body.wpa-review .wpa-pr-chart-hd{flex-wrap:wrap;}
  body.wpa-review .report-view-toggle{max-width:100%;}
  body.wpa-review #reportOwnerSel{margin-left:0 !important;max-width:100%;}
  body.wpa-review .bkg-sel,
  body.wpa-review .bkg-search{width:100%;max-width:100%;}
  /* Bills: hoa-admin.js wraps select + search in an inline-flex span with margin-left:auto (fixed 220 + 240 px) */
  body.wpa-review .bkg-bar > span[style*="inline-flex"]{flex-wrap:wrap;flex:1 1 100%;max-width:100%;margin-left:0 !important;}
  body.wpa-review #bkLedgerAccount,
  body.wpa-review #bkReconcileAccount{max-width:100%;}
  body.wpa-review #page-banking-accounting .acct-map-sel{min-width:0;width:100%;max-width:100%;}
  body.wpa-review #page-banking-accounting .acct-banks select{min-width:0;width:100%;}
  body.wpa-review #page-banking-accounting .acct-stat{min-width:0;flex:1 1 40%;}
  body.wpa-review .wpa-pr-body{padding:10px;}
  body.wpa-review .wpa-pr-hd{padding:12px 14px;}
  body.wpa-review .wpa-pr-filters{padding:10px;}
  /* the in-transit strip (Accounts + Ledger) — its chip row already wraps; just tighten */
  body.wpa-review #bkPendingStripHome,
  body.wpa-review #bkPendingStrip{font-size:12px;}

  /* every table on a Banking page scrolls inside its own box. display:block on the
     table makes it its own scroll container whether or not the render wrapped it
     (Bills/Vendors .bkg-tbl and the Reports .breakdown-table are bare); the anonymous
     table box still fills the width when the columns fit. min-width:0 beats the
     phone rule table{min-width:600px} above. Left alone: .wpa-pr-tbl and the vendor
     ledger's .hoa-tbl (each already sits in an overflow:auto box with a sticky thead
     that a table-level scroller would un-stick); the invoice modal (.wpa-inv) has its
     own ≤720px rules. */
  body.wpa-review #page-banking table,
  body.wpa-review #page-banking-ledger table,
  body.wpa-review #page-banking-reconcile table,
  body.wpa-review #page-banking-bills table,
  body.wpa-review #page-banking-vendors table,
  body.wpa-review #page-banking-accounting table,
  body.wpa-review #page-reports table:not(.wpa-pr-tbl),
  body.wpa-review #rDrillModal table,
  body.wpa-review #bkModal table,
  body.wpa-review #acctModal table{display:block;overflow-x:auto;max-width:100%;min-width:0;-webkit-overflow-scrolling:touch;}
  body.wpa-review .wpa-pr-table-wrap,
  body.wpa-review .acct-scroll{-webkit-overflow-scrolling:touch;}
  body.wpa-review .bkg-tbl th,
  body.wpa-review .bkg-tbl td{padding-left:6px;padding-right:6px;}

  /* modals go edge to edge: bank modal (banking.js), accounting modal, the HOA/vendor
     ledger overlay (inline padding + a JS-set max-width), the invoice modal, the
     Reports drill (.modal with an inline max-width) and the Payments Report overlay */
  body.wpa-review #bkModal,
  body.wpa-review #acctModal{padding:0;align-items:flex-end;}
  body.wpa-review #bkModal .bk-mcard,
  body.wpa-review #acctModal .acct-mcard{width:100%;max-width:100vw;max-height:100vh;border-radius:0;}
  body.wpa-review #bkModal .bk-head,
  body.wpa-review #bkModal .bk-body,
  body.wpa-review #bkModal .bk-foot,
  body.wpa-review #acctModal .acct-mh,
  body.wpa-review #acctModal .acct-mb,
  body.wpa-review #acctModal .acct-mf{padding-left:14px;padding-right:14px;}
  body.wpa-review #hoaModalOverlay{padding:0 !important;align-items:flex-start !important;}
  body.wpa-review #hoaModalBox{max-width:100vw !important;width:100% !important;border-radius:0 !important;padding:14px 12px !important;box-sizing:border-box;}
  /* bill form (hoa-admin.js openBillForm): the line-items grid (3fr 70px 90px 100px 90px 30px inline) and
     the 340px totals box set the left pane's min-content width to ~526px, so at 390px EVERY value in the
     pane was clipped at the viewport edge. Let the pane shrink to the modal and scroll the line items
     inside their own box (their container is the unclassed div wrapping #billLinesRO / #billLines). */
  body.wpa-review #hoaModalBox .bkg-modal-grid > div{min-width:0;}
  body.wpa-review #hoaModalBox div:has(> #billLinesRO),
  body.wpa-review #hoaModalBox div:has(> #billLines){overflow-x:auto;-webkit-overflow-scrolling:touch;}
  body.wpa-review .wpa-inv-ovr{padding:0;}
  body.wpa-review .wpa-inv{max-width:100vw;border-radius:0;border-left:0;border-right:0;}
  body.wpa-review #rDrillModal{padding:0;}
  body.wpa-review #rDrillModal .modal{max-width:100vw !important;width:100vw;max-height:100vh;border-radius:0;}
  body.wpa-review #rDrillModal .modal-header{padding:14px 14px 12px;}
  body.wpa-review .wpa-pr-ovr{padding:0;}
  body.wpa-review .wpa-pr-ovr .wpa-pr{border-radius:0;}

  /* inputs and selects at 16px so iOS Safari does not zoom the page on focus
     (the ledger filter boxes carry font-size:12px inline — hence !important) */
  body.wpa-review #page-banking input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking select,
  body.wpa-review #page-banking-ledger input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking-ledger select,
  body.wpa-review #page-banking-reconcile input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking-reconcile select,
  body.wpa-review #page-banking-bills input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking-bills select,
  body.wpa-review #page-banking-vendors input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking-vendors select,
  body.wpa-review #page-banking-accounting input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-banking-accounting select,
  body.wpa-review #page-banking-accounting textarea,
  body.wpa-review #page-reports input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #page-reports select,
  body.wpa-review #bkModal input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #bkModal select,
  body.wpa-review #acctModal input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #acctModal select,
  body.wpa-review #hoaModalBox input:not([type=checkbox]):not([type=radio]),
  body.wpa-review #hoaModalBox select,
  body.wpa-review #hoaModalBox textarea,
  body.wpa-review .wpa-inv input:not([type=checkbox]):not([type=radio]),
  body.wpa-review .wpa-inv select,
  body.wpa-review .wpa-inv textarea{font-size:16px !important;max-width:100%;box-sizing:border-box;}
  /* …except inside a locked (read-only) modal: those fields are inert (disabled + pointer-events:none, so
     iOS can never focus/zoom them) and read as static text — keep them at the 12px the static values use */
  body.wpa-review #hoaModalBox.wpa-ro input:not([type=hidden]):not([type=checkbox]):not([type=radio]):not([type=file]),
  body.wpa-review #hoaModalBox.wpa-ro select,
  body.wpa-review #hoaModalBox.wpa-ro textarea{font-size:12px !important;}
}
</style>

/* ═══════════════════════════════════════════════════════════ */
/* ═══ MODAL POLISH (2026-09-30) — Banking / HOA dialogs       ═══ */
/* ═══════════════════════════════════════════════════════════ */
/* Gil: "go over all the screens like that and improve the GUI". One block that fixes every
   #hoaModalBox dialog (27 openModal() callers) instead of editing each form:
   - grids: `1fr 1fr` lets a date input / long placeholder push a column past the card edge
     (Single payment's Address / Amount / Date ran off the right side). minmax(0,1fr) + min-width:0.
   - .bkg-meta is a one-line ellipsis for list headers; inside a dialog it is explanatory copy and was cut mid-sentence.
   - .bkg-btn-primary was referenced (Create it / Send the link) but never defined, so the main action looked
     like Cancel. */
#hoaModalBox{line-height:1.45;}
#hoaModalBox > h3{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:#3a3428;margin:0 0 6px !important;}
#hoaModalBox .bkg-meta{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.5;font-size:11.5px;}
#hoaModalBox [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;gap:14px 12px !important;}
#hoaModalBox [style*="grid-template-columns:1fr 1fr 1fr"]{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
#hoaModalBox label{min-width:0;font-size:10px;letter-spacing:1.2px;color:#6b6354;margin-bottom:0;}
#hoaModalBox label > input,#hoaModalBox label > select,#hoaModalBox label > textarea{margin-top:5px;max-width:100%;min-width:0;}
#hoaModalBox input,#hoaModalBox select,#hoaModalBox textarea{box-sizing:border-box;max-width:100%;}
#hoaModalBox input::placeholder,#hoaModalBox textarea::placeholder{color:#b9b1a2;}
#hoaModalBox input[type=date]{min-height:38px;}
#hoaModalBox select{text-overflow:ellipsis;}
#hoaModalBox .bkg-btn{padding:8px 16px;font-size:12px;border-radius:8px;}
#hoaModalBox .bkg-btn-primary,.bkg-btn.bkg-btn-primary{background:#7a4e2b;border-color:#7a4e2b;color:#fff;}
#hoaModalBox .bkg-btn-primary:hover{background:#6a4223;border-color:#6a4223;color:#fff;}
#hoaModalBox .bkg-btn:disabled{opacity:.55;cursor:default;}
@media(max-width:600px){
  #hoaModalOverlay{padding:12px 8px !important;}
  #hoaModalBox{padding:16px 14px !important;}
  #hoaModalBox [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:minmax(0,1fr) !important;}
  #hoaModalBox [style*="grid-column:1/3"]{grid-column:auto !important;}
}

/* ═══ Plain .modal dialogs (2026-09-30) ═══ */
/* `.form-grid{1fr 1fr}` blows out when a date input's min-content is wider than its half — Add Unit's
   Check-in column ran under Monthly rent and every right-hand field ended flush against the card edge. */
.modal .form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
.modal .form-grid > *{min-width:0;}
.modal input,.modal select,.modal textarea{max-width:100%;min-width:0;}
.modal-body input[type=date]{min-height:38px;}
@media(max-width:600px){.modal .form-grid{grid-template-columns:minmax(0,1fr);}}
/* ROOT CAUSE of the overflowing fields in every dialog: line 1 of this file is a stray "<style>" tag, which the
   parser glues onto the next rule's selector, so the global `*{box-sizing:border-box;margin:0;padding:0}` on line 3
   is DROPPED. Inputs stay content-box, and `width:100%` + padding + border pokes ~28px past its column.
   Turning the reset on now would shift margins and padding across the whole admin, so border-box is applied to
   dialog fields only. */
.modal-overlay input,.modal-overlay select,.modal-overlay textarea,#hoaModalOverlay input,#hoaModalOverlay select,#hoaModalOverlay textarea{box-sizing:border-box;}
/* The global `input{width:100%}` also hit checkboxes and radios, so a checkbox inside a label (Channel Visibility's
   channel chips, the Publish/Unpublish radios) ballooned to a full column and shoved its text sideways. */
.modal-overlay input[type=checkbox],.modal-overlay input[type=radio],#hoaModalOverlay input[type=checkbox],#hoaModalOverlay input[type=radio]{width:auto;min-width:0;flex-shrink:0;}
@media(max-width:600px){
  .modal-overlay .modal-body{overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .modal-overlay .modal{max-width:100%;}
}
/* Inline-styled grids inside dialogs (channel chips, Pricing Rule, etc.): `1fr` columns won't shrink below their
   longest label, so on a phone the right-hand column ran off the card. */
.modal-overlay [style*="grid-template-columns:repeat(2,1fr)"]{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
.modal-overlay [style*="grid-template-columns:repeat(3,1fr)"]{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
.modal-overlay [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;}
.modal-overlay [style*="grid-template-columns"] > label{min-width:0;overflow-wrap:anywhere;}
/* JS-built dialogs (position:fixed overlays made in app.js / inbox.js / blast.js ...): same content-box overflow. Only
   fields WITHOUT their own inline width are touched, so deliberately sized inputs keep their size. */
[style*="position:fixed"] input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([style*="width"]),
[style*="position: fixed"] input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):not([style*="width"]),
[style*="position:fixed"] select:not([style*="width"]),[style*="position: fixed"] select:not([style*="width"]),
[style*="position:fixed"] textarea:not([style*="width"]),[style*="position: fixed"] textarea:not([style*="width"]){box-sizing:border-box;max-width:100%;}

/* ══════════════════════════════════════════════════════════════════════════
   TURNOVER — cleaning & refresh (js/turnover.js)                  2026-10-02
   Two chips per check-in / check-out row, and the log underneath. The chips
   live INSIDE .dash-move-item between .dash-move-main and .dash-move-when,
   so they must not stretch: flex-shrink:0 and they wrap on a narrow card.
   ══════════════════════════════════════════════════════════════════════════ */
/* The pair sits INSIDE .dash-move-item, between the guest and the Today pill, in a column:
   side by side they are ~210px and the check-in card is barely 400px on a laptop, which
   crushed the unit label to one character per line. Stacked they are ~105px and the row
   keeps its shape. The chips give way before the name does. */
.tn-chips{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:0 1 auto;min-width:0;}
.dash-move-item:has(.tn-chips) .dash-move-main{min-width:92px;}
/* Gil 2026-10-03: "put some colors to the buttons, maybe green to cleaning and orange to
   refresh". The colour is the TASK, not the state, so a glance down the card sorts the two
   kinds of work apart; the state is the words inside (Done/Skip -> ✓ done / ⊘ skipped). */
.tn-chip{display:inline-flex;align-items:center;gap:3px;padding:1px 3px 1px 6px;border:1px solid var(--border);
  border-radius:999px;background:var(--surface2);font-size:10px;line-height:1.5;white-space:nowrap;max-width:100%;}
.tn-chip .tn-t{font-weight:700;letter-spacing:.2px;text-transform:uppercase;font-size:9px;color:var(--text3);}
.tn-chip .tn-s{font-weight:700;font-size:9px;color:var(--text2);padding:0 1px;}
.tn-chip .tn-wait{color:var(--text3);font-style:italic;font-weight:400;}

.tn-chip.tn-cleaning{background:var(--green-bg);border-color:var(--green-border);}
.tn-chip.tn-cleaning .tn-t,.tn-chip.tn-cleaning .tn-s{color:var(--green);}
.tn-chip.tn-refresh{background:var(--orange-bg);border-color:var(--orange-border);}
.tn-chip.tn-refresh .tn-t,.tn-chip.tn-refresh .tn-s{color:var(--orange);}
/* Answered 'no' is the one state that drops its colour: a skipped job is not work done, and
   it must not read as one at a glance. */
.tn-chip.is-skipped{background:var(--surface3);border-color:var(--border2);opacity:.68;}
.tn-chip.is-skipped .tn-t,.tn-chip.is-skipped .tn-s{color:var(--text2);}
.tn-chip.is-done{box-shadow:inset 0 0 0 1px rgba(255,255,255,.6);}

.tn-b{border:1px solid var(--border2);background:var(--surface);color:var(--text2);border-radius:999px;
  padding:0 5px;font-family:inherit;font-size:9px;font-weight:700;cursor:pointer;line-height:1.6;}
.tn-b:hover{background:var(--surface3);}
.tn-cleaning .tn-y:hover{background:var(--green);border-color:var(--green);color:#fff;}
.tn-refresh  .tn-y:hover{background:var(--orange);border-color:var(--orange);color:#fff;}
.tn-n:hover{background:var(--surface3);border-color:var(--border2);color:var(--text2);}
.tn-x{border:none;background:none;color:var(--text3);cursor:pointer;font-size:9px;padding:0 2px;line-height:1;}
.tn-x:hover{color:var(--red);}

/* ── the log ── */
.tn-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 12px;}
.tn-rb{border:1px solid var(--border);background:var(--surface);color:var(--text2);border-radius:999px;
  padding:3px 11px;font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;}
.tn-rb:hover{background:var(--surface2);}
.tn-rb.on{background:var(--accent-bg);border-color:var(--accent);color:var(--accent2);}
.tn-d{font-family:inherit;font-size:11px;padding:2px 6px;border:1px solid var(--border);border-radius:6px;
  background:var(--surface);color:var(--text);width:auto;display:inline-block;}
.tn-arrow,.tn-when{font-size:11px;color:var(--text3);}
.tn-when{margin-left:4px;}

.tn-sum{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:14px;}
.tn-sum th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--text3);
  font-weight:700;padding:4px 8px;border-bottom:1px solid var(--border);}
.tn-sum td{padding:5px 8px;border-bottom:1px solid var(--border);}
.tn-sum th.n,.tn-sum td.n{text-align:right;font-variant-numeric:tabular-nums;}
.tn-sum tr.tn-co-first td{border-top:1px solid var(--border);}
.tn-sum .tn-co{font-weight:700;color:var(--accent2);vertical-align:top;white-space:nowrap;}
.tn-sum .tn-co-full{display:block;font-size:9px;font-weight:400;color:var(--text3);letter-spacing:0;}
.tn-sum tfoot td{font-weight:700;background:var(--surface2);border-bottom:none;}
.tn-done-n{color:var(--green);font-weight:700;}
.tn-skip-n{color:var(--text3);}
.tn-left-n{color:var(--orange);font-weight:700;}

.tn-list{border:1px solid var(--border);border-radius:9px;overflow:hidden;margin-bottom:10px;}
.tn-list-h{padding:6px 10px;font-size:11px;font-weight:700;background:var(--surface2);color:var(--text2);
  border-bottom:1px solid var(--border);}
.tn-overdue{border-color:var(--orange-border);}
.tn-overdue .tn-list-h{background:var(--orange-bg);color:var(--orange);}
.tn-row{display:flex;align-items:center;gap:8px;padding:5px 10px;border-bottom:1px solid var(--border);font-size:11px;}
.tn-row:last-child{border-bottom:none;}
.tn-row-date{color:var(--text3);white-space:nowrap;flex-shrink:0;width:86px;}
.tn-row-apt{font-weight:700;color:var(--accent2);white-space:nowrap;flex-shrink:0;width:118px;overflow:hidden;text-overflow:ellipsis;}
.tn-row-co{color:var(--text2);white-space:nowrap;flex-shrink:0;width:52px;}
.tn-row-who{color:var(--text3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tn-more{margin:6px 10px;border:1px solid var(--border);background:var(--surface);color:var(--text2);
  border-radius:999px;padding:2px 10px;font-family:inherit;font-size:10px;cursor:pointer;}
.tn-more:hover{background:var(--surface2);}
.tn-empty,.tn-clear{font-size:12px;color:var(--text3);padding:8px 0;}
.tn-clear{color:var(--green);font-weight:600;}
.tn-warn{font-size:11px;color:var(--orange);background:var(--orange-bg);border:1px solid var(--orange-border);
  border-radius:8px;padding:7px 10px;margin-bottom:10px;}
.tn-warn code{font-family:'DM Mono',monospace;font-size:10px;}
.tn-foot{font-size:10px;color:var(--text3);line-height:1.6;border-top:1px solid var(--border);padding-top:8px;margin-top:4px;}

/* Stacked, the pair is ~105px and fits beside the Today pill down to a ~340px card, so the
   chips only drop to their own line on a phone. Below that the log's "who" column goes too —
   the date, the unit and the two chips are the part you act on. */
@media (max-width:620px){
  .dash-move-item:has(.tn-chips){flex-wrap:wrap;}
  .tn-chips{width:100%;align-items:flex-start;order:3;margin-top:4px;}
  .tn-row-who{display:none;}
  .tn-row-apt{width:auto;}
}
.tn-list-sub{font-weight:400;color:var(--text3);}
