/* ============================================================
   Formulare
   ============================================================ */


/* ------------------------------------------------------------
   Formular
   ------------------------------------------------------------ */

.formular {
    display: flex;
    flex-direction: column;

    gap: var(--abstand-5);
}


/* ------------------------------------------------------------
   Formulargruppe
   ------------------------------------------------------------ */

.formular-gruppe {
    display: flex;
    flex-direction: column;

    gap: var(--abstand-2);
}


/* ------------------------------------------------------------
   Formularzeile
   ------------------------------------------------------------ */

.formular-zeile {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));

    gap: var(--abstand-4);
}

/* ------------------------------------------------------------
   Labels
   ------------------------------------------------------------ */

.formular-label,
.formular-gruppe label {
    color: var(--farbe-text);

    font-size: 0.9375rem;
    font-weight: 600;
}

/* ------------------------------------------------------------
   Eingabefelder
   ------------------------------------------------------------ */

.formular input[type="text"],
.formular input[type="password"],
.formular input[type="email"],
.formular input[type="number"],
.formular input[type="date"],
.formular input[type="search"],
.formular textarea,
.formular select {
    width: 100%;
    min-height: 42px;

    padding:
        var(--abstand-2) var(--abstand-3);

    border: 1px solid var(--farbe-rahmen-stark);
    border-radius: var(--radius-normal);

    background-color: var(--farbe-oberflaeche);

    color: var(--farbe-text);

    line-height: 1.4;

    transition:
        border-color 150ms ease,
        box-shadow 150ms ease,
        background-color 150ms ease;
}

/* ------------------------------------------------------------
   Textbereiche
   ------------------------------------------------------------ */

.formular textarea {
    min-height: 140px;

    resize: vertical;
}

.formular input[type="text"]:hover,
.formular input[type="password"]:hover,
.formular input[type="email"]:hover,
.formular input[type="number"]:hover,
.formular input[type="date"]:hover,
.formular input[type="search"]:hover,
.formular textarea:hover,
.formular select:hover {
    border-color: var(--gruen-500);
}


.formular input[type="text"]:focus,
.formular input[type="password"]:focus,
.formular input[type="email"]:focus,
.formular input[type="number"]:focus,
.formular input[type="date"]:focus,
.formular input[type="search"]:focus,
.formular textarea:focus,
.formular select:focus {
    outline: none;

    border-color: var(--farbe-primaer);

    box-shadow:
        0 0 0 3px rgba(31, 95, 84, 0.12);
}

/* ------------------------------------------------------------
   Textbereiche
   ------------------------------------------------------------ */

.formular textarea {
    min-height: 140px;

    resize: vertical;
}

/* ------------------------------------------------------------
   Hilfetext
   ------------------------------------------------------------ */

.formular-hinweis {
    margin: 0;

    color: var(--farbe-text-sekundaer);

    font-size: 0.875rem;
    line-height: 1.5;
}

.formular-pflicht {
    color: var(--fehler);
}

/* ------------------------------------------------------------
   Fehler
   ------------------------------------------------------------ */

.formular-fehler {
    margin: 0;

    color: var(--fehler);

    font-size: 0.875rem;
    font-weight: 500;
}

.formular-feld-fehler {
    border-color: var(--fehler) !important;
}


.formular-feld-fehler:focus {
    border-color: var(--fehler) !important;

    box-shadow:
        0 0 0 3px rgba(182, 59, 59, 0.12) !important;
}

/* ------------------------------------------------------------
   Checkboxen und Radio-Buttons
   ------------------------------------------------------------ */

.formular-option {
    display: flex;
    align-items: flex-start;

    gap: var(--abstand-2);

    color: var(--farbe-text);

    cursor: pointer;
}


.formular-option input {
    flex-shrink: 0;

    width: 18px;
    height: 18px;

    margin: 2px 0 0;

    accent-color: var(--farbe-primaer);
}

/* ------------------------------------------------------------
   Formularaktionen
   ------------------------------------------------------------ */

.formular-aktionen {
    display: flex;
    align-items: center;
    flex-wrap: wrap;

    gap: var(--abstand-3);

    padding-top: var(--abstand-5);

    border-top: 1px solid var(--farbe-rahmen);
}

/* ============================================================
   Responsive
   ============================================================ */

@media (max-width: 700px) {

    .formular-zeile {
        grid-template-columns: 1fr;
    }


    .formular-aktionen {
        flex-direction: column;
        align-items: stretch;
    }


    .formular-aktionen .button {
        width: 100%;
    }

}