:root{color:#172026;background:#edf1f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0;border-radius:8px;cursor:pointer;font-weight:700}button:disabled{cursor:not-allowed;opacity:.7}.auth-layout,.page-shell{min-height:100vh;padding:32px}.auth-layout{align-items:center;background:linear-gradient(135deg,rgba(15,118,110,.14),transparent 34%),linear-gradient(315deg,rgba(14,116,144,.14),transparent 30%),#edf1f5;display:flex;justify-content:center}.login-panel,.panel,.dashboard-header{background:#fff;border:1px solid #d8e0e7;border-radius:8px;box-shadow:0 18px 45px #17202614}.login-panel{max-width:420px;padding:32px;width:100%}.brand-mark{align-items:center;background:#0f766e;border-radius:8px;color:#fff;display:flex;font-weight:800;height:48px;justify-content:center;margin-bottom:20px;width:48px}h1,h2,p{margin-top:0}h1{font-size:30px;line-height:1.15;margin-bottom:8px}h2{font-size:20px;margin-bottom:22px}.muted{color:#607080;margin-bottom:28px}.login-form{display:grid;gap:18px}label{color:#344250;display:grid;font-size:14px;font-weight:700;gap:8px}input{border:1px solid #bec9d4;border-radius:8px;color:#172026;outline:0;padding:12px 14px;width:100%}textarea{border:1px solid #bec9d4;border-radius:8px;color:#172026;min-height:88px;outline:0;padding:12px 14px;resize:vertical;width:100%}select{background:#fff;border:1px solid #bec9d4;border-radius:8px;color:#172026;outline:0;padding:10px 12px;width:100%}input:focus,select:focus,textarea:focus{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e26}.compact-form h3{font-size:16px;margin:0}.login-form button{background:#0f766e;color:#fff;padding:13px 16px}.error-message{background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;color:#be123c;margin:0;padding:10px 12px}.page-shell{margin:0 auto;max-width:1180px}.dashboard-header{align-items:center;display:flex;gap:24px;justify-content:space-between;margin-bottom:20px;padding:24px}.eyebrow{color:#0f766e;font-size:13px;font-weight:800;letter-spacing:0;margin-bottom:6px;text-transform:uppercase}.secondary-button{background:#172026;color:#fff;min-width:96px;padding:11px 16px}.primary-button{background:#0f766e;color:#fff;padding:11px 16px}.danger-button{background:#be123c;color:#fff;padding:11px 16px}.compact-button{min-width:auto;padding:9px 12px}.app-nav{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.app-nav a{background:#fff;border:1px solid #d8e0e7;border-radius:8px;color:#344250;font-weight:800;padding:10px 14px;text-decoration:none}.app-nav a.active{background:#0f766e;border-color:#0f766e;color:#fff}.panel{padding:24px}.panel-heading{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:18px}.panel-heading h2{margin-bottom:0}.management-grid{display:grid;gap:20px;grid-template-columns:minmax(280px,.8fr) minmax(320px,1.2fr)}.compact-form{border-bottom:1px solid #e5ebf0;display:grid;gap:14px;margin-bottom:18px;padding-bottom:18px}.success-message{background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;color:#047857;margin:0 0 14px;padding:10px 12px}.list-stack,.permission-list{display:grid;gap:10px}.row-button{background:#f8fafc;border:1px solid #d8e0e7;color:#172026;padding:12px;text-align:left;width:100%}.row-button.active{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e1f}.row-button span,.checkbox-row span{display:grid;gap:3px}small{color:#607080;font-weight:600}.button-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.checkbox-row{align-items:flex-start;background:#f8fafc;border:1px solid #d8e0e7;border-radius:8px;display:flex;gap:12px;padding:12px}.checkbox-row input{margin-top:3px;width:auto}.permission-groups{display:grid;gap:18px;margin-bottom:18px}.permission-group{border-top:1px solid #e5ebf0;padding-top:16px}.permission-group:first-child{border-top:0;padding-top:0}.permission-group h3{font-size:16px;margin:0 0 10px}.checkbox-row code{color:#344250;font-size:12px;font-weight:800}.permission-summary{display:grid;gap:12px}.permission-summary section{display:grid;gap:4px}.permission-summary span{color:#607080;font-size:14px;font-weight:600}.unauthorized-panel{text-align:left}.table-wrap{overflow-x:auto}.table-actions{justify-content:flex-start;min-width:320px}.events-actions{min-width:210px}.remote-controls-actions{min-width:520px}.users-toolbar{align-items:end;display:grid;gap:12px;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(150px,1fr));margin-bottom:14px}.buildings-toolbar{grid-template-columns:minmax(220px,1.4fr) minmax(150px,.6fr)}.houses-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(150px,1fr))}.doors-toolbar,.devices-toolbar,.device-doors-toolbar,.events-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(4,minmax(130px,1fr))}.remote-controls-toolbar{grid-template-columns:minmax(220px,1.4fr) repeat(5,minmax(130px,1fr))}.results-summary,.pagination-row{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.results-summary{color:#607080;font-size:14px;font-weight:800;margin-bottom:12px}.pagination-row{border-top:1px solid #e5ebf0;justify-content:flex-end;margin-top:16px;padding-top:16px}.empty-state{margin-bottom:12px}.modal-backdrop{align-items:center;background:#1720266b;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:20px;position:fixed;z-index:20}.modal-panel{background:#fff;border:1px solid #d8e0e7;border-radius:8px;box-shadow:0 24px 70px #17202633;max-height:calc(100vh - 40px);max-width:560px;overflow-y:auto;padding:24px;width:min(560px,100%)}.detail-modal{max-width:760px;width:min(760px,100%)}.detail-sections{display:grid;gap:18px}.detail-section{border-top:1px solid #e5ebf0;padding-top:16px}.detail-section:first-child{border-top:0;padding-top:0}.detail-section h3{font-size:16px;margin:0 0 12px}.detail-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0}.detail-grid div{border:1px solid #e5ebf0;border-radius:8px;display:grid;gap:4px;padding:12px}.payload-block{border:1px solid #e5ebf0;border-radius:8px;display:grid;gap:8px;margin-top:12px;padding:12px}.payload-block pre{background:#f8fafc;border-radius:8px;font-size:13px;margin:0;max-height:280px;overflow:auto;padding:12px;white-space:pre-wrap}.tabs{border-bottom:1px solid #d8e0e7;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px;padding-bottom:12px}.tabs button{background:#f8fafc;border:1px solid #d8e0e7;color:#344250;padding:9px 12px}.tabs button.active{background:#0f766e;border-color:#0f766e;color:#fff}.filter-bar{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin-bottom:18px}.status-pill{border-radius:999px;display:inline-block;font-size:12px;font-weight:800;padding:5px 8px}.status-pill.on_time{background:#ecfdf5;color:#047857}.status-pill.late,.status-pill.missed{background:#fff7ed;color:#c2410c}.status-pill.unknown_point{background:#fff1f2;color:#be123c}.status-pill.active{background:#ecfdf5;color:#047857}.status-pill.inactive{background:#f8fafc;color:#607080}.status-pill.deleted{background:#fff1f2;color:#be123c}.status-pill.blocked{background:#fff7ed;color:#c2410c}.report-summary{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.report-summary div{border:1px solid #d8e0e7;border-radius:8px;display:grid;gap:4px;padding:16px}.report-summary strong{font-size:26px}.report-summary span,.scope-note{color:#607080;font-weight:700}td small{display:block;margin-top:3px}table{border-collapse:collapse;min-width:760px;width:100%}th,td{border-top:1px solid #e5ebf0;padding:14px 12px;text-align:left;vertical-align:middle}th{color:#607080;font-size:13px;text-transform:uppercase}.profile-grid{display:grid;gap:14px;margin:0}.profile-grid div{border-top:1px solid #e5ebf0;display:grid;gap:4px;padding-top:14px}dt{color:#607080;font-size:13px;font-weight:700}dd{font-size:17px;font-weight:700;margin:0;overflow-wrap:anywhere}@media(max-width:640px){.auth-layout,.page-shell{padding:18px}.dashboard-header{align-items:stretch;flex-direction:column}.management-grid,.users-toolbar{grid-template-columns:1fr}.panel-heading{align-items:stretch;flex-direction:column}.button-row{justify-content:flex-start}}
