/**
 * Forminator forms in the theme look. The forms are set to design "none" in
 * Forminator, so only its grid CSS loads; inputs inherit the base form styles
 * from style.css, this file adds labels, grid spacing, errors and the button.
 */
.forminator-ui.forminator-custom-form {
    margin: 0;
}

/* Forminator's grid CSS (data-grid=open) uses selectors like
   .forminator-ui.forminator-custom-form:not(.forminator-size--small)[data-grid=open] .forminator-row:not(:last-child)
   plus flex + negative margins. Out-specifying that for every rule is not
   worth it — the layout-defining properties are forced here, scoped to Forminator. */
.forminator-ui.forminator-custom-form .forminator-row {
    display: grid !important;
    gap: 0 1.25rem;
    margin: 0 !important;
}

/* "Hide form after submit" uses jQuery .hide() (inline display:none) on the
   rows — the !important above would beat it. */
.forminator-ui.forminator-custom-form .forminator-row[style*="display: none"] {
    display: none !important;
}

/* Sending: fields fade and are blocked, a spinner sits on top.
   Forminator sets .forminator-fields-disabled while the request runs
   ("show loader" on), the button class covers forms without it. */
.forminator-ui.forminator-custom-form {
    position: relative;
}

.forminator-ui.forminator-fields-disabled .forminator-row,
.forminator-ui.forminator-custom-form:has(.forminator-button-onload) .forminator-row {
    opacity: .45;
    pointer-events: none;
    transition: opacity var(--transition-fast);
}

.forminator-ui.forminator-fields-disabled::after,
.forminator-ui.forminator-custom-form:has(.forminator-button-onload)::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 2;
    width: 3rem;
    height: 3rem;
    margin: -1.5rem 0 0 -1.5rem;
    border: 4px solid var(--color-border);
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation: teigtaschen-form-spin .8s linear infinite;
}

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

/* The spinner is the only "still working" signal — slow it down, keep it */
@media (prefers-reduced-motion: reduce) {
    .forminator-ui.forminator-fields-disabled::after,
    .forminator-ui.forminator-custom-form:has(.forminator-button-onload)::after {
        animation-duration: 2.4s;
    }
}

@media (min-width: 36rem) {
    .forminator-ui .forminator-row:has(> .forminator-col-6) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.forminator-ui.forminator-custom-form .forminator-col {
    width: auto !important;
    max-width: none !important;
    min-width: 0;
    padding: 0 !important;
    margin: 0 0 1.25rem !important;
}

.forminator-ui .forminator-label {
    display: block;
    margin-bottom: .5625rem;
    font-size: .90625rem;
    font-weight: var(--font-weight-bold);
    color: var(--color-text);
}

.forminator-ui .forminator-required {
    color: var(--color-primary);
}

.forminator-ui .forminator-input,
.forminator-ui .forminator-textarea,
.forminator-ui select {
    width: 100%;
}

.forminator-ui .forminator-textarea {
    min-height: 9.375rem;
}

.forminator-ui .forminator-description {
    margin-top: .375rem;
    font-size: .84375rem;
    color: var(--color-text-muted);
}

/* Checkboxes + consent. Markup: .forminator-checkbox__wrapper > label.forminator-checkbox
   (input + empty .forminator-checkbox-box) + .forminator-checkbox__label (text);
   checkbox fields put the text span inside the label instead. */
.forminator-ui .forminator-checkbox__wrapper {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: .75rem;
}

.forminator-ui .forminator-checkbox {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    margin: 0;
    cursor: pointer;
}

/* The whole consent row toggles the box, links in the text stay clickable */
.forminator-ui .forminator-consent::after {
    content: "";
    position: absolute;
    inset: 0;
}

.forminator-ui .forminator-consent__label a {
    position: relative;
    z-index: 1;
}

.forminator-ui .forminator-checkbox-box {
    display: none;
}

.forminator-ui input[type="checkbox"] {
    appearance: none;
    flex: none;
    display: grid;
    place-content: center;
    width: 1.5rem;
    height: 1.5rem;
    margin: 0;
    border-radius: .375rem;
    background: var(--color-background);
    /* stone, not sand: the box outline needs 3:1 (WCAG 1.4.11) */
    box-shadow: inset 0 0 0 1.5px var(--color-text-muted);
    cursor: pointer;
    transition: box-shadow var(--transition-fast), background-color var(--transition-fast);
}

.forminator-ui input[type="checkbox"]::before {
    content: "";
    width: .4375rem;
    height: .75rem;
    margin-top: -.1875rem;
    border: solid var(--color-primary-contrast);
    border-width: 0 2.5px 2.5px 0;
    transform: rotate(45deg) scale(0);
    transition: transform var(--transition-fast);
}

.forminator-ui input[type="checkbox"]:checked {
    background: var(--color-primary);
    box-shadow: none;
}

.forminator-ui input[type="checkbox"]:checked::before {
    transform: rotate(45deg) scale(1);
}

.forminator-ui input[type="checkbox"]:focus-visible {
    outline: 2px solid var(--color-focus);
    outline-offset: 2px;
}

.forminator-ui .forminator-checkbox__label,
.forminator-ui .forminator-checkbox-label {
    padding-top: .0625rem;
    font-size: .9375rem;
    line-height: 1.5;
    color: var(--color-text);
}

.forminator-ui .forminator-has_error input[type="checkbox"]:not(:checked) {
    box-shadow: inset 0 0 0 2px var(--color-primary);
}

@media (prefers-reduced-motion: reduce) {
    .forminator-ui input[type="checkbox"],
    .forminator-ui input[type="checkbox"]::before {
        transition: none;
    }
}

/* Errors */
.forminator-ui .forminator-error-message {
    display: block;
    margin-top: .375rem;
    font-size: .875rem;
    font-weight: var(--font-weight-bold);
    color: var(--color-primary-active);
}

.forminator-ui .forminator-has_error .forminator-input,
.forminator-ui .forminator-has_error .forminator-textarea {
    box-shadow: inset 0 0 0 2px var(--color-primary);
}

.forminator-ui .forminator-response-message:not(:empty) {
    margin-bottom: 1.25rem;
    padding: 1rem 1.25rem;
    border-radius: var(--radius-sm);
    background: var(--color-background-alt);
    font-size: .96875rem;
}

.forminator-ui .forminator-response-message.forminator-error:not(:empty) {
    box-shadow: inset 3px 0 0 var(--color-primary);
}

.forminator-ui .forminator-response-message.forminator-success:not(:empty) {
    box-shadow: inset 3px 0 0 var(--color-success);
}

.forminator-ui .forminator-response-message p {
    margin-bottom: 0;
    padding-bottom: 0;
}

/* Submit = .btn .btn-primary */
.forminator-ui .forminator-button-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 3.25rem;
    padding: 1rem 1.75rem;
    border: 0;
    border-radius: var(--radius-pill);
    background: var(--color-primary);
    color: var(--color-primary-contrast);
    font-size: .96875rem;
    font-weight: var(--font-weight-bold);
    cursor: pointer;
    box-shadow: 0 12px 24px -12px rgba(208, 18, 31, .7);
    transition: background-color var(--transition), box-shadow var(--transition), transform var(--transition);
}

.forminator-ui .forminator-button-submit:hover {
    background: var(--color-primary-hover);
    transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
    .forminator-ui .forminator-button-submit:hover {
        transform: none;
    }
}

.forminator-ui.forminator-custom-form .forminator-row-last .forminator-col {
    margin: .5rem 0 0 !important;
}

/* HTML fields (e.g. privacy note inside the form) */
.forminator-ui .forminator-field-html,
.forminator-ui .forminator-field-html p {
    font-size: .875rem;
    line-height: 1.6;
    color: var(--color-text-muted);
}
