/* Sensatic — panel cliente: mismo acento cian que el panel local del hardware
   (#00dbe7), para que la marca se sienta igual en la app y en el dispositivo. */

:root {
  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

[data-bs-theme="light"] {
  --bs-primary: #05838f;
  --bs-primary-rgb: 5, 131, 143;
  --bs-body-bg: #f5f8f9;
  --bs-body-color: #17232b;
  --bs-border-color: #e2e8eb;
  --bs-secondary-bg: #eef2f4;
  --bs-tertiary-bg: #eef3f4;
  --bs-link-color: #05838f;
  --bs-link-color-rgb: 5, 131, 143;
  --bs-link-hover-color: #046974;
  --bs-link-hover-color-rgb: 4, 105, 116;
  --surface: #ffffff;
  --shadow: 0 1px 2px rgba(15, 23, 30, .04), 0 6px 20px rgba(15, 23, 30, .06);
  --online: #1a9a5e;
  --online-bg: #e5f6ed;
  --offline: #7c8894;
  --offline-bg: #eef1f3;
}

[data-bs-theme="dark"] {
  --bs-primary: #00dbe7;
  --bs-primary-rgb: 0, 219, 231;
  --bs-body-bg: #0a0d12;
  --bs-body-color: #e7edf0;
  --bs-border-color: #212a32;
  --bs-secondary-bg: #131920;
  --bs-tertiary-bg: #151b22;
  --bs-link-color: #00dbe7;
  --bs-link-color-rgb: 0, 219, 231;
  --bs-link-hover-color: #6eeaf1;
  --bs-link-hover-color-rgb: 110, 234, 241;
  --surface: #11161c;
  --shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 10px 28px rgba(0, 0, 0, .4);
  --online: #3ddc84;
  --online-bg: #12261c;
  --offline: #6b7680;
  --offline-bg: #171d23;
}

body {
  font-family: var(--font-sans);
  letter-spacing: -0.01em;
}

h1, h2, h3, .navbar-brand {
  letter-spacing: -0.02em;
}

.navbar {
  box-shadow: var(--shadow);
  background: var(--surface) !important;
}

.navbar-brand {
  font-weight: 800;
  letter-spacing: 0.04em;
}

.card {
  background: var(--surface);
  border: 1px solid var(--bs-border-color);
  box-shadow: var(--shadow);
  border-radius: 0.9rem;
}

.device-card {
  transition: transform .15s ease, box-shadow .15s ease;
  cursor: pointer;
}

.device-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, .08), 0 16px 32px rgba(0, 0, 0, .08);
}

.status-pill {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  font-size: .75rem;
  font-weight: 600;
  padding: .3rem .65rem;
  border-radius: 999px;
}

.status-pill::before {
  content: "";
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
}

.status-pill.online {
  color: var(--online);
  background: var(--online-bg);
}

.status-pill.online::before {
  background: var(--online);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--online) 25%, transparent);
}

.status-pill.offline {
  color: var(--offline);
  background: var(--offline-bg);
}

.status-pill.offline::before {
  background: var(--offline);
}

.theme-toggle-btn {
  border: 1px solid var(--bs-border-color);
  background: var(--bs-tertiary-bg);
  color: var(--bs-body-color);
  width: 2.35rem;
  height: 2.35rem;
  border-radius: .6rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .15s ease;
}

.theme-toggle-btn:hover {
  background: var(--bs-secondary-bg);
}

.icon-tile {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: .6rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--bs-tertiary-bg);
  color: var(--bs-primary);
  font-size: 1.1rem;
  flex-shrink: 0;
}

.auth-card {
  border-radius: 1rem;
}

/* Bootstrap fija el color de .btn-outline-dark/.btn-outline-secondary en hex
   (#212529 / #6c757d) en vez de leer una variable de tema, asi que nuestro
   [data-bs-theme="dark"] de arriba nunca los alcanza -- "Editar" quedaba
   practicamente invisible (texto casi negro sobre fondo casi negro). */
[data-bs-theme="dark"] .btn-outline-dark {
  --bs-btn-color: var(--bs-body-color);
  --bs-btn-border-color: var(--bs-border-color);
  --bs-btn-hover-color: var(--bs-body-bg);
  --bs-btn-hover-bg: var(--bs-body-color);
  --bs-btn-hover-border-color: var(--bs-body-color);
  --bs-btn-active-color: var(--bs-body-bg);
  --bs-btn-active-bg: var(--bs-body-color);
  --bs-btn-active-border-color: var(--bs-body-color);
  --bs-btn-disabled-color: var(--bs-body-color);
  --bs-btn-disabled-border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .btn-outline-secondary {
  --bs-btn-color: #9aa5b1;
  --bs-btn-border-color: #48505a;
  --bs-btn-hover-color: var(--bs-body-bg);
  --bs-btn-hover-bg: #9aa5b1;
  --bs-btn-hover-border-color: #9aa5b1;
  --bs-btn-active-color: var(--bs-body-bg);
  --bs-btn-active-bg: #9aa5b1;
  --bs-btn-active-border-color: #9aa5b1;
  --bs-btn-disabled-color: #9aa5b1;
  --bs-btn-disabled-border-color: #48505a;
}

.pwa-install-banner {
  position: fixed;
  left: .75rem;
  right: .75rem;
  bottom: calc(.75rem + env(safe-area-inset-bottom, 0px));
  z-index: 1050;
  display: flex;
  align-items: center;
  gap: .75rem;
  padding: .75rem 1rem;
  max-width: 480px;
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--bs-border-color);
  border-radius: .9rem;
  box-shadow: var(--shadow);
  animation: pwa-install-banner-in .25s ease-out;
}

@keyframes pwa-install-banner-in {
  from { transform: translateY(1rem); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

.pwa-install-banner-icon {
  width: 2.25rem;
  height: 2.25rem;
  flex-shrink: 0;
}

.pwa-install-banner-text {
  flex: 1;
  min-width: 0;
}

[data-bs-theme="dark"] .pwa-install-banner .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
}

.telemetry-card {
  background: var(--bs-tertiary-bg);
  border: 1px solid var(--bs-border-color);
  border-left: 3px solid var(--bs-border-color);
  border-radius: .6rem;
  padding: .85rem 1rem;
  height: 100%;
}

.telemetry-card.accent-ok {
  border-left-color: var(--online);
}

.telemetry-card.accent-danger {
  border-left-color: #e5484d;
}

.telemetry-card.accent-warn {
  border-left-color: #d9a441;
}

.telemetry-value {
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1.1;
}

.telemetry-value .unit {
  font-size: .85rem;
  font-weight: 500;
  color: var(--offline);
  margin-left: .15rem;
}

.telemetry-icon {
  font-size: 1.2rem;
  color: var(--bs-primary);
  opacity: .7;
}

.mini-stat {
  background: var(--bs-tertiary-bg);
  border: 1px solid var(--bs-border-color);
  border-radius: .5rem;
  padding: .6rem .75rem;
}
