/* Peças pequenas de formulário e listas */
.empty-state {
  padding: var(--space-6) var(--space-4);
  border: 2px dashed var(--color-border-soft);
  border-radius: var(--radius-large);
  background: var(--color-surface);
  color: var(--color-text-muted);
  text-align: center;
}

.page-header__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); min-width: 0; }
/* Texto longo de botão quebra em vez de empurrar a tela para o lado. */
.page-header__actions .button { max-width: 100%; white-space: normal; }

.form-row { display: grid; gap: 0 var(--space-4); }

@media (min-width: 640px) {
  .form-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* "Mais detalhes": campos opcionais recolhidos */
.more-details { margin-bottom: var(--space-5); }

.more-details > summary {
  display: inline-flex;
  align-items: center;
  min-height: var(--touch-target);
  color: var(--color-primary);
  font-weight: var(--font-weight-bold);
  cursor: pointer;
}

.more-details[open] > summary { margin-bottom: var(--space-3); }

.cycle-rows { display: grid; gap: var(--space-3); }

.cycle-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0 var(--space-3);
  padding: var(--space-3);
  border: var(--border-width) solid var(--color-border-soft);
  border-radius: var(--radius);
}

.cycle-row .field { margin-bottom: var(--space-3); }
.cycle-row__remove { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--touch-target); color: var(--color-danger); }

@media (min-width: 1024px) {
  .cycle-row { grid-template-columns: minmax(0, 2fr) repeat(2, minmax(0, 1fr)); align-items: end; }
  .cycle-row__remove { grid-column: 1 / -1; }
}

.cycle-list { display: grid; gap: var(--space-1); margin: 0 0 var(--space-3); padding: 0; list-style: none; }

.link-list { display: grid; gap: var(--space-1); margin: 0; padding: 0; list-style: none; }
.link-list a { display: inline-flex; align-items: center; min-height: var(--touch-target); font-weight: var(--font-weight-bold); }

/* Linha tocável de uma lista ou tabela: alvo de 48px mesmo com uma linha só de texto. */
.record-link { display: inline-flex; flex-direction: column; justify-content: center; min-height: var(--touch-target); color: var(--color-text); text-decoration: none; }
.record-link:hover .person__name { text-decoration: underline; }

.stat__value--text { font-size: var(--font-size-large); line-height: 1.3; }

/* Aviso de soma em hectares quando as propriedades usam unidades diferentes */
.area-note { display: block; color: var(--color-text-muted); font-size: var(--font-size-small); font-weight: normal; line-height: 1.3; }

.reminder-form { max-width: none; display: grid; gap: var(--space-3); }
.reminder-form .field { margin: 0; max-width: 12rem; }

/* WhatsApp: origem dos lançamentos e situação das mensagens */
.whatsapp-badge { background: var(--color-success-soft); color: var(--color-primary-strong); }
.whatsapp-origin { color: var(--color-text-muted); }
.whatsapp-form { max-width: 32rem; }
.consent .choice__body span { white-space: normal; }
.whatsapp-status--recorded { background: var(--color-success-soft); color: var(--color-primary-strong); }
.whatsapp-status--error { background: var(--color-danger-soft); color: var(--color-danger); }
.whatsapp-status--draft { background: var(--color-warning-soft); color: var(--color-warning); }

.text-danger { color: var(--color-danger); }

/* Venda: resumo e estimativa do grão guardado (nunca somada) */
.summary-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); margin: 0 0 var(--space-4); }
.summary-list dt { color: var(--color-text-muted); }
.summary-list dd { margin: 0; font-size: 1.125rem; }
@media (min-width: 640px) { .summary-list { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.estimate { display: block; color: var(--color-text-muted); font-style: italic; }
