/*!***************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[3]!./src/scss/contact-form.scss ***!
  \***************************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/*
 * Anything that pops: a drop-down, a popover, a panel that is there before it is
 * wanted. One pair of mixins for the whole theme, so a country list and a menu
 * arrive and leave the same way.
 *
 *   .panel          { @include popover; }
 *   .is-open .panel { @include popover-open; }
 *
 * Three decisions worth knowing before overriding any of it:
 *
 * `visibility` carries the exit. It is what keeps a closed panel out of the tab
 * order, and transitioning it means the panel stays on screen until the fade has
 * finished instead of vanishing on the first frame. `display: none` cannot do
 * that without `transition-behavior: allow-discrete`, which the W3C validator
 * still reports as an error.
 *
 * Leaving is quicker than arriving. The exit duration lives on the closed state
 * and the open state overrides it — a transition is read from the state being
 * moved *to*, so this is what makes the two directions differ without a second
 * selector.
 *
 * Only opacity and transform move, so neither direction costs layout.
 */
/*
 * Contact Form 7, dressed in the theme.
 *
 * Its own bundle, enqueued only on pages that carry a form. Every control the
 * plugin can output is covered here, so a new form field never arrives
 * unstyled. States (is-valid, is-invalid, is-sending…) come from
 * src/js/contact-form.ts.
 */
.wpcf7 {
  --field-height: 3.25rem;
}

.wpcf7-form {
  display: grid;
  gap: 1.5rem;
}

/*
 * One row of the form. The plugin's own wrapper is stripped in inc/cleanup.php
 * along with its automatic <p> and <br>, so spacing comes from the form grid and
 * the state class lands on whatever wraps the control (.gf-field, set by the
 * script).
 */
.wpcf7-form-control-wrap,
.gf-field {
  position: relative;
  display: block;
}

.wpcf7-form label {
  display: grid;
  gap: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
}

/* ── Text-like controls ─────────────────────────────────────────────── */
.wpcf7-form-control[type=text], .wpcf7-form-control[type=email], .wpcf7-form-control[type=tel], .wpcf7-form-control[type=url], .wpcf7-form-control[type=number], .wpcf7-form-control[type=date], .wpcf7-form-control[type=search], .wpcf7-form-control.wpcf7-select, .wpcf7-form-control.wpcf7-textarea {
  width: 100%;
  min-height: var(--field-height);
  padding: 0.75rem 1rem;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  color: var(--color-text);
  font-family: inherit;
  font-size: 1rem;
  line-height: 1.4;
  transition: border-color 200ms cubic-bezier(0.22, 1, 0.36, 1), background-color 200ms cubic-bezier(0.22, 1, 0.36, 1);
}
.wpcf7-form-control[type=text]::-moz-placeholder, .wpcf7-form-control[type=email]::-moz-placeholder, .wpcf7-form-control[type=tel]::-moz-placeholder, .wpcf7-form-control[type=url]::-moz-placeholder, .wpcf7-form-control[type=number]::-moz-placeholder, .wpcf7-form-control[type=date]::-moz-placeholder, .wpcf7-form-control[type=search]::-moz-placeholder, .wpcf7-form-control.wpcf7-select::-moz-placeholder, .wpcf7-form-control.wpcf7-textarea::-moz-placeholder {
  color: var(--color-muted);
}
.wpcf7-form-control[type=text]::placeholder, .wpcf7-form-control[type=email]::placeholder, .wpcf7-form-control[type=tel]::placeholder, .wpcf7-form-control[type=url]::placeholder, .wpcf7-form-control[type=number]::placeholder, .wpcf7-form-control[type=date]::placeholder, .wpcf7-form-control[type=search]::placeholder, .wpcf7-form-control.wpcf7-select::placeholder, .wpcf7-form-control.wpcf7-textarea::placeholder {
  color: var(--color-muted);
}
.wpcf7-form-control[type=text]:hover, .wpcf7-form-control[type=email]:hover, .wpcf7-form-control[type=tel]:hover, .wpcf7-form-control[type=url]:hover, .wpcf7-form-control[type=number]:hover, .wpcf7-form-control[type=date]:hover, .wpcf7-form-control[type=search]:hover, .wpcf7-form-control.wpcf7-select:hover, .wpcf7-form-control.wpcf7-textarea:hover {
  border-color: var(--color-muted);
}
.wpcf7-form-control[type=text]:focus, .wpcf7-form-control[type=email]:focus, .wpcf7-form-control[type=tel]:focus, .wpcf7-form-control[type=url]:focus, .wpcf7-form-control[type=number]:focus, .wpcf7-form-control[type=date]:focus, .wpcf7-form-control[type=search]:focus, .wpcf7-form-control.wpcf7-select:focus, .wpcf7-form-control.wpcf7-textarea:focus {
  border-color: var(--color-text);
  outline: none;
}
.wpcf7-form-control[type=text]:focus-visible, .wpcf7-form-control[type=email]:focus-visible, .wpcf7-form-control[type=tel]:focus-visible, .wpcf7-form-control[type=url]:focus-visible, .wpcf7-form-control[type=number]:focus-visible, .wpcf7-form-control[type=date]:focus-visible, .wpcf7-form-control[type=search]:focus-visible, .wpcf7-form-control.wpcf7-select:focus-visible, .wpcf7-form-control.wpcf7-textarea:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}
.wpcf7-form-control[type=text]:disabled, .wpcf7-form-control[type=email]:disabled, .wpcf7-form-control[type=tel]:disabled, .wpcf7-form-control[type=url]:disabled, .wpcf7-form-control[type=number]:disabled, .wpcf7-form-control[type=date]:disabled, .wpcf7-form-control[type=search]:disabled, .wpcf7-form-control.wpcf7-select:disabled, .wpcf7-form-control.wpcf7-textarea:disabled {
  background: var(--color-surface);
  color: var(--color-muted);
  cursor: not-allowed;
}

.wpcf7-textarea {
  height: 9.375rem;
  resize: vertical;
}

/* The native arrow differs per platform; one drawn arrow keeps selects even. */
.wpcf7-select {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  padding-right: 2.5rem;
  background-image: linear-gradient(45deg, transparent 50%, currentcolor 50%), linear-gradient(135deg, currentcolor 50%, transparent 50%);
  background-position: right 1.25rem center, right 1rem center;
  background-size: 0.375rem 0.375rem, 0.375rem 0.375rem;
  background-repeat: no-repeat;
}

select[multiple].wpcf7-select {
  min-height: 8.75rem;
  background-image: none;
}

/* ── Checkboxes, radios, acceptance ─────────────────────────────────── */
.wpcf7-checkbox,
.wpcf7-radio,
.wpcf7-acceptance {
  display: grid;
  gap: 0.75rem;
}
.wpcf7-checkbox .wpcf7-list-item,
.wpcf7-radio .wpcf7-list-item,
.wpcf7-acceptance .wpcf7-list-item {
  margin: 0;
}
.wpcf7-checkbox label,
.wpcf7-radio label,
.wpcf7-acceptance label {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 0.75rem;
  cursor: pointer;
  font-weight: 400;
}
.wpcf7-checkbox input[type=checkbox],
.wpcf7-checkbox input[type=radio],
.wpcf7-radio input[type=checkbox],
.wpcf7-radio input[type=radio],
.wpcf7-acceptance input[type=checkbox],
.wpcf7-acceptance input[type=radio] {
  width: 1.25rem;
  height: 1.25rem;
  margin: 0.125rem 0 0;
  accent-color: var(--color-accent);
  cursor: pointer;
}
.wpcf7-checkbox .wpcf7-list-item-label,
.wpcf7-radio .wpcf7-list-item-label,
.wpcf7-acceptance .wpcf7-list-item-label {
  font-size: 0.875rem;
  line-height: 1.45;
}

/* Inline groups: CF7 marks them with .wpcf7-list-item-* modifiers. */
.wpcf7-checkbox.inline,
.wpcf7-radio.inline {
  grid-auto-flow: column;
  justify-content: start;
  gap: 1.5rem;
}

.wpcf7-acceptance a {
  color: inherit;
  text-underline-offset: 0.2em;
}

/* ── File and quiz ──────────────────────────────────────────────────── */
.wpcf7-file {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: 0.875rem;
  cursor: pointer;
}
.wpcf7-file::file-selector-button {
  margin-right: 1rem;
  padding: 0.5rem 1rem;
  border: 0;
  border-radius: var(--radius-sm);
  background: var(--color-text);
  color: var(--color-bg);
  cursor: pointer;
  font: inherit;
  font-size: 0.8125rem;
}

.wpcf7-quiz-label {
  font-weight: 500;
}

/* ── Submit ─────────────────────────────────────────────────────────── */
.wpcf7-submit {
  justify-self: start;
  min-height: var(--field-height);
  padding: 0.75rem 2rem;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--color-accent);
  color: var(--color-on-accent);
  cursor: pointer;
  font: inherit;
  font-weight: 600;
  transition: background-color 200ms cubic-bezier(0.22, 1, 0.36, 1), opacity 200ms cubic-bezier(0.22, 1, 0.36, 1);
}
.wpcf7-submit:hover:not(:disabled) {
  background: var(--color-accent-dark);
}
.wpcf7-submit {
  /* Locked until the required fields are answered — the cursor says why. */
}
.wpcf7-submit:disabled, .wpcf7-submit.is-disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/*
 * The plugin's spinner is removed from the markup in inc/cleanup.php; this is
 * the belt to that pair of braces, for a form rendered by something that does
 * not pass through the filter. The form says it is working by dimming itself
 * and locking the button.
 */
.wpcf7-spinner {
  display: none;
}

/* ── States ─────────────────────────────────────────────────────────── */
.gf-field.is-invalid :is(input, select, textarea),
.wpcf7-form-control-wrap.is-invalid :is(input, select, textarea) {
  border-color: #c92a2a;
}

.wpcf7-not-valid {
  border-color: #c92a2a !important;
}

.wpcf7-not-valid-tip {
  margin-top: 0.5rem;
  color: #c92a2a;
  font-size: 0.8125rem;
}

.wpcf7-response-output {
  margin: 0 !important;
  padding: 1rem 1.5rem !important;
  border: 1px solid var(--color-border) !important;
  border-radius: var(--radius-md);
  font-size: 0.875rem;
}

.wpcf7-form.sent .wpcf7-response-output {
  border-color: var(--color-accent) !important;
  background: var(--color-surface);
}

.wpcf7-form.invalid .wpcf7-response-output,
.wpcf7-form.failed .wpcf7-response-output,
.wpcf7-form.spam .wpcf7-response-output {
  border-color: #c92a2a !important;
  color: #c92a2a;
}

/* While the request is in flight the form stops accepting edits. */
.wpcf7-form.is-sending {
  opacity: 0.7;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .wpcf7-form-control,
  .wpcf7-submit {
    transition: none;
  }
}
/* Inside the contact block the card already provides the padding. */
.contact__card .wpcf7-form {
  gap: 1.25rem;
}

.contact__card .wpcf7-submit {
  justify-self: stretch;
  width: 100%;
}

/* ── Layout built in the editor ─────────────────────────────────────── */
/*
 * The rows and columns the visual builder writes (inc/form-builder.php). A form
 * written by hand never carries these classes, so nothing here reaches it.
 */
.form-row {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 1.25rem;
}
.form-row + .form-row {
  margin-top: 1.25rem;
}

.form-col {
  grid-column: span 12;
  display: grid;
  gap: 1rem;
  align-content: start;
}
@media (min-width: 768px) {
  .form-col {
    grid-column: span var(--form-span, 12);
  }
}
.form-col[data-span="1"] {
  --form-span: 1;
}
.form-col[data-span="2"] {
  --form-span: 2;
}
.form-col[data-span="3"] {
  --form-span: 3;
}
.form-col[data-span="4"] {
  --form-span: 4;
}
.form-col[data-span="5"] {
  --form-span: 5;
}
.form-col[data-span="6"] {
  --form-span: 6;
}
.form-col[data-span="7"] {
  --form-span: 7;
}
.form-col[data-span="8"] {
  --form-span: 8;
}
.form-col[data-span="9"] {
  --form-span: 9;
}
.form-col[data-span="10"] {
  --form-span: 10;
}
.form-col[data-span="11"] {
  --form-span: 11;
}
.form-col[data-span="12"] {
  --form-span: 12;
}

.form-label {
  display: grid;
  gap: 0.5rem;
}

.form-label__text {
  font-weight: 500;
}

.form-consent {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 0.75rem;
}

/*# sourceMappingURL=contact-form.css.map*/