/* ekosistem.css — Kolaymarin Ekosistemi SPA · uygulamaya özel artıklar.
 *
 * Bu dosya artık bir tasarım sistemi değildir. Industry sistemi (jetonlar,
 * temel katman, ilkeller, desenler, kabuk, panel + eski ad uyumluluk bloğu)
 * bütünüyle /styles/tokens.css içinden gelir ve BU DOSYADAN ÖNCE yüklenir.
 * Burada yalnızca sistemin sahiplenmediği, SPA'ya özgü üç kanca kalır.
 *
 * Tasarım sistemine taşındı — burada bir daha tanımlanmaz:
 *   :root jeton bloğu, Inter yazı yığını, gölge jetonları (--shadow-1…4)
 *     → tokens.css (Barlow Condensed / Barlow, gölgesiz, --km-radius:0)
 *   reset, body zemini, odak halkası, .km-skip, .km-num, .km-sr, hareket
 *     ve prefers-reduced-motion bloğu, km-rise/km-drop/km-bar/km-pulse/
 *     km-fade/km-sweep/km-pan kare çerçeveleri → base.css
 *   .km-hero, .km-guide*, .km-bar, .km-stats, .km-metrics, .km-breadcrumb,
 *     .km-result*, .km-event*, .km-thumb-empty, .km-photo-empty, .km-tag,
 *     .km-empty*, .km-url-echo → patterns.css / primitives.css
 *   .km-header*, .km-footer*, .km-drawer*, .km-bottom-nav ve mobil gezinme
 *     kırılımları (920/640) → shell.css
 *   .km-panel*, .km-worklist, .km-datarow, .km-wizard* → panel.css
 *
 * Silinen eski kancalar (artık hiçbir görünüm çağırmıyor): .km-ch gölge/
 *   yükselme hover'ı, .km-rh satır hover'ı, .km-grid6, .km-bkgrid,
 *   .km-bkcols, .km-bksticky, .km-foot4, .km-foot-acc,
 *   .km-skel + kmsh, .km-desktop-nav, .km-search-mobile, .km-filterbar,
 *   .km-filterbtn, kmrise/kmpulse/kmrowin/kmtickerin/kmpindrop/kmpinpulse/
 *   kmsheet/kmfloat/kmWave*/kmSail*/kmTwinkle/kmRay/kmGull*/kmEq.
 *   Mobildeki genel `button,a` min-height kuralı da kalktı: dokunma hedefi
 *   artık ilkellerin içinde (--km-tap).
 *
 * Buradaki her değer var(--km-…) jetonudur; tek istisna kırılım noktalarıdır
 * (medya sorgusu jeton kabul etmez).
 */

/* runtime.jsx'teki ImageSlot, kaynak yokken hâlâ .km-ph yazıyor ve o dosya
   bu dönüşümün kapsamı dışında. Sistemdeki karşılığı .km-photo-empty /
   .km-thumb-empty olduğundan kanca aynı taramalı boşluğa bağlanır: gri kutu
   değil, "burada görsel yok" diyen bir yüzey (ekran 10 · 36). */
.km-ph {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 8px;
  text-align: center;
  background-image: repeating-linear-gradient(
    135deg,
    var(--km-surface-2) 0 12px,
    var(--km-surface) 12px 24px
  );
  font-family:var(--km-font-heading);
  font-size: var(--km-label);
  font-weight: var(--km-font-heading-weight);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--km-text-3);
}

/* Harita + il çubukları çifti (views-home.jsx, views-landing.jsx). Izgaranın
   kendisi satır içi; buradaki tek iş dar ekranda tek kolona düşürmek, ki bunu
   satır içi biçem yapamaz. */
.km-mapgrid {}

/* Yoğunluk şeklindeki Türkiye haritası satır içi bir <svg>; il yolları bir
   sistem bileşeni değil, bu uygulamaya özgü. Dolgu opaklığı veriden gelir
   (views-home.jsx), buradaki tek iş üzerine gelme geri bildirimi: renk
   değişmez, yalnız kontur belirginleşir. */
.km-prov {
  transition: fill-opacity var(--m-fast) var(--e-in), stroke var(--m-fast) var(--e-in);
}

.km-prov:hover {
  stroke: var(--km-accent-900);
  fill-opacity: 1;
}

/* Yüzen asistan başlatıcısı (views-modals.jsx). Sabit konum sistemin
   sözlüğünde yok; alt gezinme çubuğunun (shell.css, ≤920) ve iOS güvenli
   alanının üstünde kalması gerekir. */
.km-fab {
  position: fixed;
  right: var(--km-gap-row);
  bottom: var(--km-gap-block);
  z-index: 70;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}

/* km-allow-raw: kırılım noktası — medya sorgusu jeton kabul etmez, shell.css ile aynı eşik */
@media (max-width: 920px) {
  /* km-allow-raw: alt gezinme çubuğunun yüksekliği + iOS güvenli alanı; env() jeton kabul etmez */
  .km-fab { bottom: calc(64px + env(safe-area-inset-bottom, 0px) + var(--km-gap-row)); }
  .km-mapgrid { grid-template-columns: 1fr !important; }
}
