/* ============================================================================
   DGN — Yardımcılar
   Kaskad katmanların en üstünde olduğu için buradaki kurallar bileşenleri
   `!important` olmadan geçer. Katman sırası specificity'yi ezer.
   Dar tutulur: her yardımcı yeni bir bakım borcudur.
   ========================================================================== */

@layer utilities {

  /* Ekran okuyucuya görünür, göze görünmez */
  .visually-hidden:not(:focus):not(:active) {
    position: absolute;
    inline-size: 1px;
    block-size: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }

  /* Klavye kullanıcısı için içeriğe atlama bağlantısı */
  .skip-link {
    position: absolute;
    inset-block-start: var(--space-2xs);
    inset-inline-start: var(--space-2xs);
    z-index: var(--z-dialog);
    padding: var(--space-2xs) var(--space-s);
    background-color: var(--surface);
    border: 1px solid var(--brand);
    border-radius: var(--radius-s);
    transform: translateY(-200%);
  }
  .skip-link:focus { transform: translateY(0); }

  .text-muted { color: var(--ink-2); }
  /* Makine değeri (telefon, vergi no, MERSIS): gövde metninden ayrılsın diye
     etiket yüzü, sütun hizası bozulmasın diye tabular rakam. */
  .text-data  { font-family: var(--font-label); font-variant-numeric: tabular-nums; }
  .no-wrap    { white-space: nowrap; }

  /* Fotoğrafın köşesi de bileşenlerle aynı keskinlikte olsun */
  .framed {
    border-radius: var(--radius-m);
    border: 1px solid var(--rule);
    overflow: hidden;
    background-color: var(--surface-2);
  }

  /* Sayfa açılışında tek bir sıralı giriş. Hareket tercihi 02-base.css'te
     zaten tüm animasyonları kapatıyor; burada ayrıca kural yazılmaz. */
  .rise {
    animation: rise .7s var(--ease) both;
    animation-delay: calc(var(--rise-step, 0) * 90ms);
  }
  @keyframes rise {
    from { opacity: 0; transform: translateY(0.75rem); }
    to   { opacity: 1; transform: none; }
  }

  @media (max-width: 63.99em) { .hide-until-lg { display: none; } }
  @media (min-width: 64em)    { .hide-from-lg  { display: none; } }
}
