body {
    background-color: #f8f9fa;
}

/* ===== Indicador de status dos relés ===== */
.status-indicator {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    display: inline-block;
    margin-right: 5px;
}

.status-off { background-color: #dc3545; }
.status-on  { background-color: #198754; }

/* ===== Monitor: cards de sensores (padrão referência) ===== */
/* 4 colunas fixas: S1-S4 na linha de cima, S5-S8 na de baixo.
   Com auto-fit o numero de colunas mudava conforme a largura da tela. */
.sensors-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
}

.sensor-card {
    background: linear-gradient(135deg, #667eea15 0%, #764ba215 100%);
    border: 2px solid #e5e7eb;
    border-radius: 12px;
    padding: 25px;
    text-align: center;
    transition: all 0.3s ease;
    cursor: default;
}

.sensor-card { position: relative; }

/* Engrenagem de configuração do sensor e do relé (estilo Ajustes do iPhone) */
.sensor-cfg, .rele-cfg {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 30px;
    height: 30px;
    border: none;
    border-radius: 8px;
    background: linear-gradient(180deg, #a1a1a6 0%, #8e8e93 100%);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25);
    cursor: pointer;
    transition: transform 0.15s ease, opacity 0.15s ease;
}
.sensor-cfg:hover:not(:disabled), .rele-cfg:hover:not(:disabled) { transform: rotate(30deg); }
.sensor-cfg:disabled, .rele-cfg:disabled { opacity: 0.35; cursor: not-allowed; box-shadow: none; }
/* No card do relé (menor) a engrenagem é menor e o nome não passa por baixo dela */
.rele-cfg { top: 6px; right: 6px; width: 24px; height: 24px; border-radius: 6px; }
.rele-cfg svg { width: 15px; height: 15px; }
.rele-nome { padding-right: 30px !important; }
.sensor-card .sensor-name { padding: 0 30px; }   /* nome centralizado sem passar por baixo da engrenagem */

/* ===== Barra de escala do card do sensor =====
   Trilho de Mín. a Máx.; a faixa normal em verde, o resto em vermelho claro;
   o marcador escuro é a leitura atual. O estado também vai em texto com ícone,
   para não depender só da cor. */
.escala { margin-top: 12px; }
.escala-trilho {
    position: relative;
    height: 10px;
    border-radius: 5px;
    background: #f6d5d5;            /* fora da faixa normal */
}
.escala-normal {
    position: absolute;
    top: 0;
    bottom: 0;
    background: #0ca30c;            /* faixa normal */
    border-left: 2px solid #fff;
    border-right: 2px solid #fff;
}
.escala-marca {
    position: absolute;
    top: -4px;
    width: 4px;
    height: 18px;
    margin-left: -2px;
    border-radius: 2px;
    background: #1f2937;
    box-shadow: 0 0 0 2px #fff;
    transition: left 0.4s ease;
}
.escala-rotulos {
    position: relative;
    height: 16px;
    margin-top: 4px;
    font-size: 11px;
    color: #6b7280;
}
.escala-rotulos span { position: absolute; top: 0; white-space: nowrap; }
/* Limites da faixa normal: linha própria acima do trilho, sempre visíveis */
.escala-limites {
    position: relative;
    height: 16px;
    margin-bottom: 3px;
    font-size: 11px;
    font-weight: 600;
    color: #374151;
}
.escala-limites span { position: absolute; top: 0; white-space: nowrap; }
.escala-estado {
    margin-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: #374151;
}
.escala-estado .ic-normal { color: #0ca30c; }
.escala-estado .ic-fora   { color: #d03b3b; }

.sensor-card:hover {
    border-color: #667eea;
    box-shadow: 0 5px 20px rgba(102, 126, 234, 0.2);
    transform: translateY(-5px);
}

.sensor-name {
    font-size: 14px;
    font-weight: bold;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sensor-value {
    /* Acompanha a largura da tela: com 4 colunas fixas o card estreita, e um
       tamanho fixo cortava valores longos (ex.: -1234.56) em telas menores. */
    font-size: clamp(20px, 2.2vw, 36px);
    font-weight: bold;
    color: #667eea;
    font-family: 'Courier New', monospace;
    margin: 15px 0;
    width: 100%;
    border: none;
    background: transparent;
    text-align: center;
    padding: 0;
}

.sensor-value:focus {
    outline: none;
    box-shadow: none;
}

.sensor-unit {
    font-size: 12px;
    font-weight: bold;
    color: #6b7280;
    text-transform: uppercase;
    min-height: 1em;
}

/* Telas medias: mantem as 4 colunas, so aperta o card */
@media (max-width: 1200px) {
    .sensors-grid { gap: 12px; }
    .sensor-card  { padding: 16px 12px; }
    .sensor-value { margin: 10px 0; }
}

@media (max-width: 768px) {
    .sensors-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 480px) {
    .sensors-grid { grid-template-columns: 1fr; }
}

/* ===== Gráfico histórico ===== */
.chart-container {
    position: relative;
    height: 350px;
    width: 100%;
}

/* ===== Botão extra pequeno para controle de relés ===== */
.btn-xs {
    padding: 1px 5px;
    font-size: 0.75rem;
}

/* ===== LED de atividade da conexão ===== */
@keyframes led-pulso {
    0%, 100% { background-color: #198754; box-shadow: 0 0 8px #198754; }
    50%       { background-color: #a3d9b8; box-shadow: 0 0 2px #198754; }
}

#led-conexao {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    display: inline-block;
    vertical-align: middle;
    background-color: #6c757d;
}
#led-conexao.led-ativo {
    animation: led-pulso 1s ease-in-out infinite;
}
#led-conexao.led-erro {
    animation: none;
    background-color: #dc3545;
    box-shadow: 0 0 7px #dc3545;
}

#led-db {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    display: inline-block;
    vertical-align: middle;
    background-color: #6c757d;
}
#led-db.led-ativo {
    animation: led-pulso 1s ease-in-out infinite;
}
#led-db.led-erro {
    animation: none;
    background-color: #dc3545;
    box-shadow: 0 0 7px #dc3545;
}

/* ===== Abas na navbar ===== */
.nav-tabs .nav-link         { color: rgba(255, 255, 255, .65); }
.nav-tabs .nav-link.active  { color: #fff; background-color: transparent; border-bottom-color: #fff; }
.nav-tabs .nav-link:hover   { color: #fff; }
