/* pikaçu — tasarım sistemi v2 (sözleşme: TASARIM.md)
   Taş zemin + jade aksan. Ekranın çoğu nötr; renk yalnız eylemde, durumda, vurguda.
   Sohbet "terminal akışı" gibi kurulur: balon yok, kart yok, sola hizalı satırlar.
   Kontrast ölçüldü: jade-700 üstüne beyaz 8.9:1, jade-600 beyaz zeminde 6.4:1,
   jade-500 metin TAŞIMAZ (4:1) — sadece kenar/işaret. */

:root {
  --pk-jade-900: #2a332a;
  --pk-jade-800: #35402f;
  --pk-jade-700: #404e3b;
  --pk-jade-600: #4e635e;
  --pk-jade-500: #6c8480;
  --pk-jade-100: #dce4d6;
  --pk-sari: #eab44a;
  --pk-kirmizi: #b4453f;
  --pk-turuncu: #c98a2e;
  --pk-mavi: #4a6b8a;

  --aksan: #4e635e;
  --aksan-yumusak: #dce4d6;

  /* Okuma yüzeyi BEYAZ, yan raflar bir tık gri (kullanıcı isteği: Claude Code açık tema). */
  --zemin: #ffffff;
  --zemin-2: #f0f0ee;
  --yuzey: #f7f7f5;
  --yuzey-2: #fbfbfa;
  --kenar: #e4e4e0;
  --kenar-koyu: #c9c9c3;
  --metin: #1d1d1b;
  --metin-2: #55574f;
  --metin-3: #676a61;

  --kod-zemin: #f7f8f5;
  --golge-1: 0 1px 2px rgba(26, 28, 26, 0.04), 0 1px 3px rgba(26, 28, 26, 0.06);
  --golge-2: 0 4px 6px -1px rgba(26, 28, 26, 0.07), 0 2px 4px -2px rgba(26, 28, 26, 0.06);
  --golge-3: 0 12px 24px -8px rgba(26, 28, 26, 0.16), 0 4px 8px -4px rgba(26, 28, 26, 0.09);

  --yuvarlak: 12px;
  --yuvarlak-kucuk: 8px;
  --gecis: 150ms cubic-bezier(0.4, 0, 0.2, 1);
  --yazi: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  --mono: ui-monospace, 'Cascadia Mono', 'SF Mono', 'JetBrains Mono', Consolas, 'Liberation Mono', monospace;
  --sutun: 820px;
  --ust-guvenli: env(safe-area-inset-top, 0px);
  --alt-guvenli: env(safe-area-inset-bottom, 0px);
}

[data-tema='koyu'] {
  --aksan: #9bb2ac;
  --aksan-yumusak: rgba(155, 178, 172, 0.16);
  --zemin: #141715;
  --zemin-2: #1a1e1b;
  --yuzey: #1d211e;
  --yuzey-2: #232823;
  --kenar: #2e342f;
  --kenar-koyu: #414a42;
  --metin: #e8ebe8;
  --metin-2: #a3ada5;
  --metin-3: #8a948b;
  --kod-zemin: #161a17;
  --golge-1: 0 1px 2px rgba(0, 0, 0, 0.4);
  --golge-2: 0 4px 8px -2px rgba(0, 0, 0, 0.5);
  --golge-3: 0 16px 32px -12px rgba(0, 0, 0, 0.7);
}

* {
  box-sizing: border-box;
}

/* Sınıflardaki açık display kuralı hidden özniteliğini ezmesin (v1'de giriş
   başarılı olduğu halde kurulum ekranı kapanmıyordu). */
[hidden] {
  display: none !important;
}

html,
body {
  margin: 0;
  padding: 0;
  height: 100%;
  overscroll-behavior-y: none;
}

/* Sayfa gövdesi ASLA kaymaz; kayan tek yer sohbet akışıdır (bulgu 35).
   Belge kaydırılabilir kaldığı sürece mobil tarayıcı, yazı kutusuna odak
   gelince imleci göstermek için TÜM sayfayı yukarı itiyordu: "çalışırken
   mesaj gönderince tüm ekran yukarı kayıyor". Gövdeyi görüntü alanına
   sabitleyince tetikleyecek kaydırma kalmıyor. */
html {
  overflow: hidden;
}

body {
  position: fixed;
  inset: 0;
  width: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}

body {
  font-family: var(--yazi);
  background: var(--zemin);
  color: var(--metin);
  font-size: 15px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

/* Sohbet okunurluğu. Harfler fazla açıktı ("claude code'da daha sıkışık, bizde geniş,
   okuması zor"): harf aralığı sıfırlandı, punto biraz düştü, satır sıkılaştı. */
.metin-blok {
  font-size: 15.5px;
  line-height: 1.66;
  letter-spacing: -0.003em;
  max-width: 74ch;
}

.metin-blok p {
  margin: 10px 0;
}

/* Sohbette ajan metni kullanıcı bloğuyla AYNI genişlikte aksın (kullanıcı isteği
   29 Tem, ekran görüntüsü kanıtlı): 74ch tipografi sınırı burada "cevap yarıda
   kesilmiş, sağ yarı bomboş" hissi veriyordu. Sınır sohbet dışında duruyor. */
.tur .metin-blok {
  max-width: none;
}

button,
input,
textarea {
  font-family: inherit;
  font-size: inherit;
  color: inherit;
}

svg.ikon,
svg.ok {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.marka {
  font-family: var(--mono);
  font-weight: 700;
  letter-spacing: -0.01em;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.simsek {
  color: var(--pk-sari);
}

/* Marka işareti (14 Ağu): emoji şimşek yerine çizilmiş pikaçu kafası.
   Tanım index.html'de tek <symbol>, buraya <use> ile geliyor.
   Ölçü em cinsinden: hangi markanın içindeyse (yan menü, üst çubuk, kilit
   ekranı, karşılama) yazıyla birlikte büyüyüp küçülüyor, ayrı ayrı
   boyutlandırmak gerekmiyor. */
.pika-im {
  width: 1.12em;
  height: 1.12em;
  flex: none;
  overflow: visible;
}

/* ============ PERDE: KİLİT / KURULUM ============ */
.perde {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: center;
  background: linear-gradient(165deg, var(--pk-jade-900), #141715 65%);
  padding: 24px;
}

.perde-kart {
  width: min(360px, 100%);
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 20px;
  padding: 28px 24px 22px;
  text-align: center;
  color: #edf1ec;
  backdrop-filter: blur(14px);
  box-shadow: var(--golge-3);
  animation: yukselt 240ms ease-out;
}

.marka-buyuk {
  font-size: 26px;
}

.perde-alt {
  margin: 8px 0 22px;
  color: #a9b8b2;
  font-size: 12.5px;
  letter-spacing: 0.04em;
}

.perde-ipucu {
  margin: 14px 0 0;
  font-size: 12px;
  color: #8a9a94;
  min-height: 16px;
}

@keyframes yukselt {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.pin-noktalar {
  display: flex;
  justify-content: center;
  gap: 16px;
  margin-bottom: 24px;
}

.pin-noktalar span {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.32);
  transition: transform var(--gecis), background var(--gecis), border-color var(--gecis);
}

.pin-noktalar span.dolu {
  background: var(--pk-sari);
  border-color: var(--pk-sari);
  transform: scale(1.15);
}

.perde-kart.hata {
  animation: salla 380ms;
}

@keyframes salla {
  0%,
  100% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-8px);
  }
  40% {
    transform: translateX(8px);
  }
  60% {
    transform: translateX(-4px);
  }
  80% {
    transform: translateX(4px);
  }
}

.tus-takimi {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}

.tus {
  height: 56px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.05);
  color: #edf1ec;
  font-size: 21px;
  font-weight: 600;
  cursor: pointer;
  transition: transform 90ms ease, background var(--gecis);
}

.tus:active {
  transform: scale(0.94);
  background: rgba(255, 255, 255, 0.14);
}

.tus-bos {
  opacity: 0;
  pointer-events: none;
}

.tus-sil {
  font-size: 17px;
}

.alan {
  display: block;
  text-align: left;
  margin-bottom: 14px;
}

.alan span {
  display: block;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: #a9b8b2;
  margin-bottom: 6px;
}

.alan input {
  width: 100%;
  padding: 11px 13px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: rgba(0, 0, 0, 0.28);
  color: #fff;
  outline: none;
  font-family: var(--mono);
  font-size: 13px;
}

.alan input:focus {
  border-color: var(--pk-jade-500);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.28);
}

/* ============ ÇATI: sol nav · orta içerik · sağ oturumlar ============ */
.uygulama {
  height: 100%;
  display: flex;
}

.ana {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

/* --- SOL NAV (PC) --- */
.yanmenu {
  width: 186px;
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 10px 10px;
  background: var(--yuzey);
  border-right: 1px solid var(--kenar);
}

.ym-ust {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 0 4px;
}

.yanmenu .marka {
  font-size: 15px;
}

.ym-oturum {
  display: flex;
  align-items: center;
  gap: 4px;
  width: 100%;
  padding: 5px 8px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin-2);
  font-size: 12.5px;
  cursor: pointer;
  transition: border-color var(--gecis), color var(--gecis);
}

.ym-oturum:hover {
  border-color: var(--kenar-koyu);
  color: var(--metin);
}

.ym-oturum span {
  flex: 1;
  min-width: 0;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ym-oturum .ok {
  width: 13px;
  height: 13px;
  flex: none;
}

.ym-sekmeler {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}

.ym-sekme {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px 10px;
  border: none;
  border-radius: 9px;
  background: none;
  color: var(--metin-2);
  font-size: 13.5px;
  cursor: pointer;
  text-align: left;
  transition: background var(--gecis), color var(--gecis);
}

.ym-sekme:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.ym-sekme-aktif {
  background: var(--aksan-yumusak);
  color: var(--metin);
  font-weight: 600;
}

.ym-sekme-aktif .ikon {
  color: var(--aksan);
}

/* model + düşünme seçicileri: ekranda, canlı */
.ym-secici {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px 4px 0;
  border-top: 1px solid var(--kenar);
}

.ym-secici-alan {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.ym-secici-alan span {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--metin-3);
  font-weight: 700;
}

.ym-secici select,
.uc-secici {
  width: 100%;
  padding: 5px 7px;
  border-radius: 7px;
  border: 1px solid var(--kenar);
  background: var(--zemin);
  color: var(--metin);
  font-size: 12.5px;
  font-family: var(--mono);
  outline: none;
  cursor: pointer;
}

.uc-secici {
  width: auto;
  flex: none;
  min-width: 88px;
  max-width: 116px;
}

.ym-secici select:focus,
.uc-secici:focus {
  border-color: var(--aksan);
}

.ym-alt {
  display: flex;
  gap: 4px;
  padding-top: 8px;
  border-top: 1px solid var(--kenar);
}

.ym-ikon {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border: none;
  border-radius: 8px;
  background: none;
  color: var(--metin-2);
  cursor: pointer;
  position: relative;
  transition: background var(--gecis), color var(--gecis);
}

.ym-ikon:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

/* kullanım: bar değil ikon; durumu köşedeki nokta söyler */
.kullanim-nokta {
  position: absolute;
  right: 4px;
  bottom: 4px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--pk-jade-500);
  border: 1.5px solid var(--yuzey);
}

.kullanim-nokta.az {
  background: var(--pk-turuncu);
}

.kullanim-nokta.bitti {
  background: var(--pk-kirmizi);
}

/* --- ÜST ÇUBUK (mobil) --- */
.ustcubuk {
  display: none;
  height: calc(44px + var(--ust-guvenli));
  padding: var(--ust-guvenli) 10px 0;
  align-items: center;
  gap: 8px;
  background: var(--yuzey);
  border-bottom: 1px solid var(--kenar);
  flex: none;
  z-index: 20;
}

.ustcubuk .marka {
  font-size: 14.5px;
}

.ustcubuk .ym-oturum {
  width: auto;
  max-width: 38vw;
}

.uc-sag {
  margin-left: auto;
  display: flex;
  gap: 2px;
}

/* --- SAĞ: oturum paneli --- */
.oturum-paneli {
  width: 232px;
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 10px;
  background: var(--yuzey);
  border-left: 1px solid var(--kenar);
}

.uygulama:not(.sohbette) .oturum-paneli {
  display: none;
}

.op-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-left: 4px;
}

.op-basi h3 {
  margin: 0;
  font-family: var(--mono);
  font-size: 13px;
}

.panel-perde {
  display: none;
}

.govde {
  flex: 1;
  min-height: 0;
  position: relative;
}

.sayfa {
  position: absolute;
  inset: 0;
  display: none;
  flex-direction: column;
  min-height: 0;
}

.sayfa-aktif {
  display: flex;
}

/* ============ SOHBET AKIŞI ============ */
.akis {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 16px 16px 4px;
}

.akis-ic {
  max-width: var(--sutun);
  margin: 0 auto;
}

/* --- hoş geldin: kompakt, sol hizalı --- */
.hosgeldin {
  max-width: var(--sutun);
  margin: 12vh auto 0;
  padding: 0 2px;
  animation: yukselt 240ms ease-out;
}

.hg-marka {
  font-family: var(--mono);
  font-size: 20px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 8px;
}

.hg-satir {
  margin: 6px 0 16px;
  color: var(--metin-2);
  font-size: 13.5px;
}
/* --- tur --- */
.tur {
  max-width: var(--sutun);
  margin: 0 auto 26px;
  animation: turGel 160ms ease-out;
}

@keyframes turGel {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.tur-eski {
  content-visibility: auto;
  contain-intrinsic-size: auto 320px;
}

/* kullanıcı satırı: balon değil, prompt satırı */
.kanka-satir {
  display: flex;
  gap: 8px;
  padding: 10px 13px;
  background: var(--zemin-2);
  border-left: 2px solid var(--aksan);
  border-radius: 0 var(--yuvarlak-kucuk) var(--yuvarlak-kucuk) 0;
  /* Yazı tipi CEVAPLA AYNI (bulgu 20): mono olduğu için kullanıcı metninde harf
     araları açık görünüyordu. Ayrımı font değil, sol jade şerit + zemin yapar. */
  font-family: inherit;
  font-size: 15.5px;
  line-height: 1.68;
  letter-spacing: normal;
  color: var(--metin-2);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.kanka-satir .isaret {
  color: var(--aksan);
  flex: none;
}

/* "başka cihaz" rozeti (bulgu 31): telefondan gelen mesaj PC ekranında da açılır;
   hangi turun buradan, hangisinin öteki cihazdan geldiği tek bakışta anlaşılsın. */
.uzak-rozet {
  align-self: flex-start;
  flex: none;
  margin-left: auto;
  padding: 2px 7px;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey);
  color: var(--metin-3);
  font-size: 10.5px;
  letter-spacing: 0.02em;
  text-transform: lowercase;
  white-space: nowrap;
}

.kanka-ekler {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 0 12px;
}

.kanka-ek-gorsel-kutu {
  position: relative;
  display: inline-block;
}

.kanka-ek-gorsel {
  max-width: 220px;
  max-height: 170px;
  border-radius: var(--yuvarlak-kucuk);
  border: 1px solid var(--kenar);
  cursor: zoom-in;
  display: block;
  transition: border-color var(--gecis), transform var(--gecis);
}

.kanka-ek-gorsel:hover {
  border-color: var(--aksan);
  transform: translateY(-1px);
}

.kanka-ek-dosya {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px 6px 12px;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey);
  font-family: var(--mono);
  font-size: 12px;
  color: var(--metin-2);
}

.ek-indir {
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  color: var(--metin-3);
  text-decoration: none;
  transition: background var(--gecis), color var(--gecis);
}

.ek-indir:hover {
  background: var(--zemin-2);
  color: var(--aksan);
}

.ek-indir .ikon {
  width: 15px;
  height: 15px;
}

.lightbox-indir {
  position: fixed;
  right: 22px;
  bottom: 22px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 15px;
  border-radius: 999px;
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  color: var(--metin);
  font-size: 13px;
  text-decoration: none;
  box-shadow: var(--golge-3);
  cursor: pointer;
}

.lightbox-indir:hover {
  border-color: var(--aksan);
  color: var(--aksan);
}

/* cevap gövdesi: kutu yok, sayfada akar */
.cevap {
  margin-top: 10px;
}

.metin-blok {
  overflow-wrap: anywhere;
}

.metin-blok > *:first-child {
  margin-top: 0;
}

.metin-blok > *:last-child {
  margin-bottom: 0;
}

/* Başlık kademeleri (9 Ağu): eskiden h1 18 / h2 16 / h3 14.5 idi, gövde 15.5'ti;
   yani başlık gövdeden neredeyse ayırt edilmiyordu ve uzun cevaplarda göz
   tutunacak yer bulamıyordu ("okumak zor"). Kademe açıldı, üst boşluk artırıldı. */
.metin-blok h1 {
  font-size: 20px;
  font-weight: 650;
  letter-spacing: -0.012em;
  margin: 22px 0 9px;
}

.metin-blok h2 {
  font-size: 17.5px;
  font-weight: 640;
  letter-spacing: -0.01em;
  margin: 20px 0 8px;
}

.metin-blok h3,
.metin-blok h4 {
  font-size: 15.5px;
  font-weight: 640;
  margin: 16px 0 6px;
}

.metin-blok p {
  margin: 11px 0;
}

/* Kalın metin gövdeyle aynı griye düşmesin; vurgu vurgu olsun. */
.metin-blok strong {
  color: var(--metin);
  font-weight: 640;
}

.metin-blok ul,
.metin-blok ol {
  padding-left: 21px;
  margin: 10px 0;
}

.metin-blok li {
  margin: 5px 0;
}

.metin-blok li > p {
  margin: 4px 0;
}

.metin-blok a {
  color: var(--aksan);
}

.metin-blok blockquote {
  margin: 9px 0;
  padding: 2px 12px;
  border-left: 2px solid var(--pk-jade-500);
  color: var(--metin-2);
}

.metin-blok hr {
  border: none;
  border-top: 1px solid var(--kenar);
  margin: 14px 0;
}

.metin-blok code {
  font-family: var(--mono);
  font-size: 12.5px;
  background: var(--zemin-2);
  padding: 1px 5px;
  border-radius: 5px;
}

.metin-blok pre {
  position: relative;
  background: var(--kod-zemin);
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  padding: 30px 13px 12px;
  overflow-x: auto;
  margin: 10px 0;
}

.metin-blok pre code {
  background: none;
  padding: 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--metin);
}

/* --- TABLOLAR (9 Ağu 2026) ---
   Kaptan kegel programını tablo isteyince arayüzün ham "| a | b |" satırlarını
   bastığı görüldü ("okumak zor", ekran görüntüsüyle geldi). md.js'e GFM boru
   tablosu eklendi; burası onun giysisi. Ölçü Claude Code masaüstündeki tabloya
   bakılarak alındı: başlık satırı hafif zeminli, ince ayraçlar, bol iç boşluk. */
.metin-blok .tablo-sar {
  /* .metin-blok'un 74ch okuma genişliği tabloyu boğuyordu; tablo serbest. */
  max-width: none;
  margin: 14px 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--zemin);
}

.metin-blok table {
  border-collapse: collapse;
  width: 100%;
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: normal;
}

.metin-blok th,
.metin-blok td {
  padding: 9px 13px;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--kenar);
}

.metin-blok th + th,
.metin-blok td + td {
  border-left: 1px solid var(--kenar);
}

.metin-blok thead th {
  background: var(--yuzey);
  color: var(--metin);
  font-weight: 600;
  white-space: nowrap;
}

.metin-blok tbody tr:last-child td {
  border-bottom: none;
}

/* Telefonda yana kaydırırken satırın hangi kalem olduğu kaybolmasın:
   ilk sütun yapışkan. Zemin şart, yoksa altından metin geçiyor. */
.metin-blok th:first-child,
.metin-blok td:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: var(--zemin);
}

.metin-blok thead th:first-child {
  background: var(--yuzey);
  z-index: 2;
}

.metin-blok td:first-child {
  color: var(--metin);
  font-weight: 500;
}

.metin-blok td code,
.metin-blok th code {
  font-size: 12px;
}

/* kopyala: hover'a bağlı değil, hep görünür (mobilde hover yok) */
.kopyala {
  position: absolute;
  top: 6px;
  right: 6px;
  padding: 2px 9px;
  font-size: 11px;
  font-family: var(--mono);
  border-radius: 6px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  color: var(--metin-3);
  cursor: pointer;
  transition: color var(--gecis), border-color var(--gecis);
}

.kopyala:hover {
  color: var(--metin);
  border-color: var(--kenar-koyu);
}

/* akan ucun imleci */
.imlec::after {
  content: '▍';
  color: var(--aksan);
  animation: yanip 1s steps(2) infinite;
  margin-left: 1px;
}

@keyframes yanip {
  50% {
    opacity: 0;
  }
}

/* --- canlı durum satırı ---
   Not (29 Tem, bulgu 18): bu satırın sınıfı eskiden `.durum-satir` idi ve DURUM
   SAYFASININ satırlarıyla aynı adı taşıyordu. Sayfa kuralı (üst çizgi + iki yana
   yaslama) sohbetteki göstergeyi eziyordu, o yüzden çirkin duruyordu. Ad ayrıldı. */
.tur-durum {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--metin-3);
  margin: 8px 0;
}

.nokta {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--aksan);
  flex: none;
  animation: nabiz 1.6s ease-in-out infinite;
}

@keyframes nabiz {
  0%,
  100% {
    opacity: 0.35;
  }
  50% {
    opacity: 1;
  }
}

.tur-durum .kes-ipucu {
  color: var(--metin-3);
}

/* --- araç satırları (kart değil) --- */
.arac {
  margin: 4px 0 4px 12px;
}

.arac-satir {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 3px 0;
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--metin-2);
  cursor: pointer;
  animation: aracGel 140ms ease-out;
}

@keyframes aracGel {
  from {
    opacity: 0;
    transform: translateX(-4px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

.arac-satir:hover .arac-baslik {
  color: var(--metin);
}

.arac-isaret {
  color: var(--pk-jade-500);
  flex: none;
}

.arac-baslik {
  flex: none;
  transition: color var(--gecis);
}

.arac-detay {
  color: var(--metin-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  flex: 1;
}

.arac-son {
  flex: none;
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--metin-3);
  font-size: 11.5px;
}

.donen {
  width: 11px;
  height: 11px;
  border: 2px solid var(--kenar-koyu);
  border-top-color: var(--aksan);
  border-radius: 50%;
  animation: don 700ms linear infinite;
}

@keyframes don {
  to {
    transform: rotate(360deg);
  }
}

.tik {
  color: var(--aksan);
}

.carpi {
  color: var(--pk-kirmizi);
}

.arac-govde {
  display: none;
  margin: 4px 0 8px;
  padding: 9px 12px;
  border-left: 2px solid var(--kenar-koyu);
  background: var(--yuzey-2);
  border-radius: 0 var(--yuvarlak-kucuk) var(--yuvarlak-kucuk) 0;
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.5;
  color: var(--metin-2);
  white-space: pre-wrap;
  overflow-x: auto;
  max-height: 320px;
  overflow-y: auto;
}

.arac.acik .arac-govde {
  display: block;
}

.diff {
  font-family: var(--mono);
  font-size: 12px;
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--kenar);
}

.diff-yol {
  padding: 4px 10px;
  background: var(--zemin-2);
  color: var(--metin-2);
  border-bottom: 1px solid var(--kenar);
}

.diff-satir {
  padding: 1px 10px;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.diff-arti {
  background: rgba(76, 110, 84, 0.14);
  color: #3f6b4a;
}

.diff-eksi {
  background: rgba(180, 69, 63, 0.12);
  color: #a03a34;
}

[data-tema='koyu'] .diff-arti {
  color: #a8cdb0;
}

[data-tema='koyu'] .diff-eksi {
  color: #e2a09b;
}

/* --- düşünce --- */
.dusunce {
  margin: 6px 0 6px 12px;
  font-size: 12.5px;
  color: var(--metin-3);
}

.dusunce-basi {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--mono);
  cursor: pointer;
  color: var(--metin-3);
}

.dusunce-basi:hover {
  color: var(--metin-2);
}

.dusunce-ok {
  transition: transform var(--gecis);
  display: inline-block;
}

.dusunce.acik .dusunce-ok {
  transform: rotate(90deg);
}

.dusunce-govde {
  display: none;
  margin-top: 6px;
  padding-left: 12px;
  border-left: 2px dashed var(--kenar-koyu);
  font-style: italic;
  white-space: pre-wrap;
  max-height: 340px;
  overflow-y: auto;
}

.dusunce.acik .dusunce-govde {
  display: block;
}

/* --- sistem satırı (hata/uyarı/kesildi) --- */
.sistem-satir {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 8px 0;
  padding: 7px 11px;
  border-radius: var(--yuvarlak-kucuk);
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--metin-2);
}

.sistem-satir.uyari {
  border-color: var(--pk-turuncu);
  background: rgba(201, 138, 46, 0.1);
}

.sistem-satir.hata {
  border-color: var(--pk-kirmizi);
  background: rgba(180, 69, 63, 0.09);
}

.sistem-satir .eylemler {
  margin-left: auto;
  display: flex;
  gap: 6px;
}

/* --- tur alt çizgisi --- */
.tur-alt {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-3);
}

.tur-alt::before,
.tur-alt::after {
  content: '';
  height: 1px;
  background: var(--kenar);
  flex: 1;
}

.tur-alt::before {
  max-width: 12px;
}

.tur-alt button {
  border: none;
  background: none;
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 11.5px;
  cursor: pointer;
  padding: 1px 5px;
  border-radius: 5px;
}

.tur-alt button:hover {
  color: var(--aksan);
  background: var(--zemin-2);
}

/* gün ayracı */
.gun-ayrac {
  max-width: var(--sutun);
  margin: 6px auto 20px;
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-3);
}

.gun-ayrac::before,
.gun-ayrac::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--kenar);
}

/* --- akışa dön çipi --- */
.akisa-don {
  position: absolute;
  right: 18px;
  bottom: 96px;
  z-index: 8;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 13px;
  border-radius: 999px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  color: var(--metin-2);
  font-size: 12.5px;
  cursor: pointer;
  box-shadow: var(--golge-2);
  animation: yukselt 160ms ease-out;
}

.akisa-don:hover {
  color: var(--metin);
  border-color: var(--kenar-koyu);
}

/* ============ SES KAYIT GÖSTERGESİ ============
   Mikrofona basınca giriş kutusunun üstünde belirir: nabız atan nokta, süre ve
   ne yapılacağı. Kayıt bitince "yazıya çevriliyor" olur, sonra kaybolur. */
.ses-gosterge {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 8px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin-2);
  font-size: 12.5px;
  cursor: pointer;
  animation: yukselt 160ms ease-out;
}

.ses-nokta {
  width: 9px;
  height: 9px;
  flex: none;
  border-radius: 50%;
  background: #c0503f;
  animation: sesNabiz 1.1s ease-in-out infinite;
}

.ses-gosterge.cozuluyor .ses-nokta {
  background: var(--aksan);
  animation-duration: 1.8s;
}

.ses-yazi {
  font-family: var(--mono);
  letter-spacing: 0.01em;
}

.ses-ipucu {
  margin-left: auto;
  color: var(--metin-3);
  font-size: 11.5px;
}

@keyframes sesNabiz {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.35;
    transform: scale(0.82);
  }
}

/* Sayfalama şeridi: açılışta son 20 tur çizilir, gerisi yukarı kaydırınca
   gelir. Şerit hem "daha var" der hem elle tıklanabilir. */
.gecmis-serit {
  display: block;
  width: 100%;
  margin: 4px 0 14px;
  padding: 8px 10px;
  border: 1px dashed var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: none;
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 11.5px;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: color var(--gecis), border-color var(--gecis);
}

.gecmis-serit:hover {
  color: var(--metin-2);
  border-color: var(--kenar-koyu);
}

/* ============ SOHBETTE ARAMA ============
   Sağ üstte duran sade ikon; açılınca akışın üstüne oturan ince şerit.
   Tarayıcının kendi bulucusuna benzemesin diye kart yüzeyi + jade vurgu. */
.ara-dugme {
  position: absolute;
  top: 10px;
  right: 16px;
  z-index: 7;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  color: var(--metin-3);
  cursor: pointer;
  opacity: 0.75;
  transition: opacity var(--gecis), color var(--gecis), border-color var(--gecis);
}

.ara-dugme:hover {
  opacity: 1;
  color: var(--metin);
  border-color: var(--kenar-koyu);
}

.ara-dugme .ikon {
  width: 16px;
  height: 16px;
}

/* Şerit yüzen bir katman: açıkken akışın ilk turunu örtmesin diye üstten yer
   açılıyor (PC'de şerit varsayılan açık geldiği için kalıcı olarak görünürdü). */
.akis.arama-acik {
  padding-top: 54px;
}

.ara-serit {
  position: absolute;
  top: 8px;
  right: 14px;
  left: auto;
  z-index: 9;
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border-radius: 11px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  box-shadow: var(--golge-2);
  animation: yukselt 140ms ease-out;
}

.ara-serit .ara-ikon {
  width: 15px;
  height: 15px;
  color: var(--metin-3);
  flex: none;
}

.ara-serit input {
  width: 200px;
  border: none;
  background: none;
  color: var(--metin);
  font-family: inherit;
  font-size: 13.5px;
  outline: none;
}

/* Tarayıcının kendi temizle çarpısı bizim kapat düğmemizle çakışıyordu. */
.ara-serit input::-webkit-search-cancel-button,
.ara-serit input::-webkit-search-decoration {
  -webkit-appearance: none;
  appearance: none;
}

.ara-sayac {
  font-size: 11.5px;
  font-family: var(--mono);
  color: var(--metin-3);
  white-space: nowrap;
  min-width: 34px;
  text-align: right;
}

.ara-sayac.bos {
  color: var(--uyari, var(--metin-3));
}

.ara-ok {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border: none;
  background: none;
  border-radius: 7px;
  color: var(--metin-3);
  cursor: pointer;
}

.ara-ok:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.ara-ok .ikon {
  width: 14px;
  height: 14px;
}

mark.ara-vurgu {
  background: var(--aksan-yumusak);
  color: inherit;
  border-radius: 3px;
  padding: 0 1px;
}

mark.ara-vurgu.ara-aktif {
  background: var(--aksan);
  color: #fff;
}

@media (max-width: 640px) {
  /* Telefonda yüzen ikon akan yazının üstünü kapatıyordu (29 Tem çekimi):
     orada arama üst çubuktaki ikonla açılır, akışın üstü temiz kalır. */
  .ara-dugme {
    display: none;
  }

  .ara-serit {
    left: 10px;
    right: 10px;
  }

  .ara-serit input {
    width: 100%;
    flex: 1;
    min-width: 0;
  }
}

/* Yeni sürüm çipi: "akışa dön" ile aynı dil, ama jade dolgulu — bu bir haber,
   bir gezinme değil. İş koşarken çıkar (boştayken sayfa kendi yenilenir). */
.surum-cip {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  /* Üstte dururken ilk mesajın üzerine biniyordu (29 Tem çekimi): giriş
     kutusunun hemen üstüne alındı, "akışa dön" ile aynı hatta. */
  bottom: 96px;
  z-index: 9;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid var(--aksan);
  background: var(--aksan-yumusak);
  color: var(--metin);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: var(--golge-2);
  animation: yukselt 160ms ease-out;
}

.surum-cip .ikon {
  width: 14px;
  height: 14px;
}

.surum-cip:hover {
  border-color: var(--kenar-koyu);
  filter: brightness(1.04);
}

.akisa-don.yeni::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--aksan);
  animation: nabiz 1.6s infinite;
}

/* ============ GİRİŞ ALANI ============ */
.giris {
  flex: none;
  border-top: 1px solid var(--kenar);
  background: var(--yuzey);
  padding: 10px 16px calc(10px + var(--alt-guvenli));
}

.ek-cipler {
  max-width: var(--sutun);
  margin: 0 auto 8px;
}

.ek-cipler {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ek-cip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 8px 5px 5px;
  border: 1px solid var(--kenar);
  border-radius: 10px;
  background: var(--yuzey-2);
  font-size: 12px;
  color: var(--metin-2);
  max-width: 240px;
}

.ek-cip img {
  width: 34px;
  height: 34px;
  object-fit: cover;
  border-radius: 6px;
  flex: none;
}

.ek-cip .ek-ikon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 6px;
  background: var(--zemin-2);
  font-family: var(--mono);
  font-size: 10px;
  color: var(--metin-3);
  flex: none;
}

.ek-cip .ek-bilgi {
  min-width: 0;
}

.ek-cip .ek-ad {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--mono);
  font-size: 11.5px;
}

.ek-cip .ek-boyut {
  font-size: 10.5px;
  color: var(--metin-3);
}

.ek-cip .ek-sil {
  border: none;
  background: none;
  color: var(--metin-3);
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 5px;
  flex: none;
}

.ek-cip .ek-sil:hover {
  color: var(--pk-kirmizi);
  background: rgba(180, 69, 63, 0.1);
}

.ek-cip.yukleniyor {
  opacity: 0.6;
}

.giris-ic {
  max-width: var(--sutun);
  margin: 0 auto;
  display: flex;
  align-items: flex-end;
  gap: 8px;
  padding: 8px 8px 8px 12px;
  background: var(--zemin);
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak);
  transition: border-color var(--gecis), box-shadow var(--gecis);
}

.giris-ic:focus-within {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.18);
}

.giris-prompt {
  font-family: var(--mono);
  color: var(--aksan);
  line-height: 1.9;
  flex: none;
}

#kutu {
  flex: 1;
  min-width: 0;
  border: none;
  background: none;
  outline: none;
  resize: none;
  max-height: 200px;
  padding: 4px 0;
  line-height: 1.6;
  font-family: var(--mono);
  font-size: 13.5px;
}

.giris-eylem {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: none;
}

.giris-ikon,
.giris-gonder,
.giris-kes {
  width: 32px;
  height: 32px;
  border-radius: 8px;
  border: none;
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background var(--gecis), color var(--gecis), transform 90ms ease;
}

.giris-ikon {
  background: none;
  color: var(--metin-3);
}

.giris-ikon:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.giris-ikon.dinliyor {
  color: var(--pk-kirmizi);
  animation: nabiz 1.2s infinite;
}

.giris-gonder {
  background: var(--pk-jade-700);
  color: #fff;
}

.giris-gonder:hover {
  background: var(--pk-jade-800);
}

.giris-gonder:active,
.giris-kes:active {
  transform: scale(0.94);
}

.giris-kes {
  background: var(--pk-kirmizi);
  color: #fff;
}

/* ============ ALT DURUM ÇUBUĞU (PC) ============ */
.durumcubugu {
  display: none;
  align-items: center;
  gap: 7px;
  height: 24px;
  padding: 0 14px;
  border-top: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-3);
  flex: none;
}

.dc-ayrac {
  opacity: 0.5;
}

.dc-orta {
  flex: 1;
  text-align: center;
  color: var(--metin-2);
}

.durumcubugu .kosuyor {
  color: var(--aksan);
}

/* ============ ALT SEKMELER (mobil) ============ */
.alt-sekmeler {
  display: flex;
  border-top: 1px solid var(--kenar);
  background: var(--yuzey);
  padding-bottom: var(--alt-guvenli);
  flex: none;
}

.alt-sekme {
  flex: 1;
  border: none;
  background: none;
  padding: 7px 4px 6px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  color: var(--metin-3);
  cursor: pointer;
  font-size: 10.5px;
  position: relative;
  transition: color var(--gecis);
}

.alt-sekme-aktif {
  color: var(--aksan);
}

.alt-sekme-aktif::before {
  content: '';
  position: absolute;
  top: 0;
  left: 26%;
  right: 26%;
  height: 2px;
  border-radius: 0 0 2px 2px;
  background: var(--aksan);
}

/* ============ PANO ============ */
/* 1 Ağu yeniden tasarımı. Öncesi: üç sütunlu dar kartlarda 320px'lik SVG
   karalamaları, 14 güne çakılı, tıklanamaz, animasyonsuz. Sonrası: grafikler
   TAM SATIR, sürüklenebilir (fare + parmak), gün tıklanınca detay çekmecesi,
   yemek/makro grafiği ve 30 günlük takvim ısı haritası.
   Renk sistemi: jade aksan + makro üçlüsü (protein jade, karbonhidrat mavi,
   yağ sarı, girilmemiş kalori nötr gri). */
.pano {
  flex: 1;
  overflow-y: auto;
  /* Kenar boşluğu değişken: üstteki pil şeridi kenardan kenara uzanmak için
     bu değerleri negatif marjla geri alıyor (bkz. .pano-menu). */
  --pano-pad-x: 20px;
  --pano-pad-y: 18px;
  padding: var(--pano-pad-y) var(--pano-pad-x) 28px;
  width: 100%;
  --makro-protein: var(--pk-jade-600);
  --makro-karb: var(--pk-mavi);
  --makro-yag: var(--pk-sari);
  --makro-kalan: var(--kenar-koyu);
}

[data-tema='koyu'] .pano {
  --makro-protein: #7fa39b;
  --makro-karb: #6f9ac4;
  --makro-yag: #d7a94e;
  --makro-kalan: #4a534b;
}

/* Kartlar tek sütunda üst üste akar (kullanıcı isteği: "her grafik 1 satır,
   üst üste göreyim, daha geniş olsun"). Küçük kartlar kendi ızgarasında. */
.pano-kartlar {
  display: flex;
  flex-direction: column;
  gap: 14px;
  animation: panoGir 220ms ease both;
}

@keyframes panoGir {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
}

/* Küçük kartlar doğal boyunda dursun: stretch, tek satırdaki uzun rapor kartı
   yüzünden ölçüm/deney kartlarını kocaman boş kutulara çeviriyordu. */
.pano-izgara {
  display: grid;
  gap: 14px;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  align-items: start;
}

/* ============ PİL ŞERİDİ: KONU + TARİH (12 Ağu) ============
   Kaptanın isteği: "panoya tıklayınca üstte pil şeklinde menüler açılsın."
   Şerit yapışkan (sticky) — kaptan aşağıda gider grafiğine bakarken hangi
   aralıkta olduğunu unutmasın diye ekranın üstünde kalır. TELEFON ÖNCELİKLİ:
   piller sarmaz, YATAY KAYAR (sarma iki satıra bölünüp şeridi şişiriyordu) ve
   dokunma hedefi 40px'in altına inmez. */
.pano-menu {
  position: sticky;
  top: 0;
  z-index: 6;
  display: flex;
  flex-direction: column;
  gap: 8px;
  /* Alt boşluk (14 Ağu): filtre şeridi ile içerik dip dibe duruyordu, ikisi
     tek blok gibi okunuyordu. Şerit yapışkan olduğu için ayrımı boşluk verir. */
  margin: calc(var(--pano-pad-y) * -1) calc(var(--pano-pad-x) * -1) 18px;
  padding: 10px var(--pano-pad-x) 9px;
  background: color-mix(in srgb, var(--zemin) 88%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--kenar);
}

.pil-sira {
  display: flex;
  gap: 7px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  /* Kenardan kenara kayabilsin ama ilk/son pil kenara yapışmasın. */
  padding: 1px var(--pano-pad-x) 1px 0;
  margin-right: calc(var(--pano-pad-x) * -1);
}

.pil-sira::-webkit-scrollbar {
  display: none;
}

.pil {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 9px 15px;
  border-radius: 999px;
  border: 1px solid var(--kenar-koyu);
  background: var(--yuzey);
  color: var(--metin-2);
  font-family: var(--yazi);
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--gecis), color var(--gecis), border-color var(--gecis), box-shadow var(--gecis);
}

.pil:hover {
  color: var(--metin);
  border-color: var(--aksan);
}

.pil.secili {
  background: var(--aksan-yumusak);
  color: var(--metin);
  border-color: var(--aksan);
  box-shadow: inset 0 0 0 1px var(--aksan);
}

/* İkinci sıra (tarih) bir tık küçük: konu seçimi ana karar, tarih ayardır. */
.pil-tarih {
  min-height: 36px;
  padding: 7px 13px;
  font-size: 12.5px;
  font-weight: 500;
}

.pil-tarih.secili {
  font-weight: 700;
}

.pano-menu-ozel {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.pano-menu-ozel-ad {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--metin-3);
  font-weight: 700;
}

.pano-menu-tarih {
  min-height: 36px;
  padding: 6px 10px;
  border-radius: var(--yuvarlak-kucuk);
  border: 1px solid var(--kenar-koyu);
  background: var(--yuzey);
  color: var(--metin);
  font-family: var(--mono);
  font-size: 12.5px;
}

.pano-menu-tarih:focus {
  outline: none;
  border-color: var(--aksan);
  box-shadow: 0 0 0 2px var(--aksan-yumusak);
}

/* Alt satır: seçili aralığın GERÇEK hâli. Kırpma ve en dar pencere burada
   yazılı — "son 1 yıl seçtim ama 22 gün görüyorum" sorusu doğmasın. */
.pano-menu-alt {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  min-height: 15px;
}

.pano-menu-aralik {
  font-family: var(--mono);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--metin-2);
  font-variant-numeric: tabular-nums;
}

.pano-menu-serh {
  font-size: 11px;
  color: var(--metin-3);
}

/* ---- üst özet şeridi: sayfanın nabzı ---- */
.ozet-serit {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
  gap: 12px;
}

.ozet-kutu {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--kenar);
  background: linear-gradient(160deg, var(--yuzey) 0%, var(--yuzey-2) 100%);
  border-radius: 14px;
  padding: 13px 15px 12px;
  box-shadow: var(--golge-1);
  transition: transform var(--gecis), box-shadow var(--gecis), border-color var(--gecis);
}

/* Üstte ince jade şerit: kurumsal vurgu, gürültüsüz. */
.ozet-kutu::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 2px;
  background: linear-gradient(90deg, var(--aksan), transparent 78%);
  opacity: 0.75;
}

.ozet-kutu:hover {
  transform: translateY(-2px);
  box-shadow: var(--golge-2);
  border-color: var(--kenar-koyu);
}

.ozet-etiket {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--metin-3);
  font-weight: 700;
}

.ozet-deger-satir {
  display: flex;
  align-items: baseline;
  gap: 7px;
  margin-top: 3px;
}

.ozet-deger {
  font-family: var(--mono);
  font-size: 27px;
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}

.ozet-egilim {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 999px;
  background: var(--zemin-2);
  color: var(--metin-3);
}

.ozet-egilim.yukari {
  color: var(--pk-turuncu);
  background: rgba(201, 138, 46, 0.12);
}

.ozet-egilim.asagi {
  color: var(--pk-jade-600);
  background: var(--aksan-yumusak);
}

[data-tema='koyu'] .ozet-egilim.asagi {
  color: var(--aksan);
}

.ozet-alt {
  font-size: 11.5px;
  color: var(--metin-2);
  margin-top: 1px;
}

/* İlk hedef kartı (26 Ağu): kalkış takviminin yerini aldı. Yatan koyu,
   beklenen taralı — bir söz, yatmış para değildir. */
.hedef-kart {
  background: linear-gradient(155deg, var(--yuzey) 0%, var(--yuzey-2) 100%);
}

.hedef-bas {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  margin: 2px 0 12px;
}

.hedef-ad {
  font-size: 21px;
  font-weight: 700;
  letter-spacing: 0.14em;
  color: var(--metin);
  line-height: 1.15;
}

.hedef-hedefBandi {
  font-size: 12px;
  color: var(--metin-2);
  margin-top: 3px;
  letter-spacing: 0.02em;
}

.hedef-bas-sag {
  display: flex;
  align-items: baseline;
  gap: 10px;
}

.hedef-toplam {
  font-size: 24px;
  font-weight: 700;
  color: var(--aksan);
  font-variant-numeric: tabular-nums;
}

.hedef-rozet {
  font-size: 12px;
  font-weight: 600;
  color: var(--aksan);
  background: var(--aksan-yumusak);
  border: 1px solid var(--aksan);
  border-radius: 999px;
  padding: 2px 9px;
  white-space: nowrap;
}

.hedef-ray {
  position: relative;
  display: flex;
  height: 14px;
  margin: 0 0 14px;
  border-radius: 8px;
  overflow: hidden;
  background: var(--yuzey-2);
  border: 1px solid var(--kenar);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.06);
}

.hedef-dolu {
  background: linear-gradient(90deg, var(--aksan), var(--pk-jade-600, var(--aksan)));
  transition: width 0.6s cubic-bezier(0.3, 0.8, 0.3, 1);
}

/* Beklenen: taralı ki "söz" ile "para" bir bakışta ayrılsın. */
.hedef-beklenen {
  background-color: var(--aksan);
  background-image: repeating-linear-gradient(
    -45deg,
    rgba(255, 255, 255, 0.55) 0 5px,
    transparent 5px 10px
  );
  opacity: 0.42;
  transition: width 0.6s cubic-bezier(0.3, 0.8, 0.3, 1);
}

.hedef-sayilar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}

.hedef-sayi {
  padding: 9px 12px;
  border: 1px solid var(--kenar);
  border-radius: 11px;
  background: var(--yuzey);
}

.hedef-sayi-deger {
  font-size: 15.5px;
  font-weight: 650;
  color: var(--metin);
  font-variant-numeric: tabular-nums;
}

.hedef-sayi.dolu .hedef-sayi-deger {
  color: var(--aksan);
}

.hedef-sayi.soluk .hedef-sayi-deger {
  opacity: 0.66;
}

.hedef-sayi-etiket {
  font-size: 11px;
  color: var(--metin-2);
  margin-top: 2px;
  letter-spacing: 0.03em;
}

.hedef-kalemler {
  display: flex;
  flex-direction: column;
  gap: 7px;
  padding-top: 12px;
  border-top: 1px solid var(--kenar);
}

.hedef-kalem {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 13px;
  color: var(--metin-2);
}

.hedef-kalem-ad {
  color: var(--metin);
  font-weight: 550;
}

.hedef-kalem-durum {
  font-size: 11px;
  color: var(--metin-2);
  border: 1px solid var(--kenar);
  border-radius: 999px;
  padding: 1px 7px;
}

.hedef-kalem.yatti .hedef-kalem-durum {
  color: var(--aksan);
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
}

.hedef-kalem-tutar {
  margin-left: auto;
  color: var(--metin);
  font-variant-numeric: tabular-nums;
}

.hedef-nokta {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--aksan);
  flex: none;
}

.hedef-nokta.soluk {
  opacity: 0.32;
}

/* --- yol şeridi: tamamlanan + devam eden hedefler --- */
.hedef-yol {
  margin-top: 16px;
  padding-top: 13px;
  border-top: 1px solid var(--kenar);
}

.hedef-yol-baslik {
  font-size: 10.5px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--metin-2);
  margin-bottom: 9px;
}

.yol-oge {
  padding: 8px 0 8px 2px;
  border-left: 2px solid var(--kenar);
  padding-left: 12px;
  margin-left: 4px;
}

.yol-oge.tamam {
  border-left-color: var(--aksan);
}

.yol-ust {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

.yol-im {
  color: var(--aksan);
  font-weight: 700;
}

.yol-oge.devam .yol-im {
  opacity: 0.45;
}

.yol-ad {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--metin);
}

.yol-oge.tamam .yol-ad {
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--kenar-koyu, var(--kenar));
}

.yol-olcut {
  font-size: 11.5px;
  color: var(--metin-2);
}

.yol-kazanimlar {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 7px;
}

.yol-kazanim {
  font-size: 11.5px;
  color: var(--metin-2);
  border: 1px dashed var(--kenar);
  border-radius: 999px;
  padding: 2px 9px;
}

/* Araba fonu çubuğu (26 Ağu): yatan koyu, beklenen soluk. İki sayı tek
   renkte çizilseydi "söz" ile "para" aynı görünürdü. */
.fon-ray {
  display: flex;
  height: 5px;
  margin-top: 7px;
  border-radius: 3px;
  overflow: hidden;
  background: var(--aksan-yumusak, rgba(0, 0, 0, 0.08));
}

.fon-dolu {
  background: var(--aksan);
  transition: width 0.4s ease;
}

.fon-beklenen {
  background: var(--aksan);
  opacity: 0.32;
  transition: width 0.4s ease;
}

.ozet-uyari .ozet-deger {
  color: var(--pk-turuncu);
}

[data-tema='koyu'] .ozet-uyari .ozet-deger {
  color: #e0b055;
}

.ozet-uyari::before {
  background: linear-gradient(90deg, var(--pk-turuncu), transparent 78%);
}

.ozet-iyi::before {
  background: linear-gradient(90deg, var(--pk-jade-500), transparent 78%);
}

/* ---- kart yüzeyi ---- */
.pano-kart {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--kenar);
  background: linear-gradient(180deg, var(--yuzey) 0%, var(--yuzey-2) 100%);
  border-radius: 16px;
  padding: 15px 17px 14px;
  min-width: 0;
  box-shadow: var(--golge-1);
  transition: box-shadow var(--gecis), border-color var(--gecis);
}

.pano-kart:hover {
  box-shadow: var(--golge-2);
}

.pano-genis {
  padding-bottom: 12px;
}

.pano-kart-basi {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

/* Başlığın solunda jade işaret: hiyerarşi ucuz ama net. */
.pano-kart-basi .kucuk-baslik {
  position: relative;
  padding-left: 11px;
}

.pano-kart-basi .kucuk-baslik::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 12px;
  border-radius: 2px;
  background: var(--aksan);
}

.pano-kart-sag {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-2);
  margin-left: auto;
}

/* Grafikte görünen tarih aralığı: sürükledikçe canlı güncellenir. */
.pano-aralik {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--zemin-2);
  border: 1px solid var(--kenar);
  font-variant-numeric: tabular-nums;
}

.pano-not {
  font-size: 11.5px;
  color: var(--metin-3);
  margin-top: 10px;
  overflow-wrap: anywhere;
}

.pano-not.uyari {
  color: var(--pk-turuncu);
  font-weight: 600;
}

.olcum-deger {
  font-family: var(--mono);
  font-size: 15px;
  font-weight: 600;
}

/* ---- grafik açıklama şeridi (makro renkleri) ---- */
.grafik-aciklama {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin-top: 10px;
  font-size: 11.5px;
  color: var(--metin-2);
}

.grafik-aciklama-oge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.grafik-aciklama-nokta {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  background: var(--aksan);
  flex: none;
}

.grafik-aciklama-nokta.zg-makro-protein {
  background: var(--makro-protein);
}

.grafik-aciklama-nokta.zg-makro-karb {
  background: var(--makro-karb);
}

.grafik-aciklama-nokta.zg-makro-yag {
  background: var(--makro-yag);
}

.grafik-aciklama-nokta.zg-makro-kalan {
  background: repeating-linear-gradient(45deg, var(--makro-kalan), var(--makro-kalan) 2px, transparent 2px, transparent 4px);
  border: 1px solid var(--makro-kalan);
}

/* ============ ZAMAN GRAFİĞİ MOTORU ============ */
/* Sürüklenebilir tuval: yatay hareket grafiğin, dikey hareket sayfanın
   (touch-action: pan-y). Fare imleci "tut" davetini kendisi söyler. */
.zg {
  position: relative;
  touch-action: pan-y;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  outline: none;
  --zg-renk: var(--aksan);
}

.zg:focus-visible {
  box-shadow: 0 0 0 2px var(--aksan-yumusak), 0 0 0 3px var(--aksan);
  border-radius: 10px;
}

.zg.zg-tutuluyor {
  cursor: grabbing;
}

/* overflow GİZLİ olmalı: görünür bırakılınca pencere dışında kalan tampon
   günlerin mürekkebi panonun kaydırma alanını şişiriyor ve telefonda yatay
   kaydırma çubuğu çıkıyordu (ölçüldü: 698px taşma). */
.zg-svg {
  display: block;
  width: 100%;
  height: var(--zg-yuk);
  overflow: hidden;
}

.zg-yakala {
  pointer-events: all;
}

/* ızgara + eksen */
.zg-izgara {
  stroke: var(--kenar);
  stroke-width: 1;
  shape-rendering: crispEdges;
}

.zg-izgara-taban {
  stroke: var(--kenar-koyu);
}

.zg-eksen {
  fill: var(--metin-3);
  font-size: 10px;
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
}

.zg-gun-harf {
  fill: var(--metin-3);
  font-size: 9px;
  font-family: var(--mono);
  letter-spacing: 0.04em;
}

.zg-gun-harf.hafta-sonu {
  fill: var(--pk-turuncu);
}

.zg-gun-sayi {
  fill: var(--metin-2);
  font-size: 10.5px;
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
}

.zg-gun-sayi.ay-basi {
  fill: var(--metin);
  font-weight: 700;
}

.zg-tarama-zemin {
  fill: var(--yuzey-2);
}

.zg-tarama-cizgi {
  stroke: var(--makro-kalan);
  stroke-width: 3;
  opacity: 0.55;
}

.zg-gun-sayi.hafta-sonu {
  fill: var(--metin-3);
}

/* "bugün" hafta sonuna denk gelse bile aksan rengini korur (sıra önemli). */
.zg-gun-sayi.bugun {
  fill: var(--aksan);
  font-weight: 700;
}

/* zemin işaretleri */
.zg-haftasonu {
  fill: var(--zemin-2);
  opacity: 0.55;
}

.zg-gelecek {
  fill: var(--zemin-2);
  opacity: 0.35;
}

/* Seçim dışı gün perdesi: grafik penceresi en az 7 gün olduğu için "bu ay"
   5 gündeyken solda önceki ayın günleri de çiziliyor. Veri silinmez, perdenin
   altında görünmeye devam eder — ama seçime AİT DEĞİL diye soluk kalır. */
.zg-secim-disi {
  fill: var(--yuzey);
  opacity: 0.68;
  pointer-events: none;
}

.zg-secili {
  fill: var(--aksan-yumusak);
  stroke: var(--aksan);
  stroke-width: 1.5;
  stroke-dasharray: 3 3;
}

.zg-bugun-cizgi {
  stroke: var(--aksan);
  stroke-width: 1.5;
  stroke-dasharray: 2 4;
  opacity: 0.5;
}

.zg-imlec {
  stroke: var(--kenar-koyu);
  stroke-width: 1;
  pointer-events: none;
  transition: opacity 120ms;
}

/* hedef bandı */
.zg-band {
  fill: var(--zg-renk);
  opacity: 0.08;
}

.zg-band-sinir {
  stroke: var(--zg-renk);
  stroke-width: 1;
  stroke-dasharray: 3 4;
  opacity: 0.4;
}

.zg-band-etiket {
  fill: var(--metin-3);
  font-size: 9.5px;
  font-family: var(--mono);
}

/* Etiket zemini: sütun değerlerinin üstünden geçtiğinde okunur kalsın. */
.zg-band-etiket-zemin {
  fill: var(--yuzey);
  opacity: 0.82;
}

/* İkinci şerit — yemek grafiğinde protein hedefi (110-130 g = 440-520 kcal).
   Protein yığının en alt dilimi olduğu için bu şerit "tuttu mu" sorusunun
   doğrudan cevabıdır: dilimin üst kenarı şeridin içindeyse tutmuş. */
.zg-band.zg-band-protein {
  fill: var(--makro-protein);
  opacity: 0.13;
}

.zg-band-sinir.zg-band-protein {
  stroke: var(--makro-protein);
  opacity: 0.6;
}

.zg-band-etiket.zg-band-protein {
  fill: var(--makro-protein);
  font-weight: 700;
}

/* Sütun üstündeki hedef işareti: ✓ tuttu · ↑ üstünde · ↓ altında */
.zg-katman-isaret {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
}

.zg-isaret-tuttu {
  fill: var(--pk-jade-700);
}

[data-tema='koyu'] .zg-isaret-tuttu {
  fill: var(--aksan);
}

.zg-isaret-ustunde {
  fill: var(--pk-turuncu);
}

.zg-isaret-altinda {
  fill: var(--pk-mavi);
}

.grafik-aciklama-nokta.zg-aciklama-isaret {
  display: none;
}

/* çizgi + alan */
.zg-cizgi {
  fill: none;
  stroke: var(--zg-renk);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.zg-kopru {
  fill: none;
  stroke: var(--zg-renk);
  stroke-width: 1.6;
  stroke-dasharray: 3 4;
  opacity: 0.42;
}

.zg-nokta {
  fill: var(--yuzey);
  stroke: var(--zg-renk);
  stroke-width: 2;
}

.zg-nokta-son {
  fill: var(--zg-renk);
  stroke: var(--yuzey);
  stroke-width: 2.5;
}

.zg-nokta-yuksek {
  stroke: var(--pk-kirmizi);
}

.zg-nokta-son.zg-nokta-yuksek {
  fill: var(--pk-kirmizi);
}

.zg-deger {
  fill: var(--metin-2);
  font-size: 10.5px;
  font-family: var(--mono);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  pointer-events: none;
}

.zg-bos-yazi {
  fill: var(--metin-3);
  font-size: 12px;
  font-family: var(--mono);
}

/* sütunlar */
.zg-sutun {
  fill: var(--zg-renk);
}

.zg-sutun-tek {
  fill: var(--pk-jade-500);
  opacity: 0.62;
}

.zg-sutun-son {
  fill: var(--pk-jade-700);
  opacity: 1;
}

[data-tema='koyu'] .zg-sutun-tek {
  fill: var(--aksan);
  opacity: 0.45;
}

[data-tema='koyu'] .zg-sutun-son {
  fill: var(--aksan);
  opacity: 1;
}

.zg-makro-protein {
  fill: var(--makro-protein);
}

.zg-makro-karb {
  fill: var(--makro-karb);
}

.zg-makro-yag {
  fill: var(--makro-yag);
}

.zg-makro-kalan {
  fill: var(--makro-kalan);
  opacity: 0.55;
}

/* ---- giriş animasyonları (yalnız ilk çizimde) ---- */
.zg-canli .zg-cizilir {
  stroke-dasharray: var(--uzunluk);
  stroke-dashoffset: var(--uzunluk);
  animation: zgCiz 720ms cubic-bezier(0.33, 1, 0.68, 1) forwards;
}

@keyframes zgCiz {
  to {
    stroke-dashoffset: 0;
  }
}

.zg-canli .zg-alan {
  animation: zgAlan 620ms ease both;
  transform-box: fill-box;
  transform-origin: bottom;
}

@keyframes zgAlan {
  from {
    opacity: 0;
    transform: scaleY(0.72);
  }
}

.zg-canli .zg-nokta {
  animation: zgNokta 320ms cubic-bezier(0.2, 1.3, 0.4, 1) backwards;
  transform-box: fill-box;
  transform-origin: center;
}

@keyframes zgNokta {
  from {
    opacity: 0;
    transform: scale(0.2);
  }
}

.zg-canli .zg-sutun {
  animation: zgSutun 460ms cubic-bezier(0.22, 0.9, 0.28, 1) backwards;
  transform-box: fill-box;
  transform-origin: bottom;
}

@keyframes zgSutun {
  from {
    transform: scaleY(0);
    opacity: 0.35;
  }
}

.zg-canli .zg-deger {
  animation: zgYazi 300ms ease backwards;
}

@keyframes zgYazi {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
}

/* ---- ipucu balonu ---- */
.zg-ipucu {
  position: absolute;
  top: 4px;
  min-width: 148px;
  padding: 9px 11px;
  border-radius: 12px;
  border: 1px solid var(--kenar-koyu);
  background: var(--yuzey);
  background: color-mix(in srgb, var(--yuzey) 88%, transparent);
  backdrop-filter: blur(10px);
  box-shadow: var(--golge-3);
  pointer-events: none;
  z-index: 4;
  animation: zgIpucu 130ms ease both;
}

@keyframes zgIpucu {
  from {
    opacity: 0;
    transform: translateY(-3px);
  }
}

.zg-ipucu-bas {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--metin);
  margin-bottom: 5px;
  white-space: nowrap;
}

.zg-ipucu-satir {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11.5px;
  line-height: 1.7;
  white-space: nowrap;
}

.zg-ipucu-nokta {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  background: var(--kenar-koyu);
  flex: none;
}

.zg-ipucu-nokta.zg-makro-protein {
  background: var(--makro-protein);
}

.zg-ipucu-nokta.zg-makro-karb {
  background: var(--makro-karb);
}

.zg-ipucu-nokta.zg-makro-yag {
  background: var(--makro-yag);
}

.zg-ipucu-nokta.zg-makro-kalan {
  background: var(--makro-kalan);
}

.zg-ipucu-nokta.zg-nokta-iyi {
  background: var(--pk-jade-500);
}

.zg-ipucu-nokta.zg-nokta-kotu {
  background: var(--pk-kirmizi);
}

.zg-ipucu-nokta.zg-nokta-seans {
  background: var(--pk-mavi);
}

.zg-ipucu-nokta.zg-nokta-kcal {
  background: var(--metin-2);
}

.zg-ipucu-nokta.zg-nokta-uyari {
  background: var(--pk-turuncu);
}

/* Toplam satırı (günün kalorisi) dilimlerden ayrılır: içi boş işaret + ayraç.
   Öncesinde dolu jade nokta kullanılıyordu ve proteinle aynı renk görünüyordu. */
.zg-ipucu-nokta.zg-nokta-toplam {
  background: transparent;
  border: 2px solid var(--metin-2);
  border-radius: 50%;
  box-sizing: border-box;
}

.zg-ipucu-satir.toplam {
  font-weight: 700;
  padding-bottom: 5px;
  margin-bottom: 4px;
  border-bottom: 1px dashed var(--kenar);
}

/* Durum satırının işareti (✓ ↑ ↓): renk kutusu değil, harfin kendisi. */
.zg-ipucu-nokta.zg-ipucu-im {
  background: transparent;
  border: none;
  width: 9px;
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
}

.zg-ipucu-nokta.zg-isaret-tuttu {
  color: var(--pk-jade-700);
}

[data-tema='koyu'] .zg-ipucu-nokta.zg-isaret-tuttu {
  color: var(--aksan);
}

.zg-ipucu-nokta.zg-isaret-ustunde {
  color: var(--pk-turuncu);
}

.zg-ipucu-nokta.zg-isaret-altinda {
  color: var(--pk-mavi);
}

.zg-ipucu-ad {
  color: var(--metin-2);
}

.zg-ipucu-deger {
  margin-left: auto;
  font-family: var(--mono);
  font-weight: 700;
  color: var(--metin);
  font-variant-numeric: tabular-nums;
}

/* Sebep etiketi: sayı satırlarından farklı okunur — sola dayalı, sarabilen,
   önünde ince aksan çubuğu olan bir alıntı bloğu. Balon dar kalsın diye
   genişliği sınırlı; uzun sebep iki satıra iner. */
.zg-ipucu-sebep {
  margin-top: 6px;
  padding: 4px 0 0 8px;
  border-left: 2px solid var(--aksan);
  max-width: 210px;
  font-size: 11px;
  line-height: 1.45;
  color: var(--metin);
  white-space: normal;
}

.zg-ipucu-alt {
  margin-top: 6px;
  padding-top: 5px;
  border-top: 1px solid var(--kenar);
  font-size: 10.5px;
  color: var(--metin-3);
  white-space: nowrap;
}

/* "bugüne dön": geçmişe gidildiğinde belirir */
.zg-don {
  position: absolute;
  right: 4px;
  top: 2px;
  padding: 3px 10px;
  border-radius: 999px;
  border: 1px solid var(--aksan);
  background: var(--aksan-yumusak);
  color: var(--metin);
  font-family: var(--mono);
  font-size: 10.5px;
  cursor: pointer;
  z-index: 3;
  animation: zgIpucu 160ms ease both;
  transition: background var(--gecis);
}

.zg-don:hover {
  background: var(--aksan);
  color: #fff;
}

/* ---- zoom kulpu (12 Ağu) ----
   Grafiğin iki kenarındaki ince şerit: basılı tutup yukarı-aşağı sürükleyince
   pencere 7 ↔ 365 gün arasında açılır. touch-action YOK ki telefonda dikey
   parmak hareketini sayfaya kaptırmadan alalım; grafiğin GÖVDESİ pan-y kalır,
   yani panoda parmakla aşağı kaydırma bozulmaz. Sol kulp değer ekseninin
   boşluğuna oturur (veri alanından piksel çalmaz). */
.zg-kulp {
  position: absolute;
  top: 4px;
  bottom: 30px;
  width: 30px;
  z-index: 2;
  touch-action: none;
  cursor: ns-resize;
  border-radius: 8px;
  transition: background var(--gecis);
}

.zg-kulp-sol {
  left: 0;
}

.zg-kulp-sag {
  right: 0;
  width: 18px;
}

/* Tutamak imi: dikey jesti anlatan üç kısa çizgi, dikkat dağıtmayacak kadar soluk. */
.zg-kulp::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 10px;
  height: 12px;
  transform: translate(-50%, -50%);
  opacity: 0.32;
  background:
    linear-gradient(var(--metin-3), var(--metin-3)) center top / 100% 2px no-repeat,
    linear-gradient(var(--metin-3), var(--metin-3)) center center / 100% 2px no-repeat,
    linear-gradient(var(--metin-3), var(--metin-3)) center bottom / 100% 2px no-repeat;
  transition: opacity var(--gecis);
}

.zg-kulp:hover,
.zg-kulp.tutuluyor {
  background: var(--aksan-yumusak);
}

.zg-kulp:hover::after,
.zg-kulp.tutuluyor::after {
  opacity: 0.85;
}

/* ---- alt eksen kulpu (14 Ağu) ----
   Tarih yazılarının olduğu alt şerit: basılı tutup SAĞA-SOLA sürükleyince
   pencere daralır / genişler (kenar kulpları dikey, bu yatay; ikisi de aynı
   zoom yoluna gider). Kenar kulpları bottom:30px'te bitiyor, bu şerit tam
   oradan başlıyor: üst üste binmiyorlar.
   Tutamak imi YOK — şeridin içinde tarih yazıları duruyor, imi oraya koymak
   onları örterdi. İşaret olarak imleç (ew-resize) ve hafif zemin yetiyor.
   touch-action pan-y: telefonda bu şeridin üstünden parmakla sayfayı aşağı
   kaydırmak bozulmaz; aralık değiştirmenin telefondaki yolu iki parmak. */
.zg-eksen-kulp {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 30px;
  z-index: 2;
  touch-action: pan-y;
  cursor: ew-resize;
  border-radius: 8px;
  transition: background var(--gecis);
}

.zg-eksen-kulp:hover,
.zg-eksen-kulp.tutuluyor {
  background: var(--aksan-yumusak);
}

/* Jest sırasında "42 gün" yazan rozet: zoom'un nerede olduğunu söyler, sonra solar. */
.zg-zoom-rozet {
  position: absolute;
  /* Üst boşluk (padUst) 20px: rozet tam o şeride oturur, veri alanına sarkmaz. */
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  padding: 2px 9px;
  line-height: 13px;
  border-radius: 999px;
  border: 1px solid var(--kenar-koyu);
  /* Yarı saydam + bulanık: telefonda kart kısa, rozet tam da eğrinin tepesine
     oturuyor ve zirveyi kapatıyordu. Arkasındaki çizgi görünür kalsın. */
  background: color-mix(in srgb, var(--yuzey-2, var(--yuzey)) 82%, transparent);
  backdrop-filter: blur(6px);
  color: var(--metin-2);
  font-family: var(--mono);
  font-size: 10.5px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  pointer-events: none;
  z-index: 4;
  animation: zgIpucu 140ms ease both;
}

/* ============ KALKIŞ TAKVİMİ (ısı haritası) ============ */
/* Takvim tam satırda tek başına dururken kareler dev gibi büyüyordu (1109px / 7).
   Izgara 700px'te durur, kalan yer sağdaki özet sütununa gider. */
.takvim-kutu {
  display: flex;
  align-items: flex-start;
  gap: 24px;
  flex-wrap: wrap;
}

.takvim {
  flex: 1 1 420px;
  max-width: 700px;
  min-width: 0;
}

.tk-izgara {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}

.tk-basliksatir {
  font-size: 10px;
  font-family: var(--mono);
  letter-spacing: 0.06em;
  color: var(--metin-3);
  text-align: center;
  padding-bottom: 2px;
  text-transform: uppercase;
}

.tk-kare {
  position: relative;
  height: 52px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--zemin-2);
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  overflow: hidden;
  transition: transform var(--gecis), box-shadow var(--gecis), border-color var(--gecis), background var(--gecis);
}

.tk-kare:hover:not(:disabled) {
  transform: translateY(-2px) scale(1.03);
  box-shadow: var(--golge-2);
  border-color: var(--aksan);
  z-index: 2;
}

.tk-kare:active:not(:disabled) {
  transform: translateY(0) scale(0.99);
}

/* Tuttuğu gün: jade dolgu + içeriden hafif ışık. */
.tk-kare.dolu {
  background: linear-gradient(160deg, var(--pk-jade-600), var(--pk-jade-800));
  border-color: var(--pk-jade-700);
  color: #f2f5ef;
  font-weight: 700;
}

.tk-kare.bos {
  background: var(--yuzey-2);
  border-color: var(--kenar-koyu);
  color: var(--metin-2);
}

.tk-kare.kayitsiz {
  background: repeating-linear-gradient(
    45deg,
    var(--zemin-2),
    var(--zemin-2) 4px,
    transparent 4px,
    transparent 8px
  );
  border-style: dashed;
  color: var(--metin-3);
}

.tk-kare.kapsam-disi {
  opacity: 0.35;
}

.tk-kare.gelecek {
  opacity: 0.3;
  cursor: default;
  border-style: dashed;
}

.tk-kare.bugun {
  box-shadow: 0 0 0 2px var(--aksan);
}

.tk-kare.secili {
  box-shadow: 0 0 0 2px var(--aksan), var(--golge-2);
  border-color: var(--aksan);
}

.tk-sayi {
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

.tk-ay {
  position: absolute;
  top: 3px;
  left: 5px;
  font-size: 8.5px;
  letter-spacing: 0.04em;
  opacity: 0.8;
}

.tk-isaretler {
  position: absolute;
  bottom: 4px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 3px;
}

.tk-isaret {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--metin-3);
}

.tk-isaret.tk-seans {
  background: var(--pk-mavi);
}

.tk-isaret.tk-dalga {
  background: var(--pk-kirmizi);
}

.tk-isaret.tk-pm {
  background: var(--pk-jade-500);
}

.tk-kare.dolu .tk-isaret.tk-pm {
  background: rgba(255, 255, 255, 0.75);
}

/* Geniş ekranda özet+açıklama takvimin SAĞINDA sütun olur; darda alta iner. */
.takvim-alt {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  margin-top: 12px;
  padding-top: 11px;
  border-top: 1px solid var(--kenar);
  width: 100%;
}

@media (min-width: 900px) {
  .takvim-alt {
    flex: 0 1 250px;
    width: auto;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
    margin-top: 24px;
    padding: 0 0 0 20px;
    border-top: none;
    border-left: 1px solid var(--kenar);
  }
}

.takvim-ozet {
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.takvim-ozet-sayi {
  font-family: var(--mono);
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.takvim-ozet-yazi {
  font-size: 11.5px;
  color: var(--metin-3);
}

.takvim-aciklama {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-left: auto;
  font-size: 10.5px;
  color: var(--metin-3);
}

@media (min-width: 900px) {
  .takvim-aciklama {
    margin-left: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 7px;
  }
}

.takvim-ornek-oge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.takvim-ornek {
  width: 13px;
  height: 13px;
  border-radius: 4px;
  border: 1px solid var(--kenar);
  background: var(--zemin-2);
  flex: none;
}

.takvim-ornek.dolu {
  background: linear-gradient(160deg, var(--pk-jade-600), var(--pk-jade-800));
  border-color: var(--pk-jade-700);
}

.takvim-ornek.bos {
  background: var(--yuzey-2);
  border-color: var(--kenar-koyu);
}

.takvim-ornek.kayitsiz {
  border-style: dashed;
}

.takvim-ornek.isaret-seans {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pk-mavi);
  border: none;
}

.takvim-ornek.isaret-dalga {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--pk-kirmizi);
  border: none;
}

@media (max-width: 640px) {
  .pano {
    --pano-pad-x: 12px;
    --pano-pad-y: 14px;
  }

  /* Telefonda şerit daha sıkı: iki pil sırası + aralık satırı ekranın
     üçte birini yemesin. Dokunma hedefi yine 38px'in altına inmiyor. */
  .pano-menu {
    gap: 6px;
    padding: 8px var(--pano-pad-x) 8px;
  }

  .pil {
    min-height: 38px;
    padding: 8px 13px;
    font-size: 13px;
  }

  .pil-tarih {
    min-height: 34px;
    padding: 6px 11px;
  }

  .tk-izgara {
    gap: 4px;
  }

  .tk-kare {
    height: 42px;
    font-size: 11px;
    border-radius: 7px;
  }

  .takvim-aciklama {
    margin-left: 0;
  }
}

/* Hareket hassasiyeti: animasyonlar kapalıysa yalnız durum değişir. */
@media (prefers-reduced-motion: reduce) {
  .pano-kartlar,
  .zg-canli .zg-cizilir,
  .zg-canli .zg-alan,
  .zg-canli .zg-nokta,
  .zg-canli .zg-sutun,
  .zg-canli .zg-deger,
  .zg-ipucu,
  .zg-don {
    animation: none;
  }

  .zg-canli .zg-cizilir {
    stroke-dashoffset: 0;
  }
}

.grafik-bos {
  padding: 26px 0;
  text-align: center;
  color: var(--metin-3);
  font-size: 12.5px;
  font-family: var(--mono);
}

/* ---- günlük rapor formu ---- */
.rapor-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.rapor-onaylar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.rapor-anahtar {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 11px;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey-2);
  font-size: 13px;
  color: var(--metin-2);
  cursor: pointer;
  transition: border-color var(--gecis), color var(--gecis);
}

.rapor-anahtar:has(input:checked) {
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
  color: var(--metin);
  font-weight: 600;
}

.rapor-anahtar input {
  width: 16px;
  height: 16px;
  accent-color: var(--pk-jade-700);
  margin: 0;
}

.rapor-izgara {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px;
}

.rapor-alan {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.rapor-etiket {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--metin-3);
  font-weight: 700;
}

.rapor-sayi {
  width: 100%;
  padding: 7px 9px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--mono);
  font-size: 14px;
  outline: none;
}

.rapor-sayi:focus {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.16);
}

.rapor-birim {
  font-size: 10.5px;
  color: var(--metin-3);
}

/* "dalganın sebebi": sayı kutularının arasında metin alanı — iki sütun yer
   kaplar ki birkaç kelime sıkışmadan yazılsın. */
.rapor-alan-genis {
  grid-column: span 2;
}

.rapor-metin {
  width: 100%;
  padding: 7px 9px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--yazi);
  font-size: 13px;
  outline: none;
}

.rapor-metin:focus {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.16);
}

.rapor-not {
  padding: 9px 11px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--yazi);
  font-size: 13px;
  resize: vertical;
  outline: none;
}

.rapor-not:focus {
  border-color: var(--aksan);
}

/* --- HIZLI GİRİŞ (mikro-form): iki dokunuşluk kayıt --- */
.hizli-izgara {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(132px, 1fr));
  gap: 8px;
}

.hizli-dugme {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 11px 13px;
  border: 1px solid var(--kenar);
  border-radius: 10px;
  background: var(--yuzey-2);
  color: var(--metin);
  font-family: inherit;
  cursor: pointer;
  text-align: left;
  transition: transform var(--gecis), border-color var(--gecis), box-shadow var(--gecis), background var(--gecis);
}

.hizli-dugme:hover:not(:disabled) {
  transform: translateY(-1px);
  border-color: var(--aksan);
  box-shadow: var(--golge-1);
}

.hizli-dugme:active:not(:disabled) {
  transform: translateY(0);
  background: var(--aksan-yumusak);
}

.hizli-dugme:disabled {
  opacity: 0.55;
  cursor: default;
}

/* İşaretlenmiş (bugün yapılmış) eylem: jade zemin, geri basmaya davet etmez. */
.hizli-dugme.tamam {
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
}

.hizli-dugme.genis {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: baseline;
  justify-content: space-between;
}

.hizli-ad {
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.hizli-deger {
  font-size: 11px;
  color: var(--metin-3);
  font-family: var(--mono);
}

/* Yemek satırı artık dört makro alanı taşıyor (kalori + protein/karb/yağ). */
.hizli-yemek {
  display: grid;
  grid-template-columns: minmax(150px, 1.6fr) repeat(4, minmax(58px, 0.55fr)) auto;
  gap: 7px;
  margin-top: 9px;
}

.hizli-metin,
.hizli-yemek .hizli-sayi {
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin);
  font-family: var(--yazi);
  font-size: 13.5px;
  outline: none;
  min-width: 0;
}

.hizli-yemek .hizli-sayi {
  font-family: var(--mono);
}

.hizli-metin:focus,
.hizli-yemek .hizli-sayi:focus {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.16);
}

.hizli-geri {
  margin-left: 6px;
  padding: 0;
  border: none;
  background: none;
  color: var(--metin-3);
  font-family: inherit;
  font-size: 11.5px;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}

.hizli-geri:hover:not(:disabled) {
  color: var(--pk-kirmizi);
}

@media (max-width: 900px) {
  /* Dar ekranda altı alan tek satıra sığmıyor: metin üstte, makrolar altında. */
  .hizli-yemek {
    grid-template-columns: repeat(4, 1fr);
  }

  .hizli-metin {
    grid-column: 1 / -1;
  }

  .hizli-yemek .dugme {
    grid-column: 1 / -1;
  }
}

@media (max-width: 460px) {
  .hizli-yemek {
    grid-template-columns: repeat(2, 1fr);
  }
}

.misra-giris {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.misra-giris textarea {
  padding: 9px 11px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--yazi);
  font-size: 13.5px;
  line-height: 1.5;
  resize: vertical;
  outline: none;
}

.misra-giris textarea:focus {
  border-color: var(--aksan);
}

.misra-liste {
  margin-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.misra-satir {
  font-size: 12.5px;
  color: var(--metin-2);
  padding-left: 9px;
  border-left: 2px solid var(--kenar);
  overflow-wrap: anywhere;
}

/* ============ NOTLAR / DURUM ============ */
/* Başlık, sayfanın gövdesiyle AYNI genişlikte olmalı: 820px sütun kullanılınca
   durum/hesap sayfasında başlık kartlardan içeride kalıyordu (29 Tem ölçümü). */
/* SAYFA GENİŞLİĞİ (kullanıcı isteği 29 Tem): hesap/bilgisayar/pano/durum
   içerikleri ortalanmış dar konteynerdeydi, sol navigasyonla içerik arasında
   koca boşluk kalıyor ve panel havada duruyordu. Notlar sekmesi ise alanı tam
   kullanıyordu. Artık HEPSİ aynı mantıkta: içerik solda başlar, sağ kenara
   kadar akar. Ortalama YOK, yalnız eşit yan boşluk. */
.sayfa-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px 10px;
  width: 100%;
}

.sayfa-basi h2 {
  margin: 0;
  font-size: 16px;
  font-family: var(--mono);
  font-weight: 700;
}

.not-liste {
  overflow-y: auto;
  padding: 0 18px 20px;
  width: 100%;
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  align-content: start;
  align-items: stretch;
}

.not-kart {
  display: flex;
  flex-direction: column;
  min-height: 132px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 13px 15px;
  cursor: pointer;
  transition: transform var(--gecis), border-color var(--gecis), box-shadow var(--gecis);
}

.not-kart:hover {
  transform: translateY(-2px);
  border-color: var(--aksan);
  box-shadow: var(--golge-2);
}

.not-kart h3 {
  margin: 0 0 5px;
  font-size: 14.5px;
}

.not-kart p {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--metin-2);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

.not-kart .not-kart-alt {
  margin-top: auto;
  padding-top: 10px;
}

/* --- DURUM: bölümler + satırlar --- */
.durum-govde {
  flex: 1;
  overflow-y: auto;
  padding: 4px 18px 24px;
  width: 100%;
}

.durum-bolum {
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 12px 16px;
  margin-bottom: 12px;
}

.durum-bolum > .kucuk-baslik {
  margin-bottom: 8px;
}

.durum-satir {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  padding: 7px 0;
  border-top: 1px solid var(--kenar);
  font-size: 13.5px;
}

.durum-satir:first-of-type {
  border-top: none;
}

.durum-etiket {
  color: var(--metin-2);
  flex: none;
}

.durum-deger {
  font-family: var(--mono);
  font-size: 12.5px;
  text-align: right;
  overflow-wrap: anywhere;
}

.durum-eylem {
  margin-top: 10px;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

/* --- BİLGİSAYAR (PC ajanı) --- */
/* v2: kart ızgarası değil, araç sekmesi düzeni (üst şerit + tek çalışma alanı) */
.pc-kartlar {
  flex: 1;
  overflow-y: auto;
  padding: 4px 18px 20px;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.pc-nokta {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--pk-kirmizi);
  flex: none;
}

.pc-kurulum {
  font-size: 12.5px;
  color: var(--metin-2);
}

.pc-kod {
  margin: 6px 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--kod-zemin);
  border: 1px solid var(--kenar);
  font-family: var(--mono);
  font-size: 12px;
  overflow-x: auto;
}

.pc-anahtar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  font-size: 12px;
}

.pc-anahtar-deger {
  font-family: var(--mono);
  font-size: 11px;
  background: var(--zemin-2);
  padding: 3px 7px;
  border-radius: 6px;
  overflow-wrap: anywhere;
  max-width: 100%;
}

.pc-satir {
  display: flex;
  gap: 8px;
}

.pc-giris {
  flex: 1;
  min-width: 0;
  padding: 8px 11px;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--mono);
  font-size: 13px;
  outline: none;
}

.pc-giris:focus {
  border-color: var(--aksan);
}

.pc-cikti {
  margin: 0;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--kod-zemin);
  border: 1px solid var(--kenar);
  font-family: var(--mono);
  font-size: 12px;
  line-height: 1.5;
  max-height: 280px;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.pc-ekran {
  width: 100%;
  border-radius: 8px;
  border: 1px solid var(--kenar);
  cursor: zoom-in;
}

/* --- geniş içerik penceresi --- */
.genis-modal-katman {
  position: fixed;
  inset: 0;
  z-index: 117;
  background: rgba(20, 23, 21, 0.55);
  backdrop-filter: blur(3px);
  display: grid;
  place-items: center;
  padding: 24px;
  animation: sol 130ms ease-out;
}

.genis-modal {
  width: min(860px, 100%);
  max-height: 82vh;
  display: flex;
  flex-direction: column;
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  border-radius: 14px;
  box-shadow: var(--golge-3);
  overflow: hidden;
  animation: yukselt 160ms ease-out;
}

.genis-modal-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--kenar);
}

.genis-modal-basi h3 {
  margin: 0;
  font-size: 14px;
  font-family: var(--mono);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.genis-modal-govde {
  overflow-y: auto;
  padding: 14px 16px;
}

.kucuk-baslik {
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--metin-3);
  font-weight: 700;
}

.buyuk-deger {
  font-size: 18px;
  font-weight: 700;
  font-family: var(--mono);
  letter-spacing: -0.02em;
  margin-top: 3px;
}

.durum-kart .alt-bilgi {
  font-size: 11.5px;
  font-family: var(--mono);
  color: var(--metin-2);
  margin-top: 3px;
  overflow-wrap: anywhere;
}

/* --- NOTLAR: solda grup rayı, sağda notlar --- */
.notlar-duzen {
  flex: 1;
  min-height: 0;
  display: flex;
}

.grup-rayi {
  width: 178px;
  flex: none;
  border-right: 1px solid var(--kenar);
  background: var(--yuzey);
  padding: 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow-y: auto;
}

.grup-rayi-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-left: 8px;
}

.grup-liste {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.grup-satir {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 9px;
  border: none;
  border-radius: 8px;
  background: none;
  color: var(--metin-2);
  font-size: 13px;
  cursor: pointer;
  text-align: left;
  transition: background var(--gecis), color var(--gecis);
}

.grup-satir:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.grup-satir.aktif {
  background: var(--aksan-yumusak);
  color: var(--metin);
  font-weight: 600;
}

.grup-satir .ikon {
  width: 15px;
  height: 15px;
  flex: none;
}

.grup-ad {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.grup-adet {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
  flex: none;
}

.grup-sil {
  font-size: 10px;
  color: var(--metin-3);
  flex: none;
}

.grup-sil:hover {
  color: var(--pk-kirmizi);
}

.notlar-ana {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.notlar-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px 12px;
}

.notlar-basi h2 {
  margin: 0;
  font-size: 16px;
  font-family: var(--mono);
}

.liste-bos {
  grid-column: 1 / -1;
  color: var(--metin-3);
  font-size: 13px;
  text-align: center;
  padding: 30px 0;
}

.not-kart-alt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 10px;
  font-size: 11px;
  font-family: var(--mono);
  color: var(--metin-3);
}

.not-eylemler {
  display: flex;
  gap: 4px;
}

.not-eylemler button {
  border: none;
  background: none;
  color: var(--metin-3);
  font-size: 11px;
  font-family: var(--mono);
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 6px;
  transition: color var(--gecis), background var(--gecis);
}

.not-eylemler button:hover {
  color: var(--aksan);
  background: var(--zemin-2);
}

/* --- not düzenleyici: orta popup --- */
.not-modal-katman {
  position: fixed;
  inset: 0;
  z-index: 116;
  background: rgba(20, 23, 21, 0.55);
  backdrop-filter: blur(3px);
  display: grid;
  place-items: center;
  padding: 20px;
  animation: sol 130ms ease-out;
}

.not-modal {
  width: min(620px, 100%);
  max-height: min(74vh, 640px);
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  border-radius: 14px;
  box-shadow: var(--golge-3);
  padding: 16px;
  animation: yukselt 160ms ease-out;
}

.not-modal-basi {
  display: flex;
  gap: 8px;
}

.not-ad {
  flex: 1;
  min-width: 0;
  padding: 9px 12px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  outline: none;
  font-weight: 600;
  font-size: 14px;
}

.not-grup {
  padding: 9px 10px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin-2);
  font-size: 13px;
  outline: none;
  cursor: pointer;
}

.not-icerik {
  flex: 1;
  min-height: 200px;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  outline: none;
  resize: none;
  font-family: var(--mono);
  font-size: 13px;
  line-height: 1.6;
}

.not-ad:focus,
.not-icerik:focus,
.not-grup:focus {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.16);
}

.not-modal-alt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.not-modal-sag {
  margin-left: auto;
  display: flex;
  gap: 8px;
}

.dugme-tehlike {
  color: var(--pk-kirmizi);
  border-color: transparent;
}

.dugme-tehlike:hover {
  border-color: var(--pk-kirmizi);
}

.sayfa-basi-eylem {
  display: flex;
  gap: 8px;
}

/* ============ DÜĞMELER ============ */
.dugme {
  padding: 6px 12px;
  border-radius: 9px;
  border: 1px solid var(--kenar-koyu);
  background: var(--yuzey);
  color: var(--metin);
  cursor: pointer;
  font-size: 13px;
  transition: transform 90ms ease, border-color var(--gecis), background var(--gecis);
}

.dugme:hover {
  border-color: var(--aksan);
}

.dugme:active {
  transform: scale(0.97);
}

.dugme-birincil {
  background: var(--pk-jade-700);
  border-color: transparent;
  color: #fff;
}

.dugme-birincil:hover {
  background: var(--pk-jade-800);
  border-color: transparent;
}

.dugme-kucuk {
  padding: 4px 10px;
  font-size: 12px;
}

.dugme-genis {
  width: 100%;
  padding: 11px;
}

.dugme:disabled {
  opacity: 0.6;
  cursor: default;
}

/* ============ KATMANLAR ============ */
.birak-katman,
.lightbox,
.palet-katman {
  position: fixed;
  inset: 0;
  z-index: 95;
  background: rgba(20, 23, 21, 0.55);
  backdrop-filter: blur(3px);
  animation: sol 130ms ease-out;
}

@keyframes sol {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.birak-katman {
  display: grid;
  place-items: center;
  z-index: 110;
}

.birak-kutu {
  padding: 40px 60px;
  border: 2px dashed var(--pk-jade-500);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.06);
  color: #edf1ec;
  font-family: var(--mono);
  font-size: 16px;
}

.lightbox {
  display: grid;
  place-items: center;
  padding: 24px;
  cursor: zoom-out;
  z-index: 115;
}

.lightbox img {
  max-width: 100%;
  max-height: 100%;
  border-radius: var(--yuvarlak);
  box-shadow: var(--golge-3);
}

.palet {
  width: min(560px, calc(100% - 28px));
  margin: 12vh auto 0;
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  border-radius: 14px;
  box-shadow: var(--golge-3);
  overflow: hidden;
  animation: yukselt 160ms ease-out;
}

.palet input {
  width: 100%;
  padding: 14px 16px;
  border: none;
  border-bottom: 1px solid var(--kenar);
  background: none;
  outline: none;
  font-family: var(--mono);
  font-size: 14px;
}

.palet-liste {
  max-height: 46vh;
  overflow-y: auto;
}

.palet-satir {
  padding: 10px 16px;
  display: flex;
  gap: 12px;
  align-items: center;
  cursor: pointer;
  border-bottom: 1px solid var(--zemin-2);
}

.palet-satir:hover,
.palet-satir.secili {
  background: var(--zemin-2);
}

.palet-satir code {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--pk-jade-700);
  background: var(--aksan-yumusak);
  padding: 2px 7px;
  border-radius: 6px;
}

[data-tema='koyu'] .palet-satir code {
  color: var(--aksan);
}

.palet-satir span {
  color: var(--metin-2);
  font-size: 13px;
}

/* --- diyalog (prompt yerine) --- */
.modal-katman {
  position: fixed;
  inset: 0;
  z-index: 118;
  background: rgba(20, 23, 21, 0.55);
  backdrop-filter: blur(3px);
  display: grid;
  place-items: start center;
  padding: 14vh 16px 16px;
  animation: sol 130ms ease-out;
}

.modal {
  width: min(420px, 100%);
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  border-radius: 14px;
  box-shadow: var(--golge-3);
  padding: 18px;
  animation: yukselt 160ms ease-out;
}

.modal-baslik {
  margin: 0 0 12px;
  font-size: 15px;
  font-family: var(--mono);
}

.modal-govde input {
  width: 100%;
  padding: 10px 12px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin);
  outline: none;
  font-family: var(--mono);
  font-size: 13.5px;
}

.modal-govde input:focus {
  border-color: var(--aksan);
  box-shadow: 0 0 0 3px rgba(108, 132, 128, 0.18);
}

.modal-secenek {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 10px 12px;
  margin-bottom: 6px;
  border: 1px solid var(--kenar);
  border-radius: 9px;
  background: var(--yuzey-2);
  color: var(--metin);
  font-size: 13.5px;
  cursor: pointer;
  text-align: left;
  transition: border-color var(--gecis), background var(--gecis);
}

.modal-secenek:hover {
  border-color: var(--aksan);
}

.modal-secenek.secili {
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
  font-weight: 600;
}

.modal-eylem {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 14px;
}

.oturum-liste {
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.oturum-satir {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 11px;
  border-radius: 10px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  cursor: pointer;
  transition: border-color var(--gecis), transform var(--gecis);
}

.oturum-satir:hover {
  transform: translateX(2px);
}

.oturum-satir.aktif {
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
}

.oturum-satir .ad {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.oturum-satir .sil {
  border: none;
  background: none;
  color: var(--metin-3);
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 6px;
}

.oturum-satir .sil:hover {
  color: var(--pk-kirmizi);
  background: rgba(180, 69, 63, 0.1);
}

.oturum-baglam {
  font-family: var(--mono);
  font-size: 10.5px;
  color: var(--metin-3);
  flex: none;
}

.dc-uyari {
  color: var(--pk-turuncu);
  font-weight: 600;
}

.rozet-sabit {
  font-size: 9.5px;
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--aksan);
  border: 1px solid var(--pk-jade-500);
  border-radius: 5px;
  padding: 1px 5px;
}

.bildirim-alani {
  position: fixed;
  left: 50%;
  bottom: calc(80px + var(--alt-guvenli));
  transform: translateX(-50%);
  z-index: 120;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: none;
  max-width: calc(100% - 32px);
}

.bildirim {
  background: rgba(26, 28, 26, 0.94);
  color: #fff;
  padding: 8px 15px;
  border-radius: 999px;
  font-size: 12.5px;
  box-shadow: var(--golge-3);
  animation: yukselt 160ms ease-out;
  text-align: center;
}

/* --- BEKLEYEN MESAJ ŞERİDİ (3. mesaj kaybı vakası) ---
   Gönderilemeyen mesaj artık sessizce düşmüyor; giriş kutusunun hemen üstünde
   duruyor. Turuncu = otomatik denenecek, kırmızı = kullanıcının onayı bekleniyor. */
.kuyruk-serit {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 8px;
  padding: 8px 12px;
  border: 1px solid var(--pk-turuncu);
  border-radius: 10px;
  background: var(--yuzey-2);
  font-size: 12.5px;
  color: var(--metin-2);
  animation: yukselt 160ms ease-out;
}

.kuyruk-serit.elle {
  border-color: var(--pk-kirmizi);
}

.kuyruk-nokta {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--pk-turuncu);
  flex: none;
}

.kuyruk-serit.elle .kuyruk-nokta {
  background: var(--pk-kirmizi);
}

.kuyruk-yazi {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.kuyruk-eylem {
  flex: none;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey);
  color: var(--metin-2);
  font-family: inherit;
  font-size: 11.5px;
  padding: 4px 10px;
  cursor: pointer;
  transition: border-color var(--gecis), color var(--gecis);
}

.kuyruk-eylem:hover {
  border-color: var(--aksan);
  color: var(--metin);
}

.kuyruk-eylem.kuyruk-sil:hover {
  border-color: var(--pk-kirmizi);
  color: var(--pk-kirmizi);
}

@media (max-width: 640px) {
  /* Telefonda tek satıra sığmıyor: yazı üstte, düğmeler altta. */
  .kuyruk-serit {
    flex-wrap: wrap;
  }

  .kuyruk-yazi {
    flex: 1 1 100%;
    white-space: normal;
  }
}

/* --- BİLDİRİM ZİLİ + PANELİ (FAZ 4/3) ---
   Yukarıdaki .bildirim geçici toast'tır; buradakiler köprüde duran KALICI
   bildirim kaydıdır. Zil iki yerde (PC sol nav altı, mobil üst çubuk), panel
   tek: konumunu ekran genişliği seçer. */
.bildirim-zil.var {
  color: var(--metin);
}

.bildirim-sayi {
  position: absolute;
  top: 1px;
  right: 0;
  min-width: 15px;
  height: 15px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--pk-kirmizi);
  border: 1.5px solid var(--yuzey);
  color: #fff;
  font-size: 9.5px;
  font-weight: 600;
  line-height: 12px;
  text-align: center;
  pointer-events: none;
}

@keyframes sallan {
  0%,
  100% {
    transform: rotate(0);
  }
  20% {
    transform: rotate(-12deg);
  }
  40% {
    transform: rotate(10deg);
  }
  60% {
    transform: rotate(-7deg);
  }
  80% {
    transform: rotate(4deg);
  }
}

.bildirim-zil.sallan .ikon {
  animation: sallan 700ms ease-in-out;
  transform-origin: 50% 15%;
}

/* Mobil yerleşim varsayılan: üst çubuktaki zilin altından açılır. */
.bildirim-kutu {
  position: fixed;
  z-index: 110;
  top: calc(var(--ust-guvenli) + 46px);
  right: 8px;
  width: min(320px, calc(100vw - 16px));
  max-height: min(60vh, 440px);
  display: flex;
  flex-direction: column;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak);
  background: var(--yuzey-2);
  box-shadow: var(--golge-3);
  overflow: hidden;
  animation: yukselt 140ms ease-out;
}

.bildirim-kutu-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 8px 8px 13px;
  border-bottom: 1px solid var(--kenar);
  background: var(--yuzey);
  color: var(--metin-2);
  font-size: 12px;
  letter-spacing: 0.02em;
  text-transform: lowercase;
  flex: none;
}

.bildirim-kutu-basi span {
  margin-right: auto;
}

.bildirim-temizle {
  border: none;
  background: none;
  color: var(--metin-3);
  font-family: inherit;
  font-size: 11.5px;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
  padding: 0 2px;
}

.bildirim-temizle:hover {
  color: var(--pk-kirmizi);
}

.bildirim-liste {
  overflow-y: auto;
  overscroll-behavior: contain;
}

.bildirim-satir {
  padding: 10px 13px;
  border-bottom: 1px solid var(--kenar);
  cursor: default;
  transition: background var(--gecis);
}

.bildirim-satir:last-child {
  border-bottom: none;
}

.bildirim-satir:hover {
  background: var(--zemin-2);
}

/* Okunmamış: sol kenarda jade şerit, başlık koyu. */
.bildirim-satir.yeni {
  box-shadow: inset 3px 0 0 var(--aksan);
  cursor: pointer;
}

/* Bir sohbete bağlı bildirim (alarm): dokununca oraya götürür. */
.bildirim-satir.gidilir {
  cursor: pointer;
}

.bildirim-baslik {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--metin-2);
  line-height: 1.35;
}

.bildirim-satir.yeni .bildirim-baslik {
  color: var(--metin);
}

.bildirim-metin {
  margin-top: 2px;
  font-size: 13px;
  color: var(--metin-2);
  line-height: 1.5;
  white-space: pre-wrap;
  word-break: break-word;
}

.bildirim-alt {
  margin-top: 5px;
  font-size: 11px;
  color: var(--metin-3);
  font-family: var(--mono);
}

.bildirim-bos {
  padding: 22px 13px;
  text-align: center;
  color: var(--metin-3);
  font-size: 12.5px;
}

/* ============ MASAÜSTÜ ============ */
@media (min-width: 980px) {
  .alt-sekmeler {
    display: none;
  }

  .durumcubugu {
    display: flex;
  }

  .akis {
    padding: 22px 22px 6px;
  }

  .giris {
    padding: 12px 22px 14px;
  }

  .akisa-don {
    bottom: 116px;
  }

  /* PC'de zil sol nav'ın DİBİNDE; panel de oradan, menünün sağına açılır. */
  .bildirim-kutu {
    top: auto;
    right: auto;
    left: 194px;
    bottom: 12px;
    width: 340px;
    max-height: min(70vh, 520px);
  }
}

/* Orta genişlik: sağ oturum paneli kalkar, sol nav kalır. */
@media (max-width: 1180px) {
  .oturum-paneli {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 96;
    width: min(280px, 82vw);
    box-shadow: var(--golge-3);
    transform: translateX(100%);
    transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
    padding-top: calc(14px + var(--ust-guvenli));
  }

  .oturum-paneli.acik {
    transform: none;
  }

  .uygulama:not(.sohbette) .oturum-paneli {
    display: flex;
  }

  .panel-perde {
    display: block;
    position: fixed;
    inset: 0;
    z-index: 95;
    background: rgba(20, 23, 21, 0.5);
    backdrop-filter: blur(2px);
    animation: sol 130ms ease-out;
  }
}

/* Dar ekran: sol nav yerini üst çubuk + alt sekmelere bırakır. */
@media (max-width: 979px) {
  .yanmenu {
    display: none;
  }

  .ustcubuk {
    display: flex;
  }

  .durumcubugu {
    display: flex;
    font-size: 11px;
  }

  .dc-genis {
    display: none;
  }
}

/* Dar ekranda notlar: grup rayı yatay şeride döner. */
@media (max-width: 700px) {
  .notlar-duzen {
    flex-direction: column;
  }

  .grup-rayi {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--kenar);
    padding: 10px 12px;
  }

  .grup-rayi-basi {
    padding-left: 0;
  }

  .grup-liste {
    flex-direction: row;
    overflow-x: auto;
    gap: 6px;
  }

  .grup-satir {
    flex: none;
    border: 1px solid var(--kenar);
    border-radius: 999px;
    padding: 5px 11px;
  }

  .grup-satir .ikon {
    display: none;
  }
}

/* Telefon: üst çubukta marka metni yerine sadece şimşek durur, yoksa model
   seçici okunmayacak kadar sıkışıyor. */
@media (max-width: 640px) {
  .ustcubuk .marka {
    font-size: 0;
    gap: 0;
  }

  /* Dar ekranda "pikaçu" yazısı font-size:0 ile gizlenip yalnız işaret kalıyor.
     İşaret em'e bağlı olduğu için burada piksel olarak yeniden ölçülmeli,
     yoksa yazıyla birlikte o da sıfıra iner. */
  .ustcubuk .marka .pika-im {
    width: 20px;
    height: 20px;
  }

  .ustcubuk .ym-oturum {
    max-width: 32vw;
  }

  .akis {
    padding: 14px 12px 4px;
  }

  .giris {
    padding: 8px 12px calc(8px + var(--alt-guvenli));
  }

  .kanka-ek-gorsel {
    max-width: 62vw;
  }
}

/* Görsel yüklenemezse bile satır çökmesin. */
.kanka-ek-gorsel {
  min-width: 72px;
  min-height: 48px;
  background: var(--zemin-2);
}

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* PC: dosya düzenleyici paneli */
.pc-duzenle {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.pc-duzenle-alan {
  width: 100%;
  min-height: 46vh;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  font-family: var(--mono);
  font-size: 12.5px;
  line-height: 1.6;
  resize: vertical;
  outline: none;
}

.pc-duzenle-alan:focus {
  border-color: var(--aksan);
}

.pc-duzenle-eylem {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

/* kamera düğmesi yalnız dokunmatik cihazda anlamlı (JS gizliyor, burada da dar
   ekranda ataçla aynı ritimde dursun) */
.giris-kamera .ikon {
  width: 17px;
  height: 17px;
}

.giris-ikon.cozuluyor {
  color: var(--aksan);
  animation: nabiz 1s infinite;
}

/* ---------- HESAP SAYFASI ----------
   İki bölüm: köprü kimliği ve bilgisayar kimliği. Kartlar aynı yükseklikte
   durur (eylem şeridi alta yapışır), yoksa ızgara kırık görünüyor. */
.hesap-govde {
  flex: 1;
  overflow-y: auto;
  padding: 4px 18px 24px;
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.hesap-bolum {
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 13px 15px 15px;
}

.hesap-bolum .hesap-bolum {
  margin-top: 14px;
  background: var(--yuzey-2);
}

.hesap-bolum-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 11px;
}

.hesap-izgara {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(248px, 1fr));
  align-items: stretch;
}

.hesap-kart {
  display: flex;
  flex-direction: column;
  gap: 9px;
  min-width: 0;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  border-radius: var(--yuvarlak-kucuk);
  padding: 12px 13px;
  transition: border-color var(--gecis), box-shadow var(--gecis), transform var(--gecis);
}

.hesap-kart:hover {
  border-color: var(--kenar-koyu);
  box-shadow: var(--golge-2);
  transform: translateY(-1px);
}

.hesap-kart.aktif {
  border-color: var(--aksan);
  background: var(--yuzey);
}

.hesap-kart-basi {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.hesap-ad {
  font-weight: 650;
  font-size: 14.5px;
  color: var(--metin);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.hesap-kart-govde {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.hesap-eposta {
  font-family: var(--mono);
  font-size: 12.5px;
  color: var(--metin-2);
  overflow-wrap: anywhere;
}

.hesap-eposta.bos {
  color: var(--metin-3);
  font-style: italic;
}

.hesap-etiketler {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.rozet {
  font-size: 10px;
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--metin-2);
  border: 1px solid var(--kenar-koyu);
  border-radius: 5px;
  padding: 2px 6px;
  white-space: nowrap;
}

.rozet-jade {
  color: var(--aksan);
  border-color: var(--pk-jade-500);
  background: var(--aksan-yumusak);
}

.rozet-uyari {
  color: var(--pk-turuncu);
  border-color: var(--pk-turuncu);
}

.hesap-alt {
  font-size: 11.5px;
  color: var(--metin-3);
}

/* Eylemler alta yapışır: kartların yüksekliği eşitlensin. */
.hesap-eylem {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: auto;
  padding-top: 4px;
}

/* ---- kısayollar ---- */
.kisayol-liste {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.kisayol {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey);
  padding: 9px 11px;
}

.kisayol-bilgi {
  min-width: 0;
}

.kisayol-ad {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--metin);
}

.kisayol-alt {
  font-size: 11.5px;
  color: var(--metin-3);
  overflow-wrap: anywhere;
}

/* ---- giriş paneli ---- */
.giris-akis {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.giris-durum {
  font-size: 13px;
  color: var(--metin-2);
}

.giris-durum.hata,
.giris-sonuc.hata {
  color: var(--pk-kirmizi);
}

.giris-adim {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13.5px;
  color: var(--metin);
}

.giris-no {
  width: 20px;
  height: 20px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--aksan-yumusak);
  color: var(--aksan);
  font-size: 11px;
  font-weight: 700;
}

.giris-baglanti,
.giris-kod {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: 28px;
}

.giris-baglanti {
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey-2);
  padding: 8px 10px;
}

.giris-link {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--aksan);
  overflow-wrap: anywhere;
  flex: 1;
  min-width: 0;
}

.giris-kod .pc-giris {
  flex: 1;
}

.giris-sonuc {
  font-size: 12.5px;
  color: var(--metin-2);
  margin-left: 28px;
}

@media (max-width: 640px) {
  /* altı sekme: yazılar sıkışmasın */
  .alt-sekme {
    font-size: 10px;
    padding-left: 2px;
    padding-right: 2px;
    min-width: 0;
  }

  .hesap-govde {
    padding: 4px 12px 18px;
  }

  .giris-baglanti,
  .giris-kod,
  .giris-sonuc {
    margin-left: 0;
  }
}

/* ---------- BİLGİSAYAR SAYFASI v2 (araç sekmeleri) ---------- */
.pc-ust {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.pc-cip.bagli .pc-nokta {
  background: var(--aksan);
  box-shadow: 0 0 0 3px var(--aksan-yumusak);
}

/* tek işlik araçlar (ekran, komut, kontrol) */
.pc-tekil {
  display: flex;
  flex-direction: column;
  gap: 10px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 14px 16px;
}

/* ---------- DOSYA YÖNETİCİSİ ---------- */
.dy {
  display: grid;
  grid-template-columns: 190px 1fr;
  gap: 12px;
  align-items: stretch;
  flex: 1;
  min-height: 0;
}

.dy-ray {
  display: flex;
  flex-direction: column;
  /* Yan ray dosya listesiyle aynı boyda dursun: `align-self: start` yüzünden
     kısa kalıyor ve altında koca boşluk kalıyordu (29 Tem çekimi). */
  align-self: stretch;
  gap: 2px;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 12px 10px;
  position: sticky;
  top: 0;
}

.dy-ray .kucuk-baslik {
  padding: 8px 8px 4px;
}

.dy-ray .kucuk-baslik:first-child {
  padding-top: 0;
}

.dy-ray-oge {
  display: flex;
  align-items: center;
  gap: 8px;
  border: none;
  background: none;
  border-radius: 7px;
  padding: 7px 8px;
  font-size: 13px;
  color: var(--metin-2);
  cursor: pointer;
  text-align: left;
  transition: background var(--gecis), color var(--gecis);
}

.dy-ray-oge .ikon {
  width: 15px;
  height: 15px;
  flex: none;
  color: var(--metin-3);
}

.dy-ray-oge:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.dy-ana {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  overflow: hidden;
  min-width: 0;
}

.dy-yol {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 9px 12px;
  border-bottom: 1px solid var(--kenar);
  background: var(--yuzey-2);
  overflow-x: auto;
  white-space: nowrap;
}

.dy-yukari {
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: 7px;
  padding: 4px 6px;
  margin-right: 6px;
  cursor: pointer;
  color: var(--metin-2);
  display: inline-flex;
  flex: none;
}

.dy-yukari:hover {
  border-color: var(--aksan);
  color: var(--aksan);
}

.dy-yukari .ikon {
  width: 15px;
  height: 15px;
}

.dy-parca {
  border: none;
  background: none;
  border-radius: 6px;
  padding: 4px 7px;
  font-size: 12.5px;
  font-family: var(--mono);
  color: var(--metin-2);
  cursor: pointer;
}

.dy-parca:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.dy-ayrac {
  color: var(--metin-3);
  font-size: 12px;
}

.dy-arac {
  display: flex;
  gap: 8px;
  padding: 9px 12px;
  border-bottom: 1px solid var(--kenar);
}

.dy-ara {
  flex: 1;
  min-width: 0;
  border: 1px solid var(--kenar);
  border-radius: 8px;
  background: var(--yuzey-2);
  padding: 7px 10px;
  font-size: 13px;
  color: var(--metin);
  font-family: inherit;
  outline: none;
}

.dy-ara:focus {
  border-color: var(--aksan);
}

.dy-tablo {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 240px;
  overflow-y: auto;
}

.dy-basi,
.dy-satir {
  display: grid;
  grid-template-columns: 1fr 92px 132px 64px;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
}

.dy-basi {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--yuzey);
  border-bottom: 1px solid var(--kenar);
  padding-top: 7px;
  padding-bottom: 7px;
}

.dy-basi button {
  border: none;
  background: none;
  padding: 0;
  text-align: left;
  font-size: 10.5px;
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--metin-3);
  cursor: pointer;
}

.dy-basi button.etkin {
  color: var(--aksan);
}

.dy-satir {
  border-bottom: 1px solid var(--zemin-2);
  min-height: 38px;
}

.dy-satir:hover {
  background: var(--zemin);
}

.dy-satir.gizli .dy-ad {
  opacity: 0.62;
}

.dy-ad {
  display: flex;
  align-items: center;
  gap: 9px;
  border: none;
  background: none;
  padding: 8px 0;
  font-size: 13.5px;
  color: var(--metin);
  cursor: pointer;
  text-align: left;
  min-width: 0;
}

.dy-ad span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dy-ikon {
  width: 16px;
  height: 16px;
  flex: none;
  color: var(--metin-3);
}

.tur-klasor .dy-ikon {
  color: var(--aksan);
}

.tur-klasor .dy-ad {
  font-weight: 600;
}

.tur-kod .dy-ikon {
  color: var(--pk-mavi);
}

.tur-gorsel .dy-ikon {
  color: var(--pk-turuncu);
}

.tur-arsiv .dy-ikon {
  color: var(--pk-sari);
}

.dy-boyut,
.dy-tarih {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-3);
  white-space: nowrap;
}

.dy-eylem {
  display: flex;
  gap: 3px;
  justify-content: flex-end;
  opacity: 0;
  transition: opacity var(--gecis);
}

.dy-satir:hover .dy-eylem,
.dy-satir:focus-within .dy-eylem {
  opacity: 1;
}

.dy-mini {
  border: 1px solid transparent;
  background: none;
  border-radius: 6px;
  padding: 4px;
  cursor: pointer;
  color: var(--metin-3);
  display: inline-flex;
}

.dy-mini .ikon {
  width: 14px;
  height: 14px;
}

.dy-mini:hover {
  border-color: var(--kenar);
  color: var(--metin);
  background: var(--yuzey);
}

.dy-mini.tehlike:hover {
  color: var(--pk-kirmizi);
  border-color: var(--pk-kirmizi);
}

.dy-alt {
  padding: 9px 12px;
  font-size: 11.5px;
  color: var(--metin-3);
  border-top: 1px solid var(--kenar);
  background: var(--yuzey-2);
  position: sticky;
  bottom: 0;
}

/* ---------- OTURUM LİSTESİ ---------- */
.ot {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.ot-suzgec {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  border: 1px solid var(--kenar);
  background: var(--yuzey);
  border-radius: var(--yuvarlak);
  padding: 10px 12px;
}

.ot-ara,
.ot-proje {
  border: 1px solid var(--kenar);
  border-radius: 8px;
  background: var(--yuzey-2);
  padding: 7px 10px;
  font-size: 13px;
  font-family: inherit;
  color: var(--metin);
  outline: none;
}

.ot-ara {
  flex: 1;
  min-width: 150px;
}

.ot-ara:focus,
.ot-proje:focus {
  border-color: var(--aksan);
}

.ot-proje {
  max-width: 260px;
}

.ot-onay {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  color: var(--metin-2);
  cursor: pointer;
  user-select: none;
}

.ot-onay input {
  accent-color: var(--aksan);
}

.ot-sayac {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-3);
}

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

.ot-kart {
  border: 1px solid var(--kenar);
  border-left: 3px solid var(--kenar-koyu);
  background: var(--yuzey);
  border-radius: var(--yuvarlak-kucuk);
  padding: 11px 13px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  transition: border-color var(--gecis), box-shadow var(--gecis);
}

.ot-kart:hover {
  box-shadow: var(--golge-2);
}

.ot-kart.canli {
  border-left-color: var(--aksan);
}

.ot-basi {
  display: flex;
  align-items: center;
  gap: 8px;
}

.ot-baslik {
  font-size: 14px;
  font-weight: 600;
  color: var(--metin);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.ot-zaman {
  font-size: 11.5px;
  color: var(--metin-3);
  white-space: nowrap;
  flex: none;
}

.ot-yol {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.ot-son {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--metin-3);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.ot-alt {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 2px;
}

.ot-etiket {
  display: flex;
  gap: 5px;
  flex-wrap: wrap;
}

.ot-eylem {
  display: flex;
  gap: 6px;
  margin-left: auto;
}

.ot-daha {
  display: flex;
  justify-content: center;
  padding: 6px 0 2px;
}

.pc-tekil .pc-ekran {
  max-height: 70vh;
  object-fit: contain;
}

@media (max-width: 900px) {
  .dy {
    grid-template-columns: 1fr;
  }

  .dy-ray {
    position: static;
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    padding: 8px 10px;
    gap: 5px;
  }

  .dy-ray .kucuk-baslik {
    display: none;
  }

  .dy-ray-oge {
    flex: none;
    border: 1px solid var(--kenar);
    border-radius: 999px;
    padding: 6px 11px;
  }

  .dy-basi,
  .dy-satir {
    grid-template-columns: 1fr 78px 56px;
  }

  .dy-tarih {
    display: none;
  }

  .dy-eylem {
    opacity: 1;
  }

  .pc-kartlar {
    padding: 4px 12px 18px;
  }

  .ot-sayac {
    margin-left: 0;
    width: 100%;
  }

  .ot-proje {
    max-width: none;
    flex: 1;
  }
}

/* ---------- BİLGİSAYAR: TEK BAŞLIK ŞERİDİ (v3) ----------
   Sayfa adı, araç sekmeleri ve makine durumu aynı satırda; altta boş gri şerit yok. */
.pc-basi {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 10px 18px 12px;
  width: 100%;
  border-bottom: 1px solid var(--kenar);
  flex: none;
}

.pc-basi h2 {
  margin: 0;
  font-size: 16px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--metin);
  flex: none;
}

.pc-basi-sag {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex: none;
}

/* Sekmeler içeriği kadar yer kaplar, şerit ekranı boydan boya germez */
.pc-arac-serit {
  display: inline-flex;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--kenar);
  border-radius: 10px;
  background: var(--zemin-2);
  flex: 0 1 auto;
  min-width: 0;
  overflow-x: auto;
}

.pc-arac {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: none;
  background: none;
  border-radius: 7px;
  padding: 6px 13px;
  font-size: 13px;
  color: var(--metin-2);
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--gecis), color var(--gecis);
}

.pc-arac .ikon {
  width: 15px;
  height: 15px;
}

.pc-arac:hover {
  color: var(--metin);
}

.pc-arac.aktif {
  background: var(--yuzey);
  color: var(--metin);
  font-weight: 600;
  box-shadow: var(--golge-1);
}

.pc-cip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey);
  padding: 5px 11px 5px 9px;
  font-size: 12.5px;
  font-family: var(--mono);
  color: var(--metin-2);
}

/* Araç alanı boş kalan ekranı doldurur: yarım sayfa beyazlık kalmasın */
/* Kart ekranı boydan boya kaplayınca içi boş çerçeve gibi duruyordu: doğal
   yükseklikte dursun, çıktı kutusu da makul bir tavanla sınırlansın. */
.pc-tekil {
  flex: none;
  min-height: 240px;
}

.pc-cikti {
  flex: none;
  min-height: 190px;
  max-height: 52vh;
}

/* ---------- OTURUM DÖKÜMÜ ---------- */
.dk {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.dk-basi {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--kenar);
  margin-bottom: 4px;
}

.dk-yol {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--metin-2);
  overflow-wrap: anywhere;
}

.dk-bilgi {
  font-size: 11.5px;
  color: var(--metin-3);
}

.dk-mesaj {
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey);
  padding: 10px 12px;
}

.dk-mesaj.ben {
  background: var(--yuzey-2);
  border-left: 3px solid var(--aksan);
}

.dk-mesaj.claude {
  border-left: 3px solid var(--kenar-koyu);
}

.dk-ust {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 5px;
}

.dk-kim {
  font-size: 10.5px;
  font-family: var(--mono);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--metin-3);
}

.dk-mesaj.ben .dk-kim {
  color: var(--aksan);
  font-weight: 700;
}

.dk-saat {
  font-size: 11px;
  color: var(--metin-3);
  font-family: var(--mono);
}

.dk-metin {
  font-size: 13.5px;
  line-height: 1.62;
  color: var(--metin);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

@media (max-width: 900px) {
  .pc-basi {
    flex-wrap: wrap;
    gap: 10px;
    padding: 8px 12px 10px;
  }

  .pc-basi h2 {
    font-size: 15px;
  }

  .pc-arac-serit {
    order: 3;
    width: 100%;
    flex: 1 0 100%;
  }

  .pc-arac {
    flex: 1;
    justify-content: center;
    padding: 7px 8px;
  }
}

.pc-cikti.bos {
  color: var(--metin-3);
  font-style: italic;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ---------- 29 Tem GÖRSEL DENETİM DÜZELTMELERİ ---------- */

/* Telefonda dosya listesi: tarih sütunu gizliyken başlığı duruyordu, sütunlar
   kayıyordu. Eylem sütunu da dört ikon için dardı. */
@media (max-width: 900px) {
  .dy-basi,
  .dy-satir {
    grid-template-columns: 1fr 62px 106px;
  }

  .dy-basi-tarih {
    display: none;
  }

  .dy-mini {
    padding: 4px 3px;
  }
}

/* Telefonda durum satırları: değer sağa yaslıyken uzun metin kenara yapışıp
   kesik görünüyordu (29 Tem denetimi). Dar ekranda etiket üstte, değer altta. */
@media (max-width: 640px) {
  .durum-satir {
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
  }

  .durum-deger {
    text-align: left;
    width: 100%;
  }

  .durum-bolum {
    padding: 12px 13px;
  }
}

/* Boş liste bloğu: ikon + başlık + yönlendirme */
.liste-bos {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 46px 16px;
}

.liste-bos .ikon {
  width: 28px;
  height: 28px;
  color: var(--kenar-koyu);
}

.liste-bos-baslik {
  margin: 0;
  font-size: 14px;
  color: var(--metin-2);
  font-weight: 600;
}

.liste-bos-alt {
  margin: 0;
  font-size: 12.5px;
  color: var(--metin-3);
}

/* ---------- PIN EKRANI: iOS kilit ekranı ruhu (bulgu 19) ----------
   Üstte dolan noktalar, altta büyük yuvarlak tuşlar, basışta hafif çöküş,
   yanlış PIN'de noktalar titrer. Renkler paletten (taş zemin + jade aksan). */
.perde-kart {
  width: min(340px, 100%);
}

.pin-noktalar {
  gap: 20px;
  margin-bottom: 34px;
}

.pin-noktalar span {
  width: 13px;
  height: 13px;
  border-width: 1.5px;
}

.pin-noktalar.sarsil {
  animation: pin-sarsinti 420ms ease;
}

@keyframes pin-sarsinti {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-9px); }
  40% { transform: translateX(8px); }
  60% { transform: translateX(-5px); }
  80% { transform: translateX(3px); }
}

.tus-takimi {
  gap: 18px 22px;
  justify-items: center;
}

.tus {
  width: 68px;
  height: 68px;
  border-radius: 50%;
  font-size: 25px;
  font-weight: 500;
  letter-spacing: 0.01em;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(6px);
  transition: transform 90ms ease, background 120ms ease;
}

.tus:active {
  transform: scale(0.92);
  background: rgba(255, 255, 255, 0.2);
}

.tus-bos {
  background: none;
  border-color: transparent;
}

.tus-sil {
  font-size: 20px;
  background: none;
  border-color: transparent;
}

.tus-sil:active {
  background: rgba(255, 255, 255, 0.12);
}

.perde-ipucu {
  opacity: 0.55;
  font-size: 11.5px;
  margin-top: 22px;
}

/* Telefonda tuşlar biraz daha büyük, ekranın altına yakın dursun */
@media (max-width: 640px) {
  .tus {
    width: 72px;
    height: 72px;
    font-size: 26px;
  }

  .tus-takimi {
    gap: 16px 20px;
  }
}

/* Klavye açılınca uygulama yüksekliği görünür alana uysun (bulgu 14) */
.uygulama {
  height: 100dvh;
}

@supports not (height: 100dvh) {
  .uygulama {
    height: 100%;
  }
}


/* Silme tuşu: karakter yerine ikon (bazı cihazlarda ⌫ kutu olarak çıkıyordu) */
.tus-sil .ikon {
  width: 26px;
  height: 26px;
  stroke-width: 1.6;
}

/* Telefonda kilit ekranı kart değil, tam ekran olsun (iOS hissi) */
@media (max-width: 640px) {
  .perde {
    padding: 0;
  }

  #kilit .perde-kart {
    border: none;
    background: none;
    box-shadow: none;
    width: 100%;
    max-width: 360px;
    padding: 0 20px;
  }

  #kilit .marka-buyuk {
    margin-bottom: 6px;
  }
}

/* Durdurma düğmesi gönderin yanında: koşarken de mesaj yazılabildiği için ikisi
   birlikte durur (gönder jade, durdur kırmızı çerçeveli). */
.giris-kes {
  border: 1px solid var(--pk-kirmizi);
  color: var(--pk-kirmizi);
  background: none;
}

.giris-kes:hover {
  background: var(--pk-kirmizi);
  color: #fff;
}

/* Kuyrukta bekleyen tur: animasyon ve sayaç yok, sakin rozet (bulgu 23) */
.tur-durum.bekliyor .nokta {
  animation: none;
  background: var(--kenar-koyu);
}

.tur-durum.bekliyor {
  color: var(--metin-3);
  font-size: 11.5px;
}

/* ---------- ZAMANLANMIŞ İŞLER (durum sayfası) ---------- */
.zaman-liste {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 8px 0 12px;
}

.zaman-satir {
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey-2);
  padding: 9px 12px;
}

.zaman-satir.pasif {
  opacity: 0.55;
}

.zaman-saat {
  font-family: var(--mono);
  font-size: 15px;
  font-weight: 700;
  color: var(--aksan);
  flex: none;
}

.zaman-orta {
  flex: 1;
  min-width: 0;
}

.zaman-ad {
  font-size: 13.5px;
  color: var(--metin);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.zaman-metin {
  font-size: 11.5px;
  color: var(--metin-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.zaman-eylem {
  display: flex;
  gap: 6px;
  flex: none;
}

.zaman-ekle {
  display: flex;
  gap: 8px;
}

.zaman-saat-giris {
  width: 84px;
  flex: none;
  text-align: center;
  font-family: var(--mono);
}

.zaman-ekle .pc-giris {
  flex: 1;
}

@media (max-width: 640px) {
  .zaman-satir {
    flex-wrap: wrap;
    gap: 8px;
  }

  .zaman-orta {
    flex: 1 0 60%;
  }

  .zaman-ekle {
    flex-wrap: wrap;
  }

  .zaman-ekle .pc-giris {
    flex: 1 0 100%;
  }
}

/* Oturum listesi durum göstergesi (bulgu 27): koşuyor · sırada · yeni cevap */
.oturum-durum {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
  background: transparent;
}

.oturum-durum.kosuyor {
  background: var(--aksan);
  animation: nabiz 1.6s ease-in-out infinite;
}

.oturum-durum.bekliyor {
  background: var(--kenar-koyu);
}

.oturum-durum.okunmamis {
  background: var(--pk-sari);
}

/* ================= PC YERLEŞİMİ v4 (bulgu 30) =================
   Şikâyet: "PC görünümü 2011 sitesi gibi; mobil beğenildi, referans o."
   Mobilin sevilen yanı: yüzeyler ayrışıyor, her şey kart, boşluk dengeli,
   içerik genişliği ekranı kullanıyor. Aynı karakteri PC'ye taşıyoruz:
   sayfa zemini nötr, paneller yüzey kartı, sohbet sütunu geniş, tipografi
   biraz daha iri. Palet ve terminal hissi TASARIM.md'deki gibi kalıyor. */

@media (min-width: 980px) {
  /* Zemin: paneller artık düz beyaz duvar değil, zemin üstünde yüzey */
  .uygulama {
    background: var(--zemin);
    gap: 10px;
    padding: 10px;
  }

  .yanmenu,
  .oturum-paneli,
  .ana {
    border-radius: 14px;
    border: 1px solid var(--kenar);
    background: var(--yuzey);
    overflow: hidden;
  }

  .yanmenu {
    border-right: 1px solid var(--kenar);
    width: 208px;
    padding: 16px 12px 12px;
    gap: 14px;
  }

  .oturum-paneli {
    border-left: 1px solid var(--kenar);
    width: 268px;
    padding: 16px 12px;
  }

  .ana {
    display: flex;
    flex-direction: column;
    min-width: 0;
  }

  /* Sohbet sütunu ekranı kullansın: 820px dar kalıyordu, kenarlarda geniş boşluk vardı */
  .akis {
    padding: 22px 28px 8px;
  }

  .tur,
  .giris-ic,
  .ek-cipler,
  .hosgeldin {
    max-width: 1040px;
    margin-left: auto;
    margin-right: auto;
  }

  .giris {
    padding: 14px 28px 16px;
  }

  /* Sol nav: üstte oturum kartı, ortada gezinme, altta ayar kartı — boşluk dengeli */
  .ym-ust {
    padding-bottom: 12px;
    border-bottom: 1px solid var(--kenar);
  }

  .ym-sekmeler {
    gap: 3px;
  }

  .ym-sekme {
    border-radius: 9px;
    padding: 9px 11px;
    font-size: 13.5px;
  }

  .ym-secici {
    margin-top: auto;
    border: 1px solid var(--kenar);
    border-radius: 11px;
    background: var(--yuzey-2);
    padding: 10px;
    gap: 8px;
  }

  .ym-alt {
    border-top: 1px solid var(--kenar);
    padding-top: 10px;
  }

  /* Oturum listesi: satır değil kart */
  .oturum-satir {
    border: 1px solid var(--kenar);
    background: var(--yuzey-2);
    border-radius: 11px;
    padding: 10px 11px;
    gap: 9px;
    transition: border-color var(--gecis), background var(--gecis), transform var(--gecis);
  }

  .oturum-satir:hover {
    transform: translateY(-1px);
    border-color: var(--kenar-koyu);
  }

  .oturum-satir.aktif {
    border-color: var(--aksan);
    background: var(--aksan-yumusak);
  }

  .oturum-liste {
    gap: 7px;
  }

  /* Alt durum çubuğu: hata ayıklama şeridi gibi durmasın */
  .durumcubugu {
    border-top: 1px solid var(--kenar);
    background: var(--yuzey-2);
    padding: 7px 28px;
    font-size: 11.5px;
    letter-spacing: 0.01em;
  }
}

/* Çok geniş ekranda sütun daha da açılır ama okunabilirlik korunur */
@media (min-width: 1600px) {
  .tur,
  .giris-ic,
  .ek-cipler,
  .hosgeldin {
    max-width: 1160px;
  }
}

/* ---------- REPO ARŞİVİ (30 Tem: gece taraması + elle ekleme) ----------
   Kart ızgarası notlarla aynı ruhta ama bilgi yoğun: üstte ad + kategori,
   ortada Türkçe amaç, altta yıldız/dil/ekleyen ve puan mührü. */
.repo-basi {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px 8px;
  flex: none;
}

.repo-basi-sol h2 {
  margin: 0;
  font-size: 16px;
  font-family: var(--mono);
  font-weight: 700;
}

.repo-alt {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 3px;
  font-size: 11.5px;
  color: var(--metin-3);
}

.repo-alt-ayrac {
  opacity: 0.5;
}

.repo-alt-bilgi {
  color: var(--aksan);
}

.repo-basi-sag {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: none;
}

/* --- ekleme/düzenleme formu --- */
.repo-form {
  flex: none;
  margin: 0 18px 10px;
  padding: 12px 14px 13px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak);
  background: var(--yuzey);
  box-shadow: var(--golge-1);
  animation: repo-form-in 160ms cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes repo-form-in {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }
}

.repo-form-basi {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 10px;
}

.repo-form-ipucu {
  margin-left: auto;
  font-size: 11px;
  color: var(--metin-3);
}

.repo-form-govde {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px 12px;
}

.repo-alan {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.repo-alan-genis {
  grid-column: 1 / -1;
}

.repo-url-satir {
  display: flex;
  gap: 8px;
  align-items: center;
}

.repo-metin {
  font-family: var(--yazi);
  font-size: 13px;
  line-height: 1.55;
  resize: vertical;
  min-height: 62px;
}

.repo-form-alt {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 11px;
}

/* --- arama şeridi + kategori çipleri --- */
.repo-serit {
  flex: none;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 2px 18px 8px;
}

.repo-arama {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  max-width: 420px;
  padding: 0 11px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey-2);
  transition: border-color var(--gecis);
}

.repo-arama:focus-within {
  border-color: var(--aksan);
}

.repo-arama .ikon {
  width: 15px;
  height: 15px;
  color: var(--metin-3);
  flex: none;
}

.repo-arama input {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: none;
  font: inherit;
  font-size: 13px;
  color: var(--metin);
  padding: 8px 0;
}

.repo-sayac {
  font-size: 11.5px;
  color: var(--metin-3);
  white-space: nowrap;
  margin-left: auto;
}

.repo-cipler {
  flex: none;
  display: flex;
  gap: 6px;
  padding: 0 18px 10px;
  overflow-x: auto;
  scrollbar-width: none;
}

.repo-cipler::-webkit-scrollbar {
  display: none;
}

.repo-cip {
  flex: none;
  padding: 4px 11px;
  border: 1px solid var(--kenar);
  border-radius: 999px;
  background: var(--yuzey-2);
  color: var(--metin-2);
  font-size: 11.5px;
  cursor: pointer;
  white-space: nowrap;
  transition: background var(--gecis), border-color var(--gecis), color var(--gecis);
}

.repo-cip:hover {
  border-color: var(--kenar-koyu);
  color: var(--metin);
}

.repo-cip.aktif {
  background: var(--aksan-yumusak);
  border-color: var(--aksan);
  color: var(--aksan);
  font-weight: 600;
}

/* --- kart ızgarası --- */
.repo-izgara {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 0 18px 22px;
  width: 100%;
}

.repo-kartlar {
  display: grid;
  gap: 11px;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  align-content: start;
  /* Kartlar kendi boyunda dursun: amaç metinleri farklı uzunlukta, satırın en
     uzun kartına gerilince kısa kartların altı boş kalıyordu. */
  align-items: start;
}

.repo-kart {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 13px 15px 11px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak);
  background: var(--yuzey);
  transition: transform var(--gecis), border-color var(--gecis), box-shadow var(--gecis);
}

.repo-kart:hover {
  transform: translateY(-2px);
  border-color: var(--aksan);
  box-shadow: var(--golge-2);
}

.rk-ust {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.rk-baslik {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  flex: 1;
  min-width: 0;
}

.rk-ad {
  font-size: 14px;
  font-weight: 700;
  font-family: var(--mono);
  color: var(--metin);
  text-decoration: none;
  word-break: break-word;
}

.rk-ad:hover {
  color: var(--aksan);
  text-decoration: underline;
}

.rk-kategori {
  padding: 1px 8px;
  border: 1px solid var(--aksan);
  border-radius: 999px;
  background: var(--aksan-yumusak);
  color: var(--aksan);
  font-size: 10px;
  font-weight: 600;
  white-space: nowrap;
}

.rk-eylem {
  display: flex;
  gap: 3px;
  flex: none;
  opacity: 0;
  transition: opacity var(--gecis);
}

.repo-kart:hover .rk-eylem,
.repo-kart:focus-within .rk-eylem {
  opacity: 1;
}

/* Dokunmatikte hover YOK: telefonda düzenle/sil düğmeleri hiç görünmezdi. */
@media (hover: none) {
  .rk-eylem {
    opacity: 1;
  }
}

.rk-dugme {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 1px solid transparent;
  border-radius: var(--yuvarlak-kucuk);
  background: none;
  color: var(--metin-3);
  cursor: pointer;
  transition: background var(--gecis), color var(--gecis), border-color var(--gecis);
}

.rk-dugme .ikon {
  width: 14px;
  height: 14px;
}

.rk-dugme:hover {
  background: var(--zemin-2);
  color: var(--metin);
}

.rk-sil:hover {
  border-color: var(--pk-kirmizi);
  color: var(--pk-kirmizi);
  background: none;
}

.rk-amac {
  margin: 0;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--metin-2);
  cursor: pointer;
  display: -webkit-box;
  -webkit-line-clamp: 5;
  line-clamp: 5;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.rk-amac.acik {
  -webkit-line-clamp: unset;
  line-clamp: unset;
}

.rk-neden {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.5;
  color: var(--metin-3);
  padding-left: 9px;
  border-left: 2px solid var(--kenar-koyu);
}

.rk-neden-etiket {
  color: var(--metin-2);
  font-weight: 600;
}

.rk-etiketler {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}

.rk-etiket {
  padding: 2px 7px;
  border: none;
  border-radius: 999px;
  background: var(--zemin-2);
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 10.5px;
  cursor: pointer;
  transition: background var(--gecis), color var(--gecis);
}

.rk-etiket:hover {
  background: var(--aksan-yumusak);
  color: var(--aksan);
}

.rk-alt {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: auto;
  padding-top: 9px;
  border-top: 1px solid var(--kenar);
}

.rk-meta {
  flex: 1;
  min-width: 0;
  font-size: 10.5px;
  color: var(--metin-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rk-puan {
  flex: none;
  padding: 2px 8px;
  border: 1px solid var(--kenar-koyu);
  border-radius: 999px;
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 700;
  color: var(--metin-2);
}

.rk-puan.yuksek {
  border-color: var(--aksan);
  background: var(--aksan-yumusak);
  color: var(--aksan);
}

.rk-puan.dusuk {
  color: var(--metin-3);
  opacity: 0.75;
}

/* Dar ekran: form tek sütuna iner, başlık düğmeleri alta geçer */
@media (max-width: 700px) {
  .repo-form-govde {
    grid-template-columns: minmax(0, 1fr);
  }

  .repo-basi {
    flex-direction: column;
    align-items: stretch;
    gap: 9px;
  }

  .repo-basi-sag {
    justify-content: flex-end;
  }

  .repo-kartlar {
    grid-template-columns: minmax(0, 1fr);
  }

  .repo-serit {
    padding-bottom: 6px;
  }
}

/* ---------- PIN BEKLEME KİLİDİ (30 Tem: 5 yanlış → 60 sn) ----------
   Tuş takımı görünür kalır ama sönük ve tıklanamaz: "bozuk" değil "beklemede"
   hissi versin. Klavye yolu JS'te ayrıca kesiliyor. */
.tus-takimi.kilitli {
  opacity: 0.35;
  pointer-events: none;
  filter: grayscale(1);
  transition: opacity var(--gecis), filter var(--gecis);
}

/* HESAP BAĞLI MI (2 Ağu): kart tek bakışta durumunu söyler.
   Yeşil "bağlı" · kırmızı "bağlantı düştü" · rozetsiz "giriş yapılmamış". */
.rozet-kirmizi {
  border-color: var(--pk-kirmizi);
  background: rgba(180, 69, 63, 0.12);
  color: var(--pk-kirmizi);
  font-weight: 700;
}

.rozet-jade-soluk {
  border-color: var(--pk-jade-500);
  background: var(--aksan-yumusak);
  color: var(--pk-jade-800);
}

[data-tema='koyu'] .rozet-jade-soluk {
  color: var(--aksan);
}

.hesap-kart-dustu {
  border-color: var(--pk-kirmizi);
  box-shadow: 0 0 0 1px rgba(180, 69, 63, 0.18);
}

.hesap-dusme {
  margin-top: 6px;
  font-size: 11px;
  line-height: 1.5;
  color: var(--pk-kirmizi);
  overflow-wrap: anywhere;
}

/* Ekran tazelenemedi uyarısı (1 Ağu vakası): geçmiş/canlı isteği patlayınca
   sohbet paneli sessizce boş kalıyordu; artık sebep ve "yeniden dene" görünür. */
.sohbet-uyari {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 10px 0;
  padding: 10px 13px;
  border: 1px solid var(--pk-sari);
  background: rgba(234, 180, 74, 0.1);
  border-radius: 12px;
  font-size: 12.5px;
  color: var(--metin-2);
}

.sohbet-uyari .dugme {
  margin-left: auto;
}

/* ============ GÜN DETAY ÇEKMECESİ ============ */
/* Grafikte/takvimde bir güne tıklanınca açılır. PC'de sağdan çekmece,
   telefonda alttan yaprak (bottom sheet). Kullanıcı isteği 1 Ağu:
   "bir güne tıkladığımda diğer tüm detayları görebileyim". */
.gd-katman {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: rgba(20, 23, 21, 0);
  display: flex;
  justify-content: flex-end;
  transition: background 220ms ease;
}

.gd-katman.acik {
  background: rgba(20, 23, 21, 0.34);
}

.gd-panel {
  width: min(440px, 100%);
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--zemin);
  border-left: 1px solid var(--kenar);
  box-shadow: var(--golge-3);
  transform: translateX(100%);
  transition: transform 260ms cubic-bezier(0.22, 0.85, 0.3, 1);
  padding-top: var(--ust-guvenli);
  padding-bottom: var(--alt-guvenli);
}

.gd-katman.acik .gd-panel {
  transform: translateX(0);
}

.gd-basi {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 15px 16px 12px;
  border-bottom: 1px solid var(--kenar);
  background: linear-gradient(180deg, var(--yuzey) 0%, var(--zemin) 100%);
}

.gd-baslik-kutu {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.gd-baslik {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.gd-alt {
  font-size: 11.5px;
  color: var(--metin-3);
  font-family: var(--mono);
}

.gd-eylem {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 4px;
}

.gd-gez,
.gd-kapat {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin-2);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  display: grid;
  place-items: center;
  transition: background var(--gecis), color var(--gecis), border-color var(--gecis);
}

.gd-gez:hover,
.gd-kapat:hover {
  background: var(--aksan-yumusak);
  border-color: var(--aksan);
  color: var(--metin);
}

.gd-kapat {
  font-size: 20px;
  margin-left: 6px;
}

.gd-govde {
  flex: 1;
  overflow-y: auto;
  padding: 14px 16px 26px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.gd-yukleniyor,
.gd-bos {
  padding: 34px 0;
  text-align: center;
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 12.5px;
}

.gd-bos-baslik {
  font-size: 14px;
  color: var(--metin-2);
  margin-bottom: 4px;
}

.gd-rozetler {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.gd-rozet {
  font-size: 11.5px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid var(--kenar);
  background: var(--yuzey-2);
  color: var(--metin-2);
}

.gd-rozet.iyi {
  border-color: var(--pk-jade-500);
  background: var(--aksan-yumusak);
  color: var(--pk-jade-800);
}

[data-tema='koyu'] .gd-rozet.iyi {
  color: var(--aksan);
}

.gd-rozet.orta {
  border-color: var(--pk-sari);
  background: rgba(234, 180, 74, 0.14);
  color: var(--pk-turuncu);
}

.gd-rozet.kotu {
  border-color: var(--pk-kirmizi);
  background: rgba(180, 69, 63, 0.12);
  color: var(--pk-kirmizi);
}

.gd-rozet.bilgi {
  border-color: var(--pk-mavi);
  background: rgba(74, 107, 138, 0.12);
  color: var(--pk-mavi);
}

.gd-sayilar {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 8px;
}

.gd-sayi {
  border: 1px solid var(--kenar);
  border-radius: 12px;
  background: var(--yuzey);
  padding: 9px 11px;
}

.gd-sayi-etiket {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.09em;
  color: var(--metin-3);
  font-weight: 700;
}

.gd-sayi-satir {
  display: flex;
  align-items: baseline;
  gap: 4px;
  margin-top: 1px;
}

.gd-sayi-deger {
  font-family: var(--mono);
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}

.gd-sayi-birim {
  font-size: 11px;
  color: var(--metin-3);
}

.gd-sayi-ek {
  display: block;
  font-size: 10.5px;
  color: var(--metin-3);
  margin-top: 2px;
}

.gd-sayi-ek.tamam {
  color: var(--pk-jade-600);
}

[data-tema='koyu'] .gd-sayi-ek.tamam {
  color: var(--aksan);
}

.gd-sayi-ek.asim {
  color: var(--pk-turuncu);
}

.gd-sayi-ek.eksik {
  color: var(--pk-mavi);
}

.gd-bolum {
  border-top: 1px solid var(--kenar);
  padding-top: 12px;
}

.gd-bolum-basi {
  margin: 0 0 9px;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--metin-3);
  font-weight: 700;
}

/* makro dağılım şeridi */
.gd-makro-serit {
  display: flex;
  height: 12px;
  border-radius: 999px;
  overflow: hidden;
  background: var(--zemin-2);
  border: 1px solid var(--kenar);
}

.gd-makro-parca {
  height: 100%;
  transition: width 320ms cubic-bezier(0.22, 0.85, 0.3, 1);
}

.gd-makro-parca.protein {
  background: var(--makro-protein, var(--pk-jade-600));
}

.gd-makro-parca.karb {
  background: var(--makro-karb, var(--pk-mavi));
}

.gd-makro-parca.yag {
  background: var(--makro-yag, var(--pk-sari));
}

.gd-makro-parca.kalan {
  background: repeating-linear-gradient(
    45deg,
    var(--makro-kalan, var(--kenar-koyu)),
    var(--makro-kalan, var(--kenar-koyu)) 3px,
    transparent 3px,
    transparent 6px
  );
}

.gd-makro-aciklama {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 4px 12px;
  margin-top: 9px;
}

.gd-makro-oge {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11.5px;
}

.gd-makro-nokta {
  width: 9px;
  height: 9px;
  border-radius: 3px;
  flex: none;
}

.gd-makro-nokta.protein {
  background: var(--makro-protein, var(--pk-jade-600));
}

.gd-makro-nokta.karb {
  background: var(--makro-karb, var(--pk-mavi));
}

.gd-makro-nokta.yag {
  background: var(--makro-yag, var(--pk-sari));
}

.gd-makro-nokta.kalan {
  background: var(--makro-kalan, var(--kenar-koyu));
}

.gd-makro-ad {
  color: var(--metin-2);
}

.gd-makro-deger {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin);
  font-weight: 600;
}

/* seans */
.gd-seans-ust {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 9px;
}

.gd-seans-hacim {
  font-family: var(--mono);
  font-size: 17px;
  font-weight: 700;
}

.gd-seans-fark {
  font-family: var(--mono);
  font-size: 11.5px;
}

.gd-seans-fark.artis,
.gd-hareket-toplam.artis {
  color: var(--pk-jade-600);
}

[data-tema='koyu'] .gd-seans-fark.artis,
[data-tema='koyu'] .gd-hareket-toplam.artis {
  color: var(--aksan);
}

.gd-seans-fark.dusus,
.gd-hareket-toplam.dusus {
  color: var(--pk-turuncu);
}

.gd-seans-birim {
  font-size: 11px;
  color: var(--metin-3);
  font-family: var(--mono);
}

.gd-hareketler {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.gd-hareket {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 7px 10px;
  border-radius: 9px;
  background: var(--yuzey);
  border: 1px solid var(--kenar);
}

.gd-hareket-bas {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* Yük payı çubuğu: hareketin seans yükü içindeki ağırlığı gözle görülür. */
.gd-hareket-pay {
  display: flex;
  align-items: center;
  gap: 8px;
}

.gd-hareket-cubuk {
  flex: 1;
  height: 5px;
  border-radius: 3px;
  background: var(--zemin-2);
  overflow: hidden;
}

.gd-hareket-dolgu {
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--pk-jade-600), var(--pk-jade-500));
  transition: width 320ms cubic-bezier(0.22, 0.85, 0.3, 1);
}

[data-tema='koyu'] .gd-hareket-dolgu {
  background: linear-gradient(90deg, var(--aksan), var(--pk-jade-500));
}

.gd-hareket-katki {
  font-family: var(--mono);
  font-size: 10.5px;
  color: var(--metin-3);
  min-width: 84px;
  text-align: right;
}

.gd-hareket-ad {
  font-size: 12.5px;
  font-weight: 600;
  min-width: 68px;
}

.gd-setler {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.gd-set {
  font-family: var(--mono);
  font-size: 11.5px;
  padding: 1px 7px;
  border-radius: 6px;
  background: var(--zemin-2);
  color: var(--metin-2);
  font-variant-numeric: tabular-nums;
}

.gd-hareket-toplam {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 700;
  color: var(--metin-2);
}

.gd-olcum {
  font-family: var(--mono);
  font-size: 13.5px;
}

/* gün içi mikro girişler */
.gd-mikro {
  display: flex;
  flex-direction: column;
  gap: 2px;
  border-left: 2px solid var(--kenar);
  padding-left: 11px;
}

.gd-mikro-satir {
  display: flex;
  gap: 9px;
  font-size: 12px;
  line-height: 1.7;
}

.gd-mikro-saat {
  font-family: var(--mono);
  color: var(--metin-3);
  flex: none;
}

.gd-mikro-metin {
  color: var(--metin-2);
  overflow-wrap: anywhere;
}

.gd-not-metin {
  margin: 0;
  font-size: 13px;
  line-height: 1.65;
  color: var(--metin-2);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.gd-not-metin.uzun {
  background: var(--yuzey);
  border: 1px solid var(--kenar);
  border-radius: 12px;
  padding: 11px 13px;
}

/* Telefon: alttan açılan yaprak. */
@media (max-width: 720px) {
  .gd-katman {
    align-items: flex-end;
    justify-content: center;
  }

  .gd-panel {
    width: 100%;
    height: min(86vh, 100%);
    border-left: none;
    border-top: 1px solid var(--kenar);
    border-radius: 20px 20px 0 0;
    transform: translateY(100%);
  }

  .gd-katman.acik .gd-panel {
    transform: translateY(0);
  }

  .gd-basi {
    border-radius: 20px 20px 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .gd-panel,
  .gd-katman,
  .gd-makro-parca {
    transition: none;
  }
}

/* ============ PARA KARTLARI (6 Ağu) ============ */
/* Üç kart: nakit eğrisi, gider (sütun + kategori dağılımı + günün kalemleri),
   gelir (tahsilat ve yazılan iş AYRI iki çizgi). Kategori paleti kapalı liste:
   yedi kategori + "kategori yazılmamış" + "künyede olmayan" için nötr gri.
   Renkler mevcut jade/amber/mavi ailesiyle aynı doygunlukta — pano tek dil. */
.pano {
  --kat-ev: #7a6a9b;
  --kat-kisisel: #c98a2e;
  --kat-saglik: #4f8a7b;
  --kat-ulasim: #4a6b8a;
  --kat-is: #8a6b4a;
  --kat-sigara: #6e6e6e;
  --kat-fatura: #5f7fa3;
  --kat-borc: #b4453f;
  --kat-diger: #78877c;
  --kat-notr: #9aa2a0;
  --gelir-tahsilat: #3f7d5e;
  --gelir-alacak: #4a6b8a;
  --gider-renk: #c98a2e;
}

[data-tema='koyu'] .pano {
  --kat-ev: #9d8cc4;
  --kat-kisisel: #d7a94e;
  --kat-saglik: #6fb3a2;
  --kat-ulasim: #6f9ac4;
  --kat-is: #b08a62;
  --kat-sigara: #9a9a9a;
  --kat-fatura: #86a6cc;
  --kat-borc: #d4736c;
  --kat-diger: #93a396;
  --kat-notr: #7f8a88;
  --gelir-tahsilat: #6fbf95;
  --gelir-alacak: #6f9ac4;
  --gider-renk: #d7a94e;
}

/* ---- grafik tarafı ---- */
/* Gider sütunları amber: jade "iyi" rengi harcamaya yakışmıyordu. */
.zg-gider .zg-sutun-tek,
[data-tema='koyu'] .zg-gider .zg-sutun-tek {
  fill: var(--gider-renk);
  opacity: 0.6;
}

.zg-gider .zg-sutun-son,
[data-tema='koyu'] .zg-gider .zg-sutun-son {
  fill: var(--gider-renk);
  opacity: 1;
}

/* Nakit dip bölgesi: sıfırla eşik arası kırmızı şerit. */
/* Dip bölgesi (14 Ağu): dolgu grafiğin altını komple pembeye boyayıp asıl
   eğriyi bastırıyordu. Uyarıyı kesikli eşik çizgisi zaten veriyor; dolgu
   yalnız ima olarak kalır. */
.zg-band.zg-band-dip {
  fill: var(--pk-kirmizi);
  opacity: 0.035;
}

.zg-band-sinir.zg-band-dip {
  stroke: var(--pk-kirmizi);
  opacity: 0.5;
}

.zg-band-etiket.zg-band-dip {
  fill: var(--pk-kirmizi);
}

/* Gelir kartının iki serisi: renk seri grubunun --zg-renk'i üzerinden gider,
   böylece çizgi/nokta/köprü kuralları olduğu gibi çalışır. */
.zg-seri.para-tahsilat {
  --zg-renk: var(--gelir-tahsilat);
}

.zg-seri.para-alacak {
  --zg-renk: var(--gelir-alacak);
}

.grafik-aciklama-nokta.para-tahsilat,
.zg-ipucu-nokta.para-tahsilat {
  background: var(--gelir-tahsilat);
}

.grafik-aciklama-nokta.para-alacak,
.zg-ipucu-nokta.para-alacak {
  background: var(--gelir-alacak);
}

.zg-ipucu-nokta.para-gider {
  background: var(--gider-renk);
}

/* Gelirin kişi kırılımı ve gün listesi: nokta/çubuk aynı iki rengi kullanır ki
   "hangisi cebe girdi, hangisi alacakta kaldı" tek bakışta ayrılsın. */
.para-nokta.para-tahsilat,
.para-dolgu.para-tahsilat {
  background: var(--gelir-tahsilat);
}

.para-nokta.para-alacak,
.para-dolgu.para-alacak {
  background: var(--gelir-alacak);
}

/* ---- kategori renkleri (ipucu noktası, dağılım çubuğu, kalem listesi) ---- */
.para-nokta {
  width: 9px;
  height: 9px;
  border-radius: 3px;
  background: var(--kat-notr);
  flex: none;
}

.para-nokta.kat-ev,
.zg-ipucu-nokta.kat-ev,
.para-dolgu.kat-ev {
  background: var(--kat-ev);
}

.para-nokta.kat-kisisel,
.zg-ipucu-nokta.kat-kisisel,
.para-dolgu.kat-kisisel {
  background: var(--kat-kisisel);
}

.para-nokta.kat-saglik,
.zg-ipucu-nokta.kat-saglik,
.para-dolgu.kat-saglik {
  background: var(--kat-saglik);
}

.para-nokta.kat-ulasim,
.zg-ipucu-nokta.kat-ulasim,
.para-dolgu.kat-ulasim {
  background: var(--kat-ulasim);
}

.para-nokta.kat-is,
.zg-ipucu-nokta.kat-is,
.para-dolgu.kat-is {
  background: var(--kat-is);
}

.para-nokta.kat-borc,
.zg-ipucu-nokta.kat-borc,
.para-dolgu.kat-borc {
  background: var(--kat-borc);
}

.para-nokta.kat-diger,
.zg-ipucu-nokta.kat-diger,
.para-dolgu.kat-diger {
  background: var(--kat-diger);
}

.para-nokta.kat-sigara,
.zg-ipucu-nokta.kat-sigara,
.para-dolgu.kat-sigara {
  background: var(--kat-sigara);
}

.para-nokta.kat-fatura,
.zg-ipucu-nokta.kat-fatura,
.para-dolgu.kat-fatura {
  background: var(--kat-fatura);
}

/* Kategorisi yazılmamış ya da künyede olmayan değer: nötr gri + kesikli kenar.
   Görünür kalır ki sonradan doldurulsun; "diger"e karıştırılmaz. */
.para-nokta.kat-yok,
.para-nokta.kat-bilinmeyen,
.zg-ipucu-nokta.kat-yok,
.zg-ipucu-nokta.kat-bilinmeyen,
.para-dolgu.kat-yok,
.para-dolgu.kat-bilinmeyen {
  background: var(--kat-notr);
  opacity: 0.7;
}

/* Toplamı yazılmış ama kalemi girilmemiş para: taralı, veri gibi durmasın. */
.para-nokta.kat-girilmemis,
.para-dolgu.kat-girilmemis {
  background: repeating-linear-gradient(
    45deg,
    var(--kat-notr),
    var(--kat-notr) 2px,
    transparent 2px,
    transparent 5px
  );
  border: 1px solid var(--kat-notr);
  box-sizing: border-box;
}

/* ---- kart içi bölümler ---- */
.para-bolum {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--kenar);
}

.para-bolum-basi {
  margin: 0 0 9px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--metin-3);
}

.para-dagilim-ust,
.para-kalem-ust {
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-2);
  margin-bottom: 8px;
  font-variant-numeric: tabular-nums;
}

.para-bos {
  font-size: 11.5px;
  color: var(--metin-3);
  padding: 4px 0;
}

.para-satir {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 4px 0;
  font-size: 12.5px;
}

.para-ad {
  min-width: 104px;
  color: var(--metin);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.para-cubuk {
  flex: 1;
  min-width: 40px;
  height: 8px;
  border-radius: 999px;
  background: var(--zemin-2);
  overflow: hidden;
}

.para-dolgu {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: var(--kat-notr);
  transition: width 320ms cubic-bezier(0.22, 0.85, 0.3, 1);
}

.para-tutar {
  font-family: var(--mono);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  min-width: 78px;
  text-align: right;
}

.para-oran {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
  min-width: 34px;
  text-align: right;
}

/* ---- borç defteri (12 Ağu): gelir/giderden ayrı kart ---- */
.para-nokta.borc-alacak {
  background: var(--gelir-tahsilat);
}

.para-nokta.borc-verecek {
  background: var(--gider-renk);
}

.borc-liste {
  display: flex;
  flex-direction: column;
}

/* flex-wrap ZORUNLU: .borc-ek flex-basis:100% ile ikinci satıra iner. Wrap
   yokken aynı satırda kalmaya çalışıp .borc-bas'ı sıfıra eziyordu, yani vadesi
   yazılı borçlarda KİMİN olduğu görünmüyordu (13 Ağu, kaptanın ekran
   görüntüsünde Ramazan ve kredi kartı satırları isimsiz çıktı). */
/* 14 Ağu: kesikli ayraçlar üç bloğu tek gri gürültüye çeviriyordu; düz ince
   tel hem sakin hem satırları gerçekten ayırıyor. Satır da nefes alsın. */
.borc-satir {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 9px;
  padding: 9px 0;
  font-size: 13px;
  border-bottom: 1px solid var(--kenar);
}

.borc-kapali .borc-kim,
.borc-kapali .borc-tutar {
  color: var(--metin-3);
  font-weight: 500;
}

.para-nokta.borc-kapandi {
  background: var(--metin-3);
  opacity: 0.45;
}

.borc-satir:last-of-type {
  border-bottom: none;
}

.borc-bas {
  display: flex;
  align-items: center;
  gap: 7px;
  flex: 1;
  min-width: 0;
}

.borc-kim {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 550;
  font-size: 13.5px;
  letter-spacing: -0.01em;
}

.borc-tutar {
  font-family: var(--mono);
  font-weight: 700;
  font-size: 13.5px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  letter-spacing: -0.01em;
}

/* Tutar rengi hangi bölümde olduğunu söyler; ayrı bir işaret gerekmiyor. */
.borc-satir:has(.borc-alacak) .borc-tutar {
  color: var(--pk-jade-700);
}

.borc-satir:has(.borc-verecek) .borc-tutar {
  color: var(--pk-kirmizi);
}

/* Kapanan kalemler geçmiştir: aynı yeri kaplamasınlar. */
.borc-kapali {
  padding: 6px 0;
  font-size: 12px;
  opacity: 0.72;
}

.borc-kapali .borc-kim,
.borc-kapali .borc-tutar {
  font-size: 12.5px;
  font-weight: 500;
}

/* ---- borç özeti: kartın ilk bakışta söylediği iki rakam (14 Ağu) ---- */
.borc-ozet {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 2px 0 18px;
}

.borc-ozet-kutu {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 12px 14px;
  border: 1px solid var(--kenar);
  border-radius: var(--yuvarlak-kucuk);
  background: var(--yuzey-2);
}

.borc-ozet-ad {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--metin-3);
}

.borc-ozet-tutar {
  font-size: 23px;
  font-weight: 700;
  letter-spacing: -0.035em;
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
}

.borc-ozet-alacak .borc-ozet-tutar {
  color: var(--pk-jade-700);
}

.borc-ozet-verecek .borc-ozet-tutar {
  color: var(--pk-kirmizi);
}

.borc-ozet-adet {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
}

@media (max-width: 640px) {
  .borc-ozet {
    grid-template-columns: 1fr;
  }
}

.borc-ek {
  flex-basis: 100%;
  font-size: 11px;
  color: var(--metin-3);
  padding-left: 16px;
}

.borc-toplam {
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid var(--kenar);
  font-family: var(--mono);
  font-size: 11.5px;
  color: var(--metin-2);
  font-variant-numeric: tabular-nums;
}

/* Gelirin kişi bloğu: bir isim, altında iki ayrı çubuk (tahsilat / yazılan iş).
   Tek çubukta birleştirilmez — ikisi farklı şey, toplanmaz. */
.para-kisi {
  padding: 7px 0;
  border-bottom: 1px dashed var(--kenar);
}

.para-kisi:last-child {
  border-bottom: none;
}

.para-kisi-basi {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}

.para-kisi-ad {
  font-size: 13px;
  font-weight: 700;
  color: var(--metin);
}

.para-kisi-fark {
  font-family: var(--mono);
  font-size: 10.5px;
  color: var(--metin-3);
}

.para-kisi-fark.acik {
  color: var(--gelir-alacak);
}

.para-kisi-fark.kapali {
  color: var(--gelir-tahsilat);
}

/* Kategori dağılımı açılır satırlar (22 Ağu): ana kategoriye dokun → alt
   kategoriler; alt kategoriye dokun → o aralıktaki kalemler (tarih · ne ·
   tutar · ödeme). Satır düğmedir, görünümü düz satırla aynıdır. */
button.para-satir {
  width: 100%;
  background: none;
  border: 0;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  border-radius: 6px;
  padding-left: 4px;
  padding-right: 4px;
  margin-left: -4px;
  width: calc(100% + 8px);
}

button.para-satir:hover,
button.para-satir:focus-visible {
  background: var(--zemin-2);
  outline: none;
}

.para-ok {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
  min-width: 12px;
  text-align: right;
}

.para-satir.acik .para-ok {
  color: var(--metin-2);
}

.para-altlar {
  margin: 2px 0 8px 0;
  padding-left: 18px;
  border-left: 2px solid var(--kenar);
}

.para-satir-alt {
  font-size: 12px;
  padding: 3px 0;
}

.para-satir-alt .para-nokta {
  opacity: 0.55;
}

.para-satir-alt .para-dolgu {
  opacity: 0.6;
}

.para-satir-alt .para-ad {
  min-width: 130px;
  color: var(--metin-2);
}

.para-alt-kalemler {
  margin: 2px 0 8px 14px;
  padding-left: 10px;
  border-left: 1px dashed var(--kenar);
}

.para-kalem-tarihli {
  flex-wrap: wrap;
}

.para-kalem-gun {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--metin-3);
  min-width: 46px;
  font-variant-numeric: tabular-nums;
}

.para-kalem-not {
  flex-basis: 100%;
  font-size: 11px;
  color: var(--metin-3);
  padding-left: 55px;
  line-height: 1.35;
}

/* Günün kalemleri: ne · tutar · ödeme */
.para-kalem {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 5px 0;
  font-size: 12.5px;
  border-bottom: 1px dashed var(--kenar);
}

.para-kalem:last-child {
  border-bottom: none;
}

.para-kalem-ne {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.para-kalem-tutar {
  font-family: var(--mono);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.para-kalem-odeme {
  font-size: 11px;
  color: var(--metin-3);
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--zemin-2);
  border: 1px solid var(--kenar);
  white-space: nowrap;
}

/* ---- gün çekmecesindeki para bölümü ---- */
.gd-para-liste {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 8px;
}

.gd-para-baslik {
  font-size: 11px;
  font-weight: 700;
  color: var(--metin-2);
  margin: 6px 0 2px;
}

.gd-para-satir {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 10px;
  padding: 7px 0;
  border-bottom: 1px dashed var(--kenar);
}

.gd-para-satir:last-child {
  border-bottom: none;
}

.gd-para-bas {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.gd-para-ne {
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gd-para-tutar {
  font-family: var(--mono);
  font-weight: 700;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.gd-para-ek {
  grid-column: 1 / -1;
  font-size: 11px;
  color: var(--metin-3);
}

.gd-para-not {
  grid-column: 1 / -1;
  font-size: 11.5px;
  color: var(--metin-2);
}

@media (max-width: 640px) {
  /* Telefonda oran sütunu düşer, ad kısalır: çubuk okunur kalsın. */
  .para-ad {
    min-width: 78px;
  }

  .para-oran {
    display: none;
  }

  .para-tutar {
    min-width: 68px;
  }

  .para-kalem {
    flex-wrap: wrap;
  }
}

/* ==========================================================================
   SOHBET — "DEFTER" tasarımı (14 Ağu 2026, kaptan onayı)

   Fikir: sohbet bir gösterge paneli değil, TUTULAN BİR DEFTER. Sayfanın
   içinden dikey bir tel geçer; saat ve kim konuşuyor bilgisi KENAR
   BOŞLUĞUNDA durur, söz telin sağından akar. Kutu yok, renkli şerit yok.
   Sen ile pikaçu kutuyla değil YAZIYLA ayrılır: senin sözün Gabarito ile
   sıkı ve kalın, pikaçunun cevabı Literata ile serif ve okunaklı.

   NEDEN AYRI BLOK: bu bölüm yalnız #sayfa-sohbet'i boyar, üstteki 7900
   satıra dokunmaz. Beğenilmezse tek parça hâlinde silinir, eski sohbet
   hiç bozulmadan geri gelir. Kabuk (yan menü, durum çubuğu, öteki
   sayfalar) bilerek eski paletinde bırakıldı — kapsam yalnız sohbetti.

   DOM DEĞİŞMEDİ: tek eklenen şey .kanka-satir üstündeki data-saat.
   Kenar boşluğu ::before ile çiziliyor, çünkü sohbet.js mesajı
   "kanka-satir span:last-child" ile okuyor; araya eleman koymak onu bozar.
   ========================================================================== */

/* Yazı karakterleri yerel: internet gerekmiyor, telefonda çevrimdışı da çalışır.
   Üçü de değişken font ve Türkçe tam (ı İ ğ Ğ ş Ş latin-ext'te). */
@font-face {
  font-family: 'Gabarito';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/yazi/gabarito-lat.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: 'Gabarito';
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url('/yazi/gabarito-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: 'Literata';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/yazi/literata-lat.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: 'Literata';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/yazi/literata-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: 'Spline Sans Mono';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/yazi/mono-lat.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: 'Spline Sans Mono';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('/yazi/mono-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;
}

/* ---- palet: gündüz kağıt, gece mürekkep ----
   Nötrler marka sarısının tonuna doğru kırılmış (hue ~78-84), o yüzden
   gündüz soğuk gri değil gerçekten kağıt, gece mavi-siyah değil mürekkep. */
#sayfa-sohbet {
  --d-kagit: oklch(0.982 0.006 84);
  --d-yuzey: oklch(0.997 0.003 84);
  --d-cizgi: oklch(0.892 0.009 84);
  --d-cizgi-2: oklch(0.8 0.013 84);
  --d-mur: oklch(0.245 0.014 70);
  --d-mur-2: oklch(0.47 0.013 72);
  --d-mur-3: oklch(0.635 0.012 76);
  --d-kiv: oklch(0.8 0.165 82);
  --d-kiv-yazi: oklch(0.545 0.13 66);
  --d-kiv-sis: oklch(0.8 0.165 82 / 0.14);
  --d-kan: oklch(0.52 0.16 30);
  --d-yosun: oklch(0.48 0.09 155);
  --d-kod: oklch(0.962 0.007 84);
  --d-golge: 0 1px 2px oklch(0.3 0.02 70 / 0.06), 0 8px 24px -14px oklch(0.3 0.02 70 / 0.18);
  --d-iz: oklch(0.3 0.02 70 / 0.045);

  --d-yazi: 'Gabarito', ui-sans-serif, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --d-oku: 'Literata', Georgia, 'Times New Roman', serif;
  --d-not: 'Spline Sans Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
  --d-kenar: 104px;
  --d-bosluk: 24px;

  background: var(--d-kagit);
  color: var(--d-mur);
  font-family: var(--d-yazi);
}

[data-tema='koyu'] #sayfa-sohbet {
  --d-kagit: oklch(0.163 0.009 78);
  --d-yuzey: oklch(0.222 0.011 78);
  --d-cizgi: oklch(0.302 0.012 78);
  --d-cizgi-2: oklch(0.405 0.014 78);
  --d-mur: oklch(0.938 0.01 84);
  --d-mur-2: oklch(0.735 0.012 84);
  --d-mur-3: oklch(0.575 0.012 84);
  --d-kiv: oklch(0.835 0.16 85);
  --d-kiv-yazi: oklch(0.855 0.15 85);
  --d-kiv-sis: oklch(0.835 0.16 85 / 0.13);
  --d-kan: oklch(0.68 0.16 32);
  --d-yosun: oklch(0.75 0.13 158);
  --d-kod: oklch(0.135 0.008 78);
  --d-golge: 0 1px 2px oklch(0 0 0 / 0.4), 0 10px 28px -16px oklch(0 0 0 / 0.7);
  --d-iz: oklch(1 0 0 / 0.045);
}

/* ---- akış ---- */
#sayfa-sohbet .akis {
  background: var(--d-kagit);
  padding-top: 40px;
}

#sayfa-sohbet .akis-ic {
  max-width: 960px;
  padding-inline: 48px;
}

#sayfa-sohbet .tur {
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
}

/* ---- senin sözün: kutu değil, telin sağında yazı ----
   Saat + "SEN" kenar boşluğuna ::before ile düşer. */
#sayfa-sohbet .kanka-satir {
  position: relative;
  display: block;
  margin: 0 0 0 calc(var(--d-kenar) + var(--d-bosluk));
  padding: 0 0 26px var(--d-bosluk);
  background: none;
  border: 0;
  border-left: 1px solid var(--d-cizgi);
  border-radius: 0;
  font-family: var(--d-yazi);
  font-size: 15.5px;
  font-weight: 500;
  line-height: 1.6;
  letter-spacing: -0.012em;
  color: var(--d-mur);
  max-width: none;
}

#sayfa-sohbet .kanka-satir::before {
  content: attr(data-saat) '\Asen';
  position: absolute;
  left: calc(-1 * (var(--d-kenar) + var(--d-bosluk)));
  top: 2px;
  width: var(--d-kenar);
  text-align: right;
  white-space: pre-line;
  font-family: var(--d-not);
  font-size: 10.5px;
  line-height: 1.55;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--d-mur-3);
}

/* ❯ artık gereksiz: kim konuştuğunu kenar boşluğu söylüyor. */
#sayfa-sohbet .kanka-satir .isaret {
  display: none;
}

/* ---- pikaçunun cevabı: aynı tel, kenarda marka işareti ---- */
#sayfa-sohbet .cevap {
  position: relative;
  margin: 0 0 0 calc(var(--d-kenar) + var(--d-bosluk));
  padding: 0 0 44px var(--d-bosluk);
  border-left: 1px solid var(--d-cizgi);
  background: none;
}

#sayfa-sohbet .cevap::before {
  content: '';
  position: absolute;
  left: calc(-1 * (var(--d-bosluk) + 20px));
  top: 1px;
  width: 20px;
  height: 20px;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='4 2 32 35'><g fill='none' stroke='%23f5c518' stroke-width='5.4' stroke-linecap='round'><path d='M14.6 14.2 8.4 6.4'/><path d='M25.4 14.2 31.6 6.4'/></g><g fill='none' stroke='%232f2a20' stroke-width='5.4' stroke-linecap='round'><path d='M9.8 8.2 8.4 6.4'/><path d='M30.2 8.2 31.6 6.4'/></g><circle cx='20' cy='23.6' r='11.6' fill='%23f5c518'/><circle cx='11.4' cy='27.4' r='3.05' fill='%23d2432f'/><circle cx='28.6' cy='27.4' r='3.05' fill='%23d2432f'/><circle cx='15.7' cy='21.4' r='2' fill='%232f2a20'/><circle cx='24.3' cy='21.4' r='2' fill='%232f2a20'/><circle cx='16.4' cy='20.7' r='.72' fill='%23fdfcfa'/><circle cx='25' cy='20.7' r='.72' fill='%23fdfcfa'/><circle cx='20' cy='25.1' r='.9' fill='%232f2a20'/><path d='M17.3 27.2q2.7 2.9 5.4 0' fill='none' stroke='%232f2a20' stroke-width='1.35' stroke-linecap='round'/></svg>")
    center / contain no-repeat;
}

/* ---- okunan metin: serif, uzun okuma için ---- */
#sayfa-sohbet .metin-blok {
  font-family: var(--d-oku);
  font-size: 16px;
  line-height: 1.72;
  letter-spacing: -0.002em;
  color: var(--d-mur);
  max-width: 68ch;
}

/* Açık zeminde ince yazı daha zayıf görünür; gecede satır arası açılır. */
[data-tema='koyu'] #sayfa-sohbet .metin-blok {
  line-height: 1.78;
}

#sayfa-sohbet .metin-blok p {
  margin: 0 0 14px;
}

#sayfa-sohbet .metin-blok p:last-child {
  margin-bottom: 0;
}

#sayfa-sohbet .metin-blok strong {
  font-weight: 700;
  color: var(--d-mur);
}

#sayfa-sohbet .metin-blok a {
  color: var(--d-kiv-yazi);
  text-underline-offset: 3px;
}

#sayfa-sohbet .metin-blok code {
  font-family: var(--d-not);
  font-size: 0.86em;
  padding: 1.5px 5px;
  border-radius: 3px;
  background: var(--d-kiv-sis);
  border: 0;
  color: var(--d-kiv-yazi);
}

#sayfa-sohbet .metin-blok pre {
  background: var(--d-kod);
  border: 1px solid var(--d-cizgi);
  border-radius: 4px;
  font-family: var(--d-not);
  font-size: 12.5px;
  line-height: 1.68;
  color: var(--d-mur-2);
}

#sayfa-sohbet .metin-blok pre code {
  background: none;
  color: inherit;
  padding: 0;
}

#sayfa-sohbet .metin-blok blockquote {
  border-left: 1px solid var(--d-cizgi-2);
  color: var(--d-mur-2);
  font-style: italic;
}

/* ---- düşünce: kutu değil, dipnot ---- */
#sayfa-sohbet .dusunce {
  margin: 0 0 14px;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
}

#sayfa-sohbet .dusunce-basi {
  padding: 7px 0;
  background: none;
  border: 0;
  font-family: var(--d-not);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--d-mur-3);
  transition: color var(--gecis);
}

#sayfa-sohbet .dusunce-basi:hover {
  color: var(--d-mur-2);
}

#sayfa-sohbet .dusunce-govde {
  font-family: var(--d-oku);
  font-style: italic;
  font-size: 14.5px;
  line-height: 1.7;
  color: var(--d-mur-3);
  background: none;
  border: 0;
  border-left: 1px solid var(--d-cizgi);
  border-radius: 0;
  padding: 4px 0 8px 16px;
  max-width: 68ch;
}

/* ---- araç çağrısı: kart değil, dipnot satırı ---- */
#sayfa-sohbet .arac {
  margin: 0 0 12px;
  padding: 0;
  background: none;
  border: 0;
  border-top: 1px solid var(--d-cizgi);
  border-radius: 0;
  max-width: 68ch;
}

#sayfa-sohbet .arac-satir {
  gap: 10px;
  padding: 8px 0;
  background: none;
  font-family: var(--d-not);
  font-size: 11px;
  letter-spacing: 0.03em;
  color: var(--d-mur-3);
}

#sayfa-sohbet .arac-isaret {
  color: var(--d-kiv-yazi);
}

#sayfa-sohbet .arac-baslik {
  color: var(--d-mur-2);
  font-weight: 600;
}

#sayfa-sohbet .arac-detay {
  color: var(--d-mur-3);
}

#sayfa-sohbet .arac-son .tik {
  color: var(--d-yosun);
}

#sayfa-sohbet .arac-son .carpi {
  color: var(--d-kan);
}

#sayfa-sohbet .arac-govde {
  background: none;
  border: 0;
  border-left: 1px solid var(--d-cizgi);
  border-radius: 0;
  padding: 4px 0 10px 16px;
  font-family: var(--d-not);
  font-size: 12px;
  line-height: 1.65;
  color: var(--d-mur-3);
}

#sayfa-sohbet .diff-yol {
  font-family: var(--d-not);
  color: var(--d-mur-2);
}

/* ---- canlı durum satırı ---- */
#sayfa-sohbet .tur-durum {
  font-family: var(--d-not);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--d-mur-3);
  background: none;
  border: 0;
  padding: 6px 0;
}

/* ---- tur altı eylemler: düğme değil, altı çizilen bağlantı ---- */
#sayfa-sohbet .tur-alt {
  gap: 16px;
  margin-top: 18px;
  padding: 0;
  border: 0;
}

#sayfa-sohbet .tur-alt::before,
#sayfa-sohbet .tur-alt::after {
  display: none;
}

#sayfa-sohbet .tur-alt button {
  position: relative;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  font-family: var(--d-not);
  font-size: 10.5px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--d-mur-3);
  transition: color var(--gecis);
}

#sayfa-sohbet .tur-alt button::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: -3px;
  height: 1px;
  background: var(--d-kiv);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#sayfa-sohbet .tur-alt button:hover {
  background: none;
  color: var(--d-mur);
}

#sayfa-sohbet .tur-alt button:hover::after {
  transform: scaleX(1);
}

/* ---- giriş: bir kağıt fişi ---- */
#sayfa-sohbet .giris {
  background: var(--d-kagit);
}

#sayfa-sohbet .giris-ic {
  background: var(--d-yuzey);
  border: 1px solid var(--d-cizgi-2);
  border-radius: 4px;
  box-shadow: var(--d-golge);
  max-width: 960px;
  margin-inline: auto;
}

#sayfa-sohbet .giris-ic:focus-within {
  border-color: var(--d-mur-3);
  box-shadow: var(--d-golge), 0 0 0 3px var(--d-kiv-sis);
}

#sayfa-sohbet .giris-prompt {
  font-family: var(--d-not);
  color: var(--d-kiv-yazi);
  font-weight: 700;
}

#sayfa-sohbet #kutu {
  font-family: var(--d-oku);
  font-size: 15px;
  color: var(--d-mur);
}

#sayfa-sohbet #kutu::placeholder {
  color: var(--d-mur-3);
}

#sayfa-sohbet .giris-ikon {
  color: var(--d-mur-3);
}

#sayfa-sohbet .giris-ikon:hover {
  color: var(--d-mur);
  background: var(--d-iz);
}

#sayfa-sohbet .giris-gonder {
  background: var(--d-kiv);
  color: oklch(0.21 0.02 62);
  border-radius: 3px;
}

#sayfa-sohbet .giris-kes {
  background: var(--d-kan);
  color: oklch(0.99 0.005 84);
  border-radius: 3px;
}

/* ---- karşılama ---- */
#sayfa-sohbet .hosgeldin {
  color: var(--d-mur-3);
}

#sayfa-sohbet .hg-marka {
  font-family: var(--d-yazi);
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--d-mur);
}

#sayfa-sohbet .hg-satir {
  font-family: var(--d-oku);
  font-style: italic;
  color: var(--d-mur-3);
}

/* ==========================================================================
   OMURGAYA BAĞLANMASI UNUTULANLAR (14 Ağu düzeltmesi)
   .tur'un doğrudan çocukları üç tane: .kanka-satir, .kanka-ekler, .cevap,
   .tur-alt. İlk turda yalnız ikisi boyanmıştı; ekler ve tur-altı eylemler
   kenar boşluğu almadığı için tel bitiyor, onlar sayfanın en soluna
   kayıyordu. Hepsi aynı omurgaya bağlanır.
   ========================================================================== */
#sayfa-sohbet .kanka-ekler,
#sayfa-sohbet .tur-alt {
  margin-left: calc(var(--d-kenar) + var(--d-bosluk));
  padding-left: var(--d-bosluk);
  border-left: 1px solid var(--d-cizgi);
}

#sayfa-sohbet .kanka-ekler {
  padding-bottom: 18px;
}

/* Eylemler turun son satırı: alt boşluk .cevap'tan buraya taşındı ki
   tel kesintisiz insin. */
#sayfa-sohbet .cevap {
  padding-bottom: 6px;
}

#sayfa-sohbet .tur-alt {
  margin-top: 0;
  padding-top: 10px;
  padding-bottom: 40px;
}

/* ---- sistem satırı: hata / uyarı mesajları ---- */
#sayfa-sohbet .sistem-satir {
  margin: 0 0 12px;
  padding: 8px 0;
  background: none;
  border: 0;
  border-top: 1px solid var(--d-cizgi);
  border-radius: 0;
  font-family: var(--d-not);
  font-size: 11.5px;
  letter-spacing: 0.02em;
  color: var(--d-mur-2);
  max-width: 68ch;
}

#sayfa-sohbet .sistem-satir.hata {
  color: var(--d-kan);
  border-top-color: var(--d-kan);
}

#sayfa-sohbet .sistem-satir.uyari {
  color: var(--d-kiv-yazi);
}

#sayfa-sohbet .sistem-satir .dugme {
  background: none;
  border: 1px solid var(--d-cizgi-2);
  border-radius: 3px;
  color: var(--d-mur-2);
  font-family: var(--d-not);
  font-size: 10.5px;
}

#sayfa-sohbet .sistem-satir .dugme:hover {
  border-color: var(--d-mur-3);
  color: var(--d-mur);
  background: var(--d-iz);
}

/* ---- hafıza satırı (Hafıza 2.0): köprünün iliştirdiği brifing / ipucu ----
   Uyarı değil bilgi; en sessiz ton. Uzun dosya adları satır kırar, yana taşmaz.
   "göster" açılınca içerik kendi kabında kaydırılır, sayfa gövdesi kaymaz. */
#sayfa-sohbet .sistem-satir.hafiza-satir {
  flex-wrap: wrap;
  /* --d-mur-3 ölçüldü: açık temada 3,26:1, koyuda 4,41:1 (eşik 4,5). --d-mur-2: 6,5 / 8,27. */
  color: var(--d-mur-2);
  overflow-wrap: anywhere;
}

#sayfa-sohbet .hafiza-satir details {
  flex-basis: 100%;
  min-width: 0;
}

#sayfa-sohbet .hafiza-satir summary {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 2px;
  color: var(--d-mur-2);
  text-decoration: underline;
  text-decoration-color: var(--d-cizgi);
  text-underline-offset: 3px;
}

/* inline-flex yerleşik üçgeni gizler; açık/kapalı durumu ok işaretiyle görünsün */
#sayfa-sohbet .hafiza-satir summary::before {
  content: '▸';
  display: inline-block;
  width: 1.2em;
  text-decoration: none;
}

#sayfa-sohbet .hafiza-satir details[open] > summary::before {
  content: '▾';
}

#sayfa-sohbet .hafiza-satir summary:hover,
#sayfa-sohbet .hafiza-satir summary:focus-visible {
  color: var(--d-mur);
  text-decoration-color: var(--d-mur-3);
}

#sayfa-sohbet .hafiza-satir pre {
  margin: 4px 0 0;
  padding: 10px 12px;
  max-height: 55vh;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  background: var(--d-iz);
  border: 1px solid var(--d-cizgi);
  border-radius: 3px;
  font-family: var(--d-not);
  font-size: 11px;
  line-height: 1.55;
  color: var(--d-mur-2);
}

/* ---- akış üstü şeritler ve düğmeler: eski yeşil paletten kağıda ----
   İşlevleri duruyordu ama rengi kabuğun eski paletindendi; kağıt zeminde
   yamalı görünüyorlardı. */
#sayfa-sohbet .akisa-don,
#sayfa-sohbet .surum-cip,
#sayfa-sohbet .ara-dugme {
  background: var(--d-yuzey);
  border: 1px solid var(--d-cizgi-2);
  color: var(--d-mur-2);
  box-shadow: var(--d-golge);
}

#sayfa-sohbet .akisa-don:hover,
#sayfa-sohbet .surum-cip:hover,
#sayfa-sohbet .ara-dugme:hover {
  border-color: var(--d-mur-3);
  color: var(--d-mur);
}

/* Yeni sürüm çipi dikkat çekmeli: tek sarı unsur burada haklı. */
#sayfa-sohbet .surum-cip {
  border-color: var(--d-kiv);
  color: var(--d-kiv-yazi);
  background: var(--d-kiv-sis);
}

#sayfa-sohbet .ara-serit {
  background: var(--d-yuzey);
  border: 1px solid var(--d-cizgi-2);
  border-radius: 4px;
  color: var(--d-mur);
}

#sayfa-sohbet .ara-serit input,
#sayfa-sohbet .ara-sayac,
#sayfa-sohbet .ara-ok {
  color: var(--d-mur-2);
  font-family: var(--d-not);
}

#sayfa-sohbet .ara-ok:hover {
  color: var(--d-mur);
  background: var(--d-iz);
}

/* ---- giriş üstü şeritler ---- */
#sayfa-sohbet .kuyruk-serit,
#sayfa-sohbet .ses-gosterge {
  background: var(--d-yuzey);
  border: 1px solid var(--d-cizgi-2);
  border-radius: 4px;
  color: var(--d-mur-2);
  font-family: var(--d-not);
  font-size: 11.5px;
}

#sayfa-sohbet .kuyruk-nokta {
  background: var(--d-kiv);
}

#sayfa-sohbet .ses-nokta {
  background: var(--d-kan);
}

#sayfa-sohbet .kuyruk-eylem {
  color: var(--d-mur-2);
  border: 1px solid var(--d-cizgi-2);
  border-radius: 3px;
  background: none;
}

#sayfa-sohbet .kuyruk-eylem:hover {
  color: var(--d-mur);
  border-color: var(--d-mur-3);
}

#sayfa-sohbet .kuyruk-sil {
  color: var(--d-kan);
  border-color: var(--d-kan);
}

#sayfa-sohbet .ek-cip {
  background: var(--d-yuzey);
  border: 1px solid var(--d-cizgi);
  border-radius: 3px;
  color: var(--d-mur-2);
  font-family: var(--d-not);
  font-size: 11px;
}

/* ---- arama vurgusu paletle uyumlu kalsın ---- */
#sayfa-sohbet mark.ara-vurgu {
  background: var(--d-kiv-sis);
  color: var(--d-mur);
}

/* "başka cihaz" rozeti: sözün ardına iliştirilen küçük not. */
#sayfa-sohbet .uzak-rozet {
  margin-left: 10px;
  font-family: var(--d-not);
  font-size: 9.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--d-mur-3);
  border: 1px solid var(--d-cizgi);
  border-radius: 3px;
  padding: 1px 5px;
  vertical-align: 2px;
  background: none;
}

/* ==========================================================================
   TELEFON: kenar boşluğu sütunu 400 pikselde lüks olur. Tel kalkar,
   saat ve "SEN" sözün üstüne satır olarak geçer. Bilgi kaybı yok.
   ========================================================================== */
@media (max-width: 900px) {
  #sayfa-sohbet .akis-ic {
    padding-inline: 16px;
  }

  #sayfa-sohbet .kanka-satir,
  #sayfa-sohbet .cevap,
  #sayfa-sohbet .kanka-ekler,
  #sayfa-sohbet .tur-alt {
    margin-left: 0;
    padding-left: 0;
    border-left: 0;
  }

  #sayfa-sohbet .kanka-satir {
    padding-bottom: 20px;
  }

  #sayfa-sohbet .cevap {
    padding-bottom: 34px;
  }

  #sayfa-sohbet .kanka-satir::before {
    position: static;
    display: block;
    width: auto;
    text-align: left;
    margin-bottom: 6px;
  }

  #sayfa-sohbet .cevap::before {
    position: static;
    display: block;
    margin-bottom: 8px;
  }

  #sayfa-sohbet .metin-blok,
  #sayfa-sohbet .arac,
  #sayfa-sohbet .dusunce-govde {
    max-width: none;
  }
}

/* ---- ÇARPI DEFTERİ (2 Eyl 2026, kaptanın tasarımı) ---- */
.carpi-alt {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--metin-3);
  margin: -4px 0 12px;
}
.carpi-izgara {
  display: grid;
  /* PC'de kutu 36-41 px arasında kalır, sütun sayısı genişliğe göre kendiliğinden artar
     (2 Eyl 09:12 düzeltmesi: sabit 15 sütun 1600 px ekranda 100 px'lik kutular üretiyordu). */
  grid-template-columns: repeat(auto-fill, minmax(36px, 1fr));
  gap: 5px;
}
.carpi-kare {
  position: relative;
  aspect-ratio: 1;
  min-height: 30px;
  border-radius: 7px;
  border: 1px solid var(--kenar);
  background: var(--zemin-2);
  color: var(--metin-3);
  font-family: var(--mono);
  font-size: 11px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  transition: transform var(--gecis), box-shadow var(--gecis), border-color var(--gecis), background var(--gecis);
}
.carpi-kare:hover:not(:disabled) {
  transform: translateY(-1px) scale(1.06);
  border-color: var(--aksan);
  box-shadow: var(--golge-2);
  z-index: 2;
}
.carpi-kare.dolu {
  background: linear-gradient(160deg, var(--pk-jade-600), var(--pk-jade-800));
  border-color: var(--pk-jade-700);
  color: #f2f5ef;
  font-weight: 700;
  font-size: 14px;
}
.carpi-kare.gelecek {
  opacity: 0.32;
  border-style: dashed;
  cursor: default;
}
.carpi-kare.bugun {
  box-shadow: 0 0 0 2px var(--aksan);
}
.carpi-sayi {
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.carpi-ay {
  position: absolute;
  top: 2px;
  left: 3px;
  font-size: 7.5px;
  letter-spacing: 0.04em;
  opacity: 0.8;
}
.carpi-dip {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
  font-family: var(--mono);
  font-size: 12px;
  color: var(--metin-2);
}
.carpi-dip-sayi {
  font-size: 20px;
  font-weight: 700;
  color: var(--metin);
}
.carpi-dip-yazi {
  margin-right: 12px;
}
@media (max-width: 640px) {
  .carpi-izgara {
    grid-template-columns: repeat(10, minmax(0, 1fr));
    gap: 4px;
  }
  .carpi-kare {
    min-height: 26px;
    border-radius: 6px;
    font-size: 10px;
  }
}

.carpi-kare.bozuk {
  background: linear-gradient(160deg, var(--pk-kirmizi), #7d2b27);
  border-color: #8f3530;
  color: #f7ece9;
  font-weight: 700;
}
.carpi-dip-sayi.bozuk { color: var(--pk-kirmizi); }
.carpi-kare.belirsiz {
  background: repeating-linear-gradient(45deg, var(--zemin-2), var(--zemin-2) 3px, transparent 3px, transparent 6px);
  border-style: dashed;
  color: var(--metin-3);
}
.carpi-dip-sayi.soluk, .carpi-dip-yazi.soluk { color: var(--metin-3); font-size: 11px; }

.carpi-kare.kilitli:not(.gelecek) { cursor: default; }
.carpi-kare.kilitli:hover { transform: none; box-shadow: none; border-color: var(--kenar); }
.carpi-kare.kilitli.dolu:hover { border-color: var(--pk-jade-700); }
.carpi-kare.kilitli.bozuk:hover { border-color: #8f3530; }
