*{margin:0;padding:0;box-sizing:border-box}:root{--sidebar-width:240px;--primary:#2563eb;--primary-hover:#1d4ed8;--danger:#dc2626;--warning:#f59e0b;--success:#16a34a;--bg:#f8fafc;--surface:#fff;--border:#e2e8f0;--text:#1e293b;--text-muted:#64748b;--radius:8px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.app-shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--text);color:#fff;position:fixed;height:100vh;overflow-y:auto}.sidebar-brand{padding:20px;border-bottom:1px solid hsla(0,0%,100%,.1)}.sidebar-brand h2{font-size:18px;font-weight:600}.sidebar-nav{list-style:none;padding:8px 0}.sidebar-nav li a{display:block;padding:12px 20px;color:hsla(0,0%,100%,.7);text-decoration:none;font-size:14px;transition:all .15s}.sidebar-nav li a:hover{background:hsla(0,0%,100%,.1);color:#fff}.main-content{margin-left:var(--sidebar-width);flex:1 1;padding:32px;max-width:1200px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.page-header h1{font-size:24px;font-weight:600}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--radius);font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;transition:all .15s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-danger{background:var(--danger);color:#fff}.btn-outline{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-outline:hover{background:var(--bg)}.btn-sm{padding:4px 10px;font-size:13px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:16px;gap:16px}.card h3{font-size:16px;margin-bottom:8px}.card .meta{font-size:13px;color:var(--text-muted)}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:12px;font-weight:500}.badge-active{background:#dcfce7;color:#166534}.badge-needs_attention{background:#fef3c7;color:#92400e}.badge-replaced{background:#e2e8f0;color:#475569}.badge-decommissioned{background:#fee2e2;color:#991b1b}.badge-commercial{background:#dbeafe;color:#1e40af}.badge-residential{background:#f3e8ff;color:#6b21a8}.badge-overdue{background:#fee2e2;color:#991b1b}.badge-due-soon{background:#fef3c7;color:#92400e}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:13px;font-weight:500;margin-bottom:4px;color:var(--text-muted)}.form-group input,.form-group select,.form-group textarea{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit}.form-group textarea{min-height:80px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:14px}th{font-weight:500;color:var(--text-muted);font-size:13px}tr:hover{background:var(--bg)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px}.tab{padding:8px 16px;background:none;font-size:14px;cursor:pointer;border:none;border-bottom:2px solid transparent;color:var(--text-muted)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.stat-card .stat-value{font-size:28px;font-weight:600}.stat-card .stat-label{font-size:13px;color:var(--text-muted);margin-top:4px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:12px;gap:12px}.photo-grid img{width:100%;height:150px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.empty-state{text-align:center;padding:48px 20px;color:var(--text-muted)}.breadcrumb{font-size:13px;margin-bottom:12px}.breadcrumb,.breadcrumb a{color:var(--text-muted)}.detail-grid{display:grid;grid-template-columns:200px 1fr;grid-gap:8px 16px;gap:8px 16px;font-size:14px}.detail-grid dt{color:var(--text-muted);font-weight:500}