/* Formulários: cabeçalho, cartão, campos, labels, divisor de seção, Quill */

/* ===== Cabeçalho de página / formulário (regra compartilhada) ===== */

.page-header,
.form-header {
  margin-bottom: var(--rb-space-5);
  padding-bottom: var(--rb-space-4);
  border-bottom: 1px solid var(--rb-border);
}

.page-header h1,
.form-header h1 {
  margin: 0;
  font-size: var(--rb-fs-2xl);
  font-weight: var(--rb-fw-semibold);
  line-height: 1.3;
  letter-spacing: -0.015em;
  color: var(--rb-text);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--rb-space-2);
}

.page-header h1 > i,
.form-header h1 > i {
  font-size: 20px;
  color: var(--rb-text-subtle);
}

.page-header p,
.form-header p {
  margin-top: var(--rb-space-1);
  color: var(--rb-text-muted);
}

@media (max-width: 575.98px) {
  .page-header h1,
  .form-header h1 {
    font-size: var(--rb-fs-xl);
  }
}

/* Título com chips (reprodutor, envase manual) */

.form-header .title-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--rb-space-3);
}

.form-header .title-row h1 {
  margin: 0;
}

.form-header .title-chips {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--rb-space-2);
}

.form-header .title-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px var(--rb-space-2);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-radius-sm);
  background: var(--rb-surface-2);
  font-size: var(--rb-fs-sm);
  font-weight: var(--rb-fw-medium);
  color: var(--rb-text-muted);
}

.form-header .title-chip i {
  color: var(--rb-text-subtle);
}

.form-header .title-chip .mono {
  font-family: var(--rb-font-mono);
  font-size: var(--rb-fs-sm);
  font-weight: var(--rb-fw-regular);
  color: var(--rb-text);
}

/* ===== Cartão ===== */

.form-card {
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-radius-lg);
  box-shadow: var(--rb-shadow-sm);
  overflow: hidden;
}

.form-card .card-body {
  padding: var(--rb-space-5);
}

.form-card > .card-footer {
  padding: var(--rb-space-3) var(--rb-space-5);
  background: var(--rb-surface-2);
  border-top: 1px solid var(--rb-border);
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: var(--rb-space-2);
}

@media (max-width: 575.98px) {
  .form-card .card-body {
    padding: var(--rb-space-4);
  }

  .form-card > .card-footer {
    padding: var(--rb-space-3) var(--rb-space-4);
  }
}

/* ===== Labels, ajuda, campos ===== */

.form-label {
  margin-bottom: 6px;
  font-size: var(--rb-fs-sm);
  font-weight: var(--rb-fw-medium);
  color: var(--rb-text);
}

.form-text {
  margin-top: var(--rb-space-1);
  font-size: var(--rb-fs-xs);
  color: var(--rb-text-muted);
}

.form-control,
.form-select {
  min-height: var(--rb-control-h);
  font-size: var(--rb-fs-base);
  line-height: 20px;
  color: var(--rb-text);
  background-color: var(--rb-surface);
  border: 1px solid var(--rb-border-strong);
  border-radius: var(--rb-radius);
  box-shadow: none;
}

.form-control {
  padding: 7px var(--rb-space-3);
}

.form-select {
  padding-top: 7px;
  padding-bottom: 7px;
  padding-left: var(--rb-space-3);
}

.form-control:hover:not(:disabled):not([readonly]),
.form-select:hover:not(:disabled) {
  border-color: var(--rb-text-subtle);
}

.form-control:focus,
.form-select:focus {
  color: var(--rb-text);
  background-color: var(--rb-surface);
  border-color: var(--rb-primary);
  box-shadow: 0 0 0 3px var(--rb-focus-ring);
  outline: 0;
}

.form-control::placeholder {
  color: var(--rb-text-subtle);
}

.form-control:disabled,
.form-control[readonly],
.form-select:disabled {
  color: var(--rb-text-muted);
  background-color: var(--rb-surface-2);
  opacity: 1;
}

.form-control[readonly]:focus {
  border-color: var(--rb-border-strong);
  box-shadow: none;
}

.form-control-sm,
.form-select-sm {
  min-height: var(--rb-control-h-sm);
  font-size: var(--rb-fs-sm);
  line-height: 18px;
  border-radius: var(--rb-radius);
}

.form-control-sm {
  padding: 4px 10px;
}

.form-select-sm {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 10px;
}

.form-control::file-selector-button {
  color: var(--rb-text);
  background-color: var(--rb-surface-2);
  border-color: var(--rb-border-strong);
}

.form-control:hover:not(:disabled):not([readonly])::file-selector-button {
  background-color: var(--rb-surface-3);
}

.form-select option {
  color: var(--rb-text);
  background-color: var(--rb-surface);
}

.form-select optgroup {
  font-weight: var(--rb-fw-semibold);
  color: var(--rb-text-muted);
  background-color: var(--rb-surface-2);
}

textarea.form-control {
  min-height: 72px;
}

/* Checkbox, radio, switch */

.form-check-label {
  color: var(--rb-text);
}

.form-check-input {
  background-color: var(--rb-surface);
  border: 1px solid var(--rb-border-strong);
}

.form-check-input:checked,
.form-check-input[type="checkbox"]:indeterminate {
  background-color: var(--rb-primary);
  border-color: var(--rb-primary);
}

.form-check-input:focus {
  border-color: var(--rb-primary);
  box-shadow: 0 0 0 3px var(--rb-focus-ring);
}

.form-check-input:disabled {
  opacity: .5;
}

/* Validação */

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--rb-danger);
}

.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  border-color: var(--rb-danger);
  box-shadow: 0 0 0 3px rgba(var(--rb-danger-rgb), .25);
}

.form-control.is-valid,
.form-select.is-valid {
  border-color: var(--rb-success);
}

.form-control.is-valid:focus,
.form-select.is-valid:focus {
  border-color: var(--rb-success);
  box-shadow: 0 0 0 3px rgba(var(--rb-success-rgb), .25);
}

.invalid-feedback {
  margin-top: var(--rb-space-1);
  font-size: var(--rb-fs-xs);
  color: var(--rb-danger-text);
}

.form-card .errorlist {
  margin: var(--rb-space-1) 0 0;
  padding: 0;
  list-style: none;
  font-size: var(--rb-fs-xs);
  color: var(--rb-danger-text);
}

/* Campo com ícone à esquerda */

.input-icon {
  position: absolute;
  left: var(--rb-space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--rb-text-muted);
  z-index: 10;
  pointer-events: none;
}

.has-icon .form-control,
.has-icon .form-select {
  padding-left: 36px;
}

/* Campos calculados / preenchidos por sensor */

.calc-result {
  background-color: var(--rb-primary-subtle);
  border-color: var(--rb-primary-border);
  color: var(--rb-text);
  font-weight: var(--rb-fw-semibold);
}

.campo-sensor-ambiental {
  pointer-events: none;
  user-select: none;
  -webkit-user-select: none;
  caret-color: transparent;
  background-color: var(--rb-surface-2);
  cursor: default;
  font-weight: var(--rb-fw-semibold);
}

/* ===== Divisor de seção ===== */

.section-divider {
  display: flex;
  align-items: center;
  gap: var(--rb-space-3);
  min-height: 18px;
  margin: var(--rb-space-5) 0 var(--rb-space-4);
}

.section-divider::before {
  content: attr(data-label);
  font-size: var(--rb-fs-xs);
  font-weight: var(--rb-fw-semibold);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--rb-text-muted);
}

.section-divider::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: var(--rb-border);
}

/* ===== Permissões de usuário ===== */

.user-perms .perm-item {
  padding: var(--rb-space-4);
  background: var(--rb-surface);
  border: 1px solid var(--rb-border);
  border-radius: var(--rb-radius-lg);
  transition: border-color var(--rb-dur) var(--rb-ease);
}

.user-perms .perm-item:hover {
  border-color: var(--rb-primary-border);
}

.user-perms .form-check-label {
  font-weight: var(--rb-fw-medium);
  cursor: pointer;
  user-select: none;
}

.user-perms .form-check-input {
  cursor: pointer;
}

/* ===== Botão de remover documento atual (agenda de quarentena) ===== */

.doc-delete-btn {
  --bs-btn-color: var(--rb-danger-text);
  --bs-btn-bg: var(--rb-surface);
  --bs-btn-border-color: var(--rb-danger-border);
  --bs-btn-hover-color: var(--rb-danger-text);
  --bs-btn-hover-bg: var(--rb-danger-subtle);
  --bs-btn-hover-border-color: var(--rb-danger-border);
  --bs-btn-active-color: var(--rb-danger-text);
  --bs-btn-active-bg: var(--rb-danger-subtle);
  --bs-btn-active-border-color: var(--rb-danger-border);
  --bs-btn-padding-x: 0;
  --bs-btn-padding-y: 0;
  margin-left: auto;
  flex: 0 0 auto;
  width: var(--rb-control-h);
  height: var(--rb-control-h);
}

.doc-delete-btn.is-marked-for-removal {
  --bs-btn-color: var(--rb-warning-text);
  --bs-btn-bg: var(--rb-warning-subtle);
  --bs-btn-border-color: var(--rb-warning-border);
  --bs-btn-hover-color: var(--rb-warning-text);
  --bs-btn-hover-bg: var(--rb-warning-subtle);
  --bs-btn-hover-border-color: var(--rb-warning-border);
  --bs-btn-active-color: var(--rb-warning-text);
  --bs-btn-active-bg: var(--rb-warning-subtle);
  --bs-btn-active-border-color: var(--rb-warning-border);
}

/* ===== Editor rich text (Quill) ===== */

html .ql-toolbar.ql-snow,
html .ql-container.ql-snow { border-color: var(--rb-border-strong); }
html .ql-toolbar.ql-snow   { background: var(--rb-surface-2); border-radius: var(--rb-radius) var(--rb-radius) 0 0; }
html .ql-container.ql-snow { background: var(--rb-surface); color: var(--rb-text); border-radius: 0 0 var(--rb-radius) var(--rb-radius); }
html .ql-container.ql-snow:focus-within { border-color: var(--rb-primary); box-shadow: 0 0 0 3px var(--rb-focus-ring); }
html .ql-snow .ql-editor.ql-blank::before { color: var(--rb-text-subtle); }
html .ql-snow .ql-stroke, html .ql-snow .ql-stroke-miter { stroke: var(--rb-text-muted); }
html .ql-snow .ql-fill,   html .ql-snow .ql-stroke.ql-fill { fill: var(--rb-text-muted); }
html .ql-snow .ql-picker { color: var(--rb-text-muted); }
html .ql-snow .ql-picker-options { background: var(--rb-surface); border-color: var(--rb-border); }
html .ql-snow button:hover .ql-stroke, html .ql-snow button.ql-active .ql-stroke { stroke: var(--rb-primary); }
html .ql-snow button:hover .ql-fill,   html .ql-snow button.ql-active .ql-fill   { fill:   var(--rb-primary); }
