/* Tazı Operasyon — YENİ SÜRÜM kabuğu (tasarım v2, saha-roller.html · 29.09). Eski sayfaların (v2/shell.css, v2/app.css) yanında
   /operasyon/yeni/ altında denenir. Görsel dil: Public Sans + IBM Plex Mono, sarı vurgu #FECC1F, durum renk jetonları, telefonda alt menü,
   masaüstünde koyu yan menü; kart / çip / satır bileşenleri. Açık / koyu tema: sistem tercihi, üst çubuktaki düğmeyle değişir
   (html[data-theme], localStorage 'yeni_tema'). Bileşen adları tasarımla aynı (tile, grpcard, drow, sc, chip, fchip, note…). */
/* ys77 (02.10): IBM Plex Mono yerel (Google Fonts sürümünde 'zero' özelliği yok). Latin + Latin Ext (Türkçe), 400/500/600/700, OFL (yazi/OFL.txt).
   Sıfır 9/8/6 ile karışmasın: 'zero' özelliği kök düzeyde açık (eğik çizgili 0); Public Sans'ta bu özellik yok, yalnız --mono etkilenir. */
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('yazi/ibm-plex-mono-400.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('yazi/ibm-plex-mono-500.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:600;font-display:swap;src:url('yazi/ibm-plex-mono-600.woff2') format('woff2')}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:700;font-display:swap;src:url('yazi/ibm-plex-mono-700.woff2') format('woff2')}
:root{
  --accent:#FECC1F; --accent-ink:#2F2B3D;
  --bg:#F5F2EC; --surface:#FFFFFF; --ink:#2F2B3D; --ink2:#4B4759; --muted:#6E6A7B; --line:#E7E3DB; --line2:#F0EDE6; --field:#C9C5D4;
  --ok:#146C3A; --ok-bg:#E3F4E9; --warn:#8A4B00; --warn-bg:#FDEFDA; --bad:#B3261E; --bad-bg:#FBE9E7; --info:#0B4F84; --info-bg:#E5F1FB;
  --saha:#1E7445; --saha-bg:#E1F2E7; --kademe:#2A64A0; --kademe-bg:#E3EEF9; --transfer:#7A4FB0; --transfer-bg:#EFE7F9;
  --depo:#6B6F2A; --depo-bg:#F0F1DC; --kayip:#A63A2A; --kayip-bg:#F8E3DF; --gri:#5F6763; --gri-bg:#ECEEEC;
  --side:#2A2636; --side-ink:#E9E6F2; --side-muted:#A29DB4;
  --serit-bg:#FFF4D6; --serit-ink:#5C4400; --serit-line:#D9A800;
  --golge:0 1px 2px rgba(20,15,40,.04);
  /* tasarım Sprint-A (30 §1-§3, §5, §8): dolu durum zemini üstü yazı (--on-*), ters yüzey (bildirim), klavye odağı, telefon alt menüsü
     yüksekliği (kabuk.js altOlcKur ölçer; buradaki yalnız JS gelmeden önceki yedek), sabit alt öğe katmanı (menü 6 < 7 < örtü 20).
     --map-* / --tur-* yalnız tanım (harita/grafik paleti, tüketicisi Sprint-B). KT1-a: --gri/--saha/--transfer/--kademe/--kayip açıkta bir ton koyu (AA). */
  --on-bad:#FFFFFF; --on-ok:#FFFFFF; --on-warn:#FFFFFF; --on-info:#FFFFFF; --on-av:#FFFFFF; --on-gri:#FFFFFF;
  --ters-bg:var(--ink); --ters-ink:var(--surface); --toast-bg:var(--ters-bg); --toast-ink:var(--ters-ink);
  --odak:var(--info); --odak-w:3px; --odak-off:2px;
  --ys-alt-h:calc(80px + env(safe-area-inset-bottom,0px)); --ys-z-sabit:7;
  --map-1:#2F6FB0; --map-2:#0F9F8F; --map-3:#C2185B; --map-4:#E8590C; --map-5:#8A5CC2; --map-6:#6B6F2A; --map-7:#4338CA; --map-8:#64748B;
  --tur-toplama:var(--map-3); --tur-dagitim:var(--map-7); --tur-batarya:var(--map-2); --tur-kontrol:var(--map-4); --tur-diger:var(--map-8); --tur-pasif:var(--field);
  --sans:'Public Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Consolas,monospace;
  /* Ölçek token'ları (dengeleme sadeleştirme 12.10, 32-DESIGN-REVIEW § Ölçek kararı): TEK ölçek, --ys- önekli. Değerler kabuk literal'lerinden
     türetildi; mevcut literal'ler bu işte DEĞİŞMEZ (göç ayrı janitor işi). Yeni CSS yalnız bunları kullanır. Renk değil → koyu temada aynı. */
  --ys-s-1:4px; --ys-s-2:6px; --ys-s-3:8px; --ys-s-4:10px; --ys-s-5:12px; --ys-s-6:16px; --ys-s-7:20px; --ys-s-8:24px;
  --ys-r-s:10px; --ys-r-m:12px; --ys-r-l:14px; --ys-r-hap:999px;
  --ys-fs-1:10.5px; --ys-fs-2:12px; --ys-fs-3:13.5px; --ys-fs-4:15px; --ys-fs-5:17px; --ys-fs-6:19px; --ys-fs-7:26px;
  --ys-hit-s:36px; --ys-hit:44px; --ys-hit-l:48px;
  color-scheme:light;
}
:root,input,select,textarea,button{font-feature-settings:"zero" 1}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --accent-ink:#231F2E;
  --bg:#15171C; --surface:#1D2027; --ink:#ECEAF3; --ink2:#C9C6D4; --muted:#9A96AA; --line:#2C2F38; --line2:#252830; --field:#3A3E49;
  --ok:#6BD39A; --ok-bg:#173524; --warn:#F2B34B; --warn-bg:#3A2A10; --bad:#F2887C; --bad-bg:#401D19; --info:#7DBBF0; --info-bg:#13304A;
  --saha:#6BD39A; --saha-bg:#16321F; --kademe:#7DB2EC; --kademe-bg:#172A40; --transfer:#BD9BEA; --transfer-bg:#2C2140;
  --depo:#CACF84; --depo-bg:#2E2F19; --kayip:#F2917F; --kayip-bg:#3F1F1A; --gri:#AEB5B1; --gri-bg:#2A2D2C;
  --side:#0F1014; --side-ink:#E9E6F2; --side-muted:#8D89A0;
  --serit-bg:#33290A; --serit-ink:#F5D778; --serit-line:#7A6210;
  --golge:0 1px 2px rgba(0,0,0,.25);
  --on-bad:var(--accent-ink); --on-ok:var(--accent-ink); --on-warn:var(--accent-ink); --on-info:var(--accent-ink); --on-av:var(--accent-ink); --on-gri:var(--accent-ink);
  --map-1:#7DB2EC; --map-2:#4FD1C5; --map-3:#F06292; --map-4:#FF8A4C; --map-5:#BD9BEA; --map-6:#CACF84; --map-7:#8C9EFF; --map-8:#94A3B8;
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --accent-ink:#231F2E;
  --bg:#15171C; --surface:#1D2027; --ink:#ECEAF3; --ink2:#C9C6D4; --muted:#9A96AA; --line:#2C2F38; --line2:#252830; --field:#3A3E49;
  --ok:#6BD39A; --ok-bg:#173524; --warn:#F2B34B; --warn-bg:#3A2A10; --bad:#F2887C; --bad-bg:#401D19; --info:#7DBBF0; --info-bg:#13304A;
  --saha:#6BD39A; --saha-bg:#16321F; --kademe:#7DB2EC; --kademe-bg:#172A40; --transfer:#BD9BEA; --transfer-bg:#2C2140;
  --depo:#CACF84; --depo-bg:#2E2F19; --kayip:#F2917F; --kayip-bg:#3F1F1A; --gri:#AEB5B1; --gri-bg:#2A2D2C;
  --side:#0F1014; --side-ink:#E9E6F2; --side-muted:#8D89A0;
  --serit-bg:#33290A; --serit-ink:#F5D778; --serit-line:#7A6210;
  --golge:0 1px 2px rgba(0,0,0,.25);
  --on-bad:var(--accent-ink); --on-ok:var(--accent-ink); --on-warn:var(--accent-ink); --on-info:var(--accent-ink); --on-av:var(--accent-ink); --on-gri:var(--accent-ink);
  --map-1:#7DB2EC; --map-2:#4FD1C5; --map-3:#F06292; --map-4:#FF8A4C; --map-5:#BD9BEA; --map-6:#CACF84; --map-7:#8C9EFF; --map-8:#94A3B8;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
button{font:inherit;color:inherit}
:focus-visible{outline:var(--odak-w) solid var(--odak);outline-offset:var(--odak-off)}
button:active{filter:brightness(.97)}

/* ── iskelet ─────────────────────────────────────────────────────────────── */
.ys-app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}
.ys-side{display:none}
.ys-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--bg)}
.ys-serit{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--serit-bg);color:var(--serit-ink);border-bottom:1px dashed var(--serit-line);padding:5px 16px;font-size:12px;font-weight:600}
.ys-serit b{font-weight:800}
.ys-serit a{margin-left:auto;font-weight:800;text-decoration:underline;text-underline-offset:2px;white-space:nowrap}
.ys-test{background:#f59e0b;color:#111;text-align:center;font-weight:700;padding:4px 8px;font-size:12.5px}
.ys-tbar{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:10px;min-height:56px}
/* ys7 (m1): başlık hiç kesilmez; modül (Operasyon / Stok) ve kapsam (kademe) .ys-alt'ta. Masaüstünde başlığın sağında (kapsam kısalır),
   telefonda başlığın ALTINDA küçük ikinci satır. */
.ys-bas{flex:1;min-width:0;display:flex;align-items:center;gap:10px}
/* ys16: Pano'dan gelinen sayfada "‹ Pano" dönüşü (kabuk.js panoGeri) */
.ys-geri{flex-shrink:0;align-self:center;display:inline-flex;align-items:center;min-height:36px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-weight:700;font-size:13px;text-decoration:none;white-space:nowrap}
.ys-geri:hover{background:var(--line2)}
.ys-tbar h1{font-size:19px;font-weight:800;margin:0;letter-spacing:-.01em;flex-shrink:0;white-space:nowrap}
.ys-alt{display:flex;align-items:center;gap:8px;min-width:0;margin-left:auto}
.ys-alt:not(:has(> :not([hidden]))){display:none}
.ys-scope{display:flex;align-items:center;gap:7px;font-weight:700;font-size:13.5px;min-width:0}
.ys-scope span.t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ys-scope .ring{width:12px;height:12px;border-radius:50%;border:2.5px solid var(--kademe);flex-shrink:0}
@media (max-width:599px){
  .ys-tbar{padding-top:6px;padding-bottom:6px}
  .ys-bas{flex-direction:column;align-items:flex-start;gap:1px}
  .ys-tbar h1{font-size:18px;line-height:1.2;white-space:normal;overflow-wrap:anywhere;flex-shrink:1;max-width:100%}
  .ys-alt{margin-left:0;max-width:100%;gap:6px;font-size:12px;color:var(--muted)}
  .ys-scope{font-size:12px;font-weight:600;gap:5px;color:var(--muted)}
  .ys-scope .ring{width:9px;height:9px;border-width:2px}
}
.ys-ib{width:36px;height:36px;border-radius:50%;border:0;background:var(--line2);color:var(--ink2);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.ys-ib svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* ys49: yan menüyü gizle / göster — yalnız masaüstü (telefonda alt menü var, düğme yok) */
.ys-mgiz{display:none}
.ys-ib:focus-visible{outline:var(--odak-w) solid var(--odak);outline-offset:2px}
.ys-av{width:36px;height:36px;border-radius:50%;border:0;background:var(--line2);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink2);cursor:pointer;flex-shrink:0}
.ys-content{flex:1;padding:14px 16px 24px;display:flex;flex-direction:column;gap:12px;min-width:0}

/* alt menü (telefon) */
.ys-bottom{position:sticky;bottom:0;z-index:6;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;align-items:end;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(8px + env(safe-area-inset-bottom,0px))}
.ys-bt{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0;color:var(--muted);font-size:10.5px;font-weight:600;border:0;background:transparent;min-height:46px;justify-content:flex-end;position:relative;cursor:pointer;text-decoration:none;min-width:0}
.ys-bt span.l{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ys-bt.on{color:var(--ink)}
.ys-bt .gl{width:22px;height:22px;display:flex;align-items:center;justify-content:center}
.ys-bt .gl svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ys-bt.fab .gl{width:50px;height:50px;border-radius:16px;background:var(--accent);color:var(--accent-ink);margin-bottom:1px;box-shadow:0 5px 14px -4px rgba(254,204,31,.7)}
.ys-bt.fab .gl svg{width:24px;height:24px}

/* Diğer paneli (telefon) */
.ys-ov{position:fixed;inset:0;background:rgba(15,12,25,.45);z-index:20}
.ys-sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;max-height:80vh;overflow:auto;background:var(--bg);border-radius:18px 18px 0 0;padding:10px 14px calc(16px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:6px}
.ys-sheet .tut{width:44px;height:5px;border-radius:3px;background:var(--line);margin:2px auto 6px}
.ys-sheet-bas{display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;position:sticky;top:-10px;background:var(--bg);padding:2px 0 4px;z-index:2}.ys-sheet-bas b{flex:1;font-size:16px;font-weight:800}
.tnode{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 13px;border:1px solid var(--line);border-radius:12px;background:var(--surface);width:100%;text-align:left;cursor:pointer;text-decoration:none;color:var(--ink)}
.tnode b{font-size:14.5px;font-weight:700}.tnode .d{display:block;font-size:12px;color:var(--muted);font-weight:500}
.tnode .txt{flex:1;min-width:0}.tnode .num{font-family:var(--mono);font-size:12px;color:var(--muted)}
/* ys117 (04.10): bulunduğun sayfa artık sarı çerçeveyle vurgulanmıyor — aria-current semantiği korunur, görsel vurgu yok */
/* ys7: Diğer menüsü gruplu (MENU.bolumler); telefonda iki sütun, kompakt */
.ys-grp{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:6px 4px 0}
.ys-side .ys-grp{color:var(--side-muted);padding:2px 12px 4px}
.ys-grpl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.ys-grpl .tnode{min-height:44px;padding:0 10px}
.ys-grpl .tnode b{font-size:13.5px;overflow-wrap:anywhere}

/* hesap menüsü */
.ys-menu{position:fixed;z-index:30;min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px -10px rgba(20,15,40,.35);padding:6px;display:flex;flex-direction:column}
.ys-menu .mt{font-size:12px;color:var(--muted);padding:6px 10px 8px;border-bottom:1px solid var(--line);margin-bottom:4px;word-break:break-all}
.ys-menu a,.ys-menu button{display:flex;align-items:center;gap:8px;min-height:44px;text-align:left;border:0;background:transparent;padding:9px 10px;border-radius:8px;font-size:13.5px;font-weight:600;cursor:pointer;text-decoration:none;color:var(--ink)}
.ys-menu a:hover,.ys-menu button:hover{background:var(--line2)}
/* ys172 (menü sadeleştirme): hesap menüsü başlığı ad · rol (e-posta küçük), Yardım / Hesap başlıkları, sürüm etiketi; seçicide Benim ayracı */
.ys-menu .mt b{display:block;font-size:13.5px;font-weight:800;color:var(--ink);word-break:normal;overflow-wrap:anywhere}
.ys-menu .mt small{display:block;font-size:11.5px;margin-top:1px}
.ys-menu .ys-grp{padding:8px 10px 2px}
.ys-menu .ys-surum{color:var(--muted);font-size:12px;font-weight:600}
.ys-modm .ayr{height:1px;background:var(--line);margin:4px 6px;flex-shrink:0}
/* ys172: katlı "Daha fazla" (Diğer paneli + yan menü) */
.ys-dfz{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0 13px;border:1px dashed var(--field);border-radius:12px;background:transparent;color:var(--ink2);font:inherit;font-size:14px;font-weight:700;cursor:pointer;text-align:left}
.ys-dfz .ok{margin-left:auto;font-size:16px;transition:transform .15s}
.ys-dfz[aria-expanded="true"] .ok{transform:rotate(90deg)}
.ys-sheet .ys-dfzl{margin-top:2px}
.ys-side .ys-dfz{border:0;border-radius:10px;min-height:42px;padding:0 12px;color:var(--side-muted);font-size:14px;font-weight:600}
.ys-side .ys-dfz:hover{color:var(--side-ink);background:rgba(255,255,255,.05)}
.ys-side .ys-dfzl{display:flex;flex-direction:column;gap:2px}
/* ys172 (KARAR-8): üst çubukta bildirim zili (sayaç köşede) · avatar Yenilikler noktası · Onaylar sekme şeridi */
.ys-zil{position:relative;text-decoration:none}
.ys-zil .ys-rz{position:absolute;top:-3px;right:-5px;margin:0;min-width:18px;padding:2px 5px;text-align:center;font-size:10.5px;background:var(--bad);color:var(--on-bad)}
.ys-av,.ys-side .usr .av{position:relative}
.ys-av.ys-nokta::after,.ys-side .usr .av.ys-nokta::after{content:"";position:absolute;top:-1px;right:-1px;width:10px;height:10px;border-radius:50%;background:var(--bad);border:2px solid var(--surface)}
.ys-side .usr .av.ys-nokta::after{border-color:var(--side)}
.ys-onay-serit{margin-bottom:8px}

/* masaüstü: koyu yan menü */
@media (min-width:900px){
  .ys-app{display:grid;grid-template-columns:222px minmax(0,1fr);min-height:100vh}
  .ys-side{display:flex;flex-direction:column;gap:2px;background:var(--side);color:var(--side-ink);padding:14px 10px;position:sticky;top:0;height:100vh;overflow:auto}
  .ys-bottom{display:none}
  .ys-content{padding:18px 20px 28px}
  .ys-tbar .ys-av{display:none}
  .ys-sheet,.ys-ov{display:none!important}
  .ys-mgiz{display:flex;width:32px;height:32px;background:transparent;border:1px solid var(--line)}
  .ys-mgiz:hover{background:var(--line2)}
  .ys-app.ys-menu-gizli{grid-template-columns:minmax(0,1fr)}
  .ys-app.ys-menu-gizli .ys-side{display:none}
  .ys-app.ys-menu-gizli .ys-mgiz{background:var(--serit-bg);color:var(--serit-ink);border-color:var(--serit-line)}
}
.ys-side .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 12px;text-decoration:none;color:inherit}
/* yr261012-001: marka "tazı ERP" (docs/marka/tazi-erp.svg) maske ile; renk --accent (tema sarısı). Ad metni ekran okuyucu için gizli. */
.ys-side .brand .ys-logo{display:block;width:132px;height:30px;flex-shrink:0;background:var(--accent);-webkit-mask:url(marka/tazi-erp.svg) no-repeat left center/contain;mask:url(marka/tazi-erp.svg) no-repeat left center/contain}
.ys-kapi-logo{display:block;width:150px;height:34px;margin-bottom:6px;background:var(--ink);-webkit-mask:url(marka/tazi-erp.svg) no-repeat left center/contain;mask:url(marka/tazi-erp.svg) no-repeat left center/contain}
.ys-side .brand .ys-gz{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ys-side .brand .lg{width:32px;height:32px;border-radius:9px;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;flex-shrink:0}
.ys-side .brand b{font-size:15px;font-weight:800;display:block}.ys-side .brand span{display:block;font-size:11px;color:var(--side-muted);font-weight:600}
.ys-ni{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 12px;border-radius:10px;color:var(--side-muted);font-weight:600;font-size:14px;text-decoration:none}
.ys-ni:hover{color:var(--side-ink);background:rgba(255,255,255,.05)}
.ys-ni .gl{width:20px;display:flex;justify-content:center}
.ys-ni .gl svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
/* ys117 (04.10): yan menüde bulunduğun sayfa artık sarı zemin/renkle vurgulanmıyor — aria-current semantiği korunur, görsel vurgu yok */
.ys-ni.ys-talep{background:var(--accent);color:var(--accent-ink);font-weight:800;margin-bottom:2px}.ys-ni.ys-talep:hover{background:var(--accent);color:var(--accent-ink);filter:brightness(1.05)} /* ys95: + Talep */
.tnode.ys-talep{border-color:var(--accent);background:var(--serit-bg)} /* ys95: Diğer panelinde + Talep */
.ys-rz{margin-left:auto;font:700 11px var(--mono);line-height:1;padding:3px 7px;border-radius:999px;background:rgba(127,127,127,.22);color:inherit}
.ys-rz.bad{background:var(--bad);color:var(--on-bad)}.tnode .ys-rz{margin-left:6px}
.ys-ni .eski,.tnode .eski{margin-left:auto;font-size:10px;font-weight:700;letter-spacing:.03em;padding:1px 6px;border-radius:5px;border:1px solid currentColor;opacity:.6}
.ys-side .ayr{height:1px;background:rgba(255,255,255,.08);margin:8px 6px}
.ys-side .usr{margin-top:auto;display:flex;align-items:center;gap:9px;padding:10px 8px;border-top:1px solid rgba(255,255,255,.08);background:transparent;border-left:0;border-right:0;border-bottom:0;color:inherit;text-align:left;cursor:pointer;width:100%}
.ys-side .usr .av{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:600;font-size:12px;flex-shrink:0;color:var(--side-ink)}
.ys-side .usr b{font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ys-side .usr span{display:block;font-size:11px;color:var(--side-muted)}
.ys-side .usr div{min-width:0}

/* ── bileşenler (tasarımla aynı adlar) ───────────────────────────────────── */
.btn{min-height:48px;border:0;border-radius:13px;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;width:100%;cursor:pointer;text-decoration:none}
.btn-p{background:var(--accent);color:var(--accent-ink)}.btn-s{background:var(--surface);color:var(--ink);border:1.5px solid var(--field)}.btn-g{background:var(--line2);color:var(--ink)}
.btn-d{background:var(--bad);color:var(--on-bad)} /* tasarım Sprint-A: onay panelindeki son yıkıcı düğme (30 §6 D16) */
.btn:disabled{opacity:.45;cursor:not-allowed}
.mini{min-height:40px;padding:0 13px;border-radius:10px;border:0;font-size:13.5px;font-weight:700;background:var(--accent);color:var(--accent-ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;text-decoration:none;white-space:nowrap}
.mini.s{background:var(--line2);color:var(--ink)}
.mini.d{background:var(--bad);color:var(--on-bad)}
.mini:disabled{opacity:.45;cursor:not-allowed}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:11px;box-shadow:var(--golge);min-width:0}
.card .ct{font-size:15px;font-weight:800;letter-spacing:-.01em}
.lbl{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.sec{display:flex;align-items:center;gap:8px;margin-top:2px}.sec .cnt{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--accent-ink);background:var(--accent);min-width:20px;height:20px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}
.note{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:10px 12px;font-size:12.5px;color:var(--ink2);line-height:1.5}.note b{color:var(--ink)}
.note.k{background:var(--kademe-bg);border-color:transparent;color:var(--kademe)}.note.k b{color:inherit}
.bos{background:var(--surface);border:1px dashed var(--field);border-radius:14px;padding:22px 16px;text-align:center;color:var(--muted);font-size:13.5px;line-height:1.5}
.bos b{display:block;color:var(--ink);font-size:15px;margin-bottom:4px}
.hata{background:var(--bad-bg);color:var(--bad);border-radius:12px;padding:12px 14px;font-size:13.5px;font-weight:600}
.yukleniyor{color:var(--muted);font-size:13.5px;padding:18px 4px;display:flex;align-items:center;gap:10px}
.yukleniyor::before{content:"";width:16px;height:16px;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--accent);animation:ysd .8s linear infinite}
@keyframes ysd{to{transform:rotate(360deg)}}

.sc{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px 9px;border-radius:12px;font-size:12px;font-weight:600;line-height:1.25;max-width:100%}
.sc::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}
.sc.saha{background:var(--saha-bg);color:var(--saha)}.sc.kademe{background:var(--kademe-bg);color:var(--kademe)}.sc.transfer{background:var(--transfer-bg);color:var(--transfer)}
.sc.depo{background:var(--depo-bg);color:var(--depo)}.sc.kayip{background:var(--kayip-bg);color:var(--kayip)}.sc.gri{background:var(--gri-bg);color:var(--gri)}
.chip{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:3px 9px;border-radius:12px;font-size:12px;font-weight:700;line-height:1.25;max-width:100%}
.chip.mono{font-family:var(--mono);font-weight:600}
.c-ok{background:var(--ok-bg);color:var(--ok)}.c-warn{background:var(--warn-bg);color:var(--warn)}.c-bad{background:var(--bad-bg);color:var(--bad)}.c-gry{background:var(--line2);color:var(--ink2)}.c-info{background:var(--info-bg);color:var(--info)}
.tg{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:5px;font-size:10.5px;font-weight:700;white-space:nowrap}
.tg.oto{background:var(--saha-bg);color:var(--saha)}.tg.yal{background:var(--line2);color:var(--ink2)}
.legend{display:flex;flex-wrap:wrap;gap:6px}

.filters{display:flex;gap:7px;flex-wrap:wrap}
.fchip{min-height:38px;padding:0 13px;border-radius:10px;border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font-size:13.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;max-width:100%}
.fchip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.fchip .n{font-family:var(--mono);font-size:12px;opacity:.8}
.fchip:disabled{opacity:.45;cursor:default}
.inpt{min-height:44px;border:1.5px solid var(--field);border-radius:12px;background:var(--surface);display:flex;align-items:center;padding:0 12px;gap:8px;flex:none;width:100%;min-width:0}
.inpt input{border:0;outline:0;background:transparent;font-family:var(--mono);font-size:14px;color:var(--ink);flex:1;min-width:0;height:40px}
.inpt input::placeholder{color:var(--muted)}
.inpt:focus-within{border-color:var(--odak);box-shadow:0 0 0 1px var(--odak)}
.inpt .ic{color:var(--muted);font-size:15px}
.inpt button{border:0;background:transparent;color:var(--muted);font-size:18px;cursor:pointer;padding:0 2px}

.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.tile{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 13px;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:inherit;box-shadow:var(--golge);min-width:0}
.tile .n{font-family:var(--mono);font-size:26px;font-weight:600;line-height:1.05}
.tile .l{font-size:11.5px;color:var(--muted)}
.tile.bad .n{color:var(--kayip)}.tile.ok .n{color:var(--saha)}.tile.info .n{color:var(--kademe)}.tile.warn .n{color:var(--warn)}.tile.tr .n{color:var(--transfer)}.tile.gri .n{color:var(--gri)}
a.tile::after{content:"›";position:absolute;top:9px;right:11px;color:var(--muted);font-weight:700}

.grpcard{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--golge)}
.grpcard .gh{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.grpcard .gh:last-child{border-bottom:0}
.grpcard .gh .n{margin-left:auto;font-family:var(--mono);font-weight:600;font-size:15px}
.grpcard .gh .sub{font-size:11.5px;color:var(--muted);font-weight:600}
.grpcard .gi{display:flex;align-items:center;gap:9px;padding:9px 13px;border:0;border-bottom:1px solid var(--line2);cursor:pointer;width:100%;background:transparent;text-align:left;min-height:44px}
.grpcard .gi:last-child{border-bottom:0}
.grpcard .gi:hover{background:var(--line2)}
.grpcard .gi .sc{min-width:0}
.grpcard .gi .cn{font-family:var(--mono);font-weight:600;font-size:14px;margin-left:auto}
.grpcard .gi.z{opacity:.5}
.grpcard .gi .ar{color:var(--muted);font-size:18px}
.grpcard .more{display:block;width:100%;border:0;padding:11px 13px;font-size:12.5px;color:var(--kademe);font-weight:700;cursor:pointer;background:var(--bg);text-align:left}

.drow{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:11px 13px;display:flex;align-items:center;gap:10px;width:100%;text-align:left;box-shadow:var(--golge);min-width:0}
.drow .qr{font-family:var(--mono);font-weight:600;font-size:15px;min-width:70px;word-break:break-all}
.drow .mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.drow .meta{font-family:var(--mono);font-size:11.5px;color:var(--muted);display:flex;gap:4px 8px;flex-wrap:wrap}
.drow .cips{display:flex;gap:6px;flex-wrap:wrap}
.drow .act{display:flex;gap:6px;flex-wrap:wrap}
.drow a.ln{font-size:12px;font-weight:700;color:var(--kademe);text-decoration:none}
.liste{display:flex;flex-direction:column;gap:8px}
/* dikey satır (Bakılacaklar): üstte QR + durum, altta bilgi, çipler ve düğmeler */
.drow.dik{flex-direction:column;align-items:stretch;gap:7px}
.drow.dik .ust{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.drow.dik .ust .qr{min-width:0}
.drow.dik .ust .pulse{margin-left:auto;color:var(--kayip)}
.drow .act .mini{min-height:36px;padding:0 11px;font-size:13px}
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
@media (max-width:420px){.grid-cards{grid-template-columns:minmax(0,1fr)}}

.seg{display:inline-grid;grid-auto-flow:column;gap:5px;background:var(--line2);padding:4px;border-radius:12px;max-width:100%;align-self:flex-start}
.segbtn{min-height:40px;border:0;background:transparent;border-radius:9px;font-size:13.5px;font-weight:700;color:var(--ink2);padding:0 14px;cursor:pointer;white-space:nowrap}
.segbtn.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(20,15,40,.12)}

.geri{align-self:flex-start;border:0;background:transparent;color:var(--kademe);font-weight:700;font-size:13.5px;cursor:pointer;padding:6px 2px;min-height:36px}
.bas{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bas .n{margin-left:auto;font-family:var(--mono);font-weight:600}

.tblwrap{overflow-x:auto;border-radius:12px;border:1px solid var(--line);background:var(--surface);max-width:100%}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--line);white-space:nowrap}
th{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:500;background:var(--bg)}
tr:last-child td{border-bottom:0}td.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
td.bad{color:var(--kayip)}
tr.top td{font-weight:800}
tr[data-k]{cursor:pointer}
tr[data-k]:hover td{background:var(--line2)}

#ys-toast{position:fixed;left:50%;transform:translateX(-50%) translateY(10px);bottom:calc(var(--ys-alt-h) + 12px);background:var(--toast-bg);color:var(--toast-ink);padding:11px 17px;border-radius:11px;font-size:13.5px;font-weight:600;opacity:0;transition:.2s;pointer-events:none;z-index:50;max-width:calc(100vw - 32px)}
#ys-toast.on{opacity:1;transform:translateX(-50%)}
/* YAMA A (GMY 20.10): ret nedeni kalıcı kırmızı bildirim (kabuk.js hata) — 7 sn, dokununca kapanır; telefonda okunur boy */
#ys-toast.hata{background:var(--bad);color:var(--on-bad);pointer-events:auto;cursor:pointer;font-size:14.5px;line-height:1.4;max-width:min(560px,calc(100vw - 24px));padding:13px 17px;box-shadow:0 6px 20px rgba(0,0,0,.25);z-index:9500}

/* giriş / bilgi ekranı */
.ys-kapi{max-width:420px;margin:24px auto;width:100%}
.ys-kapi form{display:flex;flex-direction:column;gap:8px}
.ys-kapi label{font-size:12.5px;font-weight:700;color:var(--ink2)}
.ys-kapi input{min-height:46px;border:1.5px solid var(--field);border-radius:12px;background:var(--surface);color:var(--ink);padding:0 12px;font:inherit;font-size:15px}
.ys-kapi .err{color:var(--bad);font-weight:600;font-size:13px;min-height:18px}
.ys-kapi p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}
@media (prefers-reduced-motion:no-preference){.pulse{animation:yspp 2.4s ease-in-out infinite}@keyframes yspp{0%,100%{opacity:1}50%{opacity:.5}}}
@media (prefers-reduced-motion:reduce){.yukleniyor::before{animation:none}}

/* ── KOMPAKT (birlesim3 (f) · kullanıcı: "hiçbir yerde kalıcı uzun sayfa istemiyorum, kompakt, genelde telefondan") ─────────────
   Kart iç boşlukları, satır yükseklikleri ve boşluklar sıkılaştırıldı; dokunma alanları en az 34–36 px. Uzun liste / bölüm için
   yeni/kompakt.js (aç / kapa, "daha fazla göster", "?" ipucu). */
.ys-content{padding:10px 12px 20px;gap:9px}
.card{padding:11px 12px;gap:8px;border-radius:12px}
.card .ct{font-size:14.5px}
.drow{padding:8px 11px;gap:8px;border-radius:11px}
.drow .mid{gap:4px}
.grid-cards,.liste{gap:6px}
.grpcard{border-radius:12px}
.grpcard .gh{padding:8px 12px}
.grpcard .gi{padding:6px 12px;min-height:38px}
.note{padding:8px 11px;font-size:12px;line-height:1.45}
.bos{padding:16px 14px}
.filters{gap:6px}
.fchip{min-height:34px;padding:0 11px;font-size:13px}
.seg{padding:3px;gap:4px}
.segbtn{min-height:36px;padding:0 12px}
.btn{min-height:44px}
.mini{min-height:36px}
.tiles{gap:6px}
.tile{padding:9px 11px}
.tile .n{font-size:22px}
.inpt{min-height:40px}
.inpt input{height:36px}
.sc,.chip{min-height:22px;padding:2px 8px}
th,td{padding:7px 9px}
@media (min-width:900px){.ys-content{padding:16px 20px 24px;gap:11px}}

/* ── ortak alttan açılan panel davranışı (panel.js · YeniPanel, 01.10) ──
   Telefonda (< 900 px): YARIM (en çok görünen alanın %75'i; içerik kısaysa kısa) ↔ TAM EKRAN (tutamağa dokun / sürükle). --ysp-vh: görünen
   alan yüksekliği (klavye açılınca küçülür; panel klavyenin üstünde kalır). İçerik panel içinde kayar (overscroll contain), sayfa kaymaz. */
.ysp-ov{cursor:pointer;-webkit-tap-highlight-color:transparent}
.ysp{cursor:auto} /* 12.10: perdenin el imleci / Android dokunma vurgusu panel içeriğine geçmesin (ekran soluk görünüyordu) */
.ysp{overscroll-behavior:contain}
.ysp .tut.ysp-tut{box-sizing:content-box;width:48px;height:5px;padding:10px 28px;margin:-6px auto -4px;border-radius:14px;background:var(--line);background-clip:content-box;cursor:grab;touch-action:none;flex-shrink:0;-webkit-tap-highlight-color:transparent}
.ysp-tutsat{flex-basis:100%;display:flex;justify-content:center;min-width:0}
.ysp .bas{flex-wrap:wrap;row-gap:2px}
.ysp .tut.ysp-tut:focus-visible{outline:var(--odak-w) solid var(--odak);outline-offset:-4px}
.ysb-x{width:38px;height:38px;border-radius:50%;border:0;background:var(--line2);color:var(--ink2);font-size:18px;cursor:pointer;flex-shrink:0} /* × (saha.css'te de; her sayfada olsun) */
.ysp-x{position:absolute;top:8px;right:10px;z-index:3;width:38px;height:38px;border-radius:50%;border:0;background:var(--line2);color:var(--ink2);font-size:20px;line-height:1;cursor:pointer}
.ysp-alt{display:flex;gap:8px;padding-top:4px;flex-shrink:0}
.ysp-vaz{min-height:46px;flex:1;border-radius:12px;border:1.5px solid var(--field);background:var(--surface);color:var(--ink);font:inherit;font-size:14.5px;font-weight:700;cursor:pointer}
.ysp-vaz.ysp-vaz-d{flex:1 1 120px}
@media (max-width:899.98px){
  .ysp{max-height:75vh!important;max-height:min(75dvh,calc(var(--ysp-vh,100dvh) - 12px))!important;transition:max-height .18s ease,border-radius .18s ease}
  .ysp[data-ysp="tam"]{height:100vh!important;height:var(--ysp-vh,100dvh)!important;max-height:none!important;border-radius:0!important}
  .ysp.ysp-surukle{transition:none!important}
}
@media (min-width:900px){.ysp .tut.ysp-tut{display:none}}

/* ── tasarım Sprint-A (08.10 · 49-SPRINT-CONTRACT) ─────────────────────────────────────────────────────────────────────────
   Masaüstü (alt menü gizli): --ys-alt-h yedeği 0 (JS gecikse de), bildirim eski yerine yakın (alt boşluk 24 px). */
@media (min-width:900px){:root{--ys-alt-h:0px}}
@media (min-width:900px){#ys-toast{bottom:24px}}
/* Dokunmatik (pointer:coarse): kutuya dokununca iOS ekranı büyütmesin → girdi yazısı en az 16 px. :where() özgüllüğü 0: daha büyük yazılı
   girdi (kasa tutarı 22 px) kendi sayfa CSS'inde coarse + !important istisnasıyla korunur. Tek yer; sayfalara yeni yerel 16 px eklenmez. */
@media (pointer:coarse){
  :where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=hidden]),select,textarea){font-size:16px!important}
}
/* ys236 (GMY 18.10): iPhone Safari tarih / saat kutusu verilen genişliği dinlemiyor (yerel görünüm kendi enini dayatıyor) → iki sütunlu
   formlarda yandaki alana biniyor / karttan taşıyor (İş Yönetimi, İK kartı, Call center). Yalnız iOS'ta (-webkit-touch-callout) yerel
   görünüm kapatılır; masaüstü ve Android değişmez. :where() özgüllüğü 0: sayfa CSS'indeki kenarlık / yükseklik / dolgu geçerli kalır,
   stilsiz kutu bu varsayılanlarla görünür. Tek yer; sayfalara yerel düzeltme eklenmez. */
@supports (-webkit-touch-callout:none){
  :where(input[type=date],input[type=time],input[type=datetime-local],input[type=month],input[type=week]){-webkit-appearance:none;appearance:none;display:block;box-sizing:border-box;min-width:0;max-width:100%;min-height:40px;padding:0 10px;border:1.5px solid var(--field,var(--line));border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;text-align:left}
  :where(input[type=date],input[type=time],input[type=datetime-local],input[type=month],input[type=week])::-webkit-date-and-time-value{text-align:left;margin:0;min-height:1.4em}
}
/* K1 (kullanıcı kararı 08.10): telefonda küçük düğmelere görünüş değişmeden 44 px dokunma alanı (görünmez ::after; ::before .sc ve
   .yukleniyor'da kullanılıyor). Kabul edilen 3 görünür değişiklik: .grpcard .gi / .inpt 44 px, .ysp-x 44 px, satır aralığı 10 px
   (komşu düğmelerin görünmez alanları üst üste binmesin). */
@media (pointer:coarse){
  .fchip,.mini,.segbtn,.geri,.ys-geri,.ys-ib,.ysb-x{position:relative}
  .fchip::after,.mini::after,.segbtn::after,.geri::after,.ys-geri::after,.ys-ib::after,.ysb-x::after{
    content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
  .ysp-x{width:44px;height:44px}
  .grpcard .gi,.inpt{min-height:44px}
  .filters,.drow .act{row-gap:10px}
}
/* ys172 (Δ11, 41-M5): telefonda modül düğmesi görünüş değişmeden 44 px dokunma alanı (::after "▾" için kullanılıyor → ::before) */
@media (pointer:coarse){
  .ys-modt{position:relative}
  .ys-modt::before{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
}
/* ys226 K-C1 (16.10): "… mü demek istediniz?" öneri kutusu (araclar/kod-oneri.js; Okut elle / Cihazı bul + Cihazlar arama). Yalnız token;
   kutu yalnız öneri varken DOM'da. Dokunma hedefi --ys-hit (44 px); odak halkası genel :focus-visible (--odak). */
.kod-oneri{flex:1 1 100%;grid-column:1/-1;box-sizing:border-box;width:100%;margin:var(--ys-s-3) 0;padding:var(--ys-s-4) var(--ys-s-5);border-radius:var(--ys-r-m);background:var(--info-bg);color:var(--ink);font-size:var(--ys-fs-3);display:flex;flex-direction:column;gap:var(--ys-s-3);max-width:100%}
.kod-oneri__t,.kod-oneri__n{margin:0;line-height:1.4}
.kod-oneri__n{color:var(--ink2);font-size:var(--ys-fs-2)}
.kod-oneri__k{font-family:var(--mono);font-weight:700;overflow-wrap:anywhere}
.kod-oneri__l{display:flex;flex-wrap:wrap;gap:var(--ys-s-3)}
.kod-oneri__b,.kod-oneri__d{min-height:var(--ys-hit);padding:0 var(--ys-s-6);border:0;border-radius:var(--ys-r-s);font:inherit;font-size:var(--ys-fs-3);font-weight:700;cursor:pointer;display:inline-flex;align-items:center;gap:var(--ys-s-2);max-width:100%}
.kod-oneri__b{background:var(--surface);color:var(--ink)}
.kod-oneri__d{align-self:flex-start;background:transparent;color:var(--info);text-decoration:underline;padding:0 var(--ys-s-2)}
