*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark light;font-family:system-ui,-apple-system,Segoe UI,sans-serif}body{background:#000;color:#fff}.login{max-width:420px;margin:8vh auto;padding:0 16px;display:flex;flex-direction:column;gap:14px}.login h1{text-align:center;font-size:28px;letter-spacing:2px}.login .logo{display:inline-block;background:#00e676;color:#000;border-radius:50%;width:40px;height:40px;line-height:40px;text-align:center;font-weight:800;margin-right:6px}.tabs{display:flex;gap:8px}.tabs button{flex:1;padding:10px;border:1px solid #333;background:#000;color:#888;font-size:15px;border-radius:8px}.tabs button.activo{color:#fff;border-color:#00e676}.login form{display:flex;flex-direction:column;gap:10px}.login input{padding:14px;border-radius:8px;border:1px solid #333;background:#111;color:#fff;font-size:16px}.principal{padding:14px;border-radius:8px;border:none;background:#00e676;color:#000;font-weight:700;font-size:16px}.error{color:#ff5252;font-size:14px}.aviso{color:#00e676;font-size:14px}.nota{color:#666;font-size:12px;text-align:center}.app{height:100dvh;display:flex;flex-direction:column;background:#000}.app.dia{background:#f4f4f4;color:#111}.app header{display:flex;gap:12px;align-items:center;padding:8px 12px;border-bottom:1px solid #222;font-size:14px}.app header b{color:#00e676;letter-spacing:1px}.app.dia header{border-color:#ccc}.app header .ok{color:#00e676}.app header .off{color:#ff5252}.app header .cola{color:#ffb300}.app header .alertas-n{color:#ff5252}.app header button{margin-left:auto;background:none;border:1px solid #333;color:inherit;border-radius:6px;padding:6px 10px}.app header button+button{margin-left:0}.app main{flex:1;display:grid;min-height:0;grid-template-columns:30% 34% 36%;grid-template-rows:62% 38%;gap:8px;padding:8px}.velocimetro{grid-row:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.velocimetro .vel{font-size:clamp(64px,14vw,120px);font-weight:800;line-height:1}.velocimetro .unidad{color:#888;letter-spacing:4px}.velocimetro .limite{margin-top:8px;font-size:15px;border:2px solid #fff;border-radius:8px;padding:2px 12px}.velocimetro.exceso .vel{color:#ff5252;animation:latido .8s infinite}.velocimetro.exceso .limite{border-color:#ff5252;color:#ff5252}@keyframes latido{50%{opacity:.55}}.disco{width:100%;height:100%;object-fit:contain}.lineal{width:100%}.no-esta{grid-column:2 / 4;grid-row:2;border:none;border-radius:14px;background:#d50000;color:#fff;font-size:clamp(30px,6vw,56px);font-weight:900;letter-spacing:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:0}.no-esta small{font-size:16px;font-weight:500;letter-spacing:0;color:#ffcdd2}.no-esta:disabled{background:#4a1010;color:#7a5a5a}.no-esta:not(:disabled):active{transform:scale(.97)}.demo{display:flex;gap:6px;padding:6px;border-top:1px solid #222;overflow-x:auto}.demo button{flex:1 0 auto;padding:8px 12px;border-radius:8px;font-size:12px;border:1px solid #333;background:#000;color:#aaa;white-space:nowrap}.demo button:active{border-color:#00e676;color:#00e676}.app header .mic{font-size:18px}.app header .mic.activo{border-color:#00e676}.app header .voz{color:#00e676;font-size:12px}.app header .panel{border-color:#ffb300;color:#ffb300}.admin main{display:block;padding:12px;overflow-y:auto}.admin .tabs-a{display:flex;gap:6px;margin-left:8px;flex:1}.admin .tabs-a button{background:none;border:1px solid #333;color:#888;border-radius:6px;padding:6px 10px;font-size:13px}.admin .tabs-a button.activo{color:#fff;border-color:#00e676}.admin h2{font-size:15px;margin:14px 0 8px;color:#aaa}.lista{display:flex;flex-direction:column;gap:8px;max-width:640px}.lista .fila{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid #222;border-radius:8px;padding:8px 10px;font-size:13px}.lista .fila small{color:#666;flex:1 0 100%}.lista .fila input,.lista .fila select{background:#111;color:#fff;border:1px solid #333;border-radius:6px;padding:6px 8px}.lista .acciones{margin-left:auto;display:flex;gap:6px;align-items:center}.lista button{background:none;border:1px solid #333;color:#ccc;border-radius:6px;padding:6px 10px}.lista button.ok{color:#00e676;border-color:#00e676}.lista button.no{color:#ff5252;border-color:#ff5252}.lista a{color:#4fc3f7;text-decoration:none}.lista .bajo{color:#ff5252}.lista canvas{max-width:100%;border:1px solid #222;border-radius:8px}@media (orientation: portrait){.app main{grid-template-columns:1fr 1fr;grid-template-rows:40% 30% 30%}.velocimetro{grid-row:1;grid-column:1 / 3}.no-esta{grid-column:1 / 3;grid-row:3}}
