/* Uygulamanın stil KAYNAĞI — tek ev (2026-08-09 tek repo birleşmesi).
   Eskiden Pazaryeri-Karar-Merkezi/assets/style.css'ten üretilen bir kopyaydı;
   uygulama-esitle.cjs ile birlikte o dönem kapandı — artık doğrudan burada
   düzenlenir. Dosyanın SONUNDAKİ 'canlı marka/bağlam uyarlaması' bölümü eski
   tools/marka-uyarlama.css'ten gömülüdür (sonda gelen kazanır).
   Değişiklikten sonra: node tools/uygulama-damga.cjs (?v damgaları). */

/* ============================================================
   MERCANWORKS KARAR MERKEZİ — tasarım sistemi v2 "Karar Masası"
   Editoryal finansal brifing dili:
   - Fraunces (display serif): büyük finansal ifadeler, başlıklar
   - Inter (grotesk, tabular rakam): arayüz, veri, rakamlar
   - Sıcak kâğıt + mürekkep paleti; mercan yalnız marka anlarında
   - Kutu yığını yok: hiyerarşi tipografi, boşluk ve ince çizgiyle
   Mobil öncelikli, açık/koyu tema, taşma güvenli.
   ============================================================ */

@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(fonts/fraunces-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(fonts/fraunces-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(fonts/inter-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url(fonts/inter-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------------- Tasarım belirteçleri — v3 "Kokpit" ----------------
   Serin, ferah zemin + beyaz kartlar + tek KOYU PETROL hero kartı.
   Kart tipleri farklı görsel ağırlık taşır: hero > stat > liste > satır. */
:root {
  /* zemin ve mürekkep — yeşil-sis, ferah premium (tasarım A "Işık") */
  --page: #edf1ee;
  --surface: #ffffff;
  --surface-2: #f0f4f1;
  --ink-1: #182420;
  --ink-2: #5b6862;
  --ink-3: #93a09a;
  --hair: #e3eae5;
  --hair-2: #d2ddd6;
  --grid: var(--hair);
  --border: var(--hair);

  /* eylem: derin petrol — güven ve finansal ciddiyet */
  --eylem: #175349;
  --eylem-koyu: #0e3b34;
  --eylem-soft: #e2efe9;
  --accent: var(--eylem);
  --accent-soft: var(--eylem-soft);

  /* marka: mercan — vurgu anları */
  --marka: #d75a32;
  --marka-soft: #fceee7;

  /* semantik — canlı ama olgun */
  --risk: #d64545;
  --risk-metin: #b02f2f;
  --risk-soft: #fdecec;
  --dikkat: #dd9a1c;
  --dikkat-metin: #94660a;
  --dikkat-soft: #fbf2dc;
  --iyi: #1f9d61;
  --iyi-metin: #147a48;
  --iyi-soft: #e2f5ea;
  --notr-soft: #eef0f4;

  /* eski adlarla eşleme (bileşen uyumluluğu) */
  --good: var(--iyi); --good-text: var(--iyi-metin); --good-soft: var(--iyi-soft);
  --warning: var(--dikkat); --warning-text: var(--dikkat-metin); --warning-soft: var(--dikkat-soft);
  --serious: #e07038; --serious-soft: #fdeee3;
  --critical: var(--risk); --critical-soft: var(--risk-soft);
  --violet: #6f5bd0; --violet-soft: #efecfb;
  /* Aksiyon Masası konu renkleri — halka dilimleri ve pano damgaları için iki
     ek kategorik ton (mevcut palet 8 ayrık konuyu karşılamıyordu; marka mercanı
     yalnız logo/çözüm bölümünde kalsın diye kategoriye verilmedi) */
  --kat-mavi: #3f7fa6;
  --kat-erik: #a3557a;

  /* hero kartı — açık cam (A "Işık"); koyu temada petrol kalır */
  --hero-zemin: linear-gradient(150deg, #ffffff 42%, #eaf4ee 100%);
  --hero-ink: #182420;
  --hero-ink-2: rgba(24, 36, 32, .56);
  --hero-cizgi: rgba(23, 83, 73, .14);
  --hero-golge: 0 1px 2px rgba(24, 36, 32, .04), 0 20px 44px -22px rgba(23, 83, 73, .22);
  --hero-ters: #ffffff;

  /* hero para akışı bandı renkleri (açık zemin) */
  --akis-0: #c9ddd2;
  --akis-1: #9cc4b0;
  --akis-2: var(--marka);
  --akis-k: #1f9d61;
  --akis-k-neg: #e2685c;

  /* tarama dokusu — boş bar izleri */
  --tarama: repeating-linear-gradient(45deg, rgba(23, 83, 73, .07) 0 3px, transparent 3px 7px);

  /* sayfa üstü ışık yıkaması */
  --yikama: radial-gradient(1100px 480px at 18% -8%, rgba(255, 255, 255, .9), rgba(255, 255, 255, 0) 62%);

  --font-ui: 'Inter', -apple-system, system-ui, 'Segoe UI', Roboto, sans-serif;
  --font-display: 'Fraunces', Georgia, 'Times New Roman', serif;

  --r: 20px;
  --r-s: 12px;
  --golge: 0 1px 2px rgba(24, 36, 32, .03), 0 10px 28px -18px rgba(23, 83, 73, .14);
  --golge-buyuk: 0 6px 18px rgba(23, 26, 32, .08), 0 24px 48px -20px rgba(23, 83, 73, .22);
  --nav-alt-yukseklik: calc(74px + env(safe-area-inset-bottom, 0px));
}
@media (prefers-color-scheme: dark) {
  :root {
    --page: #0e1013;
    --surface: #171a1f;
    --surface-2: #1f232b;
    --ink-1: #edeff3;
    --ink-2: #a7aebb;
    --ink-3: #737b8a;
    --hair: #252a33;
    --hair-2: #333a47;

    --eylem: #4fb39d;
    --eylem-koyu: #7ed2bd;
    --eylem-soft: #14302a;

    --marka: #ee7f52;
    --marka-soft: #34211a;

    --risk: #e2685c;
    --risk-metin: #ef9086;
    --risk-soft: #351d1b;
    --dikkat: #dcab3a;
    --dikkat-metin: #e5c06a;
    --dikkat-soft: #2f2715;
    --iyi: #4cbb82;
    --iyi-metin: #77d0a3;
    --iyi-soft: #16281e;
    --notr-soft: #21262e;

    --serious: #d9834f; --serious-soft: #30221777;
    --violet: #a08ee6; --violet-soft: #262138;
    --kat-mavi: #6aa8cc; --kat-erik: #cc86a6;

    --hero-zemin: linear-gradient(140deg, #0c2b25 0%, #123f37 58%, #175349 100%);
    --hero-ink: #eaf4ef;
    --hero-ink-2: rgba(234, 244, 239, .60);
    --hero-cizgi: rgba(255, 255, 255, .13);
    --hero-golge: 0 14px 34px rgba(0, 0, 0, .45);
    --hero-ters: #0e3b34;

    --akis-0: rgba(255, 255, 255, .34);
    --akis-1: rgba(255, 255, 255, .58);
    --akis-2: var(--marka);
    --akis-k: #7be3c3;
    --akis-k-neg: #ff9d8d;
    --tarama: repeating-linear-gradient(45deg, rgba(255, 255, 255, .06) 0 3px, transparent 3px 7px);
    --yikama: radial-gradient(1100px 480px at 18% -8%, rgba(23, 83, 73, .16), rgba(0, 0, 0, 0) 62%);

    --golge: 0 1px 2px rgba(0, 0, 0, .3);
    --golge-buyuk: 0 10px 30px rgba(0, 0, 0, .5);
  }
}

/* ---------------- Taban ---------------- */
* { box-sizing: border-box; min-width: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--yikama) no-repeat, var(--page); color: var(--ink-1);
  font-family: var(--font-ui);
  font-size: 14px; line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: tabular-nums;
}
a { color: var(--eylem); text-decoration: none; }
a:hover { color: var(--eylem-koyu); }
button { font-family: inherit; color: inherit; }
img { max-width: 100%; }
::selection { background: color-mix(in srgb, var(--marka) 22%, transparent); }

.wrap { max-width: 1080px; margin: 0 auto; padding: 0 16px calc(var(--nav-alt-yukseklik) + 32px); }
@media (min-width: 900px) { .wrap { padding-bottom: 72px; } }

/* ikonlar */
.ik { width: 1em; height: 1em; display: inline-block; vertical-align: -0.14em; flex-shrink: 0; }
.ik * { vector-effect: non-scaling-stroke; }

/* ================= ÜST BAR — kompakt oval hap ================= */
.ustbar {
  position: sticky; top: 0; z-index: 50;
  background: transparent;
  margin: 0 0 14px; padding: calc(10px + env(safe-area-inset-top, 0px)) 14px 6px;
}
.ustbar-ic {
  max-width: 920px; margin: 0 auto;
  display: flex; align-items: center; gap: 10px;
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  -webkit-backdrop-filter: blur(16px) saturate(1.1); backdrop-filter: blur(16px) saturate(1.1);
  border: 1px solid var(--hair); border-radius: 999px;
  box-shadow: var(--golge); padding: 6px 8px 6px 14px;
}
.marka-satir { display: contents; }
/* marka bir <a href="#/"> — her sayfadan Özet'e dönüş. Bağlantı olduğu için
   varsayılan mavi/alt çizgiyi bastır: söz markasının kendi renkleri kalsın. */
.marka {
  order: 1;
  font-family: var(--font-display); font-size: 16px; font-weight: 600;
  letter-spacing: -0.01em; display: flex; align-items: center; gap: 8px; white-space: nowrap;
  font-variation-settings: 'opsz' 40;
  color: inherit; text-decoration: none; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.marka:active { opacity: .68; }
.marka:focus-visible { outline: 2px solid var(--eylem); outline-offset: 3px; border-radius: 10px; }
.marka .logo { width: 26px; height: 26px; object-fit: contain; flex-shrink: 0; }

/* n-xplus söz markası — lansman sitesiyle aynı yapı (nxplus-launch/src/styles/nav.css).
   .wm-space artık kullanılmıyor (yeni söz markasında ayrı sözcük yok), kural
   geriye dönük uyumluluk için duruyor. */
.wm {
  font-family: var(--font-ui);
  display: inline-flex; align-items: baseline;
  font-weight: 680; letter-spacing: -0.01em;
}
.wm-navy { color: #071240; }
.wm-grad {
  background: linear-gradient(180deg, #f1414f 0%, #a45fa3 52%, #1198f0 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.wm-space { width: 0.24em; }
@media (prefers-color-scheme: dark) { .wm-navy { color: var(--ink-1); } }
.spacer { order: 2; flex: 1; }
@media (min-width: 900px) { .spacer { display: none; } }
#donem-yazi { display: none; }
#mod-badge { order: 3; display: inline-flex; }
#bildirim-zil { order: 4; display: inline-flex; }
.btn-veri-bilgi { order: 5; }

/* veri künyesi (mod rozeti) */
.badge-mod {
  display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0;
  font-size: 9.5px; font-weight: 700; letter-spacing: 0.08em;
  padding: 4px 9px; border-radius: 999px; white-space: nowrap;
  border: 1px solid var(--hair-2); color: var(--ink-2); background: var(--surface);
}
.badge-mod::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); }
.badge-mod.gercek { color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 35%, transparent); }
.badge-mod.gercek::before { background: var(--iyi); }
.badge-mod.pilot { color: var(--dikkat-metin); border-color: color-mix(in srgb, var(--dikkat) 40%, transparent); }
.badge-mod.pilot::before { background: var(--dikkat); }
.badge-mod.sentetik { color: var(--violet); border-color: color-mix(in srgb, var(--violet) 40%, transparent); }
.badge-mod.sentetik::before { background: var(--violet); }
.badge-mod.bos { color: var(--ink-3); }

/* KURULUM KILAVUZU DÜĞMESİ — "GERÇEK VERİ" rozetinin yerinde (2026-08-08).
   Rozet bir durum bildirimiydi ve kullanıcıya hiçbir iş vermiyordu; burası
   artık veri ekranına giden kalıcı kapı. Tıklanabilirliği rozetten ayırmak
   için imleç, dolgu ve hover durumu var. */
.badge-kilavuz {
  display: inline-flex; align-items: center; gap: 5px; flex-shrink: 0; cursor: pointer;
  font: inherit; font-size: 11px; font-weight: 650; letter-spacing: .01em;
  padding: 5px 11px; border-radius: 999px; white-space: nowrap;
  border: 1px solid var(--hair-2); color: var(--ink-2); background: var(--surface);
}
.badge-kilavuz svg { width: 12px; height: 12px; }
.badge-kilavuz:hover { background: var(--surface-2); color: var(--ink-1); }
.badge-kilavuz.tamam { color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 32%, transparent); }
@media (max-width: 560px) { .badge-kilavuz span { display: none; } }

/* BİLDİRİM ZİLİ (2026-08-09) — kampanya dönemi kapanmaya yaklaşınca uyarır.
   ⛔ ZİL BİLDİRİM YOKKEN DE DURUR (Mağaza Performansı sekmesinin dersi:
   veriye göre gelip giden gezinme ögesi hem yerini değiştirir hem özelliğin
   varlığını gizler). Değişen tek şey rozet ve ton. */
.zil-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; padding: 0; cursor: pointer; flex-shrink: 0;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-3);
  border-radius: 999px; font: inherit;
}
.zil-btn svg { width: 15px; height: 15px; }
.zil-btn:hover { border-color: var(--eylem); color: var(--eylem); }
.zil-btn.bilgi, .zil-btn.yakin, .zil-btn.acil { color: var(--ink-1); }
.zil-btn.yakin { border-color: color-mix(in srgb, var(--dikkat) 45%, transparent); }
.zil-btn.acil { border-color: color-mix(in srgb, var(--risk) 45%, transparent); }
/* Sayı rozeti — okunmamışsa dolgulu, okunmuşsa sakin. */
.zil-sayi {
  position: absolute; top: -3px; right: -3px; min-width: 15px; height: 15px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 4px; border-radius: 999px; font-size: 9.5px; font-weight: 700;
  background: var(--surface-2); color: var(--ink-2);
  border: 1px solid var(--hair-2); line-height: 1;
}
.zil-btn.yeni .zil-sayi { background: var(--dikkat); color: #1b1400; border-color: transparent; }
.zil-btn.acil.yeni .zil-sayi { background: var(--risk); color: #fff; }

/* Bildirim paneli */
.bl-liste { display: grid; gap: 10px; margin-top: 4px; }
.bl-oge {
  border: 1px solid var(--hair-2); border-radius: 14px; padding: 13px 14px;
  background: var(--surface); border-left: 3px solid var(--ink-3);
}
.bl-oge.yakin { border-left-color: var(--dikkat); }
.bl-oge.acil { border-left-color: var(--risk); }
/* İş istemeyen satır: solgun kenar, sakin zemin — bildirim gibi okunmasın. */
.bl-oge.sakin { border-left-color: var(--hair-2); background: var(--surface-2); }
/* ⚠ SARMALI: başlık + hap + ✕ dar panelde (390px) tek satıra sığmıyor ve hap
   metni "8 GÜN ÖNCE KAPANDI"ya kadar uzayabiliyor. */
.bl-ust { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.bl-baslik { font-size: 13.5px; font-weight: 650; color: var(--ink-1); flex: 1 1 auto; min-width: 0; }
.bl-hap {
  margin-left: auto; flex: 0 0 auto; white-space: nowrap;
  font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 999px;
  background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--hair-2);
}
.bl-oge.yakin .bl-hap { color: var(--dikkat-metin); border-color: color-mix(in srgb, var(--dikkat) 40%, transparent); }
.bl-oge.acil .bl-hap { color: var(--risk-metin); border-color: color-mix(in srgb, var(--risk) 40%, transparent); }
.bl-oge.sakin .bl-hap { background: var(--surface); }
/* ⚠ margin-left:auto VERİLMEZ — hapta zaten var ve ikinci auto birincisini
   ortaya iterdi (üye firmalar panelindeki rozet↔tik dersi). */
.bl-kapat {
  flex: 0 0 auto; width: 24px; height: 24px; padding: 0; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid transparent; border-radius: 999px; cursor: pointer;
  background: none; color: var(--ink-3); font-size: 13px;
}
.bl-kapat:hover { border-color: var(--hair-2); color: var(--ink-1); background: var(--surface-2); }
.bl-metin { margin: 7px 0 0; font-size: 12.5px; line-height: 1.55; color: var(--ink-2); }
.bl-eylem { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 11px; }
.bl-bos { padding: 6px 0 2px; }
.bl-bos-bas { margin: 0 0 6px; font-size: 13.5px; font-weight: 600; color: var(--ink-1); }
.bl-bolum {
  margin: 18px 0 2px; font-size: 10.5px; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3);
}
.bl-bolum-not { margin: 0 0 8px; }

.btn-veri-bilgi {
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-2);
  border-radius: 999px; font-size: 15px; font-weight: 650;
  width: 32px; height: 32px; padding: 0; cursor: pointer; white-space: nowrap; flex-shrink: 0;
}
.btn-veri-bilgi .ik { width: 16px; height: 16px; }
.btn-veri-bilgi:hover { border-color: var(--eylem); color: var(--eylem); }

/* Masaüstü sekmeler — hap nav */
/* ⛔ SEKME ETİKETİ SIKIŞTIRILMAZ. Linkler varsayılan `flex-shrink: 1` ile
   geliyordu: bar dolduğunda flex algoritması onları içeriklerinin ALTINA
   ezip 30px'e indiriyor, `nowrap` metin hücreden taşıyor ve YANDAKİ
   SEKMENİN ÜSTÜNE basıyordu — "Mağazalar" → "Mağazala", rozet komşu
   etikete giriyordu (2026-08-06, demo barı 190px eklediğinde ölçüldü:
   nav 416px istiyor, 158px alıyordu).
   Çözüm iki parçalı: (1) link asla küçülmez, (2) yine sığmazsa nav'ın
   KENDİSİ yatay kayar — taşma kabın içinde kalır, üst üste binme olmaz.
   `safe center`: kayma gerektiğinde ortalama solu erişilemez yapmasın. */
.nav-ust {
  display: none; order: 2; flex: 1; gap: 2px; min-width: 0;
  justify-content: center; justify-content: safe center;
  overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none;
}
.nav-ust::-webkit-scrollbar { display: none; }
.nav-ust a {
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  padding: 7px 13px; font-size: 13px; font-weight: 600; color: var(--ink-2);
  border-radius: 999px; white-space: nowrap; letter-spacing: .005em;
  transition: background .15s, color .15s;
}
.nav-ust a.aktif { color: #fff; background: var(--ink-1); }
.nav-ust a:hover:not(.aktif) { color: var(--ink-1); background: var(--surface-2); }
.nav-ust a .n {
  font-size: 10.5px; color: var(--ink-3); font-weight: 650;
  padding: 0 2px; font-variant-numeric: tabular-nums;
}
.nav-ust a.aktif .n { color: rgba(255, 255, 255, .6); }
@media (min-width: 900px) { .nav-ust { display: flex; } }
@media (prefers-color-scheme: dark) { .nav-ust a.aktif { color: var(--page); } .nav-ust a.aktif .n { color: color-mix(in srgb, var(--page) 60%, transparent); } }

/* Mobil alt sekme çubuğu — yüzen hap; aktif sekme dolgulu kapsül */
.nav-alt {
  position: fixed; bottom: calc(10px + env(safe-area-inset-bottom, 0px)); left: 12px; right: 12px; z-index: 60;
  display: flex; justify-content: space-around; gap: 2px;
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  -webkit-backdrop-filter: blur(20px) saturate(1.2); backdrop-filter: blur(20px) saturate(1.2);
  border: 1px solid var(--hair);
  border-radius: 24px;
  padding: 8px 8px;
  box-shadow: var(--golge-buyuk);
  max-width: 560px; margin: 0 auto;
}
.nav-alt a {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  font-size: 9.5px; font-weight: 650; letter-spacing: .02em; color: var(--ink-3);
  padding: 6px 2px 5px; border-radius: 16px; position: relative;
}
.nav-alt a .i { font-size: 21px; line-height: 1; display: flex; }
.nav-alt a .i .ik { width: 21px; height: 21px; }
.nav-alt a.aktif { color: var(--eylem-koyu); background: var(--eylem-soft); }
@media (prefers-color-scheme: dark) { .nav-alt a.aktif { color: var(--eylem-koyu); } }
@media (min-width: 900px) { .nav-alt { display: none; } }

/* global durum bildirimi (analiz/yükleme/kayıt raporları)
   z-index sheet (150) ve lightbox'ın (200) ÜSTÜNDE olmak zorunda: dosya
   yükleme ve panel yapıştırma sheet'i açıkken gelen bildirimler 90'da kalınca
   sheet'in karartma+bulanıklık katmanının arkasında okunmuyordu.
   Metin de sarabilir: rapor cümleleri nowrap+ellipsis ile kırpılıp "ne olduğu
   anlaşılmıyor" hâline geliyordu. */
.durum-pill {
  position: fixed; top: calc(60px + env(safe-area-inset-top, 0px)); left: 50%; transform: translateX(-50%);
  z-index: 260; background: var(--ink-1); color: var(--page);
  font-size: 12px; font-weight: 650; line-height: 1.45; padding: 9px 18px; border-radius: 16px;
  box-shadow: var(--golge-buyuk), 0 0 0 1px rgba(255, 255, 255, .16);
  text-align: center; text-wrap: pretty;
  width: max-content; max-width: min(560px, 90vw);
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden;
  animation: durumGiris .2s ease;
}
@keyframes durumGiris { from { opacity: 0; transform: translate(-50%, -6px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ================= TİPOGRAFİK YAPI ================= */
h1.sayfa-baslik {
  font-family: var(--font-display); font-variation-settings: 'opsz' 42;
  font-size: clamp(26px, 5.6vw, 36px); font-weight: 600; letter-spacing: -0.012em;
  line-height: 1.08; margin: 2px 0 4px;
}

/* kokpit üst şeridi: selamlama + tarih */
.kokpit-ust { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin: 14px 0 14px; }
.kokpit-ust .selam {
  font-family: var(--font-display); font-variation-settings: 'opsz' 28;
  font-size: 14px; font-weight: 500; color: var(--ink-2); margin-bottom: 1px;
}
.kokpit-ust .k-tarih {
  text-align: right; font-size: 12px; font-weight: 650; color: var(--ink-1); white-space: nowrap; line-height: 1.45;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 16px;
  padding: 8px 14px; box-shadow: var(--golge);
}
.kokpit-ust .k-tarih span { display: block; font-size: 9.5px; color: var(--ink-3); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
/* Seçili pencerede hiç hareket yok: hap DURUR (dönemi değiştirecek tek yol o)
   ve dikkat tonuna geçer — ekranın boş olmasının sebebi eksik veri değil,
   seçilen tarih aralığıdır ve bunu söyleyen tek işaret budur. */
button.k-tarih.bos { border-color: var(--dikkat); color: var(--ink-1); }
button.k-tarih.bos span { color: var(--dikkat); }
.sayfa-alt { color: var(--ink-2); font-size: 13.5px; margin-bottom: 20px; max-width: 640px; }

/* bölüm başlığı: ince üst çizgi + küçük büyük harf etiket */
h2.bolum {
  font-size: 11px; font-weight: 700; letter-spacing: 0.11em; text-transform: uppercase;
  color: var(--ink-2); margin: 36px 0 6px; padding-top: 14px;
  border-top: 1px solid var(--hair-2);
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
h2.bolum .sayi {
  font-size: 10.5px; font-weight: 700; color: var(--ink-3);
  letter-spacing: 0; padding: 0; font-variant-numeric: tabular-nums;
}
h2.bolum .sag { margin-left: auto; text-transform: none; letter-spacing: .01em; font-weight: 600; color: var(--ink-3); font-size: 12px; }
.bolum-alt { color: var(--ink-2); font-size: 13px; margin: 0 0 14px; max-width: 640px; }

/* ================= GENEL BİLEŞENLER ================= */
.card {
  background: var(--surface); border: 1px solid var(--hair);
  border-radius: var(--r); box-shadow: var(--golge);
  padding: 18px 20px; margin: 12px 0;
}
.card.duz { padding: 0; overflow: hidden; }
.card.sade { background: transparent; border: none; box-shadow: none; padding: 0; }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  background: var(--ink-1); color: var(--page); border: 1px solid var(--ink-1); cursor: pointer;
  font-size: 13.5px; font-weight: 650; padding: 11px 20px; border-radius: 999px; letter-spacing: .005em;
}
.btn:hover { background: var(--eylem-koyu); border-color: var(--eylem-koyu); color: #f2f6f4; }
.btn.sec { background: transparent; color: var(--ink-1); border: 1px solid var(--hair-2); }
.btn.sec:hover:not(:disabled) { border-color: var(--ink-2); background: var(--surface); color: var(--ink-1); }
.btn.sec:disabled { opacity: .4; cursor: default; }
.btn.soluk { background: transparent; color: var(--ink-2); border: 1px solid var(--hair); }
.btn.soluk:hover { color: var(--ink-1); border-color: var(--hair-2); }
.btn.kucuk { font-size: 12px; padding: 7px 14px; }

/* durum rozetleri: dolgu değil, nokta + metin — sakin */
.rozet {
  display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 650;
  letter-spacing: 0.03em; padding: 2.5px 9px; border-radius: 999px; white-space: nowrap; vertical-align: middle;
  border: 1px solid var(--hair-2); color: var(--ink-2); background: transparent;
}
.rozet::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: var(--ink-3); flex-shrink: 0; }
.rozet.risk, .rozet.zarar { color: var(--risk-metin); border-color: color-mix(in srgb, var(--risk) 42%, transparent); background: color-mix(in srgb, var(--risk-soft) 55%, transparent); }
.rozet.risk::before, .rozet.zarar::before { background: var(--risk); }
.rozet.izle { color: var(--dikkat-metin); border-color: color-mix(in srgb, var(--dikkat) 45%, transparent); }
.rozet.izle::before { background: var(--dikkat); }
.rozet.firsat, .rozet.kar { color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 40%, transparent); }
.rozet.firsat::before, .rozet.kar::before { background: var(--iyi); }
.rozet.stabil, .rozet.notr { color: var(--ink-3); }
.rozet.mavi { color: var(--eylem); border-color: color-mix(in srgb, var(--eylem) 38%, transparent); }
.rozet.mavi::before { background: var(--eylem); }
.rozet.mor { color: var(--violet); border-color: color-mix(in srgb, var(--violet) 45%, transparent); }
.rozet.mor::before { background: var(--violet); }
.rozet.turuncu { color: var(--serious); border-color: color-mix(in srgb, var(--serious) 45%, transparent); }
.rozet.turuncu::before { background: var(--serious); }

/* güven göstergesi: üç nokta */
.guven { display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px; font-weight: 600; color: var(--ink-3); white-space: nowrap; letter-spacing: .02em; }
button.guven { background: none; border: 0; padding: 0; font-family: inherit; cursor: pointer; }
.guven .g-noktalar { display: inline-flex; gap: 2.5px; }
.guven .g-noktalar i { width: 5px; height: 5px; border-radius: 50%; background: var(--hair-2); }
.guven.g3 .g-noktalar i, .guven.g2 .g-noktalar i:nth-child(-n+2), .guven.g1 .g-noktalar i:first-child { background: var(--ink-2); }

/* analiz barı — etiket tam genişlikte ve sarabilir; dar ekranda kesilmez */
.bar { display: grid; grid-template-columns: 1fr auto; grid-template-areas: "ad deger" "kanal kanal"; align-items: center; column-gap: 10px; row-gap: 3px; padding: 5px 0; font-size: 12.5px; }
.bar .ad { grid-area: ad; color: var(--ink-2); white-space: normal; line-height: 1.35; min-width: 0; }
.bar .kanal { grid-area: kanal; height: 5px; border-radius: 3px; background: var(--surface-2); overflow: hidden; }
.bar .kanal i { display: block; height: 100%; border-radius: 3px; background: var(--ink-2); }
.bar .deger { grid-area: deger; font-weight: 650; color: var(--ink-1); white-space: nowrap; font-size: 12px; }
.analiz-baslik { font-size: 12.5px; font-weight: 650; color: var(--ink-2); margin-bottom: 4px; }
.bar.ciddi .kanal i { background: var(--serious); }
.bar.kritik .kanal i { background: var(--risk); }
.bar.iyi .kanal i { background: var(--iyi); }

/* Sessiz gösterge şeridi (KPI) — kutu değil, çizgiyle ayrılmış istatistik */
.tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 0; border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); }
@media (max-width: 560px) { .tiles { grid-template-columns: 1fr 1fr; } }
.tile { background: transparent; border: none; border-left: 1px solid var(--hair); border-radius: 0; padding: 14px 16px 13px; box-shadow: none; }
.tile:first-child { border-left: none; padding-left: 2px; }
@media (max-width: 560px) {
  .tiles > .tile:nth-child(odd) { border-left: none; padding-left: 2px; }
  .tiles > .tile:nth-child(n+3) { border-top: 1px solid var(--hair); }
}
.tile .etiket { font-size: 10px; font-weight: 700; color: var(--ink-3); letter-spacing: 0.09em; text-transform: uppercase; }
.tile .deger { font-size: 20px; font-weight: 740; letter-spacing: -0.022em; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }
.tile .deger .birim { font-size: 11.5px; color: var(--ink-3); font-weight: 550; font-family: var(--font-ui); }
.tile .not { font-size: 11px; color: var(--ink-3); margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tile .deger.neg { color: var(--risk-metin); }
.tile .deger.poz { color: var(--iyi-metin); }

/* görsel küçükleri */
.urun-thumb { border-radius: 9px; object-fit: cover; border: 1px solid var(--hair); background: var(--surface-2); flex-shrink: 0; }
.thumb-yok {
  border-radius: 9px; border: 1px solid var(--hair); background: var(--surface-2); color: var(--ink-3);
  display: flex; align-items: center; justify-content: center; font-weight: 600; flex-shrink: 0;
  font-family: var(--font-display);
}

/* yıldızlar */
.yildiz { color: #c98d1c; letter-spacing: .5px; font-size: 12.5px; white-space: nowrap; }
.yildiz .bos { color: var(--hair-2); }

/* ================= KOKPİT — HERO KARTI (açık cam; koyu temada petrol) ================= */
.kart-hero {
  background: var(--hero-zemin); color: var(--hero-ink);
  border: 1px solid var(--hair); border-radius: 26px; box-shadow: var(--hero-golge);
  padding: 24px 24px 18px; position: relative;
  /* overflow: hidden KULLANMA — içindeki .acilir-panel'i (ay seçimi) kırpar */
}
@media (prefers-color-scheme: dark) { .kart-hero { border-color: transparent; } }
.kart-hero::before { /* cam şerit büyüme sahnesi — kendi köşesiyle kırpılır, taşmaz */
  content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 0;
  background: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 560 440'><defs><linearGradient id='a' x1='0' y1='440' x2='560' y2='0' gradientUnits='userSpaceOnUse'><stop offset='0' stop-color='%23175349' stop-opacity='.20'/><stop offset='.5' stop-color='%234fae8b' stop-opacity='.30'/><stop offset='1' stop-color='%23bfe6d4' stop-opacity='.48'/></linearGradient><linearGradient id='c' x1='0' y1='0' x2='0' y2='1'><stop offset='0' stop-color='%234fae8b' stop-opacity='.42'/><stop offset='1' stop-color='%234fae8b' stop-opacity='.04'/></linearGradient><filter id='b' x='-40%25' y='-40%25' width='180%25' height='180%25'><feGaussianBlur stdDeviation='14'/></filter><filter id='d' x='-30%25' y='-30%25' width='160%25' height='160%25'><feGaussianBlur stdDeviation='3'/></filter></defs><path d='M-30 380C120 300 150 420 280 300S470 120 600 170' stroke='url(%23a)' stroke-width='92' fill='none' stroke-linecap='round' filter='url(%23b)'/><path d='M60 400C190 330 240 400 350 280S520 110 630 140' stroke='%23fff' stroke-opacity='.5' stroke-width='10' fill='none' stroke-linecap='round' filter='url(%23d)'/><rect x='330' y='252' width='34' height='188' rx='10' fill='url(%23c)'/><rect x='374' y='286' width='34' height='154' rx='10' fill='url(%23c)'/><rect x='418' y='208' width='34' height='232' rx='10' fill='url(%23c)'/><rect x='462' y='160' width='34' height='280' rx='10' fill='url(%23c)'/><path d='M120 356L200 320 262 336 330 250 396 268 452 180 516 128' stroke='%231f9d61' stroke-opacity='.7' stroke-width='2.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/><g fill='%23fff' stroke='%231f9d61' stroke-width='2.5'><circle cx='330' cy='250' r='5'/><circle cx='452' cy='180' r='5'/><circle cx='516' cy='128' r='6'/></g></svg>") right -36px top -24px / auto 112% no-repeat;
  pointer-events: none;
}
@media (max-width: 680px) { .kart-hero::before { opacity: .38; } }
@media (prefers-color-scheme: dark) { .kart-hero::before { opacity: .75; } }
.kart-hero > * { position: relative; z-index: 1; }
.kart-hero .etiket { font-size: 10.5px; font-weight: 700; color: var(--hero-ink-2); letter-spacing: .12em; text-transform: uppercase; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.kart-hero .etiket .guven { color: var(--hero-ink-2); }
.kart-hero .etiket .guven .g-noktalar i { background: color-mix(in srgb, var(--hero-ink) 20%, transparent); }
.kart-hero .etiket .guven.g3 .g-noktalar i, .kart-hero .etiket .guven.g2 .g-noktalar i:nth-child(-n+2), .kart-hero .etiket .guven.g1 .g-noktalar i:first-child { background: var(--hero-ink); }
.kart-hero .deger {
  font-family: var(--font-display); font-variation-settings: 'opsz' 64;
  font-size: clamp(42px, 10vw, 64px); font-weight: 600; letter-spacing: -0.015em;
  line-height: 1.02; margin: 10px 0 6px; font-variant-numeric: tabular-nums;
}
.kart-hero .deger.neg { color: var(--akis-k-neg); }
.h-altsatir { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-bottom: 4px; }
.h-kiyas { font-size: 12px; color: var(--hero-ink-2); font-weight: 550; }

/* hero içi para akışı bandı */
.h-akis { margin-top: 14px; position: relative; z-index: 1; }
.h-bant { display: flex; height: 12px; border-radius: 7px; overflow: hidden; gap: 2px; }
.h-bant i, .h-lejant .n { display: block; min-width: 4px; }
.h-bant .b0, .h-lejant .n.b0 { background: var(--akis-0); }
.h-bant .b1, .h-lejant .n.b1 { background: var(--akis-1); }
.h-bant .b2, .h-lejant .n.b2 { background: var(--akis-2); }
.h-bant .bk, .h-lejant .n.bk { background: var(--akis-k); }
.h-bant .bk.neg { background: var(--akis-k-neg); }
.h-lejant { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 9px; font-size: 11px; color: var(--hero-ink-2); font-weight: 600; }
.h-lejant span { display: inline-flex; align-items: center; gap: 6px; }
.h-lejant .n { width: 8px; height: 8px; border-radius: 3px; }
.h-lejant b { color: var(--hero-ink); font-weight: 700; }
.h-not { font-size: 10.5px; color: var(--hero-ink-2); margin-top: 7px; line-height: 1.5; }

/* hero içi dönem seçimi: çipler tema-duyarlı (hero-ink üzerinden) */
.h-donem { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--hero-cizgi); position: relative; z-index: 1; }
.h-donem .cipler { margin: 0; }
.h-donem .cip { border-color: var(--hero-cizgi); color: var(--hero-ink-2); background: transparent; }
.h-donem .cip:hover { color: var(--hero-ink); border-color: color-mix(in srgb, var(--hero-ink) 40%, transparent); }
.h-donem .cip.aktif { background: var(--hero-ink); color: var(--hero-ters); border-color: var(--hero-ink); font-weight: 700; }
.h-donem .cip-etiket { color: var(--hero-ink-2); }
.h-donem .acilir-btn { background: transparent; border-color: var(--hero-cizgi); color: var(--hero-ink); }
.h-donem .acilir-btn .a-etiket, .h-donem .acilir-btn .ik { color: var(--hero-ink-2); }
.h-donem .btn { background: var(--hero-ink); color: var(--hero-ters); border-color: var(--hero-ink); }

/* boş durum hero'su */
.bos-hero .bh-baslik { font-family: var(--font-display); font-variation-settings: 'opsz' 40; font-size: clamp(22px, 5.6vw, 30px); font-weight: 600; letter-spacing: -0.012em; line-height: 1.25; margin: 10px 0 8px; }
.bos-hero .bh-alt { font-size: 13px; color: var(--hero-ink-2); line-height: 1.6; max-width: 480px; }
.hero-btn { background: var(--hero-ink); color: var(--hero-ters); border: none; font-weight: 700; }
.hero-btn.soluk { background: color-mix(in srgb, var(--hero-ink) 10%, transparent); color: var(--hero-ink); }

/* ================= KOKPİT — STAT KARTLARI ================= */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)); gap: 10px; margin: 12px 0; }
@media (max-width: 620px) { .stat-grid { grid-template-columns: 1fr 1fr; } }
.stat-kart {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 13px 14px 11px; position: relative; overflow: hidden; min-width: 0;
}
/* flex-wrap: en dar bantta (≤375px) ikon + "?" + çip yan yana sığmıyor;
   çip bir alt satıra sarar — kırpılmaktan ve gizlenmekten iyidir. */
.stat-kart .s-ust { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 6px; }
/* ⛔ KIRPILMA SIRASI: önce ETİKET METNİ üç noktayla kısalır, "?" düğmesi ve ikon
   ASLA kesilmez. Kısalma metnin İÇİNDE (span) yapılır — kap düzeyinde overflow
   kırpması "?" yuvarlağını ortadan biçiyordu: kıyas çipi görününce (aylık dönem)
   etiket sıkışıyor ve "İade oranı ?" ekranda "İade" + yarım yuvarlak kalıyordu
   (kullanıcı ekran görüntüsüyle bildirdi, 2026-08-12). text-overflow flex
   kabında zaten çalışmaz — kısaltma ancak span'de olur. */
.stat-kart .s-etiket { display: flex; align-items: center; gap: 7px; font-size: 11.5px; font-weight: 650; color: var(--ink-2); letter-spacing: .01em; white-space: nowrap; overflow: hidden; min-width: 0; }
.stat-kart .s-etiket > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.stat-kart .s-etiket .ik { flex: 0 0 auto; width: 24px; height: 24px; padding: 5px; border-radius: 8px; background: var(--surface-2); color: var(--ink-2); }
.stat-kart .s-deger { font-family: var(--font-display); font-variation-settings: 'opsz' 36; font-size: 23px; font-weight: 600; letter-spacing: -0.01em; margin-top: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stat-kart .s-deger .birim { font-family: var(--font-ui); font-size: 11px; color: var(--ink-3); font-weight: 600; }
.stat-kart .s-not { font-size: 10.5px; color: var(--ink-3); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stat-kart .mini-spark { position: absolute; right: 10px; bottom: 8px; width: 74px; height: 26px; opacity: .9; }

/* değişim çipi */
.d-cip {
  display: inline-flex; align-items: center; gap: 3px; flex-shrink: 0;
  font-size: 10.5px; font-weight: 750; padding: 3px 8px; border-radius: 999px; white-space: nowrap;
  background: var(--notr-soft); color: var(--ink-2); font-variant-numeric: tabular-nums;
}
.d-cip.poz { background: var(--iyi-soft); color: var(--iyi-metin); }
.d-cip.neg { background: var(--risk-soft); color: var(--risk-metin); }
.kart-hero .d-cip { background: color-mix(in srgb, var(--hero-ink) 9%, transparent); color: var(--hero-ink); }
.kart-hero .d-cip.poz { background: var(--iyi-soft); color: var(--iyi-metin); }
.kart-hero .d-cip.neg { background: var(--risk-soft); color: var(--risk-metin); }

/* mini sparkline */
.mini-spark .cizgi { fill: none; stroke: var(--iyi); stroke-width: 1.6; }
.mini-spark .dolgu { fill: color-mix(in srgb, var(--iyi) 14%, transparent); }

/* ================= KOKPİT — RADYAL GÖSTERGELER (karo dizisi) ================= */
.card.gauge-serit { background: transparent; border: none; box-shadow: none; padding: 0; }
.gauge-serit { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 680px) { .gauge-serit { grid-template-columns: 1fr; } }
.gauge {
  display: flex; flex-direction: row; align-items: center; gap: 13px; min-width: 0;
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 13px 15px;
}
.gauge .g-kadran { position: relative; width: 74px; height: 74px; flex-shrink: 0; }
.gauge svg { width: 100%; height: 100%; }
.gauge .g-zemin { fill: none; stroke: var(--hair); stroke-width: 7; stroke-dasharray: 3.1 2.7; }
.gauge .g-deger { fill: none; stroke: var(--eylem); stroke-width: 7; stroke-linecap: round; }
.gauge.iyi .g-deger { stroke: var(--iyi); }
.gauge.orta .g-deger { stroke: var(--dikkat); }
.gauge.kotu .g-deger { stroke: var(--risk); }
.gauge .g-merkez {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: var(--font-display); font-variation-settings: 'opsz' 30;
  font-size: 16px; font-weight: 600; letter-spacing: -0.01em; font-variant-numeric: tabular-nums;
}
.gauge .g-etiket { font-size: 11px; font-weight: 700; color: var(--ink-2); letter-spacing: .04em; text-transform: uppercase; text-align: left; line-height: 1.45; min-width: 0; }
/* :not(.ne-birlik) — .ne-birlik etiketin son kelimesini "?" düğmesine yapıştıran
   satır içi sarıcıdır (aşağıda, TERİM AÇIKLAMASI bloğu); bu kural onu da blok
   yapsaydı "?" yine tek başına ayrı satıra düşerdi. Blok span yalnız alt nottur. */
.gauge .g-etiket span:not(.ne-birlik) { display: block; font-size: 10.5px; color: var(--ink-3); font-weight: 550; text-transform: none; letter-spacing: 0; }

/* ================= KOKPİT — YATAY ŞERİTLER =================
   2026-07-26: alt üçlü (Aksiyon | Kazandıran | Veri Temeli) dikey sütunlardan tam
   genişlik yatay şeritlere geçti; Veri Temeli kokpitten kaldırıldı. Şerit tek satır
   ızgaradır: kartlar eşit yükseklikte olur, dar ekranda yatay kayar (snap). */
.karar-serit, .top-serit {
  display: grid; grid-auto-flow: column; gap: 10px; padding: 2px 0 4px;
  overflow-x: auto; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch;
  scrollbar-width: thin; scrollbar-color: var(--hair-2) transparent;
}
/* .wrap 1080px ile sınırlı → şeride ~1014px kalıyor; iki şerit de 5 sütuna oturur
   (5×190 + 4×10 = 990). Kart sayısı buna göre seçilir: 4 karar + "hepsi" fişi. */
.karar-serit, .top-serit { grid-auto-columns: minmax(190px, 1fr); }
.karar-serit::-webkit-scrollbar, .top-serit::-webkit-scrollbar { height: 6px; }
.karar-serit::-webkit-scrollbar-thumb, .top-serit::-webkit-scrollbar-thumb { background: var(--hair-2); border-radius: 99px; }
.karar-serit::-webkit-scrollbar-track, .top-serit::-webkit-scrollbar-track { background: transparent; }
.karar-serit > *, .top-serit > * { scroll-snap-align: start; min-width: 0; }

/* --- aksiyon fişi --- */
.karar-kart.mini {
  display: flex; flex-direction: column; align-items: stretch; gap: 7px;
  padding: 13px 14px 12px; border-radius: 18px; position: relative; margin: 0; cursor: pointer;
  transition: transform .18s, box-shadow .18s, border-color .18s;
}
.karar-kart.mini:hover { transform: translateY(-1px); box-shadow: var(--golge-buyuk); border-color: var(--hair-2); }
.karar-kart.mini::before { display: none; }
.karar-kart.mini .urun-thumb, .karar-kart.mini .thumb-yok { border-radius: 13px; flex-shrink: 0; }
.karar-kart.mini .m-ust { display: flex; align-items: center; gap: 8px; min-width: 0; }
.m-oncelik { font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; padding: 2.5px 8px; border-radius: 7px; white-space: nowrap; }
.m-oncelik.o1 { background: var(--risk-soft); color: var(--risk-metin); }
.m-oncelik.o2 { background: var(--serious-soft); color: var(--serious); }
.m-oncelik.o3 { background: var(--notr-soft); color: var(--ink-2); }
.karar-kart.mini .m-ust .rozet.izle { font-size: 9.5px; padding: 2.5px 7px; min-width: 0; overflow: hidden; }
.karar-kart.mini .m-eylem {
  font-size: 13px; font-weight: 660; line-height: 1.35; letter-spacing: -0.01em;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; min-height: 2.7em;
}
.karar-kart.mini .m-urun { font-size: 11px; color: var(--ink-3); font-weight: 550; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* tutar + ok aynı satırda, ölçü etiketi (order 3 + tam satır) hep altına düşer —
   dar fişte "7,50 Mn ₺" ile "dönem cirosu" yan yana sığmıyordu */
.karar-kart.mini .m-taban { display: flex; flex-wrap: wrap; align-items: center; column-gap: 6px; margin-top: auto; padding-top: 9px; border-top: 1px solid var(--hair); }
.karar-kart.mini .m-etki { order: 1; font-size: 15px; font-weight: 750; letter-spacing: -0.01em; white-space: nowrap; }
.karar-kart.mini .m-ok { order: 2; color: var(--ink-3); flex-shrink: 0; margin-left: auto; }
.karar-kart.mini .m-olcu { order: 3; flex: 0 0 100%; margin-top: 1px; font-size: 9.5px; color: var(--ink-3); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.hepsi-kart {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px;
  border: 1.5px dashed var(--hair-2); border-radius: 18px; color: var(--ink-2);
  font-size: 12.5px; font-weight: 700; text-align: center; line-height: 1.4; padding: 14px 11px;
}
.hepsi-kart span { display: flex; width: 34px; height: 34px; border-radius: 12px; background: var(--surface-2); align-items: center; justify-content: center; }
.hepsi-kart br { display: none; }
.hepsi-kart:hover { border-color: var(--eylem); color: var(--eylem); }

/* --- kazandıran kartı --- */
.top-kart {
  display: flex; flex-direction: column; gap: 7px; cursor: pointer;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 18px;
  box-shadow: var(--golge); padding: 13px 14px 12px;
  transition: transform .18s, box-shadow .18s, border-color .18s;
}
.top-kart:hover { transform: translateY(-1px); box-shadow: var(--golge-buyuk); border-color: var(--hair-2); }
.top-kart .t-ust { display: flex; align-items: center; gap: 9px; }
.top-kart .t-sira { width: 24px; height: 24px; border-radius: 9px; background: var(--surface-2); color: var(--ink-2); font-size: 11.5px; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.top-kart:first-child .t-sira { background: var(--eylem); color: #fff; }
.top-kart .urun-thumb, .top-kart .thumb-yok { border-radius: 13px; }
.top-kart .ok { margin-left: auto; color: var(--ink-3); font-size: 17px; font-weight: 600; line-height: 1; }
.top-kart .t-ad {
  font-size: 12.5px; font-weight: 620; line-height: 1.35;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; min-height: 2.7em;
}
.top-kart .t-sag { display: flex; align-items: baseline; gap: 6px; margin-top: auto; }
.top-kart .t-sag b { font-size: 15.5px; font-weight: 750; letter-spacing: -0.01em; }
.top-kart .t-sag span { font-size: 9.5px; color: var(--ink-3); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.top-kart .t-bar { height: 6px; border-radius: 99px; background: var(--tarama), var(--surface-2); overflow: hidden; }
.top-kart .t-bar i { display: block; height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--eylem), #2c9576); }

/* ================= KOKPİT — YERLEŞİM (A "Işık" düzeni) ================= */
.kokpit-ust .sayfa-soz { color: var(--ink-3); font-size: 12.5px; margin-top: 6px; }
.donem-kap { position: relative; flex-shrink: 0; }
button.k-tarih { font-family: inherit; cursor: pointer; appearance: none; -webkit-appearance: none; }
button.k-tarih:hover { border-color: var(--hair-2); }
/* ---- DÖNEM SEÇİCİ ----
   Tek işaretleme iki forma girer: masaüstünde hapın altında iki kolon popover
   (solda raf, sağda takvim), telefonda alt sheet. Ayrım yalnız CSS'te — JS
   viewport ölçmez, iki ayrı bileşen yoktur. */
.donem-perde { display: none; }
.donem-panel {
  display: none; position: absolute; right: 0; top: calc(100% + 8px); z-index: 200;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 22px;
  box-shadow: var(--golge-buyuk); width: min(620px, 94vw); overflow: hidden;
}
.donem-kap.acik .donem-panel { display: block; animation: acilirGiris .16s ease; }
.dp-bas { display: none; }               /* Kapat|Seç başlığı: yalnız sheet formunda */
.dp-magaza { padding: 13px 16px 0; }
.dp-magaza .cipler { margin: 0; }

.dp-govde { display: grid; grid-template-columns: 150px 1fr; }
.dp-raf {
  display: flex; flex-direction: column; gap: 2px; padding: 14px 11px;
  border-right: 1px solid var(--hair); background: var(--surface-2);
}
.dp-mod {
  appearance: none; -webkit-appearance: none; border: none; background: none; font: inherit;
  text-align: left; cursor: pointer; white-space: nowrap;
  font-size: 12.5px; font-weight: 620; color: var(--ink-2); padding: 8px 13px; border-radius: 999px;
}
.dp-mod:hover { background: var(--surface); color: var(--ink-1); }
.dp-mod.aktif { background: var(--eylem); color: #fff; font-weight: 700; }
.dp-ayrac { height: 1px; background: var(--hair-2); margin: 8px 12px; flex-shrink: 0; }

.dp-takvim { padding: 12px 15px 15px; min-width: 0; }
.dp-nav { display: flex; align-items: center; justify-content: center; gap: 3px; margin-bottom: 6px; }
.dp-nav-ad {
  appearance: none; -webkit-appearance: none; border: none; background: none; font: inherit; cursor: pointer;
  font-size: 13.5px; font-weight: 700; color: var(--ink-1); padding: 6px 13px; border-radius: 999px;
}
.dp-nav-ad:hover { background: var(--surface-2); }
.dp-ok {
  appearance: none; -webkit-appearance: none; border: none; background: none; cursor: pointer;
  color: var(--ink-2); width: 30px; height: 30px; border-radius: 999px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  /* iki-ay navındaki -22px bindirme ay başlığını okun üstüne getiriyordu;
     z-index oku tıklanabilir katmana çıkarır */
  position: relative; z-index: 1;
}
/* Görseli büyütmeden ikon merkezli 40×40 tıklama alanı (dokunmatik hedef) */
.dp-ok:not(:disabled)::after {
  content: ''; position: absolute; top: 50%; left: 50%;
  width: 40px; height: 40px; transform: translate(-50%, -50%);
}
.dp-ok:hover:not(:disabled) { background: var(--surface-2); color: var(--ink-1); }
.dp-ok:disabled { opacity: .22; cursor: default; }
.dp-ok.ileri .ik { transform: scaleX(-1); }   /* sağ chevron: 'geri' ikonunun aynası */
.dp-nav-sade b { font-size: 10.5px; font-weight: 800; color: var(--ink-3); letter-spacing: .1em; text-transform: uppercase; }
/* iki ay yan yanayken oklar kenarlara açılır, ad her ayın kendi başlığında */
.dp-nav.dp-nav-genis { justify-content: space-between; margin-bottom: -22px; }

.dp-aylar { display: flex; gap: 20px; justify-content: center; }
.dp-ay { min-width: 0; flex: 1 1 0; max-width: 310px; }
.dp-ay-ad {
  text-align: center; font-size: 12.5px; font-weight: 700; margin-bottom: 5px;
  height: 30px; display: flex; align-items: center; justify-content: center; gap: 2px;
}
.dp-ay-ad .dp-nav-ad { font-size: 12.5px; padding: 4px 9px; }
.dp-satir { display: grid; grid-template-columns: repeat(7, 1fr); }
.dp-gun-ad span { text-align: center; font-size: 10px; font-weight: 700; color: var(--ink-3); padding: 3px 0 6px; }

/* Gün hücresi. Bant hücrenin KENDİ zemini, seçili uç ise z-index:-1 sözde
   öge — negatif katman zeminin üstünde, yazının altında boyanır (dolu daire
   rakamı yutmaz). isolation, katmanı hücrenin içinde tutar. */
.dp-h {
  appearance: none; -webkit-appearance: none; border: none; background: none; font: inherit;
  cursor: pointer; position: relative; isolation: isolate;
  height: 35px; display: flex; align-items: center; justify-content: center;
  font-size: 12.5px; font-weight: 600; color: var(--ink-1); font-variant-numeric: tabular-nums;
}
span.dp-h { cursor: default; }
.dp-h.komsu, .dp-h.pasif { color: var(--ink-3); opacity: .42; }
button.dp-h:hover { color: var(--eylem); }
.dp-h.arada { background: var(--eylem-soft); }
.dp-h.uc-bas { border-radius: 999px 0 0 999px; }
.dp-h.uc-son { border-radius: 0 999px 999px 0; }
.dp-h.uc-bas.uc-son { border-radius: 999px; }
.dp-h.uc { color: #fff; font-weight: 750; opacity: 1; }
.dp-h.uc::before {
  content: ''; position: absolute; z-index: -1; width: 33px; height: 33px;
  border-radius: 999px; background: var(--eylem);
}

/* Hafta modu: tıklama hedefi SATIR. Hücreler olay almaz, aksi hâlde gün
   rakamına dokunmak satırı ıskalıyordu. */
.dp-izgara.mod-hafta .dp-h { pointer-events: none; background: none; }
.dp-izgara.mod-hafta .dp-h.uc::before { display: none; }
.dp-izgara.mod-hafta .dp-h.uc { color: var(--ink-1); font-weight: 600; }
.dp-izgara.mod-hafta .dp-satir[data-donem-hafta] { cursor: pointer; border-radius: 999px; }
.dp-izgara.mod-hafta .dp-satir[data-donem-hafta]:hover { background: var(--eylem-soft); }
.dp-izgara.mod-hafta .dp-satir.sec { background: var(--eylem); }
.dp-izgara.mod-hafta .dp-satir.sec .dp-h { color: #fff; font-weight: 700; opacity: 1; }
.dp-izgara.mod-hafta .dp-satir.sec .dp-h.komsu { color: color-mix(in srgb, #fff 62%, transparent); }
.dp-izgara.mod-hafta .dp-satir.pasif { opacity: .38; }

.dp-izgara.dp-aylik, .dp-izgara.dp-yillik { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.dp-k {
  appearance: none; -webkit-appearance: none; border: none; background: none; font: inherit;
  cursor: pointer; padding: 13px 6px; border-radius: 14px;
  font-size: 12.5px; font-weight: 620; color: var(--ink-1); text-align: center;
}
.dp-k:hover { background: var(--surface-2); }
.dp-k.sec { background: var(--eylem); color: #fff; font-weight: 720; }
span.dp-k { color: var(--ink-3); opacity: .42; cursor: default; }

/* Alt şerit: seçimin ÇÖZÜMÜ (süzgecin alacağı gerçek pencere) + onay */
.dp-alt {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 16px; border-top: 1px solid var(--hair); background: var(--surface-2);
}
.dp-ozet { min-width: 0; }
.dp-ozet b { display: block; font-size: 13.5px; font-weight: 720; letter-spacing: -0.01em; }
.dp-ozet small { display: block; font-size: 10.5px; color: var(--ink-2); margin-top: 2px; line-height: 1.45; }
.dp-uygula { flex-shrink: 0; }
.dp-uygula.pasif, .dp-sec.pasif { opacity: .38; cursor: default; }
.dp-mod:focus-visible, .dp-h:focus-visible, .dp-k:focus-visible, .dp-nav-ad:focus-visible,
.dp-ok:focus-visible, .dp-satir[data-donem-hafta]:focus-visible {
  outline: 2px solid var(--eylem); outline-offset: 1px;
}

@keyframes dpPerde { from { opacity: 0; } to { opacity: 1; } }
@keyframes dpSheet { from { transform: translateY(100%); } to { transform: translateY(0); } }

/* Telefon: alt sheet. Raf yatay hap şeridine döner, aralıkta ikinci ay düşer,
   dokunma hedefleri büyür, onay başlıktaki "Seç"e taşınır. */
@media (max-width: 760px) {
  .donem-kap.acik .donem-perde {
    display: block; position: fixed; inset: 0; z-index: 199;
    background: color-mix(in srgb, var(--ink-1) 42%, transparent);
    -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
    animation: dpPerde .2s ease;
  }
  .donem-kap.acik .donem-panel {
    position: fixed; inset: auto 0 0 0; width: auto; max-height: calc(100% - 28px);
    border-radius: 26px 26px 0 0; border-width: 1px 0 0;
    display: flex; flex-direction: column;
    animation: dpSheet .26s cubic-bezier(.22, .8, .36, 1);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .dp-bas {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    padding: 15px 18px 13px; border-bottom: 1px solid var(--hair); flex-shrink: 0;
  }
  .dp-bas b { font-size: 14.5px; font-weight: 720; }
  .dp-kapat, .dp-sec {
    appearance: none; -webkit-appearance: none; border: none; background: none; font: inherit;
    cursor: pointer; font-size: 13.5px; font-weight: 650; color: var(--ink-2); padding: 4px 2px;
  }
  /* Onay TEK yerde: başlıktaki Seç. Alttaki Uygula düşer (ikisi birlikte
     "hangisi asıl düğme" sorusu doğuruyordu), alt şerit çözümü yazmaya devam
     eder. Seç düz bağlantı değil koyu hap: dokunma hedefi ve görünürlüğü
     düz metinden yüksek. */
  .dp-sec {
    background: var(--eylem); color: #fff; font-weight: 750;
    padding: 9px 18px; border-radius: 999px;
  }
  .dp-sec.pasif { background: var(--hair-2); color: var(--ink-3); opacity: 1; }
  .dp-uygula { display: none; }
  .dp-magaza { flex-shrink: 0; padding: 12px 16px 0; }
  /* mağaza çipleri tek satırda kayar; sarınca sheet'in tepesini yiyordu */
  .dp-magaza .cipler { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .dp-magaza .cipler::-webkit-scrollbar { display: none; }
  .dp-magaza .cip, .dp-magaza .cip-etiket { flex-shrink: 0; }
  .dp-govde { display: flex; flex-direction: column; min-height: 0; }
  .dp-raf {
    flex-direction: row; overflow-x: auto; overflow-y: hidden; flex-shrink: 0;
    border-right: none; border-bottom: 1px solid var(--hair); padding: 11px 14px; gap: 6px;
    scrollbar-width: none; -ms-overflow-style: none;
    /* sağ kenarda solma: şeridin devamı olduğu çubuk olmadan da anlaşılsın */
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent);
  }
  .dp-raf::-webkit-scrollbar { display: none; }
  .dp-mod { flex-shrink: 0; background: var(--surface-2); padding: 9px 15px; font-size: 13px; }
  .dp-ayrac { width: 1px; height: 22px; margin: 0 5px; align-self: center; }
  .dp-takvim { overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 14px 16px 18px; }
  .dp-ay.ikinci { display: none; }        /* aralıkta tek ay: iki ay telefonda sığmaz */
  .dp-ay { max-width: none; }
  .dp-gun-ad span { font-size: 11px; padding: 4px 0 8px; }
  .dp-h { height: 44px; font-size: 14.5px; }
  .dp-h.uc::before { width: 40px; height: 40px; }
  .dp-nav-ad { font-size: 15px; padding: 7px 15px; }
  .dp-ok { width: 38px; height: 38px; }
  .dp-k { padding: 16px 6px; font-size: 14px; }
  .dp-alt { flex-shrink: 0; padding: 13px 17px; }
}
.ozet-ust { display: grid; grid-template-columns: 1fr 376px; gap: 12px; margin: 12px 0; align-items: stretch; }
.ozet-ust .card { margin: 0; }
.ozet-ust .kart-hero { display: flex; flex-direction: column; min-height: 330px; }
.ozet-ust .kart-hero .deger { margin: 14px 0 8px; }
.hero-cipler { display: flex; gap: 10px; flex-wrap: wrap; margin-top: auto; padding-top: 20px; position: relative; z-index: 1; }
.hero-cip {
  display: inline-flex; align-items: center; gap: 10px;
  background: color-mix(in srgb, var(--surface) 74%, transparent);
  border: 1px solid var(--hair); border-radius: 16px; padding: 9px 15px;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
button.hero-cip { font-family: inherit; text-align: left; cursor: pointer; }
.hero-cip .hc-ikon { width: 34px; height: 34px; border-radius: 11px; background: var(--eylem-soft); color: var(--eylem); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.hero-cip .hc-ikon .ik { width: 16px; height: 16px; }
.hero-cip .hc-ikon.yesil { background: var(--iyi-soft); color: var(--iyi-metin); }
.hero-cip small { display: block; font-size: 10.5px; color: var(--hero-ink-2); font-weight: 600; }
.hero-cip b { font-size: 15px; font-weight: 700; color: var(--hero-ink); }
.kpi-sutun { display: grid; grid-template-columns: 1fr 1fr; grid-auto-rows: 1fr; gap: 10px; min-width: 0; }
.kpi-sutun .stat-kart { margin: 0; }
.kpi-sutun .gauge { padding: 12px 14px; }
@media (max-width: 980px) {
  .ozet-ust { grid-template-columns: 1fr; }
  .ozet-ust .kart-hero { min-height: 0; }
  .ozet-ust .kart-hero .hero-cipler { padding-top: 16px; }
}
/* iki tam genişlik yatay şerit, alt alta (2026-07-26; eski 3 dikey sütun düzeni kalktı) */
.ozet-alt { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 12px 0; }
.ozet-kart { margin: 0; padding: 17px 17px 14px; }
.kart-bas { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.kart-bas h3 { font-size: 15.5px; font-weight: 700; letter-spacing: -0.01em; margin: 0; display: flex; align-items: center; gap: 8px; min-width: 0; }
.rozet-sayi { font-size: 10.5px; font-weight: 700; background: var(--surface-2); color: var(--ink-2); border-radius: 999px; padding: 3px 9px; white-space: nowrap; }
.kb-sag { font-size: 12px; font-weight: 650; color: var(--ink-2); display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; background: none; border: none; cursor: pointer; padding: 0; }
.kb-sag:hover { color: var(--eylem); }
.ozet-kart .bolum-alt { font-size: 11.5px; margin: -4px 0 12px; }
.kart-bos { border: 1.5px dashed var(--hair-2); border-radius: 14px; padding: 18px; text-align: center; color: var(--ink-2); font-size: 12.5px; }
.veri-not {
  display: flex; gap: 8px; align-items: flex-start;
  background: var(--eylem-soft); color: var(--eylem-koyu);
  border-radius: 12px; padding: 9px 12px; font-size: 11px; line-height: 1.5; margin-top: 9px; font-weight: 550;
}
.veri-not .ik { flex-shrink: 0; margin-top: 2px; }
/* motor dürüstlük notları — Veri Temeli kartı kalkınca şeritlerin altına taşındı */
.not-serit { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 9px; margin: 12px 0; }
.not-serit .veri-not { margin-top: 0; }
@media (max-width: 760px) {
  .karar-serit { grid-auto-columns: minmax(168px, 78%); }
  .top-serit { grid-auto-columns: minmax(172px, 78%); }
  .kokpit-ust { flex-wrap: wrap; align-items: flex-start; }
  .donem-kap { margin-left: auto; }
}

/* ================= KOKPİT — HIZLI İŞLEMLER ================= */
.hizli-islem { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 18px 0 6px; }
@media (max-width: 680px) { .hizli-islem { grid-template-columns: 1fr 1fr; } }
.hizli-islem .islem {
  display: flex; flex-direction: row; align-items: center; gap: 10px; cursor: pointer;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 18px;
  box-shadow: var(--golge); padding: 12px 14px; font-size: 12.5px; font-weight: 650; color: var(--ink-1);
  text-align: left; min-width: 0; transition: transform .18s, border-color .18s;
}
.hizli-islem .islem span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hizli-islem .islem .ik {
  width: 30px; height: 30px; padding: 7px; border-radius: 10px;
  background: var(--surface-2); color: var(--eylem); flex-shrink: 0;
}
.hizli-islem .islem::after { content: "›"; margin-left: auto; color: var(--ink-3); font-size: 15px; font-weight: 600; }
.hizli-islem .islem:hover { border-color: var(--hair-2); transform: translateY(-1px); }

/* ================= BOTTOM SHEET ================= */
.sheet-kap { position: fixed; inset: 0; z-index: 150; pointer-events: none; }
.sheet-kap .sheet-arka {
  position: absolute; inset: 0; background: rgba(15, 17, 22, .48);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
  opacity: 0; transition: opacity .22s ease;
}
.sheet-kap .sheet {
  position: absolute; left: 0; right: 0; bottom: 0; margin: 0 auto; max-width: 640px;
  background: var(--surface); border-radius: 22px 22px 0 0;
  box-shadow: 0 -18px 60px rgba(0, 0, 0, .28);
  transform: translateY(102%); transition: transform .26s cubic-bezier(.32, .72, .28, 1);
  /* vh DEĞİL yüzde: vh adres çubuğu DAHİL büyük görünüme göre ölçer; kap
     fixed inset:0 olduğundan yüzde gerçek görünür yüksekliktir (2026-08-16). */
  max-height: calc(100% - 28px - env(safe-area-inset-top, 0px));
  display: flex; flex-direction: column;
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.sheet-kap.acik { pointer-events: auto; }
.sheet-kap.acik .sheet-arka { opacity: 1; }
.sheet-kap.acik .sheet { transform: translateY(0); }
.sheet-tutamac { padding: 10px 0 4px; cursor: grab; touch-action: none; flex-shrink: 0; }
.sheet-tutamac i { display: block; width: 40px; height: 4.5px; border-radius: 3px; background: var(--hair-2); margin: 0 auto; }
.sheet-icerik { padding: 6px 20px 22px; overflow-y: auto; -webkit-overflow-scrolling: touch; }
.sheet-baslik { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 4px 0 14px; }
.sheet-baslik b { font-size: 16.5px; font-weight: 750; letter-spacing: -0.015em; display: inline-flex; align-items: center; gap: 8px; }
.sheet-baslik b .ik { color: var(--eylem); width: 18px; height: 18px; }
.sheet-x { border: none; background: var(--surface-2); color: var(--ink-2); width: 32px; height: 32px; border-radius: 999px; cursor: pointer; font-size: 13px; }
.sheet-x:hover { background: var(--hair); color: var(--ink-1); }
.sheet-bolum { font-size: 10.5px; font-weight: 800; color: var(--ink-3); letter-spacing: .1em; text-transform: uppercase; margin: 16px 0 8px; }
.sheet-secenekler { display: flex; flex-direction: column; gap: 3px; }
.sheet-sec {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  text-align: left; border: none; background: none; cursor: pointer;
  font-size: 13.5px; font-weight: 550; color: var(--ink-1); padding: 11px 12px; border-radius: 11px;
}
.sheet-sec:hover { background: var(--surface-2); }
.sheet-sec.aktif { font-weight: 720; color: var(--eylem); background: var(--eylem-soft); }
.sheet-sec .ik { width: 15px; height: 15px; flex-shrink: 0; }
.sheet-sec span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.btn.tam { width: 100%; }
.dp-sayi { font-size: 11.5px; color: var(--ink-3); font-weight: 650; margin-left: auto; }
body.sheet-acik { overflow: hidden; }

/* ürün satırı mini trendi */
.satir-spark { flex-shrink: 0; display: flex; align-items: center; }
.satir-spark .mini-spark { width: 64px; height: 26px; }
@media (max-width: 720px) { .satir-spark { display: none; } }

/* ================= AÇILIŞ PERDESİ =================
   "A — Mühür" (kullanıcı onayı, 2026-08-04): halka logoyu sarar, yüzde
   RAKAMI EKRANDA YOK — ilerlemeyi yalnız yay anlatır.

   ⛔ PERDE SAYDAM DEĞİL, TAM SAYFA OPAK. Eskisi yarı saydamdı
   (color-mix + blur) ve arkasındaki BOŞ DURUM ekranı görünüyordu:
   verisi olan kullanıcı ~2 saniye "Trendyol Excel'lerini yükleyin"
   karşılama ekranını görüyordu, sonra kokpit belirip yerine geçiyordu
   (2026-08-04, kullanıcının videosunda kareler 13-24). Opaklık bu
   ekranın hiç görünmemesini sağlayan şeyin kendisi — saydamlaştırma
   kusuru geri getirir.

   ⛔ z-index 265 — 140 DEĞİL. Perde 140'ta iken KAPALI yan panelin
   (.sheet-kap, 150) gölgesi perdenin üstüne düşüyordu: katlamanın altında
   duran panel translateY ile aşağıda ama box-shadow'u ekranın alt kenarına
   sızıyor ve tertemiz zeminde gri bir leke bırakıyordu (ekran görüntüsü
   yakaladı). Perde artık sheet (150), bırakma alanı (199), lightbox (200)
   ve durum tostunun (260) ÜSTÜNDE; yalnız tanıtım turu (300) daha yukarıda
   — tur zaten yalnız demo kipinde ve perde olmadan başlıyor.
   Tost bilerek kapanır: perdenin kendi durum satırı aynı şeyi söylüyor. */
/* ⛔ BELİRME ANİMASYONU YOK — konulamaz. Perde `animation: yuklemeGiris`
   ile 180 ms içinde 0→1 opaklığa geliyordu ve o pencerede ARKASI OKUNUYOR:
   kullanıcının 2026-08-04 20:33 videosunda, perde açık olduğu hâlde
   "İlk Değer Yolculuğu" kartı ve "Trendyol Excel'lerinizi yükleyin"
   başlığı net biçimde görünüyor (üstte "VERİ BEKLENİYOR" rozetiyle).
   Zemin rengi opak olsa bile ELEMENTİN KENDİSİ yarı saydam oluyor —
   `background: var(--page)` tek başına yetmiyor.
   Perde açılışta ekrandaki İLK şeydir; içeri süzülecek bir yer yok.
   Yalnız KAPANIŞ yumuşatılır (.kapaniyor). */
.yukleme-kap {
  position: fixed; inset: 0; z-index: 265; display: flex; align-items: center; justify-content: center;
  background: var(--page);
}
/* zeminde çok hafif ışık — düz boşluk hissini alır, hero kartının dili */
.yukleme-kap::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(120% 88% at 50% 30%, #ffffff 0%, rgba(255, 255, 255, 0) 60%);
}
@media (prefers-color-scheme: dark) {
  .yukleme-kap::before { background: none; }
}
.yukleme-kap.kapaniyor { opacity: 0; transition: opacity .26s ease; }
.yukleme-kutu {
  position: relative;
  display: flex; flex-direction: column; align-items: center; gap: 24px; max-width: 82vw;
}
.y-halka { position: relative; width: 136px; height: 136px; }
/* yay saat 12'den başlar (kart halkalarıyla aynı yön) */
.y-halka svg { width: 100%; height: 100%; display: block; transform: rotate(-90deg); }
.y-halka .yz { fill: none; stroke: var(--hair-2); stroke-width: 1.5; }
.y-halka .yd {
  fill: none; stroke: var(--eylem); stroke-width: 2.5; stroke-linecap: round;
  transition: stroke-dashoffset .34s cubic-bezier(.22, .61, .36, 1);
}
.y-logo { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.y-logo img { width: 52px; height: 52px; object-fit: contain; }
.y-alt-kap { display: flex; flex-direction: column; align-items: center; gap: 9px; }
.y-alt-kap .wm { font-size: 17px; }
.y-baslik {
  font-size: 12.5px; font-weight: 600; color: var(--ink-3);
  letter-spacing: .01em; text-align: center; min-height: 17px;
}
/* İKİNCİ SATIR = GERÇEK SAYAÇ ("6.200 / 9.471 kayıt · dosya.xlsx").
   Yükleme perdesinde yüzde yerine bunu okur kullanıcı; açılış perdesinde
   sayılacak bir şey olmadığı için gizlenir (hidden) ve yer kaplamaz.
   Rakamlar tabular: sayaç akarken satır genişliği zıplamasın. */
.y-ayrinti {
  font-size: 11.5px; font-weight: 550; color: var(--ink-3); opacity: .78;
  text-align: center; letter-spacing: .01em;
  font-variant-numeric: tabular-nums;
  max-width: min(420px, 82vw);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.y-ayrinti[hidden] { display: none; }
/* Yüzde EKRANDA GÖRÜNMEZ ama DOM'da durur: ekran okuyucu ilerlemeyi
   okuyabilsin (role=progressbar aria-valuenow ile birlikte) ve
   tests/browser.js göstergenin gerçekten ilerlediğini ölçebilsin. */
.y-yuzde {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
@media (max-width: 480px) {
  .y-halka { width: 112px; height: 112px; }
  .y-logo img { width: 44px; height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  .yukleme-kap { animation: none; }
  .y-halka .yd { transition: none; }
}

/* ============================================================ KARŞILAMA KAPISI
   Boş hesapta tam ekran giriş kapısı. Solda ne yükleneceği, sağda KİLİTLİ
   kokpitin kendisi; katalog gelince satıcının kendi ürünleri sahneye yerleşir.

   ⛔ z-index 240: açılış perdesinin (265) ALTINDA, yan panelin (150) üstünde.
   Perdenin üstüne çıksaydı veri inerken kapı görünür, perde kalkınca kapı
   kendini yeniden kurar ve ekran iki kez kurulmuş gibi olurdu.

   ⛔ OPAK: arkadaki boş kokpit okunmamalı — perdede öğrenilen aynı ders
   (saydam katman "bozuk mu?" sorusunu doğuruyor). */
.kp {
  position: fixed; inset: 0; z-index: 240; overflow-y: auto;
  background: var(--page);
}
.kp::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: var(--yikama);
}
body.kapi-acik { overflow: hidden; }
/* ⛔ KAPI İÇİNDE [hidden] ŞART. Kilit rozeti `display: inline-flex` taşıyor ve
   sınıftaki display tarayıcının [hidden] kuralını EZİYOR: eşik dolduğu hâlde
   "Verilerinizle dolacak" rozeti ekranda kalıyordu. Bu tuzak projede daha önce
   ayarlar.css'te yaşandı; kapıda tekrarlandı ve browser.js yakaladı. */
.kp [hidden] { display: none !important; }
/* ⛔ KAPI, CEVAP BEKLEYEN BİR SORUYU YUTAMAZ. Yan panel z-150, kapı z-240:
   kampanya teklifi yüklenince açılan DÖNEM TARİHİ sorusu kapının ALTINDA
   kalıyordu ve kullanıcı hiçbir şey görmüyordu — dosya işleniyor, soru
   bekliyor, ekran sessiz (kullanıcı bildirimi, 2026-08-08: "kampanya yükleme
   dosyaları tepki vermiyor, tarih teyit penceresi buraya gelmiyor").
   Açık panel kapının ÜSTÜNE çıkar; ilerleme kartı (250) ve açılış perdesi
   (265) hâlâ daha yukarıda. */
body.kapi-acik .sheet-kap { z-index: 246; }
.kp-sahne { position: relative; z-index: 1; max-width: 1240px; margin: 0 auto; padding: 30px 20px 64px; }
.kp-ust { display: flex; align-items: center; justify-content: space-between; margin-bottom: 34px; }
.kp-cik {
  font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  padding: 7px 14px; border-radius: 999px; border: 1px solid var(--hair-2);
  background: var(--surface); color: var(--ink-2);
}
.kp-cik:hover { background: var(--surface-2); }

.kp-govde { display: grid; grid-template-columns: minmax(0, .86fr) minmax(0, 1.14fr); gap: 42px; align-items: start; }
/* ⛔ GRID ÇOCUĞUNA min-width:0 ŞART: varsayılan `auto` min-content'e çözülüyor
   ve adım satırının nowrap sağ etiketi kolonu şişirip sayfayı taşırıyor
   (mobilde 41px ölçüldü). minmax(0,…) yalnız KOLONU sınırlar. */
.kp-govde > * { min-width: 0; }

.kp-baslik {
  font-family: var(--font-display); font-weight: 600; letter-spacing: -.025em;
  font-size: clamp(30px, 4.4vw, 48px); line-height: 1.03; margin: 0 0 12px;
}
.kp-baslik em { font-style: normal; color: var(--eylem); }
.kp-alt { font-size: 14.5px; color: var(--ink-2); margin: 0 0 28px; max-width: 44ch; line-height: 1.6; }
/* Kapıdaki adımlar kılavuzun bileşenlerini kullanır (.kv-adim/.kv-bas/.kv-yol);
   yalnız kabuk farklı — kart gölgesi ve boşluk kapıya göre. */
/* ⚠ ÜÇ ENTEGRASYON KUSURU, ÜÇÜ DE EKRAN GÖRÜNTÜSÜYLE YAKALANDI:
   1) `.kv-liste` kılavuzda <div>, kapıda <ul> — madde imleri ve varsayılan
      girinti geri geliyordu.
   2) `.kv-ad small` kılavuzda yok (açıklama `.kv-nicin`e ayrı satırda gidiyor);
      kapıda satır içinde kalıp "Ürün kataloğuFiyat, komisyon…" diye yapışıyordu.
   3) `.marka{order:1}` — flex kabında söz markasını sağa atıyor; kapının üst
      şeridinde çıkış düğmesi sola, marka sağa düşüyordu. */
.kp-liste { display: block; list-style: none; margin: 0; padding: 0; }
.kp-ust .marka { order: 0; }
.kp-liste .kv-ad small {
  display: block; font-weight: 450; font-size: 12px;
  color: var(--ink-3); margin-top: 3px; white-space: normal; line-height: 1.45;
}
.kp-liste .kv-adim {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  margin-bottom: 10px; box-shadow: var(--karti-golge, 0 1px 2px rgba(24, 36, 32, .04), 0 18px 40px -20px rgba(23, 83, 73, .2));
  transition: border-color .35s ease;
}
.kp-liste .kv-adim + .kv-adim { border-top: 1px solid var(--hair); }
.kp-liste .kv-adim.tamam { border-color: color-mix(in srgb, var(--iyi) 34%, var(--hair)); }
/* Eksik dosya türü olan adım (kampanya teklifleri: dört türden ikisi geldi)
   ROZETİYLE AYNI DİLİ konuşur — yeşil çerçevenin içinde sarı tik, kartın
   kendisini kendisiyle çelişkiye düşürüyordu (kullanıcı bildirimi, 2026-08-12:
   "tamamlanmış gibi"). Kural `.acik`ten ÖNCE: açık kart vurgusu üstte kalmalı. */
.kp-liste .kv-adim.tamam.kismi { border-color: color-mix(in srgb, var(--dikkat) 40%, var(--hair)); }
.kp-liste .kv-adim.acik { border-color: color-mix(in srgb, var(--eylem) 30%, var(--hair)); }
.kp-liste .kv-adim.acik .kv-bas { background: none; }
.kp-liste .kv-govde { padding: 2px 17px 15px 46px; }
.kv-esik { display: flex; align-items: center; gap: 12px; margin: 20px 2px 14px; }
.kv-esik::before, .kv-esik::after { content: ''; height: 1px; background: var(--hair-2); flex: 1 1 auto; }
.kv-esik span {
  font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-3); white-space: nowrap;
}

/* ---- mağaza seçim yüzü (2026-08-09): kapı ilk açılışta iki büyük kutu ---- */
.kp-secim { max-width: 880px; margin: 7vh auto 0; text-align: center; }
.kp-secim .kp-alt { margin-left: auto; margin-right: auto; }
.kp-magazalar { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 36px; }
.kp-magaza {
  font: inherit; text-align: left; cursor: pointer;
  display: flex; flex-direction: column; gap: 10px;
  padding: 30px 28px 26px; border-radius: var(--r-l, 26px);
  background: var(--surface); border: 1px solid var(--hair);
  box-shadow: 0 1px 2px rgba(24, 36, 32, .04), 0 26px 54px -26px rgba(23, 83, 73, .26);
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.kp-magaza:hover, .kp-magaza:focus-visible {
  transform: translateY(-3px);
  border-color: color-mix(in srgb, var(--eylem) 36%, var(--hair));
  box-shadow: 0 2px 4px rgba(24, 36, 32, .05), 0 34px 66px -26px rgba(23, 83, 73, .34);
}
.kp-mg-ad {
  font-family: var(--font-display); font-weight: 600; letter-spacing: -.02em;
  font-size: clamp(22px, 2.6vw, 28px); color: var(--ink);
}
.kp-mg-not { font-size: 13px; color: var(--ink-2); line-height: 1.55; }
.kp-mg-say {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
  font-size: 12.5px; font-weight: 650; color: var(--eylem);
}
.kp-mg-say svg { width: 14px; height: 14px; }

/* Adım listesinin üstündeki mağaza satırı: hangi kurulum + öteki mağazaya geçiş */
.kp-mgz { display: flex; align-items: baseline; gap: 10px; margin: 0 2px 12px; }
.kp-mgz-ad {
  font-size: 11px; letter-spacing: .08em; text-transform: uppercase;
  font-weight: 700; color: var(--ink-2);
}
.kp-mgz-degis {
  font: inherit; font-size: 12px; font-weight: 600; color: var(--eylem);
  background: none; border: 0; cursor: pointer; padding: 2px 0; margin-left: auto;
  text-decoration: underline dotted; text-underline-offset: 3px;
}
.kp-mgz-degis:hover { text-decoration-style: solid; }

/* ---- kilitli vitrin ---- */
.kp-vitrin {
  position: relative; border-radius: var(--r-l, 26px); overflow: hidden;
  background: var(--page);
  box-shadow: 0 2px 4px rgba(24, 36, 32, .05), 0 34px 70px -28px rgba(23, 83, 73, .34);
}
/* ÜRETİLMİŞ SAHNE (Higgsfield soul_location, 8,9 KB webp): yalnız katalog
   gelmeden görünür — veri gelince geri çekilir, sahneyi dükkân devralır. */
.kp-vitrin::before {
  content: ''; position: absolute; inset: 0; opacity: 1;
  background: url(kapi-sahne.webp) center/cover;
  transition: opacity 1.1s cubic-bezier(.22, .61, .36, 1);
}
.kp-vitrin::after {
  content: ''; position: absolute; inset: 0; pointer-events: none; opacity: 1;
  background: linear-gradient(180deg, rgba(237, 241, 238, .34), rgba(237, 241, 238, .66));
  transition: opacity 1.1s ease;
}
.kp-vitrin[data-dolu]::before, .kp-vitrin[data-dolu]::after { opacity: 0; }
.kp-ic { position: relative; z-index: 2; padding: 24px; }
.kp-kilit {
  position: absolute; top: 15px; right: 15px; z-index: 5;
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 11px; font-weight: 650; padding: 6px 12px; border-radius: 999px;
  background: rgba(255, 255, 255, .88); border: 1px solid rgba(255, 255, 255, .92);
  color: var(--ink-2); box-shadow: 0 1px 2px rgba(24, 36, 32, .04), 0 10px 24px -14px rgba(23, 83, 73, .3);
}
.kp-kilit svg { width: 12px; height: 12px; }
.kp-kokpit { transition: filter .95s cubic-bezier(.22, .61, .36, 1); }

.kp-hero {
  border-radius: var(--r); padding: 20px; border: 1px solid var(--hair);
  background: var(--hero-zemin);
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; align-items: center;
}
/* ⛔ KOLAJ MUTLAK KONUMDA DEĞİL, KENDİ KOLONUNDA. Hero'nun üstüne absolute
   konduğunda metrik satırının üçüncü sütununu (İade) ÖRTÜYORDU — ekran
   görüntüsü yakaladı. Grid'de çakışma yapısal olarak imkânsız. */
.kp-hero-sol { min-width: 0; }
.kp-et { font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-3); }
.kp-buyuk {
  font-family: var(--font-display); font-size: clamp(32px, 4.2vw, 44px); font-weight: 600;
  letter-spacing: -.03em; line-height: 1.04; margin-top: 6px; font-variant-numeric: tabular-nums;
}
.kp-buyuk.yok { font-family: var(--font-ui); font-size: 16px; font-weight: 600; color: var(--ink-3); letter-spacing: 0; }
.kp-uc {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin-top: 15px; padding-top: 13px; border-top: 1px solid var(--hero-cizgi);
}
.kp-d { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; margin-top: 3px; }
.kp-d.yok { font-size: 12px; font-weight: 450; color: var(--ink-3); }

.kp-kolaj { position: relative; width: 170px; height: 150px; flex: none; }
.kp-kolaj:empty { display: none; }
.kp-k {
  position: absolute; border-radius: 14px; background: var(--surface);
  border: 1px solid var(--hair); overflow: hidden;
  box-shadow: 0 8px 22px -10px rgba(23, 83, 73, .32);
  transition: transform .3s cubic-bezier(.34, 1.4, .64, 1);
  animation: kpKolaj .72s cubic-bezier(.22, .9, .3, 1) backwards;
}
.kp-k img { width: 100%; height: 100%; display: block; object-fit: contain; }
.kp-k:hover { transform: translateY(-6px) scale(1.05); z-index: 9; }
@keyframes kpKolaj {
  from { opacity: 0; transform: translate(34px, 24px) scale(.72) rotate(6deg); }
  to { opacity: 1; transform: none; }
}

.kp-kartlar { display: grid; gap: 10px; margin-top: 12px; }
.kp-kart { border: 1px solid var(--hair); border-radius: var(--r-s); padding: 13px 14px; background: var(--surface); }
.kp-kad {
  font-size: 12px; font-weight: 650; display: flex; align-items: center;
  justify-content: space-between; gap: 8px;
}
.kp-kad span { font-size: 11px; font-weight: 450; color: var(--ink-3); }
.kp-kart .kp-d { margin-top: 6px; font-size: 15px; }
.kp-iskelet { height: 11px; border-radius: 6px; background: var(--tarama); border: 1px solid var(--hair); margin-top: 7px; }
.kp-urunler { display: grid; gap: 8px; margin-top: 9px; }
.kp-ur { display: flex; align-items: center; gap: 10px; font-size: 12px; animation: kpUr .5s cubic-bezier(.22, .9, .3, 1) backwards; }
.kp-ur img { width: 30px; height: 30px; border-radius: 8px; flex: none; background: var(--surface-2); border: 1px solid var(--hair); object-fit: contain; }
.kp-ur b { font-weight: 600; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-ur i { font-style: normal; color: var(--ink-3); font-variant-numeric: tabular-nums; flex: none; }
@keyframes kpUr { from { opacity: 0; transform: translateX(-10px); } to { opacity: 1; transform: none; } }

.kp-kapi { margin-top: 20px; display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.kp-ac:not([disabled]) { animation: kpDus .62s cubic-bezier(.34, 1.5, .64, 1); }
@keyframes kpDus { from { opacity: 0; transform: translateY(-14px) scale(.94); } to { opacity: 1; transform: none; } }
.kp-not { font-size: 12.5px; color: var(--ink-2); line-height: 1.55; max-width: 52ch; margin: 0; }

/* ---- kapı = veri ekranı (2026-08-08) ---- */
.kp-ust-sag { display: inline-flex; align-items: center; gap: 10px; }
.kp-x {
  font: inherit; font-size: 15px; line-height: 1; cursor: pointer;
  width: 32px; height: 32px; border-radius: 50%; flex: none;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-2);
}
.kp-x:hover { background: var(--surface-2); color: var(--ink-1); }

/* CEVAP BEKLEYEN SORU — kapının içinde, gövdeden ÖNCE: kullanıcı dosya
   yüklemeye devam etmeden önce onu görmeli. Kart dili sheet'le aynı kalır
   (aynı işaretleme yeniden kullanılıyor), yalnız kabı değişir. */
.kp-soru {
  border: 1px solid color-mix(in srgb, var(--eylem) 26%, var(--hair));
  background: var(--surface); border-radius: var(--r);
  padding: 16px 18px; margin: -14px 0 28px; max-width: 620px;
  box-shadow: 0 10px 30px -18px rgba(16, 32, 44, .25);
}
.kp-soru .sheet-baslik { margin-top: 0; }

.kp-dosya { margin-top: 26px; padding-top: 22px; border-top: 1px solid var(--hair); }
/* Dosya bölümü artık SAĞ sütunda, "Panele dön"ün altında (2026-08-09) —
   sütun ayracı yerine kendi kartı gibi nefes alır. */
.kp-sag .kp-dosya { margin-top: 18px; padding-top: 0; border-top: 0; }
.kp-sag .yorum-serit { margin-top: 14px; }
/* Bekleyen ürün eşleştirmesi — dikkat tonunda, tıklanabilir olduğu belli */
.kp-esl {
  font: inherit; width: 100%; text-align: left; cursor: pointer;
  display: flex; align-items: center; gap: 6px 12px; flex-wrap: wrap;
  margin-top: 18px; padding: 13px 16px; border-radius: var(--r);
  background: var(--dikkat-soft);
  border: 1px solid color-mix(in srgb, var(--dikkat) 45%, transparent);
  color: var(--dikkat-metin);
  box-shadow: 0 1px 2px rgba(24, 36, 32, .04);
  transition: border-color .2s ease, transform .2s ease;
}
.kp-esl:hover { border-color: var(--dikkat); transform: translateY(-1px); }
.kp-esl b { font-size: 13.5px; white-space: nowrap; }
.kp-esl span { font-size: 12px; opacity: .85; flex: 1 1 auto; min-width: 0; }
.kp-esl svg { flex: 0 0 auto; margin-left: auto; width: 15px; height: 15px; }
.kp-dosya-arac { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin: 12px 0 4px; }
/* "Yüklediğim dosyalar" listesi ve notu kaldırıldı (2026-08-09) —
   arşiv /ayarlar'da, silme kurucu panelinde. Hata satırları: */
.kp-hata {
  display: flex; align-items: baseline; gap: 8px; font-size: 12px;
  margin-top: 8px; padding: 9px 12px; border-radius: 9px;
  border: 1px solid color-mix(in srgb, var(--risk) 40%, transparent);
  background: var(--risk-soft); color: var(--risk-metin);
}
.kp-hata span { flex: 1 1 auto; min-width: 0; }
.kp-hata-sil { cursor: pointer; border: none; background: none; color: var(--risk-metin); font-size: 13px; padding: 0 2px; flex: 0 0 auto; }

/* YORUM BEKLEME ŞERİDİ — kural motoru kaldırıldı, Luna'nın cevabı beklenir.
   Evi kapı (kullanıcı kararı, 2026-08-08). */
.yorum-serit {
  margin-top: 14px; padding: 13px 15px; border-radius: var(--r);
  background: var(--eylem-soft);
  border: 1px solid color-mix(in srgb, var(--eylem) 18%, var(--hair));
}
.ys-ust { display: flex; align-items: center; gap: 9px; font-size: 12.5px; font-weight: 650; color: var(--eylem); }
.ys-bar { height: 5px; border-radius: 999px; background: color-mix(in srgb, var(--eylem) 14%, transparent); margin-top: 9px; overflow: hidden; }
.ys-bar i { display: block; height: 100%; background: var(--eylem); border-radius: 999px; transition: width .5s ease; }
.ys-not { font-size: 11.5px; color: var(--ink-2); margin: 7px 0 0; line-height: 1.5; }
.donen {
  width: 13px; height: 13px; border-radius: 50%; flex: none;
  border: 2px solid color-mix(in srgb, var(--eylem) 25%, transparent);
  border-top-color: var(--eylem); animation: ysDon .7s linear infinite;
}
@keyframes ysDon { to { transform: rotate(360deg); } }

/* TANITIM TURU DAVETİ — yolculuk kartının yerinde kalan tek satır. */
.tur-davet { margin: 4px 0 18px; }
.ydg-tanitim {
  font: inherit; font-size: 12px; font-weight: 600; cursor: pointer;
  background: none; border: 0; padding: 4px 0; color: var(--eylem);
  text-decoration: underline; text-decoration-style: dotted; text-underline-offset: 3px;
}
.ydg-tanitim:hover { text-decoration-style: solid; }

@media (max-width: 900px) {
  .kp-govde { grid-template-columns: 1fr; gap: 24px; }
  .kp-sag { order: -1; }
  .kp-magazalar { grid-template-columns: 1fr; }
  .kp-secim { margin-top: 3vh; text-align: left; }
  .kp-hero { grid-template-columns: 1fr; }
  /* ⚠ MOBİLDE KOLAJ YAN YANA ve KONUMLANDIRMA TAMAMEN BIRAKILIR: satır içi
     `left/top` relative konumda elemanı kaydırıp sayfayı taşırıyordu. */
  .kp-kolaj { position: static; width: auto; height: auto; display: flex; gap: 8px; flex-wrap: wrap; }
  .kp-k { position: static !important; inset: auto !important; width: 52px !important; height: 52px !important; }
  .kp-liste .kv-govde { padding-left: 17px; }
}
@media (prefers-reduced-motion: reduce) {
  .kp-k, .kp-ur, .kp-ac:not([disabled]) { animation: none; }
  .kp-kokpit, .kp-vitrin::before, .kp-vitrin::after { transition: none; }
}

/* filtre hapları */
.cipler { display: flex; gap: 6px; flex-wrap: wrap; margin: 2px 0 10px; align-items: center; }
.cip {
  font-size: 12px; font-weight: 600; padding: 6.5px 14px; cursor: pointer; border-radius: 999px;
  border: 1px solid var(--hair-2); background: transparent; color: var(--ink-2); white-space: nowrap;
}
.cip:hover { border-color: var(--ink-3); color: var(--ink-1); }
.cip.aktif { background: var(--ink-1); color: var(--page); border-color: var(--ink-1); }
.cip .n { opacity: .55; font-weight: 650; margin-left: 4px; font-size: 11px; }
.cipler .cip-etiket { font-size: 10px; font-weight: 700; color: var(--ink-3); letter-spacing: .1em; padding: 6px 8px 6px 2px; text-transform: uppercase; }

/* dropzone + dosyalar */
.dropzone {
  border: 1.5px dashed var(--hair-2);
  border-radius: var(--r); padding: 30px 20px; text-align: center; cursor: pointer;
  color: var(--ink-2); transition: border-color .15s, background .15s; background: transparent;
}
.dropzone.drag, .dropzone:hover { border-color: var(--eylem); background: var(--eylem-soft); }
.dropzone .buyuk { font-size: 14.5px; font-weight: 700; color: var(--ink-1); letter-spacing: -0.01em; }
.dropzone .mini { font-size: 11.5px; color: var(--ink-3); margin-top: 7px; line-height: 1.6; }
.dropzone.kompakt { padding: 16px 18px; display: flex; align-items: center; gap: 12px; text-align: left; }
.dropzone.kompakt .buyuk { font-size: 13.5px; }
.dropzone.kompakt .mini { margin-top: 2px; }

/* .dosya-listesi/.dosya blokları kaldırıldı (2026-08-09) — listeyi üreten kod silindi. */

/* veri temeli */
.kapsam-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(158px, 1fr)); gap: 9px; }
.kapsam-kart { display: flex; align-items: flex-start; gap: 9px; padding: 12px 13px; border-radius: 16px; border: 1px solid var(--hair); background: var(--surface); font-size: 12.5px; box-shadow: var(--golge); }
.kapsam-kart .durum-i { width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; flex-shrink: 0; font-weight: 700; margin-top: 1px; }
.kapsam-kart.var .durum-i { background: var(--eylem); color: #fff; }
.kapsam-kart.yok .durum-i { background: var(--surface-2); color: var(--ink-3); }
.kapsam-kart b { display: block; font-size: 12.5px; font-weight: 650; }
.kapsam-kart .k-not { color: var(--ink-3); font-size: 10.5px; line-height: 1.45; display: block; margin-top: 1px; }
.kapsam-kart.yok { border-style: dashed; background: transparent; box-shadow: none; }

.gider-liste { display: flex; flex-direction: column; gap: 8px; }

/* ================= KARARLAR — KARAR MASASI ================= */
.karar-grid { display: grid; grid-template-columns: 1fr; gap: 8px; }
@media (min-width: 980px) { .karar-grid.cift { grid-template-columns: 1fr 1fr; } }

.karar-kart {
  display: flex; gap: 14px; align-items: flex-start; position: relative;
  padding: 15px 16px 15px 18px; cursor: pointer; margin: 0;
}
.karar-kart::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; border-radius: var(--r) 0 0 var(--r); }
.karar-kart.oncelik-1::before { background: var(--risk); }
.karar-kart.oncelik-2::before { background: var(--serious); }
.karar-kart.oncelik-3::before { background: var(--hair-2); }
.karar-kart .sira {
  font-size: 13px; font-weight: 780; color: var(--ink-3); min-width: 24px; padding-top: 2px;
  text-align: right; flex-shrink: 0; font-variant-numeric: tabular-nums;
}
.karar-kart .icerik { min-width: 0; flex: 1; }
.karar-kart .eylem { font-size: 14.5px; font-weight: 650; color: var(--ink-1); line-height: 1.4; letter-spacing: -0.005em; }
.karar-kart .gerekce { font-size: 12.5px; color: var(--ink-2); line-height: 1.55; margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.karar-kart .ustsatir { display: flex; gap: 8px; align-items: center; margin-top: 9px; min-width: 0; }
.karar-kart .ustsatir .urun-thumb, .karar-kart .ustsatir .thumb-yok { width: 22px !important; height: 22px !important; border-radius: 6px; font-size: 11px !important; }
.karar-kart .urun-ad { font-weight: 550; font-size: 11.5px; color: var(--ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.karar-kart .model { color: var(--ink-3); font-size: 10.5px; font-weight: 600; flex-shrink: 0; }
.karar-kart .sag-ray { flex-shrink: 0; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; padding-top: 1px; }
.karar-kart .etki-v { font-size: 14px; font-weight: 650; white-space: nowrap; letter-spacing: -0.01em; }
.karar-kart .etki-l { font-size: 9.5px; font-weight: 650; color: var(--ink-3); letter-spacing: .07em; text-transform: uppercase; white-space: nowrap; }
@media (max-width: 560px) { .karar-kart .sira { display: none; } }

/* flex-wrap: dar ekranda "konu ürünlerin cirosu …" etiketi nowrap olduğu için
   başlık satırı taşıp sayfaya yatay kaydırma açıyordu (390px'te 27px) */
.oncelik-baslik { display: flex; flex-wrap: wrap; align-items: baseline; gap: 9px; font-size: 12px; font-weight: 700; margin: 26px 0 10px; letter-spacing: .05em; text-transform: uppercase; }
.oncelik-baslik .nokta { width: 9px; height: 9px; border-radius: 3px; flex-shrink: 0; align-self: center; }
.oncelik-baslik .o-sayi { color: var(--ink-3); font-weight: 650; }
.oncelik-baslik .o-etki { margin-left: auto; font-size: 11.5px; color: var(--ink-3); font-weight: 600; text-transform: none; letter-spacing: .01em; white-space: nowrap; }

/* ================= ÜRÜNLER — PORTFÖY ================= */
/* Not: eski .filtre-satir (arama + üç açılır kutu yan yana) 2026-07-25'te
   kaldırıldı — hem Portföy hem Yorumlar artık ortada tek arama + çip şeridi
   + sheet düzenini kullanıyor. */

/* ============ PORTFÖY YÖNLENDİRME KATI (u-ust) ============
   Ürünler sayfasının ilk ekranı üç soruyu aynı anda yanıtlar:
   solda portföyün büyüklüğü / parası / bugünkü işi, ortada net ciro ve
   gelişimi (en çok kazandıranların gerçek görselleriyle), sağda sağlık
   dağılımı · en güçlü kategori · takip başlıkları. Sağ kolon tıklanabilir:
   halka satırı listeyi durumla, segment kartı kategoriyle filtreler. */
.u-ust { display: grid; grid-template-columns: 236px minmax(0, 1fr) 266px; gap: 12px; align-items: stretch; margin: 2px 0 0; }
.u-sol, .u-sag { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.u-stat {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 14px 16px; flex: 1;
  display: flex; flex-direction: column; min-width: 0;
}
.u-stat > small, .u-bas-satir > small { font-size: 11.5px; font-weight: 700; color: var(--ink-2); }
.u-bas-satir { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.u-stat .u-deger {
  font-family: var(--font-display); font-size: 29px; font-weight: 600;
  letter-spacing: -.015em; line-height: 1.06; margin-top: 3px;
}
.u-stat .u-deger.neg { color: var(--risk-metin); }
.u-stat .u-deger .birim { font-size: .46em; font-weight: 500; letter-spacing: 0; color: var(--ink-2); }
.u-stat .u-not { font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-top: 3px; line-height: 1.4; }
.u-stat .u-dip { margin-top: auto; padding-top: 12px; }
.u-stat .d-cip { margin-top: 6px; align-self: flex-start; }
a.u-stat, button.u-stat { font: inherit; text-align: left; color: inherit; text-decoration: none; cursor: pointer; transition: border-color .15s, transform .15s; }
a.u-stat:hover, button.u-stat:hover { border-color: var(--hair-2); transform: translateY(-1px); }

/* payı gösteren iki tonlu mini bant (sahte grafik yerine gerçek oran) */
.u-oran { display: flex; height: 7px; border-radius: 4px; overflow: hidden; gap: 2px; background: var(--surface-2); }
.u-oran i { display: block; min-width: 3px; }
.u-oran .p-iyi { background: var(--iyi); }
.u-oran .p-dikkat { background: var(--dikkat); }
.u-oran .p-risk { background: var(--risk); }
.u-oran .p-notr { background: var(--hair-2); }
.u-oran-lej { display: flex; gap: 10px; flex-wrap: wrap; font-size: 10px; font-weight: 650; color: var(--ink-3); margin-top: 6px; }
.u-oran-lej span { display: inline-flex; align-items: center; gap: 4px; }
.u-oran-lej i { width: 7px; height: 7px; border-radius: 2px; }
/* öncelik çubukları (bugün izlenecek: 1./2./3. öncelik dağılımı) */
.u-cubuk { display: flex; align-items: flex-end; gap: 4px; height: 26px; }
.u-cubuk i { flex: 1; border-radius: 3px 3px 0 0; background: var(--eylem-soft); min-height: 3px; }
.u-cubuk i.o1 { background: var(--risk); }
.u-cubuk i.o2 { background: var(--dikkat); }
.u-cubuk i.o3 { background: var(--iyi); }

/* --- hero: net ciro + gelişim + kazandıran ürünlerin kolajı --- */
.u-hero {
  position: relative; overflow: hidden; background: var(--hero-zemin);
  border: 1px solid var(--hair); border-radius: var(--r); box-shadow: var(--hero-golge);
  padding: 20px 24px; display: flex; flex-direction: column; min-width: 0; min-height: 412px;
}
@media (prefers-color-scheme: dark) { .u-hero { border-color: transparent; } }
/* yazı sütunu kolajın soluyla sınırlı — uzun altyazı görsellerin altına girmez */
.u-hero-yazi { max-width: 56%; min-width: 0; }
/* kolaj çizilmediyse (kapsamda ikiden az görselli ürün) sağ yarı boş kalmasın */
.u-hero.kolajsiz .u-hero-yazi, .u-hero.kolajsiz .u-grafik { max-width: none; }
.u-hero h2 { font-size: 16.5px; font-weight: 700; letter-spacing: -.01em; color: var(--hero-ink); }
.u-hero .u-altyazi { font-size: 12px; color: var(--hero-ink-2); margin-top: 3px; }
.u-hero .u-buyuk {
  font-family: var(--font-display); font-size: clamp(30px, 3.2vw, 41px); font-weight: 600;
  letter-spacing: -.02em; line-height: 1.04; margin-top: 14px; color: var(--hero-ink);
}
.u-hero .u-buyuk.neg { color: var(--risk-metin); }
.u-hero .u-etiket { font-size: 11.5px; color: var(--hero-ink-2); font-weight: 600; margin-top: 5px; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
/* net cironun altındaki dönem içi satılan adet satırı */
.u-hero .u-adet { margin-top: 11px; }
.u-hero .u-adet b { font-family: var(--font-display); font-size: 17.5px; font-weight: 600; letter-spacing: -.01em; line-height: 1; color: var(--hero-ink); }
/* Kolaj kutuları en çok satandan aza doğru KÜÇÜLÜR — sıra rakamla değil
   boyutla anlatılır. Kutular ürün detayına giden gerçek bağlantılar. */
.u-kolaj { position: absolute; right: 0; top: 0; bottom: 0; width: 42%; z-index: 2; }
.u-kolaj .kavis { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
/* <button>: kolaj kareleri ürün panelini açıyor, sayfa değiştirmiyor.
   padding sıfırlanmalı — img'nin inset'i dolgu kutusuna göre konumlanır,
   butonun varsayılan dolgusu görseli kaydırırdı. */
.u-kolaj .parca {
  position: absolute; background: var(--surface); border: 1px solid var(--hair); border-radius: 22px;
  display: grid; place-items: center; overflow: hidden; text-decoration: none;
  padding: 0; cursor: pointer; appearance: none; -webkit-appearance: none;
  box-shadow: 0 30px 50px -26px rgba(24, 36, 32, .38), 0 2px 6px rgba(24, 36, 32, .05);
}
.u-kolaj .parca img {
  position: absolute; inset: 8px; width: calc(100% - 16px); height: calc(100% - 16px);
  object-fit: cover; object-position: 50% 56%; border-radius: 13px; background: var(--surface);
}
.u-kolaj .parca.p1 { width: 146px; height: 146px; left: 4%; top: 2%; transform: rotate(-5deg); }
.u-kolaj .parca.p2 { width: 126px; height: 126px; right: 3%; top: 14%; transform: rotate(4deg); }
.u-kolaj .parca.p3 { width: 108px; height: 108px; left: 0; top: 38%; transform: rotate(3deg); }
.u-kolaj .parca.p4 { width: 94px; height: 94px; right: 8%; top: 55%; transform: rotate(-3.5deg); }
.u-kolaj .parca.p5 { width: 82px; height: 82px; right: 30%; bottom: 3%; transform: rotate(5deg); }
.u-kolaj .parca:hover, .u-kolaj .parca:focus-visible {
  border-color: var(--eylem); z-index: 3;
  box-shadow: 0 34px 54px -24px rgba(24, 36, 32, .44), 0 0 0 2px var(--eylem-soft);
}
.u-kolaj .kure {
  position: absolute; border-radius: 50%;
  background: radial-gradient(circle at 32% 28%, #e7f3ec, #a8cdbb 58%, #7aae94 100%);
  box-shadow: inset -4px -6px 10px rgba(23, 83, 73, .2), 0 12px 18px -9px rgba(23, 83, 73, .35);
}
.u-kolaj .kure.k1 { width: 24px; height: 24px; left: 43%; top: 9%; }
.u-kolaj .kure.k2 { width: 13px; height: 13px; left: 1%; top: 33%; }
.u-kolaj .kure.k3 { width: 18px; height: 18px; right: 2%; top: 55%; }
@media (prefers-reduced-motion: no-preference) {
  .u-kolaj .parca, .u-kolaj .kure { animation: u-yuz 6.5s ease-in-out infinite; }
  .u-kolaj .parca.p2 { animation-delay: -1.6s; }
  .u-kolaj .parca.p3 { animation-delay: -3.2s; }
  .u-kolaj .parca.p4 { animation-delay: -4.4s; }
  .u-kolaj .parca.p5 { animation-delay: -5.6s; }
  .u-kolaj .kure.k1 { animation-delay: -1s; }
  .u-kolaj .kure.k2 { animation-delay: -2.4s; }
  .u-kolaj .kure.k3 { animation-delay: -3.8s; }
  .u-kolaj .parca { transition: box-shadow .2s ease, border-color .2s ease; }
}
@keyframes u-yuz { 0%, 100% { translate: 0 0; } 50% { translate: 0 -9px; } }

/* ---- hero grafiği: gezinilebilir dönem grafiği ---- */
.u-grafik { position: relative; margin-top: auto; max-width: 58%; width: 100%; }
.u-grafik svg.u-cizim { width: 100%; height: 182px; display: block; cursor: crosshair; touch-action: pan-y; }
.u-grafik .eksen { font-size: 9.5px; fill: var(--ink-3); font-family: var(--font-ui); font-weight: 600; }
.u-grafik .izgara { stroke: var(--hair); stroke-dasharray: 2 4; }
.u-grafik .u-alan { fill: url(#uAlanIyi); }
.u-grafik .u-cizgi { fill: none; stroke: var(--iyi); stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.u-grafik .u-nokta { fill: var(--surface); stroke: var(--iyi); stroke-width: 2.2; }
.u-grafik .u-kilavuz { stroke: var(--eylem); stroke-width: 1.2; stroke-dasharray: 3 3; opacity: .45; }
.u-grafik .u-secim-nokta { fill: var(--eylem); stroke: var(--surface); stroke-width: 2.4; }
@media (prefers-reduced-motion: no-preference) {
  .u-grafik .u-kilavuz, .u-grafik .u-secim-nokta { transition: cx .16s ease, cy .16s ease, x1 .16s ease, x2 .16s ease; }
}
/* okuma satırı sabit yerde durur — seçim değişince rakam yer değiştirmez */
.u-grafik-alt { display: flex; align-items: center; gap: 6px 8px; margin-top: 4px; flex-wrap: wrap; }
/* okuma tek satırda kalır: daralınca metin bölünmesin, "ayı aç" düğmesi
   alt satıra düşsün (rakamın "5,76 Mn / ₺" diye kırılması okumayı bozuyordu) */
.u-gz-grup { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; white-space: nowrap; }
.u-gz {
  width: 26px; height: 26px; flex: none; border-radius: 9px; border: 1px solid var(--hair);
  background: var(--surface); color: var(--ink-2); font-family: var(--font-ui); font-size: 14px;
  line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0;
}
.u-gz:hover:not([disabled]) { border-color: var(--eylem); color: var(--eylem); }
.u-gz[disabled] { opacity: .3; pointer-events: none; }
.u-gz-okuma { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-2); font-weight: 600; white-space: nowrap; }
.u-gz-okuma b { font-size: 12.5px; color: var(--ink-1); font-weight: 700; }
.u-gz-okuma .tut { font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--ink-1); letter-spacing: -.01em; }
.u-odak {
  margin-left: 2px; border: 1px solid var(--eylem); background: transparent; color: var(--eylem);
  border-radius: 999px; padding: 5px 12px; font-family: var(--font-ui); font-size: 11.5px;
  font-weight: 700; cursor: pointer; white-space: nowrap;
}
.u-odak:hover { background: var(--eylem); color: var(--hero-ters); }
.u-grafik-not { font-size: 10px; color: var(--ink-3); font-weight: 600; margin-top: 3px; }
@media (prefers-reduced-motion: no-preference) {
  .u-grafik .u-cizgi { stroke-dasharray: 1000; animation: u-ciz 1.1s ease forwards; }
}
@keyframes u-ciz { from { stroke-dashoffset: 1000; } to { stroke-dashoffset: 0; } }

/* --- sağ kolon: risk halkası · en güçlü segment · takip başlıkları --- */
.u-halka-govde { display: flex; align-items: center; gap: 13px; margin-top: 10px; }
.u-halka { width: 82px; height: 82px; flex: none; }
.u-halka circle { fill: none; stroke-width: 9; }
.u-halka .zemin { stroke: var(--surface-2); }
.u-halka .dilim { stroke-linecap: round; transition: stroke-dasharray .9s cubic-bezier(.2, .7, .3, 1); }
.u-halka-satirlar { display: flex; flex-direction: column; gap: 5px; flex: 1; min-width: 0; }
.u-hs {
  display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 650; color: var(--ink-2);
  background: none; border: none; padding: 2px 0; width: 100%; font-family: var(--font-ui);
  text-align: left; cursor: pointer; border-radius: 6px;
}
.u-hs:disabled { cursor: default; }
.u-hs i { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.u-hs b { margin-left: auto; color: var(--ink-1); font-weight: 750; font-variant-numeric: tabular-nums; }
.u-hs:not(:disabled):hover { color: var(--ink-1); }
.u-hs.aktif { color: var(--eylem); }
.u-kategori .u-rozet {
  font-size: 9.5px; font-weight: 800; letter-spacing: .05em; background: var(--eylem-soft);
  color: var(--eylem); border-radius: 999px; padding: 3px 9px; white-space: nowrap;
}
.u-kategori .u-deger { font-size: 23px; margin-top: 8px; }
.u-kategori .u-kategori-ad { font-size: 13px; font-weight: 650; color: var(--ink); margin-top: 6px; line-height: 1.3; }
.u-kategori .u-kategori-not { font-size: 10px; color: var(--ink-3); font-weight: 600; margin-top: 7px; line-height: 1.45; }
/* Kategori seçici — kartın içinde tam genişlik, tıklanabilirliği kendini
   söyleyen hap: adı büyük yazar, sağda chevron, dokunma alanı satır boyu.
   (Kart artık düğme değil; içindeki seçici tek etkileşim noktası.) */
.u-kategori .acilir { display: flex; margin-top: 10px; }
.u-kategori .acilir-btn {
  width: 100%; justify-content: space-between; gap: 8px;
  background: var(--surface-2); border-color: var(--hair);
  border-radius: 13px; padding: 9px 12px;
}
.u-kategori .acilir-btn .a-deger {
  font-size: 14.5px; font-weight: 700; color: var(--ink-1); letter-spacing: -.01em; max-width: none;
}
.u-kategori .acilir-btn .ik { width: 15px; height: 15px; color: var(--ink-2); }
.u-kategori .acilir-btn:hover { border-color: var(--eylem); background: var(--eylem-soft); }
.u-kategori .acilir-btn:hover .ik { color: var(--eylem); }
.u-kategori .acilir-panel { min-width: max(100%, 232px); }
/* araç çubuğundaki kaldırılabilir kategori çipi */
.u-cip.u-kat-cip { gap: 7px; }
.u-cip .u-cip-x { font-size: 11px; opacity: .7; margin-left: 1px; }
.u-cip.u-kat-cip:hover .u-cip-x { opacity: 1; }
/* seçili kategori: durum değişir, düzen değişmez (satır yüksekliği oynamaz) */
.u-stat.aktif { border-color: var(--eylem); box-shadow: 0 0 0 1px var(--eylem), var(--golge); }
.u-takip .u-tsatir {
  display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--hair);
  background: none; border-left: 0; border-right: 0; border-top: 0; width: 100%;
  font: inherit; font-family: var(--font-ui); text-align: left; color: inherit; cursor: pointer;
}
.u-takip .u-tsatir:last-child { border-bottom: none; }
.u-takip .u-tikon {
  width: 29px; height: 29px; border-radius: 9px; background: var(--surface-2); color: var(--eylem);
  display: grid; place-items: center; flex: none;
}
.u-takip .u-tikon .ik { width: 14px; height: 14px; }
.u-takip .u-tsatir b { font-size: 12.5px; font-weight: 650; flex: 1; min-width: 0; }
.u-takip .u-tsatir small { font-size: 11px; color: var(--ink-3); white-space: nowrap; font-variant-numeric: tabular-nums; }
.u-takip .u-tsatir:hover b { color: var(--eylem); }
.u-kart-bos { font-size: 12px; color: var(--ink-3); margin-top: 8px; line-height: 1.5; }

/* ============ ARAÇ ÇUBUĞU ============
   Üç kat: arama ORTADA tek başına (üç kolonlu ızgaranın ortası — sağdaki
   düğmeler ortalamayı bozmaz), durum süzgeçleri altında ortalanmış hap
   şeridi, nadir işler tek düğmenin açtığı sheet'te. */
.u-arac {
  /* orta kolon SABİT pay alır: auto olsaydı içeriğe büzülüp arama daralırdı */
  display: grid; grid-template-columns: 1fr minmax(0, 440px) 1fr;
  align-items: center; gap: 10px; margin: 18px 0 12px;
}
.u-arac-sol { min-width: 0; }
.u-arac-sag { justify-self: end; display: flex; align-items: center; gap: 7px; }
/* nadir işler düğmesi — etkin bir ayar varsa noktayla imler */
.u-daha {
  position: relative; width: 38px; height: 38px; flex: none; border-radius: 999px;
  border: 1px solid var(--hair); background: var(--surface); box-shadow: var(--golge);
  color: var(--ink-2); cursor: pointer; display: grid; place-items: center;
}
.u-daha .ik { width: 16px; height: 16px; }
.u-daha:hover { border-color: var(--hair-2); color: var(--ink-1); }
.u-daha.aktif { border-color: var(--eylem); color: var(--eylem); }
.u-daha.aktif::after {
  content: ""; position: absolute; top: 7px; right: 7px; width: 7px; height: 7px;
  border-radius: 50%; background: var(--marka); border: 1.5px solid var(--surface);
}
/* durum şeridi — ortalanmış, kendi satırında */
.u-cipler { display: flex; justify-content: center; align-items: center; gap: 7px; flex-wrap: wrap; margin: 0 0 14px; }
.u-ara-kap {
  display: flex; align-items: center; gap: 9px; background: var(--surface); border: 1px solid var(--hair);
  border-radius: 999px; padding: 11px 18px; width: 100%; justify-self: center;
  box-shadow: var(--golge);
}
.u-ara-kap input { font-size: 13.5px; }
.u-ara-kap:focus-within { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }
.u-ara-kap .ik { width: 15px; height: 15px; color: var(--ink-3); flex: none; }
.u-ara-kap input {
  border: none; outline: none; background: none; font: inherit; font-family: var(--font-ui);
  font-size: 13px; color: var(--ink-1); width: 100%; min-width: 0;
}
.u-ara-kap input::placeholder { color: var(--ink-3); }
.u-cip {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--hair); background: var(--surface);
  border-radius: 999px; padding: 8px 14px; font-family: var(--font-ui); font-weight: 650; font-size: 12.5px;
  color: var(--ink-2); cursor: pointer; white-space: nowrap; box-shadow: var(--golge);
}
.u-cip .ik { width: 14px; height: 14px; }
.u-cip:hover { border-color: var(--hair-2); }
.u-cip b { font-size: 11px; font-weight: 750; font-variant-numeric: tabular-nums; }
.u-cip.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--page); }
.u-cip.aktif b { color: color-mix(in srgb, var(--page) 62%, transparent) !important; }
.u-cip[data-urun-filtre="riskli"] b, .u-cip[data-urun-filtre="zarar"] b { color: var(--risk-metin); }
.u-cip[data-urun-filtre="izle"] b, .u-cip[data-urun-filtre="stok"] b { color: var(--dikkat-metin); }
.u-cip[data-urun-filtre="firsat"] b { color: var(--iyi-metin); }
/* Excel ile aktar görünür kalan tek veri düğmesi — çiplerle aynı hap dili */
.u-arac-sag .btn.sec.kucuk {
  background: var(--surface); border-color: var(--hair); box-shadow: var(--golge);
  font-size: 12.5px; font-weight: 650; padding: 9px 15px; color: var(--ink-2); white-space: nowrap;
}
.u-arac-sag .btn.sec.kucuk:hover { border-color: var(--eylem); color: var(--eylem); }
.u-arac-sag .btn.sec.kucuk .ik { width: 15px; height: 15px; }

/* ============ ÜRÜN TABLOSU ============ */
.u-tablo {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 6px 16px 12px;
}
.u-bas, .u-satir {
  display: grid;
  grid-template-columns: 46px minmax(150px, 1.6fr) 84px 74px 98px 66px 60px 82px 62px 58px 16px;
  gap: 10px; align-items: center;
}
.u-bas {
  padding: 10px 2px 8px; border-bottom: 1px solid var(--hair);
  font-size: 10px; font-weight: 750; letter-spacing: .06em; color: var(--ink-3); text-transform: uppercase;
}
.u-bas .sag { justify-self: end; }
.u-bas button {
  border: none; background: none; font: inherit; font-family: var(--font-ui); color: inherit;
  cursor: pointer; display: inline-flex; align-items: center; gap: 3px; padding: 0; letter-spacing: inherit;
}
.u-bas button:hover { color: var(--ink-2); }
.u-bas button.aktif { color: var(--eylem); }
.u-bas button .yon { font-size: 9px; }
.u-satir {
  padding: 9px 2px; border-bottom: 1px solid var(--hair); cursor: pointer;
  background: none; border-left: 0; border-right: 0; border-top: 0; width: 100%;
  font: inherit; font-family: var(--font-ui); text-align: left; color: inherit;
  position: relative; transition: background .14s;
}
.u-satir:hover { background: var(--surface-2); }
.u-satir:last-of-type { border-bottom: none; }
.u-satir .foto { width: 44px; height: 44px; flex: none; }
.u-satir .foto img.urun-thumb, .u-satir .foto .thumb-yok { border-radius: 11px; }
.u-satir .ad { min-width: 0; }
.u-satir .ad b {
  display: -webkit-box; font-size: 12.5px; font-weight: 650; line-height: 1.35;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.u-satir .ad small { display: block; font-size: 10.5px; color: var(--ink-3); margin-top: 2px; font-weight: 600; }
.u-satir .ad .v-etiket { font-weight: 750; color: var(--eylem); }
.u-satir .n { font-size: 12.5px; font-weight: 620; white-space: nowrap; font-variant-numeric: tabular-nums; justify-self: end; }
.u-satir .n.kalin { font-weight: 750; font-size: 13px; }
.u-satir .n.neg { color: var(--risk-metin); font-weight: 700; }
.u-satir .n.poz { color: var(--iyi-metin); font-weight: 700; }
.u-satir .n.puan { font-weight: 700; color: var(--iyi-metin); }
.u-satir .n.puan.orta { color: var(--dikkat-metin); }
.u-satir .n.soluk { color: var(--ink-3); font-weight: 600; }
.u-satir .trend { min-width: 0; }
.u-satir .trend .mini-spark { width: 100%; height: 22px; }
.u-satir .ok { color: var(--ink-3); font-size: 15px; justify-self: end; }
.u-satir .u-cep-meta { display: none; }
.u-durum {
  display: inline-flex; justify-self: start; font-size: 10px; font-weight: 750; letter-spacing: .02em;
  border-radius: 7px; padding: 3.5px 8px; white-space: nowrap;
}
.u-durum.d-stabil { background: var(--notr-soft); color: var(--ink-2); }
.u-durum.d-firsat { background: var(--iyi-soft); color: var(--iyi-metin); }
.u-durum.d-izle { background: var(--dikkat-soft); color: var(--dikkat-metin); }
.u-durum.d-riskli { background: var(--risk-soft); color: var(--risk-metin); }
/* Satmıyor: ilan açık, dönemde satış yok. Uyarı değil TESPİT — sessiz gri. */
.u-durum.d-satmiyor { background: transparent; color: var(--ink-3); box-shadow: inset 0 0 0 1px var(--hair-2); }
/* Bir modele bağlanamamış mağaza ilanları şeridi (listenin hemen üstünde) */
.u-ilan-uyari {
  display: flex; align-items: center; gap: 9px; margin: 8px 0 2px; padding: 9px 12px;
  border: 1px solid var(--hair-2); border-radius: var(--r-s); background: var(--notr-soft);
  font-size: 12px; color: var(--ink-2); line-height: 1.45;
}
.u-ilan-uyari svg { flex: 0 0 auto; width: 15px; height: 15px; color: var(--dikkat-metin); }
.u-ilan-uyari span { min-width: 0; }
.u-ilan-uyari .btn { flex: 0 0 auto; margin-left: auto; }
.u-bos {
  border: 1px dashed var(--hair-2); border-radius: var(--r-s); padding: 22px; text-align: center;
  color: var(--ink-2); font-size: 12.5px; margin: 10px 0 4px; line-height: 1.6;
}
.u-alt-bar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.u-sayim { font-size: 11.5px; color: var(--ink-3); font-weight: 600; font-variant-numeric: tabular-nums; }
.u-sayfalar { display: flex; gap: 4px; flex-wrap: wrap; }
.u-sayfalar button {
  min-width: 30px; height: 30px; padding: 0 8px; border-radius: 9px; border: 1px solid var(--hair);
  background: var(--surface); font-family: var(--font-ui); font-size: 12px; font-weight: 650;
  color: var(--ink-2); cursor: pointer;
}
.u-sayfalar button:hover:not([disabled]) { border-color: var(--hair-2); color: var(--ink-1); }
.u-sayfalar button.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--page); }
.u-sayfalar button[disabled] { opacity: .35; pointer-events: none; }
.u-sayfalar .u-bosluk { align-self: center; color: var(--ink-3); font-size: 12px; padding: 0 2px; }

/* --- geniş tablet: hero tam satır, kolonlar iki yana --- */
@media (max-width: 1180px) {
  .u-ust { grid-template-columns: 1fr 1fr; }
  .u-hero { grid-column: 1 / -1; order: -1; min-height: 0; }
  .u-hero .u-kolaj {
    position: static; width: auto; display: flex; justify-content: flex-end; gap: 10px; margin: 10px 0 2px;
  }
  /* position:relative kalmalı — görsel inset'i parçaya göre konumlanır.
     Satış sırası burada da boyutla okunur: kutular tabana hizalı küçülür */
  .u-kolaj { align-items: flex-end; }
  .u-kolaj .parca { position: relative; inset: auto; border-radius: 15px; transform: none; box-shadow: 0 14px 24px -14px rgba(24, 36, 32, .3); }
  .u-kolaj .parca.p1 { width: 68px; height: 68px; }
  .u-kolaj .parca.p2 { width: 61px; height: 61px; }
  .u-kolaj .parca.p3 { width: 55px; height: 55px; }
  .u-kolaj .parca.p4 { width: 49px; height: 49px; }
  .u-kolaj .parca.p5 { width: 43px; height: 43px; }
  .u-kolaj .parca img { inset: 5px; width: calc(100% - 10px); height: calc(100% - 10px); border-radius: 10px; }
  .u-kolaj .kure, .u-kolaj .kavis { display: none; }
  .u-grafik { max-width: none; }
  .u-sol { flex-direction: row; }
  .u-sol .u-stat { flex: 1 1 0; }
}
/* --- mobil: hero + tek satır kompakt göstergeler + tek kolon kartlar --- */
@media (max-width: 900px) {
  .u-ust { grid-template-columns: 1fr; gap: 10px; }
  .u-sol { gap: 8px; }
  .u-sol .u-stat { padding: 11px 12px; }
  .u-sol .u-stat .u-deger { font-size: 22px; }
  .u-sol .u-stat .u-dip, .u-sol .u-stat .u-oran-lej { display: none; }
  .u-sol .u-stat .u-not { font-size: 10px; }
  .u-hero { padding: 18px 18px 16px; }
  .u-hero-yazi { max-width: none; }
  .u-grafik svg.u-cizim { height: 140px; }
}
@media (max-width: 720px) {
  .u-tablo { padding: 4px 12px 10px; border-radius: var(--r-s); }
  .u-bas, .u-satir { grid-template-columns: 40px minmax(0, 1fr) auto 14px; gap: 9px; }
  .u-bas .gizle, .u-satir .gizle { display: none; }
  .u-satir { padding: 11px 2px; }
  .u-satir .foto { width: 40px; height: 40px; }
  .u-satir .foto img.urun-thumb, .u-satir .foto .thumb-yok { width: 40px !important; height: 40px !important; }
  /* durum + iki kilit metrik satır içine iner (kolon yerine metin) */
  .u-satir .u-cep-meta {
    display: flex; gap: 6px; align-items: center; flex-wrap: wrap;
    font-size: 10.5px; font-weight: 650; color: var(--ink-3); margin-top: 4px;
  }
  .u-satir .u-cep-meta .nk { width: 7px; height: 7px; border-radius: 50%; flex: none; }
  .u-satir .u-cep-meta .d-riskli { background: var(--risk); }
  .u-satir .u-cep-meta .d-izle { background: var(--dikkat); }
  .u-satir .u-cep-meta .d-firsat { background: var(--iyi); }
  .u-satir .u-cep-meta .d-satmiyor { background: var(--ink-3); }
  .u-satir .u-cep-meta .d-stabil { background: var(--hair-2); }
  .u-satir .u-cep-meta em { font-style: normal; color: var(--risk-metin); }
  .u-arac { grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin: 14px 0 10px; }
  .u-arac-sol { display: none; }
  .u-ara-kap { width: 100%; padding: 10px 14px; }
  /* dar ekranda Excel düğmesi ikona iner (etiket yerine ipucu) */
  .u-arac-sag .btn.sec.kucuk { padding: 9px 11px; font-size: 0; gap: 0; }
  .u-arac-sag .btn.sec.kucuk .ik { width: 17px; height: 17px; }
  .u-cipler { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -14px 12px; padding: 0 14px 2px; }
  .u-cipler::-webkit-scrollbar { display: none; }
  .u-cipler .u-cip { flex: none; }
  .u-alt-bar { justify-content: center; }
}

/* ================= ÜRÜN DETAY — KARAR DOSYASI ================= */
.geri-btn { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 650; color: var(--ink-2); margin: 6px 0 12px; cursor: pointer; background: none; border: none; padding: 4px 0; letter-spacing: .01em; }
.geri-btn:hover { color: var(--eylem); }

.detay-baslik { display: flex; gap: 18px; align-items: flex-start; }
.detay-baslik .gorsel-blok { flex-shrink: 0; max-width: 118px; }
.detay-baslik .buyuk-gorsel { width: 108px; height: 108px; border-radius: 14px; object-fit: cover; border: 1px solid var(--hair); background: var(--surface-2); cursor: zoom-in; }
/* galeri: tüm görseller, yatay kaydırılabilir, dokununca büyür */
.galeri { display: flex; gap: 5px; margin-top: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; padding-bottom: 3px; scroll-snap-type: x proximity; }
.galeri img { width: 32px; height: 32px; border-radius: 7px; object-fit: cover; border: 1px solid var(--hair); flex-shrink: 0; cursor: zoom-in; scroll-snap-align: start; }
.galeri img:hover { border-color: var(--eylem); }
.detay-baslik .bilgi { flex: 1; min-width: 0; }
.detay-baslik h1 {
  font-size: 18px; font-weight: 720; line-height: 1.32; margin: 0 0 7px; letter-spacing: -0.016em;
}
.detay-baslik .meta { font-size: 11.5px; color: var(--ink-3); font-weight: 550; display: flex; gap: 5px 12px; flex-wrap: wrap; margin-bottom: 9px; letter-spacing: .02em; }
@media (max-width: 560px) {
  .detay-baslik { gap: 13px; }
  .detay-baslik .buyuk-gorsel { width: 74px; height: 74px; }
  .detay-baslik h1 { font-size: 16px; }
}

.detay-kpi { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 0; margin: 16px 0; border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); }
@media (max-width: 560px) { .detay-kpi { grid-template-columns: repeat(3, 1fr); } }
.detay-kpi .tile { padding: 11px 13px 10px; }
.detay-kpi .tile .deger { font-size: 16.5px; }
@media (max-width: 560px) {
  .detay-kpi .tile { border-left: 1px solid var(--hair); padding-left: 13px; }
  .detay-kpi .tile:nth-child(3n+1) { border-left: none; padding-left: 2px; }
  .detay-kpi .tile:nth-child(n+4) { border-top: 1px solid var(--hair); }
}

.karo-grid { columns: 2; column-gap: 14px; margin-top: 4px; }
.karo-grid > .card { break-inside: avoid; -webkit-column-break-inside: avoid; display: inline-block; width: 100%; margin: 0 0 14px; }
@media (max-width: 820px) { .karo-grid { columns: 1; } }
.karo h3 {
  font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2);
  margin: 0 0 12px; display: flex; align-items: center; gap: 7px;
}
.karo h3 .ik { color: var(--ink-3); width: 15px; height: 15px; }
.karo h3 .rozet { margin-left: auto; text-transform: none; letter-spacing: .03em; }

.fin-tablo { width: 100%; border-collapse: collapse; font-size: 13px; }
.fin-tablo td { padding: 5px 0; vertical-align: top; }
.fin-tablo td:last-child { text-align: right; white-space: nowrap; font-weight: 600; }
.fin-tablo tr.toplam td { border-top: 1px solid var(--ink-1); font-weight: 700; padding-top: 8px; }
.fin-tablo .eksi { color: var(--ink-2); padding-left: 12px; }

/* başa baş kartı: karar dosyasının koyu vurgu paneli — kadranla birlikte */
.tavan-kutu {
  margin-top: 14px; padding: 16px 18px 14px; border-radius: 16px;
  background: var(--hero-zemin); color: var(--hero-ink); box-shadow: var(--hero-golge);
  position: relative; overflow: hidden;
}
.tavan-kutu::after { content: ""; position: absolute; top: -60px; right: -50px; width: 190px; height: 190px; background: radial-gradient(closest-side, rgba(255,255,255,.13), transparent 70%); pointer-events: none; }
.tavan-kutu.kirmizi { background: linear-gradient(140deg, #571f18 0%, #7c2b20 60%, #93382a 100%); }
.tavan-kutu .t-govde { display: flex; gap: 14px; align-items: center; justify-content: space-between; position: relative; z-index: 1; }
.tavan-kutu .t-sol { min-width: 0; flex: 1; }
.tavan-kutu .t-sag { flex-shrink: 0; }
.tavan-kutu .t-etiket { font-size: 10px; font-weight: 750; color: var(--hero-ink-2); letter-spacing: 0.1em; text-transform: uppercase; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tavan-kutu .t-etiket .guven { color: var(--hero-ink-2); }
.tavan-kutu .t-etiket .guven .g-noktalar i { background: rgba(255,255,255,.22); }
.tavan-kutu .t-etiket .guven.g3 .g-noktalar i, .tavan-kutu .t-etiket .guven.g2 .g-noktalar i:nth-child(-n+2), .tavan-kutu .t-etiket .guven.g1 .g-noktalar i:first-child { background: var(--hero-ink); }
.tavan-kutu .t-deger {
  font-size: 31px; font-weight: 780; letter-spacing: -0.03em; margin: 6px 0 4px; line-height: 1.08;
  font-variant-numeric: tabular-nums;
}
.tavan-kutu .t-deger.neg { color: #ffb4a6; }
.tavan-kutu .t-not { font-size: 11px; color: var(--hero-ink-2); line-height: 1.55; max-width: 420px; }
.tavan-kutu .t-not b { color: var(--hero-ink); }
.tavan-kutu .gauge .g-zemin { stroke: rgba(255, 255, 255, .15); }
.tavan-kutu .gauge .g-merkez { color: var(--hero-ink); }
.tavan-kutu .gauge .g-etiket { color: var(--hero-ink-2); }
.tavan-kutu .gauge .g-etiket span { color: var(--hero-ink-2); }
.tavan-kutu .gauge.iyi .g-deger { stroke: #7be3c3; }
.tavan-kutu .gauge.orta .g-deger { stroke: #f2ce7a; }
.tavan-kutu .gauge.kotu .g-deger { stroke: #ff9d8d; }
@media (max-width: 460px) { .tavan-kutu .t-govde { flex-direction: column; align-items: flex-start; } }

.maliyet-alan { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 14px; padding: 12px 14px; border: 1px dashed var(--hair-2); border-radius: 10px; }
.maliyet-alan label { font-size: 12px; font-weight: 650; color: var(--ink-2); }
.maliyet-alan input {
  width: 120px; font-size: 15px; font-weight: 650; padding: 8px 12px; font-family: var(--font-ui);
  border: 1px solid var(--hair-2); border-radius: 9px; background: var(--surface); color: var(--ink-1); outline: none;
}
.maliyet-alan input:focus { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }

.sonuc-kutu { font-size: 13px; font-weight: 550; padding: 12px 15px; border-radius: 10px; margin-top: 10px; line-height: 1.55; border: 1px solid transparent; }
.sonuc-kutu b { font-weight: 700; }
.sonuc-kutu.kar { background: var(--iyi-soft); color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 25%, transparent); }
.sonuc-kutu.zarar { background: var(--risk-soft); color: var(--risk-metin); border-color: color-mix(in srgb, var(--risk) 25%, transparent); }
.sonuc-kutu.uyari { background: var(--dikkat-soft); color: var(--dikkat-metin); border-color: color-mix(in srgb, var(--dikkat) 30%, transparent); }

.sparkline { width: 100%; height: 60px; margin-top: 4px; }
.sparkline path.cizgi { fill: none; stroke: var(--eylem); stroke-width: 1.8; }
.sparkline path.dolgu { fill: color-mix(in srgb, var(--eylem) 10%, transparent); stroke: none; }

.alinti {
  font-family: var(--font-display); font-variation-settings: 'opsz' 24;
  font-size: 13px; color: var(--ink-2); border-left: 2px solid var(--marka);
  padding: 2px 0 2px 12px; margin: 10px 0; line-height: 1.6;
}

.puan-dagilim { display: flex; flex-direction: column; gap: 3px; margin: 8px 0; }

/* ürün kararları listesi (detay) */
.dk-karar { display: flex; gap: 11px; align-items: flex-start; padding: 10px 0; border-bottom: 1px solid var(--hair); }
.dk-karar:last-child { border-bottom: none; }
.dk-karar .rozet { margin-top: 2px; flex-shrink: 0; }
.dk-karar b { font-size: 13.5px; font-weight: 650; letter-spacing: -0.005em; }
.dk-karar .g { font-size: 12.5px; color: var(--ink-2); line-height: 1.55; margin-top: 2px; }

/* MercanWorks çözüm bölümü — tek marka anı */
.hizmet-kart {
  display: flex; gap: 13px; align-items: flex-start; padding: 13px 0; margin: 0;
  border: none; border-top: 1px solid color-mix(in srgb, var(--marka) 18%, var(--hair));
  background: transparent; border-radius: 0;
}
.hizmet-kart:first-of-type { border-top: none; padding-top: 4px; }
.hizmet-kart .h-ikon {
  width: 34px; height: 34px; border-radius: 9px; background: var(--marka-soft); color: var(--marka);
  display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0;
}
.hizmet-kart .h-ikon .ik { width: 17px; height: 17px; }
.hizmet-kart .h-ic { flex: 1; min-width: 0; }
.hizmet-kart .h-ad { font-size: 13.5px; font-weight: 650; letter-spacing: -0.005em; }
.hizmet-kart .h-neden { font-size: 12px; color: var(--ink-2); margin: 3px 0 7px; line-height: 1.55; }
.hizmet-kart .h-link { font-size: 12px; font-weight: 700; color: var(--marka); letter-spacing: .01em; }
.hizmet-kart .h-link:hover { color: var(--ink-1); }
.mw-kutu { border: 1px solid color-mix(in srgb, var(--marka) 26%, var(--hair)); background: color-mix(in srgb, var(--marka) 3%, var(--surface)); }
.mw-baslik { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--marka); margin-bottom: 4px; }
.mw-alt { font-size: 12px; color: var(--ink-2); margin-bottom: 10px; line-height: 1.55; max-width: 560px; }

/* ================= YORUMLAR — MÜŞTERİ SESİ =================
   Kokpit Portföy'ün .u-ust ızgarasını ve .u-stat kartlarını kullanır; buradaki
   kurallar yalnız sayfaya özgü parçalar içindir: hero'daki şikâyet kaynağı
   barları, yıldız dağılımı ve yorum kartı. Mobil ayrı bir düzen değil, aynı
   bileşenlerin dar ekran davranışıdır (kaynak barı zaten iki satırlı, yıldız
   satırları zaten tek sütun). */

/* --- HERO: şikâyetin kaynağı --- */
/* u-hero'nun serif büyük rakamı ve etiketi ortaktır; kaynak listesi kartın
   alt yarısını doldurur (min-height 412px'i boş bırakmasın). */
.y-hero .u-etiket span { color: var(--hero-ink-2); font-weight: 600; }
.y-hero .u-etiket span::before { content: "·"; margin-right: 7px; opacity: .7; }
.y-kaynak-bas {
  display: flex; align-items: baseline; gap: 9px; margin-top: auto; padding: 0 8px 8px;
  font-size: 10px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--hero-ink-2);
  border-bottom: 1px solid var(--hero-cizgi);
}
.y-kaynak-bas span { margin-left: auto; font-size: 9.5px; font-weight: 650; letter-spacing: .04em; text-transform: none; opacity: .8; }
.y-kaynaklar { display: flex; flex-direction: column; gap: 6px; margin-top: 12px; }
.y-kaynak {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; width: 100%;
  background: none; border: none; padding: 5px 8px; border-radius: 10px; cursor: pointer;
  font: inherit; font-family: var(--font-ui); color: inherit; text-align: left;
  transition: background .14s;
}
.y-kaynak:hover { background: rgba(23, 83, 73, .07); }
.y-kaynak .yk-ad {
  display: flex; align-items: center; gap: 8px; min-width: 0;
  font-size: 12.5px; font-weight: 650; color: var(--hero-ink);
}
.y-kaynak .yk-ad .ik { width: 15px; height: 15px; color: var(--hero-ink-2); flex: none; }
.y-kaynak .yk-ad span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.y-kaynak .yk-n { font-size: 12.5px; font-weight: 780; color: var(--hero-ink); font-variant-numeric: tabular-nums; }
.y-kaynak .yk-kanal { grid-column: 1 / -1; height: 6px; border-radius: 4px; background: rgba(23, 83, 73, .10); overflow: hidden; }
.y-kaynak .yk-kanal i { display: block; height: 100%; border-radius: 4px; background: var(--akis-1); transition: width .5s cubic-bezier(.2, .7, .3, 1); }
/* tek koyu vurgu: en büyük kaynak marka renginde, gerisi sakin yeşil */
.y-kaynak.bas .yk-kanal i { background: var(--marka); }
.y-kaynak.aktif { background: var(--hero-ink); }
.y-kaynak.aktif .yk-ad, .y-kaynak.aktif .yk-n { color: var(--hero-ters); }
.y-kaynak.aktif .yk-ad .ik { color: rgba(255, 255, 255, .7); }
.y-kaynak.aktif .yk-kanal { background: rgba(255, 255, 255, .18); }
.y-kaynak.aktif .yk-kanal i { background: var(--hero-ters); }
.y-kaynak-bos {
  display: flex; align-items: center; gap: 9px; margin-top: 16px; padding: 14px 16px;
  border: 1px dashed var(--hero-cizgi); border-radius: 12px;
  font-size: 12.5px; color: var(--hero-ink-2); line-height: 1.5;
}
.y-kaynak-bos .ik { width: 18px; height: 18px; flex: none; color: var(--iyi); }

/* --- MÜŞTERİ PUANI: halka + yıldız dağılımı (her satır puan süzgeci) --- */
.y-puan-govde { display: flex; align-items: center; gap: 14px; margin-top: 12px; }
.y-halka-kap { position: relative; width: 84px; height: 84px; flex: none; }
.y-halka-kap .u-halka { width: 84px; height: 84px; }
.y-halka-deger {
  position: absolute; inset: 0; display: grid; place-items: center;
  font-family: var(--font-display); font-size: 21px; font-weight: 600; letter-spacing: -.02em;
}
.y-yildiz-satirlar { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.y-ysatir {
  display: grid; grid-template-columns: 26px minmax(0, 1fr) 40px; align-items: center; gap: 8px;
  background: none; border: none; padding: 3px 4px; border-radius: 7px; cursor: pointer;
  font: inherit; font-family: var(--font-ui); color: inherit; text-align: left;
}
.y-ysatir:hover { background: var(--surface-2); }
.y-ysatir.aktif { background: var(--eylem-soft); }
.y-ysatir .ys-p { font-size: 11px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.y-ysatir .ys-p i { font-style: normal; color: var(--dikkat); margin-left: 1px; }
.y-ysatir .ys-kanal { height: 6px; border-radius: 4px; background: var(--surface-2); overflow: hidden; }
.y-ysatir .ys-kanal i { display: block; height: 100%; border-radius: 4px; background: var(--iyi); transition: width .5s cubic-bezier(.2, .7, .3, 1); }
.y-ysatir.orta .ys-kanal i { background: var(--dikkat); }
.y-ysatir.dusuk .ys-kanal i { background: var(--risk); }
.y-ysatir .ys-n { font-size: 11px; font-weight: 700; color: var(--ink-3); text-align: right; font-variant-numeric: tabular-nums; }
.y-ysatir.aktif .ys-n, .y-ysatir.aktif .ys-p { color: var(--eylem); }

/* --- ŞİKÂYET YOĞUN ÜRÜNLER / SEÇİLİ ÜRÜN --- */
.y-urun-kart .u-tsatir { align-items: center; padding: 8px 0; }
.y-urun-kart .u-tikon { width: 32px; height: 32px; padding: 0; background: var(--surface-2); overflow: hidden; }
.y-urun-kart .u-tikon img.urun-thumb, .y-urun-kart .u-tikon .thumb-yok { border-radius: 9px; }
/* ad iki satırda kırpılır — uzun Trendyol başlıkları satırı üç kata çıkarıp
   kartı taşırıyordu; sayı adın ALTINDA durur, yan yana sıkışmaz */
.y-urun-kart .y-uyazi { flex: 1; min-width: 0; }
.y-urun-kart .y-uyazi b {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  font-size: 12px; font-weight: 650; line-height: 1.33; letter-spacing: -.004em;
}
.y-urun-kart .y-uyazi small {
  display: block; font-size: 10.5px; color: var(--ink-3); font-weight: 650; margin-top: 3px;
  font-variant-numeric: tabular-nums; white-space: normal;
}
.y-urun-kart .y-uyazi small em { font-style: normal; font-weight: 780; color: var(--risk-metin); }
.y-urun-kart .u-tsatir.aktif b, .y-urun-kart .u-tsatir:hover b { color: var(--eylem); }
.y-kapsam-x {
  border: none; background: none; font: inherit; font-family: var(--font-ui); cursor: pointer;
  font-size: 10.5px; font-weight: 700; color: var(--ink-3); letter-spacing: .02em; padding: 0;
}
.y-kapsam-x:hover { color: var(--risk-metin); }
.y-secili { display: flex; gap: 11px; align-items: center; margin-top: 12px; }
.y-secili-foto { flex: none; }
.y-secili-foto img.urun-thumb, .y-secili-foto .thumb-yok { border-radius: 12px; }
.y-secili-yazi { min-width: 0; }
.y-secili-yazi b { display: block; font-size: 13px; font-weight: 680; line-height: 1.35; letter-spacing: -.008em; }
.y-secili-yazi small { display: block; font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-top: 3px; }
.btn.sec.kucuk.tam { display: flex; width: 100%; justify-content: center; }

/* --- AKTİF SÜZGEÇ SATIRI --- */
/* Durum çipleri dar ekranda yatay kaydırılan bir şerittir; aktif süzgeç onun
   sonuna düşseydi görünmezdi. Bu satır her zaman sarar ve göz hizasında kalır. */
.u-cipler.y-aktif-cipler {
  flex-wrap: wrap; overflow: visible; justify-content: center;
  gap: 7px; margin: -4px 0 14px; padding: 0;
}
.y-aktif-bas { font-size: 9.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.y-temizle {
  border: none; background: none; font: inherit; font-family: var(--font-ui); cursor: pointer;
  font-size: 11.5px; font-weight: 700; color: var(--ink-3); text-decoration: underline;
  text-underline-offset: 3px; padding: 4px 2px;
}
.y-temizle:hover { color: var(--risk-metin); }

/* --- SONUÇ BAŞLIĞI + LİSTE --- */
.y-sonuc-bas {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  font-size: 12.5px; font-weight: 620; color: var(--ink-2); margin: 2px 2px 10px;
}
.y-sonuc-bas b { font-size: 15px; font-weight: 780; color: var(--ink-1); font-variant-numeric: tabular-nums; }
.y-sonuc-bas span { font-size: 11px; color: var(--ink-3); font-weight: 600; }
.y-sonuc-bas span::before { content: "·"; margin-right: 7px; }
.y-liste { display: flex; flex-direction: column; gap: 10px; }

/* --- YORUM KARTI --- */
/* Üst satır esnek sarmalıdır: dar ekranda yıldızlar kendi satırına iner,
   ayrı bir mobil düzeni gerekmez. */
.yorum-kart { padding: 14px 16px; }
/* yalnız sayfa listesindeki kart tıklanabilir (ürünün yorum analizini açar);
   panel içindeki kartlarda data-yorum-ac yok. Metin seçilebilir kalır — açılış
   seçim varken atlanır (app.js). */
.yorum-kart[data-yorum-ac] { cursor: pointer; }
.yorum-kart[data-yorum-ac]:hover { border-color: var(--hair-2); }
.yorum-kart[data-yorum-ac]:focus-visible { outline: 2px solid var(--eylem); outline-offset: 2px; }
.yorum-ust { display: flex; gap: 11px; align-items: center; flex-wrap: wrap; margin-bottom: 9px; }
.yorum-ust .y-foto { flex: none; }
.yorum-ust .y-foto img.urun-thumb, .yorum-ust .y-foto .thumb-yok { border-radius: 11px; }
.yorum-ust .y-bilgi { flex: 1 1 190px; min-width: 0; }
/* başlık kendisi düğme DEĞİL: kartın tamamı zaten pencereyi açıyor (ayrı bir
   düğme olsaydı panel içindeki kartlarda açık paneli yeniden açardı) */
.yorum-ust .y-model {
  display: block; max-width: 100%; font-size: 12.5px; font-weight: 660; color: var(--ink-1);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: -.006em;
}
.yorum-ust .y-model:hover { color: var(--eylem); }
.y-meta { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-top: 4px; }
.y-mkod {
  display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--hair);
  background: var(--surface-2); color: var(--ink-2); border-radius: 999px; padding: 2.5px 9px;
  font: inherit; font-family: var(--font-ui); font-size: 10.5px; font-weight: 700;
  letter-spacing: .02em; cursor: pointer; white-space: nowrap;
}
.y-mkod .ik { width: 11px; height: 11px; color: var(--ink-3); }
.y-mkod:hover { border-color: var(--eylem); color: var(--eylem); background: var(--eylem-soft); }
.y-mkod:hover .ik { color: var(--eylem); }
.y-tarih { font-size: 10.5px; color: var(--ink-3); font-weight: 600; letter-spacing: .02em; }
.yorum-metin {
  font-family: var(--font-display); font-variation-settings: 'opsz' 22;
  font-size: 13.5px; line-height: 1.62; color: var(--ink-1); word-break: break-word;
}
.yorum-metin .vurgu { background: color-mix(in srgb, var(--dikkat) 26%, transparent); border-radius: 3px; padding: 0 3px; box-decoration-break: clone; -webkit-box-decoration-break: clone; }
.y-metinsiz { color: var(--ink-3); font-family: var(--font-ui); font-size: 12.5px; font-style: italic; }
.yorum-rozetler { display: flex; gap: 5px; flex-wrap: wrap; margin-top: 9px; }
/* sorumlu operasyon rozeti aynı zamanda süzgeç düğmesidir (sayfanın dili) */
.rozet.y-kaynak-rozet {
  cursor: pointer; font-family: var(--font-ui); gap: 5px;
  color: var(--eylem); border-color: color-mix(in srgb, var(--eylem) 34%, transparent);
  background: color-mix(in srgb, var(--eylem-soft) 70%, transparent);
}
.rozet.y-kaynak-rozet::before { display: none; }
.rozet.y-kaynak-rozet .ik { width: 12px; height: 12px; }
.rozet.y-kaynak-rozet:hover { background: var(--eylem); color: var(--hero-ters); border-color: var(--eylem); }
.yorum-alt {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; color: var(--ink-3); margin-top: 8px; font-weight: 600; letter-spacing: .01em;
}
.yorum-alt .ik { width: 13px; height: 13px; }
.yorum-alt b { color: var(--ink-2); font-weight: 720; }
.yorum-kart.sorunlu-cerceve { border-left: 3px solid var(--serious); }
.yorum-kart.guvenlik-cerceve { border-left: 3px solid var(--risk); }
.yorum-kart.celiski-cerceve { border-left: 3px solid var(--dikkat); }

/* --- ÜRÜN YORUM PANELİ (müfettiş katmanı) ---
   Yorum kartındaki büyüteç ve şikâyet yoğun ürünler satırı buradan açılır:
   masaüstünde sağ panel, mobilde alt sheet. Bileşenler sayfanın kendisiyle
   aynı — kaynak barları, yıldız satırları, yorum kartı. */
.y-panel { position: relative; }
.y-p-x { position: absolute; top: -2px; right: 0; z-index: 2; }
.y-p-bas { display: flex; gap: 13px; align-items: center; padding-right: 42px; }
.y-p-foto { flex: none; }
.y-p-foto img.urun-thumb, .y-p-foto .thumb-yok { border-radius: 14px; }
.y-p-kimlik { min-width: 0; }
.y-p-kimlik h3 {
  font-size: 15px; font-weight: 700; line-height: 1.32; letter-spacing: -.012em; margin: 0;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.y-p-meta { font-size: 11px; color: var(--ink-3); font-weight: 620; letter-spacing: .02em; margin-top: 3px; }
/* hüküm: panelin değişmeyen tepesi */
.y-p-hukum {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; margin: 14px 0 2px;
  border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair);
}
.y-p-kutu { padding: 11px 12px 10px; border-left: 1px solid var(--hair); min-width: 0; }
.y-p-kutu:first-child { border-left: none; padding-left: 2px; }
/* min-height: "Kontrol gerekli" dar ekranda iki satıra iniyor; sabit kutu
   olmazsa üç rakamın taban çizgisi kayıyor */
.y-p-kutu small {
  display: block; font-size: 9.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-3); line-height: 1.35; min-height: 2.7em;
}
.y-p-kutu b {
  display: block; font-family: var(--font-display); font-size: 24px; font-weight: 600;
  letter-spacing: -.02em; line-height: 1.1; margin-top: 4px;
}
.y-p-kutu b.neg { color: var(--risk-metin); }
.y-p-kutu span { display: block; font-size: 10px; color: var(--ink-3); font-weight: 600; margin-top: 3px; line-height: 1.4; }
/* kaynak barları panelde beyaz zeminde: hero değişkenleri yerine sayfa mürekkebi */
.y-p-kaynaklar { margin-top: 0; }
.y-p-kaynaklar .y-kaynak { padding: 5px 6px; }
.y-p-yildizlar { margin-top: 2px; }
.y-p-yildizlar .y-ysatir { cursor: default; }
.y-p-yildizlar .y-ysatir:hover { background: none; }
.y-p-liste { margin-top: 2px; }
.y-p-liste .yorum-kart { padding: 12px 13px; box-shadow: none; border: 1px solid var(--hair); }
/* panelde ürün kimliği başlıkta zaten var: her kartta görseli ve adı
   tekrarlamak yer yiyor — kartlar tarihe, yıldıza, metne ve rozetlere iner */
.y-p-liste .yorum-kart .y-mkod,
.y-p-liste .yorum-kart .y-foto,
.y-p-liste .yorum-kart .y-model { display: none; }
.y-p-liste .yorum-kart .yorum-ust { margin-bottom: 7px; }
.y-p-liste .yorum-kart .y-meta { margin-top: 0; }
.y-p-dip {
  position: sticky; bottom: -22px; z-index: 2; display: flex; gap: 9px;
  margin: 18px -20px -22px; padding: 12px 20px 22px;
  background: var(--surface); border-top: 1px solid var(--hair);
}
.y-p-dip .btn { flex: 1; justify-content: center; }
/* tam liste alt penceresi: panelin üstüne açılır, geri dokunuşu paneli getirir */
.y-p-geri {
  display: inline-flex; align-items: center; gap: 6px; border: none; background: none; cursor: pointer;
  font: inherit; font-family: var(--font-ui); font-size: 12.5px; font-weight: 650; color: var(--ink-2);
  padding: 2px 0 10px;
}
.y-p-geri .ik { width: 15px; height: 15px; }
.y-p-geri:hover { color: var(--eylem); }
.y-p-liste-bas {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; padding-bottom: 12px;
  border-bottom: 1px solid var(--hair); margin-bottom: 12px;
  font-size: 12.5px; font-weight: 620; color: var(--ink-2);
}
.y-p-liste-bas b { font-size: 17px; font-weight: 780; color: var(--ink-1); font-variant-numeric: tabular-nums; }
/* ürün adı kendi satırına düşünce baştaki ayraç öksüz kalıyordu: blok satır */
.y-p-liste-bas span { flex: 1 0 100%; font-size: 11px; color: var(--ink-3); font-weight: 600; }
.y-p-liste-bas em { font-style: normal; font-size: 11px; color: var(--ink-3); font-weight: 600; }
/* pencerenin kendi süzgeci: iki satır (durum + puan).
   ⛔ SHEET 640px'E SABİT (.sheet max-width), viewport ne olursa olsun. Şerit bir
   süre her genişlikte tek `nowrap` satırdı: 14 çipin ancak 6'sı görünüyordu,
   kalanı sessizce kırpılıyordu ve kaydırılabildiğini söyleyen hiçbir işaret
   yoktu — yıldız süzgeçleri hiç keşfedilmiyordu (kullanıcı bildirdi,
   2026-08-08). Sheet tam boyuna ulaşabildiği her yerde satırlar SARAR, yani
   süzgecin tamamı görünür (3 satır ≈ 120px, listeyi bastırmıyor). */
/* gruplar arası boşluk satır İÇİ boşluktan geniş: eşit olunca sarma satırı ile
   yeni grup ayırt edilmiyor, "Yalnız metinli" ile "Tüm puanlar" tek blok okunuyordu */
.y-pl-suzgec { display: flex; flex-direction: column; gap: 11px; margin: 0 0 14px; }
.y-pl-satir { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.y-pl-satir .u-cip { flex: none; }
/* Sheet'in viewport'a sığmadığı dar ekranda sarmak süzgeci 5 satıra çıkarıp
   ilk yorumu katlamanın altına itiyor; orada satır satır kaydırılır ve sağ
   kenardaki solma devamı olduğunu söyler (.dp-raf'taki aynı çözüm). */
@media (max-width: 640px) {
  .y-pl-suzgec { margin: 0 -20px 14px; }
  .y-pl-satir {
    flex-wrap: nowrap; overflow-x: auto; padding: 0 20px 4px;
    scrollbar-width: none; -ms-overflow-style: none;
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 26px), transparent);
  }
  .y-pl-satir::-webkit-scrollbar { display: none; }
}

/* --- SHEET: sırala & filtrele ---
   Her bölüm hap ızgarası: 45 satırlık dikey liste yerine ~5 blok. Haplar
   sayfanın kendi .u-cip dilidir, burada yalnız sheet içi ölçüleri ayarlanır. */
.y-sf-bas {
  display: flex; align-items: baseline; gap: 8px; margin: 15px 0 7px;
  font-size: 10px; font-weight: 800; color: var(--ink-3); letter-spacing: .1em; text-transform: uppercase;
}
.y-sf-bas span {
  margin-left: auto; font-size: 10px; font-weight: 650; letter-spacing: .02em;
  text-transform: none; color: var(--ink-3); opacity: .85;
}
.y-sf-haplar { display: flex; flex-wrap: wrap; gap: 6px; }
.y-sf-hap { box-shadow: none; padding: 7px 12px; font-size: 12px; gap: 5px; }
.y-sf-hap .y-sf-yildiz { font-style: normal; color: var(--dikkat); margin-left: 1px; }
.y-sf-hap b { color: var(--ink-3); font-size: 10.5px; }
/* katlanır kuyruk: en sık 8 konu dışındakiler */
.y-sf-katla { margin-top: 8px; }
.y-sf-katla > summary {
  cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; font-weight: 700; color: var(--ink-2);
  border: 1px dashed var(--hair-2); border-radius: 999px; padding: 7px 14px;
}
.y-sf-katla > summary::-webkit-details-marker { display: none; }
.y-sf-katla > summary::after { content: "▾"; font-size: 10px; color: var(--ink-3); }
.y-sf-katla[open] > summary::after { content: "▴"; }
.y-sf-katla > summary:hover { border-color: var(--eylem); color: var(--eylem); }
.y-sf-katla .y-sf-haplar { margin-top: 8px; }
/* ürün kapsamı: diğer süzgeçlerden farklı ağırlıkta — kokpiti de daraltıyor */
.y-sf-kapsam {
  display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: 14px;
  background: var(--eylem-soft); border: 1px solid color-mix(in srgb, var(--eylem) 22%, transparent);
}
.y-sf-kapsam img.urun-thumb, .y-sf-kapsam .thumb-yok { border-radius: 10px; flex: none; }
.y-sf-kapsam-yazi { flex: 1; min-width: 0; }
.y-sf-kapsam-yazi small { display: block; font-size: 9.5px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--eylem); }
.y-sf-kapsam-yazi b { display: block; font-size: 12.5px; font-weight: 660; line-height: 1.35; margin-top: 2px; }
.y-sf-x {
  flex: none; width: 28px; height: 28px; border-radius: 999px; border: none; cursor: pointer;
  background: color-mix(in srgb, var(--eylem) 12%, transparent); color: var(--eylem); font-size: 12px;
}
.y-sf-x:hover { background: var(--eylem); color: var(--hero-ters); }
/* yapışkan dip: seçim değiştikçe kaç yoruma indiği canlı görünür */
/* .sheet-icerik'in 22px alt dolgusu var: sticky kutu onun kadar aşağı
   çekilmezse dipte bir şerit içerik altından sızıyor */
.y-sf-dip {
  position: sticky; bottom: -22px; z-index: 2; display: flex; gap: 9px; align-items: center;
  margin: 18px -20px -22px; padding: 12px 20px 22px;
  background: var(--surface); border-top: 1px solid var(--hair);
}
.y-sf-dip .btn { justify-content: center; }
.y-sf-dip .btn.sec { flex: 0 0 auto; }
.y-sf-dip .y-sf-uygula { flex: 1; }
.y-sf-dip .y-sf-uygula b { font-weight: 800; margin-right: 4px; }

/* --- dar ekran: kokpit tek sütun, kaynak listesi nefes alsın --- */
@media (max-width: 900px) {
  /* hero mobilde min-height'ı zaten aşıyor: margin-top:auto sıfıra iniyordu */
  .y-kaynak-bas { margin-top: 20px; }
  .y-kaynaklar { margin-top: 10px; gap: 5px; }
  .y-kaynak { padding: 5px 6px; }
  .y-puan-govde { gap: 12px; }
}
@media (max-width: 720px) {
  /* aktif süzgeç satırı kaydırılmaz: durum şeridi kayarken bu sabit kalsın */
  .u-cipler.y-aktif-cipler { justify-content: flex-start; margin: 0 0 12px; }
}
@media (max-width: 560px) {
  .y-halka-kap, .y-halka-kap .u-halka { width: 70px; height: 70px; }
  .y-halka-deger { font-size: 18px; }
  .yorum-kart { padding: 13px 14px; }
  .yorum-metin { font-size: 13px; }
  .y-sonuc-bas { margin-bottom: 8px; }
}

/* ================= UYARILAR — SİNYALLER ================= */
.uyari { display: flex; gap: 12px; align-items: flex-start; padding: 12px 4px; border-bottom: 1px solid var(--hair); font-size: 13px; }
.uyari:last-child { border-bottom: none; }
.uyari .ikon { flex-shrink: 0; width: 26px; height: 26px; border-radius: 8px; background: var(--surface-2); color: var(--ink-2); display: flex; align-items: center; justify-content: center; font-size: 12px; margin-top: 1px; }
.uyari .ikon .ik { width: 14px; height: 14px; }
.uyari .metin { flex: 1; min-width: 0; line-height: 1.55; }
.uyari .metin .kim { color: var(--ink-3); font-size: 11px; font-weight: 600; letter-spacing: .02em; }
.uyari .kaynak { font-size: 9.5px; font-weight: 700; color: var(--ink-3); letter-spacing: .07em; text-transform: uppercase; padding: 3px 0 0; white-space: nowrap; flex-shrink: 0; }

/* ================= DİĞER ================= */
.ekveri-grup { display: flex; gap: 11px; align-items: flex-start; padding: 11px 0; border-bottom: 1px solid var(--hair); font-size: 13px; }
.ekveri-grup:last-child { border-bottom: none; }
.ekveri-grup .adet { font-weight: 700; font-size: 10.5px; color: var(--ink-2); background: var(--surface-2); border-radius: 999px; padding: 3px 10px; flex-shrink: 0; margin-top: 1px; white-space: nowrap; }

details.metod summary { cursor: pointer; font-weight: 650; font-size: 13px; padding: 2px 0; color: var(--ink-2); }
details.metod summary:hover { color: var(--ink-1); }
details.metod .icerik { font-size: 12.5px; color: var(--ink-2); line-height: 1.65; }
details.metod .icerik h4 { margin: 14px 0 3px; color: var(--ink-1); font-size: 12.5px; }
details.metod .icerik p { margin: 3px 0; }
details.metod code { background: var(--surface-2); padding: 1px 6px; border-radius: 5px; font-size: 11.5px; }

.bos-durum { text-align: center; color: var(--ink-2); padding: 36px 16px; font-size: 13.5px; line-height: 1.65; }
.bos-durum .b-ikon { font-size: 30px; display: block; margin-bottom: 10px; color: var(--ink-3); }
.bos-durum .b-ikon .ik { width: 34px; height: 34px; }
.bos-durum .b-baslik { font-size: 16.5px; font-weight: 750; letter-spacing: -0.015em; color: var(--ink-1); display: block; margin-bottom: 4px; }
/* Açılış sürerken boş ekranın ikinci satırı (bkz. ui.js bosSayfa): asıl cümle
   ne olduğunu söyler, bu satır ne yapılması gerektiğini — "hiçbir şey". */
.bos-durum .b-not { font-size: 12px; color: var(--ink-3); }
.gizli { display: none !important; }
.hata-kutu { background: var(--risk-soft); border: 1px solid color-mix(in srgb, var(--risk) 35%, transparent); color: var(--risk-metin); border-radius: 10px; padding: 11px 14px; font-size: 13px; margin: 10px 0; }
.bilgi-kutu { background: transparent; border: 1px solid var(--hair-2); border-left: 2px solid var(--eylem); color: var(--ink-2); border-radius: 8px; padding: 10px 14px; font-size: 12px; margin: 10px 0; line-height: 1.6; }
.daha-fazla { text-align: center; margin: 16px 0; }

.tablo-kaydir { overflow-x: auto; -webkit-overflow-scrolling: touch; }

footer.alt-bilgi { margin-top: 48px; padding-top: 18px; border-top: 1px solid var(--hair); text-align: center; color: var(--ink-3); font-size: 11px; line-height: 1.75; }
footer.alt-bilgi a { font-weight: 650; color: var(--ink-2); }
footer.alt-bilgi a:hover { color: var(--marka); }

@media print {
  .ustbar, .nav-alt, .dropzone, .btn, .cipler, .u-arac, .u-cipler { display: none !important; }
  body { background: #fff; }
  .card { box-shadow: none; break-inside: avoid; }
}

/* ================= ÖZEL AÇILIR SEÇİM (premium filtre dili) ================= */
.acilir { position: relative; display: inline-flex; }
.acilir-btn {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  font-size: 13px; font-weight: 600; padding: 9px 14px; border-radius: 10px;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-1);
  max-width: 100%; min-width: 0;
}
.acilir-btn:hover { border-color: var(--ink-3); }
.acilir.acik .acilir-btn { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }
.acilir-btn .a-etiket { font-size: 9.5px; font-weight: 700; color: var(--ink-3); letter-spacing: .09em; text-transform: uppercase; white-space: nowrap; }
.acilir-btn .a-deger { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 46vw; }
.acilir-btn .ik { width: 13px; height: 13px; color: var(--ink-3); transition: transform .18s ease; }
.acilir.acik .acilir-btn .ik { transform: rotate(180deg); }
.acilir-panel {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 80; min-width: max(100%, 210px); max-width: min(320px, 88vw);
  background: var(--surface); border: 1px solid var(--hair-2); border-radius: 12px;
  box-shadow: var(--golge-buyuk, 0 10px 34px rgba(33,29,22,.16)); padding: 6px;
  max-height: 320px; overflow-y: auto; display: none;
}
.acilir.acik .acilir-panel { display: block; animation: acilirGiris .16s ease; }
/* Panel içi süzme kutusu (acilirSec 'ara') — kaydırmada üstte kalır */
.acilir-ara { display: flex; align-items: center; gap: 7px; padding: 7px 9px; margin-bottom: 5px;
  border: 1px solid var(--hair-2); border-radius: 8px; position: sticky; top: 0; z-index: 1; background: var(--surface); }
.acilir-ara .ik { width: 13px; height: 13px; color: var(--ink-3); flex-shrink: 0; }
.acilir-ara input { border: none; background: none; color: inherit; font: inherit; font-size: 13px; width: 100%; outline: none; min-width: 0; }
/* ⛔ [hidden] ŞART: .acilir-sec display:flex taşıyor, UA kuralını ezer (CLAUDE.md §5) */
.acilir-sec[hidden] { display: none; }
/* Sheet içinde tek satırlık açılır kutu (Sırala ve filtrele) — tam genişlik,
   değer solda, ok sağda */
.sheet-acilir .acilir { width: 100%; }
.sheet-acilir .acilir-btn { width: 100%; }
.sheet-acilir .acilir-btn .a-deger { margin-right: auto; max-width: none; }
.sheet-acilir .acilir-panel { width: 100%; max-width: none; }
@keyframes acilirGiris { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.acilir-sec {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  text-align: left; border: none; background: none; cursor: pointer;
  font-size: 13px; font-weight: 550; color: var(--ink-1); padding: 9px 11px; border-radius: 8px;
}
.acilir-sec:hover { background: var(--surface-2); }
.acilir-sec.aktif { font-weight: 700; color: var(--eylem); background: var(--eylem-soft); }
/* Panele özel rozet (acilirSec x[2]) — kapalı düğmede görünmez */
.acilir-sec .a-rozet { display: inline-block; margin-left: 7px; padding: 1px 7px; border-radius: 999px;
  background: var(--eylem-soft); color: var(--eylem); font-size: 10px; font-weight: 700;
  font-style: normal; letter-spacing: .01em; vertical-align: 1px; }
.acilir-sec.aktif .a-rozet { background: #fff; }
.acilir-sec .ik { width: 14px; height: 14px; flex-shrink: 0; }
.acilir-sec span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ================= İNCELEME DURUMU (İncelendi / İzlemede) ================= */
.incele-satir { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 9px; }
.incele-btn {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  font-size: 11px; font-weight: 650; padding: 4.5px 11px; border-radius: 999px;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-2);
}
.incele-btn:hover { border-color: var(--eylem); color: var(--eylem); }
.incele-btn.geri { border-style: dashed; }
.incele-btn .ik { width: 12px; height: 12px; }
.dk-karar.incelendi > .rozet, .dk-karar.incelendi b, .dk-karar.incelendi .g { opacity: .55; }
.uyari.incelendi .metin, .uyari.incelendi .ikon { opacity: .5; }
.rozet .ik { width: 11px; height: 11px; }

/* ================= DOSYA YÖNETİM PANELİ ================= */
/* `.dosya-panel` sarmalayıcısı kaldırıldı (2026-08-08): dosya listesi kapının
   içinde bir <details> olarak yaşıyor, açma/kapama tarayıcının işi. */
.dp-arac { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.dp-tumu { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 650; color: var(--ink-2); cursor: pointer; }
.dosya .d-sec { flex-shrink: 0; width: 15px; height: 15px; accent-color: var(--eylem); cursor: pointer; }
.n-rozet {
  display: inline-flex; align-items: center; justify-content: center; min-width: 17px; height: 17px;
  font-size: 10.5px; font-weight: 700; border-radius: 999px; padding: 0 5px;
  background: var(--eylem); color: var(--page);
}

/* ================= REKLAM BÜTÇESİ (elle giriş) ================= */
.reklam-alan {
  display: flex; gap: 14px; align-items: center; flex-wrap: wrap; justify-content: space-between;
  margin: 14px 0 4px; padding: 13px 16px; border: 1px dashed var(--hair-2); border-radius: 12px; background: var(--surface);
}
.reklam-alan .ra-metin { font-size: 12.5px; color: var(--ink-1); flex: 1 1 320px; min-width: 0; }
.reklam-alan .ra-not { display: block; font-size: 11.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.55; }
.reklam-alan .ra-giris { display: flex; align-items: center; gap: 7px; }
.reklam-alan input {
  width: 130px; font-size: 15px; font-weight: 650; padding: 9px 12px; font-family: var(--font-ui);
  border: 1px solid var(--hair-2); border-radius: 9px; background: var(--surface); color: var(--ink-1); outline: none;
}
.reklam-alan input:focus { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }

/* ================= VERİ TEMELİ — sıradaki adım vurgusu ================= */
.kapsam-kart.sirada { border: 1.5px solid var(--eylem); background: var(--eylem-soft); }
.kapsam-kart.sirada .durum-i { background: var(--eylem); color: var(--page); }
.k-sirada { display: block; font-size: 10px; font-weight: 700; color: var(--eylem); letter-spacing: .05em; text-transform: uppercase; margin-top: 4px; }

/* ================= NET TAHSİLAT KUTUSU (ürün detay) ================= */
.tahsilat-kutu { margin-top: 14px; padding: 14px 0 4px; border-top: 1px solid var(--hair-2); }
.tahsilat-kutu .t-etiket { font-size: 10px; font-weight: 700; color: var(--ink-2); letter-spacing: 0.1em; text-transform: uppercase; }
.tahsilat-kutu .t-deger2 {
  font-size: 24px; font-weight: 760; letter-spacing: -0.025em; margin: 4px 0 3px; line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.tahsilat-kutu .t-deger2 .birim { font-size: 12px; color: var(--ink-3); font-family: var(--font-ui); font-weight: 600; }
.tahsilat-kutu .t-not { font-size: 11.5px; color: var(--ink-2); line-height: 1.55; max-width: 420px; }

/* ================= OLUMSUZ YORUM KESİTLERİ (kaydırılabilir) ================= */
.kesit-serit {
  display: flex; gap: 10px; overflow-x: auto; -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory; padding: 2px 2px 10px; scrollbar-width: thin;
}
.kesit {
  flex: 0 0 232px; scroll-snap-align: start; min-width: 0;
  border: 1px solid var(--hair); border-left: 3px solid var(--serious); border-radius: 10px;
  padding: 10px 12px; background: var(--surface);
}
.kesit .k-ust { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-bottom: 5px; }
.kesit .k-metin {
  font-family: var(--font-display); font-variation-settings: 'opsz' 22;
  font-size: 12.5px; line-height: 1.55; color: var(--ink-1); margin-bottom: 7px; word-break: break-word;
}

/* ================= SATIŞ TRENDİ GEZİNME ================= */
.trend-kap { position: relative; touch-action: pan-y; }
.trend-nokta {
  position: absolute; width: 9px; height: 9px; border-radius: 50%;
  background: var(--eylem); border: 2px solid var(--surface); box-shadow: 0 0 0 1px var(--eylem);
  transform: translate(-50%, -50%); pointer-events: none; z-index: 3;
}
.trend-ipucu {
  position: absolute; top: -6px; transform: translateY(-100%);
  background: var(--ink-1); color: var(--page); font-size: 11px; font-weight: 650;
  padding: 4px 9px; border-radius: 7px; white-space: nowrap; pointer-events: none; z-index: 4;
  box-shadow: var(--golge-buyuk);
}
/* iki satırlı hâl: üstte tarih + adet, altında o kovanın satış tutarı.
   Tutar display fontunda ve biraz büyük — okunan asıl rakam o. */
.trend-ipucu.cift { padding: 5px 10px 6px; text-align: center; }
.trend-ipucu .ti-ust { display: block; opacity: .72; font-size: 10.5px; font-weight: 600; }
.trend-ipucu .ti-tutar {
  display: block; font-family: var(--font-display); font-size: 14px; font-weight: 600;
  letter-spacing: -.01em; margin-top: 1px; font-variant-numeric: tabular-nums;
}

/* ================= VARYANT TABLOSU ================= */
.varyant-tablo th { text-align: left; font-size: 10px; font-weight: 700; color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase; padding: 3px 0 6px; border-bottom: 1px solid var(--hair-2); }
.varyant-tablo td { font-size: 12px; }
.varyant-tablo td:last-child, .varyant-tablo th:last-child { text-align: right; }
.varyant-tablo .v-thumb { width: 22px; height: 22px; border-radius: 6px; object-fit: cover; border: 1px solid var(--hair); vertical-align: middle; margin-right: 4px; }
.varyant-tablo .v-barkod { font-size: 10.5px; color: var(--ink-3); font-weight: 550; white-space: nowrap; }

/* ============ KİMLİK ÇİPLERİ + PANOYA KOPYALA (ürün detay) ============ */
.kimlik-cipler { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 9px; }
.kopya-cip {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  background: var(--surface-2); border: 1px solid var(--hair-2); border-radius: 9px;
  padding: 5px 9px; font-family: var(--font-ui); font-size: 11.5px; color: var(--ink-1);
  font-variant-numeric: tabular-nums; max-width: 100%; min-width: 0;
}
.kopya-cip .kc-etiket { font-size: 9.5px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); flex-shrink: 0; }
.kopya-cip b { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.kopya-cip .kc-daha { font-size: 10px; font-weight: 700; color: var(--ink-3); background: var(--surface); border-radius: 999px; padding: 1px 6px; }
.kopya-cip .ik { width: 13px; height: 13px; color: var(--ink-3); flex-shrink: 0; }
.kopya-cip:hover { border-color: var(--eylem); }
.kopya-cip:hover .ik { color: var(--eylem); }
.kopya-cip.kopyalandi { border-color: var(--iyi); background: var(--iyi-soft); }
.kopya-cip.kopyalandi .ik { color: var(--iyi-metin); }
.kopya-mini {
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  background: transparent; border: none; padding: 2px; margin-left: 4px; vertical-align: middle;
  color: var(--ink-3); border-radius: 6px;
}
.kopya-mini .ik { width: 13px; height: 13px; }
.kopya-mini:hover { color: var(--eylem); background: var(--surface-2); }
.kopya-mini.kopyalandi { color: var(--iyi-metin); background: var(--iyi-soft); }

/* ============ VARYANT SATIRLARI (Portföy listesi) ============ */
.liste-ust { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 2px 0 8px; }
@media (prefers-color-scheme: dark) { .u-satir .ad .v-etiket { color: var(--eylem-koyu); } }

.bs-kimlik { margin: -4px 0 12px; }

/* ================= GÖRSEL PENCERESİ (lightbox) =================
   Ürün görseli uygulamanın neresinde görünürse görünsün (tablo satırı, sağ
   panel, marj masası, yorum listesi, varyant tablosu) dokunuşta bu pencere
   açılır: ekranın ortasında büyük kare, altında tıklanabilir küçük şerit.
   Gezinme oklarla ve elle sürükleyerek — mobilde parmak, masaüstünde fare. */
[data-galeri] { cursor: zoom-in; }
img[data-galeri]:hover { border-color: var(--eylem); }
body.lightbox-acik { overflow: hidden; }

.lightbox {
  position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center;
  padding: max(12px, env(safe-area-inset-top, 0px)) 12px max(12px, env(safe-area-inset-bottom, 0px));
  background: rgba(14, 22, 19, .62); -webkit-backdrop-filter: blur(7px); backdrop-filter: blur(7px);
  animation: lbGiris .16s ease;
}
@keyframes lbGiris { from { opacity: 0; } to { opacity: 1; } }
@keyframes lbKart { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
.lb-pencere {
  width: min(780px, 100%); max-height: 100%; display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge-buyuk); overflow: hidden;
  animation: lbKart .22s cubic-bezier(.22, .8, .36, 1);
}

.lb-bas { display: flex; align-items: center; gap: 10px; padding: 10px 10px 10px 16px; border-bottom: 1px solid var(--hair); }
.lb-ad {
  flex: 1; min-width: 0; font-size: 12.5px; font-weight: 650; color: var(--ink-1); letter-spacing: -.01em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lb-sayac { font-size: 11px; font-weight: 700; color: var(--ink-3); letter-spacing: .06em; font-variant-numeric: tabular-nums; }
.lb-kapat {
  flex: none; width: 32px; height: 32px; border-radius: 999px; border: none; cursor: pointer;
  background: var(--surface-2); color: var(--ink-2); font-size: 14px; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.lb-kapat:hover { background: var(--hair); color: var(--ink-1); }

/* sahne yüksekliği sabit: kare değişince pencere zıplamasın */
.lb-sahne { position: relative; height: min(62vh, 560px); height: min(62dvh, 560px); background: var(--surface-2); overflow: hidden; touch-action: pan-y; }
.lb-ray { display: flex; height: 100%; transition: transform .26s cubic-bezier(.22, .8, .36, 1); will-change: transform; }
.lb-kare { flex: 0 0 100%; height: 100%; display: flex; align-items: center; justify-content: center; padding: 14px; }
.lb-kare img { max-width: 100%; max-height: 100%; object-fit: contain; -webkit-user-drag: none; user-select: none; }
.lb-kare .lb-yok { display: none; font-size: 12px; font-weight: 600; color: var(--ink-3); }
.lb-kare.yok img { display: none; }
.lb-kare.yok .lb-yok { display: block; }

.lb-onceki, .lb-sonraki {
  position: absolute; top: 50%; transform: translateY(-50%); cursor: pointer;
  width: 40px; height: 40px; border-radius: 999px; border: 1px solid var(--hair);
  background: var(--surface); color: var(--ink-1); font-size: 24px; line-height: 1; padding: 0 0 3px;
  display: flex; align-items: center; justify-content: center; box-shadow: var(--golge);
}
.lb-onceki { left: 10px; }
.lb-sonraki { right: 10px; }
.lb-onceki:hover, .lb-sonraki:hover { border-color: var(--eylem); color: var(--eylem); }

/* şerit: e-ticaret düzeni — büyük görselin altında yan yana, yatay kaydırılır */
.lb-alt { padding: 9px 10px; border-top: 1px solid var(--hair); }
.lb-serit {
  display: flex; gap: 7px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin;
  scroll-snap-type: x proximity; padding: 2px;
}
.lb-serit img {
  width: 54px; height: 54px; flex: none; border-radius: 10px; object-fit: cover; cursor: pointer;
  border: 2px solid transparent; box-shadow: inset 0 0 0 1px var(--hair); background: var(--surface-2);
  opacity: .58; scroll-snap-align: start; -webkit-user-drag: none;
}
.lb-serit img:hover { opacity: 1; }
.lb-serit img.aktif { opacity: 1; border-color: var(--eylem); }
.lb-serit img.yok { display: none; }
/* az kare varken ortalanır; çok kare taşınca kaydırma baştan başlar
   (justify-content: center taşmada ilk kareleri erişilmez kılardı) */
.lb-serit img:first-child { margin-left: auto; }
.lb-serit img:last-child { margin-right: auto; }

@media (max-width: 560px) {
  .lb-sahne { height: min(62vh, 520px); height: min(62dvh, 520px); }
  .lb-kare { padding: 10px; }
  .lb-onceki, .lb-sonraki { width: 34px; height: 34px; font-size: 20px; }
  .lb-serit img { width: 46px; height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
  .lightbox, .lb-pencere { animation: none; }
  .lb-ray { transition: none; }
}

/* ================= HAREKET (reduced-motion saygılı) ================= */
@media (prefers-reduced-motion: no-preference) {
  #sayfa.sayfa-giris { animation: sayfaGiris .32s cubic-bezier(.22,.8,.36,1); }
  @keyframes sayfaGiris {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: none; }
  }
  /* portföy yönlendirme katı bir blok olarak gelir; tablo satırları
     tek tek animasyonlanmaz (25 satırın kademeli girişi gürültü olur) */
  .karar-grid .card, .yorum-kart, .kapsam-kart, .u-hero, .u-stat, .u-tablo {
    animation: kartGiris .4s cubic-bezier(.22,.8,.36,1) backwards;
  }
  @keyframes kartGiris {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: none; }
  }
  .karar-grid .card:nth-child(1), .kapsam-kart:nth-child(1) { animation-delay: .03s; }
  .karar-grid .card:nth-child(2), .kapsam-kart:nth-child(2) { animation-delay: .06s; }
  .karar-grid .card:nth-child(3), .kapsam-kart:nth-child(3) { animation-delay: .09s; }
  .karar-grid .card:nth-child(4), .kapsam-kart:nth-child(4) { animation-delay: .12s; }
  .karar-grid .card:nth-child(5), .kapsam-kart:nth-child(5) { animation-delay: .15s; }
  .karar-grid .card:nth-child(6), .kapsam-kart:nth-child(6) { animation-delay: .18s; }
  .karar-grid .card:nth-child(n+7) { animation-delay: .21s; }
  .u-hero { animation-delay: .04s; }
  .u-sol .u-stat:nth-child(1), .u-sag .u-stat:nth-child(1) { animation-delay: .08s; }
  .u-sol .u-stat:nth-child(2), .u-sag .u-stat:nth-child(2) { animation-delay: .12s; }
  .u-sol .u-stat:nth-child(3), .u-sag .u-stat:nth-child(3) { animation-delay: .16s; }
  .mj-kokpit .u-stat:nth-child(2) { animation-delay: .06s; }
  .mj-kokpit .u-stat:nth-child(3) { animation-delay: .09s; }
  .mj-kokpit .u-stat:nth-child(4) { animation-delay: .12s; }
  .u-tablo { animation-delay: .2s; }

  /* YERİNDE TAZELEME: liste bölgesi innerHTML ile yeniden kurulduğunda giriş
     animasyonları TEKRAR OYNAMAZ. Aramada her tuş vuruşunda kokpit kartları ve
     tablo yeniden "içeri kayıyordu"; sayfa yenilenmiş hissi oradan geliyordu.
     Sayfaya ilk gelişte #urun-sonuclar baştan yaratıldığı için bu sınıf olmaz
     ve animasyonlar normal çalışır. */
  #urun-sonuclar.tazele .u-stat,
  #urun-sonuclar.tazele .u-tablo,
  #urun-sonuclar.tazele .u-hero,
  #urun-sonuclar.tazele .mj-urun { animation: none; }

  /* SESSİZ ÇİZİM — yukarıdaki dersin SAYFA düzeyindeki karşılığı.
     Arka planda gelen veri (bulut açılışında ham satırlar, eşleştirme
     defteri) sayfayı tam çizdiriyor; kart girişleri CSS seçicisine bağlı
     olduğu için hepsi bir daha aşağıdan yukarı süzülüyor ve kullanıcı
     "ekran kendini iki kez yeniliyor" diyor (2026-08-04). İçerik yerine
     geçer, hareket olmaz. Kullanıcı bir şey yaptığında sınıf konmaz. */
  #sayfa.tazeleme .karar-grid .card,
  #sayfa.tazeleme .yorum-kart,
  #sayfa.tazeleme .kapsam-kart,
  #sayfa.tazeleme .u-hero,
  #sayfa.tazeleme .u-stat,
  #sayfa.tazeleme .u-tablo,
  #sayfa.tazeleme .hero .deger { animation: none; }

  .karar-kart, .btn, .cip, .u-cip, .ozet-cip, .tile { transition: transform .16s ease, box-shadow .2s ease, border-color .16s ease, background .16s ease, color .16s ease; }
  .karar-kart:hover { transform: translateY(-1.5px); box-shadow: var(--golge-buyuk); }
  .karar-kart:active, [data-git]:active { transform: scale(.99); }
  .u-satir:active { background: var(--eylem-soft); }
  .btn:active, .cip:active, .ozet-cip:active { transform: scale(.96); }
  .nav-alt a .i { transition: transform .22s cubic-bezier(.34,1.56,.64,1); }
  .nav-alt a.aktif .i { transform: translateY(-1px) scale(1.08); }
  .hero .deger { animation: heroGiris .55s cubic-bezier(.22,.8,.36,1); }
  @keyframes heroGiris {
    from { opacity: 0; transform: translateY(8px); filter: blur(3px); }
    to { opacity: 1; transform: none; filter: none; }
  }
  .bar .kanal i, .h-bant i, .u-oran i, .top-satir .t-bar i { animation: barDolum .6s cubic-bezier(.22,.8,.36,1) backwards; transform-origin: left center; }
  @keyframes barDolum { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  .sparkline path.cizgi { stroke-dasharray: 900; stroke-dashoffset: 900; animation: cizgiCek 1s ease-out forwards; }
  @keyframes cizgiCek { to { stroke-dashoffset: 0; } }
  /* radyal kadran çizimi + kokpit girişleri */
  .gauge .g-deger { animation: gaugeCiz .9s cubic-bezier(.22,.8,.36,1) backwards; }
  @keyframes gaugeCiz { from { stroke-dashoffset: 213.6; } }
  .stat-kart, .gauge, .karar-kart.mini, .top-satir { animation: kartGiris .4s cubic-bezier(.22,.8,.36,1) backwards; }
  .stat-kart:nth-child(1) { animation-delay: .04s; }
  .stat-kart:nth-child(2) { animation-delay: .08s; }
  .stat-kart:nth-child(3) { animation-delay: .12s; }
  .stat-kart:nth-child(4) { animation-delay: .16s; }
  .gauge:nth-child(1) { animation-delay: .06s; }
  .gauge:nth-child(2) { animation-delay: .12s; }
  .gauge:nth-child(3) { animation-delay: .18s; }
  .karar-kart.mini:nth-child(-n+4) { animation-delay: .08s; }
  .mini-spark .cizgi { stroke-dasharray: 300; stroke-dashoffset: 300; animation: cizgiCek .9s ease-out .15s forwards; }
  .kart-hero { animation: heroKartGiris .45s cubic-bezier(.22,.8,.36,1); }
  @keyframes heroKartGiris { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
  .hizli-islem .islem:active, .top-satir:active, .sheet-sec:active { transform: scale(.97); }
}

/* ================================================================
   TEK SATIŞ HESABI — renkli özet kutusu (ürün detay) + hesaplayıcı sheet
   ================================================================ */
/* ZEMİN SABİT KOYU, MÜREKKEP DE SABİT AÇIK OLMALI: burada --hero-ink/-2 karta
   ÖZEL olarak tanımlanır. Tema değişkeni kullanılırsa açık temada koyu yeşil
   zemine koyu yazı basılır (~1,9:1) ve kart okunmaz hâle gelir — yaşandı. */
.birim-kutu {
  --hero-ink: #f3fbf7;
  --hero-ink-2: rgba(243, 251, 247, .74);
  margin: 14px 0; padding: 16px 18px 14px; border-radius: 16px; cursor: pointer;
  background: linear-gradient(135deg, #06372b 0%, #0b5a44 52%, #117a5b 100%);
  color: var(--hero-ink); box-shadow: var(--hero-golge);
  position: relative; overflow: hidden;
  transition: transform .18s ease, box-shadow .18s ease;
}
.birim-kutu::after { content: ""; position: absolute; top: -70px; right: -40px; width: 210px; height: 210px; background: radial-gradient(closest-side, rgba(255,255,255,.14), transparent 70%); pointer-events: none; }
.birim-kutu:hover { transform: translateY(-1px); }
.birim-kutu.kirmizi {
  --hero-ink: #fdf3f4;
  --hero-ink-2: rgba(253, 243, 244, .76);
  background: linear-gradient(140deg, #5a1320 0%, #8a1e2b 55%, #ab2b34 100%);
}
.birim-kutu.bos { --hero-ink: var(--ink-1); --hero-ink-2: var(--ink-2); background: var(--eylem-soft); color: var(--ink-1); border: 1px dashed color-mix(in srgb, var(--eylem) 40%, transparent); box-shadow: none; }
.birim-kutu.bos::after { display: none; }
.birim-kutu.bos .bk-etiket { color: var(--eylem); }
.birim-kutu.bos .bk-not { color: var(--ink-2); }
.birim-kutu.bos .bk-not b { color: var(--ink-1); }
.birim-kutu.bos .bk-ok { color: var(--eylem); background: color-mix(in srgb, var(--eylem) 12%, transparent); }
.birim-kutu .bk-govde { display: flex; gap: 14px; align-items: center; justify-content: space-between; position: relative; z-index: 1; }
.birim-kutu .bk-sol { min-width: 0; flex: 1; }
.birim-kutu .bk-etiket { font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; color: var(--hero-ink-2); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.birim-kutu .bk-etiket .ik { width: 14px; height: 14px; }
.birim-kutu .bk-baslik { font-size: 17px; font-weight: 750; margin-top: 6px; letter-spacing: -.015em; }
.birim-kutu .bk-deger { font-size: 31px; font-weight: 780; letter-spacing: -.03em; margin: 6px 0 4px; line-height: 1.08; font-variant-numeric: tabular-nums; }
.birim-kutu .bk-deger .birim { font-size: 13px; font-weight: 600; color: var(--hero-ink-2); }
.birim-kutu .bk-cipler { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 6px; }
.birim-kutu .bk-cip { font-size: 10.5px; font-weight: 650; padding: 3px 9px; border-radius: 999px; background: rgba(255,255,255,.13); color: var(--hero-ink); font-variant-numeric: tabular-nums; }
/* DİKKAT HAPI OPAK: yarı geçirgen amber altındaki zeminle karışıyor —
   yeşil kartta zeytin, kırmızı kartta kahve çıkıyordu. */
.birim-kutu .bk-cip.dikkat { background: #f5d693; color: #3d2b09; font-weight: 720; }
.birim-kutu .bk-not { font-size: 11px; color: var(--hero-ink-2); line-height: 1.55; max-width: 460px; }
.birim-kutu .bk-not b { color: var(--hero-ink); }
.birim-kutu .bk-ok { flex-shrink: 0; width: 34px; height: 34px; border-radius: 50%; background: rgba(255,255,255,.14); display: flex; align-items: center; justify-content: center; }
.birim-kutu .bk-ok .ik { width: 17px; height: 17px; }
@media (max-width: 460px) { .birim-kutu .bk-ok { display: none; } }

/* hesaplayıcı sheet içi */
.bs-urun { font-size: 12.5px; color: var(--ink-2); margin: -6px 0 4px; }
.bs-urun .bs-kod { color: var(--ink-3); font-size: 11px; }
.bs-bolum { font-size: 10px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-3); margin: 18px 0 4px; }
.bs-soru { font-family: var(--font-display); font-variation-settings: 'opsz' 40; font-size: 24px; font-weight: 620; letter-spacing: -.02em; margin: 2px 0 4px; }
.bs-aciklama { font-size: 12px; color: var(--ink-2); line-height: 1.55; margin-bottom: 12px; }
.bs-tl { font-size: 13px; font-weight: 700; color: var(--ink-3); }
.bs-fiyat-alan label { font-size: 11px; font-weight: 650; color: var(--ink-2); display: block; margin-bottom: 6px; }
.bs-fiyat-kutu { display: flex; align-items: center; gap: 10px; border: 1.5px solid var(--hair-2); border-radius: 14px; padding: 4px 16px; background: var(--surface); }
.bs-fiyat-kutu:focus-within { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }
.bs-fiyat-kutu input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-size: 30px; font-weight: 760; letter-spacing: -.02em; color: var(--ink-1); font-variant-numeric: tabular-nums; padding: 6px 0; }
input[type="range"].bs-slider { -webkit-appearance: none; appearance: none; width: 100%; height: 4px; border-radius: 2px; margin: 16px 0 4px; background: linear-gradient(to right, var(--eylem) var(--dolu, 50%), var(--hair-2) var(--dolu, 50%)); outline: none; }
input[type="range"].bs-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--eylem-koyu); border: 3px solid var(--surface); box-shadow: 0 1px 5px rgba(0,0,0,.3); cursor: pointer; }
input[type="range"].bs-slider::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--eylem-koyu); border: 3px solid var(--surface); box-shadow: 0 1px 5px rgba(0,0,0,.3); cursor: pointer; }
.bs-slider-uclar { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--ink-3); margin-bottom: 8px; font-variant-numeric: tabular-nums; }
.bs-butonlar { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin: 6px 0 4px; }
.bs-butonlar .btn { justify-content: center; }
.bs-nakit { margin-top: 14px; padding: 14px 16px 12px; border-radius: 14px; border: 1px solid transparent; }
.bs-nakit.kar { background: var(--iyi-soft); border-color: color-mix(in srgb, var(--iyi) 25%, transparent); }
.bs-nakit.zarar { background: var(--risk-soft); border-color: color-mix(in srgb, var(--risk) 25%, transparent); }
.bs-nakit .t-etiket { font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); }
.bs-nakit-deger { font-size: 28px; font-weight: 780; letter-spacing: -.025em; margin: 4px 0 2px; font-variant-numeric: tabular-nums; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.bs-nakit.kar .bs-nakit-deger { color: var(--iyi-metin); }
.bs-nakit.zarar .bs-nakit-deger { color: var(--risk-metin); }
.bs-nakit-deger .birim { font-size: 12px; font-weight: 600; color: var(--ink-3); }
.bs-fark { font-size: 11.5px; font-weight: 650; }
.bs-fark.poz { color: var(--iyi-metin); }
.bs-fark.neg { color: var(--risk-metin); }
.bs-nakit-cipler { display: flex; gap: 12px; flex-wrap: wrap; font-size: 11.5px; color: var(--ink-2); margin-top: 2px; }
.bs-nakit-cipler b { font-variant-numeric: tabular-nums; }
.bs-tablo { margin-top: 12px; }
.bs-tablo tr.bs-nakit-satir td { border-top: 2px solid var(--eylem); color: var(--eylem); }
.bs-ince { font-size: 10.5px; color: var(--ink-3); font-weight: 500; }

/* panel yapıştırma sonucu — sheet içindeki asıl geri bildirim */
.panel-sonuc {
  margin-top: 8px; font-size: 11.5px; line-height: 1.5; font-weight: 560; color: var(--ink-2);
  padding: 9px 11px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--hair);
}
.panel-sonuc:empty { display: none; }
.panel-sonuc.iyi { background: var(--iyi-soft); border-color: transparent; color: var(--iyi-metin); font-weight: 620; }
.panel-sonuc.dikkat { background: var(--dikkat-soft); border-color: transparent; color: var(--dikkat-metin); font-weight: 620; }
.bs-notlar { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
/* ⛔ display:flex olamaz: cümledeki <b> ve metin parçaları ayrı flex ögesine
   dönüşüp sütunlaşıyor, dar ekranda değer metnin üzerine biniyordu. */
.bs-not { font-size: 12px; color: var(--ink-2); line-height: 1.55; padding: 8px 11px 8px 34px; background: var(--surface-2); border-radius: 10px; position: relative; }
.bs-not .ik { width: 15px; height: 15px; position: absolute; left: 11px; top: 9px; color: var(--eylem); }
.bs-not b { color: var(--ink-1); font-variant-numeric: tabular-nums; }
.bs-mini-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin-top: 12px; }
.bs-mini { padding: 10px 12px; border: 1px solid var(--hair); border-radius: 10px; }
.bs-mini .v { font-size: 15.5px; font-weight: 750; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.bs-mini .v.neg { color: var(--risk-metin); }
.bs-mini .l { font-size: 10px; color: var(--ink-3); margin-top: 2px; line-height: 1.35; }
/* Yüklü maliyet kartı — 1 satışın toplam maliyet yükü (Excel AP) */
.bs-yuklu { margin-top: 12px; padding: 12px 14px 11px; border: 1px solid var(--hair); border-radius: 14px; background: var(--surface-2); }
.bs-yuklu-bas { display: flex; align-items: center; gap: 8px; }
.bs-yuklu-bas .t-etiket { font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-2); flex: 1; min-width: 0; }
.bs-yuklu-deger { font-size: 22px; font-weight: 780; letter-spacing: -.02em; margin: 4px 0 2px; font-variant-numeric: tabular-nums; color: var(--ink-1); display: flex; align-items: baseline; gap: 8px; }
.bs-yuklu-deger .birim { font-size: 12px; font-weight: 600; color: var(--ink-3); }
.bs-yuklu-alt { font-size: 11.5px; color: var(--ink-2); line-height: 1.5; }
.bs-yuklu-alt b { font-variant-numeric: tabular-nums; color: var(--ink-1); }
/* bilgi balonu (nasıl hesaplanır?) — kapsayıcı .bilgi-kap, tetik [data-bilgi],
   içerik .bilgi-balon; masaüstünde hover, mobilde dokunuşla (app.js) açılır */
.bilgi-kap { position: relative; }
.bilgi-ac { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-3); cursor: pointer; padding: 0; flex-shrink: 0; }
.bilgi-ac .ik { width: 14px; height: 14px; }
.bilgi-ac:hover { color: var(--eylem-koyu); border-color: var(--eylem); }
.bilgi-balon {
  position: absolute; left: 10px; right: 10px; bottom: calc(100% - 4px); z-index: 60;
  background: var(--ink-1); color: var(--page); font-size: 11.5px; font-weight: 500; line-height: 1.6;
  padding: 10px 12px; border-radius: 12px; box-shadow: var(--golge-buyuk);
  opacity: 0; visibility: hidden; transform: translateY(4px); pointer-events: none;
  transition: opacity .15s ease, transform .15s ease, visibility .15s;
}
.bilgi-balon b { font-variant-numeric: tabular-nums; }
/* kaydırma alanının üst kenarında yer kalmazsa balon kartın altına açılır (app.js bilgiKonumla) */
.bilgi-kap.asagi .bilgi-balon { bottom: auto; top: calc(100% - 4px); transform: translateY(-4px); }
.bilgi-kap.acik .bilgi-balon { opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
@media (hover: hover) and (pointer: fine) {
  .bilgi-kap:hover .bilgi-balon { opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
}
.bs-hedef-alan { display: flex; align-items: center; gap: 10px; border: 1.5px solid var(--hair-2); border-radius: 12px; padding: 2px 14px; background: var(--surface); max-width: 260px; }
.bs-hedef-alan:focus-within { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent); }
.bs-hedef-alan input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-size: 22px; font-weight: 740; color: var(--ink-1); font-variant-numeric: tabular-nums; padding: 8px 0; }
.bs-hedef-ipucu { font-size: 12px; color: var(--ink-3); margin-top: 8px; }
.bs-hedef-kutu { margin-top: 12px; padding: 14px 16px; border-radius: 14px; background: var(--eylem-soft); border: 1px solid color-mix(in srgb, var(--eylem) 22%, transparent); }
.bs-hedef-kutu .t-etiket { font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; color: var(--eylem); }
.bs-hedef-kutu .bs-nakit-deger { color: var(--eylem-koyu); }
.bs-hedef-kutu .btn { margin-top: 8px; }
/* Aday kartının MALİYET yarısı ("kaça al") fiyat yarısının ("kaça sat")
   ALTINDA yaşıyor ve aynı bileşeni kullanıyor. Aynı yeşil zeminle üst üste
   konduğunda iki kutu tek cevabın tekrarı gibi okunuyordu; nötr yüzey iki
   ayrı soruyu ayırıyor. KOYU YAPILMADI — sayfanın tek koyu ögesi hüküm
   kartıdır (.ad-hukum), ikinci koyu blok o vurguyu böler. */
.bs-hedef-kutu.ad-tavan { background: var(--surface); border-color: var(--hair-2); }
.bs-hedef-kutu.ad-tavan .t-etiket { color: var(--ink-3); }
.bs-hedef-kutu.ad-tavan .bs-nakit-deger { color: var(--ink-1); }
.bs-hedef-kutu.ad-tavan .ad-satir { margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--hair); }
.bs-girdiler { margin-top: 18px; border-top: 1px solid var(--hair); padding-top: 10px; }
.bs-girdiler summary .ik { width: 15px; height: 15px; vertical-align: -3px; margin-right: 4px; }
.bs-girdi-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; margin-top: 10px; }
@media (max-width: 520px) { .bs-girdi-grid { grid-template-columns: 1fr; } }
.bs-girdi { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 650; color: var(--ink-2); min-width: 0; }
.bs-girdi-kutu { display: flex; align-items: center; gap: 6px; border: 1px solid var(--hair-2); border-radius: 9px; padding: 0 10px; background: var(--surface); }
.bs-girdi-kutu:focus-within { border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 12%, transparent); }
.bs-girdi-kutu input { flex: 1; min-width: 0; border: none; outline: none; background: transparent; font-size: 13.5px; font-weight: 600; color: var(--ink-1); padding: 8px 0; font-variant-numeric: tabular-nums; }
.bs-girdi-kutu i { font-style: normal; font-size: 11px; font-weight: 700; color: var(--ink-3); }
.bs-girdi .acilir { width: 100%; }
.bs-kaynak { font-size: 10.5px; color: var(--ink-3); line-height: 1.55; margin-top: 14px; }

/* maliyet para birimi seçici (tek kutu + ₺/$/€) */
.bs-doviz { display: flex; gap: 2px; flex-shrink: 0; }
.bs-doviz .bd {
  font-size: 11.5px; font-weight: 750; padding: 4px 8px; border-radius: 7px;
  border: none; background: transparent; color: var(--ink-3); cursor: pointer;
  font-family: var(--font-ui); line-height: 1;
}
.bs-doviz .bd:hover { color: var(--ink-1); }
.bs-doviz .bd.aktif { background: var(--eylem-soft); color: var(--eylem-koyu); }

/* ================================================================
   HESAP FÖYÜ FORMU (girdiler) + PORTFÖY MARJ TABLOSU
   ================================================================ */
/* dolgulu alan: etiket içeride, odakta petrol halka */
.bs-alan {
  display: flex; flex-direction: column; gap: 3px; min-width: 0;
  background: var(--surface-2); border: 1px solid transparent; border-radius: 12px;
  padding: 9px 12px 8px; transition: border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.bs-alan:focus-within {
  background: var(--surface); border-color: var(--eylem);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 13%, transparent);
}
.bs-alan .ba-etiket {
  font-size: 9.5px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.bs-alan .ba-karsilik { text-transform: none; letter-spacing: 0; color: var(--eylem); font-weight: 700; }
.bs-alan .ba-satir { display: flex; align-items: center; gap: 6px; min-width: 0; }
.bs-alan input {
  flex: 1; min-width: 0; border: none; outline: none; background: transparent;
  font-size: 15.5px; font-weight: 700; color: var(--ink-1); padding: 1px 0;
  font-variant-numeric: tabular-nums; font-family: var(--font-ui);
}
.bs-alan input::placeholder { color: var(--ink-3); font-weight: 500; }
.bs-alan .ba-birim { font-style: normal; font-size: 11px; font-weight: 750; color: var(--ink-3); flex-shrink: 0; }
.bs-alan.acilirli { padding-bottom: 5px; }
.bs-alan .acilir { width: 100%; }
.bs-alan .acilir-btn { border: none; background: transparent; padding: 2px 0; width: 100%; justify-content: space-between; font-size: 15px; font-weight: 700; }
.bs-alan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 8px 0 4px; }
.bs-ozet-not { font-size: 10px; font-weight: 600; color: var(--ink-3); text-transform: none; letter-spacing: 0; margin-left: 8px; }
.bs-alt-detay { margin: 12px 0 4px; border: 1px dashed var(--hair-2); border-radius: 12px; padding: 9px 12px; }
.bs-alt-detay summary { cursor: pointer; font-size: 12px; font-weight: 700; color: var(--ink-2); }
.bs-alt-detay summary:hover { color: var(--ink-1); }
.bs-alt-detay .bs-alan-grid { margin-top: 10px; }

/* Portföy görünüm sekmesi */
/* bölüm alt gezinmesi — hap sekmeler (koyu aktif); sayfa başlığının üstünde
   durur ve üst menüyle AYNI EKSENDE ortalanır: gezinme katmanı ortada,
   içerik katmanı (başlık, kartlar, tablo) ızgaraya hizalı kalır */
.gorunum-sec { display: flex; justify-content: center; gap: 7px; margin: 4px 0 6px; flex-wrap: wrap; }
.gorunum-sec .gs {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  border: 1px solid var(--hair); background: var(--surface); box-shadow: var(--golge);
  color: var(--ink-2); font-family: var(--font-ui);
  font-size: 12.5px; font-weight: 650; padding: 9px 16px; border-radius: 999px;
}
.gorunum-sec .gs .ik { width: 14px; height: 14px; }
.gorunum-sec .gs:hover { border-color: var(--hair-2); color: var(--ink-1); }
.gorunum-sec .gs.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--page); }
.gorunum-sec .gs.aktif .n-rozet { background: var(--marka); color: #fff; }

/* ================= MARJ MASASI =================
   Portföy sekmesiyle AYNI bileşenler üzerine kurulu: .u-ust ızgarası,
   .u-stat kartları, .u-hero, .u-halka, .u-kategori, .u-takip, .u-tablo,
   .u-satir, .u-sayfalar. Buradaki kurallar yalnız marja özgü olanlar.

   Yapı: [arama] → [ÜRÜN ALANI: seçili ürün ya da portföy özeti]
         → [süzgeç çipleri] → [tablo]
   Tabloda satıra dokunmak ürünü üstteki alana yükler. Masaüstü ve mobil
   aynı yapıyı paylaşır; ayrı "cep kartı" kod yolu yoktur. */

/* --- 5 kademeli sakin marj skalası ---
   Sürekli geçişli ısı haritası yerine ADI olan beş kademe. Renk tek kanal
   değil: hem yüzde hem kademe adı hapta yazılıdır (renk körlüğü güvenli). */
:root {
  --k-zarar: #c0392f;    --k-zarar-y: #fff;    --k-zarar-c: #c0392f;
  --k-sinir: #e7ebe8;    --k-sinir-y: #5b6862; --k-sinir-c: #c9d2cd;
  --k-ince: #d3ead9;     --k-ince-y: #186a44;  --k-ince-c: #a9d3bb;
  --k-saglikli: #69b189; --k-saglikli-y: #0b2f1f; --k-saglikli-c: #69b189;
  --k-guclu: #175349;    --k-guclu-y: #fff;    --k-guclu-c: #175349;
  /* erime listesi çubukları — SEKİZ kategorik renk kalktı: kalemin kimliğini
     satırdaki adı taşıyor, renk yalnız vurgu yapar. Üç dolgu kaldı ve üçü de
     doğrudan etiketli (renk tek başına anlam taşımıyor):
       kesinti → tüm kesintiler, tek sakin ton
       mal     → ürün maliyeti; kullanıcının girdiği tek kalem, marka mercanı
       eylem   → elinizde kalan (ayrı çizgiyle ayrılmış, tek koyu vurgu) */
  --mj-kesinti: #8fa89e; --mj-mal: var(--marka);
}
@media (prefers-color-scheme: dark) {
  :root {
    --k-zarar: #a8332a;    --k-zarar-y: #fff;    --k-zarar-c: #c04a3f;
    --k-sinir: #2a3038;    --k-sinir-y: #a7aebb; --k-sinir-c: #3a4249;
    --k-ince: #1d3a2c;     --k-ince-y: #8fd8ae;  --k-ince-c: #2f6a4a;
    --k-saglikli: #2f7355; --k-saglikli-y: #dcf3e6; --k-saglikli-c: #46946c;
    --k-guclu: #4fb39d;    --k-guclu-y: #08211c; --k-guclu-c: #4fb39d;
    --mj-kesinti: #5d7a6e;
  }
}
.kad {
  display: inline-flex; align-items: baseline; gap: 6px; border-radius: 999px; padding: 4.5px 11px;
  font-size: 12px; font-weight: 730; font-variant-numeric: tabular-nums; white-space: nowrap;
}
.kad small { font-size: 8.5px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; opacity: .74; }
.kad.k-zarar { background: var(--k-zarar); color: var(--k-zarar-y); }
.kad.k-sinir { background: var(--k-sinir); color: var(--k-sinir-y); }
.kad.k-ince { background: var(--k-ince); color: var(--k-ince-y); }
.kad.k-saglikli { background: var(--k-saglikli); color: var(--k-saglikli-y); }
.kad.k-guclu { background: var(--k-guclu); color: var(--k-guclu-y); }
.kad.k-bos { background: none; color: var(--ink-3); font-weight: 600; font-size: 11px; padding: 0; }
.kad-sar { display: flex; justify-content: flex-end; min-width: 0; }

/* --- düzenlenebilir alan: hücre değil "yazılabilir alan" gibi durur --- */
.mj-duzen {
  display: flex; align-items: center; justify-content: flex-end; gap: 3px;
  border: 1px solid transparent; border-radius: 9px; background: var(--surface-2);
  padding: 5px 8px 5px 6px; transition: border-color .14s, background .14s;
}
.mj-duzen:hover { border-color: var(--hair-2); }
.mj-duzen:focus-within {
  border-color: var(--eylem); background: var(--surface);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent);
}
.mj-duzen input {
  width: 100%; border: none; outline: none; background: none; font: inherit; font-family: var(--font-ui);
  font-size: 12.5px; font-weight: 650; color: var(--ink-1); text-align: right;
  font-variant-numeric: tabular-nums; -moz-appearance: textfield; padding: 0;
}
.mj-duzen input::-webkit-inner-spin-button, .mj-duzen input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.mj-duzen input::placeholder { color: var(--ink-3); font-weight: 600; }
.mj-duzen i { font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--ink-3); flex: none; }
/* maliyeti girilmemiş alan taranmış görünür — "burası bekliyor" */
.mj-duzen[data-bos] { background: var(--tarama); border-color: var(--hair); }
/* --- BAYAT KAYNAK: güncel katalog fiyatı DEĞİL ---
   "Son bilinen fiyat" ya da "gerçekleşmiş satış ortalaması" güncel fiyatla
   aynı görünürse sessizce güncel sanılır. Panelde kaynak yazıyla duruyor;
   tablo hücresinde yer yok, işaret rakamın altındaki kesik çizgi (genişlik
   eklemez, hücreyi taşırmaz). Tam cümle ipucunda. */
.mj-duzen[data-kaynak] input { text-decoration: underline dashed var(--ink-3) 1px; text-underline-offset: 3px; }
.mj-duzen[data-kaynak]:focus-within input { text-decoration: none; }

/* --- TÜRETİLEN ALAN ROZETİ: ✓ onayla · ! ölçümle ayrıştı ---
   Fiyat ve reklam gideri ölçülen bir kaynaktan gelir (birim.js girdiCoz).
   Rozet yalnız KARAR BEKLEYEN iki anda çıkar, sürekli bir etiket değildir —
   "Otomatik/Manuel" yazıları bilerek yok (kullanıcı kararı, 2026-08-12).

   ⚠ Rozet YER AÇARAK gelir (alan .rozetli iken sağ dolgu düşer), üstüne
   binmez: tablo hücresi dar ve mutlak konumlanan bir düğme rakamın son
   hanesini kapatırdı. Kap içi taşma sayfa düzeyinde görünmez. */
.mj-duzen.rozetli, .mj-hz.rozetli .hz-satir { padding-right: 3px; }
.tr-rozet {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: 19px; height: 19px; padding: 0; margin-left: 1px;
  border: 1px solid transparent; border-radius: 50%; cursor: pointer;
  background: none; color: inherit; transition: background .14s, border-color .14s, transform .1s;
}
.tr-rozet .ik { width: 13px; height: 13px; stroke-width: 2.4; }
.tr-rozet:active { transform: scale(.92); }
/* ✓ ONAYLA — eylem rengi: basılacak tek şey bu, gözü oraya çeker */
.tr-rozet.onay {
  color: var(--eylem);
  background: color-mix(in srgb, var(--eylem) 12%, transparent);
  border-color: color-mix(in srgb, var(--eylem) 30%, transparent);
}
.tr-rozet.onay:hover { background: color-mix(in srgb, var(--eylem) 22%, transparent); }
/* ! AYRIŞTI — uyarı ama alarm değil: sayı yanlış değil, sadece eskimiş.
   Dolgusuz durur ki zarardaki kırmızı rakamlarla yarışmasın. */
.tr-rozet.uyar { color: var(--dikkat-metin); border-color: color-mix(in srgb, var(--dikkat) 42%, transparent); }
.tr-rozet.uyar:hover { background: color-mix(in srgb, currentColor 14%, transparent); }
.tr-rozet:focus-visible { outline: 2px solid var(--eylem); outline-offset: 1px; }
@media (max-width: 900px) {
  /* dokunma hedefi küçülmez, yalnız ikon incelir */
  .tr-rozet { width: 22px; height: 22px; }
}

/* --- ARAMA SONUÇLARI: arama kutusunun hemen altında seçim listesi ---
   Arama zaten tabloyu süzüyor; burası "bulduğumu tek dokunuşla yukarı al"
   kısayolu. İlk 6 sonuç; gerisi tabloda kalır. */
.mj-ara-sonuc {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge-buyuk); padding: 6px; margin-bottom: 10px; overflow: hidden;
}
.mj-ara-sonuc.bos {
  padding: 14px 16px; font-size: 12.5px; color: var(--ink-2); line-height: 1.55; box-shadow: var(--golge);
}
.mj-ara-bas {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  padding: 7px 10px 8px; font-size: 11.5px; color: var(--ink-3); font-weight: 600;
}
.mj-ara-bas b { color: var(--ink-1); font-weight: 750; font-variant-numeric: tabular-nums; }
.mj-ara-bas .ms { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mj-ara-bas .mi { font-size: 10.5px; flex: none; }
.mj-ara-satir {
  display: flex; align-items: center; gap: 11px; width: 100%; padding: 8px 10px;
  border: 1px solid transparent; border-radius: 12px; background: none; cursor: pointer;
  font: inherit; font-family: var(--font-ui); text-align: left; color: inherit;
}
.mj-ara-satir:hover { background: var(--surface-2); }
.mj-ara-satir.secili { background: var(--eylem-soft); border-color: color-mix(in srgb, var(--eylem) 22%, transparent); }
.mj-ara-foto {
  width: 34px; height: 34px; border-radius: 9px; object-fit: cover; flex: none; background: var(--surface-2);
}
.mj-ara-foto.harf {
  display: grid; place-items: center; font-family: var(--font-display);
  font-size: 15px; font-weight: 600; color: var(--ink-3);
}
.mj-ara-ad { min-width: 0; flex: 1; }
.mj-ara-ad b {
  display: block; font-size: 12.5px; font-weight: 650; line-height: 1.35;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mj-ara-ad small { display: block; font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-top: 2px; font-variant-numeric: tabular-nums; }
.mj-ara-sag { display: flex; align-items: center; gap: 9px; flex: none; }
.mj-ara-sag .n { font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mj-ara-sag .n.neg { color: var(--risk-metin); }
.mj-ara-kapali {
  display: flex; align-items: center; gap: 8px; width: 100%; margin-bottom: 10px;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 999px;
  padding: 9px 16px; box-shadow: var(--golge); cursor: pointer;
  font: inherit; font-family: var(--font-ui); font-size: 12px; color: var(--ink-2); text-align: left;
}
.mj-ara-kapali b { color: var(--ink-1); font-weight: 750; font-variant-numeric: tabular-nums; }
.mj-ara-kapali span { margin-left: auto; color: var(--eylem); font-weight: 700; white-space: nowrap; }
.mj-ara-kapali:hover { border-color: var(--eylem); }
.mj-ara-dip {
  padding: 8px 10px 4px; font-size: 11px; color: var(--ink-3); font-weight: 600;
  border-top: 1px solid var(--hair); margin-top: 4px;
}
@media (max-width: 720px) {
  .mj-ara-sag .n { display: none; }
  .mj-ara-bas .mi { display: none; }
}

/* --- KOKPİT: sayfanın tanı katmanı ---
   Özet ve Portföy'ün .u-stat kartlarıyla AYNI bileşen — marj masası da
   "önce tanı, sonra iş" ritmine girsin diye. Dört kart da süzgeç düğmesidir:
   tanıya dokunmak alttaki çalışma listesini o kümeye daraltır. */
.mj-kokpit {
  display: grid; gap: 12px; align-items: stretch; margin: 2px 0 0;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, .92fr) minmax(0, 1.12fr) minmax(0, 1fr);
}
.mj-kokpit .u-bas-satir .ik { width: 14px; height: 14px; color: var(--ink-3); flex: none; }
.mj-kokpit .u-stat:hover .u-bas-satir .ik { color: var(--eylem); }
.mj-k-hero { background: var(--hero-zemin); }
.mj-k-hero > small { color: var(--hero-ink-2); }
.mj-k-hero .u-deger { font-size: 32px; color: var(--hero-ink); }
.mj-k-sizinti.aktif, .mj-k-bosluk.aktif, .mj-k-halka .u-hs.aktif {
  border-color: var(--eylem); box-shadow: 0 0 0 1px var(--eylem), var(--golge);
}
.mj-k-halka .u-hs.aktif { box-shadow: none; }
.mj-k-halka.bos { justify-content: center; }
.mj-k-halka.bos .u-not { margin-top: 8px; }
@media (max-width: 1000px) {
  .mj-kokpit { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .mj-kokpit { grid-template-columns: 1fr; gap: 10px; }
  .mj-kokpit .u-stat { padding: 12px 14px; }
  .mj-k-hero .u-deger { font-size: 27px; }
}

/* --- ÇALIŞMA ALANI: liste solda, seçili ürünün paneli sağda yapışkan ---
   Eskiden panel tablonun ÜSTÜNDE üç sütunlu geniş bir alandı ve tabloyu
   katlanın ~1500px altına itiyordu; sayfanın adı "Marj tablosu" olmasına
   rağmen tablo görünmüyordu. Artık tablo kahraman, panel refakatçi. */
.mj-calisma { display: grid; grid-template-columns: 1fr; gap: 12px; align-items: start; margin-top: 12px; }
.mj-liste { min-width: 0; }

/* --- ÜRÜN PANELİ ---
   Üç katman: hüküm (hep görünür) → hızlı girdi (fiyat · maliyet · reklam) →
   sekmeler (Sonuç / Tüm girdiler / Senaryo). Dar panelde 12 girdi kutusu yan
   yana durmaz; sekmeler eskiden yalnız mobildeydi, artık tek kod yolu. */
.mj-urun {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge-buyuk); overflow: hidden; scroll-margin-top: 90px; min-width: 0;
}
/* Çekirdek sarmalayıcı (hüküm + hızlı girdi + sekmeler): yerleşimde YOK —
   çocuklar panelin doğrudan flex kalemi gibi davranır. Yalnız dar yükseklik
   bandında (aşağıda) tek yapışkan bloğa dönüşür. */
.mj-cekirdek { display: contents; }
/* Panelin kayarak girme animasyonu KALDIRILDI: panel artık listenin yanında
   kalıcı mobilya. Her satır seçiminde aşağı kayıp belirmesi "yeni sayfa
   açılıyor" hissi veriyordu — yer değiştirme anında olmalı. */

/* başlık şeridi — İKİ SATIR (2026-08-18): üstte kimlik (görsel + ad + kodlar),
   altta gezinme. Gezinme kimliğin sağında dururken adı ~150px'e sıkıştırıyor,
   çip şeridi de okların altında kırpılıyordu. Ad sarar, kodlar eksiksiz. */
.mj-u-bas {
  display: flex; flex-direction: column; gap: 10px; padding: 15px 18px;
  border-bottom: 1px solid var(--hair); background: var(--hero-zemin);
}
.mj-u-ust { display: flex; align-items: flex-start; gap: 14px; min-width: 0; }
.mj-u-gorsel {
  width: 64px; height: 64px; border-radius: 14px; object-fit: cover; flex: none;
  background: var(--surface-2); border: 1px solid var(--hero-cizgi);
}
.mj-u-gorsel.harf {
  display: grid; place-items: center; font-family: var(--font-display);
  font-size: 25px; font-weight: 600; color: var(--ink-3);
}
.mj-u-kimlik { min-width: 0; flex: 1; }
.mj-u-kimlik h2 {
  font-size: 16px; font-weight: 700; letter-spacing: -.01em;
  color: var(--hero-ink); line-height: 1.34; margin: 0;
}
.mj-u-cipler { margin: 7px 0 0; flex-wrap: wrap; }
.mj-u-kat {
  font-size: 10.5px; font-weight: 700; color: var(--eylem); background: var(--eylem-soft);
  border-radius: 999px; padding: 4px 10px; white-space: nowrap;
}
/* gezinme şeridi: başlığın altında kendi sabit satırı — kimliğe hiç binmez */
.mj-u-bas .mj-gez { justify-content: flex-end; }

/* --- HÜKÜM: panelin değişmeyen tepesi ---
   Hangi sekme açık olursa olsun ürünün ana rakamları burada durur ve
   #mj-hukum canlı güncellenir (slider oynayınca senaryo fiyatına döner). */
.mj-hukum {
  display: grid; grid-template-columns: 1fr auto;
  grid-template-areas: "ad ad" "ana kad" "yan yan" "kusur kusur";
  gap: 9px 12px; align-items: center; padding: 13px 16px;
  border-bottom: 1px solid var(--hair); background: var(--iyi-soft);
}
/* Ürün adı yalnız MOBİLDE görünür: orada bu blok yapışkandır ve listeyi
   kaydırırken "bu rakam hangi ürünün?" sorusu cevapsız kalmamalı.
   Masaüstünde panel başlığı hemen üstte durduğu için tekrar olurdu. */
.mj-hukum .mh-ad { display: none; }
.mj-hukum.zarar { background: var(--risk-soft); }
.mj-hukum.kusurlu { background: var(--dikkat-soft); }
.mj-hukum.bos {
  display: block; background: var(--surface-2); font-size: 12px;
  color: var(--ink-2); line-height: 1.55;
}
.mj-hukum .mh-ana { grid-area: ana; min-width: 0; }
.mj-hukum .mh-ana b {
  display: block; font-family: var(--font-display); font-variation-settings: 'opsz' 36;
  font-size: 29px; font-weight: 600; letter-spacing: -.02em; line-height: 1.05; margin-top: 3px;
  color: var(--iyi-metin);
}
.mj-hukum.zarar .mh-ana b { color: var(--risk-metin); }
.mj-hukum.kusurlu .mh-ana b { color: var(--ink-1); }
.mj-hukum .mh-ana b i {
  font-style: normal; font-family: var(--font-ui); font-size: 12px;
  font-weight: 600; color: var(--ink-2); letter-spacing: 0; margin-left: 3px;
}
/* Sağ sütun: kademe hapı + ALTINDA dönem nakdi. Hapın altı zaten ölü boşluktu
   (hap align-self:start); dönem nakdi oraya taşındı ki alt şeritteki üçüncü
   sıra "reklam sonrası maliyete getiri"ye kalsın (2026-07-28). */
.mj-hukum .mh-kad {
  grid-area: kad; align-self: start;
  display: flex; flex-direction: column; align-items: flex-end; gap: 7px;
}
.mj-hukum .mh-donem { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; text-align: right; }
/* mh-yan üç metrik taşıyor (nakit marj · maliyete getiri · reklam sonrası) —
   16px boşluk dar panelde üçüncüyü alt satıra düşürüyordu. */
.mj-hukum .mh-yan { grid-area: yan; display: flex; gap: 6px 14px; flex-wrap: wrap; }
.mj-hukum .mh-yan span { display: flex; flex-direction: column; gap: 1px; }
.mj-hukum .mh-yan small, .mj-hukum .mh-donem small { font-size: 9.5px; font-weight: 750; letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3); }
.mj-hukum .mh-yan b, .mj-hukum .mh-donem b { font-size: 14px; font-weight: 750; color: var(--ink-1); white-space: nowrap; }
.mj-hukum .mh-kusur {
  grid-area: kusur; font-size: 11px; line-height: 1.45; color: var(--dikkat-metin);
  display: flex; align-items: flex-start; gap: 6px;
}
.mj-hukum .mh-kusur .ik { width: 14px; height: 14px; flex: none; margin-top: 1px; }
.mj-hukum .mh-kusur b { color: var(--ink-1); font-weight: 750; }

/* --- HIZLI GİRDİ: %90 zaman değişen üç alan, sekmelerden bağımsız --- */
.mj-hizli {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px;
  padding: 12px 16px; border-bottom: 1px solid var(--hair); background: var(--surface-2);
}
.mj-hz { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.mj-hz .hz-et { font-size: 9.5px; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-3); }
.mj-hz .hz-satir {
  display: flex; align-items: center; gap: 4px; background: var(--surface);
  border: 1px solid var(--hair); border-radius: 10px; padding: 7px 9px;
  transition: border-color .14s, box-shadow .14s;
}
.mj-hz .hz-satir:focus-within {
  border-color: var(--eylem); box-shadow: 0 0 0 3px color-mix(in srgb, var(--eylem) 14%, transparent);
}
.mj-hz input {
  width: 100%; min-width: 0; border: 0; outline: 0; background: none; font: inherit;
  font-family: var(--font-ui); font-size: 15px; font-weight: 680; color: var(--ink-1);
  font-variant-numeric: tabular-nums; -moz-appearance: textfield; padding: 0;
}
.mj-hz input::-webkit-inner-spin-button, .mj-hz input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.mj-hz input::placeholder { color: var(--ink-3); font-weight: 600; }
.mj-hz i { font-style: normal; font-size: 11px; font-weight: 700; color: var(--ink-3); flex: none; }
.mj-hz .hz-ip { font-size: 9.5px; color: var(--ink-3); font-weight: 620; }
.mj-hz.bos .hz-satir { background: var(--tarama); }
.mj-hz-puan { grid-column: 1 / -1; justify-self: start; }

/* --- SEKMELER: dar panelde tek seferde tek bölüm --- */
.mj-sekmeler {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px;
  padding: 10px 14px 0; background: var(--surface);
}
.mj-sekme {
  padding: 9px 6px; border-radius: 999px; border: 1px solid var(--hair);
  background: var(--surface); font: inherit; font-family: var(--font-ui);
  font-size: 12px; font-weight: 650; color: var(--ink-2); cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.mj-sekme:hover { border-color: var(--hair-2); color: var(--ink-1); }
.mj-sekme.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--page); }

/* --- GÖVDE: etkin olmayan bölüm gizlenir (tek seferde tek iş) --- */
.mj-u-govde { display: block; }
.mj-u-sut { padding: 14px 16px; min-width: 0; }
.mj-u-govde[data-sekme="sonuc"] .mj-u-girdiler,
.mj-u-govde[data-sekme="sonuc"] .mj-u-arac,
.mj-u-govde[data-sekme="girdiler"] .mj-u-sonuc,
.mj-u-govde[data-sekme="girdiler"] .mj-u-arac,
.mj-u-govde[data-sekme="arac"] .mj-u-sonuc,
.mj-u-govde[data-sekme="arac"] .mj-u-girdiler { display: none; }
/* büyük rakam hüküm bloğunda zaten var — sonuç bloğunda tekrarlamasın */
.mj-u-sonuc .bs-nakit { display: none; }
.mj-u-baslik {
  display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 750;
  color: var(--ink-1); letter-spacing: -.005em; margin-bottom: 10px;
}
.mj-u-baslik .ik { width: 15px; height: 15px; color: var(--eylem); flex: none; }
.mj-u-baslik .d-cip { margin-left: auto; }
.mj-u-not { font-size: 10px; font-weight: 600; color: var(--ink-3); margin-left: auto; text-align: right; }
.mj-u-aciklama { font-size: 11.5px; color: var(--ink-2); line-height: 1.5; margin: 0 0 10px; }
.mj-kademe-satir { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.mj-kademe-satir .mj-u-not { margin-left: 0; }
.mj-u-kart {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r-s);
  padding: 13px 14px; margin-bottom: 10px;
}
.mj-u-kart:last-of-type { margin-bottom: 0; }
.mj-u-dip {
  font-size: 11px; color: var(--ink-3); font-weight: 600; margin-top: 11px;
  padding-top: 10px; border-top: 1px solid var(--hair); font-variant-numeric: tabular-nums;
}
.mj-u-dip b { color: var(--ink-1); font-weight: 750; }
.mj-u-bos { text-align: center; padding: 18px 6px; }
.mj-u-bos .u-buyuk { color: var(--ink-3); }
.mj-u-bos p { font-size: 12.5px; color: var(--ink-2); line-height: 1.6; margin: 10px auto 0; max-width: 40ch; }
.mj-u-kaynak {
  font-size: 10.5px; color: var(--ink-3); line-height: 1.5;
  padding: 11px 18px; border-top: 1px solid var(--hair); background: var(--surface-2);
}
/* <button>: ürün panelini açıyor, sayfa değiştirmiyor */
.mj-detay {
  display: block; width: 100%; text-align: center; margin-top: 12px; font-size: 11.5px;
  font-weight: 650; color: var(--eylem); text-decoration: none;
  background: none; border: 0; padding: 2px 0; cursor: pointer;
  appearance: none; -webkit-appearance: none;
}
.mj-detay:hover { text-decoration: underline; }

/* girdi formu ürün alanında: sheet'teki hesap föyü dili, daha sıkı */
.mj-u-girdiler .bs-bolum { margin: 14px 0 7px; }
.mj-u-girdiler .bs-bolum:first-child { margin-top: 0; }
.mj-u-girdiler .bs-alan-grid { grid-template-columns: 1fr 1fr; gap: 7px; margin: 0; }
.mj-u-girdiler .bs-alan { padding: 7px 9px; }
.mj-u-girdiler .bs-alan input { font-size: 14px; }
/* dar sütunda etiketler kısalmasın: iki satıra sarsın (sheet'te tek satır kalır,
   orada yer var) — "PLATFORM HİZMET…" gibi kesikler okumayı bozuyordu */
.mj-u-girdiler .bs-alan .ba-etiket {
  white-space: normal; overflow: visible; text-overflow: clip;
  line-height: 1.3; min-height: 2.6em; display: flex; align-items: flex-start;
}
.mj-u-girdiler .bs-alt-detay { margin-top: 12px; }
.mj-u-girdiler .bs-ince { font-size: 10px; }

/* senaryo denetimleri sağ sütunda */
.mj-u-arac .bs-fiyat-alan { margin: 0 0 8px; }
.mj-u-arac .bs-butonlar { margin-top: 10px; }
.mj-u-arac .bs-butonlar .btn { flex: 1 1 0; padding: 7px 6px; font-size: 11.5px; }
.mj-u-arac .cipler { gap: 5px; margin: 0 0 9px; }
.mj-u-arac .cipler .cip { padding: 6px 10px; font-size: 11px; }
.mj-u-arac .bs-hedef-alan { margin: 0; }

/* canlı sonuç bloğu — sheet bileşenleri ürün alanında da geçerli */
.mj-u-sonuc .bs-nakit { margin: 0 0 12px; }
.mj-u-sonuc .mj-akis-ic { margin-top: 0; padding-top: 0; max-width: none; }
/* ikincil bloklar (yüklü maliyet · uzman notları · aylık projeksiyon) ürün
   alanında sıkıştırılır — sayfa gereksiz uzamasın; sheet'te olduğu gibi kalır */
.mj-u-sonuc .bs-ek { margin-top: 12px; }
.mj-u-sonuc .bs-ek .bs-yuklu { padding: 10px 12px; margin: 0; }
.mj-u-sonuc .bs-ek .bs-yuklu-deger { font-size: 20px; }
.mj-u-sonuc .bs-ek .bs-yuklu-alt { font-size: 10.5px; line-height: 1.45; }
.mj-u-sonuc .bs-ek .bs-notlar { margin-top: 8px; gap: 5px; }
.mj-u-sonuc .bs-ek .bs-not { padding: 8px 10px 8px 33px; font-size: 11.5px; line-height: 1.45; }
.mj-u-sonuc .bs-ek .bs-not .ik { left: 10px; }
.mj-u-sonuc .bs-ek .bs-mini-grid { grid-template-columns: repeat(4, 1fr); gap: 6px; margin-top: 8px; }
.mj-u-sonuc .bs-ek .bs-mini { padding: 8px 6px; }
.mj-u-sonuc .bs-ek .bs-mini .v { font-size: 14px; }
.mj-u-sonuc .bs-ek .bs-mini .l { font-size: 9px; line-height: 1.3; }
.mj-muhasebe { margin-top: 12px; }
.mj-muhasebe > summary {
  cursor: pointer; font-size: 11.5px; font-weight: 700; color: var(--ink-2);
  padding: 8px 0; list-style: none;
}
.mj-muhasebe > summary::-webkit-details-marker { display: none; }
.mj-muhasebe > summary::before { content: "▸ "; color: var(--ink-3); }
.mj-muhasebe[open] > summary::before { content: "▾ "; }
.mj-muhasebe > summary:hover { color: var(--ink-1); }

/* --- karar çapaları --- */
.mj-capa { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mj-capa .c { border: 1px solid var(--hair); border-radius: 12px; padding: 10px 11px; background: var(--surface-2); }
.mj-capa .lbl { font-size: 9.5px; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.mj-capa .v { font-size: 15px; font-weight: 750; margin-top: 4px; font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.mj-capa .a { font-size: 10px; color: var(--ink-3); font-weight: 600; margin-top: 2px; }
.mj-capa .c.vurgu { background: var(--eylem-soft); border-color: color-mix(in srgb, var(--eylem) 22%, transparent); }
.mj-capa .c.vurgu .v { color: var(--eylem-koyu); }

/* --- ürünler arası gezinme --- */
.mj-gez { display: flex; align-items: center; gap: 7px; }
.mj-gez-btn {
  width: 32px; height: 32px; flex: none; border-radius: 10px; border: 1px solid var(--hero-cizgi);
  background: color-mix(in srgb, var(--surface) 60%, transparent); color: var(--ink-2);
  cursor: pointer; display: grid; place-items: center; padding: 0;
}
.mj-gez-btn .ik { width: 15px; height: 15px; }
.mj-gez-btn:hover:not([disabled]) { border-color: var(--eylem); color: var(--eylem); background: var(--surface); }
.mj-gez-btn[disabled] { opacity: .32; pointer-events: none; }
.mj-gez-sayac { font-size: 12px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
/* seçili ürün süzgecin dışında kaldı — panelde kalır, sırası gösterilmez */
.mj-gez-disari {
  font-size: 10.5px; font-weight: 700; color: var(--ink-3); white-space: nowrap;
  background: var(--surface-2); border-radius: 999px; padding: 5px 10px;
}

/* --- GENİŞ MASAÜSTÜ: iki sütun, panel yapışkan ---
   .wrap 1080px olduğu için panel 348px'i geçemez; kalan ~688px tabloya yeter
   (kolonlar aşağıda daraltılıyor). Panel viewport'a sabitlenir ve KENDİ İÇİNDE
   kaydırılır: hüküm + hızlı girdi + sekmeler hep görünür kalsın diye gövde
   ayrı kaydırma kutusudur. */
@media (min-width: 1140px) {
  .mj-calisma { grid-template-columns: minmax(0, 1fr) 348px; }
  .mj-panel {
    position: sticky; top: 84px; max-height: calc(100vh - 104px);
    display: flex; flex-direction: column;
  }
  .mj-panel .mj-u-govde { overflow-y: auto; min-height: 0; overscroll-behavior: contain; }
  /* ⚠ `.duz-yok` DA LİSTEDE: `urun_duzenle` yoksa hızlı girdinin YERİNE geçiyor
     ve panel bir flex kolon — `flex: none` olmadan gövde onu sıkıştırır ve
     cümle iki satıra kırpılırdı (kap içi taşma sayfa düzeyinde görünmez). */
  .mj-panel .mj-u-bas, .mj-panel #mj-hukum, .mj-panel .mj-hizli,
  .mj-cekirdek > .duz-yok,
  .mj-panel .mj-sekmeler, .mj-panel .mj-detay, .mj-panel .mj-u-kaynak { flex: none; }
  .mj-cekirdek > .duz-yok { margin: 12px 16px; }
  .mj-panel .mj-u-bas { padding: 12px 16px; gap: 9px; }
  .mj-panel .mj-u-ust { gap: 11px; }
  .mj-panel .mj-u-gorsel { width: 56px; height: 56px; border-radius: 12px; }
  /* ad kırpılmaz (2026-08-18): clamp "Nano Cam…" bırakıyordu — sarar, tam okunur */
  .mj-panel .mj-u-kimlik h2 { font-size: 14px; }
  /* kimlik çipleri SARAR (2026-08-18): yatay kaydırma şeridi + kenar solması
     "STOK K…" diye yarım kod bırakıyordu; kodlar eksiksiz görünmek zorunda */
  .mj-panel .mj-u-cipler { margin-top: 6px; }
  .mj-panel .mj-u-cipler .kopya-cip { padding: 4px 8px; font-size: 10px; gap: 5px; }
  .mj-panel .mj-u-cipler .kopya-cip .kc-etiket { font-size: 8.5px; letter-spacing: .05em; }
  .mj-panel .mj-u-kat { font-size: 9.5px; padding: 3px 8px; }
  .mj-panel .mj-gez-btn { width: 28px; height: 28px; border-radius: 9px; }
  .mj-panel .mj-gez-sayac { font-size: 11px; }
}
/* --- DAR YÜKSEKLİK MASAÜSTÜ (küçük laptop: 1366×768, 1280×800) ---
   Sabit katmanlar (başlık + hüküm + hızlı girdi) dar yükseklikte panel
   tavanını (100vh-104) tek başına doldurabiliyor; gövde ayrı kaydırma
   kutusu olunca sekme şeridi `overflow:hidden` kapta SESSİZCE kırpılıyor
   ve Sonuç/Tüm girdiler/Senaryo'ya ulaşılamıyordu (2026-08-25). Bu bantta
   panel TEK PARÇA kayar; ÇEKİRDEK (hüküm + hızlı girdi + sekmeler) panelin
   KENDİ kaydırmasında tek yapışkan bloktur: kimlik başlığı kayıp gider,
   çalışma katmanları geniş ekrandaki gibi yerinde kalır — slider oynarken
   hüküm görünür (ilk sürüm yalnız sekmeyi yapıştırıyordu, hüküm kayboluyordu).
   1139px bloğundaki "sticky ebeveynini aşamaz" dersi burada geçerli değil:
   kaydırma kabı panelin kendisi, çekirdek doğrudan çocuğu. Üç katman ayrı
   ayrı yapışamazdı — ikincinin `top`u birincinin değişken yüksekliği. */
@media (min-width: 1140px) and (max-height: 760px) {
  .mj-panel { overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; }
  .mj-panel .mj-u-govde { overflow-y: visible; min-height: auto; }
  .mj-panel .mj-cekirdek { display: block; flex: none; position: sticky; top: 0; z-index: 2; }
  .mj-panel .mj-sekmeler { padding-bottom: 9px; border-bottom: 1px solid var(--hair); }
}
/* --- MARJ PANELİ ALT SHEET İÇİNDE (mobil) ---
   Satıra dokunulunca düzenleme alanı ekrana gelir. Panel sheet'in kendi
   çerçevesini kullanır: kendi kart kenarı/gölgesi kalkar, kenarlara yayılır. */
.sheet-icerik > .mj-panel {
  border: 0; box-shadow: none; border-radius: 0;
  margin: -6px -20px -22px; /* .sheet-icerik padding'ini iptal eder */
}
.sheet-icerik > .mj-panel .mj-u-bas { padding-right: 46px; } /* ✕ ile çakışmasın */
.mj-sheet-x { position: absolute; top: 12px; right: 12px; z-index: 2; }

/* --- dar masaüstü ve altı: tek sütun ---
   Panel burada ÇİZİLMEZ (sheet'te açılıyor); kurallar sheet içindeki panel
   için de geçerli olsun diye kırılımda tutuluyor. */
@media (max-width: 1139px) {
  .mj-panel { order: -1; }
  .mj-hizli { grid-template-columns: repeat(3, minmax(0, 1fr)); }

  /* Ürün adı hükümde yazılır çünkü mobilde panel başlığındaki h2 gizli
     (aynı adı iki kez göstermek ~60px boşa gidiyordu).
     NOT: bu bloğu yapışkan yapmayı denedim, ÇALIŞMIYOR — position:sticky
     kendi ebeveyninin sınırını aşamaz; hüküm panelin içinde olduğu için panel
     bitince yapışkanlık da bitiyor, liste kaydırılırken ekranda kalmıyor.
     Seçim onayını satır vurgusu + satırın kendi "kalan/fiyat" şeridi veriyor.
     Kalıcı bir şerit istenirse panelin DIŞINDA ayrı bir blok gerekir. */
  .mj-hukum { gap: 7px 12px; }
  .mj-hukum .mh-ad {
    display: block; grid-area: ad; font-size: 11.5px; font-weight: 700;
    color: var(--ink-2); line-height: 1.35; overflow-wrap: break-word;
    /* tek satır + ellipsis KALDIRILDI (2026-08-18): mobilde panel başlığında
       ad yok, buradaki tek nüsha kesilince ürün ayırt edilemiyordu — sarar */
  }
  .mj-hukum.bos .mh-ad { margin-bottom: 5px; }
  .mj-hukum.bos p { margin: 0; }
}

/* ================= MOBİL: TEK AKIŞ, YOĞUN KART YIĞINI =================
   Sorun: veriye ulaşmadan önce ~600px krom (başlık + üç satır alt metin +
   tarih hapı + arama) vardı, sonra 4 kokpit kartı dikey dizilip her biri
   ~190px yer kaplıyordu. Kullanıcı "açınca görsün direk, bu kadar basit
   olsun" dedi — krom sıkışır, kokpit yoğunlaşır, kart yığını öne gelir. */
@media (max-width: 720px) {
  /* --- krom: başlık bloğu tek satıra iner --- */
  .gorunum-sec { margin-bottom: 8px; }
  #sayfa .kokpit-ust { margin: 6px 0 8px; gap: 8px; align-items: center; }
  #sayfa .kokpit-ust .sayfa-baslik { font-size: 26px; }
  /* uzun açıklama mobilde üç satır yiyordu; iş zaten ekranda görünüyor */
  #sayfa .kokpit-ust .sayfa-alt { display: none; }
  .kokpit-ust .donem-kap { margin-left: auto; }
  .kokpit-ust .k-tarih { padding: 7px 12px; font-size: 11.5px; }
  .kokpit-ust .k-tarih span { font-size: 8.5px; }

  /* --- kokpit: YATAY KAYDIRMALI ŞERİT ---
     Dört kart dikey dizilince ~860px yiyordu ve ürün kartını katlanın çok
     altına itiyordu ("açınca görsün direk" bunun tam tersi). Şerit hâlinde
     dikey maliyet TEK kart yüksekliğine iner (~150px); dördü de tek yatay
     kaydırmayla gelir, hiçbir bilgi gizlenmez. Kapsanmış yatay kaydırma
     belge taşması doğurmaz. */
  .mj-kokpit {
    display: grid; grid-auto-flow: column; grid-template-columns: none;
    grid-auto-columns: 78%; gap: 8px;
    overflow-x: auto; overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory; scrollbar-width: none;
    /* kartların gölgesi kırpılmasın + sola/sağa nefes payı */
    padding: 4px 14px 6px; margin-left: -14px; margin-right: -14px;
  }
  .mj-kokpit::-webkit-scrollbar { display: none; }
  .mj-kokpit > * { scroll-snap-align: center; padding: 12px 14px; }
  .mj-kokpit .u-deger { font-size: 26px; }
  .mj-k-hero .u-deger { font-size: 29px; }
  .mj-kokpit .u-dip { padding-top: 9px; }
  .mj-kokpit .u-not {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; font-size: 10px;
  }
  .mj-k-halka .u-halka { width: 62px; height: 62px; }
  .mj-k-halka .u-halka-govde { gap: 10px; }
  .mj-k-halka .u-hs { font-size: 10.5px; padding: 2px 0; }

  /* --- panel başlığı: üstte görsel + kodlar, altta gezinme şeridi ---
     Ürün adı başlıktan KALDIRILDI: hemen altındaki hükümde zaten yazıyor.
     İki yerde göstermek ~60px'i boşa harcıyordu. */
  .mj-panel .mj-u-bas { padding: 12px 14px 10px; gap: 8px; }
  .mj-panel .mj-u-ust { align-items: center; gap: 10px; }
  .mj-panel .mj-u-kimlik h2 { display: none; }
  .mj-panel .mj-u-cipler { margin-top: 0; }
  /* Model/formül açıklaması mobilde ~150px yiyip listeyi aşağı itiyordu:
     iki satıra kırpılır, tamamı title'da kalır. */
  .mj-panel .mj-u-kaynak {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; padding: 9px 14px;
  }
  /* çip şeridi kesik bitmesin — devamı olduğu belli olsun */
  .u-cipler {
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 22px), transparent);
  }
  /* kimlik çipleri SARAR (2026-08-18): kaydırma şeridi "STOK K…" diye yarım
     kod bırakıyordu; kodlar eksiksiz görünmek zorunda (satır maliyeti kabul) */
}
@media (max-width: 900px) {
  .mj-u-sonuc .bs-ek .bs-mini-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  .mj-u-bas { padding: 12px 14px; gap: 8px; }
  .mj-u-ust { gap: 10px; }
  .mj-u-gorsel { width: 56px; height: 56px; border-radius: 12px; }
  /* ad kırpılmaz (2026-08-18): clamp yarım ad bırakıyordu — sarar, tam okunur */
  .mj-u-kimlik h2 { font-size: 14px; }
  /* kimlik çipleri küçülüp yan yana dizilir, sığmayınca alt satıra SARAR */
  .mj-u-cipler { gap: 5px; margin-top: 6px; }
  .mj-u-cipler .kopya-cip { padding: 4px 8px; font-size: 10px; gap: 5px; }
  .mj-u-cipler .kopya-cip .kc-etiket { font-size: 8.5px; letter-spacing: .05em; }
  .mj-u-kat { font-size: 9.5px; padding: 3px 8px; }
  /* gezinme kendi satırında: ‹ solda, sayaç ortada, › sağda — başparmak dostu */
  .mj-u-bas .mj-gez { width: 100%; justify-content: space-between; }
  .mj-u-sut { padding: 14px; }
  .mj-u-arac { grid-template-columns: 1fr; }
  .mj-u-girdiler .bs-alan-grid { grid-template-columns: 1fr; }
  .mj-capa { grid-template-columns: 1fr 1fr; }
}

/* --- erime bandı: portföy ölçeğinde hero'da, ürün ölçeğinde ürün alanında.
   Tek görsel dil, iki ölçek. Portföy sekmesinde burada gezinilebilir ciro
   grafiği var; marjda GÜNLÜK katkı serisi motorda YOK — uydurma eğri yerine
   dönemin gerçek erimesi gösterilir. --- */
.mj-akis { margin-top: auto; max-width: 58%; width: 100%; padding-top: 18px; position: relative; z-index: 1; }
.mj-akis-bas {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 8px;
  font-size: 11px; font-weight: 650; color: var(--hero-ink-2);
}
.mj-akis-bas b { font-size: 13px; font-weight: 750; color: var(--hero-ink); font-variant-numeric: tabular-nums; }

/* --- BAR LİSTE: fiyatın kalemlere dağılımı ---
   Eskiden tek bir yığın şeridiydi ve etiketler dilimlerin İÇİNDE yazıyordu;
   panel 316px'e inince dilimler daralıp etiketler kırpıldı ("MALİYET" yanında
   tek harflik "K" gibi). Artık her kalem kendi satırında: etiket çubuğun
   DIŞINDA, yani panel ne kadar darsa da hiçbir metin kırpılmaz.

   İki satır: etiket üstte tam genişlikte (uzun adlar sığsın), çubuk + tutar +
   yüzde altta. Renk tek sakin ton; yalnız KALAN koyu vurgu — kimliği renk
   değil satırdaki ad taşıyor, 8 kategorik renge gerek yok. */
.mj-sel-liste { display: flex; flex-direction: column; }
.mj-sel-satir {
  display: grid; grid-template-columns: minmax(0, 1fr) auto 34px;
  grid-template-areas: "et tt pay" "cub cub cub";
  gap: 3px 9px; align-items: center;
  padding: 5px 0 7px; border-bottom: 1px solid var(--hero-cizgi); font-size: 11.5px;
}
.mj-sel-satir:last-child { border-bottom: none; }
.mj-sel-satir .et {
  grid-area: et; color: var(--hero-ink-2); font-weight: 620; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.mj-sel-satir .tt {
  grid-area: tt; font-weight: 700; font-variant-numeric: tabular-nums;
  text-align: right; white-space: nowrap; color: var(--hero-ink);
}
.mj-sel-satir .pay {
  grid-area: pay; font-size: 10.5px; color: var(--ink-3); font-weight: 650;
  text-align: right; font-variant-numeric: tabular-nums;
}
/* çubuk: ince mark, uçları yuvarlatılmış, zemin bir ton açık ray */
.mj-sel-satir .cub {
  grid-area: cub; display: block; height: 6px; border-radius: 4px;
  background: var(--hero-cizgi); overflow: hidden;
}
.mj-sel-satir .cub i {
  display: block; height: 100%; border-radius: 4px; min-width: 3px;
  background: var(--mj-kesinti);
}
/* ürün maliyeti markanın mercanıyla — girdisi kullanıcıya ait tek kalem */
.mj-sel-satir.urun .cub i { background: var(--mj-mal); }
.mj-sel-satir.kalan {
  border-top: 1.5px solid var(--hero-ink); border-bottom: none;
  margin-top: 4px; padding-top: 9px;
}
.mj-sel-satir.kalan .et { color: var(--hero-ink); font-weight: 760; }
.mj-sel-satir.kalan .tt { font-size: 14px; font-weight: 800; }
.mj-sel-satir.kalan .cub i { background: var(--eylem); }
/* zararda kalan: koyu yeşil "iyi" sinyali verirdi — risk tonuna döner */
.mj-sel-satir.kalan.neg .tt { color: var(--risk-metin); }
.mj-sel-satir.kalan.neg .cub i { background: var(--risk); }



/* --- süzgeç çipleri --- */
.mj-cipler { margin-top: 14px; }
.mj-kat-sec { display: inline-flex; margin-left: auto; }
.mj-kat-sec .acilir-btn { padding: 7px 13px; border-radius: 999px; box-shadow: var(--golge); }
.mj-boyut { display: inline-flex; gap: 4px; }
.mj-boyut .u-cip { padding: 8px 11px; }

/* --- TABLO: .u-tablo iskeleti, marjın kendi kolonlarıyla --- */
.mj-tablo .u-bas, .mj-tablo .u-satir {
  grid-template-columns: 44px minmax(130px, 1.6fr) 82px 84px 84px 80px 90px 122px;
}
.mj-tablo .u-satir { align-items: center; }
.mj-tablo .u-satir .foto { width: 38px; height: 38px; }
.mj-tablo .u-satir .foto .urun-thumb {
  width: 38px; height: 38px; border-radius: 10px; object-fit: cover; background: var(--surface-2); display: block;
}
.mj-tablo .u-satir .foto .urun-thumb.harf {
  display: grid; place-items: center; font-family: var(--font-display);
  font-size: 17px; font-weight: 600; color: var(--ink-3);
}
.mj-tablo .u-satir.secili { background: var(--eylem-soft); }
.mj-tablo .u-satir.secili::before {
  content: ""; position: absolute; left: -16px; top: 0; bottom: 0; width: 3px; background: var(--eylem);
}
.mj-tablo .u-satir .n.kalin { font-weight: 750; font-size: 13px; }
.mj-eksik { grid-column: 4 / 8; font-size: 11.5px; color: var(--ink-3); font-weight: 600; }
.mj-varyant { background: color-mix(in srgb, var(--surface-2) 55%, transparent); cursor: default; }
.mj-varyant .mj-dal { display: grid; place-items: center; color: var(--ink-3); font-weight: 700; font-size: 15px; }
.mj-varyant .ad b { font-size: 12px; -webkit-line-clamp: 1; }
.mj-mob { display: none; }

/* --- iki sütunlu yerleşimde tablo dar kalır (panel 348px alıyor) ---
   Kolonlar sıkışır ama HİÇBİRİ DÜŞMEZ: fiyat/maliyet/reklam satır içi
   düzenlemesi ve ciroya göre sıralama korunur. Bu blok .mj-tablo temel
   kuralından SONRA gelmek zorunda — aynı özgüllükte, sonraki kazanır. */
@media (min-width: 1140px) {
  .mj-tablo .u-bas, .mj-tablo .u-satir {
    grid-template-columns: 38px minmax(80px, 1fr) 66px 72px 72px 64px 76px 100px;
  }
  .mj-tablo .u-satir .foto, .mj-tablo .u-satir .foto .urun-thumb { width: 34px; height: 34px; }
  .mj-tablo .u-bas button { font-size: 9.5px; letter-spacing: .02em; }
  .mj-tablo .u-satir .ad b { font-size: 12px; }
  .mj-tablo .u-satir .ad small { font-size: 10px; }
  .mj-tablo .mj-duzen { padding: 5px 5px 5px 3px; }
  .mj-tablo .mj-duzen input { font-size: 11.5px; }
  .mj-tablo .mj-duzen i { font-size: 9.5px; }
  .mj-tablo .n.soluk, .mj-tablo .n.kalin, .mj-tablo .n { font-size: 11.5px; }
  .mj-tablo .kad { padding: 4px 7px; font-size: 10.5px; gap: 4px; }
  .mj-tablo .kad small { font-size: 7.5px; }
}
/* --- dar masaüstü / tablet: tek sütun, tabloya tam genişlik --- */
@media (max-width: 1139px) {
  .mj-akis { max-width: none; }
  .mj-tablo .u-bas, .mj-tablo .u-satir {
    grid-template-columns: 40px minmax(110px, 1.5fr) 74px 78px 78px 74px 84px 108px;
  }
}

/* --- mobil: satır KENDİ düzenini alır (daraltılmış tablo değil).
   Üst sıra: görsel · ad · kademe hapı. Alt sıra: kalan + girdi özeti.
   Düzenleme mobilde satırda değil, yukarıdaki ürün alanında yapılır. --- */
@media (max-width: 720px) {
  .mj-tablo .u-bas { display: none; }
  .mj-tablo .u-satir {
    grid-template-columns: 44px minmax(0, 1fr) auto;
    grid-template-areas: "foto ad kad" "foto mob mob";
    gap: 4px 11px; padding: 11px 2px; align-items: start;
  }
  .mj-tablo .u-satir .foto { grid-area: foto; width: 44px; height: 44px; align-self: start; }
  .mj-tablo .u-satir .foto .urun-thumb { width: 44px; height: 44px; border-radius: 11px; }
  .mj-tablo .u-satir .ad { grid-area: ad; }
  .mj-tablo .u-satir .ad b { -webkit-line-clamp: 3; }
  .mj-tablo .u-satir .kad-sar { grid-area: kad; align-self: start; }
  .mj-tablo .u-satir .mj-mob { grid-area: mob; align-self: end; }
  .mj-tablo .u-satir .mj-duzen, .mj-tablo .u-satir .n, .mj-eksik { display: none; }
  .mj-tablo .u-satir.secili::before { left: -12px; }
  .mj-mob {
    display: block; font-size: 11px; color: var(--ink-3); font-weight: 600;
    font-variant-numeric: tabular-nums; line-height: 1.5;
  }
  .mj-mob b { font-weight: 770; color: var(--ink-1); font-size: 14px; letter-spacing: -.01em; }
  .mj-mob b.neg { color: var(--risk-metin); }
  .mj-mob b.bekle { color: var(--ink-2); font-size: 12px; font-weight: 700; }
  .mj-mob i { font-style: normal; color: var(--ink-3); font-size: 11px; }
  .mj-mob .ayir { display: block; }
  .kad { padding: 4px 9px; font-size: 11.5px; }
  .kad small { display: none; }
  .mj-capa { grid-template-columns: 1fr 1fr; }
}
/* ============================================================
   TEKLİFLER — Trendyol kampanya bantları · v6 (2026-07-25)

   Dil: Özet, Portföy ve Marj masasıyla AYNI. Kokpit .u-stat kartlarıyla,
   dağılım .u-halka ile, süzgeçler .u-cip haplarıyla, detay .sheet-kap.yan
   paneliyle kurulur. Sayfaya ÖZGÜ tek bileşen bant kutusudur (.tk-bant):
   karar taşıyan, seçilebilir fiyat kutusu.

   v6'da düzeltilenler: hüküm katmanı yoktu (düz metin özet satırı), yedi
   süzgeç çipi sayfa boyutu çipleriyle aynı satırdaydı, bant etiketleri
   kutunun dışına taşıyordu, mobil kart masaüstünden eksik veri gösteriyordu,
   detay masaüstünde de alt sheet olarak açılıyordu.
   ============================================================ */
.tk-kok { min-width: 0; }

/* ---- üst şerit: solda gezinme (tür sekmeleri), sağda kapsam (dönem) ----
   Eskiden bu satırda beş ayrı ağırlıkta kontrol yan yanaydı; veri girişi
   araç çubuğuna, panel yapıştırma nadir işler sheet'ine taşındı. */
.tk-ust { display: flex; align-items: center; gap: 10px 14px; flex-wrap: wrap; margin: 2px 0 14px; }
.tk-ust .cipler { margin: 0; }
.tk-turler .cip.pasif { opacity: .5; cursor: default; }
.tk-turler .cip .n { margin-left: 5px; }
.tk-donem { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-left: auto; }
.tk-donem .acilir-btn { border-radius: 999px; }
@media (max-width: 760px) {
  .tk-donem { margin-left: 0; width: 100%; }
  .tk-donem .acilir { flex: 1 1 200px; min-width: 0; }
  .tk-donem .acilir-btn { width: 100%; justify-content: space-between; }
}

/* ---- KOKPİT: sayfanın tanı katmanı ----
   Marj masasının .mj-kokpit ızgarasıyla aynı: dört kartın üçü süzgeç kapısı,
   dördüncüsü hükümlerin ayrık dağılımı. Hiçbir kart projeksiyon göstermez. */
.tk-kokpit {
  display: grid; gap: 12px; align-items: stretch; margin: 2px 0 0;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, .82fr) minmax(0, 1fr) minmax(0, 1.06fr);
}
.tk-kokpit .u-bas-satir .ik { width: 14px; height: 14px; color: var(--ink-3); flex: none; }
.tk-kokpit button.u-stat:hover .u-bas-satir .ik { color: var(--eylem); }
.tk-k-hero { background: var(--hero-zemin); }
.tk-k-hero > small { color: var(--hero-ink-2); font-size: 10.5px; font-weight: 750; letter-spacing: .09em; }
.tk-k-hero .u-deger { font-size: 34px; color: var(--hero-ink); margin-top: 5px; }
.tk-k-hero .u-deger .birim { font-size: .42em; }
.tk-k-hero .u-not { font-size: 11.5px; color: var(--ink-2); }
.tk-k-hero .u-not b { color: var(--ink-1); font-weight: 750; }
.tk-k-firsat .u-bas-satir .ik { color: var(--dikkat); }
.tk-k-firsat.aktif, .tk-k-eksik.aktif { border-color: var(--eylem); box-shadow: 0 0 0 1px var(--eylem), var(--golge); }
.tk-k-halka.bos { justify-content: center; }
.tk-k-halka.bos .u-not { margin-top: 8px; }
.tk-k-halka .u-hs.aktif { color: var(--eylem); }
@media (max-width: 1040px) { .tk-kokpit { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) {
  /* Dördü alt alta ~800px yer kaplıyordu: kullanıcı ilk ürünü görmeden
     ekranlarca kaydırıyordu. İki süzgeç kartı yan yana; anlatı taşıyan iki
     kart (hero + dağılım) tam genişlikte kalır. */
  .tk-kokpit { grid-template-columns: 1fr 1fr; gap: 9px; }
  .tk-k-hero, .tk-k-halka { grid-column: 1 / -1; }
  .tk-kokpit .u-stat { padding: 12px 13px; }
  .tk-k-hero .u-deger { font-size: 29px; }
  .tk-k-firsat .u-deger, .tk-k-eksik .u-deger { font-size: 25px; }
  .tk-k-firsat .u-not, .tk-k-eksik .u-not { font-size: 10px; }
}

/* boş durum — düz uyarı kartı değil, Portföy'ün hero dili */
.tk-bos { min-height: 0; padding: 26px 26px 24px; }
.tk-bos h2 { display: flex; align-items: center; gap: 9px; font-size: 18px; }
.tk-bos h2 .ik { width: 20px; height: 20px; color: var(--eylem); }
.tk-bos .bh-alt { font-size: 13px; color: var(--hero-ink-2); line-height: 1.65; max-width: 620px; margin-top: 8px; }
.tk-bos-eylem { margin-top: 16px; }

/* künye — verinin kaynağı ve kapsamı (hüküm dağılımı artık kokpitte) */
.tk-ozet { margin: 13px 0 10px; font-size: 11.5px; color: var(--ink-3); font-weight: 620; max-width: none; }

/* ---- FLAŞ TAKVİMİ ----------------------------------------------------------
   Flaş dosyası tek dönem değil bir HAFTALIK TAKVİM getiriyor (8 gün × ~50
   ürün). Gün seçimi açılır listeye sığmadığı için ay ızgarası: hücrede gün
   numarası (serif), o günün flaş sayısı ve varsa ★ fırsat sayısı.
   Üç durum üç renk (kullanıcı isteği): geçmiş soluk + üstü çizili sayı,
   bugün tek koyu vurgu (petrol dolgu), gelecek accent kenarlı açık yüzey. */
.tk-takvim { background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r); box-shadow: var(--golge); padding: 13px 14px 14px; margin-bottom: 12px; }
.tk-tk-ust { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 11px; }
.tk-tk-bas { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.tk-tk-bas .ik { width: 14px; height: 14px; color: var(--eylem); }
.tk-tk-ay + .tk-tk-ay { margin-top: 12px; }
.tk-tk-ay-ad { font-size: 12px; font-weight: 700; color: var(--ink-2); margin-bottom: 6px; }
.tk-tk-hafta, .tk-tk-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.tk-tk-hafta { margin-bottom: 4px; }
.tk-tk-hafta i { font-style: normal; font-size: 9.5px; font-weight: 650; letter-spacing: .04em; color: var(--ink-3); text-align: center; }
.tk-tk-bos { display: flex; align-items: center; justify-content: center; min-height: 52px; border-radius: 9px; font-size: 11px; color: color-mix(in srgb, var(--ink-3) 45%, transparent); font-variant-numeric: tabular-nums; }
.tk-tk-bos[data-bugun] { border: 1px dashed var(--hair-2); }
.tk-tk-gun {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
  min-height: 52px; padding: 5px 3px; border-radius: 9px; cursor: pointer;
  border: 1px solid var(--hair-2); background: var(--surface); color: var(--ink-2);
  transition: border-color .14s, background .14s, transform .1s;
}
.tk-tk-gun:hover { border-color: var(--eylem); transform: translateY(-1px); }
.tk-tk-gun b { font-family: var(--serif, Georgia, serif); font-size: 16px; font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.tk-tk-gun i { font-style: normal; font-size: 9.5px; font-weight: 650; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.tk-tk-gun em { font-style: normal; display: inline-flex; align-items: center; gap: 1px; font-size: 9px; font-weight: 750; color: var(--dikkat-metin); }
.tk-tk-gun em .ik { width: 8px; height: 8px; }
.tk-tk-gun em.kz { color: var(--iyi-metin, var(--iyi)); }
/* gelecek — eyleme açık, accent kenar */
.tk-tk-gun.g-gelecek { border-color: color-mix(in srgb, var(--eylem) 32%, var(--hair-2)); background: color-mix(in srgb, var(--eylem-soft) 45%, transparent); }
/* bugün — sayfanın TEK koyu vurgusu */
.tk-tk-gun.g-bugun { background: var(--eylem); border-color: var(--eylem); color: #fff; }
.tk-tk-gun.g-bugun i, .tk-tk-gun.g-bugun em, .tk-tk-gun.g-bugun em.kz { color: color-mix(in srgb, #fff 78%, transparent); }
.tk-tk-gun.g-bugun:hover { background: var(--eylem-koyu); }
/* geçmiş — soluk, eyleme kapalı olduğu görünsün */
.tk-tk-gun.g-gecmis { opacity: .5; border-style: dashed; }
.tk-tk-gun.g-gecmis b { text-decoration: line-through; text-decoration-thickness: 1px; }
.tk-tk-gun.aktif { box-shadow: 0 0 0 2px var(--eylem); border-color: var(--eylem); }
.tk-tk-gun.g-bugun.aktif { box-shadow: 0 0 0 2px color-mix(in srgb, var(--eylem) 45%, transparent); }
.tk-tk-ozet { margin: -2px 0 12px; font-size: 11.5px; color: var(--ink-2); font-weight: 620; line-height: 1.6; }
.tk-tk-ozet b { color: var(--ink); font-weight: 750; }
.tk-tk-ozet i { font-style: normal; color: var(--ink-3); }
.tk-tk-ozet.gecti { color: var(--ink-3); }
@media (max-width: 560px) {
  .tk-takvim { padding: 11px 10px 12px; }
  .tk-tk-hafta, .tk-tk-grid { gap: 4px; }
  .tk-tk-gun, .tk-tk-bos { min-height: 46px; }
  .tk-tk-gun b { font-size: 14px; }
  .tk-tk-gun i { font-size: 9px; }
}

/* satır/kart üzerinde flaş günü çipi — aynı ürün birden çok günde listelenir */
.tk-gun-cip {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
  font-size: 9.5px; font-weight: 700; letter-spacing: .01em; white-space: nowrap;
  border: 1px solid var(--hair-2); color: var(--ink-3);
}
.tk-gun-cip.g-gelecek { border-color: color-mix(in srgb, var(--eylem) 40%, var(--hair-2)); background: var(--eylem-soft); color: var(--eylem); }
.tk-gun-cip.g-bugun { background: var(--eylem); border-color: var(--eylem); color: #fff; }
.tk-gun-cip.g-gecmis { opacity: .65; text-decoration: line-through; }
/* günü geçen flaş satırı — okunur ama eyleme kapalı olduğu belli */
.tk-satir-gecti { opacity: .62; }
.tk-satir-gecti:hover { opacity: .85; }

/* ürünün diğer flaş günleri (paneldeki "Ürünün Tüm Flaşlarını Gör") */
.tk-kardes { display: flex; flex-direction: column; gap: 5px; }
.tk-kardes-satir {
  display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 10px;
  padding: 8px 11px; border: 1px solid var(--hair-2); border-radius: 10px;
  background: var(--surface); color: var(--ink-2); font-size: 12px; font-weight: 640;
  cursor: pointer; text-align: left; transition: border-color .14s;
}
.tk-kardes-satir:hover { border-color: var(--eylem); }
.tk-kardes-satir.g-gecmis { opacity: .6; border-style: dashed; }
.tk-kardes-satir.g-bugun { border-color: color-mix(in srgb, var(--eylem) 45%, var(--hair-2)); background: color-mix(in srgb, var(--eylem-soft) 50%, transparent); }
.tk-kardes-gun { display: inline-flex; align-items: baseline; gap: 6px; color: var(--ink); }
.tk-kardes-gun i { font-style: normal; font-size: 9.5px; font-weight: 700; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; }
.tk-kardes-fiyat { font-variant-numeric: tabular-nums; font-weight: 700; }
.tk-stok-uyari { margin-top: 10px; }

/* ---- araç çubuğu: süzgeç çipleri solda, veri + nadir işler sağda ---- */
/* Düzen Portföy'ün araç çubuğuyla AYNI (.u-arac ızgarası + ortalanmış
   .u-cipler şeridi) — kullanıcı talimatı, 2026-07-26. Buradaki kurallar yalnız
   teklife özgü farklar: çip ikonu küçültme ve üç düğmenin dar ekranda sarması.
   Eski hâl (arama solda kendi satırında, çipler sola yaslı) bırakıldı. */
.tk-arac { margin-top: 0; }
.tk-cipler { margin: 0 0 12px; }
.tk-cipler .u-cip .ik { width: 13px; height: 13px; }
/* Teklifte sağda ÜÇ düğme var (Portföy'de iki): yapıştır · Excel · araçlar.
   Ortadaki arama kolonu Portföy'le aynı kalsın (440px) diye sağ kolona ~294px
   düşüyor; "Komisyonları yapıştır" etiketi tek satıra sığmıyor. Etiketi
   ikona indirmek yerine SARMASINA izin veriliyor — o düğme kararları
   tahminden kesin hükme çeviren tek adım, etiketi görünmek zorunda
   (kullanıcı talimatı, 2026-07-25). İki satır bilinçli: satır aralığı
   düzenli, grup sağa yaslı, arama kutusu dikeyde ortalı kalıyor. */
.tk-arac-sag { flex-wrap: wrap; justify-content: flex-end; row-gap: 6px; align-content: center; }

/* panel yapıştırma düğmesi: kapsamı da söyler — kesin oran yoksa kehribar
   nokta, kısmen varsa N/M sayacı, tamamsa tik ikonu */
.tk-panel-btn { position: relative; }
.tk-panel-btn.eksik { border-color: color-mix(in srgb, var(--dikkat) 55%, transparent); color: var(--dikkat-metin); }
.tk-panel-btn.eksik:hover { border-color: var(--dikkat); }
.tk-panel-btn.eksik::after {
  content: ""; position: absolute; top: -2px; right: -2px; width: 7px; height: 7px;
  border-radius: 50%; background: var(--dikkat); border: 1.5px solid var(--page);
}
.tk-panel-btn.tam { color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 45%, transparent); }
.tk-panel-btn.tam .ik { color: var(--iyi); }
.tk-panel-say {
  margin-left: 2px; padding: 1px 6px; border-radius: 999px; background: var(--notr-soft);
  color: var(--ink-2); font-size: 10.5px; font-weight: 750; font-variant-numeric: tabular-nums;
}

/* ---- masaüstü tablo: HÜKÜM ilk sütun ----
   Sayfanın en önemli bilgisi artık ürün adının altındaki en küçük rozet
   değil; satırın sol kenarındaki renk şeridi de sıralamanın nedenini söyler. */
.tk-masa { background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r); box-shadow: var(--golge); overflow-x: auto; }
.tk-tablo { width: 100%; border-collapse: collapse; font-size: 13px; }
.tk-tablo th {
  text-align: left; font: 700 10px/1.3 var(--font-ui); letter-spacing: .09em; text-transform: uppercase;
  color: var(--ink-3); padding: 13px 10px 10px; border-bottom: 1px solid var(--hair-2); white-space: nowrap;
}
.tk-tablo th.tk-h-hukum { padding-left: 17px; }
.tk-tablo td { padding: 10px; border-bottom: 1px solid var(--hair); vertical-align: middle; }
.tk-tablo tr:last-child td { border-bottom: 0; }
.tk-satir-secili { background: var(--eylem-soft); }
.tk-satir > td:first-child { position: relative; padding-left: 17px; }
.tk-satir > td:first-child::before {
  content: ""; position: absolute; left: 0; top: 5px; bottom: 5px; width: 3px;
  border-radius: 0 3px 3px 0; background: transparent;
}
.tk-satir.h-kazanc > td:first-child::before, .tk-kart.h-kazanc::before { background: var(--iyi); }
.tk-satir.h-kosul > td:first-child::before, .tk-kart.h-kosul::before { background: var(--dikkat); }
.tk-satir.h-zarar > td:first-child::before, .tk-kart.h-zarar::before { background: var(--risk); }
.tk-satir.h-avantajli > td:first-child::before, .tk-kart.h-avantajli::before { background: var(--eylem); }
.tk-satir.h-notr > td:first-child::before, .tk-kart.h-notr::before { background: var(--hair-2); }

/* Komisyon sekmesinde bant sayısı 4'e çıkar (3 yerine): sütunlar daralır ki
   dördüncü kademe 1080px'lik kapta kaydırmadan görünsün. */
.tk-masa-dortlu .tk-hukum { min-width: 136px; }
.tk-masa-dortlu .tk-urun { min-width: 168px; }
.tk-masa-dortlu .tk-bugun { min-width: 138px; }
.tk-masa-dortlu .tk-bant { min-width: 112px; }
.tk-masa-dortlu .tk-tablo td { padding: 10px 8px; }
/* flaşta çoğu dosyada tek slot sütunu var (yalnız 24 saatlik) — kalan
   genişlik ürün ve çıpa sütunlarına gider, kutu daralmaz */
.tk-masa-tekli .tk-bant { min-width: 150px; }

/* hüküm hücresi */
.tk-hukum { min-width: 152px; }
.tk-hukum-ic { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.tk-hukum .rozet { font-size: 11px; font-weight: 700; padding: 3px 10px; white-space: normal; text-align: left; }
.tk-hukum-alt { font-size: 10.5px; color: var(--ink-3); font-weight: 650; }

/* ürün hücresi */
.tk-urun { cursor: pointer; min-width: 200px; }
.tk-urun:hover .tk-ad { color: var(--eylem); }
.tk-urun-ic { display: flex; align-items: center; gap: 10px; min-width: 0; }
.tk-urun-ic .urun-thumb, .tk-urun-ic .thumb-yok { border-radius: 10px; flex-shrink: 0; object-fit: cover; }
.tk-urun-metin { min-width: 0; }
.tk-ad { display: block; font-weight: 640; color: var(--ink-1); line-height: 1.35; }
.tk-kod { display: block; margin-top: 2px; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; }

/* "Bugün" — kıyasların çıpası; üç satırla sınırlı (eskiden beş satırdı) */
.tk-bugun { min-width: 152px; }
.tk-b-fiyat { display: block; font: 680 14.5px/1.3 var(--font-ui); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tk-b-ip { font-style: normal; color: var(--ink-3); font-size: 11px; margin-left: 2px; cursor: help; }
.tk-alt { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; margin-top: 3px; font-size: 11px; color: var(--ink-3); }
.tk-alt b { color: var(--ink-1); font-weight: 700; font-variant-numeric: tabular-nums; }
.tk-ok { color: var(--ink-3); font-weight: 560; }
.tk-yeni { font-weight: 750; font-variant-numeric: tabular-nums; }
.tk-yeni.arti { color: var(--iyi-metin); }
.tk-yeni.eksi { color: var(--risk-metin); }

/* ---- BANT KUTUSU — sayfanın tek özgün bileşeni ----
   Dört kat kutunun İÇİNDE: kimlik şeridi (bant adı + etiket + seçim tiki),
   yazılacak fiyat, bugüne göre fark hapı, meta satırları. Etiketler artık
   dışarı taşmıyor; bant adı kutunun içinde yazıyor (mobilde sütun başlığı yok). */
.tk-bant-h { padding: 6px; }
.tk-bant {
  display: flex; flex-direction: column; align-items: stretch; gap: 4px;
  width: 100%; min-width: 134px; padding: 8px 10px 9px;
  border: 1px solid var(--hair-2); border-radius: 13px; background: var(--surface);
  cursor: pointer; font: inherit; color: var(--ink-1); text-align: left; position: relative;
  transition: border-color .12s ease, background .12s ease, box-shadow .12s ease;
}
.tk-bant:hover { border-color: var(--eylem); }
.tk-bant.mevcut { border-style: dashed; }
.tk-bant.oneri:not(.secili) { border-color: color-mix(in srgb, var(--eylem) 48%, transparent); }
.tk-bant.firsatli:not(.secili) {
  border-color: color-mix(in srgb, var(--dikkat) 62%, transparent);
  background: color-mix(in srgb, var(--dikkat-soft) 45%, transparent);
}
/* hem öne çıkan hem fırsat: rozet FIRSAT'ı söyler (güçlü iddia olan o),
   "öne çıkan" bilgisi petrol halkayla korunur — iki sinyal de kaybolmasın */
.tk-bant.oneri.firsatli:not(.secili) { box-shadow: 0 0 0 1px color-mix(in srgb, var(--eylem) 42%, transparent); }
.tk-bant.secili { border-color: var(--eylem); background: var(--eylem-soft); box-shadow: 0 0 0 1.5px var(--eylem) inset; }
.tk-bant.salt { cursor: default; }
.tk-bant.salt:hover { border-color: var(--hair-2); }
.tk-bant-ust { display: flex; align-items: center; gap: 6px; min-height: 17px; }
.tk-bant-ad {
  font: 700 9.5px/1 var(--font-ui); letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tk-bant-ad b { font-weight: 800; }
.tk-bant-ad i { font-style: normal; }
@media (max-width: 480px) { .tk-bant-ad i { display: none; } }
.tk-bant.secili .tk-bant-ad, .tk-bant.oneri .tk-bant-ad { color: var(--eylem); }
/* masaüstünde bandın adı sütun başlığında zaten yazıyor — kutuda tekrarı
   21 kez yinelenen gürültü olurdu; mobilde sütun başlığı OLMADIĞI için kalır */
.tk-masa .tk-bant-ad { display: none; }
.tk-masa .tk-bant-ust { min-height: 0; }
.tk-masa .tk-bant-ust:has(> .tk-bant-ad:only-child) { display: none; }
.tk-et {
  margin-left: auto; display: inline-flex; align-items: center; gap: 3px; flex: none;
  font: 700 9px/1 var(--font-ui); letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 7px; border-radius: 999px; white-space: nowrap;
}
.tk-et .ik { width: 9px; height: 9px; }
.tk-et.oneri { background: var(--eylem); color: var(--page); }
.tk-et.firsat { background: var(--dikkat); color: #2a1e05; }
.tk-et.simdi { background: var(--notr-soft); color: var(--ink-2); }
/* tavan payı = fiyat bugünkünün üstünde. Bilerek SÖNÜK: kazanç iddiası değil,
   "bu senin fiyat kararın" notu — ★ fırsatla karışmasın (2026-08-01) */
.tk-et.zam { background: transparent; color: var(--ink-3); box-shadow: inset 0 0 0 1px var(--hair-2); }
.tk-sec-tik {
  margin-left: auto; flex: none; width: 17px; height: 17px; border-radius: 999px;
  background: var(--eylem); color: var(--page); display: flex; align-items: center; justify-content: center;
}
.tk-et + .tk-sec-tik { margin-left: 0; }
.tk-sec-tik .ik { width: 11px; height: 11px; }
.tk-bf { font: 680 15px/1.2 var(--font-ui); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.tk-bant-meta { display: flex; flex-direction: column; gap: 2px; }
.tk-bd { font-size: 10.5px; font-weight: 620; color: var(--ink-3); line-height: 1.35; }
.tk-bd.kargo { color: var(--dikkat-metin); }
.tk-bd.notr { font-weight: 560; }
.tk-bant-yok { color: var(--ink-3); }

/* bugüne göre fark hapı — sayfanın asıl cevabı */
.tk-fark {
  display: inline-flex; align-items: baseline; gap: 2px; align-self: flex-start;
  padding: 2px 8px; border-radius: 999px;
  font: 750 11.5px/1.45 var(--font-ui); font-variant-numeric: tabular-nums;
}
.tk-fark i.bs { font-style: normal; font-weight: 600; font-size: 10px; opacity: .72; }
.tk-fark.arti { background: var(--iyi-soft); color: var(--iyi-metin); }
.tk-fark.eksi { background: var(--risk-soft); color: var(--risk-metin); }
.tk-fark.ayni { background: var(--notr-soft); color: var(--ink-2); }

/* ---- mobil kart: aynı üreticiler, dikey yerleşim ----
   Bantlar kullanıcı kararıyla 3'lü ızgarada kalır (komisyonda 2×2); okunurluk
   tipografi ve boşlukla çözülür, "/satış" eki üç kez tekrarlanmaz. */
.tk-cep { display: none; }
@media (max-width: 900px) {
  .tk-masa { display: none; }
  .tk-cep { display: grid; gap: 10px; }
}
.tk-kart {
  position: relative; overflow: hidden; background: var(--surface);
  border: 1px solid var(--hair); border-radius: var(--r); box-shadow: var(--golge);
  padding: 12px 13px 13px;
}
.tk-kart::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: transparent; }
.tk-kart.tk-satir-secili { border-color: var(--eylem); background: var(--eylem-soft); }
.tk-kart-ust { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.tk-kart-ust .tk-urun-ic { flex: 1; min-width: 0; }
.tk-kart-ok { display: flex; color: var(--ink-3); flex: none; }
.tk-kart-ok .ik { width: 16px; height: 16px; }
/* mobilde hüküm yatay okunur — rozet, öne çıkan bant ve katılımlı notu üst
   üste üç satır yerine tek satırda (dikey alan pahalı) */
.tk-kart-hukum { margin-top: 9px; }
.tk-kart-hukum .tk-hukum-ic { flex-direction: row; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
.tk-kart-bugun { margin-top: 9px; padding: 9px 11px; background: var(--surface-2); border-radius: 13px; }
.tk-kart-bugun > small { display: block; font: 750 9px/1 var(--font-ui); letter-spacing: .09em; color: var(--ink-3); margin-bottom: 4px; }
.tk-kart-bugun .tk-alt { display: inline-flex; margin-right: 14px; }
.tk-bantlar { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
.tk-bantlar.tk-dortlu { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tk-bantlar.tk-tekli { grid-template-columns: minmax(0, 1fr); }
.tk-bantlar .tk-bant { min-width: 0; padding: 7px 8px 8px; }
.tk-bantlar .tk-bf { font-size: 13.5px; }
.tk-bantlar .tk-bd { font-size: 10px; }
.tk-bantlar .tk-fark { padding: 2px 7px; font-size: 11px; }
.tk-bantlar .tk-fark i.bs { display: none; }
.tk-bantlar .tk-et { padding: 2px 5px; font-size: 8.5px; }

/* lejant — renkli rakamın ne olduğu tek satırda (eski beş cümlelik dipnot
   nadir işler sheet'ine taşındı) */
.tk-lejant { display: flex; gap: 7px 18px; flex-wrap: wrap; margin: 11px 2px 0; font-size: 10.5px; color: var(--ink-3); font-weight: 600; }
.tk-lejant span { display: inline-flex; align-items: center; gap: 6px; }
.tk-lejant b { color: var(--ink-2); font-weight: 750; }
.tk-lejant .ik { width: 10px; height: 10px; vertical-align: -1px; }
.tk-lejant i { width: 9px; height: 9px; border-radius: 3px; flex: none; }
.tk-lejant i.l-arti { background: linear-gradient(90deg, var(--iyi) 0 50%, var(--risk) 50% 100%); }
.tk-lejant i.l-tahmin { background: var(--hair-2); }
.tk-lejant i.l-firsat { background: var(--dikkat); }
.tk-lejant i.l-notr { background: var(--ink-3); }
.tk-lejant i.l-zam { background: transparent; box-shadow: inset 0 0 0 1px var(--hair-2); }

.tk-sayfa { margin-top: 12px; }

/* ---- seçim eylem çubuğu: işin bittiği yer ---- */
.tk-eylem {
  position: sticky; bottom: 74px; z-index: 30;
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  margin-top: 14px; padding: 11px 14px;
  background: color-mix(in srgb, var(--surface) 94%, transparent);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
  border: 1px solid var(--hair-2); border-radius: var(--r); box-shadow: var(--golge-buyuk);
}
.tk-eylem-sol { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.tk-eylem-say { font-size: 12.5px; color: var(--ink-2); font-weight: 600; }
/* flaşta günü geçmiş seçim: sayıya değil dosyaya girmediğine dikkat çeker */
.tk-eylem-gecti { display: block; margin-top: 2px; font-style: normal; font-size: 10.5px; font-weight: 620; color: var(--dikkat-metin); }
.tk-eylem-say b {
  font-family: var(--font-display); font-variation-settings: 'opsz' 30;
  font-size: 20px; font-weight: 600; color: var(--ink-1); margin-right: 4px;
}
.tk-eylem-sag { display: flex; align-items: center; gap: 8px; flex: none; }
.tk-eylem .tk-e-kisa { display: none; }
.tk-indir { width: auto; white-space: nowrap; }
.tk-temizle { width: auto; white-space: nowrap; flex: none; }
@media (max-width: 760px) {
  /* çip ile indir düğmesi aynı satırda sarıp çubuğu iki kata çıkarıyor,
     listenin son satırını kapatıyordu — artık üst üste iki bant */
  .tk-eylem { bottom: calc(var(--nav-alt-yukseklik) + 8px); flex-direction: column; align-items: stretch; gap: 9px; }
  .tk-eylem-sol { justify-content: space-between; }
  /* sarma İZNİ şart: nowrap kalırsa iki düğmenin toplam genişliği çubuğun
     min-content'ini büyütüyor, sol bant (sayaç + uygula çipi) o genişlikte
     tek satıra diziliyor ve ekranı taşırıyordu */
  .tk-eylem-sag { gap: 7px; flex-wrap: wrap; }
  .tk-indir { width: auto; flex: 1 1 auto; min-width: 0; }
  /* dar ekranda iki düğme yan yana: temizle daralır, indir kalan payı alır */
  .tk-temizle { padding-left: 11px; padding-right: 11px; }
  /* etiketler kısalır — ikisi tek satıra sığsın */
  .tk-eylem .tk-e-uzun { display: none; }
  .tk-eylem .tk-e-kisa { display: inline; }
}

/* dipnot — tek satırlık kapı */
.tk-dipnot { margin-top: 14px; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.tk-nasil {
  display: inline-flex; align-items: center; gap: 6px; flex: none;
  border: 1px solid var(--hair-2); background: transparent; color: var(--ink-2);
  border-radius: 999px; padding: 5px 12px; font: 650 11.5px/1.3 var(--font-ui); cursor: pointer;
}
.tk-nasil:hover { border-color: var(--eylem); color: var(--eylem); }
.tk-nasil .ik { width: 13px; height: 13px; }

/* ============================================================
   TEKLİF DETAY PANELİ — masaüstünde sağ yan panel (.sheet-kap.yan),
   mobilde alt sheet. Ürün paneliyle aynı altyapı ve aynı dil.
   ============================================================ */
.tk-sheet-urun { display: flex; align-items: flex-start; gap: 12px; margin-top: 4px; }
.tk-sheet-rozetler { display: flex; gap: 6px; flex-wrap: wrap; margin: 10px 0 4px; }
.tk-karar-cumle {
  margin: 10px 0 4px; padding: 12px 14px; background: var(--surface-2);
  border-left: 3px solid var(--eylem); border-radius: 12px;
  font: 560 13.5px/1.55 var(--font-ui); color: var(--ink-1);
}

/* BUGÜN kartı — panelin çıpası; marj masasının hüküm bloğu dili */
.tk-bugun-kart { margin-top: 12px; padding: 14px 16px; border-radius: var(--r); background: var(--iyi-soft); }
.tk-bugun-kart.zarar { background: var(--risk-soft); }
.tk-bg-ust { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tk-bg-ust small { font: 750 9.5px/1 var(--font-ui); letter-spacing: .09em; color: var(--ink-3); }
.tk-bg-hiz { font-size: 11px; font-weight: 650; color: var(--ink-2); }
.tk-bg-ana {
  font-family: var(--font-display); font-variation-settings: 'opsz' 36;
  font-size: 30px; font-weight: 600; letter-spacing: -.02em; line-height: 1.06;
  margin-top: 5px; font-variant-numeric: tabular-nums;
}
.tk-bg-ana i { font-style: normal; font-family: var(--font-ui); font-size: 12px; font-weight: 600; color: var(--ink-2); letter-spacing: 0; margin-left: 6px; }
.tk-bg-yan { display: flex; gap: 8px 18px; flex-wrap: wrap; margin-top: 11px; }
.tk-bg-yan span { display: flex; flex-direction: column; gap: 1px; }
.tk-bg-yan small { font: 750 9px/1 var(--font-ui); letter-spacing: .07em; color: var(--ink-3); }
.tk-bg-yan b { font-size: 14px; font-weight: 750; font-variant-numeric: tabular-nums; }
.tk-bg-donem {
  display: flex; align-items: center; gap: 6px; margin-top: 11px; padding-top: 9px;
  border-top: 1px solid color-mix(in srgb, var(--ink-1) 9%, transparent);
  font-size: 11px; font-weight: 650; color: var(--ink-2);
}
.tk-bg-donem .ik { width: 13px; height: 13px; }

/* karşılaştırma şeridi — kartlara dalmadan tüm seçenekler tek bakışta */
.tk-kiyas { border: 1px solid var(--hair); border-radius: var(--r-s); overflow: hidden; background: var(--surface); }
.tk-kiyas-satir {
  display: grid; grid-template-columns: minmax(0, 1.35fr) auto auto; align-items: center;
  gap: 10px; padding: 9px 12px; border-bottom: 1px solid var(--hair); font-size: 12.5px;
}
.tk-kiyas-satir:last-child { border-bottom: 0; }
.tk-kiyas-bas {
  background: var(--surface-2); padding: 8px 12px;
  font: 700 9.5px/1 var(--font-ui); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3);
}
.tk-kiyas-bas > span:not(:first-child) { text-align: right; }
.tk-kiyas-satir.oneri { background: var(--eylem-soft); }
.tk-kiyas-satir.mevcut .tk-kiyas-ad { color: var(--ink-2); }
.tk-kiyas-ad { display: flex; align-items: center; gap: 7px; font-weight: 650; min-width: 0; }
.tk-kiyas-et {
  font-style: normal; display: inline-flex; align-items: center; flex: none;
  font: 700 8.5px/1 var(--font-ui); letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 6px; border-radius: 999px; background: var(--eylem); color: var(--page);
}
.tk-kiyas-et.firsat { background: var(--dikkat); color: #2a1e05; }
.tk-kiyas-et .ik { width: 9px; height: 9px; }
.tk-kiyas-fiyat { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.tk-kiyas-satir > span:last-child { text-align: right; }

/* seçenek kartları */
.tk-kartlar { display: grid; gap: 10px; margin-top: 4px; }
.tk-bant-kart { border: 1px solid var(--hair-2); border-radius: var(--r); padding: 14px 16px; background: var(--surface); }
.tk-bant-kart.mevcut { border-style: dashed; }
.tk-bant-kart.secili { border-color: var(--eylem); background: var(--eylem-soft); box-shadow: 0 0 0 1px var(--eylem); }
.tk-bk-ust { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.tk-bk-ust b { font-size: 13.5px; font-weight: 750; letter-spacing: -.005em; }
.tk-bk-kimlik { display: block; font-size: 11px; color: var(--ink-3); margin-top: 2px; }
.rozet.tk-etiket { font-size: 9.5px; letter-spacing: .06em; font-weight: 760; flex-shrink: 0; }
.tk-bk-fiyat {
  font-family: var(--font-display); font-variation-settings: 'opsz' 36;
  font-size: 26px; font-weight: 600; letter-spacing: -.02em; line-height: 1.1;
  font-variant-numeric: tabular-nums; margin: 10px 0 0;
}
.tk-bk-vealti { font-family: var(--font-ui); font-size: 11.5px; font-weight: 600; color: var(--ink-3); letter-spacing: 0; }
.tk-bk-fark { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin-top: 7px; }
.tk-bk-fark .tk-fark { font-size: 13px; padding: 3px 10px; }
.tk-bk-fark small { font-size: 10.5px; color: var(--ink-3); font-weight: 650; }
.tk-bk-satir { font-size: 12.5px; color: var(--ink-2); margin-top: 7px; }
.tk-bk-degerlendirme { color: var(--ink-1); line-height: 1.5; }
.tk-bk-olcu {
  display: flex; gap: 10px 20px; flex-wrap: wrap;
  margin-top: 11px; padding-top: 10px; border-top: 1px solid var(--hair);
}
.tk-bk-olcu span { display: flex; flex-direction: column; gap: 1px; }
.tk-bk-olcu small { font: 750 9px/1 var(--font-ui); letter-spacing: .07em; color: var(--ink-3); }
.tk-bk-olcu b { font-size: 15px; font-weight: 750; font-variant-numeric: tabular-nums; }
.tk-bk-olcu i { font-style: normal; font-size: 10px; color: var(--ink-3); font-weight: 620; }
.tk-bk-firsat {
  margin-top: 9px; padding: 9px 11px; border-radius: 11px;
  background: var(--dikkat-soft); color: var(--dikkat-metin); font-size: 12.5px; line-height: 1.5;
}
.tk-bk-firsat b { color: inherit; }
.tk-bk-firsat.notr { background: var(--surface-2); color: var(--ink-2); }
/* kargo dilimi ayrıştırması — "bu artış nereden geliyor" cevabı (062986 vakası).
   Ucuzlayan kargo iyi haber (yeşil), pahalanan uyarı (kehribar). */
.tk-bk-kargo {
  margin-top: 9px; padding: 9px 11px; border-radius: 11px;
  background: var(--iyi-soft, var(--eylem-soft)); color: var(--iyi-metin, var(--eylem));
  font-size: 12.5px; line-height: 1.55;
}
.tk-bk-kargo b { color: inherit; font-weight: 750; }
.tk-bk-kargo.artan { background: var(--dikkat-soft); color: var(--dikkat-metin); }
/* liste kutusundaki kargo çipi: pahalanan hâl kehribar */
.tk-bd.kargo.artan { color: var(--risk-metin, var(--risk)); }
.tk-bk-ipucu-mini { font-size: 11px; color: var(--ink-3); }
.tk-bk-sec { width: 100%; margin-top: 12px; }

/* dönem onay ekranı — algılanan dönem büyük, girişler katlanır */
.tk-tarih-ozet {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 12px 0 6px;
  font-family: var(--font-display); font-variation-settings: 'opsz' 30;
  font-size: 21px; font-weight: 600; letter-spacing: -.015em;
  font-variant-numeric: tabular-nums; color: var(--ink-1);
}
.tk-tarih-duzelt { margin-top: 12px; }
.tk-tarih-duzelt summary { cursor: pointer; font: 640 12.5px/1.4 var(--font-ui); color: var(--ink-3); }
.tk-tarih-duzelt summary:hover { color: var(--eylem); }
.tk-tarih-alan {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 12px; margin-top: 8px; background: var(--surface-2); border-radius: 12px;
}
.tk-tarih-alan label { font: 700 10.5px/1 var(--font-ui); letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3); }
.tk-tarih-alan input {
  border: 1px solid var(--hair-2); background: var(--surface); border-radius: 9px;
  padding: 7px 9px; font: 560 13.5px/1.2 var(--font-ui); color: var(--ink-1);
}

/* ============================================================
   ÜRÜN PANELİ — müfettiş katmanı (Ürünler tablosundan açılır)
   Masaüstünde sağ panel, mobilde alt sheet. Dili Özet ve Ürünler
   sayfalarıyla aynı: aynı yüzey/saç çizgisi/gölge, serif büyük rakam,
   hap düğmeler, .u-durum rozetleri, sheet-bolum bölüm etiketleri.
   ============================================================ */
@media (min-width: 900px) {
  .sheet-kap.yan .sheet {
    left: auto; right: 0; top: 0; bottom: 0; margin: 0;
    width: min(520px, 42vw); max-width: none; max-height: none;
    border-radius: 26px 0 0 26px;
    transform: translateX(103%);
    box-shadow: -22px 0 70px -20px rgba(24, 36, 32, .38);
    transition: transform .3s cubic-bezier(.32, .72, .28, 1);
  }
  .sheet-kap.yan.acik .sheet { transform: translateX(0); }
  .sheet-kap.yan .sheet-tutamac { display: none; }
  .sheet-kap.yan .sheet-icerik { padding: 20px 24px 28px; }
  /* liste arkada okunur kalsın: panel karartması hafif (müfettiş hissi) */
  .sheet-kap.yan .sheet-arka { background: rgba(24, 36, 32, .18); -webkit-backdrop-filter: none; backdrop-filter: none; }
}
/* açık satır listede işaretli durur */
.u-satir.secili { background: var(--eylem-soft); }
.u-satir.secili .ad b { color: var(--eylem); }

.up-bas { display: flex; align-items: flex-start; gap: 12px; }
.up-foto { flex: none; }
.up-foto img.urun-thumb, .up-foto .thumb-yok { border-radius: 14px; }
.up-kimlik { min-width: 0; flex: 1; }
.up-rozet { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 5px; }
.up-kimlik h3 { font-size: 15px; font-weight: 700; line-height: 1.35; letter-spacing: -.01em; }
.up-meta { font-size: 11.5px; color: var(--ink-3); font-weight: 600; margin-top: 3px; }
.up-cipler { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0 2px; }
/* ilan bağlantısı: kimlik çipleriyle aynı hap boyu ama KOPYALAMA değil ÇIKIŞ
   olduğu için kesikli çerçeve + eylem rengi — dokunma hedefi çiplerle eşit */
.up-dis {
  display: inline-flex; align-items: center; gap: 5px; text-decoration: none;
  background: transparent; border: 1px dashed var(--hair-2); border-radius: 9px;
  padding: 5px 9px; font-size: 11.5px; font-weight: 700; color: var(--ink-2);
}
.up-dis span { font-size: 12px; color: var(--ink-3); }
.up-dis:hover { border-color: var(--eylem); border-style: solid; color: var(--eylem); }
.up-dis:hover span { color: var(--eylem); }

/* Panel içi dönem seçici. Hap, kokpitteki görünümün dar kopyası (o stil
   .kokpit-ust'a bağlı, burada geçmez). Popover .sheet-icerik'in
   overflow-y:auto kırpmasına takılırdı; .sheet transform taşıdığı için
   position:fixed'in kabı .sheet olur — seçici panelin dibine sabitlenir ve
   kırpılmadan çizilir. ≤760px'te zaten alt-sheet formu geçerli (o da fixed,
   aynı ilkeyle ürün sheet'inin dibine oturur). */
.up-donem { margin: 12px 0 2px; }
.up-donem .k-tarih {
  width: 100%; text-align: left; font-size: 12px; font-weight: 650; color: var(--ink-1);
  background: var(--surface); border: 1px solid var(--hair); border-radius: 14px;
  padding: 8px 13px; line-height: 1.45;
}
.up-donem .k-tarih span { display: block; font-size: 9.5px; color: var(--ink-3); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
@media (min-width: 761px) {
  .sheet-kap .donem-kap.acik .donem-perde {
    display: block; position: fixed; inset: 0; z-index: 199;
    background: color-mix(in srgb, var(--ink-1) 30%, transparent);
    animation: dpPerde .2s ease;
  }
  .sheet-kap .donem-kap.acik .donem-panel {
    position: fixed; inset: auto 12px 12px 12px; width: auto;
    max-height: calc(100% - 24px); overflow-y: auto;
  }
  .sheet-kap .dp-ay.ikinci { display: none; }  /* dar panelde iki ay sığmaz */
}

/* trend granülerliği: panelde çipler daralır — dört tanesi dar panelde tek
   satıra sığsın, sığmazsa şerit kaydırılır (alt satıra taşıp grafiği aşağı
   itmesin) */
.up-gran { margin: 12px 0 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; }
.up-gran::-webkit-scrollbar { display: none; }
.up-gran .cip { padding: 5px 10px; font-size: 11px; flex: none; }

.up-gez { display: flex; align-items: center; gap: 8px; margin: 14px 0 2px; padding-top: 12px; border-top: 1px solid var(--hair); }
.up-gez-sayi { font-size: 12px; font-weight: 700; color: var(--ink-1); font-variant-numeric: tabular-nums; }
.up-gez-not { font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-left: auto; }

.up-buyuk { font-family: var(--font-display); font-size: 34px; font-weight: 600; letter-spacing: -.02em; line-height: 1.05; }
.up-buyuk.neg { color: var(--risk-metin); }
.up-buyuk .birim { font-size: .46em; font-weight: 500; color: var(--ink-2); }
.up-alt { font-size: 11.5px; color: var(--ink-3); font-weight: 600; margin-top: 4px; }
.up-trend { margin-top: 12px; }

/* Dönem analizi boş durumu: pencerede satışı olmayan ürünün panelinde satış/
   döküm bloklarının yerini alır — bilgi tonu, uyarı değil (kusur yok). */
.up-donem-bos { background: var(--surface-2); border-radius: 12px; padding: 15px 16px; margin-top: 14px; }
.up-donem-bos b { display: block; font-size: 13.5px; color: var(--ink-1); margin-bottom: 5px; }
.up-donem-bos p { margin: 0; font-size: 12.5px; color: var(--ink-2); line-height: 1.55; }

.up-sakin { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink-2); background: var(--surface-2); border-radius: 12px; padding: 11px 13px; }
.up-sakin .ik { width: 15px; height: 15px; color: var(--iyi); flex: none; }

/* ⛔ DÜZENLEME KAPISININ SAKİN SATIRI (duz_* izinleri, 2026-08-13).
   Yazma düğmesi izin yüzünden çizilmediğinde kullanıcının onu aradığı yerde bu
   satır durur — sessiz kaybolma yasak (ui.js duzYokHtml). Ton UYARI DEĞİL
   BİLGİ: risk/dikkat renkleri kullanılmaz, kullanıcı kusurlu değil.
   ⚠ Bileşen beş bağlamda yaşıyor (ürün paneli, marj tablosu paneli, tek satış
     sheet'i, karşılama kapısı, Yapılacaklar) — bu yüzden kendi kenar boşluğunu
     taşır ve konumunu kaba bırakmaz. */
.duz-yok {
  display: flex; align-items: flex-start; gap: 8px; margin: 10px 0;
  padding: 11px 13px; border-radius: 12px;
  font-size: 12.5px; line-height: 1.5; font-weight: 600;
  color: var(--ink-2); background: var(--surface-2);
}
.duz-yok .ik { width: 15px; height: 15px; color: var(--ink-3); flex: none; margin-top: 1px; }

.up-kpi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.up-kpi .tile { margin: 0; }

/* başa baş kutusu — SALT BİLGİ (maliyet girişi marj tablosunda) */
/* --- REKLAM EŞLEŞTİRME PENCERESİ ------------------------------------------
   Sol sütun kampanyanın kimliği (contentId'den görsel türetilemez), sağ sütun
   fotoğraflı ürün seçimi. Çipler/etiketler SATIR İÇİ stil değil sınıf kullanır:
   dar sütunda kırpılma Üye firmalar panelinde bir kez yaşandı ve testler
   yeşilken ekran görüntüsü yakalamıştı. */
.rek-ozet { margin-bottom: 10px; }
.rek-bos { font-size: 12.5px; line-height: 1.55; color: var(--ink-2); padding: 10px 0; }
.rek-kart { border: 1px solid var(--hair); border-radius: var(--r-s); padding: 12px 14px; margin-bottom: 10px; background: var(--surface-2); }
.rek-kampanya b { display: block; font-size: 13.5px; font-weight: 800; }
.rek-kimlik { display: block; font-size: 11.5px; color: var(--ink-2); margin-top: 2px; }
.rek-secim { margin-top: 10px; }
.rek-etiket { display: block; font-size: 11.5px; font-weight: 700; color: var(--ink-2); margin-bottom: 5px; }
.rek-ara { width: 100%; box-sizing: border-box; padding: 8px 10px; font-size: 13px; border: 1px solid var(--hair); border-radius: var(--r-s); background: var(--surface); color: var(--ink); }
.rek-sonuc { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; max-height: 320px; overflow-y: auto; }
.rek-sonuc .mini { padding: 4px 0; }
.rek-aday { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 6px 8px; border: 1px solid var(--hair); border-radius: var(--r-s); background: var(--surface); cursor: pointer; }
.rek-aday:hover { border-color: var(--accent, var(--ink-2)); }
.rek-aday-gorsel { flex: 0 0 52px; width: 52px; height: 52px; border-radius: 8px; overflow: hidden; background: var(--surface-2); display: flex; align-items: center; justify-content: center; }
.rek-aday-gorsel img { width: 52px; height: 52px; object-fit: cover; display: block; }
.rek-aday-gorsel i { font-style: normal; font-weight: 800; font-size: 18px; color: var(--ink-2); }
/* min-width:0 ŞART: olmadan uzun ürün adı flex ögesini şişirip fotoğrafı
   ezer ve ellipsis hiç çalışmaz (magaza.js table-layout dersinin flex hâli). */
.rek-aday-bilgi { min-width: 0; flex: 1; }
.rek-aday-bilgi b { display: block; font-size: 12.5px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rek-aday-bilgi small { display: block; font-size: 11px; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rek-yok { margin-top: 8px; }
/* --- REKLAM KARTI (ürün paneli) --------------------------------------------
   Ayrı reklam ekranı yok; kampanya karnesi panelde yaşıyor. Sayfanın tek koyu
   ögesi hüküm kartıdır — bu kart NÖTR yüzeyde durur, yoksa aynı cevabın iki
   kez söylendiği izlenimi doğar (aday ekranındaki .ad-tavan dersi). */
/* ⛔ ZEMİN NÖTR KALIR — hüküm tonuna göre kızarmaz (kullanıcı kararı,
   2026-08-12). Kart artık "reklam kendini ödüyor / zarar" cümlesini
   yazmıyor; açıklamasız kırmızı bir kart satıcıya nedenini söylemeden
   alarm verirdi. Değerlendirme kaybolmadı, "Ne yapmalısınız" listesinde. */
.up-reklam { margin-top: 8px; border: 1px solid var(--hair); border-radius: var(--r-s); padding: 12px 14px; background: var(--surface-2); }
.up-reklam.bos { background: var(--surface-2); color: var(--ink-2); font-size: 12.5px; line-height: 1.5; }
/* GÜNCEL REKLAM ANALİZİ — kartın baş rakamı (kullanıcı kararı, 2026-08-12).
   Satıcı reklam terimi bilmeden "şu an satış başına ne ödüyorum" sorusunun
   cevabını görmeli: tek büyük rakam, altında iki çıplak sayı.
   ⚠ ZEMİN AÇIK KALIR: sayfanın tek koyu ögesi hüküm kartıdır. İkinci bir koyu
   yüzey iki cevabın tekrarı gibi okunuyordu (aday ekranı dersi). */
.up-reklam-yuk { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--hair); }
.up-yuk-ad { font-size: 11.5px; font-weight: 750; color: var(--ink-2); letter-spacing: .01em; }
.up-yuk-deger {
  font-family: var(--font-display); font-size: 30px; font-weight: 600;
  letter-spacing: -.015em; line-height: 1.15; margin-top: 3px;
  /* ⚠ RAKAM İLE BİRİMİ AYRILMAZ: "1.215,86" bir satırda "₺" alt satırda
     kalıyordu (nasıl-bulundu kutusundaki aynı ders). */
  white-space: nowrap;
}
/* Ölçülemeyen hâl büyük rakamın YERİNE geçer ama onun ağırlığını taşımaz:
   "hesaplanamaz" bir tutar değil, bir cevabın yokluğudur. */
.up-yuk-deger.yok { font-size: 19px; font-weight: 500; color: var(--ink-2); }
.up-yuk-alt { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-top: 8px; }
.up-yuk-alt span { display: flex; align-items: baseline; gap: 6px; }
.up-yuk-alt i { font-style: normal; font-size: 11.5px; color: var(--ink-2); }
.up-yuk-alt b { font-size: 13.5px; font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }
.up-yuk-not { margin-top: 8px; font-size: 11.5px; line-height: 1.5; color: var(--ink-2); }

/* GEÇMİŞ REKLAM PERFORMANSI — dönem dönem, toplanmadan.
   ⚠ ÖLÇÜLER IZGARADA: üç etiket + üç rakam tek satırda yan yana konunca
   390px'te kabın İÇİNDE taşıyordu ve sayfa düzeyindeki taşma denetimi bunu
   göremiyor (kap içi taşma tuzağı, CLAUDE.md §5). Izgara dar ekranda alt
   alta iner, kırpma olmaz. */
.up-reklam-gecmis { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--hair); }
.up-gecmis-bas { font-size: 11.5px; font-weight: 750; color: var(--ink-2); letter-spacing: .01em; margin-bottom: 8px; }
.up-gecmis-satir {
  background: var(--surface); border: 1px solid var(--hair); border-radius: 11px;
  padding: 9px 12px; margin-top: 6px;
}
.up-gecmis-satir:first-of-type { margin-top: 0; }
.ug-donem { font-size: 12.5px; font-weight: 750; font-variant-numeric: tabular-nums; }
.ug-olcum { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 4px 14px; margin: 6px 0 0; }
/* Rakamlar satır içinde hizalı (performans ızgarasındaki aynı ders): geçmiş
   satırında "Satış Adedi" bir satır, "Satış Başına Ortalama Reklam Gideri" iki
   satır sarıyor ve tepeden hizalı hücrelerde rakamlar kayıyordu. */
.ug-olcum > div { min-width: 0; display: flex; flex-direction: column; justify-content: space-between; }
.ug-olcum dt { font-size: 11px; color: var(--ink-2); line-height: 1.35; }
.ug-olcum dd { margin: 3px 0 0; font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
/* "X dönem daha" — kırpma değil KATLAMA: sayı açıkça yazılı, açma satırı
   tıklanabilir olduğu anlaşılacak kadar koyu (nasıl-bulundu kutusunun dersi). */
.up-gecmis-daha > summary {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer; margin-top: 8px;
  font-size: 12px; font-weight: 600; color: var(--ink-1); list-style: none;
  width: fit-content; border-bottom: 1px dotted var(--hair-2, var(--hair)); padding-bottom: 1px;
}
.up-gecmis-daha > summary::-webkit-details-marker { display: none; }
.up-gecmis-daha > summary::after { content: "▾"; font-size: 10px; color: var(--ink-2); }
.up-gecmis-daha[open] > summary::after { content: "▴"; }

/* REKLAM PERFORMANSI — beş ölçü, kompakt ızgara (kullanıcı kararı,
   2026-08-12). Ana rakamın önünü kesmesin diye küçük ve nötr durur.
   ⚠ ÖLÇÜLER IZGARADA: tek satırda yan yana konunca 390px'te kabın İÇİNDE
   taşıyorlardı ve sayfa düzeyindeki taşma denetimi bunu göremiyor. */
.up-reklam-perf { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--hair); }
.up-perf-bas { font-size: 11.5px; font-weight: 750; color: var(--ink-2); letter-spacing: .01em; margin-bottom: 8px; }
/* Tarih aralığı başlığın ALTINDA, daha küçük: başlığın yanına konunca iki
   farklı ağırlıktaki metin tek satırda yarışıyordu. Rakamlar tabular —
   art arda gelen kartlarda tarihler aynı hizada okunuyor. */
.up-perf-bas small {
  display: block; margin-top: 2px; font-size: 11px; font-weight: 550;
  color: var(--ink-3, var(--ink-2)); opacity: .9; font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}
.up-perf-olcum { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 8px 14px; margin: 0; }
/* ⚠ RAKAMLAR SATIR İÇİNDE HİZALI KALIR. Etiketler farklı uzunlukta ("Reklamdan
   Gelen Satış" iki satıra sarıyor, "CTR" bir satır) ve hücreler tepeden
   hizalıyken rakamlar merdiven gibi kayıyordu (ekran görüntüsü yakaladı).
   Hücre yüksekliği satırın tamamına yayılıp değer DİBE oturunca aynı satırdaki
   bütün rakamlar tek çizgide durur. */
.up-perf-olcum > div { min-width: 0; display: flex; flex-direction: column; justify-content: space-between; }
.up-perf-olcum dt { font-size: 11px; color: var(--ink-2); line-height: 1.35; }
.up-perf-olcum dd { margin: 3px 0 0; font-size: 13px; font-weight: 800; font-variant-numeric: tabular-nums; white-space: nowrap; }
.up-reklam-not { margin-top: 7px; font-size: 11.5px; line-height: 1.5; color: var(--ink-2); }
.up-reklam-not.dikkat { color: var(--risk, var(--ink)); font-weight: 650; }
.up-reklam-not.soluk { opacity: .7; }
.up-tavan { margin-top: 12px; border: 1px solid var(--hair); border-radius: var(--r-s); padding: 13px 15px; background: var(--surface-2); }
.up-tavan.neg { border-color: var(--risk-soft); background: var(--risk-soft); }
.up-tavan-ust { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.up-tavan-ust small { font-size: 11px; font-weight: 750; color: var(--ink-2); letter-spacing: .02em; }
.up-tavan-deger { font-family: var(--font-display); font-size: 26px; font-weight: 600; letter-spacing: -.015em; margin-top: 4px; }
.up-tavan-deger .birim { font-size: .42em; font-weight: 500; color: var(--ink-2); }
.up-tavan-not { font-size: 11px; color: var(--ink-2); line-height: 1.5; margin-top: 6px; }
.up-tavan-not b { font-weight: 750; color: var(--ink-1); }
.up-baglanti { display: inline-flex; align-items: center; gap: 5px; margin-top: 9px; padding: 0; border: none; background: none; cursor: pointer; font-family: var(--font-ui); font-size: 11.5px; font-weight: 700; color: var(--eylem); text-align: left; }
.up-baglanti:hover { text-decoration: underline; }

.up-yorum-ust { display: flex; align-items: center; gap: 9px; font-size: 12px; color: var(--ink-2); font-weight: 600; }
.up-yorum-ust b { font-family: var(--font-display); font-size: 19px; font-weight: 600; color: var(--ink-1); }
.up-kesit-bas { font-size: 11px; font-weight: 700; color: var(--ink-2); margin: 12px 0 6px; }
.up-kesit-bas span { font-weight: 550; color: var(--ink-3); }

/* varyant adı başlıkta ve varyant listesi */
.up-varyant-ad { font-weight: 750; color: var(--eylem); }
.up-varyantlar { display: flex; flex-direction: column; gap: 4px; }
.up-varyant {
  display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; align-items: center;
  width: 100%; text-align: left; cursor: pointer; font-family: var(--font-ui);
  background: var(--surface-2); border: 1px solid transparent; border-radius: 11px; padding: 9px 12px;
}
.up-varyant b { font-size: 12.5px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.up-varyant .uv-sayi { font-size: 12px; font-weight: 700; color: var(--ink-1); font-variant-numeric: tabular-nums; }
.up-varyant .uv-stok { font-size: 11px; color: var(--ink-3); font-weight: 600; font-variant-numeric: tabular-nums; min-width: 62px; text-align: right; }
.up-varyant:hover { border-color: var(--hair-2); background: var(--surface); }
.up-varyant.aktif { background: var(--eylem-soft); border-color: var(--eylem); }
.up-varyant.aktif b { color: var(--eylem); }
.up-pay { margin-top: 10px; }

/* varyant panelinde model düzeyi sınırı */
.up-model-not {
  display: flex; align-items: flex-start; gap: 8px; margin-top: 18px;
  font-size: 11.5px; color: var(--ink-2); line-height: 1.5;
  background: var(--surface-2); border-radius: 12px; padding: 10px 12px;
}
.up-model-not .ik { width: 15px; height: 15px; color: var(--ink-3); flex: none; margin-top: 1px; }
/* metin tek flex öğesi olarak akar — <b> içeride inline kalır, cümle bölünmez */
.up-model-not > span { min-width: 0; }
.up-model-not b { font-weight: 750; color: var(--ink-1); }

/* iade & iptal: iki kutu + sebep barları */
.up-ii-ust { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.up-ii-kutu {
  border: 1px solid var(--hair); border-radius: var(--r-s); padding: 10px 12px; background: var(--surface);
  display: flex; flex-direction: column; gap: 1px;
}
.up-ii-kutu.neg { border-color: var(--risk-soft); background: var(--risk-soft); }
.up-ii-kutu small { font-size: 10.5px; font-weight: 750; color: var(--ink-2); letter-spacing: .02em; }
.up-ii-kutu b { font-family: var(--font-display); font-size: 22px; font-weight: 600; letter-spacing: -.015em; }
.up-ii-kutu.neg b { color: var(--risk-metin); }
.up-ii-kutu span { font-size: 10.5px; color: var(--ink-3); font-weight: 600; }
.up-neden-bas { font-size: 11.5px; font-weight: 750; color: var(--ink-2); margin: 14px 0 6px; }
.up .bar .deger em { font-style: normal; color: var(--ink-3); font-weight: 650; margin-left: 4px; }
.up-neden-kalan { font-size: 10.5px; color: var(--ink-3); font-weight: 600; margin-top: 4px; }
.up-ii-yorum {
  font-size: 11.5px; color: var(--ink-2); line-height: 1.5; margin-top: 9px;
  background: var(--surface-2); border-radius: 11px; padding: 9px 12px;
}
.up-ii-yorum.uyari { background: var(--risk-soft); color: var(--risk-metin); }
.up-ii-yorum b { font-weight: 750; color: var(--ink-1); }
.up-ii-yorum.uyari b { color: var(--risk-metin); }

/* çıktı düğmesi — panelin kapanış eylemi */
.up-pdf {
  display: flex; align-items: center; gap: 12px; width: 100%; margin-top: 22px;
  padding: 14px 16px; border: 1px solid var(--eylem); border-radius: var(--r-s);
  background: var(--eylem); color: var(--hero-ters); cursor: pointer;
  font-family: var(--font-ui); text-align: left;
}
.up-pdf:hover { background: var(--eylem-koyu); border-color: var(--eylem-koyu); }
.up-pdf span { flex: 1; min-width: 0; }
.up-pdf b { display: block; font-size: 13.5px; font-weight: 700; }
.up-pdf small { display: block; font-size: 10.5px; opacity: .78; margin-top: 2px; }
.up-pdf .ik { width: 17px; height: 17px; flex: none; }

@media (max-width: 899px) {
  .up-kpi { grid-template-columns: repeat(2, 1fr); }
  .up-buyuk { font-size: 30px; }
}

/* ============================================================ AKSİYON MASASI
   Kararlar + Uyarılar'ın yerine geçen tek sayfa (2026-07-26). Düzen: kokpit
   (u-ust dili) → konu panoları → katlı ek bölümler. Pano = bir konu, satır =
   bir ürün, dokunuş = karar dosyası paneli. Konu rengi panoya `--kon` olarak
   iner: damga, halka dilimi ve öncelik şeridi aynı tondan beslenir; kart
   yüzeyleri sakin kalır (sayfada tek koyu vurgu hero'dur).
   MOBİL AYRI KURGU: kokpit tek kolona iner, pano başlığı iki satıra sarar,
   ürün satırı 3 satırlık blok olur, çözüm kapısı tam genişlik düğmeye döner. */
.ak-hero { min-height: 0; justify-content: center; }
.ak-hero .u-hero-yazi { max-width: none; position: relative; z-index: 1; }
.ak-hero-eyebrow {
  display: inline-flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 750;
  letter-spacing: .06em; text-transform: uppercase; color: var(--hero-ink-2);
}
.ak-hero-eyebrow .ik { width: 15px; height: 15px; color: var(--kon, var(--eylem)); }
.ak-hero h2 { margin-top: 6px; }
.ak-hero .u-buyuk { margin-top: 10px; }
.ak-hero-birim { font-family: var(--font-ui); font-size: .34em; font-weight: 600; color: var(--hero-ink-2); letter-spacing: 0; }
.ak-hero-hukum { font-size: 12.5px; line-height: 1.55; color: var(--hero-ink-2); margin-top: 10px; max-width: 52ch; }
.ak-hero-hukum b { color: var(--hero-ink); font-weight: 700; }
.ak-hero-btn { display: flex; gap: 9px; flex-wrap: wrap; margin-top: 16px; }
/* imza: konunun ikonu hero'nun sağında filigran — sayfanın hangi konuyla
   açıldığını renkten önce biçim söyler */
.ak-hero-mark {
  position: absolute; right: -14px; bottom: -30px; width: 190px; height: 190px;
  color: var(--kon, var(--eylem)); opacity: .09; pointer-events: none; z-index: 0;
}
.ak-hero-mark .ik { width: 100%; height: 100%; stroke-width: 1.1; }

/* --- panolar --- */
.ak-panolar { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 14px; }
@media (min-width: 1140px) { .ak-panolar { grid-template-columns: 1fr 1fr; } }
.ak-pano {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 15px 16px 12px; display: flex; flex-direction: column;
  min-width: 0; position: relative; overflow: hidden;
}
/* öncelik şeridi: yalnız bugün ele alınacak konularda görünür (gürültü değil sinyal) */
.ak-pano.o1::before {
  content: ''; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--kon);
}
.ak-bas { display: flex; align-items: flex-start; gap: 11px; }
.ak-damga {
  width: 34px; height: 34px; border-radius: 11px; flex: none; display: grid; place-items: center;
  background: color-mix(in srgb, var(--kon) 13%, transparent); color: var(--kon);
}
.ak-damga .ik { width: 17px; height: 17px; }
.ak-bas-ic { flex: 1; min-width: 0; }
.ak-bas-ic h3 { font-size: 15px; font-weight: 750; letter-spacing: -.01em; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ak-n { font-size: 11px; font-weight: 700; color: var(--ink-3); }
.ak-hukum { font-size: 12px; color: var(--ink-2); margin-top: 3px; line-height: 1.45; }
.ak-hukum b { color: var(--ink-1); font-weight: 700; }
.ak-hukum-n { color: var(--ink-3); font-weight: 650; }
.ak-para-kut { text-align: right; flex: none; padding-left: 6px; max-width: 40%; }
.ak-para-kut b { display: block; font-family: var(--font-display); font-size: 21px; font-weight: 600; letter-spacing: -.015em; }
.ak-para-kut small { display: block; font-size: 10px; color: var(--ink-3); font-weight: 600; line-height: 1.35; margin-top: 2px; }

/* --- ürün satırı --- */
.ak-liste { margin-top: 10px; }
.ak-satir {
  display: grid; grid-template-columns: 40px minmax(0, 1fr) auto auto 12px;
  align-items: center; gap: 10px; padding: 9px 2px; border-top: 1px solid var(--hair);
  cursor: pointer; transition: background .14s;
}
.ak-islem { display: flex; align-items: center; gap: 6px; }
.ak-satir:first-child { border-top: none; }
.ak-satir:hover { background: var(--surface-2); }
.ak-satir.secili { background: var(--eylem-soft); }
.ak-satir.incelendi { opacity: .55; }
.ak-foto { width: 40px; height: 40px; }
.ak-foto img.urun-thumb, .ak-foto .thumb-yok { width: 40px !important; height: 40px !important; border-radius: 11px; }
.ak-ic { min-width: 0; }
.ak-urun { font-size: 13px; font-weight: 650; color: var(--ink-1); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ak-urun b { font-weight: 650; }
.ak-eylem { font-size: 12px; font-weight: 650; color: var(--eylem); line-height: 1.35; margin-top: 2px; }
.ak-eylem .rozet, .ak-eylem .ak-artik { margin-left: 6px; vertical-align: 1px; }
.ak-ov { color: var(--ink-3); font-weight: 700; margin-right: 5px; }
.ak-izle { display: inline-flex; align-items: center; gap: 5px; }
.ak-izle { color: var(--ink-2); font-weight: 650; }
.ak-izle .ik { width: 14px; height: 14px; }
.ak-artik {
  font-size: 10px; font-weight: 750; color: var(--eylem); background: var(--eylem-soft);
  padding: 1px 6px; border-radius: 99px;
}
.ak-kod { color: var(--ink-3); font-weight: 600; font-size: 11.5px; font-variant-numeric: tabular-nums; }
.ak-kanit {
  font-size: 11.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ak-sag { text-align: right; }
.ak-para { display: block; font-size: 13px; font-weight: 750; font-variant-numeric: tabular-nums; }
.ak-oncelik { display: block; font-size: 10px; font-weight: 700; color: var(--ink-3); margin-top: 2px; }
.ak-satir.o1 .ak-oncelik { color: var(--risk-metin); }
.ak-satir.o2 .ak-oncelik { color: var(--dikkat-metin); }
.ak-tik {
  width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--hair);
  background: transparent; color: var(--ink-3); display: grid; place-items: center; cursor: pointer;
  transition: border-color .14s, color .14s, background .14s;
}
.ak-tik .ik { width: 15px; height: 15px; }
.ak-tik:hover { border-color: var(--iyi); color: var(--iyi-metin); background: var(--iyi-soft); }
.ak-tik.geri:hover { border-color: var(--hair-2); color: var(--ink-1); background: var(--surface-2); }
.ak-ok { color: var(--ink-3); display: flex; }
.ak-ok .ik { width: 14px; height: 14px; }
.ak-satir:hover .ak-ok { color: var(--eylem); }

/* --- Aksiyon Defteri: "Yaptım" + yeniden açılma --- */
.ak-yaptim {
  border: 1px solid var(--hair); background: transparent; color: var(--ink-2);
  font: inherit; font-size: 11px; font-weight: 650; padding: 5px 10px; border-radius: 999px;
  cursor: pointer; white-space: nowrap; transition: border-color .14s, color .14s, background .14s;
}
.ak-yaptim:hover, .ak-yaptim.aktif { border-color: var(--eylem); color: var(--eylem); background: var(--eylem-soft); }
/* Yeniden açılma dosyanın NEDENİNİ söyler; sessizce geri gelseydi kullanıcı
   "bunu kapatmamış mıydım" der ve uygulamaya güvenini yitirirdi. */
.ak-acilma {
  display: inline-flex; align-items: center; gap: 5px; margin-top: 3px;
  font-size: 11px; font-weight: 650; color: var(--dikkat-metin);
  background: var(--dikkat-soft); border-radius: 999px; padding: 2px 9px;
}
.ak-acilma .ik { width: 12px; height: 12px; flex: none; }

/* satır içi müdahale formu — tam satıra yayılır (sheet değil: iki dokunuş kuralı) */
.yp-form {
  grid-column: 1 / -1; margin: 8px 0 2px; padding: 12px; cursor: default;
  background: var(--surface-2); border: 1px solid var(--hair); border-radius: 14px;
}
.yp-bas { font-size: 12px; font-weight: 700; color: var(--ink-1); margin-bottom: 8px; }
.yp-turler { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.yp-tur {
  border: 1px solid var(--hair); background: var(--surface); color: var(--ink-2);
  font: inherit; font-size: 11px; font-weight: 600; padding: 5px 11px; border-radius: 999px; cursor: pointer;
}
.yp-tur.aktif { border-color: var(--eylem); background: var(--eylem); color: #fff; }
.yp-satir { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; margin-bottom: 9px; }
.yp-satir label { font-size: 11px; font-weight: 600; color: var(--ink-2); display: flex; align-items: center; gap: 6px; }
.yp-satir input[type="date"] {
  font: inherit; font-size: 12px; padding: 4px 8px; border: 1px solid var(--hair);
  border-radius: 8px; background: var(--surface); color: var(--ink-1);
}
.yp-onay { cursor: pointer; }
.yp-not {
  width: 100%; box-sizing: border-box; font: inherit; font-size: 12px; padding: 7px 10px;
  border: 1px solid var(--hair); border-radius: 9px; background: var(--surface); color: var(--ink-1);
}
.yp-alt { display: flex; gap: 8px; margin-top: 10px; }

/* --- Defter görünümü (Aksiyon Masası'nın ikinci sekmesi) --- */
.ak-gorunum { display: flex; gap: 6px; justify-content: center; margin: 14px 0 4px; }
.ak-gorunum .agr {
  border: 1px solid var(--hair); background: var(--surface); color: var(--ink-2);
  font: inherit; font-size: 12px; font-weight: 650; padding: 7px 16px; border-radius: 999px; cursor: pointer;
}
.ak-gorunum .agr .num { color: var(--ink-3); margin-left: 3px; }
.ak-gorunum .agr.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--surface); }
.ak-gorunum .agr.aktif .num { color: var(--surface); opacity: .7; }

.df-kap { margin-top: 12px; }
.df-cipler { margin-bottom: 12px; }
.df-bos {
  display: flex; gap: 12px; align-items: flex-start; padding: 26px 22px; margin-top: 14px;
  background: var(--surface); border: 1px solid var(--hair); border-radius: 18px; color: var(--ink-2); font-size: 13px;
}
.df-bos b { color: var(--ink-1); }
.df-bos > span { color: var(--ink-3); display: flex; }

.df-liste { display: flex; flex-direction: column; gap: 10px; }
.df-satir { padding: 14px 16px; background: var(--surface); border: 1px solid var(--hair); border-radius: 16px; }
/* Hükmü verilmiş kayıt geride durur: dikkat HÜKÜM BEKLEYENDE olmalı */
.df-satir.d-sonuclandi { opacity: .72; }
.df-bas { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; }
.df-tarih { color: var(--ink-3); font-size: 11px; min-width: 62px; }
.df-konu { font-size: 10px; font-weight: 700; color: var(--k, var(--ink-2)); text-transform: uppercase; letter-spacing: .02em; }
.df-urun { font-size: 13px; font-weight: 650; color: var(--ink-1); }
.df-ne { font-size: 12px; font-weight: 600; color: var(--eylem); }
.df-kapsam { font-size: 10px; font-weight: 600; color: var(--ink-3); border: 1px solid var(--hair); border-radius: 999px; padding: 1px 7px; }
.df-hukum { font-size: 10px; font-weight: 700; border-radius: 999px; padding: 2px 9px; margin-left: auto; }
.df-hukum.h-olumlu { background: var(--iyi-soft); color: var(--iyi-metin); }
.df-hukum.h-olumsuz { background: var(--risk-soft); color: var(--risk-metin); }
.df-hukum.h-belirsiz { background: var(--surface-2); color: var(--ink-2); }
.df-not { font-size: 12px; color: var(--ink-2); margin-top: 6px; }
.df-yok { display: flex; gap: 6px; align-items: center; font-size: 11px; color: var(--ink-3); margin-top: 8px; }
.df-yok .ik { width: 13px; height: 13px; flex: none; }

.df-olcum { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--hair); }
.df-pencere { font-size: 11px; color: var(--ink-3); margin-bottom: 8px; }
.df-gecis { color: var(--ink-3); opacity: .8; }
.df-ok { color: var(--ink-3); }
.df-uyari {
  display: flex; gap: 6px; align-items: center; font-size: 11px; font-weight: 650;
  color: var(--dikkat-metin); background: var(--dikkat-soft); border-radius: 9px; padding: 6px 10px; margin-bottom: 8px;
}
.df-uyari .ik { width: 13px; height: 13px; flex: none; }
.df-metrikler { display: flex; flex-wrap: wrap; gap: 8px 22px; }
.df-metrik { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.df-m-ad { font-size: 10px; font-weight: 650; color: var(--ink-3); text-transform: uppercase; letter-spacing: .02em; }
.df-m-deger { font-size: 14px; font-weight: 650; color: var(--ink-1); }
/* Normalleştirilmiş satırın altındaki GERÇEK örneklem — "100'de 12" küçük
   tabanda yanıltır, ham sayı onu dürüstleştirir (kullanıcı kararı) */
.df-m-ornek { font-size: 10px; color: var(--ink-3); }
.df-portfoy { font-size: 11px; color: var(--ink-2); margin-top: 9px; font-style: italic; }
/* Nedensellik iddia edilmez — çekince gözlemin ayrılmaz parçası, gizlenmez */
.df-cekince { font-size: 10px; color: var(--ink-3); margin-top: 5px; line-height: 1.45; }
.df-surum { font-size: 10px; color: var(--ink-3); margin-top: 6px; }
.df-surum.uyari { color: var(--dikkat-metin); font-weight: 650; }
.df-nasil { margin-top: 10px; }
.df-hukum-form {
  margin-top: 10px; padding: 12px; background: var(--surface-2);
  border: 1px solid var(--hair); border-radius: 14px;
}
.df-hnot {
  width: 100%; box-sizing: border-box; font: inherit; font-size: 12px; padding: 7px 10px;
  border: 1px solid var(--hair); border-radius: 9px; background: var(--surface); color: var(--ink-1);
}
.df-sayfalar { margin-top: 14px; }
.df-sayac { font-size: 11px; color: var(--ink-3); margin-right: auto; }

@media (max-width: 640px) {
  .df-metrikler { gap: 8px 16px; }
  .df-hukum { margin-left: 0; }
  /* Uzun ürün adı dar ekranda satırı taşırıyordu */
  .df-urun { flex: 1 1 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .df-sayac { flex: 1 1 100%; margin-bottom: 6px; }
}

/* --- ürün panelinde defter (kurumsal hafızanın okuma yüzeyi) --- */
.ud-liste { display: flex; flex-direction: column; }
.ud-satir {
  display: grid; grid-template-columns: 70px auto minmax(0, 1fr) auto;
  gap: 8px; align-items: baseline; padding: 6px 0; border-top: 1px solid var(--hair); font-size: 12px;
}
.ud-satir:first-child { border-top: none; }
.ud-tarih { color: var(--ink-3); font-size: 11px; }
.ud-konu { font-size: 10px; font-weight: 700; color: var(--k, var(--ink-2)); text-transform: uppercase; letter-spacing: .02em; }
.ud-ne { color: var(--ink-1); font-weight: 600; overflow: hidden; text-overflow: ellipsis; }
.ud-kapsam { font-size: 10px; font-weight: 600; color: var(--ink-3); }
.ud-not { color: var(--ink-2); font-size: 11px; grid-column: 3; }
.ud-coklu { color: var(--ink-3); font-weight: 700; }
.ud-daha { font-size: 11px; color: var(--ink-3); margin-top: 6px; }

@media (max-width: 640px) {
  /* Dar ekranda "Yaptım" metni satırı taşırıyordu; tik ile aynı yuvarlak ölçüye iner */
  .ak-yaptim { padding: 5px 8px; font-size: 10px; }
  .ud-satir { grid-template-columns: 62px auto minmax(0, 1fr); }
  .ud-not { grid-column: 1 / -1; }
}

/* --- pano altı: genişletme + konunun çözümü --- */
/* pano altı İKİ ŞERİT (kullanıcı isteği, 2026-08-14): "Tümünü gör"/not üstte,
   çözüm kapısı ALTTA tam genişlik. Eski tek-satır düzeni dar kartta hapı
   karttan taşırıyor, hizmet adını okunamaz kırpıyordu. */
.ak-alt {
  display: flex; align-items: center; gap: 8px 10px; margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--hair); flex-wrap: wrap;
}
.ak-daha {
  font: inherit; font-size: 11.5px; font-weight: 700; color: var(--ink-2); cursor: pointer; flex: none;
  background: var(--surface-2); border: 1px solid var(--hair); border-radius: 99px; padding: 6px 13px;
  display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.ak-daha b { color: var(--ink-1); font-weight: 750; }
.ak-daha:hover { border-color: var(--hair-2); color: var(--ink-1); }
.ak-alt-not { font-size: 11px; color: var(--ink-3); font-weight: 600; flex: none; }
.ak-cozum {
  flex: 1 1 100%; min-width: 0;
  display: flex; align-items: center; gap: 8px; text-decoration: none;
  font-size: 11.5px; font-weight: 650; color: var(--ink-2); background: var(--eylem-soft);
  border: 1px solid transparent; border-radius: 99px; padding: 8px 14px;
}
.ak-cozum .ik { width: 15px; height: 15px; color: var(--eylem); flex: none; }
.ak-cozum span { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ak-cozum b { color: var(--eylem); font-weight: 750; white-space: nowrap; }
.ak-cozum:hover { border-color: var(--eylem); }
.ak-ek { margin-top: 12px; }
/* Aksiyon durum şeridi — aramanın ALTINDA ortalanmış haplar (yalnız-bugün ·
   işaretlediklerim · seçili konu). Ürünler sayfasıyla aynı üç kat. Süzgeçler
   aramanın sağında duramaz: 440px arama + dört kapı 1048px'lik çubuğa simetrik
   sığmıyor, kapı kümesi orta kolona taşıp aramanın üstüne biniyordu. */
.ak-cipler { margin-top: -2px; }

/* --- panel blokları: kanıt · masadaki para · çözüm --- */
.up-kanit { display: flex; flex-direction: column; gap: 2px; }
.uk-satir { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; gap: 9px; align-items: start; padding: 9px 0; border-top: 1px solid var(--hair); }
.uk-satir:first-child { border-top: none; }
.uk-ikon { width: 26px; height: 26px; border-radius: 9px; background: var(--surface-2); color: var(--ink-2); display: grid; place-items: center; }
.uk-ikon .ik { width: 14px; height: 14px; }
.uk-satir.olumlu .uk-ikon { background: var(--iyi-soft); color: var(--iyi-metin); }
.uk-ic b { font-size: 12.5px; font-weight: 650; line-height: 1.45; }
.uk-ic .alinti { margin-top: 5px; }
.uk-kaynak { font-size: 9.5px; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-3); padding-top: 3px; }
.up-para { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.up-para-satir {
  background: var(--surface-2); border-radius: var(--r-s); padding: 9px 11px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0;
}
/* ⚠ ETİKET KÜÇÜLÜR, RAKAM KÜÇÜLMEZ. `white-space: nowrap` tek başına YETMEZ:
   flex ögesi varsayılan olarak küçülür (flex-shrink: 1) ve sarmayan metin
   kutudan TAŞAR — "−348 bin ₺"nin ₺ işareti kesiliyordu (ekran görüntüsü
   yakaladı, testler yeşildi çünkü panelin kendi taşması 0'dı: taşan şey
   karonun içindeydi). Rakam `flex: 0 0 auto` ile sabit, etiket sarar. */
.upp-ad { min-width: 0; flex: 1 1 auto; }
.upp-ad b { display: block; font-size: 11.5px; font-weight: 700; }
.upp-ad small { display: block; font-size: 9.5px; color: var(--ink-3); line-height: 1.35; margin-top: 1px; }
.upp-deger { flex: 0 0 auto; font-size: 14px; font-weight: 750; font-variant-numeric: tabular-nums; white-space: nowrap; }
.upp-deger.neg { color: var(--risk-metin); }

/* kesinti dökümü — karoların altında KATLANIR. Karolar büyüklüğü, bu liste
   toplamı verir: ara toplamlar (net teslim ciro, satıştan kalan) çizgiyle
   ayrılır ve kalın durur, aradaki kalemler soluk. Tutarlar tam (kısaltılmamış)
   ve tabular — sütun kayması olmasın. */
.up-para + .upk { margin-top: 10px; }
.upk-liste { margin-top: 8px; }
.upk-satir { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 5px 0; }
.upk-ad { font-size: 11.5px; font-weight: 600; color: var(--ink-2); min-width: 0; }
.upk-ad i { display: block; font-style: normal; font-size: 9.5px; font-weight: 600; color: var(--ink-3); margin-top: 1px; }
.upk-deger { font-size: 12px; font-weight: 700; color: var(--ink-1); font-variant-numeric: tabular-nums; white-space: nowrap; }
.upk-deger.neg { color: var(--risk-metin); }
.upk-satir.ara { border-top: 1px solid var(--hair); margin-top: 3px; padding-top: 8px; }
.upk-satir.ara .upk-ad { font-weight: 800; color: var(--ink-1); }
.upk-satir.ara .upk-deger { font-size: 13.5px; font-weight: 800; }
.upk-not { font-size: 10.5px; color: var(--ink-3); line-height: 1.5; margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--hair-2); }
.up-cozum { display: flex; flex-direction: column; gap: 8px; }
.up-cozum .hizmet-kart { text-decoration: none; }
.up-detay-git { margin-top: 14px; }

/* ---------------- MOBİL: ayrı kurgu ---------------- */
@media (max-width: 900px) {
  /* kokpit: "kaç ürün" tam genişlikte (öncelik çubuğuyla), para ve kanıt altta yan yana */
  .ak-ust .u-sol { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .ak-ust .u-sol .u-stat:first-child { grid-column: 1 / -1; }
  .ak-ust .u-sol .u-stat .u-dip { display: block; }
  .ak-ust .u-sol .u-stat:first-child .u-deger { font-size: 26px; }
  .ak-ust .u-sol .u-stat .u-not { font-size: 10px; }
  .ak-ust .u-sol .u-cubuk { height: 16px; }
  .ak-hero { padding: 16px 16px 14px; }
  .ak-hero-mark { width: 132px; height: 132px; right: -18px; bottom: -22px; }
  .ak-hero-hukum { font-size: 12px; }
  .ak-hero-btn .btn { flex: 1 1 auto; justify-content: center; }
  .ak-panolar { gap: 10px; margin-top: 12px; }
  .ak-pano { padding: 13px 13px 10px; border-radius: 18px; }
  /* başlık damgayla aynı satırda kalır; para tam genişlik alt şeride iner —
     telefonda önce "hangi konu", sonra "ne kadar para" okunur */
  .ak-bas { flex-wrap: wrap; align-items: center; }
  .ak-damga { order: 1; }
  .ak-bas-ic { order: 2; flex: 1 1 0; min-width: 0; }
  .ak-para-kut {
    order: 3; flex: 1 1 100%; max-width: none; text-align: left; padding-left: 0; margin-top: 9px;
    display: flex; align-items: baseline; gap: 8px; border-top: 1px solid var(--hair); padding-top: 9px;
  }
  .ak-para-kut b { font-size: 19px; }
  .ak-para-kut small { margin-top: 0; }
  /* satır: görsel solda, üç bilgi satırı sağda, para+işaret alt şeritte */
  .ak-satir {
    grid-template-columns: 40px minmax(0, 1fr) auto;
    grid-template-areas: 'foto ic sag';
    padding: 10px 0; gap: 10px;
  }
  .ak-foto { grid-area: foto; align-self: start; }
  .ak-ic { grid-area: ic; }
  .ak-sag { grid-area: sag; align-self: start; }
  .ak-tik { display: none; }
  .ak-ok { display: none; }
  /* "Yaptım" kabı alansız kalınca 40px'lik foto sütununa düşüyor ve hap
     daireye ezilip metni dışarı taşırıyordu; metin sütununun altına yayılır */
  .ak-islem { grid-column: 2 / -1; }
  .ak-eylem { font-size: 12.5px; }
  .ak-kanit { -webkit-line-clamp: 2; }
  .ak-alt { gap: 8px; }
  /* dar ekranda hizmet adı + bağlantı tek satıra sığmıyor (ad eziliyor,
     bağlantı kart kenarında kırpılıyordu): ad üstte, bağlantı kendi satırında */
  .ak-cozum { flex-wrap: wrap; row-gap: 3px; padding: 9px 12px; }
  .ak-cozum b { flex: 1 1 100%; padding-left: 23px; }
  .ak-daha { flex: 1 1 auto; text-align: center; }
  .up-para { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  /* konu pastası: satırlar iki kolona iner, pasta ortalanır */
  .ak-halka .u-halka-satirlar { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; }
  .ak-pasta { width: 132px; height: 132px; }
  .ak-bas-ic h3 { font-size: 14.5px; }
  .ak-para-kut b { font-size: 17.5px; }
  .ak-para { font-size: 12.5px; }
  .ak-hero-mark { display: none; }
}

/* karar dosyasında bölüm atlama şeridi — YALNIZ MOBİL. Masaüstünde panel
   göz menzilinde; telefonda dosya uzun bir sayfa olduğu için hüküm/kanıt/
   para/çözüm arasında tek dokunuşla gidilir. */
.up-atla { display: none; }
@media (max-width: 899px) {
  .up-atla {
    display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none;
    position: sticky; top: 0; z-index: 3; margin: 10px -16px 2px; padding: 8px 16px;
    background: linear-gradient(var(--surface) 78%, transparent);
  }
  .up-atla::-webkit-scrollbar { display: none; }
  .up-atla button {
    font: inherit; font-size: 11.5px; font-weight: 700; white-space: nowrap; cursor: pointer;
    color: var(--ink-2); background: var(--surface-2); border: 1px solid var(--hair);
    border-radius: 99px; padding: 6px 13px;
  }
  .up-atla button:active { border-color: var(--eylem); color: var(--eylem); }
}


/* --- konu dağılımı pastası (kokpit sağ kolon) --- */
.ak-pasta { display: block; width: 100%; max-width: 168px; height: auto; margin: 10px auto 12px; }
.ak-pasta circle { fill: none; stroke-width: 15; }
.ak-pasta .zemin { stroke: var(--surface-2); }
.ak-pasta .dilim { stroke-linecap: butt; transition: stroke-dasharray .9s cubic-bezier(.2, .7, .3, 1); }
.ak-pasta .ak-pasta-sayi {
  font-family: var(--font-display); font-size: 27px; font-weight: 600; fill: var(--ink-1);
  text-anchor: middle; letter-spacing: -.02em;
}
.ak-pasta .ak-pasta-etiket {
  font-family: var(--font-ui); font-size: 10.5px; font-weight: 650; fill: var(--ink-3);
  text-anchor: middle; letter-spacing: .04em;
}
.ak-halka .u-halka-satirlar { gap: 3px; }
.u-hs.ak-hs { gap: 8px; }
.u-hs.ak-hs span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.u-hs.ak-hs b { margin-left: 0; }
.u-hs.ak-hs em {
  font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--ink-3);
  min-width: 30px; text-align: right; font-variant-numeric: tabular-nums;
}
.u-hs.ak-hs.aktif em { color: var(--eylem); }

/* --- konu penceresi (panonun tam listesi) --- */
.ak-ks-bas { display: flex; align-items: center; gap: 11px; }
.ak-ks-kimlik { min-width: 0; flex: 1; }
.ak-ks-kimlik h3 { font-size: 16px; font-weight: 750; letter-spacing: -.01em; }
.ak-ks-alt { font-size: 11.5px; color: var(--ink-3); font-weight: 600; margin-top: 2px; }
.ak-ks-hukum {
  font-size: 12.5px; color: var(--ink-2); margin-top: 12px; padding: 10px 12px;
  background: var(--surface-2); border-radius: var(--r-s);
}
.ak-ks-hukum b { color: var(--ink-1); font-weight: 700; }
.ak-ks-liste { margin-top: 6px; }
/* çözüm kapısı listenin dibine yapışır: 55 ürünlük listede aşağı inmeden görünür */
.ak-ks-dip {
  position: sticky; bottom: 0; z-index: 2; display: flex;
  margin: 14px -20px -22px; padding: 12px 20px 18px;
  background: var(--surface); border-top: 1px solid var(--hair);
}
.ak-ks-dip .ak-cozum { padding: 10px 14px; }
@media (min-width: 900px) { .ak-ks-dip { margin: 16px -24px -22px; padding: 14px 24px 18px; } }


/* Konu penceresi masaüstünde ORTADA açılır (mobilde alt sheet olarak kalır).
   Liste sayfanın devamı değil, üstüne gelen bir çalışma penceresidir. */
@media (min-width: 900px) {
  .sheet-kap.orta .sheet {
    top: 50%; bottom: auto; max-width: 780px; border-radius: 22px;
    max-height: min(calc(100% - 28px), 900px); box-shadow: var(--golge-buyuk);
    transform: translateY(-44%) scale(.985); opacity: 0;
    transition: transform .24s cubic-bezier(.32, .72, .28, 1), opacity .18s ease;
  }
  .sheet-kap.orta.acik .sheet { transform: translateY(-50%) scale(1); opacity: 1; }
  .sheet-kap.orta .sheet-tutamac { display: none; }
  .sheet-kap.orta .sheet-icerik { padding: 20px 24px 22px; }
}

/* konu penceresinden karar dosyasına geçince: listeye dönüş kapısı */
.up-geri {
  font: inherit; font-size: 11.5px; font-weight: 700; color: var(--ink-2); cursor: pointer;
  background: var(--surface-2); border: 1px solid var(--hair); border-radius: 99px;
  padding: 6px 14px; margin-bottom: 12px; display: inline-flex; align-items: center; gap: 6px;
}
.up-geri:hover { border-color: var(--eylem); color: var(--eylem); }

/* ---- yükleme kilidi + yüzde çubuğu (bırakma alanı içinde) ---- */
.dropzone.kilitli { pointer-events: none; opacity: .62; cursor: progress; }
/* kompakt bırakma alanı tek satırlık flex — çubuğun ALT SATIRA geçmesi için
   sarma yalnız yükleme sırasında açılır (normal görünüm değişmez) */
.dropzone.kompakt.kilitli { flex-wrap: wrap; }
.yuk-ilerleme { flex: 1 1 100%; margin-top: 10px; }
.yuk-bar { height: 6px; border-radius: 99px; background: var(--hair-2, #e6e6e6); overflow: hidden; }
.yuk-bar i { display: block; height: 100%; width: 0; border-radius: 99px;
  background: var(--eylem); transition: width .35s ease; }
.yuk-bar.belirsiz i { width: 40% !important; animation: yukKay 1.1s ease-in-out infinite; }
@keyframes yukKay { 0% { margin-left: -40%; } 100% { margin-left: 100%; } }
.yuk-metin { margin-top: 5px; font-size: 11.5px; font-weight: 650; color: var(--ink-3);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (prefers-reduced-motion: reduce) {
  .yuk-bar i { transition: none; }
  .yuk-bar.belirsiz i { animation: none; width: 100% !important; margin-left: 0; }
}

/* ============================================================
   MAĞAZA PERFORMANSI — ürünler alt alta, mağazalar yan yana
   Okuma sırası: tek özet kutusu (hangi mağaza genel olarak önde) →
   ürün listesi (mağaza başına dört sütun) → satıra dokun, tam
   merdiven sağ panelde. Sayfanın tek koyu ögesi özet kutusunun
   içindeki kazanan mağaza sütunudur.
   ============================================================ */
/* durum şeridi: sekme hep göründüğü için ekran kendi hâlini söylüyor */
.mg-durum {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  margin: 0 2px 12px; padding: 9px 14px; border-radius: 999px;
  background: var(--surface); border: 1px solid var(--hair); box-shadow: var(--golge);
  font-size: 12px; line-height: 1.5;
}
.mg-durum b { font-weight: 750; color: var(--ink-1); white-space: nowrap; }
.mg-durum span:not(.mg-durum-nokta) { color: var(--ink-2); min-width: 0; }
.mg-durum-nokta {
  width: 8px; height: 8px; border-radius: 50%; flex: none; align-self: center;
  background: var(--ink-3);
}
.mg-durum.acik .mg-durum-nokta { background: var(--iyi); box-shadow: 0 0 0 3px var(--iyi-soft); }
.mg-durum.acik b { color: var(--iyi-metin); }
.mg-durum.iniyor .mg-durum-nokta { background: var(--dikkat); box-shadow: 0 0 0 3px var(--dikkat-soft); }
/* tek mağaza: aşağıda GERÇEK karne var — şerit "bekliyor" gibi solgun
   olmamalı, ama kıyas açık değil, o yüzden yeşil de değil */
.mg-durum.tek .mg-durum-nokta { background: var(--ink-3); box-shadow: 0 0 0 3px var(--surface-2); }
.mg-durum.bekliyor { background: var(--surface-2); box-shadow: none; }
@media (max-width: 720px) { .mg-durum { border-radius: 16px; } }

.mg-ozet {
  background: var(--surface); border: 1px solid var(--hair); border-radius: 24px;
  box-shadow: var(--golge); padding: 16px 18px; margin: 4px 0 6px;
}
.mg-ozet-bas {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--hair);
}
.mg-ozet-bas b { font-size: 13px; font-weight: 750; letter-spacing: .01em; color: var(--ink-1); }
.mg-ozet-bas span { font-size: 11.5px; color: var(--ink-3); }
.mg-ozet-govde { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; }
.mg-mg { border-radius: 18px; padding: 12px 14px; min-width: 0; background: var(--surface-2); }
.mg-mg-ust { display: flex; align-items: center; gap: 7px; color: var(--ink-2); }
.mg-mg-ust .ik { width: 16px; height: 16px; flex: none; }
.mg-mg-ust b { font-size: 12.5px; font-weight: 700; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Sağ küme: kapsam rozeti + kazanan tiki. İKİ AYRI ANLAM aynı hizada —
   tik performans hükmü ("en çok bırakan"), rozet veri kapsamı. Tek kapta
   toplanıyorlar çünkü ikisine de `margin-left:auto` verilse ikinci auto
   birinciyi ortaya iterdi. */
.mg-mg-ust-sag { margin-left: auto; display: flex; align-items: center; gap: 6px; flex: none; }
.mg-tik { display: grid; place-items: center; width: 19px; height: 19px;
  border-radius: 50%; background: var(--iyi-soft); color: var(--iyi-metin); flex: none; }
.mg-tik .ik { width: 11px; height: 11px; }
/* ---- veri kapsama rozeti (daire içinde bilgi/ünlem) ----
   Tıklanabilir: gerçek bilgi panelde. Hover balonu YALNIZ hızlandırıcıdır —
   telefonda hover yok, o yüzden balonda panelde olmayan hiçbir şey yazmaz. */
.mg-kapsam {
  position: relative; display: grid; place-items: center; width: 21px; height: 21px;
  padding: 0; border: 0; border-radius: 50%; cursor: pointer; flex: none;
  background: var(--surface); color: var(--ink-3); box-shadow: 0 0 0 1px var(--hair) inset;
}
.mg-kapsam .ik { width: 13px; height: 13px; }
.mg-kapsam:hover, .mg-kapsam:focus-visible { color: var(--ink-1); box-shadow: 0 0 0 1px var(--ink-3) inset; }
.mg-kapsam.dikkat { background: var(--dikkat-soft); color: var(--dikkat-metin); box-shadow: none; }
.mg-mg.onde .mg-kapsam { background: rgba(255, 255, 255, .18); color: #ffffff; box-shadow: none; }
.mg-mg.onde .mg-kapsam.dikkat { background: rgba(255, 255, 255, .32); }
/* balon: attr()'den okunur, JS yok. pointer-events:none → tıklama rozete gider */
.mg-kapsam::after {
  content: attr(data-ipucu); position: absolute; top: calc(100% + 7px); right: -4px;
  z-index: 40; width: max-content; max-width: 240px; padding: 7px 9px;
  border-radius: 10px; background: var(--ink-1); color: #ffffff;
  font-size: 10.5px; line-height: 1.45; text-align: left; font-weight: 500;
  opacity: 0; visibility: hidden; transition: opacity .12s ease;
  pointer-events: none; box-shadow: var(--golge);
}
.mg-kapsam:hover::after, .mg-kapsam:focus-visible::after { opacity: 1; visibility: visible; }
/* Karne adilliği uyarısı: hüküm silinmez, yalnız eksik söylenir */
.mg-kapsam-uyari {
  display: flex; gap: 8px; align-items: flex-start; margin: 12px 0 0; padding-top: 12px;
  border-top: 1px solid var(--hair); font-size: 11.5px; line-height: 1.5; color: var(--ink-2);
}
.mg-kapsam-uyari .ik { width: 15px; height: 15px; flex: none; margin-top: 1px; color: var(--dikkat-metin); }
.mg-kapsam-bak {
  border: 0; background: none; padding: 0; cursor: pointer; font: inherit;
  color: var(--eylem); font-weight: 700; white-space: nowrap;
}
.mg-kapsam-bak:hover { text-decoration: underline; }
.mg-mg-deger { margin: 8px 0 10px; }
.mg-mg-deger .sayi {
  display: block; font-family: var(--font-display); font-weight: 600;
  font-size: clamp(22px, 3.6vw, 28px); line-height: 1.05; letter-spacing: -.015em;
  font-variant-numeric: tabular-nums; color: var(--ink-1);
}
.mg-mg-deger small { display: block; margin-top: 2px; font-size: 10.5px; color: var(--ink-3); }
.mg-mg-alt { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin: 0;
  padding-top: 10px; border-top: 1px solid var(--hair); }
.mg-mg-alt div { min-width: 0; }
.mg-mg-alt dt { font-size: 9.5px; color: var(--ink-3); margin: 0 0 2px; white-space: nowrap; }
.mg-mg-alt dd { margin: 0; font-size: 12px; font-weight: 700; color: var(--ink-1); font-variant-numeric: tabular-nums; }
/* ---- boş ikinci mağaza sütunu (tek mağazalı kullanıcı) ----
   Mağaza kutusunun aynı ızgara hücresinde durur ki "yanında" olduğu
   biçimden okunsun; kesik çerçeve + zeminsiz gövde "burası henüz dolu
   değil" demenin sessiz yolu. Tek mağazada ızgara iki hücreye zorlanır,
   yoksa auto-fit tek sütuna düşüp davet mağazanın ALTINA iniyor. */
.mg-ozet.tekli .mg-ozet-govde { grid-template-columns: repeat(2, minmax(210px, 1fr)); }
.mg-mg.davet {
  background: none; border: 1px dashed var(--hair-2);
  display: flex; flex-direction: column; align-items: flex-start;
}
.mg-mg.davet .mg-mg-ust { color: var(--ink-3); }
.mg-mg.davet .mg-mg-ust b { color: var(--ink-3); font-weight: 700; }
.mg-davet-yazi { margin: 8px 0 12px; font-size: 11.5px; line-height: 1.55; color: var(--ink-2); }
.mg-davet-yazi b { font-weight: 750; color: var(--ink-1); }
.mg-davet-btn { margin-top: auto; }
@media (max-width: 900px) {
  .mg-ozet.tekli .mg-ozet-govde { grid-template-columns: 1fr; }
}
.mg-mg-kazanc { margin-top: 10px; font-size: 11px; color: var(--ink-2); line-height: 1.4; }
.mg-mg-kazanc b { font-weight: 750; color: var(--ink-1); }
.mg-mg-kazanc .yok { color: var(--ink-3); }
/* dönemin kazananı: sayfanın TEK koyu ögesi */
.mg-mg.onde {
  background: linear-gradient(155deg, var(--eylem) 0%, var(--eylem-koyu) 100%);
  box-shadow: var(--golge-buyuk); color: #eef5f2;
}
.mg-mg.onde .mg-mg-ust,
.mg-mg.onde .mg-mg-deger .sayi,
.mg-mg.onde .mg-mg-alt dd,
.mg-mg.onde .mg-mg-kazanc b { color: #ffffff; }
.mg-mg.onde .mg-mg-deger small,
.mg-mg.onde .mg-mg-alt dt,
.mg-mg.onde .mg-mg-kazanc { color: rgba(255, 255, 255, .72); }
.mg-mg.onde .mg-mg-alt { border-top-color: rgba(255, 255, 255, .18); }
.mg-mg.onde .mg-tik { background: rgba(255, 255, 255, .18); color: #ffffff; }

/* ---- ürün listesi: satırlar ürün, sütunlar mağaza ---- */
.mg-liste {
  background: var(--surface); border: 1px solid var(--hair); border-radius: 24px;
  box-shadow: var(--golge); overflow: hidden;
}
.mg-liste-kaydir { overflow-x: auto; -webkit-overflow-scrolling: touch; }
/* SABİT YERLEŞİM zorunlu: otomatik yerleşimde ürün adı sütunu içeriğe göre
   şişiyor ve iki mağazalı tabloda bile ikinci mağaza ekrandan taşıyordu
   (ellipsis çalışmıyor, çünkü hücrenin genişliği içerikten türüyor).
   Asgari genişlik mağaza sayısına göre satır içinde --mg-kol ile veriliyor:
   sığdığı sürece tablo tam genişlikte, sığmayınca (3+ mağaza / telefon)
   yatay kayar ve ürün sütunu yapışkan kalır. */
.mg-liste-tablo {
  width: 100%; table-layout: fixed; border-collapse: collapse; font-variant-numeric: tabular-nums;
  min-width: calc(240px + var(--mg-kol, 8) * 100px);
}
/* Başlık satırı YAPIŞKAN DEĞİL — bilerek. Denendi ve çalışmıyor: tablo
   `.mg-liste-kaydir` içinde yaşıyor ve o kabın `overflow-x: auto`su (3+
   mağaza ve telefon için gerekli) dikey ekseni de kaydırma bağlamına
   çeviriyor; `position: sticky` viewport'a değil o kaba tutunuyor ve hiç
   yapışmıyordu. Yerine SAYFALAMA var: varsayılan 20 satır, başlık zaten
   ekranda. Sticky istenirse yatay kaydırmadan vazgeçmek gerekir. */
.mg-liste-tablo thead th {
  background: var(--surface);
  text-align: right; font-weight: 700; white-space: nowrap; padding: 9px 10px;
}
.mg-grup-satir th.mg-grup-bas {
  text-align: center; font-size: 11.5px; color: var(--ink-2); letter-spacing: .01em;
  padding-bottom: 4px; border-bottom: 1px solid var(--hair);
}
.mg-grup-satir th.mg-grup-bas .ik { width: 13px; height: 13px; vertical-align: -2px; margin-right: 3px; }
.mg-alt-satir th { padding-top: 5px !important; border-bottom: 1px solid var(--hair-2); }
.mg-alt-satir th b { display: block; font-size: 11px; font-weight: 700; color: var(--ink-1); }
.mg-alt-satir th small { display: block; font-size: 9.5px; font-weight: 500; color: var(--ink-3); margin-top: 1px; }
.mg-liste-tablo th.mg-t-urun {
  text-align: left; width: 30%; vertical-align: bottom;
  border-bottom: 1px solid var(--hair-2); font-size: 11px; color: var(--ink-3);
}
/* sütun başlığı iki satıra sığabilir — "Satıştan kalan" kısaltılmasın.
   ⚠ AÇIKLAMA (small) DA SARMALI, yoksa KOMŞU HÜCRENİN ÜSTÜNE BASAR: tablo
   `table-layout: fixed` ve sütun içi ~72px; "komisyon + kargo sonrası" 116px
   istiyor. thead th'ten miras alınan `nowrap` ile sığmayan metin hücreden
   TAŞIYOR ve `text-align: right` olduğu için SOLA, yani yanındaki sütunun
   yazısının üstüne akıyordu ("komisyon + kargo sdıresatıştan ortalama" —
   2026-08-06 ekran görüntüsünde yakalandı, taşma 44px ölçüldü).
   Sayfa yatay taşma testleri bunu GÖRMEZ: taşan şey hücrenin içeriği,
   sayfanın genişliği değil — kapı metin genişliğini ölçmek zorunda. */
.mg-alt-satir th b,
.mg-alt-satir th small { white-space: normal; line-height: 1.2; }
/* mağaza grupları arası ince ayraç — hangi sütun kimin, göz kaybetmesin */
.mg-liste-tablo th.mg-grup-bas.ayrac,
.mg-liste-tablo tbody td.mg-grup-bas,
.mg-alt-satir th.mg-grup-bas { border-left: 1px solid var(--hair); }
.mg-satir { cursor: pointer; }
.mg-satir > td { border-bottom: 1px solid var(--hair); }
.mg-satir:last-child > td { border-bottom: none; }
.mg-satir:hover > td { background: color-mix(in srgb, var(--surface-2) 62%, transparent); }
.mg-satir.secili > td { background: var(--eylem-soft); }
.mg-satir.secili > td:first-child { box-shadow: inset 3px 0 0 var(--eylem); }
.mg-satir:focus-visible { outline: 2px solid var(--eylem); outline-offset: -2px; }
.mg-satir td { padding: 9px 10px; text-align: right; font-size: 12.5px; font-weight: 650; color: var(--ink-1); white-space: nowrap; }
.mg-satir td.vurgu { font-size: 13.5px; font-weight: 780; }
.mg-satir td.eksi { color: var(--risk-metin); }
.mg-satir td.en-iyi { color: var(--iyi-metin); background: var(--iyi-soft); }
.mg-satir:hover td.en-iyi, .mg-satir.secili td.en-iyi { background: color-mix(in srgb, var(--iyi-soft) 85%, var(--eylem-soft)); }
.mg-satir td .yok { color: var(--ink-3); font-weight: 500; }
.mg-satir td.mg-t-urun { text-align: left; white-space: normal; padding-left: 14px; }
.mg-t-ic { display: flex; align-items: center; gap: 10px; min-width: 0; }
.mg-t-ic .urun-thumb, .mg-t-ic .thumb-yok { border-radius: 11px; flex: none; object-fit: cover; }
.mg-t-ad { min-width: 0; }
.mg-t-ad b { display: block; font-size: 13px; font-weight: 700; line-height: 1.3; color: var(--ink-1);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mg-t-ad small { display: flex; align-items: center; gap: 5px; margin-top: 2px;
  font-size: 10.5px; font-weight: 600; color: var(--ink-2); white-space: nowrap; overflow: hidden; }
.mg-t-ad small i { font-style: normal; font-weight: 500; color: var(--ink-3); }
.mg-nokta { width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); flex: none; }
.mg-nokta.iyi { background: var(--iyi); }
.mg-nokta.risk { background: var(--risk); }
.mg-nokta.dikkat { background: var(--dikkat); }

/* alt şerit: solda "neredeyim" sayacı, sağda sayfa düğmeleri */
.mg-sayfa-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  flex-wrap: wrap; margin: 12px 2px 0;
}
.mg-sayac { font-size: 11.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.mg-sayac b { font-weight: 750; color: var(--ink-2); }
/* boyut hapları çip şeridinin sonunda, ötekilerden ince bir boşlukla ayrı */
.mg-boyut { margin-left: 4px; }

/* ---- sağ panel: tam merdiven ---- */
.mg-hukum {
  margin: 12px 0 4px; padding: 11px 13px; border-radius: 14px; font-size: 13.5px; line-height: 1.5;
  color: var(--ink-1); background: var(--surface-2); border-left: 3px solid var(--hair-2);
}
.mg-hukum.iyi { background: var(--iyi-soft); border-left-color: var(--iyi); }
.mg-hukum.risk { background: var(--risk-soft); border-left-color: var(--risk); }
.mg-hukum.dikkat { background: var(--dikkat-soft); border-left-color: var(--dikkat); }
.mg-tablo-kap { margin-top: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.mg-tablo { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.mg-tablo thead th {
  padding: 6px 8px 9px; text-align: right; vertical-align: bottom;
  border-bottom: 1px solid var(--hair-2);
}
.mg-tablo thead th b { display: block; font-size: 12px; font-weight: 750; color: var(--ink-1); white-space: nowrap; }
.mg-tablo thead th small { display: block; margin-top: 1px; font-size: 10px; font-weight: 500; color: var(--ink-3); white-space: nowrap; }
.mg-tablo thead th.en-iyi b { color: var(--iyi-metin); }
.mg-tablo th.mg-etiket { text-align: left; width: auto; min-width: 132px; padding: 7px 10px 7px 0; }
.mg-tablo tbody th.mg-etiket b { display: block; font-size: 12px; font-weight: 650; color: var(--ink-1); }
.mg-tablo tbody th.mg-etiket small { display: block; margin-top: 1px; font-size: 10px; font-weight: 400;
  color: var(--ink-3); line-height: 1.3; }
.mg-tablo tbody td {
  padding: 7px 8px; text-align: right; font-size: 12.5px; font-weight: 650; color: var(--ink-1);
  border-bottom: 1px solid var(--hair); white-space: nowrap;
}
.mg-tablo tbody tr:last-child td { border-bottom: none; }
.mg-tablo tbody th.mg-etiket { border-bottom: 1px solid var(--hair); }
.mg-tablo tbody tr:last-child th.mg-etiket { border-bottom: none; }
.mg-tablo td small { display: block; margin-top: 1px; font-size: 10px; font-weight: 500; color: var(--ink-3); }
.mg-tablo td .yok { color: var(--ink-3); font-weight: 500; font-size: 11.5px; }
.mg-tablo td.gider { color: var(--ink-2); font-weight: 600; }
.mg-tablo td.eksi { color: var(--risk-metin); }
.mg-tablo tr.vurgu th.mg-etiket, .mg-tablo tr.vurgu td { border-top: 1px solid var(--hair-2); }
.mg-tablo tr.vurgu td { font-size: 14px; font-weight: 780; }
.mg-tablo tr.vurgu th.mg-etiket b { font-weight: 750; }
.mg-tablo td.en-iyi { background: var(--iyi-soft); color: var(--iyi-metin); box-shadow: inset 2px 0 0 var(--iyi); }
.mg-tablo td.en-iyi.eksi { background: var(--surface-2); color: var(--risk-metin); box-shadow: none; }
.mg-tablo tr.mg-ayrac td { padding: 12px 0 5px; border-bottom: none; text-align: left; }
.mg-tablo tr.mg-ayrac span {
  font-size: 9.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-3);
}
.mg-eksik {
  margin: 12px 0 0; display: flex; align-items: flex-start; gap: 7px;
  font-size: 11.5px; line-height: 1.45; color: var(--ink-2);
  background: var(--surface-2); border-radius: 12px; padding: 9px 12px;
}
.mg-eksik .ik { width: 14px; height: 14px; flex: none; margin-top: 1px; color: var(--ink-3); }
.mg-notlar { margin: 10px 0 0; padding: 0 0 0 17px; }
.mg-notlar li { font-size: 12px; line-height: 1.5; color: var(--ink-2); margin: 3px 0; }
.mg-notlar li::marker { color: var(--ink-3); }

/* ---- panele taşınan motor girdileri (birim maliyet, aylık reklam) ---- */
.up-girdi { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
.up-girdi label { font-size: 12px; font-weight: 650; color: var(--ink-1); }
.up-girdi label small { display: block; font-size: 10px; font-weight: 400; color: var(--ink-3); margin-top: 1px; }
.up-girdi-kutu { display: inline-flex; align-items: center; gap: 5px; flex: none; }
.up-girdi-kutu input {
  width: 104px; padding: 7px 9px; border: 1px solid var(--hair-2); border-radius: 10px;
  background: var(--surface); color: var(--ink-1); font: inherit; font-size: 13px; font-weight: 700;
  text-align: right; font-variant-numeric: tabular-nums;
}
.up-girdi-kutu input:focus { outline: none; border-color: var(--eylem); box-shadow: 0 0 0 3px var(--eylem-soft); }
.up-girdi-kutu i { font-style: normal; font-size: 11.5px; font-weight: 650; color: var(--ink-2); }
.up-girdi-not { margin-top: 6px; font-size: 10.5px; line-height: 1.45; color: var(--ink-3); }
.up-sonuc { margin-top: 9px; padding: 9px 12px; border-radius: 12px; font-size: 12px; color: var(--ink-1); }
.up-sonuc.kar { background: var(--iyi-soft); }
.up-sonuc.zarar { background: var(--risk-soft); color: var(--risk-metin); }

/* ---- VERİ KAPSAMA PANELİ (kapsam:<mağaza> yan paneli) ----
   Rozete tıklanınca açılan gerçek içerik: hangi veri nereden geliyor, ne
   kadarı elimizde, son koşu ne oldu, sıradaki koşu ne zaman. */
.kp-serit { display: grid; gap: 8px; margin: 12px 0 14px; padding: 12px 14px;
  background: var(--surface-2); border-radius: 14px; }
.kp-serit div { display: flex; gap: 10px; align-items: baseline; justify-content: space-between; }
.kp-serit dt { font-size: 11px; color: var(--ink-3); flex: none; }
.kp-serit dd { margin: 0; font-size: 11.5px; font-weight: 650; color: var(--ink-1); text-align: right; }
.kp-tablo-kap { border: 1px solid var(--hair); border-radius: 14px; overflow: hidden; }
.kp-tablo { width: 100%; border-collapse: collapse; table-layout: fixed; }
.kp-tablo th { font-size: 9.5px; text-transform: uppercase; letter-spacing: .05em;
  color: var(--ink-3); font-weight: 700; text-align: left; padding: 8px 10px;
  background: var(--surface-2); border-bottom: 1px solid var(--hair); }
.kp-tablo td { padding: 9px 10px; border-bottom: 1px solid var(--hair); vertical-align: top;
  font-size: 11.5px; color: var(--ink-1); }
.kp-tablo tr:last-child td { border-bottom: 0; }
.kp-tablo .sag { text-align: right; font-variant-numeric: tabular-nums; }
.kp-tablo td b { display: block; font-size: 11.5px; font-weight: 700; }
.kp-tablo td small { display: block; margin-top: 2px; font-size: 10px; color: var(--ink-3); line-height: 1.35; }
.kp-tablo tr.soluk td { color: var(--ink-3); }
.kp-tablo .yok { color: var(--ink-3); }
/* Rozet metni artık tek kelimelik değil ("Bağlantıyla otomatik alınabilir"):
   nowrap kalsaydı hap sabit genişlikli hücreden taşıp yandaki KAYIT SAYISI
   sütununun üstüne binerdi (ölçüldü: 13px). Kısa haplar zaten tek satırda
   kalır — `normal` yalnız sığmayanı kırar, max-width hücrede tutar. */
.kp-yol { display: inline-block; margin: 0 4px 3px 0; padding: 2px 7px; border-radius: 999px;
  font-size: 9.5px; font-weight: 700; white-space: normal; max-width: 100%;
  background: var(--surface-2); color: var(--ink-2); }
.kp-yol.iyi { background: var(--iyi-soft); color: var(--iyi-metin); }
.kp-yol.dikkat { background: var(--dikkat-soft); color: var(--dikkat-metin); }
.kp-yol.yok { background: none; color: var(--ink-3); font-weight: 500; padding-left: 0; }
.kp-yol.firsat { background: none; color: var(--eylem); box-shadow: 0 0 0 1px var(--eylem) inset; }
/* Veri güncelliği paneli (üst çubuktaki bilgi düğmesi) — tablo dili
   kapsam paneliyle ortak (.kp-tablo), yalnız mağaza başlığı buranın. */
.vg-magaza { margin-top: 16px; }
.vg-magaza h4 { display: flex; align-items: center; gap: 7px; margin: 0 0 8px;
  font-size: 13.5px; font-weight: 700; color: var(--ink-1); }
.vg-magaza h4 .ik { width: 16px; height: 16px; color: var(--ink-2); flex-shrink: 0; }
.kp-notlar { margin: 12px 0 0; padding-left: 18px; display: grid; gap: 6px;
  font-size: 11px; line-height: 1.5; color: var(--ink-2); }
.kp-notlar b { color: var(--ink-1); font-weight: 700; }
/* EKSİK DÖNEM UYARISI — notlardan AYRI kutu. Notlar "kaynağın sınırı"nı
   anlatır (bilgi), bu blok kullanıcıdan bir dosya ister (eylem); aynı listede
   olsalar eyleme çağıran cümle bilgi maddelerinin arasında kaybolurdu. */
.kp-uyari { margin: 12px 0 0; padding: 10px 12px 10px 30px; display: grid; gap: 8px;
  border-radius: 12px; background: var(--dikkat-soft); border: 1px solid var(--dikkat);
  font-size: 11px; line-height: 1.5; color: var(--dikkat-metin); }
.kp-uyari li { list-style: none; position: relative; }
.kp-uyari li::before { content: '!'; position: absolute; left: -18px; top: 0;
  width: 13px; height: 13px; border-radius: 50%; background: var(--dikkat); color: #fff;
  font-size: 9px; font-weight: 800; line-height: 13px; text-align: center; }
.kp-uyari b { font-weight: 750; }
.kp-kapilar { display: grid; gap: 6px; margin-top: 12px; }
.kp-kapilar .up-baglanti { text-align: left; }

/* ---- telefon: özet tek sütun, liste yatay kaydırılır ---- */
@media (max-width: 720px) {
  .mg-ozet { border-radius: 20px; padding: 14px; }
  /* Balon telefonda ekrandan taşmasın: sağa yaslı ve daha dar */
  .mg-kapsam::after { max-width: min(240px, 62vw); }
  .mg-ozet-govde { grid-template-columns: 1fr; }
  .mg-liste { border-radius: 20px; }
  /* Liste dar ekranda daralmaz, KAYAR: sütun sıkıştırmak rakamları okunmaz
     yapıyordu. Ürün sütunu yapışkan kalır ki hangi satırda olduğun kaybolmasın. */
  .mg-liste-tablo { min-width: calc(186px + var(--mg-kol, 8) * 78px); }
  .mg-liste-tablo th.mg-t-urun, .mg-satir td.mg-t-urun {
    position: sticky; left: 0; z-index: 1; background: var(--surface);
    min-width: 186px; width: 186px; box-shadow: 1px 0 0 var(--hair);
  }
  .mg-satir:hover td.mg-t-urun { background: var(--surface); }
  .mg-satir.secili td.mg-t-urun { background: var(--eylem-soft); }
  .mg-sayfa-bar { justify-content: center; }
  .mg-t-ad b { font-size: 12px; }
  /* dar sütunda hüküm etiketine yer açmak için model kodu düşer (panelde var) */
  .mg-t-ad small i { display: none; }
  .mg-satir td { font-size: 12px; padding: 8px; }
  .mg-alt-satir th small { display: none; }
  .mg-tablo th.mg-etiket { min-width: 104px; }
  .mg-tablo tbody th.mg-etiket small { display: none; }
  .mg-tablo tbody td { font-size: 12px; padding: 7px 6px; }
  .up-girdi-kutu input { width: 92px; }
}

/* ══════════════════════════════════════════════════ TANITIM TURU (src/tur.js)

   Kullanıcı isteği (2026-08-03): "ilgili alanı aydınlık bir kutu içine alıp
   arka planı hafif karartacağın ve ileri şeklinde adım adım sistemi
   tanıtacağın bir demo".

   KARARTMA TEK ELEMANLA yapılır: delik dikdörtgeninin box-shadow'u 100vmax
   yayılır, yani deliğin DIŞI kararır. Dört ayrı karartma paneli denendi;
   kaydırma sırasında dördü ayrı ayrı güncellendiği için kenarlarda titreme
   oluyordu. Tek elemanda böyle bir yarış yok.

   ⛔ pointer-events: none — karartma tıklama YUTMAZ. Tur bir kilit değil
   anlatıcıdır; kullanıcı aydınlıktaki şeye dokunabilmeli. Yalnız balon
   olay alır (aşağıda auto'ya döner).

   z-index 300: en yüksek mevcut katman 260 (bottom sheet). Tur her şeyin
   üstünde durmalı, sheet açıkken bile. */
.tur-kap {
  position: fixed;
  inset: 0;
  z-index: 300;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity .22s ease;
}
.tur-kap.acik { opacity: 1; visibility: visible; }

.tur-delik {
  position: absolute;
  border-radius: 14px;
  /* deliğin dışını karartan dev gölge + aydınlık alanın beyaz halkası */
  box-shadow:
    0 0 0 2px rgba(255, 255, 255, .92),
    0 0 0 100vmax rgba(16, 26, 22, .56);
  transition: left .28s cubic-bezier(.22, .61, .36, 1), top .28s cubic-bezier(.22, .61, .36, 1),
              width .28s cubic-bezier(.22, .61, .36, 1), height .28s cubic-bezier(.22, .61, .36, 1),
              opacity .2s ease;
  pointer-events: none;
}

.tur-balon {
  position: absolute;
  pointer-events: auto;
  background: var(--surface);
  border: 1px solid var(--hair);
  border-radius: 18px;
  padding: 16px 16px 14px;
  box-shadow: 0 2px 4px rgba(24, 36, 32, .05), 0 26px 56px -20px rgba(23, 83, 73, .34);
  transition: left .28s cubic-bezier(.22, .61, .36, 1), top .28s cubic-bezier(.22, .61, .36, 1);
}
/* Ortada duran kapanış kartı ok taşımaz (bağlanacağı bir alan yok) */
.tur-balon.ortada { box-shadow: 0 2px 6px rgba(24, 36, 32, .06), 0 32px 70px -18px rgba(23, 83, 73, .40); }

/* OK — balonun hedefe bakan kenarında. data-yon, OKUN HANGİ KENARDA
   olduğunu söyler: yon="sol" → ok solda → hedef solda. */
.tur-balon[data-yon]::before,
.tur-balon[data-yon]::after {
  content: '';
  position: absolute;
  width: 12px;
  height: 12px;
  background: var(--surface);
  transform: rotate(45deg);
}
.tur-balon[data-yon]::before { background: var(--hair); }
.tur-balon[data-yon="sol"]::before { left: -7px; top: calc(50% - 6px); }
.tur-balon[data-yon="sol"]::after { left: -5.5px; top: calc(50% - 6px); }
.tur-balon[data-yon="sag"]::before { right: -7px; top: calc(50% - 6px); }
.tur-balon[data-yon="sag"]::after { right: -5.5px; top: calc(50% - 6px); }
.tur-balon[data-yon="ust"]::before { top: -7px; left: calc(50% - 6px); }
.tur-balon[data-yon="ust"]::after { top: -5.5px; left: calc(50% - 6px); }
.tur-balon[data-yon="alt"]::before { bottom: -7px; left: calc(50% - 6px); }
.tur-balon[data-yon="alt"]::after { bottom: -5.5px; left: calc(50% - 6px); }
.tur-balon[data-yon=""]::before,
.tur-balon[data-yon=""]::after { display: none; }

.tur-balon .tb-ust { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
/* Sayaç hap formunda ve BÜYÜK SERİF: turun neresinde olduğu bir bakışta */
.tur-balon .tb-sayac {
  font-family: var(--font-display);
  font-size: 13px;
  font-weight: 600;
  color: var(--eylem);
  background: var(--eylem-soft);
  border-radius: 999px;
  padding: 3px 11px;
  letter-spacing: .01em;
}
.tur-balon .tb-x {
  flex: none;
  width: 26px; height: 26px;
  border: 0; border-radius: 8px;
  background: none;
  color: var(--ink-3);
  font-size: 13px;
  cursor: pointer;
  display: grid; place-items: center;
}
.tur-balon .tb-x:hover { background: var(--surface-2); color: var(--ink-1); }

.tur-balon .tb-baslik {
  font-family: var(--font-display);
  font-size: 19px;
  line-height: 1.22;
  font-weight: 600;
  color: var(--ink-1);
  margin: 10px 0 6px;
}
.tur-balon .tb-metin {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--ink-2);
  margin: 0 0 11px;
}
/* "Açtığı karar" — turun sözleşmesi: her adım bir ticari kararı söyler.
   Görsel olarak ayrı bir blok, çünkü metnin devamı değil amacı. */
.tur-balon .tb-karar {
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--ink-1);
  background: var(--surface-2);
  border-left: 2px solid var(--eylem);
  border-radius: 0 10px 10px 0;
  padding: 9px 11px;
}
.tur-balon .tb-karar b {
  display: block;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--eylem);
  margin-bottom: 3px;
}

.tur-balon .tb-noktalar { display: flex; gap: 5px; margin: 12px 0 10px; }
.tur-balon .tb-noktalar i {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--hair-2);
  transition: background .2s ease, width .2s ease;
}
.tur-balon .tb-noktalar i.gecti { background: var(--eylem-soft); }
.tur-balon .tb-noktalar i.su { background: var(--eylem); width: 16px; border-radius: 999px; }

.tur-balon .tb-alt { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tur-balon .tb-sag { display: flex; align-items: center; gap: 7px; }
.tur-balon .tb-atla,
.tur-balon .tb-geri {
  border: 0;
  background: none;
  color: var(--ink-3);
  font: 560 12.5px/1.2 var(--font-ui);
  padding: 7px 4px;
  cursor: pointer;
  border-radius: 8px;
}
.tur-balon .tb-geri { color: var(--ink-2); padding: 7px 10px; }
.tur-balon .tb-atla:hover, .tur-balon .tb-geri:hover { color: var(--ink-1); background: var(--surface-2); }
/* Sayfanın TEK koyu ögesi: tur boyunca gözün gideceği yer belli olsun */
.tur-balon .tb-ileri {
  border: 0;
  border-radius: 999px;
  background: var(--eylem);
  color: #fff;
  font: 640 13px/1.2 var(--font-ui);
  padding: 9px 16px;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}
.tur-balon .tb-ileri:hover { background: var(--eylem-koyu); }
.tur-balon .tb-ileri:focus-visible { outline: 2px solid var(--eylem); outline-offset: 2px; }

/* Telefonda balon tam genişliğe yakın çalışır; yan yerleşim tur.js'te
   zaten kapatılıyor (GENIS_ESIK), burada yalnız yazı ölçüleri iner. */
@media (max-width: 560px) {
  .tur-balon { padding: 14px 13px 12px; border-radius: 16px; }
  .tur-balon .tb-baslik { font-size: 17.5px; }
  .tur-balon .tb-metin { font-size: 13px; }
}

/* Hareketi azaltma tercihi: konum sıçraması kalır ama animasyon durur */
@media (prefers-reduced-motion: reduce) {
  .tur-delik, .tur-balon { transition: none; }
}

/* ⛔ İLK DEĞER YOLCULUĞU KARTININ CSS'İ KALDIRILDI (2026-08-08).
   Kart kokpitten çıkarıldı (kullanıcı kararı: "bu panel kalkacak"); geride
   yalnız tanıtım turunun girişi kaldı ve onun kuralı yukarıda (.tur-davet /
   .ydg-tanitim). Modül src/yolculuk.js DURUYOR — maliyet kapsamının tek
   sahibi o ve /yonetim#telemetri paneli aynı durumu türetiyor. */

/* ══════════════════════════════════════════ YENİ ÜRÜN HESABI (src/aday.js)
   "Almadan önce karar" ekranı: solda girdiler (marj masasıyla AYNI form
   bileşeni — .bs-alan / .bs-alan-grid oradan gelir), sağda karar blokları.
   Sayfanın tek koyu ögesi hüküm kartıdır; göz oraya gitmeli.

   ⚠ Sol sütun .mj-panel DEĞİL: o sınıf sticky + max-height taşıyor ve
     kaydırmayı .mj-u-govde'ye devrediyor; burada öyle bir gövde olmadığı
     için form kesilirdi. */
.ad-alan { display: grid; gap: 14px; grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1040px) {
  .ad-alan { grid-template-columns: minmax(0, 400px) minmax(0, 1fr); }
}
.ad-sol {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--r);
  box-shadow: var(--golge); padding: 15px 16px 16px; min-width: 0;
}
.ad-sol-bas { display: flex; align-items: flex-end; gap: 10px; margin-bottom: 10px; }
.ad-ad { flex: 1 1 auto; min-width: 0; display: block; }
.ad-ad .ba-etiket { display: block; margin-bottom: 5px; }
.ad-ad .ba-etiket small { font-weight: 550; color: var(--ink-3); text-transform: none; letter-spacing: 0; }
.ad-ad input {
  width: 100%; border: 1px solid var(--hair-2); border-radius: 10px;
  background: var(--surface-2); padding: 8px 10px; min-width: 0;
  font: 600 13px/1.3 var(--font-ui); color: var(--ink-1);
}
.ad-ad input:focus { outline: none; border-color: var(--eylem); background: var(--surface); }
.ad-temizle { flex: none; }
.ad-temizle:disabled { opacity: .4; cursor: default; }
/* ⚠ Bu satırlar CÜMLEDİR, satır düzeni DEĞİL: display:flex denendi ve her
   <b> ayrı bir flex ögesi olduğu için cümle sütunlara bölünüyordu
   ("Başa baş fiyat | 382,96 ₺ | — pazar" gibi). Metin normal akar, ikon
   inline hizalanır. */
.ad-not {
  font-size: 11px; line-height: 1.5; color: var(--ink-2);
  background: var(--eylem-soft); border-radius: 10px; padding: 8px 10px; margin-bottom: 12px;
}
.ad-not .ik {
  width: 14px; height: 14px; color: var(--eylem);
  display: inline-block; vertical-align: -2px; margin-right: 5px;
}
.ad-sag { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.ad-sag > div, .ad-sag > .mj-u-kart { margin-bottom: 0; }
.ad-kart { margin-bottom: 0 !important; }

/* ---- HÜKÜM: sayfanın tek koyu ögesi ---- */
.ad-hukum {
  border-radius: var(--r); padding: 16px 18px 15px;
  background: linear-gradient(155deg, var(--eylem) 0%, var(--eylem-koyu) 100%);
  box-shadow: var(--golge-buyuk); color: rgba(255, 255, 255, .78);
}
.ad-hukum .t-etiket {
  font-size: 10px; font-weight: 750; letter-spacing: .1em; text-transform: uppercase;
  color: rgba(255, 255, 255, .68);
}
.ad-buyuk {
  font-family: var(--font-display); font-variation-settings: 'opsz' 48;
  font-size: clamp(30px, 7vw, 44px); font-weight: 600; letter-spacing: -.015em;
  line-height: 1.05; margin: 6px 0 10px; color: #fff;
  font-variant-numeric: tabular-nums; display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap;
}
.ad-buyuk .birim {
  font-family: var(--font-ui); font-size: 12px; font-weight: 600;
  color: rgba(255, 255, 255, .62); letter-spacing: 0;
}
.ad-hukum.zarar .ad-buyuk { color: #ffc9c2; }
.ad-haplar { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.ad-cip {
  font-size: 11px; font-weight: 550; color: rgba(255, 255, 255, .76);
  background: rgba(255, 255, 255, .12); border-radius: 999px; padding: 4px 10px;
}
.ad-cip b { color: #fff; font-weight: 700; font-variant-numeric: tabular-nums; }
/* Kademe hapı marj masasıyla AYNI bileşen (.kad) — koyu zeminde okunması
   için yalnız zemini açılır, renk kodu ve metni değişmez. */
.ad-hukum .kad { background: rgba(255, 255, 255, .92); }
.ad-h-not {
  margin-top: 10px;
  font-size: 11.5px; line-height: 1.55; color: rgba(255, 255, 255, .82);
  padding-top: 9px; border-top: 1px solid rgba(255, 255, 255, .16);
}
.ad-h-not b { color: #fff; font-weight: 700; font-variant-numeric: tabular-nums; }
.ad-h-not .ik {
  width: 14px; height: 14px; color: rgba(255, 255, 255, .7);
  display: inline-block; vertical-align: -2px; margin-right: 5px;
}
.ad-h-not.uyari { color: #ffd7ac; }
.ad-h-not.uyari .ik { color: #ffb968; }
/* Girdi eksikken / hesaplanamazken: koyu değil sakin bir bekleme kartı —
   "burada bir hüküm var" izlenimi verilmesin. */
.ad-hukum.bekle {
  background: var(--surface); border: 1px dashed var(--hair-2); box-shadow: none;
  color: var(--ink-2);
}
.ad-hukum.bekle .ad-h-bas {
  display: flex; align-items: center; gap: 7px;
  font-family: var(--font-display); font-variation-settings: 'opsz' 30;
  font-size: 18px; font-weight: 600; color: var(--ink-1); letter-spacing: -.01em;
}
.ad-hukum.bekle .ad-h-bas .ik { width: 17px; height: 17px; color: var(--dikkat); }
.ad-hukum.bekle .ad-h-ozet { font-size: 12.5px; line-height: 1.55; color: var(--ink-2); margin: 7px 0 0; }
.ad-hukum.bekle .ad-h-not {
  color: var(--ink-2); border-top-color: var(--hair);
}
.ad-hukum.bekle .ad-h-not b { color: var(--ink-1); }

/* ---- karar satırları (pazar + parti blokları) ---- */
.ad-satir { font-size: 12px; line-height: 1.6; color: var(--ink-2); margin-top: 8px; }
.ad-satir:first-child { margin-top: 0; }
.ad-satir b { color: var(--ink-1); font-weight: 700; font-variant-numeric: tabular-nums; }
.ad-satir .ik {
  width: 14px; height: 14px; color: var(--eylem);
  display: inline-block; vertical-align: -2px; margin-right: 5px;
}
.ad-satir.neg b { color: var(--risk-metin); }
.ad-ince { font-size: 11px; color: var(--ink-3); font-weight: 550; }
.ad-uyari {
  margin-top: 9px;
  font-size: 12px; line-height: 1.55; color: var(--risk-metin);
  background: var(--risk-soft); border-radius: 10px; padding: 9px 11px;
}
.ad-uyari b { font-weight: 750; font-variant-numeric: tabular-nums; }
.ad-uyari .ik {
  width: 15px; height: 15px; color: var(--risk);
  display: inline-block; vertical-align: -2px; margin-right: 5px;
}

/* ---- FİYAT KAYDIRICI: bu ekranın ana hareketi ----
   Ray İKİ RENKLİ: başa baş noktasına kadar risk tonu, sonrası eylem tonu —
   hangi fiyattan sonra para kazanıldığı tutamacı sürüklemeden görünür.
   --bb yokken (maliyet girilmemiş, başa baş hesaplanamaz) tek renge düşer;
   uydurma bir eşik çizilmez. */
.ad-slider-kart { padding: 13px 15px 11px; }
.ad-slider-ust { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.ad-slider-deger {
  font-family: var(--font-display); font-variation-settings: 'opsz' 28;
  font-size: 21px; font-weight: 600; letter-spacing: -.012em; color: var(--eylem-koyu);
  font-variant-numeric: tabular-nums;
}
input[type="range"].ad-slider {
  margin: 14px 0 3px;
  background:
    linear-gradient(to right,
      var(--risk) 0, var(--risk) var(--bb, 0%),
      var(--eylem) var(--bb, 0%), var(--eylem) var(--dolu, 50%),
      var(--hair-2) var(--dolu, 50%));
}
/* Kâra geçiş noktası: rayın üstünde ince çentik + altında etiketi */
.ad-slider-bb { position: relative; height: 14px; margin-bottom: 2px; }
.ad-slider-bb::before {
  content: ''; position: absolute; left: var(--bb); top: -14px;
  width: 2px; height: 12px; background: var(--ink-1); opacity: .45; transform: translateX(-1px);
}
.ad-slider-bb span {
  position: absolute; left: var(--bb); top: 0; transform: translateX(-50%);
  font-size: 9.5px; font-weight: 650; letter-spacing: .02em; color: var(--ink-2);
  white-space: nowrap; font-variant-numeric: tabular-nums;
  /* uçlarda taşmasın: etiket rayın dışına çıkmak yerine kenara yaslanır */
  max-width: 100%;
}
.ad-slider-not { font-size: 11px; line-height: 1.5; color: var(--ink-3); margin: 6px 0 0; }
.ad-slider-not b { color: var(--ink-2); font-weight: 700; }
.ad-slider-bos .mj-u-aciklama { margin-bottom: 0; }

/* ---- partinin kurtarma noktası ---- */
.ad-kurtarma { margin-top: 10px; }
.ad-kurtarma-bar {
  height: 9px; border-radius: 999px; background: var(--surface-2);
  border: 1px solid var(--hair); overflow: hidden;
}
.ad-kurtarma-bar i {
  display: block; height: 100%;
  background: linear-gradient(90deg, var(--eylem) 0%, var(--iyi) 100%);
}
.ad-kurtarma-yazi { font-size: 12px; line-height: 1.6; color: var(--ink-2); margin-top: 7px; }
.ad-kurtarma-yazi b { color: var(--ink-1); font-weight: 700; font-variant-numeric: tabular-nums; }

/* Boş durumdan yeni ürün hesabına kapı (Excel yüklenmemişken) */
.bos-kapi {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  text-align: center; margin: 18px auto 0; max-width: 460px;
}
.bos-kapi span { font-size: 12px; color: var(--ink-3); line-height: 1.55; }

@media (max-width: 620px) {
  .ad-sol { padding: 13px 13px 14px; border-radius: var(--r-s); }
  .ad-sol-bas { flex-wrap: wrap; }
  .ad-hukum { padding: 14px 14px 13px; border-radius: var(--r-s); }
  .ad-alan { gap: 12px; }
}

/* ================= HAFTALIK KARAR BRİFİNGİ =================
   Kokpitin ikinci ufku (#/ → "Bu hafta"). Yeni bir bileşen dili KURULMADI:
   ufuk anahtarı .gorunum-sec'in hap dilini, bölümler .card'ı, rozetler
   .rozet'i kullanıyor. Buradaki kurallar yalnız brifinge özgü olanlar.

   TEK KOYU ÖGE: .bf-lead (bu hafta yapılması gereken ≤3 karar). Haftanın
   geri kalanı bağlamdır; sayfada ikinci bir koyu blok olsaydı gözün
   nereye gideceği belirsizleşirdi (kullanıcı tasarım kuralı). */

.ufuk-sec { display: inline-flex; gap: 6px; margin: 10px 0 0; }
.ufuk-sec .us {
  cursor: pointer; border: 1px solid var(--hair); background: var(--surface);
  color: var(--ink-2); font-family: var(--font-ui);
  font-size: 12.5px; font-weight: 650; padding: 7px 15px; border-radius: 999px;
}
.ufuk-sec .us:hover { border-color: var(--hair-2); color: var(--ink-1); }
.ufuk-sec .us.aktif { background: var(--ink-1); border-color: var(--ink-1); color: var(--page); }
@media (prefers-color-scheme: dark) { .ufuk-sec .us.aktif { color: var(--page); } }

/* Pencere şeridi — hangi 7 gün konuşuluyor. Dönem seçiliyse takvimin
   haftası DEĞİL dönemin son haftasıdır; şerit bunu açıkça yazar. */
.bf-pencere {
  display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
  margin: 14px 0 2px; color: var(--ink-2); font-size: 12.5px; font-weight: 620;
}
.bf-pencere .ik { width: 15px; height: 15px; color: var(--ink-3); }
.bf-pencere small { color: var(--ink-3); font-weight: 550; }
.bf-sakin {
  margin-left: auto; font-size: 11.5px; font-weight: 650; letter-spacing: .02em;
  color: var(--iyi-metin); background: var(--iyi-soft);
  border-radius: 999px; padding: 4px 11px;
}

/* --- bölüm kabuğu --- */
.bf-bolum { padding: 16px 18px 15px; }
.bf-bas { display: flex; align-items: center; gap: 10px; }
.bf-bas h3 { margin: 0; font-size: 14.5px; font-family: var(--font-ui); font-weight: 700; letter-spacing: -.01em; }
.bf-ikon { display: inline-flex; color: var(--ink-3); }
.bf-ikon .ik { width: 17px; height: 17px; }
/* Serif rakam: bölümün ağırlığı bir bakışta okunur (kullanıcı tasarım zevki) */
.bf-sayi {
  margin-left: auto; font-family: var(--font-display); font-size: 24px;
  font-weight: 600; line-height: 1; color: var(--ink-1);
}
.bf-soz { color: var(--ink-2); font-size: 12.5px; line-height: 1.6; margin: 7px 0 0; }
.bf-bos { color: var(--ink-2); font-size: 12.5px; line-height: 1.65; margin: 10px 0 0; }
.bf-not {
  margin: 11px 0 0; padding: 10px 12px; border-radius: var(--r-s);
  background: var(--surface-2); color: var(--ink-2); font-size: 12px; line-height: 1.6;
}
.bf-bolum.dikkat { border-color: color-mix(in srgb, var(--dikkat) 40%, var(--hair)); }
/* Bekleme noktası — "hesaplanıyor" cümlesinin başındaki nabız */
.bf-bekle {
  display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: var(--ink-3); animation: bfNabiz 1.1s ease-in-out infinite;
}
@keyframes bfNabiz { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .bf-bekle { animation: none; opacity: .6; } }

/* --- 1. bu hafta yapılması gereken (tek koyu öge) --- */
.bf-lead {
  background: var(--ink-1); border-color: var(--ink-1);
  color: color-mix(in srgb, var(--page) 88%, transparent);
  padding: 17px 19px 16px;
}
.bf-lead .bf-bas h3, .bf-lead .bf-sayi { color: var(--page); }
.bf-lead .bf-ikon { color: color-mix(in srgb, var(--page) 55%, transparent); }
.bf-lead .bf-soz, .bf-lead .bf-bos { color: color-mix(in srgb, var(--page) 68%, transparent); }
.bf-kararlar { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; }
.bf-karar {
  display: flex; align-items: center; gap: 13px; cursor: pointer;
  padding: 12px 14px; border-radius: var(--r-s);
  background: color-mix(in srgb, var(--page) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--page) 12%, transparent);
}
.bf-karar:hover { background: color-mix(in srgb, var(--page) 14%, transparent); }
.bf-karar:focus-visible { outline: 2px solid var(--page); outline-offset: 2px; }
.bf-no {
  flex-shrink: 0; width: 26px; text-align: center;
  font-family: var(--font-display); font-size: 21px; font-weight: 600; line-height: 1;
  color: color-mix(in srgb, var(--page) 52%, transparent);
}
/* Öncelik yalnız sol kenar çizgisiyle: koyu zeminde dolgu renkleri okunmuyor */
.bf-karar.o1 { border-left: 3px solid var(--risk); }
.bf-karar.o2 { border-left: 3px solid var(--serious); }
.bf-karar.o3 { border-left: 3px solid var(--dikkat); }
.bf-kmetin { min-width: 0; flex: 1; display: grid; gap: 3px; }
.bf-kmetin b { color: var(--page); font-size: 13.5px; font-weight: 650; line-height: 1.4; }
.bf-kurun { color: color-mix(in srgb, var(--page) 62%, transparent); font-size: 11.5px; }
.bf-kneden { color: color-mix(in srgb, var(--page) 48%, transparent); font-size: 11px; line-height: 1.5; }
.bf-kpara { flex-shrink: 0; text-align: right; display: grid; gap: 1px; }
.bf-kpara b { font-family: var(--font-display); font-size: 17px; font-weight: 600; color: var(--page); }
.bf-kpara small { font-size: 10.5px; color: color-mix(in srgb, var(--page) 45%, transparent); }
.bf-lead-alt {
  margin: 12px 0 0; font-size: 12px; line-height: 1.6;
  color: color-mix(in srgb, var(--page) 66%, transparent);
}
.bf-lead-alt b { color: var(--page); }

/* --- 3-6. bölümler: iki kolon, dar ekranda tek --- */
.bf-izgara { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; }
.bf-izgara > .card { margin: 0; }

.bf-satirlar { display: grid; gap: 6px; margin: 11px 0 0; }
.bf-satir {
  display: flex; align-items: center; gap: 10px; text-align: left;
  padding: 10px 11px; border-radius: var(--r-s);
  background: var(--surface-2); border: 1px solid transparent;
}
.bf-satir[data-urun-panel], .bf-satir[data-brifing-git], .bf-satir[data-sheet] { cursor: pointer; }
.bf-satir[data-urun-panel]:hover, .bf-satir[data-brifing-git]:hover, .bf-satir[data-sheet]:hover {
  border-color: var(--hair-2);
}
.bf-satir:focus-visible { outline: 2px solid var(--eylem); outline-offset: 1px; }
.bf-sikon { display: inline-flex; flex-shrink: 0; color: var(--ink-3); }
.bf-sikon .ik { width: 16px; height: 16px; }
.bf-smetin { min-width: 0; flex: 1; display: grid; gap: 2px; }
.bf-smetin b {
  font-size: 12.5px; font-weight: 650; color: var(--ink-1); line-height: 1.4;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bf-salt { font-size: 11px; color: var(--ink-3); line-height: 1.5; }
.bf-spara { flex-shrink: 0; font-family: var(--font-display); font-size: 14.5px; font-weight: 600; color: var(--ink-1); }
/* Dönemde hiç satmamış ürün: rakam yerine cümle — sessiz sakin ton */
.bf-spara.yok { font-family: var(--font-ui); font-size: 10.5px; font-weight: 600; color: var(--ink-3); }
.bf-durum {
  flex-shrink: 0; font-size: 10.5px; font-weight: 650; letter-spacing: .01em;
  color: var(--ink-2); background: var(--surface); border: 1px solid var(--hair);
  border-radius: 999px; padding: 4px 9px; text-align: center;
}
.bf-durum.hazir { color: var(--iyi-metin); border-color: color-mix(in srgb, var(--iyi) 40%, transparent); background: var(--iyi-soft); }
.bf-durum.bekler { color: var(--eylem); border-color: color-mix(in srgb, var(--eylem) 34%, transparent); }
.bf-satir.doldu { background: color-mix(in srgb, var(--eylem-soft) 55%, var(--surface-2)); }
.bf-satir.uyari { background: color-mix(in srgb, var(--dikkat-soft) 45%, var(--surface-2)); }
.bf-satir.uyari .bf-sikon { color: var(--dikkat-metin); }
.bf-satir.o1 .bf-sikon { color: var(--risk); }
.bf-satir.o2 .bf-sikon { color: var(--serious); }

.bf-kalan {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  margin: 9px 0 0; padding: 0; border: none; background: none;
  color: var(--eylem); font-family: var(--font-ui); font-size: 12px; font-weight: 650;
}
.bf-kalan .ik { width: 13px; height: 13px; }
.bf-kalan:hover { text-decoration: underline; }
.bf-lead-alt .bf-kalan { color: var(--page); text-decoration: underline; }

@media (max-width: 900px) {
  .bf-izgara { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .bf-bolum, .bf-lead { padding: 14px 14px 13px; border-radius: var(--r-s); }
  .bf-karar { padding: 11px 12px; gap: 10px; }
  .bf-no { width: 20px; font-size: 18px; }
  /* Telefonda durum hapı satırı taşırıyordu: metne düşürülüp alta alınır */
  .bf-satir { align-items: flex-start; }
  .bf-durum { white-space: normal; }
  .bf-kneden { display: none; }
}

/* ============================================================ TERİM AÇIKLAMASI
   "?" düğmesi + yan/orta panelde açılan sözlük kartı (src/sozluk.js).
   Düğme İKİNCİLDİR: ana metnin okunmasını engellemez, yanına iliştirilir.
   Ana metin tek başına anlaşılır olmak zorunda — bu düğme yalnız derinlik
   verir (bkz. sozluk.js başındaki değişmez). */
.ne {
  display: inline-flex; align-items: center; justify-content: center;
  width: 15px; height: 15px; padding: 0; margin-left: 5px;
  border: 1px solid var(--hair-2); border-radius: 50%;
  background: transparent; color: var(--ink-3);
  font-size: 9.5px; font-weight: 800; line-height: 1;
  cursor: pointer; flex-shrink: 0; vertical-align: middle;
  transition: color .15s, border-color .15s, background .15s;
}
.ne:hover { color: var(--eylem); border-color: var(--eylem); background: color-mix(in srgb, var(--eylem) 8%, transparent); }
.ne:focus-visible { outline: 2px solid var(--eylem); outline-offset: 2px; }
/* Son kelime + "?" tek birim: sarılan metinde düğme tek başına alt satıra
   düşmesin (gauge etiketi "SATIŞTAN KALAN ORANI"da yaşandı — "?" yalnız
   başına üçüncü satıra iniyordu, 2026-08-12). */
.ne-birlik { white-space: nowrap; }
/* Koyu zeminli hero/gauge içinde kontrast korunur */
.kart-hero .ne, .hero .ne { color: color-mix(in srgb, currentColor 62%, transparent); border-color: color-mix(in srgb, currentColor 30%, transparent); }
.kart-hero .ne:hover, .hero .ne:hover { color: currentColor; border-color: currentColor; background: color-mix(in srgb, currentColor 12%, transparent); }

.ne-panel { font-size: 13px; line-height: 1.68; color: var(--ink-2); }
.ne-terim { font-size: 11px; color: var(--ink-3); margin-bottom: 10px; }
.ne-terim b { color: var(--ink-2); font-weight: 700; }
.ne-kisa { font-size: 14.5px; font-weight: 600; color: var(--ink-1); line-height: 1.55; margin: 0 0 12px; }
.ne-uzun { margin: 0 0 10px; }
.ne-ornek {
  display: flex; gap: 9px; align-items: flex-start;
  margin: 14px 0 4px; padding: 11px 13px; border-radius: 11px;
  background: var(--surface-2); border: 1px solid var(--hair);
  font-size: 12.5px; font-weight: 600; color: var(--ink-1);
}
.ne-ornek .ik { width: 16px; height: 16px; color: var(--eylem); flex-shrink: 0; margin-top: 1px; }
.ne-bakiniz { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 16px; padding-top: 13px; border-top: 1px solid var(--hair); }
.ne-bakiniz > span { font-size: 11px; color: var(--ink-3); font-weight: 650; }

/* Veri güveni panelinin kişiye özel bölümü (ui.js guvenDurumHtml) */
.ne-durum { margin-top: 16px; padding-top: 13px; border-top: 1px solid var(--hair); }
.ne-durum-bas { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12px; font-weight: 650; color: var(--ink-1); margin-bottom: 10px; }
.ne-etken { padding: 10px 13px; border-radius: 11px; background: var(--surface-2); border: 1px solid var(--hair); margin-bottom: 8px; font-size: 12.5px; line-height: 1.6; }
.ne-etken b { display: block; color: var(--ink-1); font-weight: 650; margin-bottom: 3px; }
.ne-etken span { color: var(--ink-2); }
.ne-not { font-size: 11.5px; color: var(--ink-3); margin: 10px 0 0; }

/* ---------------------------------------------------------------- kılavuz
   Kurulum kontrol listesi (veri yönetimi paneli). Adımlar akordiyon: aynı anda
   yalnız biri açık — dokuz adımın tamamı açık olsaydı panel okunmaz uzunlukta
   olurdu ve satıcı sıradaki işi bulamazdı. */
.kv { border: 1px solid var(--hair-2); border-radius: 12px; background: var(--surface); margin-bottom: 12px; overflow: hidden; }
.kv-ust { padding: 12px 14px 10px; border-bottom: 1px solid var(--hair); }
.kv-baslik { display: flex; align-items: center; gap: 8px; font-weight: 650; color: var(--ink-1); font-size: 13.5px; }
.kv-say { font-size: 12px; color: var(--ink-2); font-weight: 600; background: var(--surface-2); border-radius: 999px; padding: 1px 8px; }
.kv-bar { height: 4px; border-radius: 999px; background: var(--hair); margin-top: 9px; overflow: hidden; }
.kv-bar i { display: block; height: 100%; background: var(--eylem); border-radius: 999px; transition: width .35s ease; }

.kv-adim + .kv-adim { border-top: 1px solid var(--hair); }
.kv-bas { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 14px; background: none; border: 0; cursor: pointer; text-align: left; font: inherit; }
.kv-bas:hover { background: var(--surface-2); }
/* Tik kutusu SABİT genişlikte: adım adları farklı uzunlukta ve kutu içeriğe
   göre daralsaydı adım adları soldan hizasız başlardı. */
.kv-tik { flex: 0 0 auto; width: 18px; height: 18px; border-radius: 50%; border: 1.5px solid var(--hair-2); display: flex; align-items: center; justify-content: center; color: #fff; }
.kv-tik.tamam { background: var(--iyi); border-color: var(--iyi); }
.kv-tik svg { width: 12px; height: 12px; }
.kv-ad { flex: 1 1 auto; min-width: 0; font-size: 13px; font-weight: 600; color: var(--ink-1); }
/* Tamamlanan adımın adı KÜÇÜLMEZ/SOLMAZ: tik zaten durumu söylüyor,
   ayrıca yazıyı da değiştirmek listeyi 'bazı başlıklar büyük bazıları küçük'
   gösteriyordu (kullanıcı bildirimi, 2026-08-07). Tek fark tik işareti. */
.kv-oz { flex: 0 0 auto; font-size: 11.5px; color: var(--ink-3); white-space: nowrap; }
.kv-adim.acik .kv-bas { background: var(--surface-2); }

.kv-govde { padding: 2px 14px 14px 42px; }
.kv-nicin { font-size: 12.5px; color: var(--ink-2); margin-bottom: 10px; }
/* Yol NUMARALI liste: satıcının panelde izleyeceği tıklama sırası. Madde
   imiyle yazılsaydı sıra bilgisi kaybolurdu.
   ⛔ `<ol>` KALIR ama işareti KENDİMİZ çiziyoruz (.kv-yol-no yuvarlağı):
   tarayıcının "1." işareti kılavuzun geri kalanıyla aynı dili konuşmuyordu
   (üstteki adımlar yuvarlak tik taşıyor). Semantik sıra `<ol>`da kalsın diye
   etiket değiştirilmedi — yalnız list-style kapatıldı. */
.kv-yol { margin: 0 0 10px; padding-left: 0; list-style: none; font-size: 12.5px; color: var(--ink-1); }
.kv-yol li { margin: 4px 0; display: flex; align-items: center; gap: 8px; }
/* Yuvarlak .kv-tik ile AYNI ÖLÇÜDE ama bir tık küçük: bunlar alt adımlar,
   üstteki adım rozetiyle eşit ağırlıkta görünmemeli. Rakam tabular ve
   ortalanmış — iki haneye çıkarsa yuvarlak kaymaz. */
.kv-yol-no {
  flex: 0 0 auto; width: 16px; height: 16px; border-radius: 50%;
  border: 1.5px solid var(--hair-2); background: var(--surface);
  display: flex; align-items: center; justify-content: center;
  font-size: 9.5px; font-weight: 700; color: var(--ink-3);
  font-variant-numeric: tabular-nums; line-height: 1;
}
.kv-yol-ad { min-width: 0; }
/* Dosya geldi → o SATIR yeşil tik. Renk tek başına anlam taşımaz: yuvarlağın
   içindeki İŞARET de rakamdan tike dönüşüyor ve `title` bunu yazıyla söylüyor
   (renk körlüğü).
   ⛔ SATIR BAZINDA (2026-08-09): kural bir süre `.kv-yol.tamam` üzerindeydi ve
   adım tamamlanınca BÜTÜN satırları boyuyordu — kampanya tekliflerinde tek
   dosya gelince "Avantajlı · Komisyon · Flaş" üçü birden yeşil görünüyordu. */
.kv-yol li.tamam .kv-yol-no { background: var(--iyi); border-color: var(--iyi); color: #fff; }
.kv-yol-no svg { width: 11px; height: 11px; }
.kv-yol li.tamam .kv-yol-ad { color: var(--ink-2); }
.kv-not { margin: 0 0 12px; padding-left: 18px; font-size: 12px; color: var(--ink-2); }
.kv-not li { margin: 5px 0; }
.kv-eylem { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.kv-ipucu { font-size: 11.5px; color: var(--ink-3); }

.kv.bitti { background: var(--surface); }
.kv-ozet { display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 14px; background: none; border: 0; cursor: pointer; font: inherit; font-size: 13px; color: var(--ink-2); text-align: left; }
.kv-ozet:hover { background: var(--surface-2); }
.kv-ozet .kv-ac { margin-left: auto; font-size: 12px; color: var(--eylem); font-weight: 600; }

@media (max-width: 560px) {
  /* Dar ekranda özet etiketi ("2.412 kayıt") ad ile aynı satırda sıkışıp
     ikisini birden okunmaz yapıyordu — özet alta iner. */
  .kv-bas { flex-wrap: wrap; }
  .kv-ad { flex: 1 1 100%; order: 1; }
  .kv-oz { order: 2; margin-left: 28px; }
  .kv-govde { padding-left: 14px; }
}

/* Yükleme göstergesinin SAYFA DÜZEYİ hâli. Bırakma alanının içinde yaşarken
   panel kapanınca yok oluyordu; artık ekranın altına sabitlenir ve iş bitene
   kadar durur. z-index perdenin (265) ALTINDA, sheet'in (150) üstünde:
   açılış perdesi bunu örtmeli — o an henüz yükleme yok. */
/* ⛔ SAĞ ALT KART, TAM EKRAN PERDE DEĞİL (kullanıcı kararı, 2026-08-08 akşamı:
   "mevcut kokpitte bir yükleme barı… sağ alt tarafta göstersek çok daha iyi").
   Aynı gün sabah yükleme perdesi eklenmişti; gerekçesi (arkada boş durum
   duruyor) KARŞILAMA KAPISIYLA ortadan kalktı. Arkadaki kokpit ya da kapı
   görünmeye devam ediyor — yükleme onları örtmüyor.

   ⛔ z-index 250: KAPININ (240) ÜSTÜNDE, açılış perdesinin (265) ALTINDA.
   Kapının altında kalsaydı ilk yüklemede ilerleme hiç görünmezdi. */
.yuk-ilerleme.sabit {
  position: fixed; right: 18px; left: auto; transform: none;
  bottom: 18px; width: min(330px, calc(100vw - 32px));
  margin: 0; z-index: 250;
  background: var(--surface); border: 1px solid var(--hair-2);
  border-radius: 16px; padding: 13px 15px 14px;
  box-shadow: 0 2px 4px rgba(24, 36, 32, .05), 0 22px 48px -20px rgba(23, 83, 73, .34);
  animation: yukKartGir .34s cubic-bezier(.22, .61, .36, 1);
}
@keyframes yukKartGir {
  from { opacity: 0; transform: translateY(12px) scale(.97); }
  to { opacity: 1; transform: none; }
}
.yuk-ilerleme.sabit .yuk-ust {
  display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  margin-bottom: 9px;
}
.yuk-ilerleme.sabit .yuk-metin {
  color: var(--ink-1); font-size: 12.5px; font-weight: 650; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* Yüzde tabular ve sabit genişlikte: sayaç akarken başlık sağa sola oynamasın. */
.yuk-ilerleme.sabit .yuk-yuzde {
  flex: none; font-size: 12px; font-weight: 700; color: var(--eylem);
  font-variant-numeric: tabular-nums;
}
.yuk-ilerleme.sabit .yuk-ayrinti {
  margin-top: 8px; font-size: 11.5px; color: var(--ink-3);
  font-variant-numeric: tabular-nums;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.yuk-ilerleme.sabit .yuk-ayrinti[hidden] { display: none; }
@media (max-width: 560px) {
  /* Telefonda alt gezinme çubuğunun üstüne çıkar ve tam genişliğe yayılır. */
  .yuk-ilerleme.sabit { bottom: 76px; right: 12px; left: 12px; width: auto; }
}
@media (prefers-reduced-motion: reduce) {
  .yuk-ilerleme.sabit { animation: none; }
}

.kv-uyari {
  margin-top: 9px; padding: 7px 10px; border-radius: 8px;
  background: var(--dikkat-soft); color: var(--dikkat-metin);
  font-size: 11.5px; line-height: 1.45;
}
/* Kısmi adım: başladı, bitmedi. Sarı tik + etiket birlikte anlatır. */
.kv-tik.kismi { background: var(--dikkat); border-color: var(--dikkat); }
.kv-adim.kismi .kv-oz { color: var(--dikkat-metin); font-weight: 600; }
/* Reklam özetindeki uzun listeler: sayı görünür, adlar bir dokunuş uzakta.
   Kap yüksekliği sınırlı ve kendi içinde kayar — 268 satır paneli itmesin. */
.rk-detay { margin-top: 6px; }
.rk-detay > summary { cursor: pointer; font-weight: 600; color: var(--ink-1); list-style: revert; }
.rk-detay > summary::-webkit-details-marker { display: revert; }
.rk-liste {
  margin-top: 6px; max-height: 190px; overflow-y: auto;
  padding: 8px 10px; border-radius: 8px; background: var(--surface-2);
  color: var(--ink-2); font-size: 11.5px; line-height: 1.7;
}
/* "eksik" rozeti — sarı tikin anlamını yazıyla da söyler (renk tek başına yetmez) */
.kv-rozet {
  margin-left: 7px; padding: 1px 7px; border-radius: 999px;
  background: var(--dikkat-soft); color: var(--dikkat-metin);
  font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
  vertical-align: 1px; white-space: nowrap;
}
/* Reklam eşleştirme: dışarıda bırakılanlar listesi — satır + geri al düğmesi */
.rek-disarida { margin-top: 14px; }
.rek-disarida-satir { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 4px 0; }
.rek-disarida-satir span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Yorum ekranındaki bekleme şeridi: kapıdakiyle aynı dil, sayfa genişliğinde. */
.y-bekleme { margin: 0 0 16px; }

/* Yorum analizi başlatılamadıysa şerit tonunu değiştirir: ilerlemeyen bir
   çubuğun karşısında bekleyen kullanıcı nedenini görebilmeli. */
.yorum-serit.duraklad { background: var(--dikkat-soft); border-color: color-mix(in srgb, var(--dikkat) 26%, var(--hair)); }
.yorum-serit.duraklad .ys-ust { color: var(--dikkat-metin); }
.yorum-serit.duraklad .ys-bar i { background: var(--dikkat); }
.yorum-serit.duraklad .ys-ust svg { width: 14px; height: 14px; flex: none; }
/* Sayaç başlığın SAĞ ucunda: "hazır mı, ne kadar kaldı" sorusu bir bakışta. */
.ys-ust { justify-content: space-between; }
.ys-ust > span:not(.donen) { flex: 1 1 auto; min-width: 0; }
.ys-sayac { flex: none; font-variant-numeric: tabular-nums; font-weight: 700; }

/* ============================================================
   CANLI UYGULAMA — MARKA/BAĞLAM UYARLAMASI
   Elle bakımı yapılan TEK canlı-özel CSS dosyası.

   (2026-08-09'a kadar ayrı dosyaydı: tools/marka-uyarlama.css, eşitleyici
   sona ekliyordu. Tek repo birleşmesiyle bölüm dosyanın kendisine gömüldü;
   kurallar sonda oldukları için yine kazanırlar.)

   Kural: buraya bir şey eklerken NEDENİNİ yaz. "Canlıda farklı görünsün"
   yetmez — hangi yapısal fark bunu gerektiriyor onu yaz.
   ============================================================ */

/* 1) Canlı üst barda fazladan "Çıkış" düğmesi var (yerelde giriş kapısı yok).
      Marka bloğu daralmasın, logo+söz markası tek satırda kalsın. */
.marka { flex-shrink: 0; }

/* 2) Söz markası canlıda index.html'in gömülü <style>'ı ile kuruluyor
      (.nx-grad degrade + .marka .wm hizası) çünkü lansman sitesiyle aynı
      görünmesi gerekiyor. Kaynaktaki `.wm { font-family: var(--font-ui) }`
      kuralı buraya kadar geliyor ve kalıtımla gelen Fraunces'i eziyordu →
      canlı logo Inter'e düşüyordu. Marka bloğu içindeki söz markası
      display fontunda kalsın. */
.marka .wm {
  font-family: var(--font-display);
  font-weight: 600;
  letter-spacing: -0.01em;
}

/* 3) Canlı üst bar daha kalabalık (Çıkış + oturum). Dar ekranda mod rozeti
      ("GERÇEK VERİ") düşsün, gezinme sekmeleri sıkışmasın. */
@media (max-width: 680px) {
  #mod-badge { display: none; }
}

/* 4) ANONİM DEMO ÜST BARI (2026-08-03, 2026-08-06'da yeniden kuruldu).
      nx-boot.js demo kipinde avatar yerine TEK pil ekler: içinde "DEMO"
      etiketi + "Kendi verinle dene" çıkışı. Yalnız canlı kopyada var
      (yerelde nx-boot yüklenmez), bu yüzden kural burada.

      ⛔ ARTIK HİÇBİR ŞEY GİZLENMİYOR, PİL KÜÇÜLÜYOR.
      Eski kural ≤560px'te `#nx-demo-rozet`i düşürüyordu ve gerekçesi
      "nav'daki SENTETİK VERİ damgası aynı şeyi zaten söylüyor" idi. O
      gerekçe YANLIŞTI: yukarıdaki 3. kural mod rozetini ≤680px'te çoktan
      düşürüyor — yani telefonda demo, "gerçek veri değil" uyarısını
      TAMAMEN kaybediyordu. Etiket artık CTA'nın İÇİNDE; CTA hiçbir ekranda
      gizlenmediği için (demonun tek çıkış yolu) etiket de gizlenemez.

      ÖLÇÜLDÜ (390px): marka 140 + dosya-ekle 32 + tek pil 162 = 17px taşma.
      Dört aday ölçüldü; ölçüt "taşma sıfır" DEĞİL, kalan gerçek boşluk
      (.spacer genişliği) — sıfıra yakın boşluk bir sonraki yazı tipi
      farkında taşmaya döner:
        pil sonuna kadar küçülür ....... 7px TAŞMA  (yetmiyor)
        marka + pil küçülür ............ 0px boşluk (sınırda, riskli)
        "＋" düşer + pil küçülür ....... 23px boşluk  ← SEÇİLEN
        söz markası düşer .............. 86px boşluk (marka kaybı)

      "＋" SEÇİLDİ çünkü demoda en az işe yarayan denetim odur: veri
      hazır kurulu, ziyaretçi anonim ve kendi Excel'ini yüklemek demonun
      anlattığı kurguyu bozar. Söz markası ise pazarlama yüzeyinde durur.
      ⛔ Kural `.nx-demo` ile KİPE bağlı: üyenin barında düğme her ekranda
      kalır (nx-boot yalnız demo dalında bu sınıfı ekler).
      2026-08-17: "＋" bilgi (i) düğmesine dönüştü (veri güncelliği paneli);
      karar aynı kaldı — demoda örnek verinin "güncelliği" anlamsız ve
      dar bantta düşecek en az işe yarar denetim hâlâ bu.

      !important ŞART: nx-boot ögeleri inline stille kuruyor (avatarın
      deseni), inline stil bu dosyayı normalde ezer. */
@media (max-width: 560px) {
  .nx-demo #btn-veri-bilgi { display: none !important; }
  #nx-demo-basvuru {
    padding: 5px 9px !important;
    font-size: 11px !important;
    margin-left: 2px !important;
  }
  #nx-demo-rozet {
    font-size: 9.5px !important;
    letter-spacing: .03em !important;
    margin-right: 5px !important;
  }
  /* ayraç + ok dar ekranda düşer: ikisi de yalnız süs (aria-hidden),
     anlam taşıyan "DEMO" ve "Kendi verinle dene" yerinde kalır */
  #nx-demo-basvuru [aria-hidden="true"] { display: none !important; }
}

/* ══════════════════════════════════════════════════════════════════════
   FREE KİLİDİ (src/free.js) — belge §3

   ⛔ KAPALI DEĞİL, KISITLI GÖRÜNÜR. Kilitli ürün panelinde ürün adı,
      durum rozeti ve bulunan konu başlıkları AÇIK kalır; gizlenen şey
      parasal etki ve çözüm adımlarıdır. Ekranın "bozuk mu?" sorusunu
      doğurmaması için ne göründüğü ve neden göründüğü yazılı.

   ⛔ BULANIKLAŞTIRILMIŞ SAHTE RAKAM YOK. Bir kısım SaaS kilitli alanı
      bulanık rakamlarla dolduruyor; o rakamlar uydurmadır ve bu ürünün
      "uydurma değer üretmektense eksik bırak" ilkesine aykırıdır.
   ══════════════════════════════════════════════════════════════════════ */

.fr-kilit {
  margin-top: 14px;
  padding: 18px;
  border: 1px solid var(--hair);
  border-radius: 14px;
  background: var(--surface-2, #f6f8fb);
}

.fr-kilit-bas {
  display: flex;
  gap: 12px;
  align-items: flex-start;
}

.fr-kilit-ikon { font-size: 20px; line-height: 1.2; flex: none; }

.fr-kilit-bas b { display: block; font-size: 15px; }

.fr-kilit-bas small {
  display: block;
  margin-top: 4px;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--ink-2);
}

.fr-kilit-etiket {
  margin: 16px 0 8px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ink-2);
}

.fr-kilit-konu ul {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.fr-kilit-konu li {
  padding: 4px 10px;
  border-radius: 999px;
  background: var(--surface);
  border: 1px solid var(--hair);
  font-size: 12px;
  font-weight: 600;
}

.fr-kilit-sayi,
.fr-kilit-acik {
  margin-top: 12px;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--ink-2);
}

.fr-kilit-eylem {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
}

.fr-kilit-not {
  margin-top: 10px;
  font-size: 11.5px;
  color: var(--ink-2);
}
