.vahf-form {
  --vahf-accent: var(--primary, #1f5b65);
  --vahf-accent-contrast: #fff;
  --vahf-text: var(--text, #182326);
  --vahf-muted: #607176;
  --vahf-border: #c8d2d4;
  --vahf-field-bg: #fff;
  --vahf-error: #b42318;
  --vahf-success: #176b3a;
  --vahf-radius: 4px;
  --vahf-gap-x: 20px;
  --vahf-gap-y: 20px;
  color: var(--vahf-text);
  font: inherit;
  inline-size: 100%;
	margin-block-end: var(--vahf-form-margin-bottom, 0);
}

.vahf-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: var(--vahf-gap-y) var(--vahf-gap-x);
}

.vahf-field { grid-column: span 12; min-inline-size: 0; }
.vahf-w-25 { grid-column: span 3; }
.vahf-w-33 { grid-column: span 4; }
.vahf-w-50 { grid-column: span 6; }
.vahf-w-66 { grid-column: span 8; }
.vahf-w-75 { grid-column: span 9; }
.vahf-w-100 { grid-column: span 12; }

.vahf-field > label,
.vahf-options legend,
.vahf-rating legend {
  display: block;
  margin: 0 0 7px;
  color: inherit;
  font: inherit;
  font-weight: 650;
}

.vahf-form input:not([type="checkbox"]):not([type="radio"]),
.vahf-form textarea,
.vahf-form select {
  box-sizing: border-box;
  display: block;
  inline-size: 100%;
  min-block-size: 46px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--vahf-border);
  border-radius: var(--vahf-radius);
  outline: 0;
  background: var(--vahf-field-bg);
  color: var(--vahf-text);
  font: inherit;
  line-height: 1.45;
  transition: border-color .15s ease, box-shadow .15s ease;
}

.vahf-form textarea { min-block-size: 140px; resize: vertical; }
.vahf-form select { appearance: auto; }
.vahf-form input[type="file"] { padding: 8px; }
.vahf-form input:focus,
.vahf-form textarea:focus,
.vahf-form select:focus {
  border-color: var(--vahf-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--vahf-accent) 22%, transparent);
}

.vahf-form ::placeholder { color: #7d898d; opacity: 1; }
.vahf-heading {
  margin: 20px 0 0;
  padding-block-end: 9px;
  border-block-end: 1px solid var(--vahf-border);
  color: inherit;
  font: inherit;
  font-size: clamp(1.1rem, 1rem + .4vw, 1.35rem);
  font-weight: 700;
}

.vahf-divider { margin: 10px 0; border: 0; border-block-start: 1px solid var(--vahf-border); }
.vahf-description { margin: 6px 0 0; color: var(--vahf-muted); font-size: .88em; }
.vahf-options,
.vahf-rating { margin: 0; padding: 0; border: 0; }
.vahf-choice { display: flex !important; align-items: flex-start; gap: 10px; margin: 8px 0 !important; font-weight: 400 !important; cursor: pointer; }
.vahf-choice input { flex: 0 0 auto; inline-size: 18px; block-size: 18px; margin: 2px 0 0; accent-color: var(--vahf-accent); }
.vahf-consent { padding: 13px 15px; border: 1px solid var(--vahf-border); border-radius: var(--vahf-radius); }
.vahf-consent a { color: var(--vahf-accent); text-decoration: underline; text-underline-offset: .15em; }
.vahf-consent a:hover { text-decoration-thickness: 2px; }

.vahf-rating-options { display: flex; flex-wrap: wrap; gap: 6px; }
.vahf-rating-options label { position: relative; cursor: pointer; }
.vahf-rating-options input { position: absolute; inline-size: 1px; block-size: 1px; opacity: 0; }
.vahf-rating-options span {
  display: block;
  color: var(--vahf-star-empty, #cfd3d4);
  font-size: var(--vahf-star-size, 34px);
  line-height: 1;
  transition: color .12s ease, transform .12s ease;
}
.vahf-rating-options label.is-active span { color: var(--vahf-star-color, #ffc928); }
.vahf-rating-options label:hover span { transform: scale(1.1); }
.vahf-rating-options input:focus-visible + span { outline: 3px solid color-mix(in srgb, var(--vahf-star-color, #ffc928) 38%, transparent); outline-offset: 2px; }
.vahf-success-panel { margin-block-end: var(--vahf-success-margin-bottom, 0); padding: var(--vahf-success-padding, 28px); border: 1px solid var(--vahf-success-border, #a8c79a); border-radius: var(--vahf-success-radius, 0); background: var(--vahf-success-bg, #c8c3ed); color: var(--vahf-success-text, #14143a); }
.vahf-success-panel[hidden], .vahf-form-content[hidden] { display: none !important; }
.vahf-success-panel h2 { margin: 0 0 12px; color: var(--vahf-success-title, inherit); font-size: var(--vahf-success-title-size, 30px); line-height: 1.2; }
.vahf-success-content { font-size: var(--vahf-success-text-size, 18px); line-height: 1.55; }
.vahf-success-content > :first-child { margin-top: 0; }
.vahf-success-content > :last-child { margin-bottom: 0; }
.vahf-success-logo { display: block; inline-size: min(100%, var(--vahf-success-logo-width, 480px)); block-size: auto; margin-block: 20px; }
.vahf-success-panel[style*="text-align:center"] .vahf-success-logo { margin-inline: auto; }
.vahf-success-panel[style*="text-align:right"] .vahf-success-logo { margin-inline-start: auto; }

.vahf-captcha-row { display: flex; align-items: center; gap: 10px; }
.vahf-captcha-question { flex: 0 0 auto; min-inline-size: 75px; font-weight: 700; }
.vahf-captcha-row input { max-inline-size: 120px; }

.vahf-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-block-size: 48px;
  padding: 11px 25px;
	border: 1px solid var(--vahf-submit-bg, var(--vahf-accent));
  border-radius: var(--vahf-radius);
	background: var(--vahf-submit-bg, var(--vahf-accent));
	color: var(--vahf-submit-text, var(--vahf-accent-contrast));
	font-family: inherit;
	font-size: var(--vahf-submit-size, inherit);
	font-style: var(--vahf-submit-style, normal);
	font-weight: var(--vahf-submit-weight, 700);
  cursor: pointer;
	transition: background-color .15s ease, color .15s ease, transform .15s ease;
}
.vahf-submit:hover { border-color: var(--vahf-submit-bg-hover, var(--vahf-accent)); background: var(--vahf-submit-bg-hover, var(--vahf-accent)); color: var(--vahf-submit-text-hover, var(--vahf-accent-contrast)); }
.vahf-submit:active { transform: translateY(1px); }
.vahf-submit:focus-visible { outline: 3px solid color-mix(in srgb, var(--vahf-accent) 35%, transparent); outline-offset: 3px; }
.vahf-submit:disabled { cursor: wait; opacity: .7; }
.vahf-spinner { display: none; inline-size: 17px; block-size: 17px; margin-inline-start: 10px; border: 2px solid currentColor; border-block-start-color: transparent; border-radius: 50%; animation: vahf-spin .7s linear infinite; }
.vahf-submit.is-loading .vahf-spinner { display: block; }

.vahf-message { display: none; margin-block-end: 18px; padding: 13px 15px; border: 1px solid; border-radius: var(--vahf-radius); outline: none; }
.vahf-message:not(:empty) { display: block; }
.vahf-message--success { border-color: color-mix(in srgb, var(--vahf-success) 35%, white); background: color-mix(in srgb, var(--vahf-success) 9%, white); color: var(--vahf-success); }
.vahf-message--error { border-color: color-mix(in srgb, var(--vahf-error) 35%, white); background: color-mix(in srgb, var(--vahf-error) 8%, white); color: var(--vahf-error); }
.vahf-field-error { min-block-size: 0; margin: 5px 0 0; color: var(--vahf-error); font-size: .86em; }
.vahf-field-error:empty { display: none; }
.vahf-field.has-error input,
.vahf-field.has-error textarea,
.vahf-field.has-error select,
.vahf-field.has-error .vahf-consent { border-color: var(--vahf-error); }

.vahf-trap {
  position: absolute !important;
  overflow: hidden !important;
  inline-size: 1px !important;
  block-size: 1px !important;
  padding: 0 !important;
  border: 0 !important;
  clip: rect(0 0 0 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}

@keyframes vahf-spin { to { transform: rotate(360deg); } }

@media (max-width: 1024px) {
  .vahf-t-25 { grid-column: span 3; }
  .vahf-t-33 { grid-column: span 4; }
  .vahf-t-50 { grid-column: span 6; }
  .vahf-t-66 { grid-column: span 8; }
  .vahf-t-75 { grid-column: span 9; }
  .vahf-t-100 { grid-column: span 12; }
}

@media (max-width: 680px) {
  .vahf-grid { gap: 16px; }
  .vahf-m-25 { grid-column: span 3; }
  .vahf-m-33 { grid-column: span 4; }
  .vahf-m-50 { grid-column: span 6; }
  .vahf-m-66 { grid-column: span 8; }
  .vahf-m-75 { grid-column: span 9; }
  .vahf-m-100 { grid-column: span 12; }
  .vahf-submit { inline-size: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .vahf-form *, .vahf-form *::before, .vahf-form *::after { scroll-behavior: auto !important; transition: none !important; }
}
