:root{--bg:#F4F6F8;--card:#fff;--line:#DFE5EB;--line2:#EDF1F4;--line3:#C5CED8;--text:#16202A;--muted:#5B6875;
--primary:#1F4E79;--primary-dark:#163A5C;--out:#E08A3C;--warn:#9A3412;--warn-bg:#FDEBDD;--info:#1F4E79;--info-bg:#E6EEF7;
--neutral:#3D4A57;--neutral-bg:#EDF1F4;--nav:#14263A;--nav-active:#24486B;--nav-text:#DCE4EC}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:14px;line-height:1.45}
a{color:var(--primary)}a:hover{color:var(--primary-dark)}
.shell{display:flex;flex-wrap:wrap;min-height:100vh}
.side{flex:1 1 220px;max-width:260px;background:var(--nav);padding:24px 16px;display:flex;flex-direction:column;gap:4px}
.brand{font-size:18px;font-weight:700;color:#fff;padding:0 12px 2px}
.brand-sub{font-size:12px;color:#B8C4D0;padding:0 12px 20px}
.side a{display:block;padding:12px;border-radius:8px;color:var(--nav-text);text-decoration:none;font-weight:500}
.side a.active{background:var(--nav-active);color:#fff;font-weight:600}
.side-foot{margin-top:auto;padding:16px 12px 0}
.side-btn{min-height:44px;width:100%;border-radius:8px;border:1px solid #3a5878;background:transparent;color:var(--nav-text);font:inherit;cursor:pointer}
.side-btn:hover{background:var(--nav-active)}
.side-note{font-size:12px;color:#B8C4D0;margin-top:8px}
.main{flex:999 1 560px;min-width:0;padding:28px 32px 48px;display:flex;flex-direction:column;gap:20px;outline:none}
h1{margin:0;font-size:26px;font-weight:700}
h2{margin:0;font-size:16px;font-weight:600}
h3{margin:16px 0 6px;font-size:14px;font-weight:600}
.muted{color:var(--muted)}
.head{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:flex-end}
.head .sub{color:var(--muted);margin-top:4px}
.row{display:flex;flex-wrap:wrap;gap:20px;align-items:stretch}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px;min-width:0}
.card.pad-s{padding:18px 20px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.kpis.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpi-l{color:var(--muted);font-size:13px}
.kpi-v{font-size:28px;font-weight:700;margin-top:6px}
.kpi-v small{font-size:15px;font-weight:500;color:var(--muted)}
.kpi-w{color:var(--warn);font-size:13px;font-weight:600;margin-top:2px}
.btn{min-height:44px;padding:0 16px;border-radius:8px;border:1px solid var(--line3);background:#fff;color:var(--text);font:inherit;font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:8px;text-decoration:none}
.btn:hover{background:var(--bg)}
.btn.primary,.btn[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.btn.primary:hover,.btn[aria-pressed=true]:hover{background:var(--primary-dark)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btns{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-block;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}
.chip.info{background:var(--info-bg);color:var(--info)}.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.neutral{background:var(--neutral-bg);color:var(--neutral)}
.li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line2)}
.li .t{font-weight:600}.li .s{font-size:12px;color:var(--muted)}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.scroll{overflow-x:auto;margin-top:12px}
table{width:100%;border-collapse:collapse}
th,td{padding:10px 8px;text-align:left;vertical-align:top}
thead th{color:var(--muted);font-size:12px;font-weight:600;border-bottom:1px solid var(--line)}
tbody tr{border-top:1px solid var(--line2)}
tbody th{font-weight:600}
td.num,th.num{text-align:right;white-space:nowrap}
tr.total{border-top:2px solid var(--line3)}tr.total th,tr.total td{font-weight:700}
tr.sel{background:var(--info-bg)}
.neg{color:var(--warn)}.pos{color:var(--primary)}
.legend{display:flex;gap:16px;font-size:13px;color:var(--muted)}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.chart{display:grid;gap:10px;align-items:end;height:200px;margin-top:20px;border-bottom:1px solid var(--line)}
.bars{display:flex;gap:3px;align-items:flex-end;justify-content:center;height:100%}
.bar{width:14px;border-radius:3px 3px 0 0;min-height:1px}
.xl{display:grid;gap:10px;margin-top:8px;font-size:12px;color:var(--muted);text-align:center}
.filters{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}
.field{display:flex;flex-direction:column;gap:6px;min-width:160px;flex:1 1 160px}
.field label,.lab{font-size:13px;font-weight:600}
input[type=text],input[type=search],input[type=date],select,textarea{min-height:44px;padding:8px 12px;border:1px solid var(--line3);border-radius:8px;background:#fff;color:var(--text);font:inherit;width:100%}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus,.btn:focus-visible,a:focus-visible{outline:2px solid var(--primary);outline-offset:1px}
.seg{display:flex;flex-wrap:wrap;gap:8px}
fieldset{border:0;padding:0;margin:0}legend{font-weight:600;padding:0;margin-bottom:6px}
.radio{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-right:16px}
.radio input{width:20px;height:20px}
.formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:16px}
.formgrid .wide{grid-column:1/-1}
.lab-row{display:flex;justify-content:space-between;align-items:center;gap:8px}
.rec{min-height:36px;padding:0 12px}
.rec[aria-pressed=true]{background:var(--warn);border-color:var(--warn)}
.hint{font-size:12px;color:var(--muted);margin-top:6px}
.note{background:var(--info-bg);color:var(--info);border-radius:8px;padding:10px 14px;font-size:13px}
.note.warn{background:var(--warn-bg);color:var(--warn)}
.crumb{font-size:13px}
dl{margin:12px 0 0}dl>div{display:flex;gap:12px;padding:9px 0;border-top:1px solid var(--line2)}
dt{width:140px;flex:none;color:var(--muted)}dd{margin:0;min-width:0;overflow-wrap:anywhere}
ul.plain{list-style:none;margin:12px 0 0;padding:0}
ul.plain li{padding:10px 0;border-top:1px solid var(--line2)}
ol.tl{margin:12px 0 0;padding:0 0 0 18px}ol.tl li{padding:6px 0}
.bar-row{margin-top:12px}.bar-row .n{display:flex;justify-content:space-between;gap:8px}
.track{height:8px;background:var(--neutral-bg);border-radius:4px;margin-top:4px}.track>div{height:8px;border-radius:4px;background:var(--out)}
.tabs{display:flex;flex-wrap:wrap;gap:8px}
a.cell{color:inherit;text-decoration:none;border-bottom:1px dotted var(--line3)}a.cell:hover{color:var(--primary)}
.err{background:var(--warn-bg);color:var(--warn);border-radius:12px;padding:20px}
@media (max-width:900px){.side{max-width:none;flex-basis:100%;flex-direction:row;flex-wrap:wrap;padding:12px}.brand,.brand-sub{width:100%;padding:0 12px}.brand-sub{padding-bottom:8px}.side-foot{margin:0;padding:0;flex:1 1 140px}.main{padding:20px 16px 40px;flex-basis:100%}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpis.three{grid-template-columns:1fr}}
@media print{.side,.no-print,.btn{display:none!important}.main{padding:0}.card{border:0;padding:0}body{background:#fff}}

.xl .mnet{display:block;font-size:11px;font-weight:600;margin-top:2px}.xl .mnet.pos{color:#1F6B3A}.xl .mnet.neg{color:#9A3412}

.note.ok{background:#E7F3EC;color:#1F6B3A;border-color:#BFDCC9}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Dad's login: read-only, his buildings only (the server enforces this; this just tidies the screens) */
.role-dad [data-nav="rentroll"], .role-dad [data-nav="tenants"], .role-dad [data-owner], .role-dad #rp-owner, .role-dad label[for="rp-owner"],
.role-dad [data-edit], .role-dad #add-item, .role-dad #goAdd, .role-dad .oi-done, .role-dad #rv, .role-dad #dad-email { display: none !important; }
