:root{--aware-red: #C00000;--aware-dark-red: #a00000;--bg-grey: #e5e5e5}*{font-family:Arial Rounded MT Bold,Arial,sans-serif!important}@font-face{font-family:Arial Rounded MT Bold;src:local("Arial Rounded MT Bold")}*{margin:0;padding:0;box-sizing:border-box}body,html,#root{width:100%;height:100%;font-family:Arial Rounded MT Bold,Arial,sans-serif!important;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}.main-container{display:flex;min-width:100%;height:100svh;overflow-x:auto;overflow-y:hidden;background-color:#f4f6f8}.left-panel{height:100%;overflow-y:auto}.main-wrapper{display:flex;height:100vh;width:100vw;overflow:hidden}.content-area{flex:1;display:flex;flex-direction:column;height:100%;overflow-y:auto}@media(max-width:768px){.content-area{min-width:450px}}@media(max-width:900px){.main-container{grid-template-columns:180px 1fr}.left-panel{min-width:180px;padding:10px}}.toast-notification.error{background-color:#dc3545}.toast-notification.info{background-color:#17a2b8}.settings-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.settings-modal{background-color:#fff;padding:30px;border-radius:12px;width:90%;max-width:500px;box-shadow:0 5px 15px #0003;animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.settings-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;border-bottom:1px solid #eee;padding-bottom:15px}.settings-modal-header h2{margin:0;color:#333;font-size:1.5rem}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:#888;transition:color .2s}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#555;font-size:14px}.form-group input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:16px;transition:border-color .2s;box-sizing:border-box}.form-group input:focus{border-color:#c00000;outline:none;box-shadow:0 0 0 2px #c000001a}.read-only-field{padding:10px 12px;background-color:#f5f5f5;border:1px solid #eee;border-radius:6px;color:#666}.hint{display:block;margin-top:5px;color:#888;font-size:12px}.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:30px}.cancel-btn{padding:10px 20px;background-color:#fff;border:1px solid #ddd;border-radius:6px;color:#666;cursor:pointer;font-weight:500;transition:all .2s}.cancel-btn:hover{background-color:#f5f5f5;border-color:#ccc}.save-btn{padding:10px 20px;background-color:#c00000;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;transition:background-color .2s}.save-btn:hover{background-color:#a00000}.confirmation-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000;animation:fadeIn .2s ease-out}.confirmation-modal{background-color:#fff;padding:24px;border-radius:12px;width:90%;max-width:400px;box-shadow:0 10px 25px #0003;transform:translateY(0);animation:slideUp .2s ease-out;text-align:center}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.confirmation-header h3{margin:0 0 10px;color:#333;font-size:1.25rem}.confirmation-body p{color:#666;margin:0 0 24px;line-height:1.5}.confirmation-actions{display:flex;justify-content:center;gap:12px}.btn-cancel{padding:10px 24px;background-color:#f5f5f5;border:1px solid #ddd;border-radius:6px;color:#666;font-weight:500;cursor:pointer;transition:all .2s}.btn-cancel:hover{background-color:#eee;color:#333}.btn-confirm{padding:10px 24px;background-color:#c00000;border:none;border-radius:6px;color:#fff;font-weight:500;cursor:pointer;transition:background-color .2s}.btn-confirm:hover{background-color:#a00000}.left-panel{flex:0 0 250px;width:250px;height:100%;background-color:#e5e5e5;display:flex;flex-direction:column;padding:20px;overflow-x:hidden;left:0;z-index:100}.time-banner,.profile-banner{flex-shrink:0}.panel-logo{width:110%;height:auto;max-width:200px;margin-bottom:30px;object-fit:contain}.nav-menu{flex-grow:1;overflow-y:auto;margin-bottom:0}.nav-item{padding:15px 20px;color:#c00;font-size:16px;font-weight:500;cursor:pointer;border-radius:8px;transition:background-color .3s,color .3s;display:flex;justify-content:space-between;align-items:center;font-family:Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif}.nav-item:hover{background-color:#34495e}.nav-item.active{background-color:#c00000;color:#fff}.nav-item-dropdown{display:flex;flex-direction:column}.dropdown-arrow{font-size:12px;transition:transform .3s;display:inline-block}.dropdown-arrow.open{transform:rotate(180deg)}.dropdown-content{display:flex;flex-direction:column;margin-left:20px;margin-top:5px}.dropdown-item{padding:12px 20px;color:#c00;font-size:14px;cursor:pointer;border-radius:6px;transition:background-color .3s,color .3s;font-family:Arial Rounded MT Bold,Helvetica Rounded,Arial,sans-serif}.dropdown-item:hover{background-color:#34495e;color:#c00}.dropdown-item.active{background-color:#c00000;color:#fff}.nav-menu{display:flex;flex-direction:column;gap:5px;flex-grow:1;overflow-y:auto;margin-bottom:10px;padding-right:5px}.nav-menu::-webkit-scrollbar{width:6px}.nav-menu::-webkit-scrollbar-track{background:transparent}.nav-menu::-webkit-scrollbar-thumb{background-color:#0003;border-radius:3px}.nav-menu::-webkit-scrollbar-thumb:hover{background-color:#0006}.profile-banner{margin:0 -15px -15px;padding:15px;background-color:#d8d8d8;border-top:1px solid rgba(0,0,0,.1)}.profile-info{display:flex;flex-direction:column}.profile-name{font-weight:600;font-size:15px;color:#333}.profile-type{font-size:12px;color:#666;margin-top:2px;font-family:Arial Rounded MT Bold,Arial,sans-serif!important;text-transform:uppercase}.profile-menu-container{position:relative}.profile-menu-trigger{cursor:pointer;font-size:20px;color:#666;padding:0 5px;-webkit-user-select:none;user-select:none;transition:color .2s}.profile-menu-trigger:hover{color:#c00000}.profile-dropdown-menu{position:absolute;bottom:100%;right:0;background-color:#fff;border-radius:8px;box-shadow:0 4px 15px #00000026;overflow:hidden;min-width:150px;margin-bottom:5px;z-index:10}.profile-menu-item{padding:12px 16px;cursor:pointer;font-size:14px;color:#333;transition:background-color .2s}.profile-menu-item:hover{background-color:#f5f5f5}.profile-menu-item.logout{color:#c00;border-top:1px solid #eee}.profile-menu-item.logout:hover{background-color:#fff0f0}.profile-menu-divider{height:1px;background-color:#eee;margin:4px 0}.profile-role-title{padding:8px 16px 4px;font-size:11px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px}.profile-menu-item.role-item{padding-left:24px;font-size:13px}.profile-menu-item.active-role{color:#1971c2;background-color:#e7f5ff;font-weight:500}.profile-menu-item.active-role:hover{background-color:#d0ebff}.time-banner{margin-left:-20px;margin-right:-20px;background-color:#c00000;color:#fff;padding:10px 20px;text-align:center;font-size:18px;font-weight:700;letter-spacing:1px;font-variant-numeric:tabular-nums;box-shadow:0 -2px 5px #0000001a}.App-wrapper{width:100vw;height:100vh;background:linear-gradient(135deg,#f5f7fa,#c3cfe2);display:flex;justify-content:center;align-items:center}.login-container{background:#ffffffd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:20px;box-shadow:0 10px 40px #0000001a;padding:48px;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;border:1px solid rgba(255,255,255,.5);animation:fadeIn .5s ease-out forwards}.logo{width:220px;height:auto;margin-bottom:40px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.login-form{width:100%}.input-group{margin-bottom:24px;width:100%}.input-group label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#666}.input-group input{width:100%;padding:14px 16px;border:1px solid rgba(0,0,0,.1);border-radius:10px;font-size:16px;background:#f0f2f5cc;transition:all .3s ease;color:#000;font-family:inherit}.input-group input:focus{outline:none;background:#fff;border-color:#c00000;box-shadow:0 0 0 3px #c000001a}.password-wrapper{position:relative;width:100%}.password-wrapper input{padding-right:48px}.password-toggle{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:0;color:#888;display:flex;align-items:center;transition:color .2s}.password-toggle:hover{color:#c00000}.login-button{width:100%;padding:16px;background:linear-gradient(135deg,#c00000,#a00000);color:#fff;border:none;border-radius:10px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:10px;box-shadow:0 4px 12px #c000004d}.login-button:hover{transform:translateY(-2px);box-shadow:0 6px 16px #c0000066}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.dashboard{width:100%;min-height:100%;color:#0f172a;padding:20px}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:40px;padding-bottom:20px;border-bottom:1px solid #e2e8f0}.dashboard-header h2{margin:0;font-size:36px;font-weight:800;color:#c00;letter-spacing:-.03em}.header-greeting{color:#64748b;font-size:16px;margin-top:8px;font-weight:500}.dashboard-clock{font-family:JetBrains Mono,monospace;font-size:1.1rem;color:#0f172a;font-weight:700;background:#fff;padding:12px 20px;border-radius:12px;box-shadow:0 4px 6px -1px #0000000d;border:1px solid #e2e8f0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:30px;margin-bottom:50px}.stat-card{background:#fff;padding:30px;border-radius:24px;box-shadow:0 10px 15px -3px #00000008,0 4px 6px -2px #00000005;display:flex;align-items:center;justify-content:space-between;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;border:1px solid white;overflow:hidden}.stat-card:hover{transform:translateY(-8px);box-shadow:0 25px 30px -5px #00000014,0 15px 15px -5px #0000000a}.stat-card:before{content:"";display:block;width:64px;height:64px;border-radius:20px;margin-right:24px;background-size:32px;background-repeat:no-repeat;background-position:center;flex-shrink:0}.stat-card.total-sensors-card:before{background-color:#e0e7ff;color:#4f46e5;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="%234f46e5" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M8.111 16.404a5.5 5.5 0 017.778 0M12 20h.01m-7.08-7.071c3.904-3.905 10.236-3.905 14.141 0M1.394 9.393c5.857-5.857 15.355-5.857 21.213 0" /></svg>')}.stat-card.total-sensors-card:hover{box-shadow:0 25px 30px -5px #4f46e526}.stat-card.active-cameras-card:before{background-color:#e0f2fe;color:#0284c7;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="%230284c7" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" /></svg>')}.stat-card.active-cameras-card:hover{box-shadow:0 25px 30px -5px #0284c726}.stat-card.system-status-card:before{background-color:#ecfdf5;color:#10b981;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="%2310b981" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" /></svg>')}.stat-card.system-status-card:hover{box-shadow:0 25px 30px -5px #10b98126}.stat-card.system-status-card .status-text{font-size:24px!important;color:#10b981;margin-top:8px;letter-spacing:.05em;text-transform:uppercase;white-space:normal;overflow-wrap:break-word}.stat-card.alerts-card:before{background-color:#fff7ed;color:#ea580c;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="%23ea580c" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" /></svg>')}.stat-card.alerts-card:hover{box-shadow:0 25px 30px -5px #ea580c26}.stat-card.alarms-card{position:relative}.stat-card.alarms-card .stat-icon{position:absolute;top:20px;right:20px;font-size:48px;opacity:.15}.stat-card.alarms-card:before{background-color:#fee2e2;color:#dc2626;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="%23dc2626" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" /></svg>')}.stat-card.alarms-card:hover{box-shadow:0 25px 30px -5px #dc262626}.stat-content{flex:1}.stat-value{font-size:42px;font-weight:800;color:#0f172a;line-height:1.1;margin:4px 0 0}.stat-title{font-size:13px;color:#64748b;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.dashboard-main{display:grid;grid-template-columns:2fr 1fr;gap:30px}@media(max-width:1100px){.dashboard-main{grid-template-columns:1fr}}.dashboard-section{background:#fff;border-radius:24px;padding:30px;box-shadow:0 10px 15px -3px #00000008,0 4px 6px -2px #00000005;border:1px solid #f1f5f9}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.section-header h3{margin:0;font-size:1.25rem;color:#0f172a;font-weight:700}.activity-table{width:100%;border-collapse:separate;border-spacing:0}.activity-table th{text-align:left;padding:16px 20px;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;border-bottom:1px solid #e2e8f0}.activity-table td{padding:16px 20px;border-bottom:1px solid #f1f5f9;color:#334155;font-size:14px;font-weight:500}.activity-table tr:hover td{background-color:#f8fafc}.activity-table td:first-child{border-radius:0}.activity-table td:last-child{border-radius:0}.action-grid{display:grid;gap:16px;grid-template-columns:1fr}.action-card{display:flex;align-items:center;background:#f8fafc;padding:20px;border:1px solid transparent;border-radius:16px;cursor:pointer;transition:all .3s ease;text-decoration:none}.action-card:hover{background:#fff;transform:translate(5px);box-shadow:0 10px 15px -3px #0000000d;border-color:#e2e8f0}.action-icon{width:48px;height:48px;border-radius:12px;font-size:1.5rem;margin-right:20px;display:flex;align-items:center;justify-content:center;background:#fff;box-shadow:0 2px 4px #0000000d}.action-details h4{font-size:1.05rem;margin:0 0 4px;color:#1e293b;font-weight:600}.action-details p{font-size:.85rem;color:#64748b;margin:0}.activity-table tr.testing-row td{background-color:#fffbeb;border-left:4px solid #f59e0b}.activity-table tr.testing-row:hover td{background-color:#fef3c7}.testing-tag{display:inline-flex;align-items:center;background-color:#f59e0b;color:#fff;font-size:10px;font-weight:800;padding:2px 8px;border-radius:4px;margin-left:10px;text-transform:uppercase;letter-spacing:.05em;vertical-align:middle;box-shadow:0 1px 2px #0000001a}.stack-badge{display:inline-flex;align-items:center;background-color:#e2e8f0;color:#475569;font-size:10px;font-weight:700;padding:2px 8px;border-radius:4px;margin-left:8px;text-transform:uppercase;letter-spacing:.05em;vertical-align:middle;border:1px solid #cbd5e1}.loading-metrics,.no-activity{padding:40px;text-align:center;color:#94a3b8;font-style:italic;font-weight:500}.modal-header h3{color:#c00000}.sensors-table th,.sensors-table td,.stat-value,.stat-title{font-family:Arial Rounded MT Bold,Arial,sans-serif!important}.page-title-text{color:#c00!important;font-family:Arial Rounded MT Bold,Arial,sans-serif!important;font-size:2rem;font-weight:700;margin:0;padding-bottom:10px}.page-header-container{padding-bottom:20px;border-bottom:2px solid #f0f0f0;margin-bottom:25px}.scanner-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000c;display:flex;justify-content:center;align-items:center;z-index:1000}.scanner-container{background-color:#fff;border-radius:12px;padding:20px;max-width:500px;width:90%;max-height:90vh;overflow:auto}.scanner-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.scanner-header h3{margin:0;color:#c00000;font-size:20px}.close-scanner-btn{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-scanner-btn:hover{color:#c00000}#qr-reader{width:100%}@media(max-width:768px){.scanner-container{width:95%;padding:15px}}.camera-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;justify-content:center;align-items:center;z-index:2000}.camera-container{background-color:#1a1a1a;border-radius:12px;padding:20px;max-width:800px;width:90%;max-height:90vh;display:flex;flex-direction:column}.camera-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.camera-header h3{margin:0;color:#fff;font-size:20px}.close-camera-btn{background:none;border:none;font-size:24px;color:#fff;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-camera-btn:hover{color:#c00000}.camera-viewport{background-color:#000;border-radius:8px;overflow:hidden;margin-bottom:20px;display:flex;justify-content:center;align-items:center;min-height:400px}.camera-video{width:100%;height:auto;max-height:60vh;object-fit:contain}.camera-controls{display:flex;justify-content:center;gap:15px}.capture-btn{padding:16px 40px;background-color:#c00000;color:#fff;border:none;border-radius:8px;font-size:18px;font-weight:600;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;gap:8px}.capture-btn:hover{background-color:#900}.capture-btn:active{background-color:#700}@media(max-width:768px){.camera-container{width:95%;padding:15px}.camera-viewport{min-height:300px}.camera-video{max-height:50vh}.capture-btn{padding:14px 30px;font-size:16px}}.addsensors{width:100%;height:100%}.add-sensor-container{max-width:800px;margin:40px auto;padding:30px;background-color:#e5e5e5;border-radius:12px;box-shadow:0 4px 20px #0000001a}.page-title{font-size:28px;font-weight:600;color:#c00000;margin-bottom:30px;text-align:center}.sensor-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column}.form-group label{font-size:14px;font-weight:500;color:#333;margin-bottom:8px}.form-group input,.form-group select,.form-group textarea{padding:12px 15px;border:1px solid #ddd;border-radius:6px;font-size:16px;font-family:inherit;transition:border-color .3s}.form-group input:disabled,.form-group select:disabled{background-color:#f0f0f0;color:#888;cursor:not-allowed}.form-group input:focus,.form-group select:focus{outline:none;border-color:#c00000}.form-group select{cursor:pointer;background-color:#fff}.submit-sensor-btn{flex:1;padding:14px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;margin-top:10px}.submit-sensor-btn:hover{background-color:#900}.submit-sensor-btn:active{background-color:#700}.submit-sensor-btn:disabled{background-color:#ccc;color:#666;cursor:not-allowed}.submit-sensor-btn:disabled:hover{background-color:#ccc}.button-row{display:flex;gap:10px;margin-bottom:10px}.edit-btn{flex:1;padding:14px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;margin-bottom:10px;display:flex;align-items:center;justify-content:center;gap:8px}.edit-btn:hover{background-color:#900}.edit-btn.active{background-color:#c00000}.edit-btn.active:hover{background-color:#900}.qr-scan-btn{flex:1;padding:14px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;margin-bottom:10px;display:flex;align-items:center;justify-content:center;gap:8px}.qr-scan-btn:hover{background-color:#900}.qr-scan-btn:active{background-color:#700}.location-btn:active{background-color:#700}.photo-capture-section{display:flex;flex-direction:column;align-items:center;padding:30px;border:2px dashed #ddd;border-radius:8px;background-color:#f9f9f9}.camera-btn{padding:14px 24px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;gap:8px;margin-bottom:10px}.camera-btn:hover{background-color:#900}.camera-btn:active{background-color:#700}.photo-hint{font-size:14px;color:#666;margin:0;text-align:center}.photo-preview-section{display:flex;flex-direction:column;gap:15px}.photo-preview{width:100%;max-height:400px;object-fit:contain;border-radius:8px;border:2px solid #ddd;background-color:#f5f5f5}.photo-actions{display:flex;gap:10px}.retake-btn{flex:1;padding:12px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;justify-content:center;gap:6px}.retake-btn:hover{background-color:#900}.remove-btn{flex:1;padding:12px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;justify-content:center;gap:6px}.remove-btn:hover{background-color:#900}.tab-container{display:flex;gap:0;margin-bottom:30px;border-bottom:2px solid #ddd}.tab-button{flex:1;padding:15px 30px;background-color:transparent;color:#666;border:none;border-bottom:3px solid transparent;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s}.tab-button:hover{background-color:#f5f5f5;color:#333}.tab-button.active{color:#c00000;border-bottom-color:#c00000;background-color:#fff5f5}.confirm-batch-btn{width:100%;padding:14px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:8px}.confirm-batch-btn:hover{background-color:#900}.confirm-batch-btn.confirmed{background-color:#c00000}.confirm-batch-btn.confirmed:hover{background-color:#900}.batch-sensors-dropdown{min-height:120px;padding:8px;font-family:monospace;font-size:14px;background-color:#f9f9f9;border:2px solid #C00000;border-radius:6px;cursor:pointer;transition:background-color .2s}.batch-sensors-dropdown:hover{background-color:#fff}.batch-hint{margin-top:8px;font-size:13px;color:#666;font-style:italic}.form-submit-row{display:flex;gap:10px;margin-top:10px}.next-sensor-btn{flex:1;padding:14px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:16px;font-weight:600;cursor:pointer;transition:background-color .3s;margin-top:10px}.next-sensor-btn:hover{background-color:#900}.next-sensor-btn:disabled{background-color:#ccc;color:#666;cursor:not-allowed}@media(max-width:768px){.add-sensor-container{margin:20px;padding:20px}.page-title{font-size:24px}.button-row{flex-direction:column}.photo-preview{max-height:300px}.photo-actions{flex-direction:column}}.input-error{border-color:#dc3545!important;background-color:#fff8f8;animation:shake .4s cubic-bezier(.36,.07,.19,.97) both}@keyframes shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-4px,0,0)}40%,60%{transform:translate3d(4px,0,0)}}.batch-queue-container{border:1px solid #e2e8f0;border-radius:8px;max-height:250px;overflow-y:auto;background:#f8fafc}.batch-queue-item{display:flex;justify-content:space-between;align-items:center;padding:10px 15px;border-bottom:1px solid #e2e8f0;transition:background .2s}.batch-queue-item:hover{background:#f1f5f9}.queue-item-info{flex:1;cursor:pointer;display:flex;gap:10px}.queue-index{font-weight:700;color:#64748b}.queue-id{font-weight:600;color:#1e293b}.queue-desc{color:#64748b;font-size:.9rem}.queue-delete-btn{background:none;border:none;font-size:1.2rem;cursor:pointer;padding:8px;border-radius:6px;background-color:#c00000;color:#ef4444;transition:all .2s ease}.queue-delete-btn:hover{background-color:#900;transform:scale(1.1)}.empty-queue-msg{padding:20px;text-align:center;color:#94a3b8;font-style:italic}.sensor-details-container{padding:30px;background-color:#f4f6f9;min-height:100%}.details-header{display:flex;align-items:center;margin-bottom:25px;gap:20px}.back-btn{background:none;border:none;color:#666;font-size:1rem;cursor:pointer;padding:8px 16px;border-radius:4px;transition:background .2s}.back-btn:hover{background-color:#e0e0e0;color:#333}.details-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(350px,1fr));gap:30px;max-width:1400px}.details-card{background:#fff;border-radius:8px;box-shadow:0 2px 5px #0000000d;overflow:hidden;border:1px solid #eee}.details-card.full-width{grid-column:1 / -1}.card-header{padding:15px 20px;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;align-items:center;background-color:#fafafa}.card-header h3{margin:0;font-size:1.1rem;color:#333;font-weight:600}.card-content{padding:20px}.detail-item{margin-bottom:15px;border-bottom:1px solid #f9f9f9;padding-bottom:10px}.detail-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.detail-item label{display:block;font-size:.85rem;color:#888;margin-bottom:5px;text-transform:uppercase;letter-spacing:.5px}.detail-item .value{font-size:1.1rem;color:#2c3e50;font-weight:500}.detail-item .value.mono{font-family:monospace;background:#f5f5f5;padding:4px 8px;border-radius:4px;display:inline-block}.map-preview{margin-top:15px;height:150px;background-color:#e9ecef;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#6c757d;border:2px dashed #dee2e6}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.metric-box{text-align:center;padding:15px;background:#f8f9fa;border-radius:8px}.metric-box label{display:block;font-size:.8rem;color:#666;margin-bottom:8px}.metric-value{font-size:1.5rem;font-weight:700;color:#2e86de}.metric-value.small{font-size:1.1rem;color:#333}.metric-value.low{color:#e74c3c}.metric-value.good{color:#27ae60}.sensor-detail-photo{width:100%;max-height:400px;object-fit:cover;border-radius:4px}.sensors-table-container{width:100%;height:100%;padding:40px;background-color:#f4f6f8;overflow:auto}.sensors-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:25px;background:#fff;padding:15px 20px;border-radius:12px;box-shadow:0 2px 8px #00000008;border:1px solid #f0f0f0;flex-wrap:wrap}.sensors-search{flex-grow:1;padding:10px 16px;border:1px solid #e0e0e0;border-radius:8px;min-width:250px;font-size:.95rem;box-shadow:inset 0 1px 3px #00000005;transition:all .2s;background-color:#fcfcfc}.sensors-search:focus{outline:none;border-color:#c00000;box-shadow:0 0 0 3px #c000001a;background-color:#fff}.sensors-status-filter,.sensors-date-filter{min-width:150px;padding:10px 12px;border:1px solid #e0e0e0;border-radius:6px;font-size:.95rem;color:#333;background-color:#fafafa;transition:border-color .2s;cursor:pointer}.sensors-status-filter:focus,.sensors-date-filter:focus{outline:none;border-color:#c00;background-color:#fff}.toolbar-btn,.sensors-print-btn,.sensors-filter-columns-btn{display:flex;align-items:center;gap:10px;padding:10px 18px;border:1px solid #e0e0e0;border-radius:8px;background-color:#fff;cursor:pointer;font-weight:600;font-size:.95rem;color:#4a4a4a;transition:all .2s;box-shadow:0 1px 2px #0000000d}.toolbar-btn:hover,.sensors-print-btn:hover,.sensors-filter-columns-btn:hover{background-color:#f8f9fa;border-color:#d0d0d0;color:#222;box-shadow:0 4px 12px #00000014;transform:translateY(-1px)}.filter-dropdown-container{position:relative;z-index:1050}.filter-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid #eee;border-radius:12px;box-shadow:0 10px 30px #00000026;padding:10px 0;min-width:180px;z-index:2000;animation:fadeInSlide .2s ease-out}.filter-menu-dropdown .dropdown-item{padding:10px 15px;cursor:pointer;font-size:.95rem;color:#444;transition:background .1s;display:flex;align-items:center;gap:8px}.filter-menu-dropdown .dropdown-item:hover{background-color:#f8f9fa;color:#c00000}.filter-menu-dropdown .filter-group{padding:10px 15px;border-bottom:1px solid #f0f0f0}.filter-menu-dropdown .filter-group:last-child{border-bottom:none}.filter-menu-dropdown label{display:block;margin-bottom:6px;font-size:.85rem;font-weight:600;color:#666}@keyframes fadeInSlide{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.sensors-table-wrapper{background-color:#fff;border-radius:8px;box-shadow:0 4px 6px #0000000d;overflow-x:auto;border:1px solid #e4e4e4}.sensors-table{width:100%;border-collapse:separate;border-spacing:0;text-align:left}.sensors-table thead{background-color:#c00000;color:#fff;border-bottom:2px solid #990000}.sensors-table th{padding:16px 20px;font-size:.85rem;font-weight:600;color:#fff;text-transform:uppercase;letter-spacing:.05em;border-bottom:none;white-space:nowrap}.sensors-table tbody tr{transition:background-color .15s ease-in-out}.sensors-table tbody tr:hover{background-color:#fff9f9}.sensors-table td{padding:16px 20px;font-size:.9rem;color:#2c3e50;border-bottom:1px solid #f1f3f5;vertical-align:middle}.sensors-table tbody tr:last-child td{border-bottom:none}.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 12px;border-radius:100px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}.status-badge.active{background-color:#e6f7ea;color:#1e7e34;border:1px solid #c3e6cb}.status-badge.inactive{background-color:#ffeef0;color:#bd2130;border:1px solid #f5c6cb}.status-badge.testing{background-color:#fff3cd;color:#856404;border:1px solid #ffeeba}.action-buttons{display:flex;gap:8px}.action-btn{background:#fff;border:1px solid #e1e4e8;color:#6c757d;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;cursor:pointer;transition:all .2s;font-size:1rem}.action-btn:hover{background-color:#c00000;color:#fff;border-color:#c00000;box-shadow:0 2px 4px #c0000033}.action-btn.delete:hover{background-color:#dc3545;border-color:#dc3545}.sensors-pagination{display:flex;justify-content:flex-start;align-items:center;gap:8px;margin-top:2rem;padding-top:1rem;border-top:1px solid #e1e4e8;width:auto}.pagination-btn{padding:8px 14px;background-color:#fff;color:#2c3e50;border:1px solid #cdd5dc;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s;min-width:32px;display:flex;justify-content:center;align-items:center}.pagination-btn:hover:not(:disabled){background-color:#f1f3f5;border-color:#b0b8c1;color:#1a1a1a}.pagination-btn.active{background-color:#c00000;color:#fff;border-color:#c00000;box-shadow:0 2px 4px #c0000040}.pagination-btn:disabled{opacity:.5;cursor:not-allowed;background-color:#f8f9fa;border-color:#e1e4e8;color:#adb5bd}.pagination-info{font-size:.9rem;color:#6c757d;margin-right:0;font-weight:500}.column-filter-container{position:relative;z-index:1000}.column-filter-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#fff;border:1px solid #eee;border-radius:12px;box-shadow:0 10px 30px #0000001f;padding:15px;min-width:220px;animation:dropdownFadeIn .2s ease-out}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.column-filter-item{padding:8px 0;border-bottom:1px solid #f5f5f5}.column-filter-item:last-child{border-bottom:none}.column-filter-item label{display:flex;align-items:center;font-size:.95rem;color:#444;cursor:pointer;width:100%}.column-filter-item input{margin-right:12px;accent-color:#cc0000;width:16px;height:16px}@media(max-width:768px){.sensors-table-container{padding:15px}.sensors-toolbar{flex-direction:column;align-items:stretch}.sensors-search{min-width:100%}}.location-input-wrapper{display:flex;gap:10px;align-items:center}.location-input-wrapper input{flex:1;cursor:pointer}.location-btn{padding:12px 16px;background-color:#c00000;color:#fff;border:none;border-radius:6px;font-size:20px;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;justify-content:center;min-width:50px}.location-btn:hover{background-color:#900}.share-modal-overlay{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:2000}.share-modal{background:#fff;width:min(560px,92vw);border-radius:12px;box-shadow:0 8px 30px #0003;padding:16px 16px 20px}.share-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.share-modal-header h3{margin:0;color:#c00000;font-weight:700}.share-modal-close{background:none;border:none;font-size:22px;cursor:pointer;padding:4px 8px}.share-modal-info{color:#333;margin-bottom:10px;font-size:14px;background:#f9f9f9;padding:10px;border-radius:6px;border:1px solid #eee}.share-modal-info p{margin:4px 0}.share-modal-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:15px}.share-option{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1px solid #ddd;border-radius:8px;background:#fff;padding:15px;cursor:pointer;transition:all .2s;text-align:center}.share-option:hover{border-color:#c00000;background:#fff5f5;transform:translateY(-2px);box-shadow:0 4px 6px #0000000d}.share-icon{font-size:24px;margin-bottom:4px}.share-label{font-size:13px;font-weight:600;color:#555}.toast-notification{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background-color:#1e7e34;color:#fff;padding:12px 24px;border-radius:50px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;gap:8px;z-index:3000;font-weight:600;font-size:.95rem;animation:toastSlideUp .3s ease-out}@keyframes toastSlideUp{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.modal-content{background:#fff;padding:24px;border-radius:12px;box-shadow:0 10px 25px #0003;width:500px;max-width:90vw;animation:fadeInSlide .2s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;border-bottom:1px solid #eee;padding-bottom:10px}.modal-header h3{margin:0;color:#2c3e50;font-size:1.25rem}.close-btn{background:none;border:none;font-size:24px;cursor:pointer;color:#999}.close-btn:hover{color:#333}.form-group{margin-bottom:16px}.form-group label{display:block;margin-bottom:6px;font-weight:600;color:#4b5563;font-size:.9rem}.form-control{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem;transition:border-color .2s}.form-control:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-control textarea{resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cancel-btn{padding:10px 20px;background:#f3f4f6;color:#4b5563;border:1px solid #d1d5db;border-radius:6px;font-weight:600;cursor:pointer}.cancel-btn:hover{background:#e5e7eb}.save-btn{padding:10px 20px;background:#c00000;color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer}.save-btn:hover{background:#900}.save-btn:disabled{background:#fca5a5;cursor:not-allowed}.activation-modal{background:#fff;border-radius:12px;box-shadow:0 10px 30px #00000040;width:460px;max-width:92vw;max-height:90vh;overflow-y:auto;animation:fadeInSlide .2s ease-out}.modal-body{padding:20px 24px;color:#374151;font-size:14px;line-height:1.6}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:14px 24px;border-top:1px solid #e5e7eb}.confirm-activate-btn{padding:10px 20px;background:#c00000;color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer;transition:background .2s}.confirm-activate-btn:hover{background:#900}.confirm-activate-btn:disabled{background:#fca5a5;cursor:not-allowed}.sensor-activation-container{padding:40px;background-color:#f4f6f8;min-height:100%}.activation-toolbar{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px;background:#fff;padding:16px;border-radius:12px;box-shadow:0 2px 4px #00000005;border:1px solid #eaereb}.activation-search{flex:2;min-width:250px;padding:12px 16px;border:1px solid #e0e0e0;border-radius:8px;font-size:.95rem;color:#495057;transition:all .2s;background-color:#fcfcfc}.activation-search:focus{outline:none;border-color:#c00000;background-color:#fff;box-shadow:0 0 0 3px #c000001a}.activation-filter{flex:1;min-width:150px;padding:12px 16px;border:1px solid #e0e0e0;border-radius:8px;font-size:.95rem;color:#495057;background-color:#fcfcfc;cursor:pointer;transition:all .2s}.activation-filter:focus{outline:none;border-color:#c00000}.alert-banner{padding:16px;border-radius:8px;margin-bottom:24px;font-size:.95rem;display:flex;align-items:center;gap:12px}.alert-banner.error{background-color:#fff5f5;color:#c92a2a;border:1px solid #ffc9c9;box-shadow:0 2px 4px #c92a2a0d}.sensors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.sensor-card{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000000a;transition:all .3s ease;overflow:hidden;border:1px solid #eaereb;display:flex;flex-direction:column}.sensor-card:hover{transform:translateY(-4px);box-shadow:0 12px 24px #0000001a;border-color:#d0d7de}.sensor-card-header{background:linear-gradient(135deg,#c00000,#a00000);padding:14px 20px;display:flex;justify-content:space-between;align-items:center;color:#fff}.sensor-id{font-family:Consolas,monospace;font-weight:700;font-size:.95rem;letter-spacing:.5px;background:#fff3;padding:2px 8px;border-radius:4px}.sensor-batch{font-size:.8rem;opacity:.9;font-weight:500}.sensor-card-body{padding:24px;flex-grow:1}.sensor-card-body h3{margin:0 0 16px;font-size:1.25rem;color:#2c3e50;font-weight:700;line-height:1.4}.sensor-location-wrapper{margin-bottom:20px;padding:12px;background-color:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.location-display{color:#495057;font-size:.95rem;line-height:1.5;display:flex;align-items:flex-start;gap:8px}.sensor-meta{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:16px;border-top:1px solid #f1f3f5}.sensor-meta span{font-size:.85rem;color:#6c757d;display:flex;flex-direction:column;gap:4px}.sensor-meta span:before{content:attr(data-label);font-size:.7rem;text-transform:uppercase;font-weight:700;color:#adb5bd;letter-spacing:.5px}.sensor-card-footer{padding:20px;background-color:#fcfcfc;border-top:1px solid #eaereb}.activate-btn{width:100%;padding:12px;background-color:#28a745;color:#fff;border:none;border-radius:8px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 2px 4px #28a74533}.activate-btn:hover:not(:disabled){background-color:#218838;transform:translateY(-1px);box-shadow:0 4px 8px #28a7454d}.activate-btn:active:not(:disabled){transform:translateY(0)}.activate-btn:disabled{background-color:#e9ecef;color:#adb5bd;cursor:not-allowed;box-shadow:none}.no-sensors{grid-column:1 / -1;text-align:center;padding:80px 40px;background:#fff;border-radius:12px;border:2px dashed #dee2e6;color:#adb5bd}.no-sensors p{font-size:1.25rem;font-weight:500;margin:0}.loading-state{text-align:center;padding:60px;color:#6c757d;font-size:1.1rem;animation:pulse 1.5s infinite}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.modal-header h3{color:#c00}.confirm-activate-btn{background-color:#28a745}.confirm-activate-btn:hover:not(:disabled){background-color:#218838}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.activation-modal{background:#fff;border-radius:10px;width:90%;max-width:500px;box-shadow:0 4px 20px #00000026;display:flex;flex-direction:column;overflow:hidden;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{padding:16px 20px;border-bottom:1px solid #e9ecef;display:flex;justify-content:space-between;align-items:center}.modal-header h3{margin:0;color:#343a40;font-size:1.2rem}.close-btn{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#adb5bd}.close-btn:hover{color:#495057}.modal-body{padding:20px;color:#495057}.sensor-summary{background-color:#f8f9fa;padding:12px;border-radius:6px;margin:15px 0;font-size:.9rem;border:1px solid #e9ecef}.summary-row{margin-bottom:4px}.confirmation-checkbox-wrapper{margin-top:20px;padding:10px;background-color:#fff3bf;border:1px solid #ffec99;border-radius:6px;display:flex;align-items:flex-start}.checkbox-label{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.checkbox-label input{margin-top:4px;width:16px;height:16px;cursor:pointer}.checkbox-text{font-weight:500;color:#856404;font-size:.9rem}.modal-footer{padding:16px 20px;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;gap:12px;background-color:#f8f9fa}.cancel-btn{padding:8px 16px;background:#fff;border:1px solid #ced4da;border-radius:6px;color:#495057;cursor:pointer;font-weight:500}.cancel-btn:hover{background:#f1f3f5}.confirm-activate-btn{padding:8px 16px;background-color:#20c997;color:#fff;border:none;border-radius:6px;font-weight:600;cursor:pointer;transition:all .2s}.confirm-activate-btn:hover:not(:disabled){background-color:#12b886;transform:translateY(-1px)}.confirm-activate-btn:disabled{background-color:#adb5bd;cursor:not-allowed;opacity:.7}.delete-btn{background-color:#dc3545;color:#fff;border:none;padding:10px 16px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;width:100%;margin-top:8px;transition:background-color .2s}.delete-btn:hover:not(:disabled){background-color:#c82333}.delete-btn:disabled{opacity:.5;cursor:not-allowed}.modal-warning{background-color:#fee2e2;border:1px solid #fca5a5;border-radius:8px;padding:12px 16px;display:flex;align-items:flex-start;gap:12px;margin-top:16px}.modal-warning span:first-child{font-size:20px;line-height:1}.modal-warning span:last-child{flex:1;color:#7f1d1d;font-size:14px;line-height:1.5}.modal-sensor-info{background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;margin:16px 0}.modal-sensor-info p{margin:8px 0;font-size:14px;color:#334155;line-height:1.6}.modal-sensor-info p strong{color:#0f172a;font-weight:600;display:inline-block;min-width:100px}.modal-intro{color:#64748b;font-size:14px;margin:12px 0 0}.modal-title{margin-bottom:0}.map-page{display:flex;flex-direction:column;flex:1;width:100%;height:100%;min-height:100%;position:relative;margin:0;padding:0}.map-container{position:absolute;inset:0;background-color:#fff}.map-overlay-status{position:absolute;top:20px;right:20px;background:#fff;padding:10px 20px;border-radius:8px;box-shadow:0 4px 12px #00000026;z-index:1000;font-weight:500;color:#64748b}.map-warning-toast{position:absolute;top:20px;left:50%;transform:translate(-50%);background:#fff3cd;border:1px solid #ffc107;padding:10px 25px;border-radius:8px;box-shadow:0 4px 12px #0000001a;z-index:1001;font-size:14px;color:#856404;font-weight:500;display:flex;align-items:center}.map-controls-overlay{position:absolute;top:10px;left:200px;z-index:1000;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.toggle-btn{padding:10px 16px;border:1px solid rgba(0,0,0,.1);border-radius:4px;background:#fff;color:#565656;font-size:13px;font-weight:500;box-shadow:0 2px 6px #0000004d;cursor:pointer;transition:background .2s ease;font-family:Roboto,Arial,sans-serif}.toggle-btn.active{background:#ff9800;color:#fff;border-color:#e68a00}.toggle-btn:hover{background:#f5f5f5}.toggle-btn.active:hover{background:#fb8c00}.dbu-filter-wrapper{position:relative;display:inline-block}.dbu-filter-panel{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;padding:10px;min-width:200px;max-height:320px;overflow-y:auto;z-index:1100;font-family:Roboto,Arial,sans-serif}.dbu-filter-actions{display:flex;gap:6px;margin-bottom:10px;border-bottom:1px solid #eee;padding-bottom:8px}.dbu-quick-btn{flex:1;padding:5px 0;border:1px solid rgba(0,0,0,.15);border-radius:4px;background:#f5f5f5;color:#444;font-size:12px;font-weight:600;cursor:pointer;transition:background .15s}.dbu-quick-btn:hover{background:#e0e0e0}.dbu-filter-item{display:flex;align-items:center;gap:8px;padding:5px 4px;cursor:pointer;border-radius:4px;font-size:13px;color:#333;transition:background .15s}.dbu-filter-item:hover{background:#f5f5f5}.dbu-filter-item input[type=checkbox]{accent-color:#C00000;width:15px;height:15px;cursor:pointer;flex-shrink:0}.dbu-filter-empty{font-size:12px;color:#999;margin:4px 0;text-align:center}.map-draw-hint{position:absolute;bottom:32px;left:50%;transform:translate(-50%);z-index:1001;background:#c00000e6;color:#fff;padding:10px 20px;border-radius:6px;font-size:13px;font-weight:600;font-family:Roboto,Arial,sans-serif;box-shadow:0 2px 8px #0000004d;pointer-events:none;white-space:nowrap}.map-selection-result{position:absolute;top:10px;right:56px;z-index:1000;background:#fff;border-radius:8px;box-shadow:0 2px 10px #00000040;padding:12px 14px;min-width:180px;font-family:Roboto,Arial,sans-serif}.map-selection-result-header{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:700;color:#c00000;text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.map-selection-clear{background:none;border:none;cursor:pointer;color:#999;font-size:14px;line-height:1;padding:0 2px}.map-selection-clear:hover{color:#c00000}.map-selection-total{font-size:26px;font-weight:700;color:#1a1a1a;line-height:1.1;margin-bottom:8px}.map-selection-breakdown{border-top:1px solid #f0f0f0;padding-top:8px;display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.map-selection-row{display:flex;align-items:center;gap:7px;font-size:12px;color:#444}.map-selection-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.map-selection-dot.status-active{background:#4caf50}.map-selection-dot.status-alarm{background:#f44336}.map-selection-dot.status-tracking{background:#ff9800}.map-selection-dot.status-testing{background:#ffeb3b;border:1px solid #ccc}.map-selection-dot.status-offline{background:#9e9e9e}.map-selection-count{margin-left:auto;font-weight:700;color:#1a1a1a}.map-selection-redraw{width:100%;padding:6px 0;background:#f5f5f5;border:1px solid #ddd;border-radius:4px;font-size:12px;font-weight:600;color:#444;cursor:pointer;font-family:Roboto,Arial,sans-serif}.map-selection-redraw:hover{background:#e8e8e8}:root{--cctv-bg: #f0f2f5;--cctv-sidebar-bg: #ffffff;--cctv-sidebar-border: #e2e8f0;--cctv-text-main: #0f172a;--cctv-text-muted: #64748b;--cctv-hover-bg: #f1f5f9;--cctv-active-bg: #C00000;--cctv-active-text: #ffffff;--cctv-shadow: 5px 0 25px rgba(0, 0, 0, .03);--cctv-grid-bg: #f1f5f9;--cctv-slot-border: #cbd5e1;--cctv-card-bg: #ffffff;--cctv-input-bg: #f8fafc;--cctv-input-border: #e2e8f0;--cctv-input-focus: #ffffff;--cctv-item-hover: #f8fafc}.cctv-dark-mode{--cctv-bg: #0f172a;--cctv-sidebar-bg: #1e293b;--cctv-sidebar-border: #334155;--cctv-text-main: #e2e8f0;--cctv-text-muted: #94a3b8;--cctv-hover-bg: #334155;--cctv-active-bg: #3b82f6;--cctv-active-text: #ffffff;--cctv-shadow: 5px 0 25px rgba(0, 0, 0, .2);--cctv-grid-bg: #000000;--cctv-slot-border: #333333;--cctv-card-bg: #1e293b;--cctv-input-bg: #334155;--cctv-input-border: #475569;--cctv-input-focus: #334155;--cctv-item-hover: #475569}.cctv-page{display:flex;height:100vh;width:100vw;background-color:var(--cctv-bg);color:var(--cctv-text-main);overflow:hidden;font-family:Inter,system-ui,-apple-system,sans-serif;transition:background-color .3s,color .3s}.cctv-sidebar-left{width:80px;background-color:var(--cctv-sidebar-bg);border-right:1px solid var(--cctv-sidebar-border);display:flex;flex-direction:column;align-items:center;padding:20px 0;z-index:20;box-shadow:var(--cctv-shadow);transition:background-color .3s,border-color .3s}.cctv-nav-btn{width:50px;height:50px;border-radius:12px;background:transparent;color:var(--cctv-text-muted);border:none;cursor:pointer;display:flex;justify-content:center;align-items:center;margin-bottom:20px;transition:all .2s ease}.cctv-nav-btn:hover{background-color:var(--cctv-hover-bg);color:var(--cctv-text-main)}.cctv-nav-btn.active{background-color:var(--cctv-active-bg);color:var(--cctv-active-text);box-shadow:0 4px 12px #0003}.cctv-theme-toggle{margin-top:auto;margin-bottom:20px}.cctv-divider{width:40px;height:1px;background-color:var(--cctv-sidebar-border);margin:10px 0 20px}.layout-icon{display:grid;gap:2px;width:20px;height:20px}.layout-icon div{background-color:currentColor;border-radius:1px}.icon-1x1{grid-template-columns:1fr}.icon-2x2{grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}.icon-3x3{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.icon-l-shape{grid-template-areas:"main main side1" "main main side2" "side5 side4 side3";grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr}.icon-l-shape .main{grid-area:main}.icon-l-shape .side1{grid-area:side1}.icon-l-shape .side2{grid-area:side2}.icon-l-shape .side3{grid-area:side3}.icon-l-shape .side4{grid-area:side4}.icon-l-shape .side5{grid-area:side5}.icon-l-shape-rev{grid-template-areas:"side1 main main" "side2 main main" "side3 side4 side5";grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr}.icon-l-shape-rev .main{grid-area:main}.icon-l-shape-rev .side1{grid-area:side1}.icon-l-shape-rev .side2{grid-area:side2}.icon-l-shape-rev .side3{grid-area:side3}.icon-l-shape-rev .side4{grid-area:side4}.icon-l-shape-rev .side5{grid-area:side5}.icon-l-shape-inv{grid-template-areas:"side1 side2 side3" "main main side4" "main main side5";grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr}.icon-l-shape-inv .main{grid-area:main}.icon-l-shape-inv .side1{grid-area:side1}.icon-l-shape-inv .side2{grid-area:side2}.icon-l-shape-inv .side3{grid-area:side3}.icon-l-shape-inv .side4{grid-area:side4}.icon-l-shape-inv .side5{grid-area:side5}.icon-l-shape-rev-inv{grid-template-areas:"side1 side2 side3" "side4 main main" "side5 main main";grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr}.icon-l-shape-rev-inv .main{grid-area:main}.icon-l-shape-rev-inv .side1{grid-area:side1}.icon-l-shape-rev-inv .side2{grid-area:side2}.icon-l-shape-rev-inv .side3{grid-area:side3}.icon-l-shape-rev-inv .side4{grid-area:side4}.icon-l-shape-rev-inv .side5{grid-area:side5}.cctv-main{flex:1;position:relative;padding:10px;background-color:var(--cctv-grid-bg);display:flex;align-items:center;justify-content:center;transition:background-color .3s}.cctv-grid{width:100%;height:100%;display:grid;gap:4px}.grid-1x1{grid-template-columns:1fr;grid-template-rows:1fr}.grid-2x2{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr)}.grid-3x3{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.grid-l-shape{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;grid-template-areas:"main main side1" "main main side2" "side5 side4 side3";gap:4px}.grid-l-shape-rev{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;grid-template-areas:"side1 main main" "side2 main main" "side3 side4 side5";gap:4px}.grid-l-shape-inv{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;grid-template-areas:"side1 side2 side3" "main main side4" "main main side5";gap:4px}.grid-l-shape-rev-inv{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr 1fr 1fr;grid-template-areas:"side1 side2 side3" "side4 main main" "side5 main main";gap:4px}.cctv-slot{background-color:#000;border:1px solid var(--cctv-slot-border);position:relative;display:flex;justify-content:center;align-items:center;overflow:hidden;border-radius:4px;box-shadow:0 4px 6px -1px #0000001a;transition:border-color .3s}.cctv-slot.droppable-active{border:2px dashed var(--cctv-active-bg);background-color:#c000000d}.cctv-slot-placeholder{color:var(--cctv-text-muted);font-size:.9rem;pointer-events:none;-webkit-user-select:none;user-select:none;font-weight:500}.cctv-player-wrapper{width:100%;height:100%;position:relative}.cctv-iframe{width:100%;height:100%;object-fit:cover;pointer-events:none}.cctv-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:10px;background:linear-gradient(to bottom,rgba(0,0,0,.6) 0%,transparent 20%,transparent 80%,rgba(0,0,0,.8) 100%);opacity:0;transition:opacity .2s;pointer-events:auto;cursor:grab}.cctv-player-wrapper:hover .cctv-overlay{opacity:1}.cctv-header{display:flex;justify-content:space-between;align-items:center}.cctv-rec{color:#ef4444;font-weight:700;font-size:.8rem;display:flex;align-items:center;gap:5px;background:#0006;padding:2px 6px;border-radius:4px}.rec-dot{width:8px;height:8px;background-color:#ef4444;border-radius:50%;animation:blink 1s infinite}.cctv-close-btn{background:#fff3;border:none;color:#fff;width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:background .2s}.cctv-close-btn:hover{background:#fff6}.cctv-footer{font-size:.75rem;color:#f1f5f9;text-shadow:0 1px 2px rgba(0,0,0,.8);background:#0006;padding:4px 8px;border-radius:4px;align-self:flex-start}.cctv-sidebar-right{background-color:var(--cctv-sidebar-bg);border-left:1px solid var(--cctv-sidebar-border);display:flex;flex-direction:column;position:relative;transition:width .3s ease,background-color .3s,border-color .3s;box-shadow:-5px 0 25px #00000008}.cctv-sidebar-right.expanded{width:300px}.cctv-sidebar-right.collapsed{width:20px}.cctv-sidebar-content{display:flex;flex-direction:column;height:100%;overflow:hidden;width:300px}.cctv-toggle-btn{position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:24px;height:48px;background-color:var(--cctv-active-bg);color:#fff;border:none;border-radius:4px 0 0 4px;font-weight:700;font-size:1.2rem;cursor:pointer;z-index:100;display:flex;align-items:center;justify-content:center;box-shadow:-2px 0 5px #0000001a;transition:background-color .3s}.cctv-rotation-panel{padding:15px;background-color:var(--cctv-bg);border-bottom:1px solid var(--cctv-sidebar-border)}.rotation-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:600;font-size:.9rem;color:var(--cctv-text-main)}.rotation-settings{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--cctv-text-muted)}.rotation-settings input{width:60px;padding:4px;background:var(--cctv-card-bg);border:1px solid var(--cctv-input-border);color:var(--cctv-text-main);border-radius:4px;text-align:center}.switch{position:relative;display:inline-block;width:34px;height:20px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:var(--cctv-slot-border);transition:.4s;border-radius:20px}.slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;bottom:3px;background-color:#fff;transition:.4s;border-radius:50%;box-shadow:0 1px 2px #0003}input:checked+.slider{background-color:var(--cctv-active-bg)}input:checked+.slider:before{transform:translate(14px)}.cctv-search-box{padding:20px;border-bottom:1px solid var(--cctv-sidebar-border);background:var(--cctv-sidebar-bg)}.cctv-search-input{width:100%;padding:10px 12px;background-color:var(--cctv-input-bg);border:1px solid var(--cctv-input-border);border-radius:8px;color:var(--cctv-text-main);font-size:.9rem;transition:all .2s}.cctv-search-input:focus{outline:none;border-color:var(--cctv-active-bg);background:var(--cctv-input-focus);box-shadow:0 0 0 3px #c000001a}.cctv-list-container{flex:1;overflow-y:auto;padding:10px;background:var(--cctv-sidebar-bg)}.cctv-area-group{margin-bottom:15px}.cctv-area-title{font-size:.75rem;text-transform:uppercase;color:var(--cctv-text-muted);margin-bottom:8px;padding-left:8px;font-weight:700;letter-spacing:.05em}.cctv-draggable-item{background-color:var(--cctv-card-bg);padding:12px;margin-bottom:8px;border-radius:8px;cursor:grab;display:flex;justify-content:space-between;align-items:center;transition:all .2s;border:1px solid var(--cctv-input-border);box-shadow:0 1px 2px #0000000d}.cctv-draggable-item:hover{background-color:var(--cctv-item-hover);border-color:var(--cctv-sidebar-border);transform:translateY(-2px);box-shadow:0 4px 6px -1px #0000000d}.cctv-draggable-item:active{cursor:grabbing}.cctv-item-info h4{margin:0;font-size:.9rem;font-weight:600;color:var(--cctv-text-main)}.cctv-item-info p{margin:2px 0 0;font-size:.75rem;color:var(--cctv-text-muted)}.status-dot-small{width:6px;height:6px;border-radius:50%;background-color:#2ecc71}@keyframes blink{0%{opacity:1}50%{opacity:.3}to{opacity:1}}.cctv-list-container::-webkit-scrollbar{width:6px}.cctv-list-container::-webkit-scrollbar-track{background:var(--cctv-bg)}.cctv-list-container::-webkit-scrollbar-thumb{background:var(--cctv-slot-border);border-radius:3px}.events{width:100%;height:100%;background-color:#fff;padding:40px;overflow:auto}@media print{body *{visibility:hidden}body,html,#root,.app-container,.main-content{margin:0;padding:0;width:100%;height:auto;overflow:visible!important;background:#fff!important}.events.page-container,.events.page-container *{visibility:visible}.left-panel,.sensors-toolbar,.profile-banner,.page-title,.print-btn-container,.filter-dropdown-container,.filter-menu-dropdown{display:none!important}.events.page-container{position:relative;width:100%;margin:0;padding:0;left:auto;top:auto}.print-header{display:block!important;text-align:center;margin-bottom:30px;padding-bottom:10px;border-bottom:2px solid #C00000;visibility:visible}.print-logo{height:50px;margin-bottom:15px;object-fit:contain}.print-title{font-size:24px;font-weight:700;color:#c00000;text-transform:uppercase;letter-spacing:1px;margin-bottom:5px}.print-meta{font-size:11px;color:#444;font-family:Courier New,Courier,monospace}.sensors-table-wrapper{box-shadow:none!important;border:none!important;overflow:visible!important;display:block}.sensors-table{width:100%;border-collapse:collapse;font-family:Times New Roman,Times,serif;font-size:11pt;color:#000;page-break-inside:auto}.sensors-table thead{background-color:#c00000!important;color:#fff!important;border-bottom:2px solid #990000;display:table-header-group;-webkit-print-color-adjust:exact;print-color-adjust:exact}.sensors-table th{padding:8px;border:1px solid #000;text-align:left;font-weight:700;background-color:#c00000!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.sensors-table tr{page-break-inside:avoid;break-inside:avoid;page-break-after:auto}.sensors-table td{border:1px solid #000;padding:8px;color:#000!important;vertical-align:top}.status-badge{border:none!important;background:none!important;color:#000!important;padding:0;font-weight:400;text-transform:none}}.print-header{display:none}.event-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.event-modal-content{background-color:#fff;padding:30px;border-radius:8px;width:500px;max-width:90%;box-shadow:0 4px 6px #0000001a;position:relative;display:flex;flex-direction:column;gap:15px}.event-modal-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #eee;padding-bottom:15px}.event-modal-title{font-size:20px;font-weight:600;color:#333;margin:0}.event-modal-close{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:0;line-height:1}.event-modal-close:hover{color:#333}.event-modal-body{display:flex;flex-direction:column;gap:12px}.event-detail-item{display:flex;flex-direction:column;gap:4px}.event-detail-label{font-size:12px;color:#666;text-transform:uppercase;font-weight:600}.event-detail-value{font-size:16px;color:#333;word-break:break-word}.event-detail-value.details-box{background-color:#f8f9fa;padding:10px;border-radius:4px;border:1px solid #e9ecef;max-height:200px;overflow-y:auto;font-family:monospace;font-size:14px}.sensors-table tbody tr{cursor:pointer;transition:background-color .2s}.sensors-table tbody tr:hover{background-color:#f8f9fa}
