:root{
  --bg:#F4F5F9;
  --ink:#141822;
  --ink-soft:#565F72;
  --panel:#FFFFFF;
  --line:#E2E5EE;
  --accent:#2F4CDB;
  --accent-deep:#1E2F94;
  --accent-light:#6C82EE;
  --accent-bg:#E8EBFC;
  --ready:#1C8C6B;
  --ready-bg:#DFF5EC;
  --occupied:#2F4CDB;
  --occupied-bg:#E8EBFC;
  --inspect:#B4790F;
  --inspect-bg:#FBEED9;
  --issue:#C13B34;
  --issue-bg:#FBE3E1;
  --shadow:0 1px 2px rgba(20,24,34,0.05), 0 6px 20px rgba(20,24,34,0.06);
  --shadow-lift:0 4px 10px rgba(20,24,34,0.08), 0 14px 32px rgba(20,24,34,0.10);
  --radius-lg:16px;
  --radius-md:12px;
  --content-max:1320px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:
    radial-gradient(1100px 480px at 10% -10%, rgba(47,76,219,0.06), transparent 60%),
    radial-gradient(900px 420px at 100% 0%, rgba(28,140,107,0.05), transparent 55%),
    var(--bg);
  color:var(--ink);
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  padding-bottom:60px;
}
.display{font-family:'Fraunces',serif;}
.mono{font-family:'JetBrains Mono',monospace;}
a{color:inherit;}
button{font-family:inherit;}

/* ---------- Login ---------- */
#loginScreen{
  position:fixed;inset:0;z-index:100;
  display:flex;align-items:center;justify-content:center;
  background:
    radial-gradient(1200px 600px at 15% 0%, rgba(47,76,219,0.18), transparent 60%),
    radial-gradient(900px 500px at 100% 100%, rgba(28,140,107,0.14), transparent 55%),
    linear-gradient(180deg,#141822 0%, #0D101A 100%);
  padding:20px;
}
.login-card{
  width:100%;max-width:380px;
  background:var(--panel);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lift);
  padding:34px 30px 28px;
}
.login-mark{
  width:44px;height:44px;border-radius:11px;
  background:linear-gradient(145deg,var(--accent-light),var(--accent));
  display:flex;align-items:center;justify-content:center;
  margin-bottom:16px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.25);
}
.login-mark svg{width:22px;height:22px;}
.login-card h1{
  font-family:'Fraunces',serif;font-weight:600;font-size:26px;margin:0 0 4px;
}
.login-card p.sub{color:var(--ink-soft);font-size:13.5px;margin:0 0 24px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em;}
.field input{
  width:100%;padding:11px 12px;border-radius:10px;border:1.5px solid var(--line);
  font-size:14.5px;font-family:inherit;background:#FBFBFD;
}
.field input:focus{outline:none;border-color:var(--accent);background:#fff;}
.login-btn{
  width:100%;padding:12px;border-radius:10px;border:none;
  background:linear-gradient(145deg,var(--accent-light),var(--accent));
  color:#fff;font-weight:600;font-size:14.5px;cursor:pointer;margin-top:6px;
  box-shadow:var(--shadow);
}
.login-btn:active{transform:translateY(1px);}
.login-error{
  color:var(--issue);font-size:13px;margin-top:10px;display:none;
}

/* ---------- Header / Nav ---------- */
header.app-head{
  background:linear-gradient(180deg,#171C29 0%, var(--ink) 60%, #0D101A 100%);
  color:#fff;padding:16px 20px 0;position:sticky;top:0;z-index:20;box-shadow:var(--shadow);
}
.head-inner{max-width:var(--content-max);margin:0 auto;}
.brand-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:14px;}
.brand{display:flex;align-items:center;gap:10px;}
.brand-mark{
  width:32px;height:32px;border-radius:9px;
  background:linear-gradient(145deg,var(--accent-light),var(--accent));
  display:flex;align-items:center;justify-content:center;flex:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,0.25);
}
.brand-mark svg{width:17px;height:17px;}
.brand-name{font-family:'Fraunces',serif;font-weight:600;font-size:19px;letter-spacing:.01em;}
.brand-tag{font-size:10.5px;color:rgba(255,255,255,0.5);text-transform:uppercase;letter-spacing:.08em;margin-top:-2px;}
.user-row{display:flex;align-items:center;gap:12px;}
.user-chip{font-size:13px;color:rgba(255,255,255,0.75);}
.user-chip b{color:#fff;}
.logout-btn{
  background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.14);
  color:#fff;padding:7px 13px;border-radius:8px;font-size:12.5px;cursor:pointer;
}
.logout-btn:hover{background:rgba(255,255,255,0.15);}

/* No overflow here on purpose: any overflow value other than visible makes
   this a clipping context, which would cut off the dropdown panels that
   hang below the bar. Eight compact items fit one row on a laptop and wrap
   cleanly below that. */
nav.tabs{display:flex;gap:2px;max-width:var(--content-max);margin:0 auto;flex-wrap:wrap;}
.tab-btn{
  background:transparent;border:none;color:rgba(255,255,255,0.66);
  padding:11px 13px 12px;font-size:13.5px;font-weight:550;cursor:pointer;
  white-space:nowrap;position:relative;border-radius:9px 9px 0 0;
  display:inline-flex;align-items:center;gap:7px;
  transition:color .15s ease, background .15s ease;
}
.tab-btn .tab-ico{width:15px;height:15px;flex:none;opacity:.75;}
.tab-btn::before{
  content:'';position:absolute;left:11px;right:11px;bottom:0;height:2.5px;
  border-radius:2px;background:transparent;transition:background .15s ease;
}
.tab-btn:hover{color:#fff;background:rgba(255,255,255,0.06);}
.tab-btn:hover .tab-ico{opacity:1;}
.tab-btn.active{color:#fff;}
.tab-btn.active .tab-ico{opacity:1;}
.tab-btn.active::before{background:var(--accent-light);}
.tab-btn.has-caret::after{
  content:'';width:5px;height:5px;margin-left:1px;
  border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;
  transform:rotate(45deg) translateY(-2px);opacity:.6;
}
.tab-dd{position:relative;}
.dd-panel{
  position:absolute;top:calc(100% + 6px);left:0;background:var(--panel);
  border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow-lift);padding:7px;
  min-width:286px;display:none;z-index:30;
  animation:ddIn .13s ease-out;
}
@keyframes ddIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
.dd-panel.open{display:block;}
.dd-item{
  display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;
  background:none;border:none;padding:9px 11px;border-radius:9px;cursor:pointer;
}
.dd-item-label{font-size:13.5px;font-weight:600;color:var(--ink);line-height:1.25;}
.dd-item-desc{font-size:11.5px;color:var(--ink-soft);line-height:1.35;}
.dd-item:hover{background:var(--accent-bg);}
.dd-item:hover .dd-item-label{color:var(--accent-deep);}
.dd-item.active{background:var(--accent-bg);}
.dd-item.active .dd-item-label{color:var(--accent-deep);}

/* ---------- Account menu (replaces the inline name + log out pair) ---------- */
.acct-dd{position:relative;}
.acct-btn{
  display:flex;align-items:center;gap:8px;cursor:pointer;
  background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.13);
  color:#fff;padding:5px 9px 5px 5px;border-radius:999px;
}
.acct-btn:hover{background:rgba(255,255,255,0.14);}
.acct-avatar{
  width:26px;height:26px;border-radius:50%;flex:none;
  background:linear-gradient(145deg,var(--accent-light),var(--accent));
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;letter-spacing:.02em;
}
.acct-name{font-size:13px;font-weight:600;}
.acct-caret{width:13px;height:13px;opacity:.65;}
.acct-panel{left:auto;right:0;min-width:238px;}
.acct-head{padding:9px 11px 10px;border-bottom:1px solid var(--line);margin-bottom:5px;}
.acct-head-name{font-size:13.5px;font-weight:650;color:var(--ink);}
.acct-head-role{font-size:11.5px;color:var(--ink-soft);margin-top:1px;}

/* ---------- Layout ---------- */
main.content{max-width:var(--content-max);margin:0 auto;padding:22px 20px 10px;}
.view{display:none;}
.view.active{display:block;}
h2.view-title{font-family:'Fraunces',serif;font-weight:600;font-size:24px;margin:2px 0 3px;}
p.view-sub{color:var(--ink-soft);font-size:13.5px;margin:0 0 20px;}

.grid{display:grid;gap:16px;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:900px){.grid-3,.grid-2{grid-template-columns:1fr;}}

.card{
  background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);
  padding:18px 20px;
}
.stat-card .stat-label{font-size:12px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.05em;font-weight:600;}
.stat-card .stat-value{font-family:'Fraunces',serif;font-size:32px;font-weight:600;margin:6px 0 2px;}
.stat-card .stat-foot{font-size:12.5px;color:var(--ink-soft);}

.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:26px 0 10px;}
.section-head h3{font-family:'Fraunces',serif;font-size:17px;font-weight:600;margin:0;}
.section-head .count-pill{
  background:var(--accent-bg);color:var(--accent-deep);font-size:11.5px;font-weight:700;
  padding:2px 9px;border-radius:20px;margin-left:8px;
}

table{width:100%;border-collapse:collapse;font-size:13.5px;}
table th{
  text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--ink-soft);padding:9px 10px;border-bottom:1.5px solid var(--line);font-weight:700;
}
table td{padding:11px 10px;border-bottom:1px solid var(--line);}
table tr:last-child td{border-bottom:none;}
.list-card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;}
.list-card .scroll-wrap{overflow-x:auto;}

.badge{
  display:inline-block;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:20px;
  white-space:nowrap;
}
.badge.ready{background:var(--ready-bg);color:var(--ready);}
.badge.occupied{background:var(--occupied-bg);color:var(--occupied);}
.badge.inspect{background:var(--inspect-bg);color:var(--inspect);}
.badge.issue{background:var(--issue-bg);color:var(--issue);}
.badge.pending{background:var(--inspect-bg);color:var(--inspect);}
.badge.signed{background:var(--ready-bg);color:var(--ready);}
.badge.paid{background:var(--ready-bg);color:var(--ready);}
.badge.overdue{background:var(--issue-bg);color:var(--issue);}

.empty-note{color:var(--ink-soft);font-size:13.5px;padding:16px 4px;}

.chart-wrap{position:relative;height:230px;}
.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:16px;}
@media(max-width:900px){.two-col{grid-template-columns:1fr;}}

.cal-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:12px;}
.cal-legend{display:flex;gap:14px;flex-wrap:wrap;}
.cal-legend-item{font-size:12px;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px;}
.cal-legend-item .dot{width:9px;height:9px;border-radius:3px;display:inline-block;}
.cal-legend-item .dot.occupied{background:var(--occupied);}
.cal-legend-item .dot.ready{background:var(--ready);}
.cal-legend-item .dot.inspect{background:var(--inspect);}
.cal-legend-item .dot.issue{background:var(--issue);}
.cal-nav{display:flex;align-items:center;gap:8px;}
.cal-range{font-size:12.5px;color:var(--ink-soft);min-width:150px;text-align:center;}

.cal-wrap{overflow-x:auto;}
.cal-day-w:root{}
.cal-header-row{display:flex;position:sticky;top:0;background:var(--panel);z-index:2;border-bottom:1.5px solid var(--line);}
.cal-label-col{width:180px;flex:none;padding:10px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);border-right:1px solid var(--line);background:var(--panel);position:sticky;left:0;z-index:3;}
.cal-days-track{display:flex;}
.cal-day-cell{width:64px;flex:none;text-align:center;padding:8px 0 7px;border-right:1px solid var(--line);}
.cal-day-cell .dow{font-size:10px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;}
.cal-day-cell .dnum{font-family:'JetBrains Mono',monospace;font-size:13px;font-weight:700;margin-top:1px;}
.cal-day-cell.is-today{background:var(--accent-bg);}
.cal-day-cell.is-today .dnum{color:var(--accent-deep);}
.cal-body-row{display:flex;border-bottom:1px solid var(--line);}
.cal-body-row:last-child{border-bottom:none;}
.cal-track{position:relative;display:flex;}
.cal-track-cell{width:64px;flex:none;border-right:1px solid var(--line);min-height:46px;}
.cal-bar{
  position:absolute;top:6px;bottom:6px;border-radius:8px;
  display:flex;align-items:center;padding:0 10px;font-size:12px;font-weight:600;color:#fff;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-shadow:var(--shadow);
}
.cal-bar.occupied{background:linear-gradient(135deg,var(--accent-light),var(--accent));}
/* A stay bar opens that resident's contract — make it read as a control. */
.cal-bar.is-clickable{cursor:pointer;}
.cal-bar.is-clickable:hover{filter:brightness(1.08);box-shadow:0 2px 8px rgba(17,24,39,.22);}
.cal-bar.inspect{background:linear-gradient(135deg,#D9A550,var(--inspect));}
.cal-bar.issue{background:linear-gradient(135deg,#DD766E,var(--issue));}
.cal-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--accent);z-index:1;opacity:.55;}

.room-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;margin-top:8px;}
.room-tile{
  border-radius:12px;padding:10px 10px 9px;border:1.5px solid var(--line);background:#FBFBFD;
  position:relative;
}
.room-tile .rn{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13.5px;padding-right:16px;}
.room-tile .rb{font-size:11px;color:var(--ink-soft);margin:1px 0 7px;}
/* Kept subtle until hover so the room grid still reads as data first,
   controls second — this sits on every tile in Property Detail, and a
   portfolio-sized grid of visible delete buttons looks like a warning
   sign rather than a management screen. */
.room-tile-remove{
  position:absolute;top:6px;right:7px;width:18px;height:18px;border:none;background:none;
  color:var(--ink-soft);font-size:11px;line-height:18px;text-align:center;border-radius:5px;
  cursor:pointer;opacity:.35;
}
.room-tile-remove:hover{opacity:1;background:#fdecec;color:#B4232A;}

/* ---- Custom Reports: categorised source picker ---- */
.report-cat-head{font-family:'Fraunces',serif;font-size:15px;font-weight:600;margin:22px 0 10px;}
.report-cat-head:first-child{margin-top:0;}
.report-tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:12px;}
.report-tile{
  display:flex;flex-direction:column;align-items:flex-start;gap:10px;
  padding:14px 12px;border-radius:var(--radius-md);border:1.5px solid var(--line);background:var(--panel);
  cursor:pointer;text-align:left;font-family:inherit;color:inherit;
  transition:border-color .15s,box-shadow .15s,transform .15s;
}
.report-tile:hover{border-color:var(--accent-light);box-shadow:var(--shadow-lift);transform:translateY(-1px);}
.report-tile-icon{position:relative;width:34px;height:34px;color:var(--ink-soft);opacity:.5;}
.report-tile-icon svg{width:100%;height:100%;}
.report-tile-badge{
  position:absolute;left:16px;bottom:-6px;font-size:10px;font-weight:700;letter-spacing:.02em;
  padding:2px 6px;border-radius:6px;color:#fff;line-height:1.4;
}
.report-tile-label{font-size:13px;font-weight:600;line-height:1.3;}
/* Same colours as the tile badge, laid out inline for the builder header
   (the tile badge is absolutely positioned against the icon corner and
   breaks outside that context — this is a plain flow element). */
.report-inline-badge{
  font-size:10px;font-weight:700;letter-spacing:.02em;color:#fff;
  padding:2px 6px;border-radius:6px;line-height:1.4;flex:none;
}
.rc-portfolio{background:#2F4CDB;}
.rc-leasing{background:#8B5CF6;}
.rc-people{background:#EA580C;}
.rc-ops{background:#0F9B8E;}
.rc-finance{background:#C13B34;}

select, .btn-select{
  padding:7px 9px;border-radius:8px;border:1.5px solid var(--line);font-size:12.5px;
  background:#fff;font-family:inherit;
}
.btn{
  background:var(--accent);color:#fff;border:none;padding:9px 15px;border-radius:9px;
  font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow);
}
.btn:hover{background:var(--accent-deep);}
.btn.ghost{background:transparent;color:var(--accent-deep);border:1.5px solid var(--accent-bg);box-shadow:none;}
.btn.ghost:hover{background:var(--accent-bg);}
.btn.small{padding:6px 11px;font-size:12px;}

.listing-card{
  background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;
}
.listing-photo{
  height:120px;background:linear-gradient(135deg,var(--accent-bg),#fff);
  display:flex;align-items:center;justify-content:center;color:var(--accent-deep);
  font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.05em;
}
.listing-body{padding:14px 16px 16px;}
.listing-body .rent{font-family:'Fraunces',serif;font-size:21px;font-weight:600;}
.listing-body .rent span{font-size:12px;font-weight:400;color:var(--ink-soft);}
.listing-meta{font-size:12.5px;color:var(--ink-soft);margin:3px 0 10px;}

/* One row per offer on a cluster card — a room count at one tenancy
   length. A cluster carries several of these (15 rooms at 42 weeks,
   10 at 51, and so on), so they need to read as a list, not as the
   single headline price the card used to show. */
.listing-offers{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.listing-offer{
  display:flex;align-items:flex-start;justify-content:space-between;gap:8px;
  background:#fbfcff;border:1px solid var(--line);border-radius:11px;padding:9px 11px;
}
.listing-offer.is-draft{opacity:.72;border-style:dashed;}
.listing-offer .lo-main{min-width:0;}
.listing-offer .lo-head{font-size:13px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.listing-offer .lo-sub{font-size:11.5px;color:var(--ink-soft);margin-top:2px;}
.listing-offer .lo-actions{display:flex;gap:4px;flex-shrink:0;}
.btn.danger{color:#B4232A;border-color:#f0c8ca;}
.btn.danger:hover{background:#fdf2f2;}
.field-hint{font-size:11px;color:var(--ink-soft);margin-top:5px;}
.modal-error{
  background:#fdf2f2;border:1px solid #f0c8ca;color:#B4232A;
  border-radius:10px;padding:9px 11px;font-size:12.5px;margin-bottom:10px;
}

.ops-subnav,.reports-subnav{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap;}
.ops-sub-btn,.reports-sub-btn,.qf-chip{
  background:#fff;border:1.5px solid var(--line);padding:7px 13px;border-radius:20px;
  font-size:12.5px;font-weight:600;cursor:pointer;color:var(--ink-soft);
}
.ops-sub-btn.active,.reports-sub-btn.active,.qf-chip.active{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;}
.ops-view,.reports-view{display:none;}
.ops-view.active,.reports-view.active{display:block;}

.contracts-layout{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start;}
@media(max-width:900px){.contracts-layout{grid-template-columns:1fr;}}
.contracts-list{max-height:640px;overflow-y:auto;padding:6px;}
.contract-item{
  display:block;width:100%;text-align:left;background:none;border:none;border-radius:10px;
  padding:11px 12px;cursor:pointer;margin-bottom:2px;
}
.contract-item:hover{background:var(--accent-bg);}
.contract-item.active{background:var(--accent-bg);}
.contract-item .ci-title{font-size:13.5px;font-weight:600;margin-bottom:4px;}
.contract-item .ci-tenant{font-size:12px;color:var(--ink-soft);margin-bottom:6px;}
.contracts-detail{min-height:300px;}
.cd-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:16px;}
.cd-head h3{font-family:'Fraunces',serif;font-size:18px;font-weight:600;margin:0 0 4px;}
.cd-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;}
.cd-meta-grid .m-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);font-weight:700;margin-bottom:3px;}
.cd-meta-grid .m-val{font-size:14px;font-weight:600;}
.cd-meta-grid .m-val.deadline{color:var(--issue);}
.cd-section-title{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);margin:18px 0 8px;}
.cd-sign-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;}
.cd-sign-row:last-child{border-bottom:none;}
.cd-sign-name{font-weight:600;}

/* ---------- Dashboard: snapshot strip, today tiles, card heads ---------- */
.view-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;}

.snapshot{padding:16px 20px 18px;}
.snapshot-title{
  font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-soft);margin-bottom:12px;
}
/* Seven tiles, not six. A fixed six-column grid dropped the seventh onto
   a second row on its own, which read as a mistake rather than a row.
   auto-fit keeps them on one line while there is room for a legible
   column, then wraps into even rows instead of leaving an orphan. */
.snapshot-row{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:4px 4px;row-gap:18px;
}
.snap{
  display:flex;flex-direction:column;gap:1px;padding:2px 16px 2px 0;
  border-right:1px solid var(--line);min-width:0;
}
.snap:last-child{border-right:none;padding-right:0;}
.snap-label{font-size:11.5px;color:var(--ink-soft);font-weight:600;}
.snap-value{font-family:'Fraunces',serif;font-size:27px;font-weight:600;letter-spacing:-.03em;line-height:1.15;}
.snap-value.alert{color:var(--issue);}
/* Long feet ("Overdue — statutory excuse lapsed") must not shove the tile
   wider than its column and break the grid. */
.snap-foot{font-size:11.5px;color:var(--ink-soft);overflow-wrap:anywhere;}
/* A clickable tile should say so. */
.snap[onclick]{cursor:pointer;transition:opacity .15s ease;}
.snap[onclick]:hover{opacity:.72;}
@media(max-width:620px){.snap{border-right:none;}}

.today-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px;}
@media(max-width:820px){.today-strip{grid-template-columns:repeat(2,1fr);}}
.today-tile{
  display:flex;flex-direction:column;align-items:flex-start;gap:1px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:14px 16px;cursor:pointer;text-align:left;
  transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}
.today-tile:hover{border-color:var(--accent-light);transform:translateY(-1px);box-shadow:var(--shadow);}
.tt-value{font-family:'Fraunces',serif;font-size:26px;font-weight:600;letter-spacing:-.03em;color:var(--ink);}
.tt-label{font-size:12.5px;color:var(--ink-soft);font-weight:600;}
.tt-note{font-size:11.5px;color:var(--issue);font-weight:600;min-height:14px;}

.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:14px;}
.card-head h3{font-family:'Fraunces',serif;font-size:16px;font-weight:600;margin:0;}
.card-head-note{font-size:11.5px;color:var(--ink-soft);}
.chip-count{
  display:inline-block;background:var(--accent-bg);color:var(--accent-deep);
  font-size:11px;font-weight:700;padding:1px 7px;border-radius:20px;margin-left:6px;
}

/* ---------- Kanban (Leads) ---------- */
.kanban-board{display:flex;gap:14px;overflow-x:auto;padding-bottom:10px;}
.kanban-col{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);min-width:230px;max-width:230px;flex:none;padding:12px;}
.kanban-col-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.kanban-col-head h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:0;font-weight:700;}
.kanban-card{background:#FBFBFD;border:1.5px solid var(--line);border-radius:10px;padding:10px 11px;margin-bottom:8px;}
.kanban-card .kc-name{font-weight:600;font-size:13px;margin-bottom:3px;}
.kanban-card .kc-meta{font-size:11.5px;color:var(--ink-soft);margin-bottom:2px;}
.kanban-card select{width:100%;margin-top:8px;}

/* ---------- Split layout (tickets etc, reuses contracts pattern) ---------- */
.split-layout{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start;}
@media(max-width:900px){.split-layout{grid-template-columns:1fr;}}
.side-list{max-height:640px;overflow-y:auto;padding:6px;}
.side-item{display:block;width:100%;text-align:left;background:none;border:none;border-radius:10px;padding:11px 12px;cursor:pointer;margin-bottom:2px;}
.side-item:hover,.side-item.active{background:var(--accent-bg);}
.side-item .si-title{font-size:13.5px;font-weight:600;margin-bottom:4px;}
.side-item .si-sub{font-size:12px;color:var(--ink-soft);margin-bottom:6px;}
.detail-panel{min-height:300px;}

/* ---------- Comments ---------- */
.comment{border-bottom:1px solid var(--line);padding:10px 0;font-size:13px;}
.comment:last-child{border-bottom:none;}
.comment .c-author{font-weight:600;}
.comment .c-meta{font-size:11px;color:var(--ink-soft);margin-top:3px;}
.comment-box{display:flex;gap:8px;margin-top:14px;}
.comment-box textarea{flex:1;border-radius:10px;border:1.5px solid var(--line);padding:9px 10px;font-family:inherit;font-size:13px;resize:vertical;min-height:44px;}

/* ---------- Forms ---------- */
.form-card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:20px;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;}
@media(max-width:700px){.form-grid{grid-template-columns:1fr;}}
.form-grid label,.field-block label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);margin-bottom:5px;}
.form-grid input,.form-grid select,.form-grid textarea,.field-block input,.field-block select,.field-block textarea{
  width:100%;padding:9px 10px;border-radius:9px;border:1.5px solid var(--line);font-size:13.5px;font-family:inherit;background:#FBFBFD;}
.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{outline:none;border-color:var(--accent);background:#fff;}
.field-block{margin-bottom:12px;}
.line-items-table{width:100%;font-size:13px;margin-bottom:8px;border-collapse:collapse;}
.line-items-table th{text-align:left;font-size:10.5px;text-transform:uppercase;color:var(--ink-soft);padding:6px 6px;}
.line-items-table td{padding:5px 6px;}
.line-items-table input{width:100%;padding:6px 7px;border-radius:6px;border:1.5px solid var(--line);font-size:13px;}
.inv-total-row{display:flex;justify-content:flex-end;gap:20px;padding:10px 4px;font-size:14.5px;font-weight:700;border-top:1.5px solid var(--line);margin-top:4px;}
.form-actions{display:flex;gap:8px;margin-top:6px;}

/* ---------- Generic modal (used by New lead / New ticket / New contract) ---------- */
.modal-overlay{position:fixed;inset:0;background:rgba(20,24,34,0.45);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;}
.modal-box{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);width:100%;max-width:420px;max-height:85vh;overflow-y:auto;padding:22px;}
.modal-box h3{margin:0 0 16px;font-family:'Fraunces',serif;font-size:18px;}
.modal-box .form-actions{margin-top:16px;}

/* ---------- Email tracking ---------- */
.trk-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;}
.trk-dot.on{background:var(--ready);}
.trk-dot.off{background:var(--line);}

/* ---------- Community ---------- */
.feed-card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:12px;}
.feed-card .fc-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft);margin-bottom:8px;}
.feed-card .fc-head b{color:var(--ink);}
.feed-card .fc-body{font-size:14px;line-height:1.5;}
.event-card{display:flex;justify-content:space-between;align-items:center;background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:14px 18px;margin-bottom:10px;}
.event-card .ev-title{font-weight:600;font-size:14.5px;}
.event-card .ev-meta{font-size:12.5px;color:var(--ink-soft);margin-top:2px;}

/* ---------- Reports ---------- */
.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:900px){.report-grid{grid-template-columns:1fr;}}
.check-row{display:flex;flex-wrap:wrap;gap:8px 18px;}
.check-row label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink);cursor:pointer;font-weight:500;}
.check-row input{cursor:pointer;}
.report-summary{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0;}
.report-summary .rs-chip{background:var(--accent-bg);color:var(--accent-deep);font-size:12.5px;font-weight:700;padding:7px 13px;border-radius:20px;}

/* ---------- Settings / connection ---------- */
.conn-status{display:flex;align-items:center;gap:9px;font-size:13.5px;padding:13px 16px;border-radius:12px;background:var(--inspect-bg);color:var(--inspect);margin-bottom:18px;font-weight:600;}
.conn-status .dot2{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none;}
.conn-status.ok{background:var(--ready-bg);color:var(--ready);}
.conn-status.err{background:var(--issue-bg);color:var(--issue);}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:13px 4px;border-bottom:1px solid var(--line);font-size:13.5px;}
.settings-row:last-child{border-bottom:none;}
.settings-row .sr-label{color:var(--ink-soft);}
code.inline{background:var(--accent-bg);color:var(--accent-deep);padding:2px 6px;border-radius:5px;font-family:'JetBrains Mono',monospace;font-size:12px;}

.footnote{font-size:11.5px;color:var(--ink-soft);margin-top:26px;padding-top:14px;border-top:1px solid var(--line);}
::-webkit-scrollbar{height:8px;width:8px;}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px;}

/* ---------- Global bar: property switcher + search (header) ---------- */
.global-bar{display:flex;align-items:center;gap:10px;padding:12px 0 14px;flex-wrap:wrap;border-top:1px solid rgba(255,255,255,0.08);margin-top:2px;}
.hdr-select{
  background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.16);color:#fff;
  padding:8px 11px;border-radius:9px;font-size:12.5px;font-weight:600;font-family:inherit;
  max-width:230px;
}
.hdr-select:focus{outline:none;border-color:var(--accent-light);}
.hdr-select option{color:var(--ink);}
.gsearch-wrap{position:relative;flex:1;min-width:180px;max-width:340px;}
.gsearch-input{
  width:100%;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.16);color:#fff;
  padding:8px 12px 8px 32px;border-radius:9px;font-size:12.5px;font-family:inherit;
}
.gsearch-input::placeholder{color:rgba(255,255,255,0.45);}
.gsearch-input:focus{outline:none;border-color:var(--accent-light);background:rgba(255,255,255,0.13);}
.gsearch-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);opacity:.55;pointer-events:none;}
.gsearch-icon svg{width:14px;height:14px;display:block;}
.gsearch-results{
  position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--panel);border-radius:var(--radius-md);
  box-shadow:var(--shadow-lift);padding:6px;display:none;z-index:50;max-height:360px;overflow-y:auto;
}
.gsearch-results.open{display:block;}
.gsearch-row{display:block;width:100%;text-align:left;background:none;border:none;padding:9px 11px;border-radius:8px;cursor:pointer;}
.gsearch-row:hover{background:var(--accent-bg);}
.gsearch-row .gr-title{font-size:13px;font-weight:600;color:var(--ink);}
.gsearch-row .gr-sub{font-size:11.5px;color:var(--ink-soft);margin-top:1px;}
.gsearch-empty{padding:12px;font-size:12.5px;color:var(--ink-soft);}
.scope-note{font-size:12px;color:var(--accent-deep);background:var(--accent-bg);padding:7px 12px;border-radius:9px;margin-bottom:16px;display:inline-flex;align-items:center;gap:7px;font-weight:600;}
.scope-note button{background:none;border:none;color:var(--accent-deep);text-decoration:underline;cursor:pointer;font-size:12px;font-family:inherit;font-weight:600;padding:0;}

.grid-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.grid-4{grid-template-columns:1fr;}}

/* ---------- Toolbars (search + filters above tables) ---------- */
.view-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 14px;}
.toolbar-search{position:relative;flex:1;min-width:170px;max-width:300px;}
.toolbar-search input{
  width:100%;padding:9px 12px 9px 32px;border-radius:9px;border:1.5px solid var(--line);
  font-size:13px;font-family:inherit;background:#fff;
}
.toolbar-search input:focus{outline:none;border-color:var(--accent);}
.toolbar-search svg{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;opacity:.4;}
.qf-row{display:flex;gap:6px;flex-wrap:wrap;}
.spacer{flex:1;}

/* ---------- Pagination ---------- */
.pager-bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px 4px 4px;}
.pager-info{font-size:12px;color:var(--ink-soft);margin-right:4px;}

/* ---------- Properties (portfolio) ---------- */
.property-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}
.property-card{
  background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px 20px;cursor:pointer;
  border:1.5px solid transparent;transition:box-shadow .15s, border-color .15s;
}
.property-card:hover{box-shadow:var(--shadow-lift);border-color:var(--accent-bg);}
.pc-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
.pc-name{font-family:'Fraunces',serif;font-weight:600;font-size:17px;margin:0;}
.pc-area{font-size:12px;color:var(--ink-soft);margin-top:2px;}
.pc-code{font-family:'JetBrains Mono',monospace;font-size:11px;background:var(--accent-bg);color:var(--accent-deep);padding:2px 8px;border-radius:20px;font-weight:700;flex:none;}
.pc-stats{display:flex;gap:16px;margin:14px 0 10px;}
.pc-stat b{font-family:'Fraunces',serif;font-size:19px;font-weight:600;display:block;}
.pc-stat span{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;}
.occ-track{height:7px;border-radius:6px;background:var(--line);overflow:hidden;margin:4px 0 8px;}
.occ-fill{height:100%;background:linear-gradient(90deg,var(--accent-light),var(--accent));border-radius:6px;}
.pc-foot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ink-soft);padding-top:10px;border-top:1px solid var(--line);}
.pc-manager b{color:var(--ink);}
.property-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:18px;}
.property-detail-head h2{margin-bottom:2px;}

/* ---------- Contacts / timeline ---------- */
.badge.muted{background:var(--line);color:var(--ink-soft);}
.badge.resident{background:var(--occupied-bg);color:var(--occupied);}
.badge.lead{background:var(--inspect-bg);color:var(--inspect);}
.contact-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px;}
.contact-avatar-row{display:flex;align-items:center;gap:12px;}
.contact-avatar{
  width:42px;height:42px;border-radius:50%;background:linear-gradient(145deg,var(--accent-light),var(--accent));
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:none;
  font-family:'Fraunces',serif;
}
.contact-flags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;}
.score-pill{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;}
.score-hot{background:var(--ready-bg);color:var(--ready);}
.score-warm{background:var(--inspect-bg);color:var(--inspect);}
.score-cold{background:var(--line);color:var(--ink-soft);}
.timeline{margin-top:4px;}
.timeline-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);}
.timeline-item:last-child{border-bottom:none;}
.ti-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:5px;flex:none;}
.ti-dot.tk{background:var(--inspect);}
.ti-dot.pay{background:var(--ready);}
.ti-dot.em{background:var(--accent);}
.ti-dot.nt{background:var(--ink-soft);}
.ti-body{flex:1;font-size:13px;}
.ti-title{font-weight:600;}
.ti-meta{font-size:11.5px;color:var(--ink-soft);margin-top:1px;}
.note-box{display:flex;gap:8px;margin-top:6px;}
.note-box textarea{flex:1;border-radius:10px;border:1.5px solid var(--line);padding:9px 10px;font-family:inherit;font-size:13px;resize:vertical;min-height:44px;}
.contact-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;margin-bottom:18px;}
.contact-info-grid .m-label{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);font-weight:700;margin-bottom:3px;}
.contact-info-grid .m-val{font-size:13.5px;font-weight:600;}

/* ---------- Tasks ---------- */
.task-group-head{font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin:22px 0 8px;}
.task-group-head:first-child{margin-top:0;}
.task-row{display:flex;align-items:flex-start;gap:12px;padding:12px 6px;border-bottom:1px solid var(--line);}
.task-row:last-child{border-bottom:none;}
.task-check{
  width:19px;height:19px;border-radius:6px;border:1.5px solid var(--line);flex:none;margin-top:1px;cursor:pointer;
  background:#fff;display:flex;align-items:center;justify-content:center;
}
.task-check.done{background:var(--ready);border-color:var(--ready);}
.task-check.done svg{display:block;width:12px;height:12px;}
.task-row.done .task-title{text-decoration:line-through;color:var(--ink-soft);}
.task-title{font-size:13.5px;font-weight:600;}
.task-sub{font-size:12px;color:var(--ink-soft);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap;}
.task-due{font-weight:700;}
.task-due.overdue{color:var(--issue);}
.task-due.today{color:var(--inspect);}

/* ---------- Automations ---------- */
.automation-card{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:12px;display:flex;align-items:center;gap:16px;}
.automation-main{flex:1;}
.automation-title{font-weight:600;font-size:14px;margin-bottom:3px;}
.automation-desc{font-size:12.5px;color:var(--ink-soft);}
.automation-flow{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--accent-deep);background:var(--accent-bg);padding:5px 9px;border-radius:7px;margin-top:8px;display:inline-block;}
.automation-stat{text-align:center;flex:none;}
.automation-stat b{font-family:'Fraunces',serif;font-size:20px;display:block;}
.automation-stat span{font-size:10.5px;color:var(--ink-soft);text-transform:uppercase;}
.switch{position:relative;display:inline-block;width:38px;height:22px;flex:none;}
.switch input{opacity:0;width:0;height:0;position:absolute;}
.switch .slider{position:absolute;cursor:pointer;inset:0;background:var(--line);transition:.15s;border-radius:22px;}
.switch .slider:before{content:'';position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;transition:.15s;border-radius:50%;box-shadow:0 1px 3px rgba(20,24,34,.25);}
.switch input:checked + .slider{background:var(--ready);}
.switch input:checked + .slider:before{transform:translateX(16px);}

/* ---------- Aging / arrears ---------- */
.aging-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;}
@media(max-width:700px){.aging-strip{grid-template-columns:repeat(2,1fr);}}
.aging-card{background:var(--panel);border-radius:var(--radius-md);box-shadow:var(--shadow);padding:14px 16px;text-align:center;}
.aging-card b{font-family:'Fraunces',serif;font-size:22px;display:block;}
.aging-card span{font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;}
.aging-card.b0{border-top:3px solid var(--ready);}
.aging-card.b30{border-top:3px solid var(--inspect);}
.aging-card.b60{border-top:3px solid #D9773F;}
.aging-card.b90{border-top:3px solid var(--issue);}

/* ---------- Inspections ---------- */
.insp-score{font-family:'Fraunces',serif;font-weight:600;font-size:15px;}

/* ---------- Direct Debit (GoCardless) ---------- */
.sim-banner{
  background:var(--accent-bg);color:var(--accent-deep);font-size:12.5px;font-weight:600;line-height:1.5;
  padding:11px 15px;border-radius:10px;margin-bottom:18px;display:flex;align-items:flex-start;gap:9px;
}
.sim-banner svg{width:16px;height:16px;flex:none;margin-top:1px;}


/* ==================== ROOMLINE OPERATIONS REFRESH ==================== */
:root{
  --bg:#f5f7fb;--ink:#111827;--ink-soft:#667085;--panel:#ffffff;--line:#e5e9f2;
  --accent:#5b5ce2;--accent-deep:#3738a6;--accent-light:#8b8cf1;--accent-bg:#eef0ff;
  --ready:#12956e;--ready-bg:#e3f7ef;--shadow:0 1px 2px rgba(17,24,39,.03),0 12px 30px rgba(17,24,39,.055);--shadow-lift:0 18px 48px rgba(17,24,39,.13);--radius-lg:20px;--radius-md:14px;
}
body{background:radial-gradient(1100px 500px at 5% -10%,rgba(91,92,226,.11),transparent 65%),radial-gradient(850px 420px at 100% 0%,rgba(18,149,110,.07),transparent 60%),var(--bg);}
#loginScreen{background:radial-gradient(900px 520px at 0% 0%,rgba(139,140,241,.28),transparent 60%),radial-gradient(800px 500px at 100% 100%,rgba(18,149,110,.18),transparent 60%),linear-gradient(145deg,#12162a,#090b13);}
.login-card{max-width:410px;border:1px solid rgba(255,255,255,.3);padding:38px 34px 30px;border-radius:24px;box-shadow:0 32px 90px rgba(0,0,0,.28);}
.login-mark{width:50px;height:50px;border-radius:15px;background:linear-gradient(145deg,#8b8cf1,#4d4fcf);box-shadow:0 10px 25px rgba(91,92,226,.28);}
.login-card h1{font-size:30px;letter-spacing:-.045em;}
.login-card p.sub{font-size:14px;margin-bottom:28px;}
.login-btn{border-radius:12px;background:linear-gradient(135deg,#7778eb,#4749c6);padding:13px;}
header.app-head{padding:18px 24px 0;background:linear-gradient(145deg,#171a30 0%,#101426 60%,#0a0d18 100%);box-shadow:0 12px 30px rgba(17,24,39,.18);}
.head-inner{max-width:1440px;}
.brand-row{padding-bottom:18px;}
.brand-mark{width:36px;height:36px;border-radius:12px;background:linear-gradient(145deg,#8b8cf1,#4d4fcf);}
.brand-name{font-size:21px;letter-spacing:-.03em;}.brand-tag{letter-spacing:.12em;font-size:9.5px;}
.user-chip{font-size:12.5px;}.logout-btn{border-radius:10px;padding:8px 13px;}
.tab-btn{padding:11px 13px 12px;font-size:13px;border-radius:10px 10px 0 0;}
.tab-btn.active{background:rgba(255,255,255,.09);}
.tab-btn.active::before{background:#a2a3ff;}
.global-bar{padding:14px 0 16px;}
.hdr-select,.gsearch-input{border-radius:11px;background:rgba(255,255,255,.09);}
main.content{max-width:1440px;padding:30px 24px 40px;}
h2.view-title{font-size:30px;letter-spacing:-.045em;margin-bottom:5px;}.view-sub{font-size:14px!important;}
.card,.list-card,.listing-card,.property-card,.feed-card,.event-card,.form-card,.automation-card,.aging-card{border:1px solid rgba(17,24,39,.06);box-shadow:var(--shadow);border-radius:var(--radius-lg);}
.card{padding:21px 22px;}
.stat-card{position:relative;overflow:hidden;}
.stat-card .stat-label{font-size:10.5px;letter-spacing:.1em;}.stat-card .stat-value{font-size:36px;letter-spacing:-.04em;position:relative;z-index:1;}
.section-head{margin:32px 0 12px;}.section-head h3{font-size:18px;letter-spacing:-.02em;}.section-head .count-pill{padding:4px 10px;}
table{font-size:13px;}table th{padding:11px 12px;font-size:10px;letter-spacing:.08em;}table td{padding:13px 12px;}
.badge{padding:4px 10px;font-size:10.5px;letter-spacing:.01em;}
.btn{border-radius:10px;background:linear-gradient(135deg,#7778eb,#4749c6);box-shadow:0 8px 18px rgba(91,92,226,.18);}.btn:hover{background:#3738a6;transform:translateY(-1px)}.btn.ghost{background:#fff;box-shadow:none;border-color:#dfe3ff;}
.room-tile{border-radius:14px;background:#fbfcff;padding:12px;border-color:#e2e6f2;}
.listing-photo{height:145px;background:linear-gradient(135deg,#eef0ff,#f8f9ff);}
.contract-item,.side-item{border-radius:12px;padding:12px 13px;}.contract-item.active,.side-item.active{box-shadow:inset 3px 0 var(--accent);}
.kanban-col{border:1px solid rgba(17,24,39,.06);box-shadow:var(--shadow);border-radius:18px;padding:14px;}.kanban-card{border-radius:12px;background:#fbfcff;}
.cal-day-cell.is-today{background:#eef0ff;}.cal-bar{border-radius:10px;}
.form-card{padding:22px;}.form-grid input,.form-grid select,.form-grid textarea,.field-block input,.field-block select,.field-block textarea{border-radius:11px;background:#fbfcff;}
.global-bar{border-top-color:rgba(255,255,255,.12);}
.gsearch-results{border:1px solid var(--line);}
@media(max-width:700px){header.app-head{padding-left:16px;padding-right:16px}main.content{padding:24px 16px 36px}.user-chip{display:none}.brand-row{padding-bottom:15px;flex-wrap:wrap;row-gap:10px}.user-row{flex-wrap:wrap;justify-content:flex-end}#propertyFilter{max-width:none;flex:1 1 100%;order:1}.global-bar{align-items:stretch}.gsearch-wrap{max-width:none;flex:1}.view-title{font-size:26px!important}}



/* ==================== DYNAMIC THEME CONTROLS ==================== */
html[data-theme="dark"] body{--bg:#101713;--bg-panel:#17231f;--ink:#f3f6f2;--ink-soft:#a7b5ad;--line:rgba(236,246,238,.13);--line-strong:rgba(236,246,238,.25);background:radial-gradient(900px 500px at 80% -10%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 65%),radial-gradient(700px 460px at -10% 25%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 65%),var(--bg);}
html[data-theme="dark"] select,html[data-theme="dark"] input{background:#101713;color:var(--ink);border-color:var(--line-strong);}
html[data-theme="dark"] .btn-ghost{color:var(--ink);background:transparent;border-color:var(--line-strong);}
html[data-theme="dark"] .modal-scrim{background:rgba(0,0,0,.68);}
html[data-theme="dark"] .chip{background:var(--bg-panel);color:var(--ink-soft);border-color:var(--line-strong);}
html[data-theme="dark"] .chip.active{color:#fff;}
html[data-theme="dark"] #themePanel,.theme-panel{color:var(--ink);}
.theme-tools{display:inline-flex;align-items:center;gap:8px;}
.theme-toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line-strong);background:rgba(255,255,255,.42);color:var(--ink);border-radius:999px;padding:8px 12px;font:600 12px Inter,sans-serif;cursor:pointer;}
.theme-toggle:hover{border-color:var(--accent);transform:translateY(-1px);}
.theme-toggle .theme-icon{font-size:14px;line-height:1;}
.theme-customize{border:1px solid var(--line-strong);background:transparent;color:var(--ink);width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:16px;}
.theme-customize:hover{background:color-mix(in srgb,var(--accent) 11%,transparent);}
.theme-panel{position:fixed;right:20px;top:92px;width:286px;z-index:120;background:var(--bg-panel,#fff);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 22px 60px rgba(0,0,0,.18);display:none;}
.theme-panel.open{display:block;animation:theme-panel-in .18s ease-out;}
@keyframes theme-panel-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.theme-panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.theme-panel-head strong{font-size:13px;letter-spacing:-.01em;}.theme-panel-close{border:0;background:none;color:var(--ink-soft);font-size:18px;cursor:pointer;}
.theme-control{margin-top:14px;}.theme-control label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:8px;}
.theme-control input[type=color]{width:100%;height:38px;padding:3px;border:1px solid var(--line-strong);border-radius:10px;background:transparent;cursor:pointer;}
.theme-presets{display:flex;gap:8px;flex-wrap:wrap;}.theme-preset{width:27px;height:27px;border-radius:50%;border:2px solid transparent;cursor:pointer;box-shadow:0 0 0 1px var(--line-strong);}.theme-preset.active{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg-panel),0 0 0 4px var(--accent);}
.theme-reset{width:100%;margin-top:16px;border:1px solid var(--line-strong);background:transparent;color:var(--ink);border-radius:10px;padding:9px;font:600 12px Inter,sans-serif;cursor:pointer;}
@media(max-width:560px){.theme-panel{right:12px;left:12px;top:80px;width:auto}.theme-toggle .theme-label{display:none}.theme-tools{gap:5px}}

/* RoomLine-specific dark surfaces and control styling */
html[data-theme="dark"] #app{--bg:#0f1420;--ink:#f3f5ff;--ink-soft:#9da8bd;--panel:#171e2d;--line:#2a3347;--accent-bg:#252a57;--accent-deep:#aeb2ff;background:radial-gradient(900px 460px at 5% -10%,rgba(91,92,226,.22),transparent 65%),var(--bg);}
html[data-theme="dark"] #app .card,html[data-theme="dark"] #app .list-card,html[data-theme="dark"] #app .property-card,html[data-theme="dark"] #app .listing-card,html[data-theme="dark"] #app .feed-card,html[data-theme="dark"] #app .event-card,html[data-theme="dark"] #app .form-card,html[data-theme="dark"] #app .automation-card,html[data-theme="dark"] #app .aging-card{background:var(--panel);border-color:var(--line);}
html[data-theme="dark"] #app table td,html[data-theme="dark"] #app table th{border-color:var(--line);}
html[data-theme="dark"] #app input,html[data-theme="dark"] #app select,html[data-theme="dark"] #app textarea,html[data-theme="dark"] #app .room-tile,html[data-theme="dark"] #app .kanban-card,html[data-theme="dark"] #app .listing-offer{background:#111827;color:var(--ink);border-color:var(--line);}
html[data-theme="dark"] #app .modal-error{background:#2a1417;border-color:#6b2b30;color:#ff9ea3;}
html[data-theme="dark"] #app .btn.danger{background:transparent;color:#ff9ea3;border-color:#6b2b30;}
html[data-theme="dark"] #app .btn.danger:hover{background:#2a1417;}
html[data-theme="dark"] #app .btn.ghost,html[data-theme="dark"] #app .theme-toggle{background:transparent;color:var(--ink);border-color:var(--line);}
html[data-theme="dark"] #app .theme-panel{background:#171e2d;border-color:var(--line);}

