/* AIE-FORM-RUNTIME v2 */
/* Form structure: layout, spacing, sizing and state visibility of a rendered
 * `.aie-fb` form. The theme's form skin owns colors, borders and typography. */

.aie-fb {
  --aie-fb-row-gap: 1.25rem;
  --aie-fb-cell-gap: 1rem;
  --aie-fb-node-gap: 1rem;
  --aie-fb-control-padding-y: 0.6875rem;
  --aie-fb-control-padding-x: 0.8125rem;
  --aie-fb-control-font-size: 0.9375rem;
  --aie-fb-help-font-size: 0.8125rem;
  box-sizing: border-box;
  width: 100%;
  max-width: var(--aie-fb-max-width, none);
  margin-inline: auto;
}

.aie-fb *,
.aie-fb *::before,
.aie-fb *::after {
  box-sizing: border-box;
}

.aie-fb .aie-fb__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--aie-fb-cell-gap);
  margin-block-end: var(--aie-fb-row-gap);
}

.aie-fb .aie-fb__cell {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: var(--aie-fb-node-gap);
}

.aie-fb .aie-fb__node {
  min-width: 0;
}

.aie-fb .aie-fb__heading,
.aie-fb .aie-fb__paragraph {
  margin: 0;
}

.aie-fb .aie-fb__paragraph {
  white-space: pre-wrap;
}

.aie-fb .aie-fb__divider {
  width: 100%;
  margin: 0;
  border: 0;
}

.aie-fb .aie-fb__field {
  display: flex;
  flex-direction: column;
  gap: 0.4375rem;
}

.aie-fb .aie-fb__label,
.aie-fb .aie-fb__legend {
  display: block;
  margin: 0;
}

.aie-fb .aie-fb__required-mark {
  margin-inline-start: 0.1875rem;
}

.aie-fb .aie-fb__control {
  display: block;
  width: 100%;
  min-height: 2.75rem;
  font: inherit;
  line-height: 1.4;
}

.aie-fb .aie-fb__control[disabled] {
  cursor: default;
}

.aie-fb textarea.aie-fb__control {
  resize: vertical;
}

.aie-fb .aie-fb__choice-list {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  border: 0;
}

.aie-fb .aie-fb__choice {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  line-height: 1.45;
}

.aie-fb .aie-fb__choice input {
  width: 1rem;
  height: 1rem;
  margin: 0.15rem 0 0;
}

.aie-fb .aie-fb__consent-body {
  margin: 0;
  white-space: pre-wrap;
}

.aie-fb .aie-fb__address-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0.5rem;
}

.aie-fb .aie-fb__address-grid .aie-fb__control:last-child {
  grid-column: 1 / -1;
}

.aie-fb .aie-fb__address-button {
  font: inherit;
  white-space: nowrap;
}

.aie-fb .aie-fb__address-button:enabled {
  cursor: pointer;
}

.aie-fb .aie-fb__address-button[disabled] {
  cursor: default;
}

.aie-fb .aie-fb__help,
.aie-fb .aie-fb__error {
  min-height: 1em;
  margin: 0;
  line-height: 1.4;
}

.aie-fb .aie-fb__submit-row {
  display: flex;
  margin-top: 1.5rem;
}

.aie-fb .aie-fb__submit-row--left { justify-content: flex-start; }
.aie-fb .aie-fb__submit-row--center { justify-content: center; }
.aie-fb .aie-fb__submit-row--right { justify-content: flex-end; }
.aie-fb .aie-fb__submit-row--full .aie-fb__submit { width: 100%; }

.aie-fb .aie-fb__submit {
  font: inherit;
  cursor: pointer;
}

/* Rendered disabled by the projection; the runtime enables it as the last step of a finished bind
   and disables it again while a submission is in flight. */
.aie-fb .aie-fb__submit:disabled {
  cursor: not-allowed;
}

.aie-fb .aie-fb__status {
  margin: 1rem 0 0;
}

/* Honeypot slot (`_fb_hp`): positioned off-screen (never `display: none`, which would
   hide it from bots too) so a bot that fills every input fills it as well. */
.aie-fb .aie-fb__hp {
  position: absolute;
  left: -10000px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

@media (min-width: 768px) {
  .aie-fb .aie-fb__row--1-1 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .aie-fb .aie-fb__row--1-2 { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
  .aie-fb .aie-fb__row--2-1 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
  .aie-fb .aie-fb__row--1-1-1 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .aie-fb .aie-fb__row--1-1-1-1 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.aie-fb-frame--mobile .aie-fb__row {
  grid-template-columns: minmax(0, 1fr);
}

/* Runtime states: inline errors, the status line, upload chips, address search. */

.aie-fb .aie-fb__error:not(:empty) {
  display: block;
}

.aie-fb .aie-fb__status[hidden] {
  display: none;
}

.aie-fb .aie-fb__status--success {
  display: block;
}

.aie-fb .aie-fb__upload-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.aie-fb .aie-fb__upload-list:empty {
  display: none;
}

.aie-fb .aie-fb__upload-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  max-width: 100%;
  min-width: 0;
  padding: 0.25rem 0.375rem 0.25rem 0.625rem;
  line-height: 1.4;
}

.aie-fb .aie-fb__upload-name {
  overflow: hidden;
  min-width: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.aie-fb .aie-fb__upload-meta {
  flex: none;
  white-space: nowrap;
}

.aie-fb .aie-fb__upload-remove {
  flex: none;
  margin: 0;
  padding: 0 0.25rem;
  font: inherit;
  line-height: 1.4;
  cursor: pointer;
}
