:root{--bg:#f6f7f9;--card:#fff;--fg:#1a1d21;--muted:#6b7280;--border:#e3e6ea;--accent:#2563eb;--accent-fg:#fff;--total-bg:#f0f4ff;--warn:#b45309;--err:#b91c1c;--viz-surface:#fff;--viz-grid:#e1e0d9;--viz-axis:#c3c2b7;--viz-ink:#0b0b0b;--viz-ink-2:#52514e;--viz-ink-muted:#898781}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}h1{margin:0 0 4px;font-size:1.5rem}h2{margin:0;font-size:1.15rem}h3{margin:0 0 2px;font-size:.95rem}.sub{color:var(--muted);margin:0 0 24px}.navbar{z-index:20;background:var(--card);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px 24px;min-height:56px;padding:0 clamp(16px,2.5vw,40px);display:flex;position:sticky;top:0}.navbar .brand{color:var(--fg);white-space:nowrap;font-weight:700;text-decoration:none}.navbar nav{scrollbar-width:none;flex:1;align-items:stretch;gap:2px;display:flex;overflow-x:auto}.navbar nav a{min-height:56px;color:var(--muted);white-space:nowrap;border-bottom:3px solid #0000;align-items:center;padding:0 11px;font-size:.92rem;font-weight:600;text-decoration:none;display:flex}.navbar nav a:hover{color:var(--fg)}.navbar nav a.active{color:var(--accent);border-bottom-color:var(--accent)}.navbar nav .sep{background:var(--border);width:1px;margin:14px 10px}.navbar-right{align-items:center;gap:14px;margin-left:auto;display:flex}.navbar-right .who{color:var(--muted);font-size:.88rem;text-decoration:none}.navbar-right a.who:hover,.navbar-right a.who.active{color:var(--accent);text-decoration:underline}.meter-pick{align-items:center;gap:8px;display:flex}.meter-pick span{font-size:.8rem}.meter-pick select{min-width:110px;padding:6px 8px}.linkbtn{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:.9rem;font-weight:600}.linkbtn:hover{text-decoration:underline}.page{width:100%;padding:24px clamp(16px,2.5vw,40px) 64px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px 24px;margin-bottom:20px;display:flex}.toolbar h2{margin-right:auto;font-size:1.35rem}.cols{grid-template-columns:repeat(auto-fit,minmax(min(100%,520px),1fr));gap:20px;display:grid}.cols>.card{margin-bottom:0}.cols+.card,.card+.cols{margin-top:20px}.loading{opacity:.5;transition:opacity .15s}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-bottom:20px;padding:20px 24px;box-shadow:0 1px 2px #0f172a0a}.controls{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.field{flex-direction:column;gap:4px;display:flex}label{color:var(--muted);font-size:.8rem;font-weight:600}select,input,textarea{border:1px solid var(--border);background:var(--card);color:var(--fg);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:.95rem}select,input[type=month],input[type=date]{min-width:150px}button{background:var(--accent);color:var(--accent-fg);cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-size:.95rem;font-weight:600}button.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}button.icon{padding:9px 12px}button:disabled{opacity:.5;cursor:default}table{border-collapse:collapse;width:100%}th,td{text-align:right;border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;padding:9px 8px}th:first-child,td:first-child{text-align:left;font-variant-numeric:normal}thead th{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-size:.76rem}tr.total td{background:var(--total-bg);border-bottom:none;font-weight:700}.meta{color:var(--muted);margin-top:14px;font-size:.82rem}.warn{color:var(--warn)}.error{color:var(--err);font-weight:600}.badge{color:#3730a3;background:#eef2ff;border-radius:999px;padding:1px 8px;font-size:.8rem;display:inline-block}.grid2{grid-template-columns:1fr 1fr;gap:12px;display:grid}details>summary{cursor:pointer;font-weight:600}.tiles{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:20px;display:grid}.tile{flex-direction:column;gap:2px;display:flex}.tile .tile-label{color:var(--muted);font-size:.8rem;font-weight:600}.tile .tile-value{color:var(--viz-ink);white-space:nowrap;font-size:1.5rem;font-weight:600;line-height:1.2}.tile .tile-value.hero{font-size:2.1rem}.tile .tile-note{color:var(--muted);font-size:.78rem}.viz{position:relative}.viz-empty{color:var(--muted);padding:28px 4px;font-size:.88rem}.viz-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.viz-legend{color:var(--viz-ink-2);flex-wrap:wrap;gap:14px;min-height:1px;font-size:.82rem;display:flex}.viz-legend span.key{align-items:center;gap:6px;display:inline-flex}.viz-legend i{border-radius:3px;width:12px;height:12px;display:inline-block}.viz-legend i.line{border-radius:2px;height:3px}.hint{color:var(--muted);margin:0 0 10px;font-size:.8rem}.viz-tip{background:var(--viz-surface);color:var(--viz-ink-2);border:1px solid #0b0b0b1a;border-radius:8px;max-width:300px;padding:8px 10px;font-size:.82rem;box-shadow:0 4px 16px #0b0b0b1f}.viz-tip .tip-title{color:var(--viz-ink-2);margin-bottom:4px;font-size:.78rem}.viz-tip .tip-row{align-items:center;gap:6px;margin-top:2px;display:flex}.viz-tip .tip-row i{border-radius:2px;flex:none;width:10px;height:3px;display:inline-block}.viz-tip .tip-table{grid-template-columns:10px auto auto auto;align-items:center;gap:2px 8px;display:grid}.viz-tip .tip-line{display:contents}.viz-tip .tip-line i{border-radius:2px;width:10px;height:3px;display:inline-block}.viz-tip .tip-line .tip-val{text-align:right}.viz-tip .tip-price{text-align:right;color:var(--viz-ink-muted);font-variant-numeric:tabular-nums}.viz-tip .tip-rule{background:var(--viz-grid);grid-column:1/-1;height:1px;margin:3px 0 1px}.viz-tip .tip-val{color:var(--viz-ink);font-variant-numeric:tabular-nums;font-weight:600}.toggle{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.toggle button{color:var(--muted);background:0 0;border-radius:0;padding:6px 12px;font-size:.85rem}.toggle button[aria-pressed=true]{background:var(--accent);color:var(--accent-fg)}.table-twin{margin-top:12px}.table-twin table{margin-top:10px}.table-twin .scroll{max-height:320px;overflow-y:auto}.daynav{align-items:center;gap:8px;display:flex}.daily-wrap{max-height:340px;overflow-y:auto}.login-wrap{max-width:380px;margin:12vh auto 0;padding:0 16px}.login-wrap .card{padding:28px}.login-wrap form{flex-direction:column;gap:14px;display:flex}.login-wrap input{width:100%}.prop-block{border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:16px}.prop-block>h3{margin:0;font-size:1rem}.prop-block>.meta{margin-top:2px}.unit-list{flex-direction:column;gap:10px;margin-top:14px;display:flex}.unit-block{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.unit-block .unit-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.unit-block h4{margin:0;font-size:.88rem}.unit-block .area-field{color:var(--muted);flex-direction:row;align-items:center;gap:4px;font-size:.82rem;display:flex}.unit-block .area-field input{max-width:70px;padding:4px 6px;font-size:.85rem}.unit-block .row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;font-size:.88rem;display:flex}.unit-block .row select,.unit-block .row input{min-width:0}.tenancy-list{color:var(--muted);margin:6px 0 0;font-size:.85rem}.tenancy-list .current{color:var(--fg);font-weight:600}.new-unit-form-legend{margin:0 0 8px;font-size:.82rem;font-weight:600}.new-unit-form{border-top:1px dashed var(--border);flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:14px;padding-top:14px;display:flex}.new-unit-form .field{min-width:140px}.invoice{color:#111;border:1px solid var(--border);background:#fff;border-radius:8px;max-width:900px;margin:0 auto;padding:28px 32px;font-size:.9rem}.invoice .issuer-line{color:#555;border-bottom:1px solid #ccc;margin-bottom:24px;padding-bottom:4px;font-size:.72rem}.invoice .addr-row{justify-content:space-between;gap:24px;margin-bottom:24px;display:flex}.invoice .recipient{white-space:pre-line}.invoice .metabox{text-align:right;min-width:220px;font-size:.85rem}.invoice .metabox div{margin-bottom:2px}.invoice h2.inv-title{margin:8px 0 16px;font-size:1.25rem}.invoice table{margin:12px 0}.invoice .note{color:#444;margin-top:16px;font-size:.82rem}.invoice .pay{margin-top:18px;font-size:.85rem}.invoice .foot{color:#555;border-top:1px solid #ccc;flex-wrap:wrap;gap:32px;margin-top:28px;padding-top:10px;font-size:.72rem;display:flex}@media print{body{background:#fff}.no-print{display:none!important}.page{padding:0}.invoice{border:none;border-radius:0;max-width:none;padding:0}#invoiceCard{border:none;margin:0;padding:0;display:block!important}}@media (max-width:560px){.grid2{grid-template-columns:1fr}.navbar nav a{min-height:44px;padding:0 10px}.navbar .brand,.navbar-right .who{display:none}.card,.invoice{padding:16px}.invoice .addr-row{flex-direction:column}.invoice .metabox{text-align:left}}.scroll-x{overflow-x:auto}
