:root{--bg:#f6f5f2;--surface:#ffffff;--ink:#1e2229;--muted:#68707c;--line:#e3e1db;--accent:#8b1e1e;--accent-ink:#ffffff;--good:#1c7a3d;--bad:#b02a2a;--warn:#9a6700;--radius:8px;font-size:15px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.45}a{color:#1d6fe0;text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;min-height:100vh}.sidebar{width:200px;flex-shrink:0;background:#23262d;color:#cfd3da;padding:16px 0;display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:0;height:100vh}.sidebar .brand{color:#fff;font-weight:700;font-size:1.05rem;padding:4px 18px 14px;letter-spacing:.3px}.sidebar .brand span{color:#e0655a}.sidebar a{color:#cfd3da;padding:8px 18px;display:block;font-size:.95rem}.sidebar a:hover{background:#2d313a;text-decoration:none;color:#fff}.sidebar a.active{background:var(--accent);color:#fff}.sidebar .foot{margin-top:auto;padding:10px 18px;font-size:.8rem;color:#8a919d}.main{flex:1 1;padding:24px 32px 64px;max-width:1280px}h1{font-size:1.45rem;margin:0 0 4px}h2{font-size:1.1rem;margin:24px 0 8px}.sub{color:var(--muted);margin:0 0 18px;font-size:.93rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;margin-bottom:16px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:12px;gap:12px;margin-bottom:20px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}.stat .label{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.stat .value{font-size:1.35rem;font-weight:650;margin-top:2px}table{border-collapse:collapse;width:100%;font-size:.92rem}td,th{text-align:left;padding:6px 10px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.4px}td.num,th,th.num{white-space:nowrap}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tr.total td{font-weight:700;border-top:2px solid var(--ink)}.neg{color:var(--bad)}.pos{color:var(--good)}.muted{color:var(--muted)}.small{font-size:.85rem}.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.75rem;font-weight:600}.badge.active{background:#e2f2e7;color:var(--good)}.badge.m2m{background:#e7ecf7;color:#29508f}.badge.expired{background:#f7e5e5;color:var(--bad)}.badge.upcoming{background:#fdf3d7;color:var(--warn)}.badge.ended,.badge.vacant{background:#ececec;color:var(--muted)}.badge.paid{background:#e2f2e7;color:var(--good)}.badge.pending{background:#fdf3d7;color:var(--warn)}.badge.partial{background:#fde7d7;color:#a04b12}form.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}label.field{display:flex;flex-direction:column;gap:3px;font-size:.8rem;color:var(--muted)}input,select,textarea{font:inherit;padding:6px 9px;border:1px solid #c9c7c0;border-radius:6px;background:#fff;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid #c98282;border-color:var(--accent)}input[type=number]{text-align:right}.btn,button{font:inherit;font-weight:600;padding:7px 14px;border-radius:6px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);cursor:pointer}.btn:hover,button:hover{filter:brightness(1.1);text-decoration:none}.btn.secondary,button.secondary{background:#fff;color:var(--accent)}button.small{padding:3px 10px;font-size:.85rem}.rentgrid input[type=number]{width:100px}.rentgrid input[type=text]{width:100%}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-box{width:340px}.flash{background:#fdf3d7;border:1px solid #ecd9a0;padding:8px 12px;border-radius:6px;margin-bottom:12px;font-size:.9rem}.gridbar{display:flex;gap:10px;align-items:flex-end;margin-bottom:14px;flex-wrap:wrap}.matrix td,.matrix th{padding:5px 7px;font-size:.85rem}.barchart{display:flex;gap:4px;align-items:flex-end;height:120px;margin:8px 0 4px}.barchart .bar{flex:1 1;background:var(--accent);opacity:.85;border-radius:2px 2px 0 0;min-height:1px}.barchart .bar.negative{background:var(--bad)}.tabbar{display:flex;gap:4px;flex-wrap:wrap;position:-webkit-sticky;position:sticky;top:0;z-index:10;background:var(--bg);padding:8px 0;border-bottom:2px solid var(--line);margin-bottom:8px}.tab{padding:6px 14px;border-radius:6px 6px 0 0;font-weight:600;font-size:.92rem;color:var(--muted);border:1px solid transparent}.tab:hover{text-decoration:none;background:#eceae5}.tab.on{background:var(--accent);color:#fff}.seclabel{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px}.leasehead .unitname{font-size:1.25rem;font-weight:700}.leasehead .dates{font-size:1rem;color:var(--ink);margin-top:2px}.leasehead .rent{font-size:1.5rem;font-weight:700}.leasehead .rent-future{font-size:1rem;color:var(--good)}.badge.lg{font-size:.9rem;padding:3px 12px;border-radius:12px}.cards.tight{grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:8px}.cards.tight .stat{padding:8px 10px}.cards.tight .value{font-size:1.1rem}.cards.tight .label{font-size:.68rem}.notebox{background:#fbfaf7;border:1px solid var(--line);border-radius:6px;padding:6px 10px;margin-top:6px;font-size:.88rem;white-space:pre-wrap}textarea{width:100%;min-height:2.9em;resize:vertical}label.field textarea{min-width:180px}tr.hl-late td,tr.hl-unpaid td,tr.hl-vacant td{background:#f9e3e3}tr.hl-paid td{background:#e6f4ea}td.hl-col,th.hl-col{background:#eef4fd}th.hl-col{border-bottom:2px solid #1d6fe0}@media (max-width:760px){.shell{flex-direction:column}.sidebar{width:100%;height:auto;position:-webkit-sticky;position:sticky;top:0;z-index:30;flex-direction:row;align-items:center;gap:0;padding:4px 6px;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch}.sidebar .brand{padding:6px 10px;font-size:1rem;flex-shrink:0}.sidebar a{padding:8px 12px;flex-shrink:0}.sidebar .foot{margin:0;padding:6px 10px;flex-shrink:0}.main{padding:14px 14px 48px;max-width:100%}h1{font-size:1.25rem}h2{font-size:1.02rem}.tabbar{position:static;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.tab{flex-shrink:0}.cards,.cards.tight{grid-template-columns:repeat(2,1fr)}form.inline{gap:8px}form.inline label.field{width:100%;min-width:0!important;flex:none!important}form.inline input:not([type=checkbox]),form.inline select,form.inline textarea{width:100%!important}input,select,textarea{font-size:16px}.card{overflow-x:auto}.rentgrid>table thead{display:none}.rentgrid>table,.rentgrid>table tbody,.rentgrid>table td,.rentgrid>table tr{display:block;width:100%}.rentgrid>table tr{border:1px solid var(--line);border-radius:8px;margin-bottom:10px;padding:8px 10px}.rentgrid>table td{border:none;padding:3px 0;text-align:left!important;white-space:normal}.rentgrid>table td.num{text-align:left}.rentgrid>table td[data-label=Tenant]{max-width:none!important;overflow:visible!important;white-space:normal!important}.rentgrid>table td[data-label]:before{content:attr(data-label) ": ";font-weight:600;color:var(--muted);text-transform:uppercase;font-size:.7rem;letter-spacing:.4px;margin-right:6px}.rentgrid>table td[data-label=Edit] a{display:inline-block;margin-top:4px;padding:6px 14px;border:1px solid var(--accent);border-radius:6px;font-weight:600}.rentgrid>table td[data-label=Edit] a:hover{text-decoration:none}}.lease-collapse{margin-bottom:8px}.lease-summary{cursor:pointer;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.lease-summary:hover{background:#faf9f6}.lease-summary::-webkit-details-marker{display:none}.lease-summary .u{font-size:1.05rem}.lease-summary .r{margin-left:auto;font-weight:700;white-space:nowrap}.lease-summary .caret{color:var(--muted);transition:transform .15s}details[open]>.lease-summary .caret{transform:rotate(90deg)}details[open]>.lease-summary{border-bottom-left-radius:0;border-bottom-right-radius:0}.lease-collapse>.card{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}