.connection-manager{display:flex;align-items:center}.connection-status{display:flex;align-items:center;margin-right:16px}.status-indicator{width:12px;height:12px;border-radius:50%;margin-right:8px}.status-indicator.connected{background-color:#4caf50}.status-indicator.disconnected{background-color:#f44336}.connect-button{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;font-size:14px;color:#fff;text-transform:uppercase;font-weight:500;transition:background-color .3s}.connect-button.connected{background-color:#f44336}.connect-button.connected:hover{background-color:#d32f2f}.connect-button.disconnected{background-color:#1976d2}.connect-button.disconnected:hover{background-color:#1565c0}.connect-button:disabled{cursor:not-allowed;opacity:.7}.battery-container{display:flex;align-items:center;margin-left:16px;font-size:14px}.battery-icon{width:20px;height:10px;border:1px solid currentColor;position:relative;margin-right:4px;background-color:transparent}.battery-level{position:absolute;top:1px;left:1px;height:8px;background-color:#4caf50}.battery-level.low{background-color:#f44336}.battery-terminal{content:"";position:absolute;top:1px;right:-4px;width:3px;height:6px;background-color:currentColor}.device-list{position:absolute;top:100%;left:0;background-color:#fff;border:1px solid #ddd;border-radius:4px;padding:16px;min-width:250px;box-shadow:0 4px 8px #0000001a;z-index:1000}.device-list h3{margin-top:0}.device-list ul{list-style:none;padding:0;margin:8px 0}.device-item{margin-bottom:8px}.device-button{width:100%;text-align:left;padding:8px 12px;background-color:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;transition:background-color .2s}.device-button:hover{background-color:#f0f0f0}.code-manager{background-color:#fff;border-radius:8px;padding:16px}.code-manager-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.code-manager-title{margin:0;color:#333;border-bottom:1px solid #eee;padding-bottom:8px}.add-code-form{margin-bottom:16px;background-color:#f5f5f5;border-radius:4px;padding:16px}.add-code-form h3{margin-top:0}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:4px;font-weight:500;color:#555}.form-input,.form-select{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;box-sizing:border-box}.form-button{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;font-size:14px;background-color:#1976d2;color:#fff;text-transform:uppercase;font-weight:500;letter-spacing:.5px;transition:background-color .3s}.form-button:hover{background-color:#1565c0}.saved-codes-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.saved-codes-title{margin:0;color:#555}.code-item{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid rgba(0,0,0,.12);border-radius:4px;margin-bottom:8px}.code-item.used{background-color:#f0f0f0}.code-details strong.used{text-decoration:line-through}.code-type{color:#777}.delete-button{padding:4px 8px;border-radius:4px;border:none;cursor:pointer;font-size:12px;background-color:#f44336;color:#fff;text-transform:uppercase;font-weight:500;transition:background-color .3s}.delete-button:hover{background-color:#d32f2f}.door-controls{background-color:#fff;border-radius:8px;padding:16px;max-width:400px;margin:0 auto;text-align:center}.door-controls-header{margin:0;color:#333;border-bottom:1px solid #eee;padding-bottom:8px}.open-button{padding:8px 16px;border-radius:4px;border:none;cursor:pointer;font-size:14px;color:#fff;text-transform:uppercase;font-weight:500;letter-spacing:.5px;transition:background-color .3s}.open-button.enabled{background-color:#1976d2}.open-button.enabled:hover{background-color:#1565c0}.open-button.disabled{background-color:#bdbdbd;cursor:not-allowed}.language-selector{position:relative;display:inline-block}.language-select{border-radius:4px;border:1px solid rgba(255,255,255,.3);background-color:#fff3;color:#fff;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3e%3cpath d='M7 10l5 5 5-5z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 8px center;background-size:16px;padding:8px 32px 8px 12px}.language-option{color:#333}.log-viewer{background-color:var(--mui-background-paper, white);border-radius:8px;padding:16px}@media(prefers-color-scheme:dark){.log-viewer{background-color:var(--mui-background-paper, #1e1e1e)}}.log-viewer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.log-viewer-title{margin:0;color:var(--mui-text-primary, #333);border-bottom:1px solid var(--mui-divider, #eee);padding-bottom:8px}@media(prefers-color-scheme:dark){.log-viewer-title{color:var(--mui-text-primary, #ecf0f1);border-bottom:1px solid var(--mui-divider, #34495e)}}.log-controls{display:flex;gap:8px}.log-button{padding:6px 12px;border-radius:4px;border:none;cursor:pointer;font-size:12px;background-color:var(--mui-primary-main, #4a90e2);color:#fff;text-transform:uppercase;font-weight:500;letter-spacing:.5px;transition:background-color .3s}.log-button:hover{background-color:var(--mui-primary-dark, #357abd)}.log-button.clear{background-color:var(--mui-error-main, #e74c3c)}.log-button.clear:hover{background-color:var(--mui-error-dark, #c0392b)}.log-container{background-color:var(--mui-background-paper, #2c3e50);color:var(--mui-text-primary, #ecf0f1);border-radius:4px;padding:16px;font-family:Courier New,monospace;max-height:400px;overflow-y:auto;white-space:pre-wrap;word-break:break-word}@media(prefers-color-scheme:dark){.log-container{background-color:var(--mui-background-paper, #1e1e1e);color:var(--mui-text-primary, #ecf0f1)}}.log-entry{margin-bottom:4px;padding:4px 0;border-bottom:1px solid var(--mui-divider, #34495e)}@media(prefers-color-scheme:dark){.log-entry{border-bottom:1px solid var(--mui-divider, #34495e)}}.log-timestamp{color:var(--mui-text-secondary, #95a5a6);margin-right:8px}@media(prefers-color-scheme:dark){.log-timestamp{color:var(--mui-text-secondary, #bbb)}}.log-info{color:var(--mui-secondary-main, #50e3c2)}.log-error{color:var(--mui-error-main, #e74c3c)}.log-success{color:var(--mui-success-main, #2ecc71)}.log-warning{color:var(--mui-warning-main, #f39c12)}.log-debug{color:#9b59b6}:root{--primary-color: #1a73e8;--secondary-color: #50e3c2;--danger-color: #e74c3c;--warning-color: #f39c12;--success-color: #2ecc71;--dark-color: #2c3e50;--light-color: #ecf0f1;--border-radius: 8px;--box-shadow: 0 4px 6px rgba(0, 0, 0, .1);--transition: all .3s ease}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333;background-color:#f8f9fa}@media(prefers-color-scheme:dark){body{color:#ecf0f1;background-color:#121212}}.container{max-width:1200px;margin:0 auto;padding:0 20px}.btn{display:inline-block;padding:10px 20px;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:16px;font-weight:600;text-align:center;transition:var(--transition);text-decoration:none}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:#357abd;transform:translateY(-2px)}.btn-secondary{background-color:var(--secondary-color);color:#fff}.btn-secondary:hover{background-color:#3bd2b0;transform:translateY(-2px)}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-danger:hover{background-color:#c0392b;transform:translateY(-2px)}.btn-success{background-color:var(--success-color);color:#fff}.btn-success:hover{background-color:#27ae60;transform:translateY(-2px)}.btn-block{display:block;width:100%}.card{background:var(--mui-background-paper, white);border-radius:var(--border-radius);box-shadow:var(--box-shadow);padding:20px;margin-bottom:20px;transition:var(--transition)}@media(prefers-color-scheme:dark){.card{background:var(--mui-background-paper, #1e1e1e)}}.card:hover{box-shadow:0 6px 12px #00000026}.card-header{border-bottom:1px solid #eee;padding-bottom:10px;margin-bottom:15px;font-size:1.2em;font-weight:600}.form-group{margin-bottom:15px}.form-label{display:block;margin-bottom:5px;font-weight:600}.form-input{width:100%;padding:10px;border:1px solid #ddd;border-radius:var(--border-radius);font-size:16px;transition:var(--transition)}.form-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4a90e233}.status-indicator{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:8px}.status-connected{background-color:var(--success-color)}.status-disconnected{background-color:var(--danger-color)}.status-pending{background-color:var(--warning-color)}.connection-status{display:flex;align-items:center;padding:10px;border-radius:var(--border-radius);margin-bottom:20px}.connection-status.connected{background-color:#2ecc7133;border:1px solid var(--success-color)}.connection-status.disconnected{background-color:#e74c3c33;border:1px solid var(--danger-color)}.code-list{list-style:none}.code-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border-bottom:1px solid #eee}.code-item:last-child{border-bottom:none}.code-details{flex:1}.code-actions{display:flex;gap:10px}.log-container{background-color:#2c3e50;color:#ecf0f1;border-radius:var(--border-radius);padding:15px;font-family:Courier New,monospace;max-height:400px;overflow-y:auto}.log-entry{margin-bottom:5px;padding:5px 0;border-bottom:1px solid #34495e}.log-entry:last-child{border-bottom:none}.log-timestamp{color:#95a5a6;margin-right:10px}.log-info{color:#50e3c2}.log-error{color:#e74c3c}.log-success{color:#2ecc71}@media(max-width:768px){.container{padding:0 10px}.card{padding:15px}.code-item{flex-direction:column;align-items:flex-start}.code-actions{margin-top:10px;width:100%;justify-content:flex-end}}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#1a73e8;text-decoration:inherit}a:hover{color:#50e3c2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a73e8;color:#fff;cursor:pointer;transition:border-color .25s}button:hover{border-color:#50e3c2}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}
