@layer components {
  .btn {
    display: inline-flex;
    align-items: center;
    gap: var(--esp-2);
    padding: var(--esp-2) var(--esp-4);
    border: 1px solid var(--navy);
    border-radius: var(--raio);
    background: var(--navy);
    color: var(--branco);
    font-family: var(--fonte);
    font-size: var(--texto-sm);
    font-weight: 500;
    cursor: pointer;

    &:hover {
      background: var(--ink);
      text-decoration: none;
    }

    &.btn--secundario {
      background: transparent;
      color: var(--navy);
    }

    &.btn--ouro {
      background: var(--gold);
      border-color: var(--gold);
      color: var(--ink);
    }

    &.btn--perigo {
      background: var(--erro);
      border-color: var(--erro);
      color: var(--branco);
    }

    &.btn--ok {
      background: var(--ok);
      border-color: var(--ok);
      color: var(--branco);
    }
  }

  .card {
    background: var(--branco);
    border: 1px solid var(--line);
    border-radius: var(--raio);
    box-shadow: var(--sombra);
    padding: var(--esp-5);
  }

  .kpi {
    background: var(--branco);
    border: 1px solid var(--line);
    border-radius: var(--raio);
    padding: var(--esp-4);

    & .kpi__valor {
      font-size: var(--texto-xl);
      font-weight: 700;
      color: var(--navy);
    }

    & .kpi__rotulo {
      font-size: var(--texto-sm);
      color: var(--muted);
    }

    &.kpi--escuro {
      background: var(--navy);

      & .kpi__valor {
        color: var(--branco);
      }

      & .kpi__rotulo {
        color: var(--soft);
      }
    }
  }

  .tabela {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--texto-sm);

    & th, & td {
      padding: var(--esp-2) var(--esp-3);
      border-bottom: 1px solid var(--line);
      text-align: left;
    }

    & th {
      color: var(--muted);
      font-weight: 500;
    }
  }

  .campo {
    display: block;
    margin-bottom: var(--esp-4);

    &[hidden] {
      display: none;
    }

    & label {
      display: block;
      margin-bottom: var(--esp-1);
      font-size: var(--texto-sm);
      font-weight: 500;
      color: var(--ink);
    }

    & input, & select, & textarea {
      width: 100%;
      padding: var(--esp-2) var(--esp-3);
      border: 1px solid var(--borda-campo);
      border-radius: var(--raio);
      font-family: var(--fonte);
      font-size: var(--texto-base);
      color: var(--ink);
      background: var(--branco);
    }

    /* Checkbox e rádio: tamanho natural, ao lado do texto (H03) */
    & input[type="checkbox"], & input[type="radio"] {
      width: auto;
      padding: 0;
      margin: 0;
      accent-color: var(--navy);
    }

    & .campo__opcao {
      display: flex;
      align-items: center;
      gap: var(--esp-2);
      margin-bottom: 0;
      font-weight: 400;
      cursor: pointer;
    }

    & .campo__atual {
      display: flex;
      align-items: center;
      gap: var(--esp-4);
      margin-bottom: var(--esp-2);
    }

    & input:focus, & select:focus, & textarea:focus {
      outline: 2px solid var(--foco);
      outline-offset: -1px;
    }

    & .campo__obrigatorio {
      color: var(--erro);
    }

    & .campo__erro {
      margin: var(--esp-1) 0 0;
      font-size: var(--texto-sm);
      color: var(--erro);
    }

    &.campo--erro input, &.campo--erro select, &.campo--erro textarea {
      border-color: var(--erro);
    }
  }

  .badge {
    display: inline-block;
    padding: var(--esp-1) var(--esp-2);
    border-radius: var(--raio);
    font-size: var(--texto-xs);
    font-weight: 500;
    background: var(--soft);
    color: var(--ink);

    &.badge--ok {
      background: var(--ok);
      color: var(--branco);
    }

    &.badge--erro {
      background: var(--erro);
      color: var(--branco);
    }

    &.badge--aviso {
      background: var(--aviso);
      color: var(--ink);
    }
  }

  .btn.btn--pequeno {
    padding: var(--esp-1) var(--esp-2);
    font-size: var(--texto-xs);
  }

  .tabela.tabela--compacta {
    & th, & td {
      padding: var(--esp-1) var(--esp-2);
    }
  }

  .tabela .num {
    text-align: right;
    white-space: nowrap;
  }

  .ajuda {
    font-size: var(--texto-xs);
    color: var(--muted);
    margin: 0;
  }
}
