/* =====================================================================
   Ortak form validation UI — R3-03
   Sadece global tasarım token'larını kullanır (tx-theme.css / tx-typography.css).
   Tasarım dilini değiştirmez; yalnızca hata/durum görünümü ekler.
   ===================================================================== */

/* Alan altı hata mesajı */
.ts-field-error {
    display: none;
    margin-top: 0.35rem;
    color: var(--tx-error);
    font-size: var(--tx-text-xs);
    font-weight: var(--tx-font-medium);
    font-family: var(--tx-font-sans);
    line-height: 1.4;
}

.ts-field-error.is-visible {
    display: block;
}

/* Geçersiz alan vurgusu */
[aria-invalid="true"],
.is-invalid {
    border-color: var(--tx-error) !important;
}

[aria-invalid="true"]:focus,
.is-invalid:focus {
    box-shadow: 0 0 0 0.15rem rgba(220, 38, 38, 0.18);
}

/* Form seviyesi ortak mesaj (opsiyonel; mevcut .error-message/.sent-message korunur) */
.ts-form-message {
    font-size: var(--tx-text-sm);
    font-family: var(--tx-font-sans);
    line-height: 1.5;
}

.ts-form-message--error {
    color: var(--tx-error);
}

.ts-form-message--success {
    color: var(--tx-success);
}

/* Gönderim sürerken buton durumu (çift tıklama engeli ile birlikte) */
[type="submit"].is-submitting,
button.is-submitting {
    opacity: 0.7;
    cursor: progress;
}

/* Honeypot: kullanıcıdan ve ekran okuyucudan gizli; bot doldurursa backend reddeder.
   display:none yerine offscreen kullanılır (bazı botlar display:none alanları atlar). */
.ts-honeypot {
    position: absolute !important;
    left: -9999px !important;
    top: auto !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

.ts-consent {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.65rem 0.75rem;
    align-items: start;
    margin: 0.5rem 0;
}

.ts-consent input[type="checkbox"] {
    width: 1.15rem;
    height: 1.15rem;
    margin-top: 0.2rem;
    accent-color: var(--tx-navy-600);
}

.ts-consent label {
    margin: 0;
    color: var(--tx-text-muted);
    font-size: var(--tx-text-sm);
    line-height: 1.55;
}

.ts-consent .ts-field-error {
    grid-column: 2;
    margin-top: 0;
}
