/* ==============================================================
   kayit.css

   BÖLÜM A · ORTAK (legacy)
     kayit.php ve google_kayit_tamamla.php birlikte kullanır.
     js/kayit.js sözleşmesi: .field / .has-error / .shake /
     #phone-input-wrapper / autofill animasyonu.

   BÖLÜM B · .ky  (kayit.php v2 — tam genişlik, ortalanmış tek sütun)
     ██ TASARIM DİLİ: “BERRAK” (Berrak Design Language)
        Tam tanım ve 8 kural: css/profilim.css dosya başı.
        Aynı dili kullananlar: giris.php (.gr-*), profilim.php (.pr-*).
     WCAG 2.1/2.2 AAA katmanı. Kontrast oranları beyaz (#fff) zemine
     göre ölçüldü.

     #0f172a 17.9:1 · #334155 10.4:1 · #475569 7.58:1 · #1e40af 8.83:1
     #1e3a8a 10.5:1 · #991b1b 8.32:1 · #065f46 7.75:1
     #64748b 4.76:1 (YALNIZ kenar/ikon — metin DEĞİL)
   ============================================================== */

/* ══════════════════════════════════════════════════════════════
   BÖLÜM A · ORTAK
   ══════════════════════════════════════════════════════════════ */

/* Form alanı kapsayıcısı (JS `closest('.field')` ile bulur) */
.field {
    transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
    cursor: text;
}
.field:focus-within {
    border-color: #2563eb;
    box-shadow: 0 0 0 4px rgba(37, 99, 235, .14);
    background: #fff;
}
.field.has-error {
    border-color: #f87171;
    background: #fef2f2;
}

.shadow-card  { box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -8px rgba(37, 99, 235, .12); }
.shadow-btn   { box-shadow: 0 1px 0 rgba(255,255,255,.15) inset, 0 6px 16px -4px rgba(37, 99, 235, .35); }
.shadow-field { box-shadow: 0 1px 0 rgba(15, 23, 42, .03) inset; }

/* Hata titreşimi (JS .shake ekler/çıkarır) */
@keyframes shake {
    0%, 100%  { transform: translateX(0); }
    20%, 60%  { transform: translateX(-3px); }
    40%, 80%  { transform: translateX(3px); }
}
.shake { animation: shake .35s ease-in-out; }

.pb-safe { padding-bottom: max(1rem, env(safe-area-inset-bottom)); }
.pt-safe { padding-top: max(1rem, env(safe-area-inset-top)); }

/* intl-tel-input v24 — .field içindeki çift kenarlığı kaldır */
#phone-input-wrapper .iti { width: 100%; }
#phone-input-wrapper .iti.iti--allow-dropdown.iti--separate-dial-code {
    border: none !important;
    border-radius: inherit !important;
    min-height: auto !important;
    background: transparent !important;
}
#phone-input-wrapper .iti.iti--allow-dropdown.iti--separate-dial-code:focus-within {
    border: none !important;
    box-shadow: none !important;   /* halkayı .field:focus-within verir */
}
#phone-input-wrapper .iti__selected-country {
    border-radius: 12px 0 0 12px !important;
    border-right: 1px solid #e2e8f0 !important;
    background: rgba(255,255,255,0.5);
    padding: 0 10px;
    flex-shrink: 0 !important;      /* bayrak+kod sabit, input esnek */
}
#phone-input-wrapper .iti__tel-input {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    /* padding-left: kayit.js ResizeObserver ile dinamik ayarlar */
}

/* Ülke listesi — dokunma hedefi, klavye odağı ve AAA kontrast.
   .ky ile KAPSAMLANMAZ: liste tam ekran modda <body>'ye taşınıyor.
   head_etiketleri.php'deki genel ITI stilleri burada AAA'ya çekilir. */
.iti__country { min-height: 44px; }
/* ⚠ YÜKLEME SIRASI: intlTelInput CDN CSS'i ve head_etiketleri.php'nin ITI
   <style> bloğu bu dosyadan SONRA geliyor. Bu yüzden:
     · yalnızca head ile çakışanlarda iki sınıflı (0,2,0) yeter,
     · CDN'in kendi (0,2,0) kurallarıyla (ör. .iti--inline-dropdown …)
       çakışanlarda `!important` ŞART. */
.iti__dropdown-content .iti__search-input { font-size: 16px; color: #0f172a; }  /* 16px: iOS zoom engeli */
.iti__dropdown-content .iti__search-input::placeholder { color: #475569; opacity: 1; }   /* 7.58:1 */
.iti__country .iti__country-name { color: #0f172a; }                   /* 17.9:1 */
/* Ülke kodu #64748b idi: beyazda 4.76:1, vurgulu satırda (#eff6ff) 4.37:1 → AAA'yı geçmiyordu */
.iti__country .iti__dial-code { color: #334155; }                      /* 9.4:1 (#eff6ff üstünde) */

/* Açılır panel — CDN varsayılanı gri #ccc kenarlık + sert 1px gölge veriyordu;
   formun yumuşak diliyle uyumsuzdu. */
.iti__dropdown-content {
    margin-top: 6px !important;
    padding: 8px !important;
    /* #cbd5e1 idi: beyaz zeminde 1.42:1 → 1.4.11'in 3:1 eşiğini geçmiyordu.
       (Panelin sınırını asıl gölge veriyor ama kenarlık da eşiği karşılasın.)
       #64748b = 4.76:1 ve form alanlarının kenarlığıyla aynı ton. */
    border: 1px solid #64748b !important;
    border-radius: 16px !important;
    background: #ffffff !important;
    box-shadow: 0 18px 40px -12px rgba(15, 23, 42, .28), 0 0 0 1px rgba(15, 23, 42, .05) !important;
}
/* Ülke arama kutusu — form alanlarıyla aynı dil */
.iti__dropdown-content .iti__search-input {
    width: calc(100% - 4px) !important;
    margin: 2px 2px 6px !important;
    padding: 10px 14px !important;
    border: 1.5px solid #64748b !important;
    border-radius: 12px !important;
}
/* Odak halkası: 3px, dışa 2px boşlukla (panel padding'i 8px → sığar).
   offset:-1px iken kenarlığın üstüne binip "kalın çerçeve" gibi görünüyordu. */
.iti__dropdown-content .iti__search-input:focus,
.iti__dropdown-content .iti__search-input:focus-visible {
    outline: 3px solid #1e3a8a !important;
    outline-offset: 2px !important;
    border-color: #1e3a8a !important;
    box-shadow: none !important;
}
.iti__country { border-radius: 10px; }
.iti__country.iti__highlight { background: #eff6ff !important; }

/* === Tarayıcı autofill ===
   SORUN: Chrome/Safari otomatik doldurulan input'un içine KARE KÖŞELİ açık mavi
   (#e8f0fe) bir dikdörtgen boyar. Kapsayıcı 14px yuvarlatıldığı için bu
   dikdörtgenin köşeleri dışarı taşar ve alanın kenarında "kaçak dikey çizgi"
   gibi görünür; hata durumunda da pembe zemini örter.
   ÇÖZÜM (üç parça birlikte):
     1. `background-clip: text` — destekleyen tarayıcıda boyama görünmez olur.
        TEK BAŞINA YETMEZ: Chrome bunu form kontrollerine uygulamıyor (canlıda
        doğrulandı — kural yüklü olmasına rağmen mavi dolgu duruyordu).
     2. `box-shadow: 0 0 0 1000px #fff inset` — alanı beyaza boyar (garanti yol).
     3. `.ky-input`/`.iti__tel-input` üzerinde `border-radius: 13px` — iç gölge
        elemanın KENDİ yarıçapına kırpılır; bu olmadan kare köşeler kapsayıcının
        14px yuvarlağından taşıp "kaçak dikey çizgi" üretir. Asıl hata buydu.
   Hata durumu için ayrıca pembe (#fef2f2) iç gölge tanımlanır.
   NOT: `:-webkit-autofill` ve `:autofill` kuralları AYRI bloklarda — bir
   tarayıcı `:autofill`i tanımazsa geçersiz seçici TÜM bloğu düşürür
   (seçici listeleri bağışlayıcı değildir). */
@keyframes onAutoFillStart { from {} to {} }
/* :-webkit-autofill animasyonu -> JS animationstart yakalar (Chrome/Safari/Edge) */
#kayitFormu input:-webkit-autofill { animation-name: onAutoFillStart; animation-duration: .001s; }

#kayitFormu input:-webkit-autofill,
#kayitFormu input:-webkit-autofill:hover,
#kayitFormu input:-webkit-autofill:focus,
#kayitFormu input:-webkit-autofill:active {
    /* 1) Modern yol — destekleyen tarayıcıda boyama görünmez olur */
    -webkit-background-clip: text;
    background-clip: text;
    /* 2) GARANTİ yol — Chrome `background-clip:text`i form kontrollerinde
          uygulamıyor; devasa iç gölge ile alanı beyaza boya. Bu gölge
          elemanın KENDİ border-radius'una kırpılır → aşağıdaki yarıçap
          kuralı olmadan kare köşeleri dışarı taşar ("kaçak dikey çizgi"). */
    -webkit-box-shadow: 0 0 0 1000px #ffffff inset;
    box-shadow: 0 0 0 1000px #ffffff inset;
    -webkit-text-fill-color: #0f172a;
    caret-color: #0f172a;
    transition: background-color 9999s ease-out 0s;
}
#kayitFormu input:autofill,
#kayitFormu input:autofill:hover,
#kayitFormu input:autofill:focus {
    background-clip: text;
    box-shadow: 0 0 0 1000px #ffffff inset;
    -webkit-text-fill-color: #0f172a;
    caret-color: #0f172a;
}
/* Hata durumunda pembe zemin korunsun (aksi halde beyaz gölge onu örter).
   Özgüllük: (1,2,1) — yukarıdaki (1,0,1) kuralını yener. */
#kayitFormu .field.has-error input:-webkit-autofill,
#kayitFormu .field.has-error input:-webkit-autofill:hover,
#kayitFormu .field.has-error input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px #fef2f2 inset;
    box-shadow: 0 0 0 1000px #fef2f2 inset;
}
#kayitFormu .field.has-error input:autofill,
#kayitFormu .field.has-error input:autofill:hover,
#kayitFormu .field.has-error input:autofill:focus {
    box-shadow: 0 0 0 1000px #fef2f2 inset;
}


/* ══════════════════════════════════════════════════════════════
   BÖLÜM B · .ky — kayit.php v2
   ══════════════════════════════════════════════════════════════ */

/* head_etiketleri.php'de global `html{background-color:#1e3a8a}` var; bu sayfada
   overscroll sırasında beyaz form sütununun altında koyu mavi görünüyordu.
   Bu dosya yalnızca kayıt sayfalarında yüklenir. !important: inline <style>
   bloğu bu link'ten SONRA geldiği için gerekli. */
html { background-color: #ffffff !important; }

/* Tasarım belirteçleri :root'ta — ID ile stillenen ortak satırlar
   (#tel-error, #email-ajax-*) .ky dışında da (google_kayit_tamamla.php)
   bu değişkenleri çözebilmeli. */
:root {
    /* Metin (AAA ≥7:1) */
    --ky-ink:        #0f172a;   /* 17.9:1 — başlık ve girilen değer */
    --ky-body:       #334155;   /* 10.4:1 — etiket, gövde */
    --ky-help:       #475569;   /*  7.58:1 — yardımcı metin, placeholder, ikon */
    /* Marka */
    --ky-brand:      #1e40af;   /*  8.83:1 — bağlantı + birincil buton zemini */
    --ky-brand-dark: #1e3a8a;   /* 10.5:1 — hover, odak halkası */
    /* Durum */
    --ky-err:        #991b1b;   /*  8.32:1 beyazda · 7.6:1 #fef2f2 üstünde */
    --ky-err-bg:     #fef2f2;
    --ky-ok:         #065f46;   /*  7.75:1 */
    /* UI kenarları (1.4.11 ≥3:1) */
    --ky-line:       #64748b;   /*  4.76:1 — input kenarı; METİN DEĞİL */
    --ky-line-soft:  #e2e8f0;   /* yalnız dekoratif ayraç */
}

.ky {
    width: 100%;
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    background: #ffffff;
    color: var(--ky-ink);
}

/* ── Yerleşim: tek sütun, ortalanmış form (sol marka paneli kaldırıldı) ── */
.ky-split {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}
@media (min-width: 1024px) {
    .ky-split { min-height: calc(100vh - 58px); }   /* navbar yüksekliği */
}

/* ══ Form sütunu ═════════════════════════════════════════════ */
.ky-form-sutun {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background: #ffffff;
}
.ky-form-ic {
    width: 100%;
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
    padding: 24px 20px calc(40px + env(safe-area-inset-bottom, 0px));
}
@media (min-width: 640px) {
    .ky-form-ic { max-width: 620px; padding: 32px 32px 48px; }
}
@media (min-width: 1024px) {
    /* TAM GENİŞLİK: 1320px — site navbar'ının (.nv-ic) içerik genişliğiyle
       hizalı. margin:auto — içerik taşarsa üstten kırpmaz. */
    .ky-form-ic {
        max-width: 1320px;
        padding: 44px clamp(28px, 3.2vw, 56px) 52px;
        margin-top: auto;
        margin-bottom: auto;
    }
}

/* Dar telefonlarda form kenar boşluğunu sıkılaştır */
@media (max-width: 420px) {
    .ky-form-ic { padding-left: 16px; padding-right: 16px; }
}

/* ── Split: formun kendisi ≥1024px'te iki sütuna ayrılır ───── */
.ky-kolonlar { display: grid; grid-template-columns: 1fr; }
.ky-kolon { min-width: 0; }

@media (min-width: 1024px) {
    .ky-kolonlar {
        grid-template-columns: 1fr 1fr;
        column-gap: 0;              /* aradaki boşluğu sütun padding'leri verir */
        align-items: start;
    }
    .ky-kolonlar > .ky-kolon:first-child { padding-right: clamp(28px, 3vw, 52px); }
    .ky-kolonlar > .ky-kolon + .ky-kolon {
        padding-left: clamp(28px, 3vw, 52px);
        border-left: 1px solid var(--ky-line-soft);
    }
    /* Şifre alanları sütun içinde daralmasın: sağ sütunda tek sıra */
    .ky-bolum-guvenlik .ky-grid { grid-template-columns: 1fr; }
}

/* ── Başlık bloğu ─────────────────────────────────────────── */
.ky-ust { margin-bottom: 22px; }
.ky-h1 {
    margin: 0;
    font-size: clamp(1.65rem, 1.3rem + 1.2vw, 2.05rem);
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -.02em;
    color: var(--ky-ink);
}
.ky-h1-alt {
    margin: 8px 0 0;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--ky-help);
    max-width: 62ch;
}
/* Cümle içi bağlantı (2.5.5 satır içi muafiyeti); aynı işlev için sayfa
   altında 44px'lik "Giriş Yap" bağlantısı da bulunur. */
.ky-h1-alt a { display: inline-block; padding: 3px 0; color: var(--ky-brand); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.ky-h1-alt a:hover { color: var(--ky-brand-dark); }

/* ── Sunucu hata kutusu ───────────────────────────────────── */
.ky-uyari {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 20px;
    padding: 14px 16px;
    border-radius: 16px;
    background: var(--ky-err-bg);
    border: 1.5px solid #fca5a5;
}
.ky-uyari svg { flex: 0 0 auto; width: 22px; height: 22px; color: var(--ky-err); margin-top: 1px; }
.ky-uyari p { margin: 0; min-width: 0; font-size: .9375rem; font-weight: 600; line-height: 1.55; color: var(--ky-err); overflow-wrap: anywhere; }
.ky-uyari:focus { outline: 3px solid var(--ky-brand-dark); outline-offset: 3px; }

/* ── Bölüm (fieldset) ─────────────────────────────────────── */
.ky-bolum { border: 0; margin: 0 0 26px; padding: 0; min-width: 0; }
.ky-bolum > legend {
    display: block;
    width: 100%;
    padding: 0;
    margin: 0 0 14px;
    font-size: .8125rem;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
    line-height: 1.5;
    color: var(--ky-body);
}
.ky-bolum > legend small {
    display: block;
    margin-top: 4px;
    font-size: .8125rem;
    font-weight: 600;
    letter-spacing: normal;
    text-transform: none;
    color: var(--ky-help);
}

/* ── Alan ızgarası ────────────────────────────────────────── */
.ky-grid { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
@media (min-width: 600px) { .ky-grid { grid-template-columns: 1fr 1fr; gap: 16px 18px; } }
.ky-grid > .ky-tam { grid-column: 1 / -1; }
.ky-alan { min-width: 0; }

/* ── Etiket ───────────────────────────────────────────────── */
.ky-label {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 6px;
    padding: 3px 0;               /* 2.5.8 — etiket tıklama hedefi ≥24px */
    min-height: 24px;
    font-size: .875rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    line-height: 1.5;
    color: var(--ky-body);       /* 10.4:1 */
}
.ky-req {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    background: var(--ky-err-bg);
    border: 1px solid #fecaca;
    color: var(--ky-err);        /* 7.6:1 (#fef2f2 üstünde) */
    font-size: .6875rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
    white-space: nowrap;
}
/* Etiket + sağdaki durum metni (şifre gücü) aynı satırda.
   DİKKAT: durum metni <label> DIŞINDA durur; içinde olsaydı input'un
   erişilebilir adı her tuş vuruşunda değişirdi. */
.ky-label-satir {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 6px 10px;
    margin-bottom: 8px;
}
.ky-label-satir .ky-label { margin-bottom: 0; }

/* ── Alan kutusu ──────────────────────────────────────────── */
.ky .field {
    display: flex;
    align-items: center;
    min-height: 54px;                     /* 2.5.5 dokunma hedefi (AAA) */
    background: #ffffff;
    border: 1.5px solid var(--ky-line);    /* 4.76:1 ≥ 3:1 */
    border-radius: 14px;
    box-shadow: none;
}
.ky .field:focus-within {
    border-color: var(--ky-brand-dark);
    background: #ffffff;
    /* 2px beyaz boşluk + 3px koyu halka (10.5:1). outline: forced-colors için */
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px var(--ky-brand-dark);
    outline: 3px solid transparent;
    outline-offset: 2px;
}
.ky .field.has-error {
    border-color: var(--ky-err);
    background: var(--ky-err-bg);
}
.ky .field.has-error:focus-within {
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 5px var(--ky-err);
}

.ky-fikon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    align-self: stretch;
    color: var(--ky-help);        /* 7.58:1 */
}
.ky-fikon svg { width: 20px; height: 20px; }

.ky-input {
    flex: 1 1 auto;
    min-width: 0;
    align-self: stretch;
    background: transparent;
    border: 0;
    outline: none;
    padding: 12px 14px 12px 0;
    font: inherit;
    font-size: 16px;             /* iOS otomatik yakınlaşma engeli */
    line-height: 1.5;
    color: var(--ky-ink);        /* 17.9:1 */
    -webkit-appearance: none;
    appearance: none;
    /* Autofill'in iç gölgesi elemanın KENDİ yarıçapına kırpılır. Kapsayıcının
       iç köşesi 13px; burada da 13px verilmezse boyama kare köşeyle dışarı
       taşar ve alanın kenarında kaçak dikey çizgi görünür. Girdinin kendi
       arka planı şeffaf olduğu için yarıçapın başka bir görsel etkisi yok. */
    border-radius: 13px;
}
.ky-input::placeholder { color: var(--ky-help); opacity: 1; }   /* 7.58:1 (beyaz zemin) */
/* Hata durumunda zemin #fef2f2 oluyor; --ky-help orada 6.93:1'e düşüp AAA
   eşiğini (7:1) kıl payı kaçırıyordu. Daha koyu ton → 9.4:1. */
.ky .field.has-error .ky-input::placeholder { color: var(--ky-body); }
.ky-input:focus { outline: none; }   /* halkayı .field:focus-within taşır */

/* Alan sonu durum ikonu (e-posta AJAX kontrolü) */
.ky-durum { flex: 0 0 auto; display: none; align-items: center; padding-right: 12px; }
.ky-durum:not(.hidden) { display: inline-flex; }
.ky-durum svg { width: 20px; height: 20px; }
#eposta-status  { color: var(--ky-ok); }
#eposta-error-icon { color: var(--ky-err); }

/* Şifre göster/gizle */
.ky-goz {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    min-height: 48px;
    margin-right: 3px;
    border: 0;
    border-radius: 12px;
    background: transparent;
    color: var(--ky-help);
    cursor: pointer;
}
.ky-goz:hover { color: var(--ky-ink); background: #f1f5f9; }
.ky-goz .fas { font-size: 17px; }

/* ── Yardımcı metin ───────────────────────────────────────── */
.ky-help {
    margin: 7px 0 0;
    font-size: .875rem;
    line-height: 1.5;
    color: var(--ky-help);       /* 7.58:1 */
    max-width: 62ch;             /* 1.4.8 — satır ≤80 karakter */
    overflow-wrap: anywhere;
}

/* ── Hata / bilgi satırları (renk TEK BAŞINA değil: ikon + metin) ── */
.ky-err {
    margin: 8px 0 0;
    font-size: .875rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--ky-err);        /* 8.32:1 */
}
.ky-err:not(.hidden) { display: flex; align-items: flex-start; gap: 8px; }
.ky-err > span { min-width: 0; overflow-wrap: anywhere; }
.ky-err svg { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 1px; }
.ky-err::before {
    content: "";
    flex: 0 0 auto;
    width: 18px; height: 18px;
    margin-top: 1px;
    background: no-repeat center / contain
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23991b1b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E");
}
.ky-err.hidden::before { content: none; }
/* İçinde kendi <svg> ikonu olan satırlarda ::before'u tekrarlama */
.ky-err.ky-err-ikonlu::before { content: none; }

/* JS className'i sıfırladığı için ID ile stillenir (js/kayit.js) */
#email-ajax-error:not(.hidden),
#email-ajax-ok:not(.hidden) {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 8px;
    font-size: .875rem;
    line-height: 1.5;
    font-weight: 600;
    overflow-wrap: anywhere;
}
#email-ajax-error { color: var(--ky-err); }
#email-ajax-error.text-red-500  { color: var(--ky-err); }
#email-ajax-error.text-blue-500 { color: var(--ky-brand); }
#email-ajax-ok { color: var(--ky-ok); }
#email-ajax-error:not(.hidden)::before,
#email-ajax-ok:not(.hidden)::before {
    content: "";
    flex: 0 0 auto;
    width: 18px; height: 18px;
    margin-top: 1px;
    background: no-repeat center / contain
      url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23991b1b' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3z'/%3E%3Cpath d='M12 9v4M12 17h.01'/%3E%3C/svg%3E");
}
#email-ajax-error.text-blue-500:not(.hidden)::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231e40af' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E");
}
#email-ajax-ok:not(.hidden)::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23065f46' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.8 10.5V12a10 10 0 1 1-5.9-9.1'/%3E%3Cpath d='m9 11 3 3L22 4'/%3E%3C/svg%3E");
}

/* Telefon hata satırı (markup'ta kendi ikonu var).
   .ky ile kapsamlı: google_kayit_tamamla.php'deki eski markup kendi
   Tailwind sınıflarıyla çalışmaya devam etsin. */
.ky #tel-error:not(.hidden) {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 8px;
    font-size: .875rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--ky-err);
}
.ky #tel-error svg { flex: 0 0 auto; width: 18px; height: 18px; margin-top: 1px; }
.ky #tel-error span { min-width: 0; overflow-wrap: anywhere; }

/* ── Telefon alanı (intl-tel-input v24) ─────────────────────
   Hedef: ülke seçici, alanın İÇİNDE bir önek gibi dursun — ayrı bir
   kutu gibi DEĞİL. Bu yüzden:
     · zemin şeffaf (gri blok + beyaz gövde iki parçalı görünüyordu)
     · sert `border-right` yerine üst/alttan içeri çekilmiş ::after ayracı
       (tam boy çizgi, 14px'lik yuvarlak köşeye çarpıp köşede beyaz hilal
        bırakıyordu)
     · iç boşluklar daraltıldı → numara metni diğer alanların metniyle
       ~17px daha hizalı başlıyor
   !important: BÖLÜM A'daki ortak kurallar da !important taşıyor. */
.ky #phone-input-wrapper .iti__selected-country {
    position: relative;
    /* min-height: 52px DEĞİL. Kapsayıcı `.iti__country-container` 52px ve
       `padding:1px` taşıyor → içerik kutusu 50px. 52px zorlanınca düğme alttan
       1px taşıp alanın alt kenarlığını ÖRTÜYOR; kenarlık yalnızca ayraçtan
       sağda görünüyor ve alan "bir yanı eksik" duruyor.
       ITI'nin kendi `height:100%` değeri 50px verir; dokunma hedefi zaten ≥44px. */
    min-height: 44px;
    padding: 0 8px 0 10px;
    background: transparent !important;
    border-right: 0 !important;
    border-radius: 13px 0 0 13px !important;   /* alanın iç köşesiyle birebir */
    transition: background-color .15s ease;
}
/* İçeri çekilmiş hairline ayraç — köşelere ve kenarlığa değmez */
.ky #phone-input-wrapper .iti__selected-country::after {
    content: "";
    position: absolute;
    top: 12px;
    bottom: 12px;
    right: 0;
    width: 1px;
    background: #94a3b8;
    pointer-events: none;
}
/* v24'ün hover'ı iç `.iti__selected-country-primary` div'ine uygulanıyor:
     .iti--allow-dropdown .iti__country-container:not(…) .iti__selected-country-primary:hover
     { background-color: var(--iti-hover-color) }   → rgba(0,0,0,.05)
   O div KARE köşeli ve yalnızca bayrak+oku kaplar (+90 dışarıda kalır); sonuç,
   düğmenin yuvarlak sol köşesinden taşan gri blok. İç boyamayı kapat, hover'ı
   düğmenin tamamına (doğru yarıçapla) taşı. */
.ky #phone-input-wrapper .iti__selected-country-primary,
.ky #phone-input-wrapper .iti__selected-country-primary:hover,
.ky #phone-input-wrapper .iti__selected-country:hover .iti__selected-country-primary {
    background-color: transparent !important;
}
.ky #phone-input-wrapper .iti__selected-country:hover,
.ky #phone-input-wrapper .iti__country-container:hover .iti__selected-country {
    background: #f1f5f9 !important;
}
/* Global CSS `outline:none!important` diyor — AAA için geri alınır */
.ky #phone-input-wrapper .iti__selected-country:focus-visible {
    outline: 3px solid var(--ky-brand-dark) !important;
    outline-offset: -3px;
    border-radius: 13px 0 0 13px !important;
}
.ky #phone-input-wrapper .iti__selected-country-primary { padding: 0 4px 0 2px; }
.ky #phone-input-wrapper .iti__selected-dial-code {
    margin-left: 2px;
    font-size: 15px;
    font-weight: 700;
    color: var(--ky-body);
    font-variant-numeric: tabular-nums;
}
.ky #phone-input-wrapper .iti__arrow { border-top-color: var(--ky-help); }
.ky #phone-input-wrapper .iti__arrow--up { border-bottom-color: var(--ky-help); }
.ky #phone-input-wrapper .iti__tel-input {
    min-height: 52px;
    font-size: 16px;
    color: var(--ky-ink);
    letter-spacing: .02em;
    /* Bu girdi alanın TAMAMINI kaplar (ülke seçici üstüne mutlak konumlanır),
       dolayısıyla autofill boyaması dört köşede de kapsayıcıya oturmalı.
       head'deki `.iti__tel-input{border-radius:0!important}` bu yüzden ezilir. */
    border-radius: 13px !important;
}
.ky #phone-input-wrapper .iti__tel-input::placeholder { color: var(--ky-help); opacity: 1; }
.ky .field.has-error #cep_telefonu::placeholder,
.ky .field.has-error .iti__tel-input::placeholder { color: var(--ky-body); }

/* ── SMS doğrulama bloğu ──────────────────────────────────── */
.ky-sms { margin-top: 12px; }
.ky-sms-kod { margin-top: 10px; }
.ky-sms-alt {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 8px;
}
.ky #sms-mesaj {
    margin: 0;
    min-width: 0;
    font-size: .875rem;
    line-height: 1.5;
    font-weight: 600;
    color: var(--ky-help);
    overflow-wrap: anywhere;
}
.ky #sms-mesaj.text-slate-500   { color: var(--ky-help); }
.ky #sms-mesaj.text-red-500     { color: var(--ky-err); }
.ky #sms-mesaj.text-emerald-600 { color: var(--ky-ok); }
.ky #smsTekrarBtn {
    flex: 0 0 auto;
    min-height: 44px;
    padding: 10px 12px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    font: inherit;
    font-size: .875rem;
    font-weight: 700;
    color: var(--ky-brand);
    cursor: pointer;
}
.ky #smsTekrarBtn:hover { color: var(--ky-brand-dark); background: #eff6ff; text-decoration: underline; }
.ky #smsTekrarBtn:disabled { color: var(--ky-help); background: transparent; cursor: not-allowed; text-decoration: none; }
.ky #smsDogrulaBtn {
    flex: 0 0 auto;
    min-height: 44px;
    margin-right: 4px;
    padding: 10px 16px;
    border: 0;
    border-radius: 11px;
    background: var(--ky-brand);
    font: inherit;
    font-size: .875rem;
    font-weight: 700;
    color: #ffffff;
    cursor: pointer;
}
.ky #smsDogrulaBtn:hover { background: var(--ky-brand-dark); }
.ky #smsDogrulaBtn:disabled { opacity: .6; cursor: not-allowed; }
.ky #sms_kod { letter-spacing: .3em; font-variant-numeric: tabular-nums; }
.ky-sms-ok {
    margin: 8px 0 0;
    font-size: .875rem;
    line-height: 1.5;
    font-weight: 700;
    color: var(--ky-ok);
}
.ky-sms-ok:not(.hidden) { display: flex; align-items: center; gap: 8px; }
.ky-sms-ok svg { flex: 0 0 auto; width: 18px; height: 18px; }

/* ── Şifre gücü ölçeri ────────────────────────────────────── */
.ky-guc { display: flex; gap: 6px; margin-top: 10px; }
.ky .strength-seg {
    height: 6px;
    flex: 1 1 0;
    min-width: 0;
    border-radius: 999px;
    background-color: #cbd5e1;
    transition: background-color .2s ease;
}
.ky .strength-seg.bg-slate-200   { background-color: #cbd5e1; }
.ky .strength-seg.bg-red-400     { background-color: #b91c1c; }
.ky .strength-seg.bg-amber-400   { background-color: #b45309; }
.ky .strength-seg.bg-blue-500    { background-color: #1e40af; }
.ky .strength-seg.bg-emerald-500 { background-color: #047857; }

/* JS her güncellemede className'i sıfırlar → yalnızca ID ile stillenir */
.ky #strengthLabel {
    margin-left: auto;
    font-size: .8125rem;
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: .01em;
    text-transform: none;
    white-space: nowrap;
}
.ky #strengthLabel.text-slate-400   { color: var(--ky-help); }
.ky #strengthLabel.text-red-500     { color: var(--ky-err); }
.ky #strengthLabel.text-amber-600   { color: #7c2d12; }
.ky #strengthLabel.text-blue-600    { color: var(--ky-brand); }
.ky #strengthLabel.text-emerald-600 { color: var(--ky-ok); }

/* ── KVKK onayı ───────────────────────────────────────────── */
.ky-onay {
    margin-top: 4px;
    padding: 14px 16px;
    border-radius: 16px;
    background: #f8fafc;
    border: 1.5px solid var(--ky-line-soft);
}
.ky-onay-satir { display: flex; align-items: flex-start; gap: 12px; }
.ky-onay-satir label {
    min-width: 0;
    font-size: .9375rem;
    line-height: 1.55;
    font-weight: 600;
    color: var(--ky-body);
    cursor: pointer;
    overflow-wrap: anywhere;
    /* Kutucukla birlikte satır yüksekliği ≥44px */
    padding: 2px 0;
}
.ky-onay-linkler {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 6px;
    margin: 6px 0 0;
    padding-left: 36px;
}
.ky-onay-linkler a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 4px 2px;
    font-size: .875rem;
    font-weight: 700;
    color: var(--ky-brand);      /* 8.83:1 */
    text-decoration: underline;
    text-underline-offset: 3px;
}
.ky-onay-linkler a:hover { color: var(--ky-brand-dark); }
.ky-onay-linkler span { color: var(--ky-help); }

/* Özel onay kutusu */
.ky .cb {
    -webkit-appearance: none;
    appearance: none;
    position: relative;
    flex: 0 0 auto;
    width: 24px; height: 24px;
    margin: 2px 0 0;
    border: 2px solid var(--ky-line);
    border-radius: 7px;
    background: #ffffff;
    display: inline-grid;
    place-content: center;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}
/* 2.5.5 (AAA) — görsel boyut 24px kalır, tıklama alanı 44×44'e genişletilir.
   Genişleme kartın iç boşluğuna doğrudur; sağdaki bağlantıların hedefiyle
   çakışmaz (bağlantı satırı padding-left:36px ile başlar). */
.ky .cb::before {
    content: "";
    position: absolute;
    top: 50%; left: 50%;
    width: 44px; height: 44px;
    transform: translate(-50%, -50%);
}
.ky .cb:hover { border-color: var(--ky-brand-dark); }
.ky .cb:checked { background: var(--ky-brand); border-color: var(--ky-brand); }
.ky .cb:checked::after {
    content: '';
    width: .8rem; height: .45rem;
    border-left: 2.5px solid #fff;
    border-bottom: 2.5px solid #fff;
    transform: rotate(-45deg) translate(1px, -1px);
}
.ky .cb[aria-invalid="true"] { border-color: var(--ky-err); }

/* ── Butonlar ─────────────────────────────────────────────── */
.ky-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    min-height: 54px;
    padding: 14px 20px;
    border: 0;
    border-radius: 14px;
    font: inherit;
    font-size: 1.0625rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .15s ease, transform .12s ease, box-shadow .15s ease;
}
.ky-btn svg { flex: 0 0 auto; width: 20px; height: 20px; }
.ky-btn .fas, .ky-btn .fab { font-size: 17px; }

.ky-btn-ana { background: var(--ky-brand); color: #ffffff; }   /* 8.83:1 */
.ky-btn-ana:hover { background: var(--ky-brand-dark); }
.ky-btn-ana:active { transform: scale(.995); }
.ky-btn-ana:disabled { opacity: .65; cursor: not-allowed; transform: none; }

.ky-btn-google {
    background: #ffffff;
    color: var(--ky-ink);                    /* 17.9:1 */
    border: 1.5px solid var(--ky-line);      /* 4.76:1 */
    font-size: 1rem;
}
.ky-btn-google:hover { background: #f8fafc; border-color: var(--ky-brand-dark); }
.ky-btn-google img { width: 20px; height: 20px; flex-shrink: 0; }

.ky #smsGonderBtn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    min-height: 50px;
    padding: 12px 18px;
    border: 0;
    border-radius: 13px;
    background: var(--ky-brand);
    font: inherit;
    font-size: 1rem;
    font-weight: 700;
    color: #ffffff;
    cursor: pointer;
}
.ky #smsGonderBtn:hover { background: var(--ky-brand-dark); }
.ky #smsGonderBtn:disabled { opacity: .65; cursor: not-allowed; }

/* ── Ayraç ────────────────────────────────────────────────── */
.ky-ayrac {
    display: flex;
    align-items: center;
    gap: 14px;
    margin: 20px 0;
}
.ky-ayrac::before, .ky-ayrac::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: var(--ky-line-soft);
}
.ky-ayrac span {
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--ky-help);       /* 7.58:1 */
}

/* ── Alt bilgi / yardım ───────────────────────────────────── */
.ky-alt {
    margin: 20px 0 0;
    text-align: center;
    font-size: .9375rem;
    line-height: 1.6;
    color: var(--ky-body);
}
.ky-alt a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 0 4px;
    font-weight: 700;
    color: var(--ky-brand);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.ky-alt a:hover { color: var(--ky-brand-dark); }

/* Gönder düğmesi bloğu */
.ky-aksiyon { margin-top: 22px; }

/* Sosyal kayıt bloğu — formun en üstünde, ortalanmış dar kolon */
.ky-sosyal {
    max-width: 460px;
    margin: 0 auto;
}
.ky-sosyal .ky-ayrac { margin: 18px 0 22px; }

.ky-telif { margin: 22px 0 0; text-align: center; font-size: .75rem; line-height: 1.6; color: var(--ky-help); }

/* ══ 2.4.7 / 2.4.11 — klavye odağı her yerde görünür (3px) ══ */
.ky a:focus-visible,
.ky button:focus-visible,
.ky input:focus-visible,
.ky select:focus-visible,
.ky textarea:focus-visible,
.ky [tabindex]:focus-visible {
    outline: 3px solid var(--ky-brand-dark);
    outline-offset: 2px;
    border-radius: 8px;
}
/* Alan içindeki input odağını .field halkası taşır — çift halka olmasın */
.ky .field .ky-input:focus-visible,
.ky .field .iti__tel-input:focus-visible { outline: none; }

/* ══ Ekran okuyucu ══ */
.ky-sr {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ══ 1.4.10 Yeniden akış — %200 büyütmede yatay kaydırma olmasın ══ */
.ky, .ky * { min-width: 0; }
.ky img, .ky svg { max-width: 100%; }

/* ══ Hareket azaltma ══ */
@media (prefers-reduced-motion: reduce) {
    .ky *,
    .shake { animation: none !important; transition: none !important; }
}

/* ══ Yüksek kontrast (forced-colors) ══ */
@media (forced-colors: active) {
    .ky .field { border: 2px solid ButtonBorder; }
    .ky .field:focus-within { outline: 3px solid Highlight; outline-offset: 2px; }
    .ky-btn-ana { border: 2px solid ButtonBorder; }
    .ky .strength-seg { border: 1px solid ButtonBorder; }
}
