@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;600;700&family=IBM+Plex+Mono:wght@400;700&family=Source+Serif+4:wght@400;600&display=swap");:root{--color-primary:#625a91;--color-dark:#3b3658;--color-accent:#9287d3;--color-light:#eae8f5;--color-white:#fff;--color-bg:#f8f7fc;--color-text:#1a1a2e;--color-muted:#6b6b8a;--color-border:#d8d5ec;--color-error:#c0392b;--color-success:#27ae60;--color-warning:#f39c12;--field-readonly-bg:#f0f4f8;--field-editable-bg:#fff;--font-ui:"IBM Plex Sans",system-ui,sans-serif;--font-mono:"IBM Plex Mono","Courier New",monospace;--font-doc:"Source Serif 4",Georgia,serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px rgba(98,90,145,.08);--shadow-md:0 4px 12px rgba(98,90,145,.12)}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body{font-family:var(--font-ui);color:var(--color-text);background:var(--color-bg);line-height:1.5}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.site-header{background:var(--color-white);border-bottom:1px solid var(--color-border);padding:var(--space-4) var(--space-8);display:flex;align-items:center;gap:var(--space-8)}.site-logo{font-family:var(--font-ui);font-weight:700;font-size:1.25rem;color:var(--color-primary);text-decoration:none}.site-nav{display:flex;gap:var(--space-6)}.site-nav a{color:var(--color-muted);font-weight:600}.site-nav a.active,.site-nav a:hover{color:var(--color-primary)}.site-footer{border-top:1px solid var(--color-border);padding:var(--space-6) var(--space-8);display:flex;justify-content:space-between;font-size:.875rem;color:var(--color-muted)}.site-footer nav{display:flex;gap:var(--space-4)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-ui);font-weight:600;cursor:pointer;border:none;transition:background .15s,box-shadow .15s}.btn--sm{padding:var(--space-1) var(--space-3);font-size:.875rem}.btn--md{padding:var(--space-2) var(--space-4);font-size:1rem}.btn--lg{padding:var(--space-3) var(--space-6);font-size:1rem}.btn--primary{background:var(--color-primary);color:var(--color-white)}.btn--primary:hover{background:var(--color-dark)}.btn--secondary{background:var(--color-light);color:var(--color-primary)}.btn--secondary:hover{background:var(--color-border)}.btn--danger{background:var(--color-error);color:var(--color-white)}.btn--danger:hover{opacity:.9}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;font-family:var(--font-ui);letter-spacing:.02em}.badge--active{background:#d4edda;color:#155724}.badge--pending{background:#fff3cd;color:#856404}.badge--deactivated{background:#f8d7da;color:#721c24}.badge--default{background:var(--color-light);color:var(--color-primary)}.form-field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}label{font-weight:600;font-size:.875rem;color:var(--color-muted)}input,select,textarea{font-family:var(--font-ui);font-size:1rem;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--field-editable-bg);color:var(--color-text);width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(98,90,145,.15)}.input--error{border-color:var(--color-error)}.form-error{font-size:.875rem;color:var(--color-error)}.table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.9375rem}.data-table th{text-align:left;background:var(--color-bg);border-bottom:2px solid var(--color-border);font-weight:600;color:var(--color-muted)}.data-table td,.data-table th{padding:var(--space-3) var(--space-4);font-size:.875rem}.data-table td{border-bottom:1px solid var(--color-border);font-family:var(--font-mono)}.data-table tr.clickable{cursor:pointer}.data-table tr.clickable:hover td{background:var(--color-light)}.field-group{display:grid;grid-template-columns:180px 1fr;grid-gap:var(--space-4);gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--field-editable-bg)}.field-group--readonly{background:var(--field-readonly-bg)}.field-label{font-size:.875rem;font-weight:600;color:var(--color-muted)}.field-value{font-family:var(--font-mono);color:var(--color-text)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin-bottom:var(--space-8)}.kpi-card{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-6);font-weight:600;color:var(--color-primary);box-shadow:var(--shadow-sm)}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:var(--color-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);min-width:400px;max-width:90vw;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border)}.modal-body{padding:var(--space-6)}.auth-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-8)}.login-form,.reset-form{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--space-4);box-shadow:var(--shadow-md)}.door-detail{background:var(--color-white);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}@media (max-width:768px){.site-header{padding:var(--space-4)}.kpi-grid{grid-template-columns:1fr 1fr}.field-group{grid-template-columns:1fr}.modal{min-width:unset;width:95vw}}