/* ==========================================================================
   forms.css — sitedeki FORMLARIN ortak parçaları: alan/etiket düzeni, ipucu,
   hata gösterimi, durum kutusu, bal küpü.

   Bu kurallar Faz 3d'de contact.css içinde yazılmıştı. Faz 4'te ikinci bir
   form geldi (lisans üreteci); kopyalamak yerine buraya taşındı. Sayfaya özel
   hiçbir şey yok — yalnızca "form-" önekli genel parçalar.

   Kullanan sayfa bunu components.css'ten SONRA, kendi sayfa dosyasından
   ÖNCE bağlar. Sabit renk/ölçü YOK; her şey tokens.css'ten.
   ========================================================================== */

/* ---------- Alanlar ---------- */

.form-field + .form-field,
.form-field + .form-fieldset,
.form-fieldset + .form-field {
    margin-top: var(--space-5);
}

.form-field label,
.form-fieldset legend {
    /* base.css etiketleri satır içi bırakıyor; formda her etiket kendi satırı. */
    display: block;
    margin-bottom: var(--space-2);
    color: var(--color-text-strong);
    font-size: var(--fs-base);
    font-weight: var(--fw-semibold);
}

.form-field input,
.form-field textarea {
    width: 100%;
    background-color: var(--color-surface);
    font: inherit;
    transition: border-color var(--transition-fast);
}

.form-field input:hover,
.form-field textarea:hover {
    border-color: var(--color-primary);
}

.form-field textarea {
    /* Dikey büyütme serbest; yatayda kutuyu taşırmasın. */
    resize: vertical;
    min-height: 8rem;
    line-height: var(--lh-normal);
}

/* İki alan yan yana; dar ekranda alt alta. */
.form-grid {
    display: grid;
    gap: var(--space-4);
}

@media (min-width: 560px) {
    .form-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    /* Grid içindeki ikinci alan zaten kendi hücresinde; üstten boşluk gerekmez. */
    .form-grid .form-field + .form-field {
        margin-top: 0;
    }
}

/* Birkaç alanı tek soru altında toplayan kutu. */
.form-fieldset {
    padding: var(--space-4);
    background-color: var(--color-surface);
    border-color: var(--color-border);
    border-radius: var(--radius-md);
}

.form-fieldset legend {
    padding-inline: var(--space-2);
    margin-bottom: 0;
}

.form-hint {
    max-width: none;
    margin-block: var(--space-2) var(--space-4);
    color: var(--color-text-muted);
    font-size: var(--fs-sm);
}

.form-field .form-hint {
    margin-bottom: 0;
}

.form-counter {
    /* JS yokken hiç görünmez (hidden niteliği), JS varsa sayaç yazar. */
    color: var(--color-text-muted);
}

.form-required {
    color: var(--c-danger);
    font-weight: var(--fw-bold);
}

/* ---------- Hata gösterimi ----------
   Sınıf adlarının bir kısmını ASP.NET kendisi ekliyor:
   geçersiz alana .input-validation-error, hatalı alan mesajına
   .field-validation-error, özet kutusuna .validation-summary-errors
   (hata yoksa .validation-summary-valid). Stil bunlara bağlanıyor ki
   sunucu hatası JS olmadan da görünür olsun. */

.form-field input.input-validation-error,
.form-field textarea.input-validation-error {
    border-color: var(--c-danger);
}

.form-error {
    display: block;
    margin-top: var(--space-2);
    color: var(--c-danger);
    font-size: var(--fs-sm);
    font-weight: var(--fw-medium);
}

/* Hata yokken boş satır kadar yer tutmasın. */
.form-error:empty {
    display: none;
}

.form-summary.validation-summary-valid {
    display: none;
}

.form-summary.validation-summary-errors {
    margin-bottom: var(--space-5);
    padding: var(--space-4);
    border: 1px solid var(--c-danger);
    border-left-width: 4px;
    border-radius: var(--radius-md);
    background-color: var(--color-surface);
    color: var(--color-text-strong);
}

.form-summary ul {
    margin: 0;
    padding-left: var(--space-5);
}

/* ---------- Durum kutusu ---------- */

.form-alert {
    margin-bottom: var(--space-5);
    padding: var(--space-4);
    border: 1px solid var(--color-border);
    border-left-width: 4px;
    border-radius: var(--radius-md);
    background-color: var(--color-surface);
}

.form-alert p:last-child {
    margin-bottom: 0;
}

.form-alert--ok {
    border-color: var(--c-success);
}

/* Eksik ayar / dikkat edilmesi gereken durum. */
.form-alert--warn {
    border-color: var(--c-warning);
}

/* ---------- Bal küpü ----------
   Ekran dışına taşınıyor; display:none yerine bu yöntem seçildi çünkü bazı
   botlar gizli alanları atlar, taşınmış alanı doldurur. Görme engelli
   kullanıcıya da ulaşmaz: kapsayıcıda aria-hidden, girdide tabindex="-1". */

.form-honeypot {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
