:root{--azure:#0b6bcb;--azure-dk:#0a549e;--azure-deep:#093a6b;--ink:#0f2438;--panel:#eef4fb;--grey:#69788a;--line:#dbe4ef;--green:#137333;--red:#c5221f}*{box-sizing:border-box}.connbar{z-index:2000;text-align:center;padding:8px 12px;font-size:13px;font-weight:600;position:sticky;top:0}.connbar.off{color:#8a1111;background:#fde7e9;border-bottom:1px solid #f3c0c0}.connbar.on{color:#137333;background:#e6f4ea;border-bottom:1px solid #bfe3c9}body{color:var(--ink);background:#fff;margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif}.center{place-items:center;min-height:100vh;padding:20px;display:grid}.muted{color:var(--grey)}.small{font-size:13px}.error{color:#8a1111;background:#fde7e9;border-radius:8px;padding:8px 10px;font-size:14px}.ok{color:var(--green);background:#e6f4ea;border-radius:8px;padding:8px 10px;font-size:14px}.pre{white-space:pre-line}.brand{color:var(--ink);letter-spacing:-.3px;font-size:22px;font-weight:800}.brand span{color:var(--azure)}input,button,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:9px;outline:none;padding:10px 12px}textarea,select{width:100%}input:focus,select:focus,textarea:focus{border-color:var(--azure);box-shadow:0 0 0 3px #0b6bcb1f}button{cursor:pointer;border:none;border-radius:9px;padding:10px 14px}button.primary{background:var(--azure);color:#fff;font-weight:600}button.primary:hover{background:var(--azure-dk)}button.primary:disabled{opacity:.6;cursor:default}button.ghost{color:var(--ink);border:1px solid var(--line);background:0 0}button.ghost:hover{background:var(--panel)}button.ghost.danger{color:var(--red);border-color:#f3c0c0}button.ghost.danger:hover{background:#fde7e9}a{color:var(--azure);cursor:pointer;text-decoration:none}a:hover{text-decoration:underline}.card{border:1px solid var(--line);background:#fff;border-radius:16px;padding:24px;box-shadow:0 10px 36px #0f243814}.card.stack{flex-direction:column;gap:12px;margin-bottom:20px;display:flex}.auth-card{flex-direction:column;gap:12px;width:340px;display:flex}.app{min-height:100vh}.topbar{background:linear-gradient(90deg, var(--azure-deep), var(--azure-dk));color:#fff;align-items:center;gap:14px;padding:14px 22px;display:flex}.topbar .brand{color:#fff}.topbar .brand span{color:#bfe0ff}.topbar .spacer{flex:1}.topbar .biz{opacity:.95;font-weight:600}.topbar button.ghost{color:#fff;border-color:#ffffff80}.topbar button.ghost:hover{background:#ffffff1f}.topbar .cog{color:#fff;background:0 0;border:none;border-radius:9px;place-items:center;padding:7px;transition:background .12s,transform .12s;display:grid}.topbar .cog:hover{background:#ffffff24}.topbar .cog:active{transform:scale(.92)}.topbar .cog.active{background:#ffffff38}.tabs{border-bottom:1px solid var(--line);gap:6px;padding:10px 18px 0;display:flex}.tabs button{color:var(--grey);background:0 0;border-bottom:3px solid #0000;border-radius:0;padding:10px 14px;font-weight:600}.tabs button.active{color:var(--ink);border-bottom-color:var(--azure)}.tab-badge{text-align:center;color:#fff;background:var(--red);vertical-align:middle;border-radius:999px;min-width:18px;height:18px;margin-left:6px;padding:0 5px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.content{max-width:940px;margin:0 auto;padding:24px 18px}h2{margin:0 0 16px}h3{margin:0 0 10px}.row{align-items:center;display:flex}.gap{gap:10px}.row.gap>input,.row.gap>.field{flex:1}.row.spread{justify-content:space-between}.field{flex-direction:column;gap:6px;display:flex}.field.grow{flex:1}.field>span{color:var(--grey);font-size:13px;font-weight:600}.sec-label{color:var(--ink);margin-top:6px;font-weight:700}.label{text-transform:uppercase;letter-spacing:.06em;color:var(--grey);margin-bottom:4px;font-size:11px;font-weight:700}table.grid{border-collapse:collapse;width:100%;margin-top:12px}table.grid th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--grey);border-bottom:1px solid var(--line);padding:8px;font-size:12px}table.grid td{border-bottom:1px solid var(--line);padding:10px 8px}.right{text-align:right}.tc{text-align:center}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--panel)}.rowacts{text-align:right;white-space:nowrap}button.link{color:var(--azure);background:0 0;padding:4px 8px;font-size:14px}button.link:hover{text-decoration:underline}button.link.danger{color:var(--red)}table.grid.lines td{padding:6px 4px}table.grid.lines input{padding:7px 8px}input.num{text-align:right}.iconbtn{color:var(--grey);background:0 0;padding:6px 8px}.iconbtn:hover{color:var(--azure)}.totals{width:280px;margin:14px 0 6px auto}.totals .trow{color:var(--grey);justify-content:space-between;align-items:center;padding:4px 0;display:flex}.totals input.vat{text-align:right;width:60px;margin:0 4px;padding:4px 6px}.totals .grand{border-top:2px solid var(--azure);justify-content:space-between;padding-top:8px;font-size:18px;display:flex}.totals .grand b{color:var(--azure)}.pill{color:#fff;text-transform:capitalize;border-radius:999px;padding:3px 10px;font-size:12px}.pill.occupied{background:var(--green)}.pill.unoccupied,.pill.draft,.pill.status-draft{background:var(--grey)}.pill.sent,.pill.status-sent{background:var(--azure)}.pill.status-po_received{background:#7c3aed}.pill.status-payments{background:#b7791f}.pill.paid,.pill.status-paid{background:var(--green)}.pill.void,.pill.status-void{background:var(--red)}.pill.archived{background:#7a5b10}.pill.hmo{text-transform:none;background:#0f766e}.statussel{margin-top:4px;padding:2px 4px;font-size:12px;display:block}.stats{flex-wrap:wrap;gap:10px;margin:6px 0;display:flex}.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;flex:1;min-width:130px;padding:12px 16px}.stat .k{text-transform:uppercase;letter-spacing:.05em;color:var(--grey);font-size:11px;font-weight:700}.stat .v{margin-top:2px;font-size:22px;font-weight:800}.stat.hl{background:#eaf3ff;border-color:#bbd9f7}.stat.hl .v{color:var(--azure)}.stat.danger{background:#fde7e9;border-color:#f3c0c0}.stat.danger .v{color:var(--red)}.section{margin:26px 0}.subtabs{gap:6px;margin:10px 0 2px;display:flex}.subtabs button{color:var(--grey);border:1px solid var(--line);background:0 0;border-radius:999px;padding:5px 14px;font-size:13px;font-weight:600}.subtabs button.active{color:#fff;background:var(--azure);border-color:var(--azure)}.backlink{margin-bottom:12px}.check{cursor:pointer;align-items:flex-start;gap:8px;font-size:14px;display:flex}.check input{width:auto;margin-top:3px}.panel{border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:12px}.tenant-chip{background:var(--panel);border:1px solid var(--line);border-radius:999px;margin:2px 4px 2px 0;padding:3px 10px;font-size:13px;display:inline-block}.cal{border:1px solid var(--line);border-radius:10px;width:232px;padding:10px}.cal-head{justify-content:space-between;align-items:center;margin-bottom:6px;font-size:13px;font-weight:600;display:flex}.cal-nav{cursor:pointer;color:var(--azure);background:0 0;border:none;padding:0 8px;font-size:18px;line-height:1}.cal-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-dow{text-align:center;color:var(--grey);padding-bottom:2px;font-size:10px;font-weight:700}.cal-day{text-align:center;color:var(--ink);border-radius:5px;padding:4px 0;font-size:11px}.cal-day.on{color:#0f5132;background:#d6f0dd;font-weight:700}.cal-day.away{color:#9a1b1b;background:#fbe0e0;font-weight:700;text-decoration:line-through}.cal-day.added{color:#7a5b10;background:#fdf1c9;border:1px solid #e6cf7a;font-weight:700}.cal-day.tap{cursor:pointer}.cal-day.tap:hover{outline:2px solid var(--azure);outline-offset:-2px}.cal-foot{margin-top:6px}.cal-legend{align-items:center;gap:5px;margin-top:5px;display:flex}.cal-legend .dot{border-radius:3px;width:10px;height:10px;display:inline-block}.cal-legend .dot.on{background:#d6f0dd;border:1px solid #9cccab}.cal-legend .dot.away{background:#fbe0e0;border:1px solid #e0a3a3}.cal-legend .dot.added{background:#fdf1c9;border:1px solid #e6cf7a}.cal-legend .dot.vacant{border:1px solid var(--line);background:#fff}.splash{z-index:1000;background:linear-gradient(135deg, var(--azure-deep), var(--azure));color:#fff;place-items:center;animation:.4s splashfade;display:grid;position:fixed;inset:0}.splash-inner{text-align:center}.splash-brand{letter-spacing:-.5px;font-size:46px;font-weight:800}.splash-brand span{color:#bfe0ff}.splash-tag{opacity:.9;margin-top:6px}.splash-spinner{border:3px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:34px;height:34px;margin:26px auto 0;animation:.8s linear infinite spin}.splash-credit{opacity:.85;margin-top:30px;font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes splashfade{0%{opacity:0}to{opacity:1}}.launcher{color:#fff;background:radial-gradient(circle at 30% 18%,#2367ad,#0a549e 55%,#072d54);flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:100vh;display:flex;position:relative}.app-icon{cursor:pointer;background:linear-gradient(150deg,#3d97ea,#0b6bcb 55%,#0a549e);border:none;border-radius:23px;place-items:center;width:96px;height:96px;padding:0;transition:transform .12s,box-shadow .12s;display:grid;box-shadow:0 14px 34px #00000061,inset 0 1px #ffffff47}.app-icon:hover{transform:translateY(-3px)scale(1.03);box-shadow:0 18px 40px #0000006b}.app-icon:active{transform:scale(.95)}.app-label{text-shadow:0 1px 3px #00000059;font-size:15px;font-weight:600}.launcher-hint{opacity:.8;font-size:13px;animation:2s ease-in-out infinite hintpulse}.launcher-credit{opacity:.65;font-size:12px;position:absolute;bottom:26px}@keyframes hintpulse{0%,to{opacity:.45}50%{opacity:.9}}@media screen and (width<=640px){.content{padding:16px 12px}h2{font-size:20px}.topbar{gap:10px;padding:12px 14px}.topbar .biz{display:none}.tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap;flex:none}.row.gap{flex-wrap:wrap}.row.gap>.field,.row.gap>input{flex-basis:100%}.auth-card,.totals{width:100%}table.grid{white-space:nowrap;display:block;overflow-x:auto}.stat{flex:calc(50% - 5px);min-width:0}.stat .k,.stat .v,.stat .sub{overflow-wrap:break-word}}
