.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.login-box{background:white;padding:40px;border-radius:10px;box-shadow:0 10px 25px #0003;width:100%;max-width:400px}.login-box h1{color:#667eea;margin-bottom:10px;text-align:center}.login-box h2{color:#333;margin-bottom:30px;text-align:center;font-size:20px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:5px;color:#333;font-weight:500}.form-group input{width:100%;padding:10px;border:1px solid #ddd;border-radius:5px;font-size:14px;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}button[type=submit]{width:100%;padding:12px;background:#667eea;color:#fff;border:none;border-radius:5px;font-size:16px;font-weight:600;cursor:pointer;transition:background .3s}button[type=submit]:hover:not(:disabled){background:#5568d3}button[type=submit]:disabled{background:#ccc;cursor:not-allowed}.error-message{background:#fee;color:#c33;padding:10px;border-radius:5px;margin-bottom:20px;font-size:14px}.toggle-auth{text-align:center;margin-top:20px;color:#666}.toggle-auth button{background:none;border:none;color:#667eea;cursor:pointer;font-weight:600;text-decoration:underline}.toggle-auth button:hover{color:#5568d3}.dashboard{padding:20px;background:#f5f5f5;min-height:100vh}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;background:white;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.dashboard-header h1{margin:0;color:#333}.header-actions{display:flex;gap:10px}.btn-primary{background:#667eea;color:#fff;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:600;transition:background .3s}.btn-primary:hover{background:#5568d3}.btn-admin-management{background:#28a745;color:#fff;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:600;transition:background .3s}.btn-admin-management:hover{background:#218838}.tabs{display:flex;gap:10px;margin-bottom:20px;background:white;padding:10px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.tab{padding:10px 20px;background:#f0f0f0;border:none;border-radius:5px;cursor:pointer;font-weight:500;transition:all .3s}.tab.active{background:#667eea;color:#fff}.content{background:white;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a}.content:has(.map-container){padding:0}.loading{text-align:center;padding:40px;color:#666;font-size:18px}.historial-header-section{margin-bottom:20px}.historial h2{margin:0 0 15px;color:#333}.historial-filters{display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding:15px;background:#f9f9f9;border-radius:5px;margin-bottom:20px}.historial-filters .date-filter-group{display:flex;flex-direction:column;gap:5px}.historial-filters .date-filter-group label{font-size:12px;font-weight:600;color:#666}.historial-filters .date-filter-group input[type=date],.historial-filters .date-filter-group input[type=datetime-local],.historial-filters .date-filter-group select{padding:8px;border:1px solid #ddd;border-radius:5px;font-size:14px;font-family:inherit;min-width:200px}.historial-filters .date-filter-group input[type=date]:focus,.historial-filters .date-filter-group input[type=datetime-local]:focus,.historial-filters .date-filter-group select:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.device-filter-select{background-color:#fff;cursor:pointer}.historial-filters .filter-buttons{display:flex;gap:10px;align-items:flex-end}.historial-filters .btn-apply-filter,.historial-filters .btn-clear-filter{padding:8px 16px;border:none;border-radius:5px;cursor:pointer;font-weight:600;font-size:14px;transition:background .3s}.historial-filters .btn-apply-filter{background:#667eea;color:#fff}.historial-filters .btn-apply-filter:hover:not(:disabled){background:#5568d3}.historial-filters .btn-apply-filter:disabled{background:#ccc;cursor:not-allowed}.historial-filters .btn-clear-filter{background:#f0f0f0;color:#333}.historial-filters .btn-clear-filter:hover:not(:disabled){background:#e0e0e0}.historial-filters .btn-clear-filter:disabled{background:#f5f5f5;color:#999;cursor:not-allowed}.loading-state{text-align:center;padding:40px;color:#666;font-size:16px}.historial-list{display:flex;flex-direction:column;gap:15px}.historial-item{padding:15px;background:#f9f9f9;border-left:4px solid #667eea;border-radius:4px;transition:all .3s}.historial-item:hover{box-shadow:0 2px 8px #0000001a}.historial-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.historial-header strong{color:#333}.tipo{display:inline-block;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.tipo.creacion{background:#d1ecf1;color:#0c5460}.tipo.actualizacion{background:#fff3cd;color:#856404}.tipo.pago{background:#d4edda;color:#155724}.tipo.moving{background:#cce5ff;color:#004085}.tipo.stopped{background:#f8d7da;color:#721c24}.historial-desc{margin:8px 0;color:#666;font-size:14px}.historial-monto{margin:8px 0;color:#28a745;font-weight:600;font-size:14px}.historial-fecha{color:#999;font-size:12px}.empty-state{text-align:center;color:#999;padding:40px;font-size:16px}.historial-coords{margin:10px 0}.historial-info{margin:5px 0;color:#666;font-size:13px}.map-container{position:relative;width:100%;height:600px;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.map{width:100%;height:100%}.map-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:600px;background:#f5f5f5;border-radius:8px;color:#666}.map-loading-hint{margin-top:10px;font-size:12px;color:#999}.map-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:white;padding:20px;border-radius:8px;box-shadow:0 2px 8px #0003;z-index:10}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000;padding:20px}.admin-modal-content{background:white;border-radius:8px;box-shadow:0 10px 40px #0000004d;width:100%;max-width:800px;max-height:90vh;overflow-y:auto;position:relative}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;position:sticky;top:0;background:white;z-index:10}.modal-header h2{margin:0;color:#333}.close-btn{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.close-btn:hover{background:#f0f0f0;color:#333}.admin-modal-body{padding:20px}.admin-actions{margin-bottom:20px}.btn-new-admin{background:#667eea;color:#fff;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:600;transition:all .3s}.btn-new-admin:hover{background:#5568d3}.admin-form-container{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:30px}.admin-form-container h3{margin-top:0;margin-bottom:15px;color:#333}.admin-form-container .form-group{margin-bottom:15px}.admin-form-container .form-group label{display:block;margin-bottom:5px;color:#333;font-weight:500}.admin-form-container .form-group input{width:100%;padding:10px;border:1px solid #ddd;border-radius:5px;font-size:14px;font-family:inherit;box-sizing:border-box}.admin-form-container .form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-actions,.admin-list-container{margin-top:20px}.admin-list-container h3{margin-bottom:15px;color:#333}.admin-table{width:100%;border-collapse:collapse;background:white}.admin-table thead{background:#f5f5f5}.admin-table th{padding:12px;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #ddd}.admin-table td{padding:12px;border-bottom:1px solid #eee}.admin-table tbody tr:hover{background:#f9f9f9}.empty-state{text-align:center;padding:40px;color:#999}.loading{text-align:center;padding:40px;color:#667eea}.device-list{width:100%;overflow-x:auto}.device-table{width:100%;border-collapse:collapse;font-size:14px}.device-table thead{background:#667eea;color:#fff}.device-table th{padding:12px;text-align:left;font-weight:600;border-bottom:2px solid #5568d3}.device-table td{padding:12px;border-bottom:1px solid #eee}.device-table tbody tr:hover{background:#f5f5f5}.device-row-clickable{cursor:pointer;transition:background-color .2s}.device-row-clickable:hover{background:#e3f2fd!important}.device-table tbody tr:last-child td{border-bottom:none}.device-table strong{color:#333;font-weight:600}.status{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;display:inline-block}.status.moving{background:#ff9800;color:#fff}.status.stopped{background:#4caf50;color:#fff}.empty-state{text-align:center;padding:40px;color:#666;font-size:16px}.device-map-modal-content{background:white;border-radius:8px;box-shadow:0 10px 40px #0000004d;width:90%;max-width:1200px;max-height:90vh;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee}.modal-header h2{margin:0;color:#333;font-size:20px}.close-btn{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-btn:hover{color:#333}.error-message{background:#fee;color:#c33;padding:10px 20px;margin:0 20px 20px;border-radius:5px;font-size:14px}.filter-section{padding:15px 20px;border-bottom:1px solid #eee;background:#f9f9f9}.date-filters{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.date-filter-group{display:flex;flex-direction:column;gap:5px}.date-filter-group label{font-size:12px;font-weight:600;color:#666}.date-filter-group input[type=date],.date-filter-group input[type=datetime-local]{padding:8px;border:1px solid #ddd;border-radius:5px;font-size:14px;font-family:inherit;min-width:200px}.date-filter-group input[type=date]:focus,.date-filter-group input[type=datetime-local]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.filter-buttons{display:flex;gap:10px;align-items:flex-end}.btn-apply-filter,.btn-clear-filter{padding:8px 16px;border:none;border-radius:5px;cursor:pointer;font-weight:600;font-size:14px;transition:background .3s}.btn-apply-filter{background:#667eea;color:#fff}.btn-apply-filter:hover:not(:disabled){background:#5568d3}.btn-apply-filter:disabled{background:#ccc;cursor:not-allowed}.btn-clear-filter{background:#f0f0f0;color:#333}.btn-clear-filter:hover:not(:disabled){background:#e0e0e0}.btn-clear-filter:disabled{background:#f5f5f5;color:#999;cursor:not-allowed}.loading-container{padding:40px;text-align:center;color:#666}.map-container-modal{flex:1;min-height:500px;position:relative;overflow:hidden}.map-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,.8);display:flex;align-items:center;justify-content:center;z-index:1000;pointer-events:none}.map-loading-overlay p{background:white;padding:15px 25px;border-radius:5px;box-shadow:0 2px 10px #0003;color:#667eea;font-weight:600}.map-modal{width:100%;height:100%;min-height:500px}.map-loading{display:flex;align-items:center;justify-content:center;height:500px;color:#666}.modal-footer{display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-top:1px solid #eee}.locations-info{color:#666;font-size:14px}.btn-load-more{background:#667eea;color:#fff;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-weight:600;transition:background .3s}.btn-load-more:hover:not(:disabled){background:#5568d3}.btn-load-more:disabled{background:#ccc;cursor:not-allowed}.header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:20px;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header h1{margin:0;font-size:24px}.header-info{display:flex;align-items:center;gap:20px}.header-info span{font-size:14px}.btn-logout{background:rgba(255,255,255,.2);color:#fff;border:1px solid white;padding:8px 16px;border-radius:5px;cursor:pointer;font-weight:600;transition:all .3s}.btn-logout:hover{background:rgba(255,255,255,.3)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f5f5f5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app{display:flex;flex-direction:column;min-height:100vh}
