/* Kasa sayfasi (public/kasa.js). Ortak tokenlar style.css ve isler.css'ten; siniflar kv- onekli.
   Ustte baslik ve ozet (yalniz okunur kilidi, sayilar, kasanin yeri), altta hizmet basina tablo: hesap grubu, anahtar satirlari.
   Yonetici anahtari amber, kasada olmayan kirmizi, digerleri sakin. Kirilimlar: 720 px (satir iki satira iner) ve 520 px. */
:root {
  --kv-acc: #6d5bd0; --kv-acc-bg: rgb(109 91 208 / .09);
  --kv-hero-a: rgb(109 91 208 / .11); --kv-hero-b: rgb(47 111 228 / .07);
  --kv-adm: #b7790f; --kv-adm-t: #8a5a00; --kv-adm-bg: rgb(183 121 15 / .09);
  --kv-ok: #1f9d55; --kv-ok-t: #157a41;
  --kv-miss: #c9443a; --kv-miss-t: #b3261e; --kv-miss-bg: rgb(201 68 58 / .07);
  --kv-lab: #5f5f5a;
  --kv-sh: 0 1px 0 rgb(30 30 25 / .03), 0 6px 18px -10px rgb(30 30 25 / .16);
}
@media (prefers-color-scheme: dark) {
  :root {
    --kv-acc: #a596f5; --kv-acc-bg: rgb(165 150 245 / .10);
    --kv-hero-a: rgb(165 150 245 / .11); --kv-hero-b: rgb(91 143 240 / .09);
    --kv-adm: #e2a632; --kv-adm-t: #e8b75a; --kv-adm-bg: rgb(226 166 50 / .10);
    --kv-ok: #3ccf7c; --kv-ok-t: #6fdc9d;
    --kv-miss: #ef6a5e; --kv-miss-t: #f2897f; --kv-miss-bg: rgb(239 106 94 / .09);
    --kv-lab: #b4b4ae;
    --kv-sh: 0 1px 0 rgb(255 255 255 / .02) inset, 0 8px 22px -12px rgb(0 0 0 / .6);
  }
}

#kasa .kv-wrap { max-width: 1040px; gap: 18px; }

/* ---------- baslik ve ozet */
.kv-hero { position: relative; display: flex; flex-direction: column; gap: 14px; padding: 22px 22px 20px;
  border: 1px solid var(--line); border-radius: 14px; overflow: hidden;
  background:
    radial-gradient(120% 140% at 0% 0%, var(--kv-hero-a), transparent 55%),
    radial-gradient(90% 120% at 100% 0%, var(--kv-hero-b), transparent 60%),
    var(--panel); }
.kv-hero-t { min-width: 0; }
.kv-hero h1 { margin: 0 0 6px; font-size: 22px; font-weight: 600; letter-spacing: -.02em; display: flex; align-items: center; gap: 10px; }
.kv-hero h1 .ph { font-size: 20px; color: var(--kv-acc); width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; flex: none;
  background: var(--panel); border: 1px solid var(--line); box-shadow: 0 4px 12px -6px rgb(109 91 208 / .55); }
.kv-hero-t p { margin: 0; color: var(--muted); max-width: 78ch; line-height: 1.55; }
/* Ozet: kilit rozeti ve sayilar metnin altinda tek satir (sigmazsa sarar) */
.kv-sum { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding-top: 14px; border-top: 1px solid color-mix(in srgb, var(--line) 80%, transparent); }
.kv-lock { height: 28px; padding: 0 12px; border-radius: 999px; display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600;
  background: var(--kv-acc-bg); color: var(--text); border: 1px solid color-mix(in srgb, var(--kv-acc) 32%, transparent); margin-right: 4px; white-space: nowrap; }
.kv-lock .ph { font-size: 15px; color: var(--kv-acc); flex: none; }
.kv-c { height: 28px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--panel); display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--kv-lab); white-space: nowrap; }
.kv-c b { color: var(--text); font-weight: 600; font-variant-numeric: tabular-nums; }
.kv-c .ph { font-size: 13px; }
.kv-c.c-miss { border-color: color-mix(in srgb, var(--kv-miss) 38%, transparent); color: var(--kv-miss-t); background: var(--kv-miss-bg); }
.kv-c.c-miss b { color: var(--kv-miss-t); }
/* Ornek veri (yalniz dist/kasa.html): baslikta not, hesap basliklarinda ve GitHub satirlarinda "ornek" etiketi */
.kv-smpnote { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--kv-adm-t); padding: 8px 12px; border-radius: 9px;
  background: var(--kv-adm-bg); border: 1px dashed color-mix(in srgb, var(--kv-adm) 45%, transparent); }
.kv-smpnote .ph { font-size: 15px; flex: none; }
.kv-smp { flex: none; font-style: normal; font-size: 11px; font-weight: 600; letter-spacing: .02em; padding: 1px 7px; border-radius: 999px;
  color: var(--kv-adm-t); background: var(--kv-adm-bg); border: 1px dashed color-mix(in srgb, var(--kv-adm) 45%, transparent); }

/* ---------- bolumler */
.kv-sec { display: grid; gap: 10px; min-width: 0; }
.kv-sh { margin: 0; display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; color: var(--text); letter-spacing: -.005em; }
.kv-sh .ph { font-size: 16px; color: var(--kv-acc); }
.kv-sh span { font-size: 12px; font-weight: 500; color: var(--kv-lab); background: var(--panel-2); border-radius: 999px; padding: 1px 8px; font-variant-numeric: tabular-nums; }

/* ---------- tablo */
.kv-tbl { border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--kv-sh); overflow: hidden;
  background: linear-gradient(180deg, color-mix(in srgb, var(--panel-2) 35%, var(--panel)), var(--panel) 120px); }
.kv-thead, .kv-row { display: grid; grid-template-columns: 28px minmax(0, 1.5fr) minmax(0, 1.2fr) 104px 112px 104px; align-items: center; gap: 14px; padding: 0 16px; }
/* GitHub girisleri: tarih sutunu yok (Hub tutmuyor), kurumlar genis */
.kv-tbl.t-gh .kv-thead, .kv-tbl.t-gh .kv-row { grid-template-columns: 28px minmax(0, 1.5fr) minmax(0, 1.6fr) 104px 104px; }
.kv-thead { height: 34px; font-size: 12px; color: var(--kv-lab); background: var(--panel-2); border-bottom: 1px solid var(--line); }
.kv-thead span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kv-gh { display: flex; align-items: baseline; gap: 7px; padding: 12px 16px 6px; font-size: 12px; font-weight: 600; color: var(--kv-lab); }
.kv-gh .ph { font-size: 14px; align-self: center; opacity: .85; }
.kv-gh small { font-size: 12px; font-weight: 400; color: var(--kv-lab); opacity: .8; }
.kv-gh .kv-smp { align-self: center; }
.kv-gh > em:last-child { margin-left: auto; font-style: normal; font-weight: 500; font-size: 11.5px; opacity: .75; font-variant-numeric: tabular-nums; }
.kv-gh:not(:nth-child(2)) { margin-top: 4px; border-top: 1px solid var(--line); padding-top: 14px; }
.kv-row { position: relative; min-height: 50px; padding-top: 8px; padding-bottom: 8px; font-size: 13px; }
.kv-row + .kv-row::after { content: ""; position: absolute; left: 16px; right: 16px; top: 0; height: 1px; background: color-mix(in srgb, var(--line) 70%, transparent); }
.kv-ic { width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; font-size: 15px; color: var(--kv-acc); background: var(--kv-acc-bg); }
.kv-row.k-admin .kv-ic { color: var(--kv-adm); background: var(--kv-adm-bg); }
.kv-row.k-miss .kv-ic { color: var(--kv-miss); background: var(--kv-miss-bg); }
.kv-nm { min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
/* Anahtar adi sayfanin asil bilgisi: hic kesilmez, sigmazsa satir kirar; makine etiketi yer yoksa alt satira iner */
.kv-nm code { font: 500 12.5px "Geist Mono", ui-monospace, monospace; color: var(--text); white-space: normal; overflow-wrap: anywhere; min-width: 0; }
.kv-mc { flex: none; display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; color: var(--kv-lab); padding: 1px 7px; border-radius: 999px; border: 1px solid var(--line); }
.kv-def { flex: none; font-style: normal; font-size: 11.5px; font-weight: 500; color: var(--kv-acc); padding: 1px 7px; border-radius: 999px; background: var(--kv-acc-bg); }
.kv-sc { min-width: 0; display: flex; align-items: center; gap: 8px; color: var(--muted); }
.kv-sc > span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kv-tag { flex: none; font-style: normal; font-size: 11.5px; font-weight: 600; letter-spacing: .01em; padding: 2px 8px; border-radius: 6px; color: var(--kv-acc); background: var(--kv-acc-bg); }
.kv-tag.t-admin { color: var(--kv-adm-t); background: var(--kv-adm-bg); }
.kv-dt, .kv-sv { white-space: nowrap; font-variant-numeric: tabular-nums; }
.kv-dt { color: var(--text); }
.kv-sv { color: var(--kv-lab); }
.kv-dt .pl, .kv-sv .pl { display: none; font-style: normal; }
.kv-nd { color: var(--faint); }
.kv-pr { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 500; white-space: nowrap; }
.kv-pr .ph { font-size: 14px; }
.kv-pr.ok { color: var(--kv-ok-t); }
.kv-pr.miss { color: var(--kv-miss-t); }
.kv-pr.unk { color: var(--kv-lab); }

/* ---------- alt notlar ve bos durum */
.kv-foot { margin: 0; display: flex; align-items: flex-start; gap: 7px; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.kv-foot .ph { font-size: 14px; margin-top: 2px; flex: none; color: var(--kv-lab); }
.kv-foot code { font: 12px "Geist Mono", ui-monospace, monospace; padding: 1px 6px; border-radius: 5px; background: var(--panel-2); color: var(--text); white-space: nowrap; }
/* Tarih notu: tablolarin ustunde, kasa eklenme gununu tutmuyorsa ("Eklendi" tire, "Son kayit" baska bilgi) */
.kv-datenote { margin: -6px 2px 0; display: flex; align-items: flex-start; gap: 7px; font-size: 12.5px; line-height: 1.45; color: var(--muted); }
.kv-datenote .ph { font-size: 14px; margin-top: 1px; flex: none; color: var(--kv-lab); }
.kv-foot-cli { padding: 12px 14px; border: 1px dashed var(--line); border-radius: 12px; }
.kv-foot-cli span { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.kv-empty { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 36px 16px; border: 1px dashed var(--line); border-radius: 14px; color: var(--muted); text-align: center; }
.kv-spin { animation: kv-spin 1s linear infinite; display: inline-block; }
@keyframes kv-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .kv-spin { animation: none; } }

/* ---------- dar pencere */
@media (max-width: 720px) {
  #kasa .kv-wrap { gap: 14px; }
  .kv-hero { padding: 14px; gap: 12px; border-radius: 12px; }
  .kv-hero h1 { font-size: 18px; margin-bottom: 4px; }
  .kv-hero h1 .ph { width: 28px; height: 28px; font-size: 16px; border-radius: 8px; }
  .kv-hero p { font-size: 13px; line-height: 1.5; }
  /* Satir iki satira iner: simge, ad, durum; altinda yetki ve kaydedilme gunu */
  .kv-thead { display: none; }
  .kv-row, .kv-tbl.t-gh .kv-row { grid-template-columns: 26px minmax(0, 1fr) auto; grid-template-areas: "ic nm st" ". sc sc" ". dt dt" ". sv sv"; gap: 3px 10px; padding: 10px 12px; }
  .kv-ic { grid-area: ic; width: 26px; height: 26px; font-size: 14px; align-self: start; }
  .kv-nm { grid-area: nm; }
  .kv-st { grid-area: st; }
  .kv-sc { grid-area: sc; font-size: 12.5px; }
  .kv-sc > span { white-space: normal; }
  .kv-dt { grid-area: dt; font-size: 12px; }
  .kv-sv { grid-area: sv; font-size: 12px; }
  .kv-dt .pl, .kv-sv .pl { display: inline; color: var(--kv-lab); }
  .kv-sum { padding-top: 12px; }
  .kv-row + .kv-row::after { left: 12px; right: 12px; }
  .kv-gh { padding: 10px 12px 4px; flex-wrap: wrap; }
  /* Yeni kabuk: Kasa acikken Atolye menusu ustte tek satir yatay serit (Gelisim'deki gibi); kesilen kenar solar (kasa.js navFade) */
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .app { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl { --kv-fl: 0px; --kv-fr: 32px; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line); padding: 8px 28px 8px 10px; scroll-padding-inline: 10px 28px; gap: 4px; scrollbar-width: none;
    mask-image: linear-gradient(90deg, transparent 0, #000 var(--kv-fl), #000 calc(100% - var(--kv-fr)), transparent 100%); -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--kv-fl), #000 calc(100% - var(--kv-fr)), transparent 100%); }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl.kv-fl { --kv-fl: 28px; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl.kv-fe { --kv-fr: 0px; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl::-webkit-scrollbar { display: none; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl h3 { display: none; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl button { flex: none; white-space: nowrap; height: 32px; padding: 0 10px; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl button .sy-dot { margin-left: 2px; }
  html.isl-on[data-isv="atolye"]:has(#kasa:not([hidden])) .is-atl .is-atl-old { margin-top: 0; margin-left: auto; }
}
@media (max-width: 520px) {
  .kv-nm code { font-size: 12px; }
  .kv-mc { display: none; }
  .kv-foot-cli { padding: 10px 12px; }
}
