*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{color:#1a1a2e;-webkit-font-smoothing:antialiased;background:#f4f5f7;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}#root{min-height:100vh}.layout{min-height:100vh;display:flex}.sidebar{z-index:10;background:#1e293b;flex-direction:column;width:220px;min-height:100vh;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-logo{color:#f8fafc;border-bottom:1px solid #334155;padding:1.25rem 1.5rem;font-size:.95rem;font-weight:700;line-height:1.4}.sidebar-logo small{color:#64748b;margin-top:.15rem;font-size:.7rem;font-weight:400;display:block}.sidebar-nav{flex-direction:column;padding:.75rem 0;display:flex}.nav-link{color:#94a3b8;border-left:3px solid #0000;align-items:center;padding:.65rem 1.5rem;font-size:.88rem;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.nav-link:hover,.nav-link-active{color:#f1f5f9;background:#334155;border-left-color:#4f46e5}.main-content{background:#f4f5f7;flex:1;min-height:100vh;margin-left:220px}.page{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-title{color:#0f172a;font-size:1.5rem;font-weight:700}.card{background:#fff;border-radius:10px;margin-bottom:1.5rem;padding:1.5rem;overflow:hidden;box-shadow:0 1px 4px #00000014}.card-table{-webkit-overflow-scrolling:touch;overflow-x:auto}.search-input{background:#fff;border:1px solid #d1d5db;border-radius:8px;outline:none;width:100%;margin-bottom:1rem;padding:.6rem 1rem;font-size:.95rem;transition:border-color .15s}.search-input:focus{border-color:#4f46e5}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:#6b7280;white-space:nowrap;border-bottom:1px solid #e5e7eb;padding:.6rem 1rem;font-size:.72rem;font-weight:600}td{color:#374151;border-bottom:1px solid #f3f4f6;padding:.8rem 1rem;font-size:.9rem}tr:last-child td{border-bottom:none}tbody tr:hover td{background:#f9fafb}.empty-row td{text-align:center;color:#9ca3af;padding:2.5rem}.link{color:#4f46e5;font-weight:500;text-decoration:none}.link:hover{text-decoration:underline}.back-link{color:#6b7280;align-items:center;gap:.3rem;margin-bottom:1.25rem;font-size:.9rem;text-decoration:none;display:inline-flex}.back-link:hover{color:#111827}.badge{text-transform:capitalize;border-radius:99px;padding:.2rem .65rem;font-size:.72rem;font-weight:600;display:inline-block}.badge-active{color:#15803d;background:#dcfce7}.badge-pending{color:#a16207;background:#fef9c3}.badge-expired,.badge-terminated{color:#b91c1c;background:#fee2e2}.badge-paid{color:#15803d;background:#dcfce7}.badge-late{color:#b91c1c;background:#fee2e2}.badge-partial{color:#c2410c;background:#ffedd5}.badge-waived{color:#6b7280;background:#f3f4f6}.badge-submitted{color:#92400e;background:#fef3c7;font-weight:700}.badge-unit-available{color:#15803d;background:#dcfce7}.badge-unit-occupied{color:#3730a3;background:#e0e7ff}.badge-unit-maintenance{color:#c2410c;background:#ffedd5}.badge-unit-inactive{color:#6b7280;background:#f3f4f6}.badge-priority-urgent{color:#b91c1c;background:#fee2e2}.badge-priority-high{color:#c2410c;background:#ffedd5}.badge-priority-medium{color:#a16207;background:#fef9c3}.badge-priority-low{color:#15803d;background:#dcfce7}.badge-utility-electricity{color:#92400e;background:#fef3c7}.badge-utility-water{color:#075985;background:#e0f2fe}.badge-utility-garbage{color:#166534;background:#dcfce7}.badge-utility-internet{color:#5b21b6;background:#ede9fe}.badge-charge-pending{color:#a16207;background:#fef9c3}.badge-charge-invoiced{color:#1d4ed8;background:#dbeafe}.badge-charge-paid{color:#15803d;background:#dcfce7}.badge-charge-waived{color:#6b7280;background:#f3f4f6}.badge-ticket-open{color:#1d4ed8;background:#dbeafe}.badge-ticket-in_progress{color:#a16207;background:#fef9c3}.badge-ticket-resolved{color:#15803d;background:#dcfce7}.badge-ticket-closed,.badge-ticket-cancelled{color:#6b7280;background:#f3f4f6}.badge-method-bank{color:#075985;background:#e0f2fe}.badge-method-card{color:#5b21b6;background:#ede9fe}.detail-grid{grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:1.25rem;display:grid}@media (width<=700px){.detail-grid{grid-template-columns:1fr}}.section-title{color:#0f172a;border-bottom:1px solid #f3f4f6;margin-bottom:1rem;padding-bottom:.5rem;font-size:.9rem;font-weight:700}.field{margin-bottom:.85rem}.field:last-child{margin-bottom:0}.field-label{text-transform:uppercase;letter-spacing:.07em;color:#9ca3af;margin-bottom:.2rem;font-size:.7rem;font-weight:600}.field-value{color:#111827;font-size:.92rem}.loading{text-align:center;color:#9ca3af;padding:4rem;font-size:1rem}.error-msg{text-align:center;color:#dc2626;padding:4rem}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.kpi-card{background:#fff;border-top:3px solid #e5e7eb;border-radius:10px;padding:1.25rem 1.5rem;box-shadow:0 1px 4px #00000014}.kpi-card.kpi-info{border-top-color:#6366f1}.kpi-card.kpi-success{border-top-color:#22c55e}.kpi-card.kpi-warning{border-top-color:#f59e0b}.kpi-card.kpi-danger{border-top-color:#ef4444}.kpi-label{text-transform:uppercase;letter-spacing:.06em;color:#6b7280;margin-bottom:.5rem;font-size:.7rem;font-weight:600}.kpi-value{color:#0f172a;font-size:2.25rem;font-weight:700;line-height:1}.kpi-card.kpi-info .kpi-value{color:#4f46e5}.kpi-card.kpi-success .kpi-value{color:#16a34a}.kpi-card.kpi-warning .kpi-value{color:#d97706}.kpi-card.kpi-danger .kpi-value{color:#dc2626}a.kpi-card{color:inherit;text-decoration:none;transition:transform .12s,box-shadow .12s;display:block}a.kpi-card:hover{transform:translateY(-2px);box-shadow:0 4px 14px #00000021}.filter-bar{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.filter-btn{color:#374151;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:99px;align-items:center;gap:.4rem;padding:.4rem .9rem;font-size:.83rem;font-weight:500;transition:all .12s;display:inline-flex}.filter-btn:hover{color:#4f46e5;border-color:#4f46e5}.filter-btn-active{color:#fff;background:#4f46e5;border-color:#4f46e5}.filter-count{text-align:center;background:#00000014;border-radius:99px;min-width:1.2rem;padding:0 .4rem;font-size:.72rem;font-weight:600}.filter-btn-active .filter-count{background:#ffffff40}.login-page{background:#f4f5f7;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:12px;width:100%;max-width:400px;padding:2.5rem 2rem;box-shadow:0 4px 24px #0000001a}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{color:#0f172a;margin-bottom:.25rem;font-size:1.5rem;font-weight:700}.login-header p{color:#6b7280;font-size:.88rem}.form-field{margin-bottom:1.1rem}.form-field label{color:#374151;margin-bottom:.35rem;font-size:.8rem;font-weight:600;display:block}.form-field input{border:1px solid #d1d5db;border-radius:8px;outline:none;width:100%;padding:.65rem .9rem;font-size:.95rem;transition:border-color .15s}.form-field input:focus{border-color:#4f46e5}.login-error{color:#b91c1c;background:#fee2e2;border-radius:8px;margin-bottom:1rem;padding:.6rem .9rem;font-size:.85rem}.login-btn{color:#fff;cursor:pointer;background:#4f46e5;border:none;border-radius:8px;width:100%;margin-top:.5rem;padding:.75rem;font-size:.95rem;font-weight:600;transition:background .15s}.login-btn:hover:not(:disabled){background:#4338ca}.login-btn:disabled{opacity:.65;cursor:not-allowed}.sidebar-footer{border-top:1px solid #334155;margin-top:auto;padding:1rem 1.5rem}.sidebar-user{margin-bottom:.75rem}.sidebar-user-name{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:600;overflow:hidden}.sidebar-user-role{color:#64748b;text-transform:capitalize;margin-top:.1rem;font-size:.72rem}.sidebar-signout{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #475569;border-radius:6px;width:100%;padding:.45rem 0;font-size:.83rem;transition:all .12s}.sidebar-signout:hover{color:#f1f5f9;background:#334155;border-color:#64748b}tr.row-overdue td{background:#fff7f7}tr.row-overdue td:first-child{border-left:3px solid #ef4444}.overdue-tag{color:#b91c1c;text-transform:uppercase;letter-spacing:.04em;vertical-align:middle;background:#fee2e2;border-radius:4px;margin-left:.45rem;padding:.1rem .4rem;font-size:.67rem;font-weight:700;display:inline-block}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:7px;align-items:center;padding:.5rem 1rem;font-size:.88rem;font-weight:600;transition:all .12s;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{color:#fff;background:#4f46e5}.btn-primary:hover:not(:disabled){background:#4338ca}.btn-secondary{color:#374151;background:#f3f4f6;border:1px solid #e5e7eb}.btn-secondary:hover:not(:disabled){background:#e5e7eb}.btn-danger{color:#fff;background:#ef4444}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{padding:.28rem .6rem;font-size:.8rem}.modal-overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 40px #0000002e}.modal-header{z-index:1;background:#fff;border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex;position:sticky;top:0}.modal-title{color:#0f172a;font-size:1.1rem;font-weight:700}.modal-close{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.25rem .5rem;font-size:1rem;line-height:1}.modal-close:hover{color:#374151;background:#f3f4f6}.modal-body{padding:1.5rem}.modal-footer{border-top:1px solid #f3f4f6;justify-content:flex-end;gap:.75rem;margin-top:1rem;padding-top:1.25rem;display:flex}.form-field select,.form-field textarea{background:#fff;border:1px solid #d1d5db;border-radius:8px;outline:none;width:100%;padding:.65rem .9rem;font-family:inherit;font-size:.95rem;transition:border-color .15s}.form-field select:focus,.form-field textarea:focus{border-color:#4f46e5}.form-field textarea{resize:vertical;min-height:80px;line-height:1.5}.form-row{grid-template-columns:1fr 1fr;gap:0 1rem;display:grid}@media (width<=540px){.form-row{grid-template-columns:1fr}}tr.row-expiring-urgent td{background:#fff7f7}tr.row-expiring-urgent td:first-child{border-left:3px solid #ef4444}tr.row-expiring-soon td{background:#fffbeb}tr.row-expiring-soon td:first-child{border-left:3px solid #f59e0b}.expiry-tag{border-radius:4px;padding:.15rem .45rem;font-size:.73rem;font-weight:600;display:inline-block}.expiry-tag.expiry-urgent{color:#b91c1c;background:#fee2e2}.expiry-tag.expiry-soon{color:#a16207;background:#fef9c3}.expiry-tag.expiry-expired{color:#6b7280;background:#f3f4f6}.hamburger-btn{z-index:200;cursor:pointer;background:#1e293b;border:none;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:40px;height:40px;padding:0;display:none;position:fixed;top:.7rem;left:.7rem}.hamburger-btn span{background:#f8fafc;border-radius:2px;width:20px;height:2px;display:block}.sidebar-close-btn{color:#94a3b8;cursor:pointer;background:0 0;border:none;padding:.25rem;font-size:1.1rem;line-height:1;display:none;position:absolute;top:.6rem;right:.75rem}.sidebar-overlay{display:none}@media (width<=768px){.hamburger-btn{display:flex}.sidebar-close-btn{display:block}.sidebar{z-index:100;transition:transform .25s;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.sidebar-overlay{z-index:99;background:#00000073;display:block;position:fixed;inset:0}.main-content{margin-left:0}.page{padding-top:3.75rem}}.invoice-doc{background:#fff;border-radius:10px;max-width:860px;margin:0 auto 1.5rem;padding:2.5rem;overflow:hidden;box-shadow:0 1px 4px #00000014}.invoice-header{border-bottom:2px solid #e5e7eb;justify-content:space-between;align-items:flex-start;margin-bottom:2rem;padding-bottom:1.5rem;display:flex}.invoice-title{color:#4f46e5;letter-spacing:.05em;font-size:2rem;font-weight:800}.invoice-number{color:#374151;margin-top:.25rem;font-family:monospace;font-size:1.1rem}.print-only-badge{display:none}.invoice-meta-grid{grid-template-columns:1fr 1fr;gap:1.5rem 2rem;margin-bottom:.5rem;display:grid}.invoice-meta-block{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:1rem}.invoice-meta-label{text-transform:uppercase;letter-spacing:.08em;color:#9ca3af;margin-bottom:.5rem;font-size:.7rem;font-weight:700}.invoice-meta-value{color:#111827;font-size:.9rem;line-height:1.6}.invoice-table{border-collapse:collapse;width:100%;font-size:.9rem}.invoice-table th{color:#374151;text-transform:uppercase;letter-spacing:.04em;background:#f3f4f6;border-bottom:2px solid #e5e7eb;padding:.65rem .75rem;font-size:.8rem;font-weight:600}.invoice-table td{color:#374151;border-bottom:1px solid #f3f4f6;padding:.75rem}.invoice-table tbody tr:last-child td{border-bottom:none}.invoice-totals{border-top:2px solid #e5e7eb;max-width:320px;margin-top:1.5rem;margin-left:auto;padding-top:1rem}.invoice-total-row{color:#6b7280;justify-content:space-between;padding:.35rem 0;font-size:.9rem;display:flex}.invoice-grand-total{color:#111827;border-top:2px solid #1e293b;margin-top:.5rem;padding-top:.5rem;font-size:1.15rem;font-weight:700}.invoice-print-footer{display:none}@page{margin:15mm 15mm 22mm}@media print{body{background:#fff}.sidebar,.topbar,.tenant-sidebar,.no-print,.hamburger-btn,.sidebar-close-btn,.sidebar-overlay{display:none!important}html,body,.layout,.tenant-layout,.main-content,.tenant-layout-content,.page{margin:0!important;padding:0!important;display:block!important;overflow:visible!important}.print-only{display:block!important}.invoice-doc{max-width:100%;box-shadow:none;background:0 0;border-radius:0;margin:0;padding:0;overflow:visible}.invoice-line-items{overflow:visible}.print-only-badge{display:block}.invoice-meta-block{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #ccc;background:#fff!important}.invoice-table th{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#eee!important}.invoice-table tbody tr:nth-child(2n) td{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#f9f9f9!important}.invoice-print-footer{color:#6b7280;text-align:center;background:#fff;border-top:1px solid #d1d5db;padding:5pt 15mm 3pt;font-size:8.5pt;line-height:1.5;display:block;position:fixed;bottom:0;left:0;right:0}}@media (width<=768px){.col-hide{display:none}table th,table td{padding:.55rem .65rem;font-size:.82rem}.filter-bar{flex-wrap:wrap;gap:.4rem}.page-header{flex-direction:column;align-items:flex-start;gap:.75rem}}
