/* Loader4D — professional load-planning UI. Blueprint-precision light theme. */
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@500;600&display=swap');

:root{
  --ink:#10233b; --ink-2:#33465e; --muted:#6b7c93; --dim:#93a1b5;
  --bg:#eef2f7; --bg-2:#f6f9fc; --panel:#ffffff; --line:#dce4ee; --line-2:#eaeff6;
  --blue:#2f6bff; --blue-ink:#1d4fd6; --teal:#12b5ab; --teal-ink:#0e938b;
  --amber:#f0a92e; --pink:#e06c9f; --red:#e5484d; --green:#2fa96a;
  /* Logodaki "4D" ve ozellik ikonlari. Tonu 194°, koyu bir camgobegi.
     Beyaz uzerinde 9.64:1 kontrast verir (onceki --teal-ink 3.77:1'di).
     KOYU ZEMINDE KULLANILAMAZ: lacivert posta basliginda 1.79:1'e duser,
     orasi icin ayni tonun acigi (#00B1E6) kullanilir. */
  --brand-4d:#004B61; --brand-4d-lt:#00B1E6;
  /* Ikon kutusu: marka rengiyle ayni ailede soguk bir zemin. Eskiden
     nane yesiliydi; camgobegi ikonun altinda uyumsuz duruyordu. */
  --chip-a:#eef7fa; --chip-b:#dceef4; --chip-ring:rgba(0,75,97,.15);
  --shadow:0 1px 2px rgba(16,35,59,.06), 0 8px 24px rgba(16,35,59,.06);
  --shadow-sm:0 1px 2px rgba(16,35,59,.08);
  --r:12px; --r-sm:9px; --r-lg:16px;
  --grid:linear-gradient(#e7edf5 1px,transparent 1px),linear-gradient(90deg,#e7edf5 1px,transparent 1px);
  --font:'Inter',system-ui,sans-serif; --display:'Space Grotesk',var(--font); --mono:'JetBrains Mono',monospace;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);color:var(--ink);background:var(--bg);line-height:1.5;
  background-image:var(--grid);background-size:26px 26px;min-height:100vh;display:flex;flex-direction:column}
main{flex:1 0 auto}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--display);letter-spacing:-.01em;color:var(--ink);margin:0}
h1{font-size:1.6rem;font-weight:700}
.container{max-width:1240px;margin:0 auto;padding:0 22px}
.muted{color:var(--muted)}.dim{color:var(--dim)}.hidden{display:none!important}
.mono{font-family:var(--mono)}
.v{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ---- top bar ---- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line)}
.topbar .inner{display:flex;align-items:center;justify-content:space-between;height:62px}
.nav-links{display:flex;align-items:center;gap:6px}
.nav-links a{color:var(--ink-2);font-weight:500;font-size:.92rem;padding:8px 12px;border-radius:8px}
.nav-links a:hover{background:var(--bg-2);text-decoration:none;color:var(--ink)}
.nav-links a.active{color:var(--blue-ink);background:#eaf0ff}
.chip{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:500;color:var(--ink-2);
  background:var(--bg-2);border:1px solid var(--line);border-radius:999px;padding:5px 12px}

/* ---- logo ---- */
/* "Loader" gri, "4D" marka renginde. Ikisi de koyu oldugunda (lacivert +
   #004B61) aralarindaki fark 1.64:1'e dusuyor ve isim tek renk gibi
   okunuyordu; gri zemin farki 2.26:1'e cikarip "4D"yi one cikariyor. */
.logo{display:inline-flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;
  font-size:1.15rem;color:var(--muted);letter-spacing:-.02em}
/* Isaret artik satir ici SVG degil, favicon.svg'nin kendisi (bkz. _Logo.cshtml).
   Boyut kurallari hem <svg> hem <img> icin gecerli olmali ki gecis sirasinda
   ya da ileride bir yerde eski isaretleme kalirsa logo buyuyup kucumesin. */
.logo img{display:block;flex:none}
/* Marka adi tek bir flex ogesi: aksi halde .logo'nun gap degeri
   "Loader" ile "4D" arasina da bosluk koyar ve isim ayrik gorunur. */
.logo .wm{display:inline-flex;align-items:baseline}
.logo b{color:var(--brand-4d);font-weight:700}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-family:var(--font);font-weight:600;font-size:.9rem;
  padding:9px 16px;border-radius:var(--r-sm);transition:.15s;white-space:nowrap;text-decoration:none;box-shadow:var(--shadow-sm)}
.btn:hover{border-color:#c6d2e2;text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:none}
.btn-primary{background:var(--blue);border-color:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-ink);border-color:var(--blue-ink)}
.btn-teal{background:var(--teal);border-color:var(--teal);color:#fff}
.btn-teal:hover{background:var(--teal-ink);border-color:var(--teal-ink)}
.btn-ghost{background:transparent;box-shadow:none}
.btn-ghost:hover{background:var(--bg-2)}
.btn-danger{background:#fff;border-color:#f3c2c4;color:var(--red)}
.btn-danger:hover{background:#fdeded;border-color:var(--red)}
.btn-sm{padding:6px 11px;font-size:.82rem;border-radius:7px}
.btn-lg{padding:12px 22px;font-size:1rem}
.btn.on{background:#eaf0ff;border-color:#b9ccff;color:var(--blue-ink);box-shadow:none}
.btn[disabled]{opacity:.55;cursor:default;transform:none}

/* ---- panels ---- */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.panel h3{font-size:.98rem;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.panel-title{font-family:var(--display);font-weight:600;font-size:.7rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--dim);margin-bottom:12px}

/* ---- fields ---- */
.field{margin-bottom:14px}
.field label{display:block;font-size:.76rem;font-weight:600;color:var(--muted);margin-bottom:5px;letter-spacing:.01em}
input,select,textarea{width:100%;font-family:var(--font);font-size:.92rem;color:var(--ink);background:var(--bg-2);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 11px;transition:.15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(47,107,255,.12)}
input[type=color]{padding:3px;height:40px;cursor:pointer}
input[type=checkbox]{width:auto}
.row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.row-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* toggle chips for constraints */
.toggles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.toggle{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--bg-2);cursor:pointer;font-size:.82rem;font-weight:500;color:var(--ink-2);user-select:none}
.toggle input{width:auto;margin:0}
.toggle.on{background:#e9faf8;border-color:#9fe4de;color:var(--teal-ink)}

/* ---- tables ---- */
table{width:100%;border-collapse:collapse;font-size:.88rem}
thead th{text-align:left;font-family:var(--display);font-weight:600;font-size:.72rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);padding:12px 14px;background:var(--bg-2);border-bottom:1px solid var(--line)}
tbody td{padding:12px 14px;border-bottom:1px solid var(--line-2);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--bg-2)}

/* ---- badges / status ---- */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:600;color:var(--ink-2);
  background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:8px;padding:6px 10px}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;padding:3px 8px;border-radius:6px}
.tag-teal{background:#e3f7f5;color:var(--teal-ink)}
.tag-blue{background:#eaf0ff;color:var(--blue-ink)}
.tag-amber{background:#fdf2df;color:#a9741a}
.tag-red{background:#fdeaea;color:var(--red)}

/* ---- editor layout ---- */
.workspace{display:grid;grid-template-columns:380px 1fr;gap:16px;align-items:start;padding:16px 0 32px}
.sidecol{display:flex;flex-direction:column;gap:14px}
.viewer-wrap{position:relative;background:#0f1b2d;border:1px solid var(--line);border-radius:var(--r);
  overflow:hidden;min-height:620px;box-shadow:var(--shadow)}
.viewer-wrap canvas{display:block;width:100%;height:100%;min-height:620px}
.viewer-overlay{position:absolute;top:14px;left:14px;display:flex;gap:8px;flex-wrap:wrap;z-index:5}
.viewer-controls{position:absolute;top:14px;right:14px;display:flex;gap:8px;align-items:center;z-index:5}
.viewer-controls .badge a{color:var(--ink);padding:0 4px}

/* container info panel (bottom of viewer) */
.infopanel{position:absolute;left:0;right:0;bottom:0;z-index:5;display:grid;
  grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border-top:1px solid var(--line)}
.infopanel .cell{background:rgba(255,255,255,.96);padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.infopanel .k{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);font-weight:600}
.infopanel .val{font-family:var(--mono);font-weight:600;font-size:.98rem;color:var(--ink)}
.infopanel .val.warn{color:var(--red)}

/* ---- item rows ---- */
.item-row{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:var(--r-sm);
  margin-bottom:8px;background:var(--panel)}
.sw{display:inline-block;width:22px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.08);vertical-align:middle;flex:none}
.item-row .sw{width:22px;height:22px;border-radius:6px;flex:none;border:1px solid rgba(0,0,0,.08)}
.item-row .nm{font-weight:600;font-size:.9rem}
.item-row .dm{font-size:.76rem;color:var(--muted);font-family:var(--mono)}
.item-row .qt{margin-left:auto;font-family:var(--mono);font-weight:600;color:var(--ink-2);font-size:.86rem}
.item-row .cst{display:inline-flex;gap:3px}
/* Metin sutunu KUCULEBILIR olmali.
   Flex ogesinin varsayilan min-width'i auto'dur; yani icerigi kadar genis
   kalir ve satiri disari tasirir. Metrikte fark edilmiyordu ("120×100×40"),
   imperial'e gecince ayni satir "47.24×39.37×15.75" oluyor ve rozet ile
   dugmeler satirin disina itiliyordu — kullanicinin gordugu "kayma" buydu.
   Cozum birim tarafinda degil duzen tarafinda: sutun kuculebilsin, ad
   kirpilsin, olculer alt satira sarsin. */
.item-row .itx{flex:1;min-width:0}
.item-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-row .dm{overflow-wrap:anywhere}
/* Rozet ve dugmeler ASLA sikismasin: kuculecek olan metindir. */
.item-row>.tag,.item-row>.qt,.item-row>.btn,.item-row .ish,.item-row .drag-handle{flex:none}

/* optimizasyona dahil et / etme */
.ien{flex:none;width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--blue-ink)}
/* Devre disi satir SOLUR ama okunur kalir: kullanici neyi disarida biraktigini
   gormeye devam etmeli. Tik ve silme dugmesi tam opaklikta birakilir, yoksa
   geri acmak icin tiklanacak kontrol de silikleserdi. */
.item-row.off{background:var(--panel-2,#f7f8fa);border-style:dashed}
.item-row.off .ish,.item-row.off .nm,.item-row.off .dm{opacity:.45}
.item-row.off .nm{text-decoration:line-through;text-decoration-thickness:1px}
.tag-off{background:#eef0f3;color:var(--dim)}

/* group header */
.group-head{display:flex;align-items:center;gap:8px;padding:8px 4px;margin-top:6px;border-top:1px dashed var(--line)}
.group-head .gname{font-family:var(--display);font-weight:600;font-size:.85rem}
.group-head .gcount{font-family:var(--mono);font-size:.72rem;color:var(--dim)}

/* utilisation bars */
.util{margin:10px 0}
.util .top{display:flex;justify-content:space-between;font-size:.78rem;margin-bottom:5px;color:var(--ink-2)}
.util .top b{font-family:var(--mono)}
.util .bar{height:8px;background:var(--line-2);border-radius:99px;overflow:hidden}
.util .bar i{display:block;height:100%;border-radius:99px}

/* stat trio */
.stats3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.stat{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;text-align:center}
.stat .n{font-family:var(--mono);font-size:1.4rem;font-weight:600}
.stat .l{font-size:.7rem;color:var(--dim);text-transform:uppercase;letter-spacing:.06em;margin-top:2px}

/* thumbnails grid (shipments) */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow);transition:.15s}
.card:hover{transform:translateY(-2px);border-color:#c6d2e2}
.card .thumb{aspect-ratio:16/10;background:#0f1b2d center/cover;display:grid;place-items:center;color:#3a4a63}
.card .body{padding:14px}
.card .body h3{font-size:1rem}

/* palette (manual) */
.palette-item{cursor:pointer}
.palette-item.armed{border-color:var(--blue);background:#eef4ff}

/* hero / landing */
.hero{position:relative;padding:76px 0 60px;overflow:hidden}
.hero .eyebrow{font-family:var(--mono);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-ink)}
.hero h1{font-size:3rem;line-height:1.05;margin:14px 0;max-width:15ch}
.hero p{font-size:1.1rem;color:var(--muted);max-width:52ch}
.hero .cta{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:20px 0 70px}
.feature{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;
  box-shadow:var(--shadow-sm);transition:border-color .18s,box-shadow .18s,transform .18s}
.feature:hover{border-color:#c3dde6;box-shadow:var(--shadow);transform:translateY(-2px)}
/* Ikon kutusu: duz zemin yerine ince bir halka ve yumusak gecis. Emoji
   doneminden kalan font-size'a artik gerek yok, olcuyu svg'nin kendisi verir. */
.feature .ic{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;
  margin-bottom:13px;color:var(--brand-4d);
  background:linear-gradient(160deg,var(--chip-a),var(--chip-b));
  box-shadow:inset 0 0 0 1px var(--chip-ring)}
.feature .ic svg{width:21px;height:21px;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.feature:hover .ic{background:linear-gradient(160deg,#e6f3f8,#cfe7f0)}
.feature h3{font-size:1rem;margin-bottom:6px}
.feature p{font-size:.88rem;color:var(--muted);margin:0}

/* spinner */
.spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;
  display:inline-block;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* footer */
footer{border-top:1px solid var(--line);padding:26px 0;color:var(--dim);font-size:.84rem;background:var(--panel);flex-shrink:0}

/* report / print */
.report{max-width:900px;margin:0 auto;background:#fff;padding:34px;border-radius:var(--r);box-shadow:var(--shadow)}
.report .views{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:18px}
.report .views figure{margin:0;border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden}
.report .views img{width:100%;display:block;background:#0f1b2d}
.report .views figcaption{text-align:center;font-size:.8rem;padding:6px;color:var(--muted);border-top:1px solid var(--line)}
/* Rapordaki her alan (konteyner) için ayrı görsel blok */
.report-space{margin-top:16px}
.report-space-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px;
  padding:8px 10px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:.86rem}
.report-space-head .muted{font-size:.8rem}
/* ---- rapor: strateji rozetleri ---- */
.strat-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.schip{display:inline-flex;align-items:baseline;gap:6px;border:1px solid var(--line);
  border-left:3px solid var(--teal);border-radius:7px;padding:4px 9px;font-size:.78rem;background:var(--bg-2)}
.schip b{font-weight:600;color:var(--ink)}
.schip .sv{color:var(--muted);font-family:var(--mono);font-size:.72rem}

/* ---- rapor: aks yükü tablosu ---- */
.sub-head{margin:12px 0 4px;font-size:.85rem;color:var(--ink)}
.axle-table .bar{display:inline-block;width:56px;height:5px;border-radius:3px;background:#e3e9f2;
  margin-left:7px;vertical-align:middle;overflow:hidden}
.axle-table .bar i{display:block;height:100%;background:var(--teal)}
/* Sınırı aşan aks satırı: renk TEK başına taşıyıcı değil — "Limit aşıldı"
   etiketi de aynı satırda duruyor, siyah-beyaz baskıda bilgi kaybolmuyor. */
.axle-table tr.over td{background:#fff6f6}
.axle-table tr.over .bar i{background:var(--red)}

/* ---- rapor: yük kısıt simgeleri ---- */
/* Simgeler 3B sahnedekilerle aynı; altta bir açıklama satırı var. Renk
   yalnızca destek: baskıda gri kalsa da simge ve açıklama okunur. */
.flags{white-space:nowrap}
.flags .fl{display:inline-block;min-width:19px;text-align:center;border:1px solid var(--line);
  border-radius:5px;padding:0 4px;margin-right:3px;font-size:.78rem;color:var(--ink-2);background:var(--bg-2)}
.flags .fl.oog{border-color:#f3dca6;background:#fdf6e8;color:#8a5b09}
.flag-legend{display:flex;flex-wrap:wrap;gap:12px;margin:6px 0 0}
.flag-legend b{color:var(--ink)}

@media print{
  body{background:#fff}.topbar,footer,.no-print{display:none!important}
  .report{box-shadow:none;border-radius:0;max-width:100%;padding:0}
  /* Her alan mümkünse kendi sayfasında ve bölünmeden yazdırılsın */
  .report-space{break-inside:avoid;page-break-inside:avoid}
  .report-space + .report-space{break-before:page;page-break-before:always}
  .report .views figure{break-inside:avoid;page-break-inside:avoid}
  /* Aks tablosu ve strateji özeti sayfa sonunda ikiye bölünmesin: yarısı
     bir sayfada kalan bir aks listesi okunmuyor. */
  .axle-table,.strat-chips,.flag-legend{break-inside:avoid;page-break-inside:avoid}
  .axle-table tr.over td{background:#f4f4f4}
}

@media(max-width:960px){
  .workspace{grid-template-columns:1fr}
  .feature-grid{grid-template-columns:1fr}
  .hero h1{font-size:2.2rem}
  .infopanel{grid-template-columns:repeat(3,1fr)}
}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ============ Full-screen editor stage (cargoLoader-style) ============ */
.stage{position:relative;width:100%;height:calc(100vh - 70px);overflow:hidden;background:#f1f5fa;
  background-image:var(--grid);background-size:26px 26px}
/* Mobil tarayicilarda 100vh, adres cubugu GORUNURKEN bile gizliymis gibi
   olculur: sahne ekrandan tasar ve alt kenardaki aksiyon dugmeleri cubugun
   arkasinda kalir. dvh gercek gorunur yuksekligi verir. Ayri bir kural olarak
   yazildi; destegi olmayan eski tarayici ustteki satirda kalir. */
@supports (height:100dvh){ .stage{height:calc(100dvh - 70px)} }
.stage-viewer{position:absolute;inset:0}
/* touch-action:none — dokunmatikte sahneyi dondurebilmenin SARTI.
   Bu satir olmadan tarayici tek parmak hareketini once "sayfa kaydiriliyor
   olabilir" diye bekletir, sonra jesti kendine alir ve pointermove olaylarini
   kesar. Kullanicinin gordugu sey, biraz donup takilan bir sahnedir — sahadan
   "cevirmek cok zor" diye bildirildi. Iki parmakla yakinlastirma da ayni
   sebeple guvenilmez calisiyordu.
   Sahne zaten kendi kaydirma ve yakinlastirmasini yonetiyor; tarayicinin
   varsayilan jestlerine burada ihtiyac yok. */
.stage-viewer canvas{display:block;width:100%;height:100%;touch-action:none}

/* left floating panel */
/* Genislik dort sekmenin EN UZUN CEVIRISINE gore secildi: Almanca ve
   Ispanyolca toplam 32 karakter ("Bereich Ladungen Strategie Ergebnis").
   372 pikselde bunlar uc noktayla kirpiliyordu. */
.stage-panel{position:absolute;top:16px;left:16px;bottom:96px;width:412px;z-index:20;
  background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;transition:transform .25s ease,opacity .2s}
.stage-panel.collapsed{transform:translateX(-420px);opacity:0;pointer-events:none}
.panel-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}
/* Dort sekme dar panelde ve uzun cevirilerde (ör. "Результат") tasmamali:
   esnek genislik + kirpilmayan tek satir + daralinca kucullen yazi. */
.panel-tabs{display:flex;gap:2px;flex:1;min-width:0}
/* flex:1 1 auto + esit paylasim: sekmeler bos alani paylasir, uzun ceviride
   hepsi ayni oranda daralir. text-overflow yalnizca son care olarak durur. */
.panel-tabs button{border:none;background:transparent;font-family:var(--display);font-weight:600;font-size:.85rem;
  color:var(--muted);padding:7px 6px;border-radius:9px;cursor:pointer;white-space:nowrap;
  min-width:0;flex:1 1 auto;text-align:center;overflow:hidden;text-overflow:ellipsis}
.panel-tabs button.on{background:#eaf0ff;color:var(--blue-ink)}
.panel-body{flex:1;overflow-y:auto;padding:16px}
.icon-btn{width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;
  display:grid;place-items:center;color:var(--ink-2);font-size:1rem;flex:none}
.icon-btn:hover{background:var(--bg-2)}
/* Icerik ORTALANIR. Onceden hicbir hizalama kurali yoktu; dugme metni
   varsayilan satir kutusuna kaliyor ve ikon kutunun icinde kayik duruyordu.
   display:flex burada guvenli — gizleme .stage-open.off ile yapiliyor ve o
   secici daha ozgul oldugu icin bu satiri her zaman eziyor. */
.stage-open{position:absolute;top:16px;left:16px;z-index:20;width:44px;height:44px;border-radius:12px;
  border:1px solid var(--line);background:#fff;box-shadow:var(--shadow);cursor:pointer;color:var(--ink);
  display:flex;align-items:center;justify-content:center;padding:0;line-height:1}
.stage-open svg{width:22px;height:22px}
/* Masaustunde panel ACIKKEN gizlenir: panel de top:16/left:16'da duruyor,
   dugme tam altinda kalir ve tiklanamaz. Dar ekranda panel asagi indigi icin
   bu kural devre disi birakiliyor (bkz. 900px blogu). */
.stage-open.off{display:none}

/* right vertical toolbar */
.stage-tools{position:absolute;top:16px;right:16px;z-index:20;display:flex;flex-direction:column;gap:10px}
/* Arac cubugunu acan dugme. Masaustunde YOK: orada cubuk zaten hep acik ve
   sahneye deymiyor. Yalnizca 900px altinda gorunur (bkz. asagidaki blok). */
.stage-toolsbtn{position:absolute;top:16px;right:16px;z-index:21;display:none;
  width:46px;height:46px;border-radius:12px;border:1px solid var(--line);
  background:#fff;box-shadow:var(--shadow-sm);cursor:pointer;
  align-items:center;justify-content:center;color:var(--ink-2);padding:0}
.stage-toolsbtn svg{width:22px;height:22px}
.stage-toolsbtn.on{background:var(--blue);border-color:var(--blue);color:#fff}

/* Manuel cubugunu ac/kapa. Masaustunde YOK: cubuk orada tek satira siginiyor. */
.man-toggle{display:none;align-items:center;justify-content:center;flex:none;
  width:38px;height:38px;border-radius:10px;border:1px solid var(--line);
  background:#fff;cursor:pointer;color:var(--ink-2);padding:0}
.man-toggle svg{width:20px;height:20px}
.man-toggle.on{background:var(--teal,#12b5ab);border-color:var(--teal,#12b5ab);color:#fff}

/* Kaydedilmemis manuel degisiklik varken Kaydet dugmesi kendini belli eder.
   Halka disaridan cizilir (box-shadow), boylece dugmenin olcusu degismez ve
   yanindaki dugmeler kaydedilmemis durumda yerinden oynamaz. */
#mSave.dirty{box-shadow:0 0 0 3px rgba(47,107,255,.28)}
#mSave.dirty::after{content:'•';margin-left:6px;font-size:1.1em;line-height:0}
.tool{width:46px;height:46px;border-radius:12px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-sm);
  cursor:pointer;display:grid;place-items:center;font-size:1.15rem;color:var(--ink-2);transition:.15s;position:relative}
.tool:hover{background:var(--bg-2);transform:translateY(-1px)}
.tool.on{background:var(--teal);border-color:var(--teal);color:#fff}
.tool[data-tip]:hover::after{content:attr(data-tip);position:absolute;right:56px;top:50%;transform:translateY(-50%);
  background:var(--ink);color:#fff;font-size:.74rem;padding:5px 9px;border-radius:7px;white-space:nowrap}

/* orientation cube */
.stage-cube{position:absolute;top:80px;right:80px;z-index:15;width:96px;height:96px;pointer-events:none;opacity:.9}
.stage-cube svg{width:100%;height:100%}
.stage-cube text{cursor:pointer;pointer-events:auto}

/* container navigation */
.stage-nav{position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:20;display:flex;align-items:center;gap:6px;
  background:#fff;border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow-sm);padding:6px 10px;font-size:.86rem;font-weight:600}
.stage-nav button{border:none;background:transparent;cursor:pointer;font-size:1.1rem;color:var(--blue-ink);padding:0 6px;line-height:1}

/* bottom-left shipment name */
.stage-name{position:absolute;left:16px;bottom:24px;z-index:20;display:flex;gap:8px;align-items:center}
.stage-name input{width:230px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-sm);
  font-family:var(--display);font-weight:600;padding:12px 14px}
.stage-name button{width:46px;height:46px;border-radius:12px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-sm);cursor:pointer;font-size:1.1rem}

/* bottom info bar */
.stage-info{position:absolute;left:50%;transform:translateX(-50%);bottom:24px;z-index:15;display:flex;
  background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden;max-width:60vw}
.stage-info .cell{padding:9px 16px;border-left:1px solid var(--line-2);display:flex;flex-direction:column;gap:1px;min-width:96px}
.stage-info .cell:first-child{border-left:none}
.stage-info .k{font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);font-weight:600}
.stage-info .val{font-family:var(--mono);font-weight:600;font-size:.9rem;color:var(--ink)}
.stage-info .val.warn{color:var(--red)}

/* bottom-right actions + circular Yükle */
.stage-actions{position:absolute;right:16px;bottom:24px;z-index:20;display:flex;align-items:center;gap:10px}
.stage-actions .btn{box-shadow:var(--shadow)}
.yukle{width:104px;height:104px;border-radius:50%;border:none;background:linear-gradient(135deg,#3f7bff,#2f6bff);
  color:#fff;font-family:var(--display);font-weight:700;font-size:1.15rem;cursor:pointer;box-shadow:0 10px 30px rgba(47,107,255,.4);
  transition:.15s;display:grid;place-items:center}
.yukle:hover{transform:translateY(-2px) scale(1.03)}
.yukle:disabled{opacity:.7;transform:none}

/* ---- "Devam" rozeti ----
   Ana yukleme dugmesinin sag ust kosesine oturur. Yan yana duran iki esit
   dugme yerine bu bicim, ikisi arasindaki iliskiyi anlatiyor: asil eylem
   YUKLEME, devam onun bir varyanti. Kullanicilar iki dugmeyi karistiriyordu.

   Yalnizca optimizasyondan SONRA ve yuk listesi degistiginde gorunur
   (bkz. editor.js syncContinue). */
.load-wrap{position:relative;display:inline-flex;flex:none}
.continue-badge{position:absolute;top:-4px;right:-4px;z-index:2;
  width:46px;height:46px;border-radius:50%;border:3px solid #fff;padding:0;
  background:var(--teal,#12b5ab);color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 18px rgba(18,181,171,.45);transition:.15s}
.continue-badge:hover{transform:scale(1.08)}
.continue-badge:disabled{opacity:.7;transform:none}
.continue-badge svg{width:20px;height:20px}
/* Gizleme genel `hidden` yardimcisiyla yapiliyor ve o `!important` tasiyor;
   burada display'i geri acan bir kural YAZILMAMALI. */

/* manual bar */
.stage-manual{position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:21;display:flex;gap:8px;align-items:center;
  background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:8px 12px;flex-wrap:wrap;max-width:80vw}

@media(max-width:900px){
  .stage-name input{width:150px}
}

/* axle definition cards (Spaces) */
.axle-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.axle-card{border:1px solid var(--line);border-radius:var(--r-sm);padding:12px;background:var(--bg-2)}
.axle-head{display:flex;justify-content:space-between;align-items:center;font-family:var(--display);font-weight:600;
  font-size:.85rem;margin-bottom:10px;color:var(--ink)}

/* ============ Spaces page (cargoLoader-style) ============ */
.wide{max-width:1560px;margin:0 auto;padding:0 22px}
.spaces-head{border-bottom:1px solid var(--line);background:var(--panel)}
.spaces-head .inner{display:flex;align-items:center;justify-content:center;position:relative;height:56px}
.spaces-head h1{font-size:1.4rem}
.spaces-shell{display:grid;grid-template-columns:320px 1fr;gap:0;min-height:calc(100vh - 62px - 57px)}
.space-list-wrap{border-right:1px solid var(--line);background:var(--panel);display:flex;flex-direction:column;max-height:calc(100vh - 62px - 57px)}
.space-list-wrap .search{padding:14px}
.space-list{overflow-y:auto;padding:0 10px 14px}
.space-li{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;cursor:pointer;transition:.12s}
.space-li:hover{background:var(--bg-2)}
.space-li.on{background:#eaf0ff}
.space-li .ic{width:44px;height:44px;border-radius:50%;background:var(--bg-2);border:1px solid var(--line);display:grid;place-items:center;font-size:1.3rem;flex:none}
.space-li .mt{flex:1;min-width:0}
.space-li .mt .n{font-family:var(--display);font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.space-li .mt .d{font-size:.76rem;color:var(--muted);font-family:var(--mono)}
.space-li .bd{font-size:.68rem;color:var(--dim);text-align:right;line-height:1.3;flex:none}

.spaces-main{padding:18px 22px 40px;overflow-x:hidden}
.spaces-toolbar{display:flex;justify-content:flex-end;gap:8px;margin-bottom:14px}
.ekle-form{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:22px;margin-bottom:18px}
.ekle-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:22px;align-items:start}
.diagram{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px;min-height:230px;display:grid;place-items:center}
.diagram svg{width:100%;height:auto;max-height:230px}
.ekle-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.axle-add{border:1.5px dashed var(--line);border-radius:var(--r-sm);display:grid;place-items:center;min-height:150px;cursor:pointer;color:var(--teal-ink);background:var(--bg-2)}
.axle-add:hover{background:#e9faf8;border-color:var(--teal)}
.axle-add .plus{width:40px;height:40px;border-radius:50%;background:var(--teal);color:#fff;display:grid;place-items:center;font-size:1.4rem}
.pager{display:flex;justify-content:center;align-items:center;gap:4px;padding:14px;flex-wrap:wrap}
.pager button{min-width:34px;height:34px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;font-weight:600;font-size:.85rem;color:var(--ink-2);padding:0 8px}
.pager button:hover:not(:disabled):not(.on){background:var(--bg-2)}
.pager button.on{background:var(--blue);border-color:var(--blue);color:#fff}
.pager button:disabled{opacity:.45;cursor:default}
.pager-gap{min-width:20px;text-align:center;color:var(--dim);user-select:none}

/* Manuel yerleştirme: durum rozeti ve sorun listesi */
/* Ana sayfa ekran görüntüsü vitrini */
.sec-head{text-align:center;max-width:660px;margin:0 auto 26px}
.sec-head h2{font-size:1.9rem;margin:8px 0 8px;letter-spacing:-.02em}
.sec-head p{font-size:1rem}
.shots{max-width:1120px;margin:0 auto}
.shot-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:18px}
.shot-tab{border:1px solid var(--line);background:#fff;color:var(--ink-2);border-radius:999px;
  padding:8px 16px;font-size:.84rem;font-weight:600;cursor:pointer;transition:all .15s}
.shot-tab:hover{border-color:var(--blue);color:var(--blue)}
.shot-tab.on{background:var(--blue);border-color:var(--blue);color:#fff}
.shot-stage{margin:0;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  background:#fff;box-shadow:0 18px 48px rgba(13,17,23,.10)}
.shot-stage img{display:block;width:100%;height:auto;background:var(--bg-2)}
.shot-stage figcaption{padding:14px 18px;font-size:.86rem;color:var(--muted);
  border-top:1px solid var(--line);text-align:center;background:#fff}
@media(max-width:700px){
  .sec-head h2{font-size:1.45rem}
  .shot-tab{padding:7px 12px;font-size:.78rem}
}
.jobbar{display:inline-block;width:90px;height:7px;border-radius:99px;background:var(--bg-2);
  overflow:hidden;vertical-align:middle;margin-right:8px;border:1px solid var(--line)}
.jobbar i{display:block;height:100%;background:var(--blue);transition:width .4s ease}
/* Yük listesi: sürükle-bırak öncelik sıralama */
.group-block{border-radius:var(--r-sm);transition:box-shadow .12s}
.group-block.dragging{opacity:.6;box-shadow:0 6px 18px rgba(13,17,23,.16);background:#fff}
.group-items{min-height:6px}
.item-row.dragging{opacity:.6;box-shadow:0 4px 14px rgba(13,17,23,.14);background:#fff;border-radius:var(--r-sm)}
.drag-handle{cursor:grab;color:var(--dim);font-size:.9rem;line-height:1;padding:2px 4px;
  touch-action:none;user-select:none;flex:none}
.drag-handle:hover{color:var(--ink-2)}
.drag-handle:active{cursor:grabbing}
body.dnd-active{user-select:none;-webkit-user-select:none}
.gord{width:18px;height:18px;border-radius:5px;background:var(--bg-2);display:grid;place-items:center;
  font-size:.68rem;font-weight:800;color:var(--muted);flex:none}

/* ---- grup basligi: katlama, gruba ekleme, grup silme ----
   Uzun bir sevkiyatta panel sonsuz kaydirmaya donuyordu; katlama onu cozer.
   Ekleme ve silme grup satirina alindi cunku tek bir "+Yük" dugmesi varken
   yeni yukun hangi gruba dustugu belirsizdi. */
.gtog{background:none;border:0;padding:2px;cursor:pointer;color:var(--muted);
  display:grid;place-items:center;flex:none;border-radius:5px}
.gtog svg{width:15px;height:15px;transition:transform .15s ease}
.gtog:hover{color:var(--ink-2);background:var(--bg-2)}
/* Kapaliyken ok saga bakar — yon, icerigin gizli oldugunu tek basina anlatir. */
.group-block.collapsed .gtog svg{transform:rotate(-90deg)}
.group-block.collapsed .group-items{display:none}

.gname-edit{margin-left:auto;max-width:118px;padding:4px 8px;font-size:.76rem}

.gbtn{background:none;border:0;padding:3px;cursor:pointer;color:var(--muted);
  display:grid;place-items:center;flex:none;border-radius:5px}
.gbtn svg{width:17px;height:17px}
.gbtn:hover{color:var(--blue-ink);background:var(--bg-2)}
.gmenu-wrap{position:relative;display:grid;place-items:center;flex:none}
.gmenu-wrap .gbtn:hover{color:var(--red)}
.gmenu{position:absolute;top:calc(100% + 4px);right:0;z-index:30;min-width:132px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 8px 22px rgba(13,17,23,.14);padding:4px;display:flex;flex-direction:column}
.gmenu.hidden{display:none}
.gmenu button{background:none;border:0;text-align:left;padding:7px 10px;cursor:pointer;
  font:inherit;font-size:.78rem;color:var(--ink-2);border-radius:5px;white-space:nowrap}
.gmenu button:hover{background:var(--bg-2)}
/* Grubu tumden silmek yuk silmekten daha yikici; renk bunu onceden soyler. */
.gmenu button[data-gdel]{color:var(--red)}

/* ---- yuk formu ----
   Panelin ustunde dururken (varsayilan konum) ince bir ayraçla ayrilir. */
.item-form{border-top:1px solid var(--line);margin-top:12px;padding-top:14px}

/* Bir yuk duzenlenirken form kendi satirinin ALTINA tasinir. O zaman ust
   ayraç yerine bir KART olur: duzenlenen yukun hangisi oldugu, formun nerede
   bittigi ve listenin nerede devam ettigi tek bakista gorunsun. */
.item-form.inline{
  border:1px solid var(--blue);
  border-top:1px solid var(--blue);
  border-radius:var(--r-sm);
  background:var(--bg-2);
  margin:2px 0 8px;
  padding:12px;
  box-shadow:0 4px 16px rgba(47,107,255,.10);
}
.overflow-opt{margin-top:14px;padding:12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-2)}
.overflow-opt .ol{display:block;font-size:.74rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.overflow-opt select{width:100%}
.overflow-opt .oh{font-size:.75rem;margin:8px 0 0;line-height:1.45}
.space-list-head{display:flex;justify-content:space-between;align-items:center;margin-top:14px;
  font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.space-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.space-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);
  border-radius:var(--r-sm);background:#fff;font-size:.82rem}
.space-row.on{border-color:var(--blue);box-shadow:0 0 0 2px rgba(45,110,255,.12)}
.space-row .ord{width:20px;height:20px;border-radius:6px;background:var(--bg-2);display:grid;
  place-items:center;font-size:.7rem;font-weight:800;color:var(--muted);flex:none}
.space-row .nm{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.space-row .dm{font-size:.72rem;color:var(--muted);white-space:nowrap}
/* Set uyeligi: alan adinin yaninda kucuk bir bagliluk imi. Sol kenardaki mor
   serit, bir sette KAC alan oldugunu listeye bakar bakmaz gosterir. */
.space-row.in-set{border-left:3px solid #8a76d8}
.space-row .row-set{flex:none;max-width:38%;font-style:normal;font-size:.68rem;font-weight:600;color:#4b3a91;
  background:#efeaff;border-radius:999px;padding:1px 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Listede duran bir palet: etkin alan baska biri olsa da gorunur kalmali,
   yoksa yanlis kurulum listenin icinde saklanir. */
.space-row .row-warn{flex:none;font-style:normal;font-size:.72rem;color:#a9741a;
  background:#fdf2df;border-radius:999px;padding:1px 6px;line-height:1.4;cursor:help}
.combo-item.is-set .ct .n{color:#4b3a91}
.combo-item.is-set{border-left:3px solid #8a76d8;border-radius:8px}
.space-row .x{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:1rem;line-height:1;padding:2px 4px}
.space-row .x:hover{color:var(--red)}
.space-row .mv{border:0;background:transparent;cursor:pointer;color:var(--muted);font-size:.8rem;padding:0 2px}
.space-row .mv:hover{color:var(--ink)}
.space-row .mv:disabled{opacity:.3;cursor:default}
.rot-group{display:inline-flex;gap:4px;align-items:center}
.rot-group .btn{padding-left:8px;padding-right:8px}
.man-axle{font-size:.75rem;font-weight:600;color:var(--muted);white-space:nowrap;
  font-family:var(--mono,monospace);padding:0 4px}
.man-axle.bad{color:var(--red)}
.man-axle:empty{display:none}
.man-status{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;
  font-size:.78rem;font-weight:600;white-space:nowrap;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink-2)}
.man-status.ok{border-color:#bfe6d2;background:#f2fbf6;color:#177a4c;cursor:default}
.man-status.warn{border-color:#f3d9a5;background:#fffaf0;color:#8a5b09}
.man-status.bad{border-color:#f5bfc2;background:#fff5f5;color:#b4262b}
.man-status b{font-weight:800}
.prob-list{max-height:320px;overflow:auto;display:flex;flex-direction:column;gap:2px}
.prob-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer}
.prob-row:hover{background:var(--bg-2)}
.prob-row .sw{width:14px;height:14px;border-radius:4px;flex:none;display:inline-block}
.prob-row .nm{font-weight:600;font-size:.86rem}
.prob-row .dm{font-size:.78rem;color:var(--red)}

@media(max-width:1000px){ .spaces-shell{grid-template-columns:1fr} .space-list-wrap{max-height:none} .ekle-grid{grid-template-columns:1fr} .ekle-fields{grid-template-columns:1fr} }

/* constraint icons */
.cst-ic{width:15px;height:15px;flex:none}
.row-ic{width:14px;height:14px;vertical-align:middle;margin-right:2px}

/* custom combo with icons (editor preset picker) */
.combo{position:relative}
.combo-btn{width:100%;display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:7px 11px;cursor:pointer;font-family:var(--font);font-size:.92rem;color:var(--ink);text-align:left}
.combo-btn:hover{border-color:#c6d2e2}
.combo-ic{width:30px;height:30px;flex:none;display:grid;place-items:center}
.combo-ic svg,.combo-item .ci svg,.space-li .ic svg{display:block}
.combo-caret{margin-left:auto;color:var(--muted);font-size:.7rem}
.combo-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:60;background:#fff;border:1px solid var(--line);
  border-radius:var(--r-sm);box-shadow:var(--shadow);max-height:340px;overflow-y:auto;padding:6px}
.combo-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer}
.combo-item:hover{background:var(--bg-2)}
.combo-item.on{background:#eaf0ff}
.combo-item .ci{width:34px;height:34px;flex:none;display:grid;place-items:center}
.combo-item .ct{min-width:0}
.combo-item .ct .n{font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combo-item .ct .d{font-size:.73rem;color:var(--muted);font-family:var(--mono)}

/* ---- çoklu seçim listesi ----
   Onay kutusu bilerek görünür bırakıldı: "tıklayınca seçilir" davranışını
   kullanıcının tahmin etmesi gerekmiyor, kutu zaten söylüyor. */
.combo-menu.multi{padding:0;max-height:none;overflow:visible}
.mc-head{display:flex;gap:6px;align-items:center;padding:8px;border-bottom:1px solid var(--line)}
.mc-search{flex:1;min-width:0;font-size:.82rem;padding:6px 9px}
.mc-all{flex:none;border:1px solid var(--line);background:var(--bg-2);border-radius:7px;
  padding:6px 9px;font-size:.75rem;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.mc-all:hover{border-color:#c6d2e2;background:#fff}
.mc-list{max-height:236px;overflow:auto;padding:6px}
/* Satır bir <label> ve kutu .field içinde duruyor; oradaki `.field label`
   kuralı (display:block + etiket tipografisi) satırı dikey yığıyordu. Seçici
   bilerek `label.mc-row` yazıldı: `.field label` ile aynı ağırlıkta olup
   sonra geldiği için kazanıyor. Etiket görünümünü de burada geri alıyoruz. */
.mc-list label.mc-row{display:flex;align-items:center;gap:9px;padding:6px 8px;
  border-radius:8px;cursor:pointer;margin:0;font-weight:400;letter-spacing:0;
  font-size:.85rem;color:var(--ink)}
.mc-list label.mc-row:hover{background:var(--bg-2)}
.mc-list label.mc-row.on{background:#eaf0ff}
/* Onay kutusu ikonun SOLUNDA: göz önce "seçili mi" sorusunu yanıtlıyor,
   sonra neyin seçildiğine bakıyor. */
.mc-list label.mc-row input{flex:none;width:16px;height:16px;margin:0;
  accent-color:var(--blue);cursor:pointer}
.mc-list label.mc-row .ci{width:30px;height:30px;flex:none;display:grid;place-items:center}
.mc-list label.mc-row .ct{min-width:0;flex:1}
.mc-list label.mc-row .ct .n{display:block;font-weight:600;font-size:.85rem;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc-list label.mc-row .ct .d{display:block;font-size:.71rem;color:var(--muted);
  font-family:var(--mono);font-weight:400;margin-top:1px}
.mc-empty{padding:20px 12px;text-align:center;color:var(--dim);font-size:.82rem}
.mc-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px;border-top:1px solid var(--line);background:var(--bg-2)}
.mc-count{font-size:.76rem;color:var(--muted)}

/* Buton içi ikon: metinle aynı hizada, metnin biraz altında kalmasın. */
.btn-ic{width:15px;height:15px;flex:none;display:block}

/* ============ eğitim videoları ============
   Önizleme görseli YouTube'dan ÇEKİLMİYOR: görseli çekmek de bir istek demek
   olurdu. Yerel bir degrade + oynat düğmesi çiziliyor; oynatıcı ancak
   tıklandığında oluşuyor. */
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:14px;margin-top:14px}
.vcard{border:1px solid var(--line);border-radius:var(--r-sm);overflow:hidden;background:#fff}
.vthumb{display:block;width:100%;aspect-ratio:16/9;border:0;cursor:pointer;position:relative;
  background:linear-gradient(135deg,#1d3f78,#2f6bff 55%,#12b5ab);color:#fff}
.vthumb:hover .vplay{transform:scale(1.08)}
.vthumb[disabled]{cursor:default;background:linear-gradient(135deg,#8794a8,#aab6c8)}
.vnum{position:absolute;top:8px;left:10px;font-family:var(--mono);font-size:.78rem;opacity:.85}
.vplay{position:absolute;inset:0;margin:auto;width:46px;height:46px;transition:.16s}
.vplay circle{fill:rgba(255,255,255,.18);stroke:#fff;stroke-width:2}
.vplay path{fill:#fff}
.vthumb[disabled] .vplay{opacity:.5}
/* Marka filigranı: sağ altta, oynat düğmesinin yolundan uzakta. Küçük kartlarda
   yazı sıkışacağı için yalnızca küp kalır — logonun tanınan parçası zaten o. */
.vmark{position:absolute;right:10px;bottom:9px;display:flex;align-items:center;gap:6px;
  color:#fff;opacity:.9;pointer-events:none}
.vmark svg{width:22px;height:22px;display:block;flex:none}
.vmark b{font-family:var(--display);font-size:.76rem;font-weight:600;letter-spacing:.01em;
  text-shadow:0 1px 3px rgba(6,14,26,.45)}
.vmark b span{opacity:.75;font-weight:500}
.vthumb[disabled] .vmark{opacity:.62}
@media(max-width:420px){ .vmark b{display:none} }
/* Yardım çekmecesindeki kartlar dar: orada da yalnızca küp. */
.help-body .vmark b{display:none}
.vframe{aspect-ratio:16/9;background:#000}
.vframe iframe{width:100%;height:100%;border:0;display:block}
.vbody{padding:11px 12px}
.vbody h4{margin:0;font-size:.92rem;font-family:var(--display)}
.vbody p{margin:4px 0 0;font-size:.79rem;color:var(--muted);line-height:1.45}
.vmeta{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;
  font-size:.74rem;color:var(--muted)}
.vmeta a{color:var(--teal-ink);text-decoration:none}
.vmeta a:hover{text-decoration:underline}
.vcard.soon .vbody h4{color:var(--muted)}
/* Bölüm başındaki tek video: sayfa akışını bozmasın diye dar tutuluyor. */
.vinline{max-width:340px;margin:12px 0 16px}

/* ---- YouTube kanal bağı ---- */
/* Üst menüde yalnızca ikon (dar ekranda yer yok), altbilgide ikon + metin. */
.yt-link{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:9px;
  color:#8794a8;transition:.14s}
.yt-link svg{width:22px;height:22px;fill:currentColor}
.yt-link:hover{color:#ff0033;background:var(--bg-2)}
/* Iki sosyal bag AYNI SATIRDA durur. Onceden ikisi de kendi margin-top'unu
   tasiyan bagimsiz inline-flex ogeleriydi; satir sarmasi ya da farkli metin
   uzunluklari yuzunden alt alta dusebiliyor ve hizalari kayiyordu. Ortak bir
   flex satiri bunu kesin olarak cozer. */
.foot-socials{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:12px}
.foot-social{display:inline-flex;align-items:center;gap:7px;font-size:.84rem;
  line-height:1;color:var(--muted);text-decoration:none}
.foot-social svg{width:20px;height:20px;fill:currentColor;flex:none}
.foot-social:hover{color:#ff0033}
/* Her kanal kendi rengiyle vurgulanir; ikisi de YouTube kirmizisina donerse
   ikon farki disinda hicbir ipucu kalmaz. Ust menude ikonlar bitisik durmasin
   diye kucuk bir aralik, altbilgide de iki bag arasinda bosluk var. */
.brand-li:hover{color:#0a66c2}
.topbar-right .yt-link + .yt-link{margin-left:2px}
@media(max-width:640px){ .yt-link{display:none} }

/* ---- sahnedeki yardım çekmecesi ---- */
.help-panel{position:absolute;top:14px;right:74px;z-index:70;width:330px;max-height:calc(100% - 28px);
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);box-shadow:var(--shadow)}
.help-head{display:flex;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid var(--line)}
.help-head b{font-family:var(--display);font-size:.95rem}
.help-docs{margin-left:auto;font-size:.78rem;color:var(--teal-ink);text-decoration:none}
.help-docs:hover{text-decoration:underline}
.help-x{border:0;background:transparent;font-size:1.2rem;line-height:1;cursor:pointer;color:var(--muted);padding:0 2px}
.help-x:hover{color:var(--ink)}
.help-sub{padding:9px 12px;border-bottom:1px solid var(--line)}
.help-sub input{width:100%;font-size:.82rem;padding:6px 9px}
/* Çekmecede kartlar YATAY satır: dikey kart 14 madde için çok yer yiyordu ve
   grid satırları esnek kalınca gövde büsbütün eziliyordu. flex + flex:none ile
   hiçbir satır sıkışamaz. */
.help-body{overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px}
.help-body .vcard{flex:none;display:flex;align-items:stretch;border-radius:10px;overflow:hidden}
.help-body .vthumb{width:92px;height:56px;flex:none;aspect-ratio:auto}
.help-body .vplay{width:26px;height:26px}
.help-body .vnum{top:4px;left:6px;font-size:.66rem}
.help-body .vmark{right:5px;bottom:4px}
.help-body .vmark svg{width:14px;height:14px}
.help-body .vbody{flex:1;min-width:0;padding:7px 10px;display:flex;flex-direction:column;justify-content:center}
.help-body .vbody h4{font-size:.82rem;line-height:1.3}
.help-body .vbody h4 a{color:inherit;text-decoration:none}
.help-body .vbody h4 a:hover{color:var(--blue)}
/* Açıklama çekmecede gizli: başlık zaten konuyu söylüyor, iki satır daha
   eklemek listeyi taranamaz hale getiriyordu. */
.help-body .vbody p{display:none}
.help-body .vmeta{margin-top:3px;font-size:.7rem}
.help-foot{padding:8px 12px;border-top:1px solid var(--line);font-size:.72rem;background:var(--bg-2)}
@media(max-width:820px){
  .help-panel{right:12px;left:12px;width:auto}
}
.space-li .ic{overflow:hidden}

/* shape icon holder (item rows) */
.ish{width:30px;height:30px;flex:none;display:grid;place-items:center}
.ish svg{display:block}

/* ============================================================
   Loader4D — UI güncellemeleri (modal, toast, flyout, strateji)
   ============================================================ */

/* ---- büyük & sola yaslı logo ---- */
.topbar-inner{display:flex;align-items:center;justify-content:space-between;height:70px;
  width:100%;padding:0 24px 0 22px}
.topbar-inner>a{display:inline-flex;text-decoration:none}
.logo{gap:12px;font-size:1.5rem}
.logo svg,.logo img{width:42px;height:42px}
@media(max-width:640px){ .logo{font-size:1.2rem} .logo svg,.logo img{width:34px;height:34px} }

/* ---- şık modal ---- */
.l4-modal-back{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;
  background:rgba(15,27,45,.42);backdrop-filter:blur(3px);padding:20px;
  opacity:0;transition:opacity .18s ease}
.l4-modal-back.show{opacity:1}
.l4-modal{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:18px;
  box-shadow:0 24px 60px rgba(16,35,59,.28);overflow:hidden;
  transform:translateY(10px) scale(.98);transition:transform .2s cubic-bezier(.2,.9,.3,1.2)}
.l4-modal-back.show .l4-modal{transform:none}
.l4-modal-top{display:flex;gap:14px;padding:22px 22px 6px}
.l4-modal-ic{width:46px;height:46px;border-radius:13px;flex:none;display:grid;place-items:center}
.l4-modal-ic svg{width:24px;height:24px}
.l4-modal-ic.info{background:#eaf0ff;color:var(--blue-ink)}
.l4-modal-ic.success{background:#e3f7f5;color:var(--teal-ink)}
.l4-modal-ic.warn{background:#fdf2df;color:#a9741a}
.l4-modal-ic.danger{background:#fdeaea;color:var(--red)}
.l4-modal-tt{flex:1;min-width:0}
.l4-modal-tt h4{font-family:var(--display);font-weight:700;font-size:1.06rem;margin:2px 0 4px;color:var(--ink)}
.l4-modal-tt p{margin:0;font-size:.92rem;color:var(--muted);line-height:1.5;word-break:break-word}
.l4-modal-acts{display:flex;justify-content:flex-end;gap:10px;padding:18px 22px 20px}
.l4-modal-acts .btn{min-width:96px;justify-content:center}
.l4-modal-x{position:absolute;top:14px;right:14px;width:30px;height:30px;border:none;background:transparent;
  cursor:pointer;color:var(--dim);font-size:1.2rem;border-radius:8px;display:grid;place-items:center}
.l4-modal-x:hover{background:var(--bg-2);color:var(--ink)}

/* ---- toast bildirimleri ---- */
.l4-toasts{position:fixed;top:18px;right:18px;z-index:1100;display:flex;flex-direction:column;gap:10px;
  pointer-events:none}
.l4-toast{display:flex;align-items:center;gap:11px;min-width:240px;max-width:360px;background:#fff;
  border:1px solid var(--line);border-left-width:4px;border-radius:12px;box-shadow:var(--shadow);
  padding:12px 14px;pointer-events:auto;transform:translateX(120%);transition:transform .28s cubic-bezier(.2,.9,.3,1.1)}
.l4-toast.show{transform:none}
.l4-toast .ti{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:8px}
.l4-toast .ti svg{width:17px;height:17px}
.l4-toast .tx{font-size:.88rem;font-weight:500;color:var(--ink);line-height:1.35}
.l4-toast.success{border-left-color:var(--teal)} .l4-toast.success .ti{background:#e3f7f5;color:var(--teal-ink)}
.l4-toast.error{border-left-color:var(--red)} .l4-toast.error .ti{background:#fdeaea;color:var(--red)}
.l4-toast.info{border-left-color:var(--blue)} .l4-toast.info .ti{background:#eaf0ff;color:var(--blue-ink)}
.l4-toast.warn{border-left-color:var(--amber)} .l4-toast.warn .ti{background:#fdf2df;color:#a9741a}

/* ---- sağ araç çubuğu: açılır (flyout) menüler ---- */
.tool-fly{position:relative;display:flex;justify-content:flex-end}
.tool-fly>.tool{position:relative}
.tool-fly>.tool.active{background:#eaf0ff;border-color:#b9ccff;color:var(--blue-ink)}
.tool-ic{width:22px;height:22px;display:block;pointer-events:none}
.fly-menu{position:absolute;top:0;right:calc(100% + 12px);z-index:40;width:262px;background:#fff;
  border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px rgba(16,35,59,.18);
  padding:8px;opacity:0;transform:translateX(8px);pointer-events:none;transition:.16s ease}
.tool-fly.open .fly-menu{opacity:1;transform:none;pointer-events:auto}
.fly-menu::after{content:"";position:absolute;top:16px;right:-7px;width:12px;height:12px;background:#fff;
  border-right:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
.fly-head{display:flex;align-items:center;gap:7px;padding:6px 8px 10px;font-family:var(--display);
  font-weight:700;font-size:.82rem;color:var(--ink);letter-spacing:.01em}
.fly-info{width:16px;height:16px;border-radius:50%;background:var(--bg);color:var(--dim);font-size:.66rem;
  font-weight:700;display:inline-grid;place-items:center;cursor:help;font-family:var(--font)}
.fly-info:hover{background:#eaf0ff;color:var(--blue-ink)}
.fly-opt{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;
  border:1px solid transparent;border-radius:10px;padding:9px 10px;cursor:pointer;font-family:var(--font);
  font-size:.85rem;font-weight:500;color:var(--ink-2);transition:.12s;line-height:1.25}
.fly-opt+.fly-opt{margin-top:3px}
.fly-opt:hover{background:var(--bg-2)}
.fly-opt .oi{width:30px;height:30px;flex:none;display:grid;place-items:center;color:var(--ink-2)}
.fly-opt .oi svg{width:24px;height:24px;display:block}
.fly-opt.on{background:#e9faf8;border-color:#9fe4de;color:var(--teal-ink);font-weight:600}
.fly-opt.on .oi{color:var(--teal-ink)}

/* ---- strateji sekmesi: ikonlu profesyonel satırlar ---- */
.strat-list{display:flex;flex-direction:column;gap:9px}
.strat-row{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);
  border-radius:12px;background:var(--bg-2);cursor:pointer;user-select:none;transition:.14s;position:relative}
.strat-row:hover{border-color:#c6d2e2;background:#fff}
.strat-row .si{width:38px;height:38px;flex:none;border-radius:10px;background:#fff;border:1px solid var(--line);
  display:grid;place-items:center;color:var(--ink-2);transition:.14s}
.strat-row .si svg{width:22px;height:22px;display:block}
.strat-row .st{flex:1;min-width:0}
.strat-row .st .n{font-family:var(--display);font-weight:600;font-size:.9rem;color:var(--ink)}
/* Aciklama basligin ARDINDAN parantez icinde akar. Parantezler CSS'ten geliyor:
   metne yazsaydik yedi dilin tamamindaki cevirileri elle duzeltmek gerekirdi ve
   biri unutuldugunda tek satir parantezsiz kalirdi. */
.strat-row .st .d{font-size:.74rem;color:var(--muted);line-height:1.35;margin-left:.35em}
.strat-row .st .d::before{content:"("}
.strat-row .st .d::after{content:")"}
.strat-row input{display:none}
/* switch */
.strat-sw{width:40px;height:23px;border-radius:999px;background:#cdd8e6;flex:none;position:relative;transition:.16s}
.strat-sw::after{content:"";position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(16,35,59,.3);transition:.16s}
.strat-row.on{border-color:#9fe4de;background:#f2fcfb}
.strat-row.on .si{background:#e3f7f5;border-color:#9fe4de;color:var(--teal-ink)}
.strat-row.on .strat-sw{background:var(--teal)}
.strat-row.on .strat-sw::after{transform:translateX(17px)}

/* ---- yük veritabanı: sadece ikon + tooltip ---- */
.cst-icons{display:inline-flex;align-items:center;gap:8px}
.cst-chip{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;position:relative;cursor:help;
  border:1px solid transparent}
.cst-chip svg{width:18px;height:18px;display:block}
.cst-chip.amber{background:#fdf2df;color:#a9741a;border-color:#f3e2bd}
.cst-chip.red{background:#fdeaea;color:var(--red);border-color:#f3c9cb}
.cst-chip.blue{background:#eaf0ff;color:var(--blue-ink);border-color:#c9d8ff}
.cst-chip[data-hint]::after{content:attr(data-hint);position:absolute;bottom:calc(100% + 8px);left:50%;
  transform:translateX(-50%) translateY(4px);background:var(--ink);color:#fff;font-size:.72rem;font-weight:500;
  padding:5px 9px;border-radius:7px;white-space:nowrap;opacity:0;pointer-events:none;transition:.14s;z-index:30}
.cst-chip[data-hint]::before{content:"";position:absolute;bottom:calc(100% + 3px);left:50%;
  transform:translateX(-50%) translateY(4px);border:5px solid transparent;border-top-color:var(--ink);
  opacity:0;transition:.14s;z-index:30}
.cst-chip[data-hint]:hover::after,.cst-chip[data-hint]:hover::before{opacity:1;transform:translateX(-50%)}
.cst-none{color:var(--dim);font-size:.8rem}
.tool-div{height:1px;width:32px;align-self:flex-end;background:var(--line);margin:2px 7px}
.tool.dim{opacity:.5}

/* ============================================================
   Docs + yasal sayfalar (Kullanım Koşulları / Gizlilik) + footer
   ============================================================ */

/* ---- footer bağlantıları ---- */
.footer-inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px}
.footer-links{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center}
.footer-links a{color:var(--muted);font-size:.84rem;font-weight:500}
.footer-links a:hover{color:var(--blue-ink);text-decoration:none}
.footer-links a.mail{color:var(--ink-2)}

/* ---- docs sayfası ---- */
.docs-hero{border-bottom:1px solid var(--line);background:var(--panel)}
.docs-hero .container{padding:34px 22px 26px}
.docs-hero .eyebrow{font-family:var(--mono);font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-ink)}
.docs-hero h1{font-size:2.1rem;margin:10px 0 8px}
.docs-hero p{color:var(--muted);max-width:60ch;margin:0;font-size:1.02rem}
.docs-search{margin-top:18px;max-width:420px;position:relative}
.docs-search input{padding-left:38px}
.docs-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:17px;height:17px;color:var(--dim)}

.docs-shell{display:grid;grid-template-columns:250px 1fr;gap:44px;max-width:1180px;margin:0 auto;
  padding:30px 22px 80px;align-items:start}
.docs-nav{position:sticky;top:84px}
.docs-nav .grp{font-family:var(--display);font-weight:700;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--dim);margin:18px 0 7px;padding-left:11px}
.docs-nav .grp:first-child{margin-top:0}
.docs-nav a{display:block;font-size:.87rem;color:var(--ink-2);padding:7px 11px;border-radius:8px;
  border-left:2px solid transparent;line-height:1.3}
.docs-nav a:hover{background:var(--bg-2);text-decoration:none;color:var(--ink)}
.docs-nav a.active{background:#eaf0ff;border-left-color:var(--blue);color:var(--blue-ink);font-weight:600}

.docs-content{min-width:0;max-width:840px}
.doc-sec{scroll-margin-top:88px;padding-bottom:12px;margin-bottom:30px;border-bottom:1px solid var(--line-2)}
.doc-sec:last-child{border-bottom:none}
.doc-sec>h2{font-size:1.5rem;margin-bottom:6px;scroll-margin-top:88px}
.doc-sec>h3{font-family:var(--display);font-size:1.05rem;margin:22px 0 8px;color:var(--ink)}
.doc-sec p{color:var(--ink-2);margin:0 0 12px;line-height:1.65}
.doc-sec ul,.doc-sec ol{margin:0 0 14px;padding-left:22px;color:var(--ink-2);line-height:1.65}
.doc-sec li{margin-bottom:6px}
.doc-sec strong{color:var(--ink);font-weight:600}
.doc-lead{font-size:1.06rem;color:var(--muted)!important;margin-bottom:18px!important}

.doc-note{display:flex;gap:12px;background:#eef4ff;border:1px solid #cfdcff;border-radius:12px;padding:13px 15px;
  margin:6px 0 16px;font-size:.9rem;color:var(--ink-2)}
.doc-note.tip{background:#e9faf8;border-color:#9fe4de}
.doc-note.warn{background:#fdf6e8;border-color:#f3dca6}
.doc-note .di{flex:none;width:20px;height:20px;color:var(--blue-ink)}
.doc-note.tip .di{color:var(--teal-ink)} .doc-note.warn .di{color:#a9741a}
.doc-note b{color:var(--ink)}

.doc-feat{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line-2)}
.doc-feat:first-of-type{border-top:none}
.doc-feat .fi{width:34px;height:34px;border-radius:9px;background:#e9faf8;display:grid;place-items:center;color:var(--teal-ink)}
.doc-feat .fi svg{width:19px;height:19px}
.doc-feat .ft b{display:block;font-family:var(--display);font-size:.95rem;color:var(--ink);margin-bottom:2px}
.doc-feat .ft span{font-size:.88rem;color:var(--muted);line-height:1.55}

.kbd{font-family:var(--mono);font-size:.78rem;background:var(--bg-2);border:1px solid var(--line);
  border-bottom-width:2px;border-radius:6px;padding:1px 6px;color:var(--ink)}

/* ---- yasal sayfalar ---- */
.legal{max-width:840px;margin:0 auto;padding:36px 22px 80px}
.legal .updated{font-size:.82rem;color:var(--dim);font-family:var(--mono);margin:6px 0 26px}
.legal h1{font-size:2rem;margin-bottom:4px}
.legal h2{font-family:var(--display);font-size:1.2rem;margin:30px 0 10px;color:var(--ink);
  padding-top:10px;scroll-margin-top:88px}
.legal p,.legal li{color:var(--ink-2);line-height:1.7;margin:0 0 12px}
.legal ul{padding-left:22px;margin-bottom:14px}
.legal li{margin-bottom:6px}
.legal strong{color:var(--ink)}
.legal a{color:var(--blue-ink)}
.legal .lead{font-size:1.05rem;color:var(--muted)}
.legal-toc{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:16px 20px;margin:22px 0 30px}
.legal-toc b{font-family:var(--display);font-size:.85rem;display:block;margin-bottom:8px;color:var(--ink)}
.legal-toc ol{margin:0;padding-left:20px;columns:2;column-gap:26px}
.legal-toc a{font-size:.88rem}

@media(max-width:860px){
  .docs-shell{grid-template-columns:1fr;gap:0}
  .docs-nav{position:static;margin-bottom:22px;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel)}
  .legal-toc ol{columns:1}
}

/* ============================================================
   Sol nav + sağ dil değiştirici + hesap menüsü + abonelik
   ============================================================ */
.topbar-left{display:flex;align-items:center;gap:24px;min-width:0}
.brand{display:inline-flex;text-decoration:none;flex:none}
.topbar-left .nav-links{gap:2px}
.topbar-right{display:flex;align-items:center;gap:10px;flex:none}

/* dil değiştirici */
.lang-switch{position:relative}
.lang-btn{display:inline-flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:6px 10px;cursor:pointer;font-family:var(--font);font-weight:500;font-size:.88rem;color:var(--ink-2)}
.lang-btn:hover{background:var(--bg-2);border-color:#c6d2e2}
.lang-flag{width:20px;height:14px;border-radius:3px;overflow:hidden;display:inline-block;flex:none;
  box-shadow:0 0 0 1px rgba(16,35,59,.1) inset}
.lang-flag svg{display:block;width:100%;height:100%}
.lang-name{white-space:nowrap}
.lang-caret{color:var(--dim);font-size:.7rem}
.lang-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:70;min-width:196px;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:6px;
  opacity:0;transform:translateY(-6px);pointer-events:none;transition:.16s}
.lang-switch.open .lang-menu{opacity:1;transform:none;pointer-events:auto}
.lang-opt{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;
  border-radius:8px;padding:8px 10px;cursor:pointer;font-family:var(--font);font-size:.9rem;color:var(--ink-2)}
.lang-opt:hover{background:var(--bg-2)}
.lang-opt.on{background:#eaf0ff;color:var(--blue-ink);font-weight:600}
.lang-opt .lang-flag{width:22px;height:15px}

/* hesap menüsü */
.acct{position:relative}
.acct-btn{display:inline-flex;align-items:center;gap:9px;background:var(--panel);border:1px solid var(--line);
  border-radius:999px;padding:4px 12px 4px 4px;cursor:pointer;font-family:var(--font);font-weight:600;font-size:.88rem;color:var(--ink)}
.acct-btn:hover{background:var(--bg-2);border-color:#c6d2e2}
.acct-av{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#3f7bff,#12b5ab);color:#fff;
  display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:.8rem;flex:none;letter-spacing:.02em}
.acct-av.lg{width:44px;height:44px;font-size:1.05rem;border-radius:12px}
.acct-nm{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acct-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:70;width:258px;background:#fff;border:1px solid var(--line);
  border-radius:14px;box-shadow:var(--shadow);padding:8px;opacity:0;transform:translateY(-6px);pointer-events:none;transition:.16s}
.acct.open .acct-menu{opacity:1;transform:none;pointer-events:auto}
.acct-head{display:flex;align-items:center;gap:12px;padding:8px 8px 12px;border-bottom:1px solid var(--line-2);margin-bottom:6px}
.acct-id{min-width:0}
.acct-id b{display:block;font-size:.92rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.acct-id span{font-size:.78rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.acct-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;
  border-radius:9px;padding:9px 10px;cursor:pointer;font-family:var(--font);font-size:.9rem;color:var(--ink-2);text-decoration:none}
.acct-item:hover{background:var(--bg-2);text-decoration:none;color:var(--ink)}
.acct-item svg{width:18px;height:18px;flex:none;color:var(--muted)}
.acct-item.danger{color:var(--red)} .acct-item.danger svg{color:var(--red)}
.acct-item.danger:hover{background:#fdeaea;color:var(--red)}
.acct-div{height:1px;background:var(--line-2);margin:6px 4px}

/* modal gövde (zengin içerik) + hesap/abonelik */
.l4-modal-body{padding:2px 22px 6px}
.acct-modal{display:flex;flex-direction:column}
.am-row{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.am-row:last-child{border-bottom:none}
.am-k{font-size:.82rem;color:var(--muted);font-weight:500}
.am-v{font-size:.9rem;color:var(--ink);font-weight:600;text-align:right;word-break:break-word}
/* Ucretli kademe ayri renkte: rozetin metni degisiyor ama tek renk kalirsa
   "Free" ile "Pro" bir bakista ayirt edilemiyor. */
.plan-badge.pro{background:#eaf0ff;color:var(--blue-ink);border-color:#cfdcff}
.plan-badge{display:inline-flex;align-items:center;font-size:.74rem;font-weight:700;color:var(--teal-ink);
  background:#e3f7f5;border:1px solid #9fe4de;border-radius:999px;padding:3px 10px}
.sub-card{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--bg-2)}
.sub-top{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}
.sub-name{font-family:var(--display);font-weight:700;font-size:1.05rem;color:var(--ink)}
.sub-desc{font-size:.85rem;color:var(--muted);margin-top:3px;line-height:1.5;max-width:36ch}
.sub-actions{display:flex;gap:10px;flex-wrap:wrap}
.sub-actions .btn{flex:1;justify-content:center;min-width:130px}

/* ---- mobil gezinme ----
   Onceden 900px altinda .nav-links yalnizca gizleniyordu ve yerine hicbir sey
   konmuyordu: telefondan giren kullanici hicbir sayfaya ulasamiyordu. Artik
   ayni <nav> bir acilir panele donusuyor. */
/* place-items BIR IZGARA kisayolu. Bu dugme ise FLEX ve dikey: orada
   place-items yalnizca align-items'i (yatay eksen) ayarliyor, ana eksen olan
   DIKEY ortalama hic yapilmiyordu. Uc cizgi bu yuzden kutunun ust kenarina
   yapisik duruyordu. Gereken justify-content. */
.nav-burger{display:none;width:38px;height:38px;border:1px solid var(--line);background:#fff;
  border-radius:10px;cursor:pointer;padding:0;gap:4px;
  flex-direction:column;align-items:center;justify-content:center}
.nav-burger span{display:block;width:17px;height:2px;background:var(--ink-2);border-radius:2px;
  transition:transform .2s,opacity .2s}
.nav-burger.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav-burger.open span:nth-child(2){opacity:0}
.nav-burger.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

@media(max-width:900px){
  .nav-burger{display:flex;width:42px;height:42px}
  /* topbar-left'in 24px'lik araligi MASAUSTU icin secilmisti; orada menu
     dugmesi yok ve bosluk logo ile baglantilar arasinda duruyordu. Telefonda
     araya menu dugmesi girince ayni bosluk dugmeyi logodan koparip ekranin
     soluna itiyor, "kaymis" gorunuyordu. Dokunmatikte 12px yeterli. */
  .topbar-left{gap:12px}
  .topbar-left .nav-links{
    display:none;                       /* .open ile acilir */
    position:absolute;top:100%;left:0;right:0;z-index:60;
    flex-direction:column;align-items:stretch;gap:2px;
    background:#fff;border-bottom:1px solid var(--line);
    box-shadow:0 12px 28px rgba(16,35,59,.12);
    padding:8px 14px 14px;max-height:calc(100vh - 62px);overflow-y:auto}
  .topbar-left .nav-links.open{display:flex}
  .topbar-left .nav-links a{padding:11px 10px;border-radius:9px;font-size:.95rem}

  /* Cozumler menusu mobilde acilir kutu olamaz: ekran disina tasar.
     Panelin icinde duz bir liste olarak akar. */
  .nav-links .nav-drop{position:static}
  .nav-links .nav-drop-btn{width:100%;justify-content:space-between;padding:11px 10px;font-size:.95rem}
  .nav-links .nav-drop-menu{position:static;width:auto;opacity:1;transform:none;pointer-events:auto;
    display:none;box-shadow:none;border:none;border-left:2px solid var(--line);
    border-radius:0;margin:2px 0 6px 10px;padding:2px 0 2px 8px}
  .nav-links .nav-drop.open .nav-drop-menu{display:block}
  /* Masaustundeki "uzerine gelince ac" davranisi dokunmatikte yanlis tetiklenir. */
  .nav-links .nav-drop:hover .nav-drop-menu{display:none}
  .nav-links .nav-drop.open:hover .nav-drop-menu{display:block}
}
@media(max-width:600px){ .lang-name,.acct-nm{display:none} .lang-btn{padding:6px 8px} }

/* ============================================================
   Çözümler menüsü · Ana sayfa vitrin · Çözüm sayfaları · Footer
   ============================================================ */

/* ---- üst menü açılır listesi ---- */
.nav-drop{position:relative}
.nav-drop-btn{display:inline-flex;align-items:center;gap:5px;background:transparent;border:none;cursor:pointer;
  font-family:var(--font);color:var(--ink-2);font-weight:500;font-size:.92rem;padding:8px 12px;border-radius:8px}
.nav-drop-btn:hover{background:var(--bg-2);color:var(--ink)}
.nav-drop.open .nav-drop-btn{background:#eaf0ff;color:var(--blue-ink)}
.nav-drop-menu{position:absolute;top:calc(100% + 10px);left:0;z-index:70;width:330px;background:#fff;
  border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 44px rgba(16,35,59,.14);padding:7px;
  opacity:0;transform:translateY(-6px);pointer-events:none;transition:.16s}
.nav-drop.open .nav-drop-menu,.nav-drop:hover .nav-drop-menu{opacity:1;transform:none;pointer-events:auto}
.ndi{display:flex;align-items:flex-start;gap:11px;padding:9px 10px;border-radius:10px;text-decoration:none}
.ndi:hover{background:var(--bg-2);text-decoration:none}
.ndi-ic{width:34px;height:34px;flex:none;border-radius:9px;display:grid;place-items:center;color:#fff}
.ndi-ic svg{width:19px;height:19px}
.ndi-ic.sea{background:linear-gradient(135deg,#2f6bff,#1d4fd6)}
.ndi-ic.road{background:linear-gradient(135deg,#12b5ab,#0e938b)}
.ndi-ic.air{background:linear-gradient(135deg,#7b6bf5,#5b4cd6)}
.ndi-ic.pallet{background:linear-gradient(135deg,#f0a92e,#d68b14)}
.ndi-tx{display:flex;flex-direction:column;gap:2px;min-width:0}
.ndi-tx b{font-family:var(--display);font-size:.92rem;color:var(--ink);font-weight:600}
.ndi-tx i{font-style:normal;font-size:.78rem;color:var(--muted);line-height:1.35}

/* ---- ana sayfa hero: metin + video ---- */
.hero-split{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:44px;align-items:center}
.hero-split .hero-copy h1{max-width:16ch}
.hero-video{position:relative;border-radius:18px;overflow:hidden;background:#0e1a2c;
  border:1px solid var(--line);box-shadow:0 24px 60px rgba(16,35,59,.18)}
.hero-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover}
.hero-video .hv-glow{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(160deg,rgba(47,107,255,.16),transparent 45%)}
.hero-video .hv-tag{position:absolute;left:12px;bottom:12px;display:inline-flex;align-items:center;gap:7px;
  background:rgba(255,255,255,.92);border-radius:999px;padding:5px 12px;font-size:.74rem;font-weight:600;
  color:var(--ink-2);backdrop-filter:blur(6px)}
.hero-video .hv-tag::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--teal);
  box-shadow:0 0 0 0 rgba(18,181,171,.6);animation:hvpulse 2s infinite}
@keyframes hvpulse{70%{box-shadow:0 0 0 8px rgba(18,181,171,0)}100%{box-shadow:0 0 0 0 rgba(18,181,171,0)}}
.hero-stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:30px;padding-top:22px;border-top:1px solid var(--line)}
.hero-stats div{display:flex;flex-direction:column}
.hero-stats b{font-family:var(--display);font-size:1.5rem;color:var(--ink);line-height:1.1}
.hero-stats span{font-size:.8rem;color:var(--muted)}

/* ---- çözüm kartları (ana sayfa) ---- */
.sol-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding:8px 0 12px}
.sol-card{display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);
  border-radius:16px;overflow:hidden;box-shadow:var(--shadow-sm);transition:.18s;text-decoration:none}
.sol-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px rgba(16,35,59,.12);
  border-color:#c6d2e2;text-decoration:none}
.sol-card figure{margin:0;background:linear-gradient(180deg,#f6f9fc,#eaf0f7);height:150px;display:grid;place-items:center;
  border-bottom:1px solid var(--line-2);overflow:hidden;padding:10px}
/* Gorsellerde width/height NITELIKLERI var (CLS'i onlemek icin). max-width/max-height
   bu nitelikleri ezmez: yuzdeli max-height izgara satirinda cozulemedigi icin
   yukseklik gorselin kendi piksel degerinde (orn. 978px) kalir ve kutu icinde
   kirpilarak gorunmez olur. Kesin olcu verip object-fit ile oturtuyoruz. */
.sol-card figure img{display:block;width:100%;height:100%;object-fit:contain}
.sol-card .sc-body{padding:15px 17px 18px}
.sol-card h3{font-size:1.02rem;display:flex;align-items:center;gap:8px}
.sol-card h3 .dot{width:9px;height:9px;border-radius:50%;flex:none}
.sol-card p{margin:7px 0 0;font-size:.85rem;color:var(--muted);line-height:1.55}
.sol-card .sc-go{margin-top:12px;font-size:.82rem;font-weight:600;color:var(--blue-ink)}

/* ---- çözüm sayfası ---- */
.sol-hero{border-bottom:1px solid var(--line);background:
  radial-gradient(1100px 380px at 12% -20%,rgba(47,107,255,.10),transparent 60%),var(--panel)}
.sol-hero .container{padding:52px 22px 44px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:40px;align-items:center}
.sol-hero .eyebrow{font-family:var(--mono);font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-ink)}
.sol-hero h1{font-size:2.6rem;line-height:1.08;margin:12px 0 14px}
.sol-hero p.lead{font-size:1.06rem;color:var(--muted);margin:0 0 24px;max-width:52ch}
.sol-hero .cta{display:flex;gap:12px;flex-wrap:wrap}
.sol-hero figure{margin:0;border-radius:16px;overflow:hidden;border:1px solid var(--line);background:#fff;
  box-shadow:0 20px 52px rgba(16,35,59,.14)}
.sol-hero figure img{display:block;width:100%;height:auto}

.sol-feats{padding:12px 0 8px}
.sol-feat{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:44px;align-items:center;
  padding:44px 0;border-bottom:1px solid var(--line-2)}
.sol-feat:last-child{border-bottom:none}
.sol-feat:nth-child(even) .sf-media{order:-1}
.sol-feat h2{font-size:1.5rem;margin:0 0 10px}
.sol-feat p{color:var(--muted);font-size:.96rem;margin:0;line-height:1.65}
.sol-feat .sf-num{font-family:var(--mono);font-size:.74rem;letter-spacing:.14em;color:var(--dim);
  text-transform:uppercase;display:block;margin-bottom:8px}
.sf-media{margin:0;border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#fff;
  box-shadow:var(--shadow);padding:10px}
.sf-media img{display:block;width:100%;height:auto;border-radius:8px}
.sol-note{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:#fff8e8;border:1px solid #f2ddb0;
  color:#8a5a12;border-radius:999px;padding:5px 13px;font-size:.78rem;font-weight:600}

/* ---- fayda şeridi + kapanış CTA ---- */
.benefits{background:var(--panel);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:44px 0}
.benefit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:24px}
.benefit{background:var(--bg-2);border:1px solid var(--line-2);border-radius:14px;padding:18px}
.benefit .ic{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;
  margin-bottom:11px;color:var(--brand-4d);
  background:linear-gradient(160deg,var(--chip-a),var(--chip-b));
  box-shadow:inset 0 0 0 1px var(--chip-ring)}
.benefit .ic svg{width:20px;height:20px;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.benefit h3{font-size:.98rem;margin:0 0 6px}
.benefit p{margin:0;font-size:.85rem;color:var(--muted);line-height:1.55}
.closer{text-align:center;padding:56px 22px 64px}
.closer h2{font-size:1.85rem;margin-bottom:10px}
.closer p{color:var(--muted);max-width:56ch;margin:0 auto 22px}

/* ---- footer ---- */
.site-foot{border-top:1px solid var(--line);background:var(--panel);color:var(--muted);flex-shrink:0;padding:0}
.foot-grid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:32px;padding-top:44px;padding-bottom:34px}
.foot-brand p{margin:14px 0 12px;font-size:.85rem;line-height:1.65;color:var(--muted);max-width:38ch}
.foot-brand .brand{text-decoration:none}
.foot-mail{font-size:.85rem;font-weight:600;color:var(--ink-2)}
.foot-col{display:flex;flex-direction:column;gap:9px}
.foot-col h4{font-family:var(--display);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink);margin:0 0 3px}
.foot-col a{color:var(--muted);font-size:.86rem;font-weight:500}
.foot-col a:hover{color:var(--blue-ink);text-decoration:none}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;
  border-top:1px solid var(--line-2);padding-top:18px;padding-bottom:22px;font-size:.82rem;color:var(--dim)}
.foot-note{color:var(--dim)}

/* ---- ince alt bilgi (giris yapmis kullanici) ----
   Tanitim footer'i uygulama icinde yalnizca yer kapliyordu. Bu surum tek
   satir: yasal metinler ve cerez tercihleri. Ikisi de gorunur kalmak
   zorunda — cerez onayi, verildigi kadar kolay geri alinabilmeli.

   Yukseklik bilerek dusuk tutuldu; liste sayfalarinin altinda bir "bolum"
   gibi durmamali, sayfanin bittigini belli eden ince bir cizgi olmali. */
.site-foot--slim{background:transparent}
.foot-slim{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;
  gap:10px 20px;padding-top:14px;padding-bottom:16px;font-size:.78rem;color:var(--dim)}
.foot-slim-links{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px}
.foot-slim-links a{color:var(--dim);font-weight:500}
.foot-slim-links a:hover{color:var(--blue-ink);text-decoration:none}
.foot-slim .linklike{font-size:inherit;color:var(--dim)}
.foot-slim-copy{color:var(--dim);white-space:nowrap}
/* Dar ekranda iki blok alt alta ve sola hizali — ortalanmis kisa metinler
   sarmalayinca duzensiz gorunuyor. */
@media(max-width:640px){
  .foot-slim{flex-direction:column;align-items:flex-start;gap:8px}
}

@media(max-width:1080px){
  .sol-grid{grid-template-columns:repeat(2,1fr)}
  .benefit-grid{grid-template-columns:repeat(2,1fr)}
  .foot-grid{grid-template-columns:1fr 1fr 1fr;gap:28px}
  .foot-brand{grid-column:1/-1}
}
@media(max-width:900px){
  .hero-split{grid-template-columns:1fr;gap:30px}
  .sol-hero .container{grid-template-columns:1fr;gap:28px;padding:38px 22px 34px}
  .sol-hero h1{font-size:2rem}
  .sol-feat{grid-template-columns:1fr;gap:20px;padding:32px 0}
  .sol-feat:nth-child(even) .sf-media{order:0}
  .nav-drop-menu{width:290px}
}
@media(max-width:640px){
  .sol-grid,.benefit-grid{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
  .hero-stats{gap:18px}
}

/* ============================================================
   Ekip (Team) — üye listesi, roller, davetler, davet karşılama
   ============================================================ */
.team-shell{padding:26px 22px 60px;max-width:960px}
.team-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:20px 22px;box-shadow:var(--shadow-sm);margin-bottom:16px}
.team-card h2{font-size:1.05rem;margin:0 0 4px}
.team-card h2 + .muted{font-size:.86rem;margin:0 0 16px}
.team-card > .muted{display:block;margin-bottom:14px}

.team-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.team-id{display:flex;align-items:center;gap:12px;min-width:0}
.team-id b{font-family:var(--display);font-size:1.1rem;display:block;color:var(--ink)}
.team-id .muted{font-size:.82rem}
.team-av{width:40px;height:40px;flex:none;border-radius:11px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--blue),var(--blue-ink));color:#fff;
  font-family:var(--display);font-weight:700;font-size:.9rem}
.team-av.pending{background:linear-gradient(135deg,#c6d2e2,#93a1b5)}

.team-rename{display:flex;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line-2)}
.team-rename input{flex:1;max-width:340px;padding:8px 12px;border:1px solid var(--line);
  border-radius:var(--r-sm);font-family:var(--font);font-size:.9rem;color:var(--ink)}

/* rol rozetleri */
.role-badge{display:inline-flex;align-items:center;font-size:.74rem;font-weight:600;padding:4px 11px;
  border-radius:999px;white-space:nowrap;border:1px solid transparent}
.role-badge.owner {background:#eef1ff;color:#3b3ba8;border-color:#d5daff}
.role-badge.admin {background:#eaf0ff;color:var(--blue-ink);border-color:#cfdcff}
.role-badge.member{background:#e9faf8;color:var(--teal-ink);border-color:#c7ede9}
.role-badge.viewer{background:var(--bg-2);color:var(--muted);border-color:var(--line)}

/* davet formu */
.invite-form{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:12px;align-items:end}
.invite-form label{display:flex;flex-direction:column;gap:5px;min-width:0}
.invite-form label span{font-size:.78rem;font-weight:600;color:var(--ink-2)}
.invite-form input,.invite-form select{padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.9rem;color:var(--ink);background:#fff;width:100%}
.invite-form button{height:38px}

/* üye / davet satırları */
.team-table{display:flex;flex-direction:column}
.team-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2);flex-wrap:wrap}
.team-row:last-child{border-bottom:none}
.tr-id{flex:1;min-width:170px}
.tr-id b{display:block;font-size:.92rem;color:var(--ink);font-weight:600}
.tr-id .muted{font-size:.8rem}
.tr-you{font-weight:500;color:var(--dim);font-size:.8rem}
.tr-role select{padding:6px 10px;border:1px solid var(--line);border-radius:8px;font-size:.8rem;
  font-family:var(--font);color:var(--ink-2);background:#fff;cursor:pointer}
.tr-act{display:flex;gap:6px;flex-wrap:wrap}
.tr-act form{display:inline}
.btn.danger{color:var(--red)}
.btn.danger:hover{background:#fdeef0;border-color:#f5c2c7}

/* bildirim şeridi */
.team-flash{border-radius:var(--r-sm);padding:11px 15px;font-size:.87rem;font-weight:500;margin-bottom:14px;
  border:1px solid transparent}
.team-flash.success{background:#e9faf8;color:var(--teal-ink);border-color:#c7ede9}
.team-flash.warn{background:#fff8e8;color:#8a5a12;border-color:#f2ddb0}
.team-flash.error{background:#fdeef0;color:#a3282c;border-color:#f5c2c7}

/* kopyalanabilir davet bağlantısı */
.team-linkbox{background:#f6f9fc;border:1px dashed #b9c8dc;border-radius:var(--r);padding:16px 18px;margin-bottom:16px}
.team-linkbox b{font-family:var(--display);font-size:.92rem;color:var(--ink)}
.team-linkbox p{margin:4px 0 12px;font-size:.83rem;color:var(--muted)}
.team-linkrow{display:flex;gap:8px}
.team-linkrow input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--mono);font-size:.8rem;color:var(--ink-2);background:#fff;min-width:0}

/* lisans atama: koltuk sayacı ve üye satırındaki anahtar */
.team-seats{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px;
  padding:10px 14px;background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-sm);
  font-size:.85rem;color:var(--ink-2)}
.team-seats b{font-family:var(--display);color:var(--ink)}
.team-seats .muted{font-size:.8rem}
.team-seats a{font-size:.82rem;font-weight:600;color:var(--blue-ink)}
.team-seats.over{background:#fff8e8;border-color:#f2ddb0;color:#8a5a12}
.team-seats.over b{color:#8a5a12}

.lic-assign{display:inline-block;margin-left:10px;font-family:var(--font);font-size:.8rem;
  font-weight:600;color:var(--blue-ink);vertical-align:middle}

.tr-lic-form{flex:none}
.tr-lic{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:600;
  padding:4px 11px;border-radius:999px;white-space:nowrap;border:1px solid transparent;
  font-family:var(--font);cursor:default}
button.tr-lic{cursor:pointer}
button.tr-lic:disabled{opacity:.55;cursor:not-allowed}
.tr-lic.on{background:#e9faf8;color:var(--teal-ink);border-color:#c7ede9}
.tr-lic.off{background:var(--bg-2);color:var(--muted);border-color:var(--line)}
button.tr-lic.on:hover:not(:disabled){background:#d7f4f0}
button.tr-lic.off:hover:not(:disabled){background:#e9faf8;color:var(--teal-ink);border-color:#c7ede9}

/* rol açıklama kartları */
.role-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.role-cell{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:14px 16px}
.role-cell p{margin:8px 0 0;font-size:.84rem;color:var(--muted);line-height:1.6}

/* davet karşılama sayfası */
.invite-shell{display:grid;place-items:center;padding:60px 22px 80px}
.invite-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:38px 40px;
  box-shadow:0 20px 52px rgba(16,35,59,.12);max-width:520px;width:100%;text-align:center}
.invite-mark{display:flex;justify-content:center;margin-bottom:22px}
.invite-card h1{font-size:1.55rem;margin:0 0 12px;line-height:1.25}
.invite-lead{font-size:1rem;color:var(--ink-2);margin:0 0 20px;line-height:1.6}
.invite-meta{display:inline-flex;align-items:center;gap:10px;background:var(--bg-2);border:1px solid var(--line);
  border-radius:999px;padding:7px 16px;margin-bottom:20px;font-size:.85rem;color:var(--muted)}
.invite-meta b{color:var(--ink)}
.invite-note{font-size:.83rem;color:var(--muted);line-height:1.6;margin:18px 0 0}
.invite-card .team-flash{text-align:left}

@media(max-width:760px){
  .invite-form{grid-template-columns:1fr}
  .role-grid{grid-template-columns:1fr}
  .team-row{align-items:flex-start}
  .invite-card{padding:28px 22px}
}

/* ---- lisans / abonelik sayfası ---- */
.lic-shell{padding:26px 22px 60px;max-width:960px}

/* Kart: ekip sayfasındaki .team-card ile aynı dil, biraz daha havalı iç boşluk.
   Ayrı bir sınıf çünkü bu sayfada başlıklar ikonlu ve hizalama farklı. */
.lic-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:22px 24px;box-shadow:var(--shadow-sm);margin-bottom:16px}
.lic-h2{display:flex;align-items:center;gap:9px;font-size:1.02rem;margin:0 0 4px}
.lic-h2 + .muted{display:block;font-size:.84rem;margin:0 0 16px;line-height:1.6}

/* İkon: metinle aynı renkte, satır yüksekliğine oturur. currentColor sayesinde
   rozetin içinde rozetin rengini, başlıkta metnin rengini alır. */
.lic-i{width:16px;height:16px;flex:none;vertical-align:-2px}

.lic-status-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.lic-plan-id{display:flex;align-items:center;gap:13px;min-width:0}
.lic-plan-id .muted{display:block;font-size:.78rem}
.lic-plan-mark{width:42px;height:42px;flex:none;border-radius:12px;display:grid;place-items:center;color:#fff}
.lic-plan-mark .lic-i{width:20px;height:20px}
.lic-plan-mark.pro{background:linear-gradient(135deg,var(--blue),var(--blue-ink))}
.lic-plan-mark.free{background:linear-gradient(135deg,#c6d2e2,#93a1b5)}
.lic-tier{font-family:var(--display);font-size:1.22rem;color:var(--ink);text-transform:capitalize}

.lic-badge{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;font-weight:600;padding:5px 12px;
  border-radius:999px;white-space:nowrap;border:1px solid transparent}
.lic-badge .lic-i{width:14px;height:14px}
.lic-badge.ok{background:#e9faf8;color:var(--teal-ink);border-color:#c7ede9}
.lic-badge.warn{background:#fff8e8;color:#8a5a12;border-color:#f2ddb0}
.lic-badge.error{background:#fdeef0;color:#a3282c;border-color:#f5c2c7}

/* Bilgi çiftleri. auto-fit sayesinde alan daraldıkça sütun sayısı kendiliğinden
   azalır; sabit sütun sayısı verseydik telefonda değerler taşardı. */
.lic-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:18px;margin:18px 0 0;
  padding-top:18px;border-top:1px solid var(--line-2)}
.lic-facts dt{display:flex;align-items:center;gap:7px;font-size:.78rem;font-weight:600;
  color:var(--ink-2);margin-bottom:6px}
.lic-facts dd{margin:0;font-family:var(--display);font-size:1.12rem;color:var(--ink)}

/* Ödeme sonrası bekleme: hak gelene kadar kart hafifçe nabız atar. Sabit bir
   "yükleniyor" yazısı yerine bu, sayfanın geri kalanını okunur bırakıyor. */
.lic-status.is-waiting{position:relative;overflow:hidden}
.lic-status.is-waiting::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);
  animation:lic-sheen 1.5s ease-in-out infinite}
@keyframes lic-sheen{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){
  .lic-status.is-waiting::after{animation:none}
}

.lic-note{margin:16px 0 0;font-size:.84rem;color:var(--muted);line-height:1.6}

.lic-seats{margin:14px 0 18px}
.lic-seats label{display:block;font-size:.85rem;font-weight:600;color:var(--ink-2);margin-bottom:7px}
.lic-seatrow{display:flex;gap:9px;align-items:center;margin-bottom:8px}
.lic-seats input{width:96px;padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.95rem;color:var(--ink);background:#fff}
.lic-hint{display:block;font-size:.8rem;line-height:1.6}

/* Fatura tablosu */
.lic-inv{width:100%;border-collapse:collapse;font-size:.87rem}
.lic-inv th{text-align:left;font-size:.76rem;font-weight:600;color:var(--ink-2);
  padding:0 12px 9px 0;border-bottom:1px solid var(--line-2)}
.lic-inv td{padding:11px 12px 11px 0;border-bottom:1px solid var(--line-2);color:var(--ink)}
.lic-inv tr:last-child td{border-bottom:none}
.lic-inv .num{text-align:right;padding-right:18px}
.lic-inv .mono{font-family:var(--mono);font-size:.82rem}
.lic-inv .act{text-align:right;width:1%;white-space:nowrap;padding-right:0}
.lic-inv .act .btn{display:inline-flex;align-items:center;gap:6px}

/* Koltuk degisikliginin fatura sonucu. Yalnizca Paddle'dan gercek bir
   cevap gelince gorunur; tahmini rakam gostermiyoruz. */
.lic-quote{margin:-6px 0 18px;padding:10px 14px;border-radius:var(--r-sm);
  font-size:.86rem;font-weight:500;border:1px solid transparent}
.lic-quote.ok{background:#eaf0ff;color:var(--blue-ink);border-color:#cfdcff}
.lic-quote.warn{background:#fff8e8;color:#8a5a12;border-color:#f2ddb0}
.lic-quote.loading{background:var(--bg-2);color:var(--muted);border-color:var(--line)}

.lic-actions{display:flex;gap:10px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--line-2)}

.lic-plans{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-top:8px;
  align-items:stretch}
/* position:relative — tasarruf rozeti karta gore konumlaniyor.
   overflow GIZLENMIYOR: rozet kartin ust kenarina BINIYOR ve kirpilmamali. */
.lic-plan{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:22px 22px 20px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;
  transition:border-color .15s,box-shadow .15s,transform .15s}
.lic-plan:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.lic-plan.is-current{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}
/* En avantajli plan. Sinif YALNIZCA gercek bir tasarruf hesaplanabildiginde
   basiliyor (bkz. PlanPrice.SavingPercent); fiyatlar okunamadiginda kart
   sade kalir ve hicbir sey vaat etmez. */
.lic-plan.is-best{border-color:var(--teal)}
.lic-plan h3{font-family:var(--display);font-size:1.05rem;margin:0;color:var(--ink)}
.lic-plan p{margin:0;font-size:.84rem;line-height:1.6;flex:1}
.lic-plan .btn{align-self:flex-start;display:inline-flex;align-items:center;gap:7px}
/* Kart basindaki simge dairesi. Durum kartindaki .lic-plan-mark ile ayni
   sinif ama orada renkli bir rozet, burada sakin bir isaret: renk sinifi
   (pro/free) verilmedigi icin notr kaliyor. */
.lic-plan > .lic-plan-mark{width:36px;height:36px;border-radius:10px;background:var(--line-2);
  color:var(--ink-2)}
.lic-plan.is-best > .lic-plan-mark{background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal)}

/* ---- fiyat ----
   Rakam BUYUK ve birim etiketi kucuk: kullanicinin gozunun once carptigi
   sey tutar olmali, "kullanıcı / ay" ibaresi degil.

   Tutar tarayicida yeniden yaziliyor (Intl, sonra Paddle.PricePreview).
   Bu yuzden genislik SABITLENMIYOR: "15,00 ₺" ile "$15.00" ayni yeri
   kaplamiyor ve sabit genislik birini kirpardi. */
.lic-price{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin:-2px 0 2px}
.lic-price .lic-amount{font-family:var(--display);font-size:1.7rem;line-height:1.1;color:var(--ink);
  font-variant-numeric:tabular-nums}
.lic-price .lic-per{font-size:.8rem;color:var(--muted)}
/* Yillik planin aylik karsiligi. TUREVDIR: Paddle'dan gelmez, biz boluyoruz.
   Paddle ziyaretciye ozel fiyati yerellestirdiginde JS bu satiri gizliyor —
   bicimlenmis bir tutari 12'ye bolemeyiz ve karti iki para biriminde
   birakmak, fiyat sayfasinda yapilabilecek en kotu sey olurdu. */
.lic-permonth{display:flex;align-items:baseline;gap:6px;font-size:.78rem;color:var(--muted);
  margin-top:-6px}
.lic-permonth .lic-amount{font-weight:600;font-variant-numeric:tabular-nums}
.lic-permonth[hidden]{display:none}

/* Tasarruf rozeti. Kartin ust kenarina biniyor. */
.lic-save{position:absolute;top:-11px;right:16px;display:inline-flex;align-items:center;gap:5px;
  padding:4px 10px;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.01em;
  background:var(--teal);color:#fff;box-shadow:var(--shadow-sm)}
.lic-save .lic-i{width:13px;height:13px}

.lic-foot{margin-top:18px;font-size:.8rem;line-height:1.6}

@media(max-width:760px){
  .lic-shell{padding:20px 16px 48px}
  .lic-seats input{width:100%;max-width:120px}
  /* Telefonda kartlar alt alta; rozet sagda kalirsa bir sonraki kartin
     kosesine cok yaklasiyor. */
  .lic-save{right:auto;left:16px}
  .lic-price .lic-amount{font-size:1.5rem}
}

/* ---- API anahtarları ---- */

/* Yeni anahtarın gösterildiği kutu. Bilerek dikkat çekici: anahtar bir kez
   görünüyor ve kaçırılırsa geri getirilemiyor. */
.key-reveal{background:#fff8e8;border:1px solid #f2ddb0;border-radius:var(--r);
  padding:18px 20px;margin-bottom:16px}
.key-reveal-head{display:flex;align-items:center;gap:9px;color:#8a5a12;margin-bottom:6px}
.key-reveal-head b{font-family:var(--display);font-size:.95rem}
.key-reveal p{margin:0 0 14px;font-size:.85rem;color:#8a5a12;line-height:1.6}
.key-reveal-row{display:flex;gap:8px}
.key-reveal-row input{flex:1;min-width:0;padding:10px 12px;border:1px solid #e6cf9a;
  border-radius:var(--r-sm);font-family:var(--mono);font-size:.84rem;color:var(--ink);background:#fff}
.key-reveal-row .btn{display:inline-flex;align-items:center;gap:6px;flex:none}

.key-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-top:14px}
.key-form label{display:flex;flex-direction:column;gap:5px;min-width:0}
.key-form label > span{font-size:.78rem;font-weight:600;color:var(--ink-2)}
.key-form input[name=name]{padding:9px 12px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.9rem;color:var(--ink);background:#fff;min-width:230px}
.key-mode{flex-direction:row!important;align-items:center;gap:8px!important;padding-bottom:9px}
.key-mode input{width:16px;height:16px;accent-color:var(--blue)}
.key-mode span{font-size:.85rem;font-weight:500;color:var(--ink-2)}

.key-table td{vertical-align:middle}
.key-table tr.is-revoked{opacity:.55}
.key-tag{display:inline-block;margin-left:7px;font-size:.68rem;font-weight:700;
  padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.02em}
.key-tag.test{background:#eaf0ff;color:var(--blue-ink)}
.key-tag.off{background:var(--bg-2);color:var(--muted);margin-left:0}

/* Kredi paketi satın alma satırı: kullanım kartının içinde, kalan kredinin
   hemen altında. Ayrı bir karta koysaydık kredinin azaldığını gören kişi
   satın alma yolunu aramak zorunda kalırdı. */
.api-buy{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  margin-top:16px;padding-top:16px;border-top:1px solid var(--line-2)}
.api-buy b{display:block;font-family:var(--display);font-size:.95rem;color:var(--ink)}
.api-buy .muted{display:block;font-size:.83rem;line-height:1.55;margin-top:3px}
/* Aciklama metni buyuyup fiyati sikistirmasin; fiyat ve dugme kendi
   genisliklerini korur. */
.api-buy-info{flex:1 1 260px;min-width:0}
.api-buy-price{flex:none;text-align:right}
@media(max-width:640px){ .api-buy-price{text-align:left} }
/* Fiyat rakami plan kartlarindakiyle AYNI sinifi (.lic-price) kullaniyor;
   burada yalnizca biraz kucultuluyor. Ayri bir sinif yazsaydik iki fiyat
   gorunumu olusur ve biri digerinden ayrisirdi. */
.api-buy .lic-price{justify-content:flex-end}
.api-buy .lic-price .lic-amount{font-size:1.35rem}
@media(max-width:640px){ .api-buy .lic-price{justify-content:flex-start} }
/* Cagri basina dusen tutar. TUREVDIR: Paddle ziyaretciye ozel fiyati
   yerellestirdiginde JS bu satiri gizliyor (bkz. wwwroot/js/prices.js). */
.api-buy-unit{display:flex;align-items:baseline;justify-content:flex-end;gap:6px;flex-wrap:wrap;
  font-size:.78rem;color:var(--muted);margin-top:2px}
.api-buy-unit .lic-amount{font-weight:600;font-variant-numeric:tabular-nums}
.api-buy-unit .sep{opacity:.5}
.api-buy-unit[hidden]{display:none}
@media(max-width:640px){ .api-buy-unit{justify-content:flex-start} }

.key-tips{margin:12px 0 0;padding-left:20px}
.key-tips li{font-size:.85rem;color:var(--ink-2);line-height:1.65;margin-bottom:7px}

@media(max-width:760px){
  .key-form input[name=name]{min-width:0;width:100%}
  .key-form label{width:100%}
}

/* ---- API referans sayfası ---- */
.apidoc code{font-family:var(--mono);font-size:.86em;background:var(--bg-2);
  padding:1px 5px;border-radius:4px;color:var(--ink)}
.apidoc-code{margin:14px 0;padding:14px 16px;background:#0f1b2d;border-radius:var(--r-sm);
  overflow-x:auto;line-height:1.55}
.apidoc-code code{font-family:var(--mono);font-size:.8rem;color:#d7e3f4;
  background:none;padding:0;white-space:pre}
.apidoc .lic-inv td:first-child{width:32%}
.apidoc .key-tips li b{color:var(--ink)}
/* Alan tablolari: ad ve tip sutunlari dar, aciklama genis. Yukaridaki %32
   kurali iki sutunlu fatura tablosu icin yazilmisti; uc sutunlu alan
   listesinde aciklamaya yer birakmiyor. */
.apidoc-tbl{table-layout:auto}
.apidoc-tbl td:first-child,.apidoc-tbl th:first-child{width:1%;white-space:nowrap;
  padding-right:18px;font-family:var(--mono);font-size:.82rem}
/* TIP sutunu yalnizca UC sutunlu tablolarda ikincidir. Bu kural bir zamanlar
   nth-child(2) idi ve iki sutunlu tablolarda (strategy, Result, placements)
   ACIKLAMA sutununa dusuyordu: nowrap yuzunden tablo karti asiyor, baslik
   seridi ve metin kartin disina tasiyordu. Sutun sayisini CSS sayamadigi
   icin isaret elle konuyor. */
.apidoc-tbl.typed td:nth-child(2){width:1%;white-space:nowrap;color:var(--muted);padding-right:18px}
.apidoc-tbl td{vertical-align:top}
/* Aciklama sutunu ne olursa olsun sarilabilmeli; uzun bir alan adi ya da
   kod parcasi tabloyu genisletmemeli. */
.apidoc-tbl td:last-child{word-break:break-word;overflow-wrap:anywhere}
/* Son care: yine de sigmazsa kart TASMAZ, tablo kendi icinde kayar. */
.apidoc .tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.apidoc-h3{font-family:var(--mono);font-size:.86rem;color:var(--ink-2);font-weight:600;
  margin:26px 0 8px;padding-top:16px;border-top:1px solid var(--line-2)}
.apidoc-h3:first-of-type{border-top:0;padding-top:0}

/* ---- alan iç geometrisi (profil) formu ---- */
.prof-box{margin-top:18px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-2);padding:12px 14px}
.prof-box > summary{cursor:pointer;font-family:var(--display);font-weight:600;font-size:.9rem;color:var(--ink)}
.prof-box[open] > summary{margin-bottom:10px}
.prof-hint{font-size:.8rem;color:var(--muted);margin:0 0 12px;line-height:1.55}
.prof-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;align-items:end}
.prof-check{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink-2);padding-bottom:8px}
.prof-check input{width:16px;height:16px;accent-color:var(--blue)}
.prof-grid .field label{display:block;font-size:.78rem;font-weight:600;color:var(--ink-2);margin-bottom:4px}
.prof-grid .field input{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.85rem;color:var(--ink);background:#fff}
.prof-grid .field input:disabled{background:var(--bg);color:var(--dim)}
.prof-decks{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.prof-decks-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.prof-decks-head b{font-family:var(--display);font-size:.85rem;color:var(--ink)}
.deck-row{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:8px;margin-bottom:8px}
.deck-row input{padding:7px 10px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.85rem;color:var(--ink);background:#fff;min-width:0}
@media(max-width:760px){ .prof-grid{grid-template-columns:1fr} .deck-row{grid-template-columns:1fr 1fr auto} }

/* ---- paletleme ayarları (Strateji sekmesi) ---- */
.pal-box{margin-top:12px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg-2);padding:12px 14px}
.pal-box .field{margin-bottom:10px}
.pal-box .field label{display:block;font-size:.76rem;font-weight:600;color:var(--ink-2);margin-bottom:4px}
.pal-box .field input,.pal-box .field select{width:100%;padding:7px 10px;border:1px solid var(--line);
  border-radius:var(--r-sm);font-family:var(--font);font-size:.84rem;color:var(--ink);background:#fff}
.pal-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
.pal-check{display:flex;align-items:center;gap:8px;font-size:.82rem;color:var(--ink-2);margin-top:2px}
.pal-check input{width:15px;height:15px;accent-color:var(--blue)}
.pal-hint{margin:10px 0 0;font-size:.76rem;color:var(--muted);line-height:1.55}

/* ---- alan seçimi ve maliyet ---- */
.sel-box{margin-top:14px;padding-top:14px;border-top:1px solid var(--line-2)}
.sel-box .oh-l{display:block;font-size:.78rem;font-weight:600;color:var(--ink-2);margin-bottom:5px}
.sel-box select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.85rem;color:var(--ink);background:#fff}
.cost-row{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding:9px 12px;
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-sm);font-size:.85rem;color:var(--ink-2)}
.cost-row b{font-family:var(--mono);font-size:.95rem;color:var(--ink)}

/* ---- editör: sonuç sekmesi ---- */
/* Plan üretilmeden önce sekme soluk durur — tıklanabilir ama boş olduğu belli. */
.panel-tabs button.dim{opacity:.5}
.panel-tabs button.dim.on{opacity:1}
.result-empty{padding:26px 8px;text-align:center}
.result-empty p{margin:0;font-size:.85rem;color:var(--muted);line-height:1.6}

@media(max-width:1180px){ .panel-tabs button{font-size:.8rem;padding:7px 5px} }

/* ---- rota ve duraklar ---- */
.stop-row{display:grid;grid-template-columns:22px 1.4fr 44px 1fr 1fr;gap:6px;align-items:center;margin-bottom:6px}
.stop-ord{font-family:var(--mono);font-size:.75rem;color:var(--dim);text-align:center}
.stop-row input{padding:6px 8px;border:1px solid var(--line);border-radius:var(--r-sm);
  font-family:var(--font);font-size:.8rem;color:var(--ink);background:#fff;min-width:0}
.route-legs{display:flex;flex-direction:column;gap:2px}
.route-legs .leg{display:flex;align-items:center;gap:9px;padding:7px 10px;background:var(--bg-2);
  border-radius:var(--r-sm);font-size:.83rem;color:var(--ink-2)}
.route-legs .leg-n{width:20px;height:20px;flex:none;border-radius:50%;background:var(--blue);color:#fff;
  font-size:.7rem;display:grid;place-items:center;font-family:var(--mono)}
.route-legs .leg-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.route-legs .leg-d{font-family:var(--mono);font-size:.78rem;color:var(--muted)}
.route-legs .leg.total{background:transparent;border-top:1px solid var(--line);border-radius:0;
  margin-top:4px;font-weight:600;color:var(--ink)}

/* ---- hesap verileri: dışa aktarma ve silme ---- */
/* Silme kartı bilerek diğerlerinden ayrışır: geri alınamaz bir işlemin
   sıradan bir ayar gibi görünmemesi gerekir. */
.danger-card{border-color:#f3c2c4;background:#fffafa}
.danger-list{margin:14px 0 0;padding-left:20px;color:var(--muted);font-size:.9rem;line-height:1.75}
.danger-list li::marker{color:var(--red)}
.danger-form{margin-top:16px;border-top:1px solid #f3c2c4;padding-top:14px}
.danger-form label{display:block;font-size:.9rem;margin-bottom:8px}
.danger-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.danger-row input{width:180px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;
  font:inherit;letter-spacing:.08em;text-transform:uppercase}
.danger-row input:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px #fdeaea}
.small{font-size:.85rem}

/* ---- yasal sayfa ekleri ---- */
/* Öne çıkan bilgi kutusu: kullanıcının okumadan geçmemesi gereken tek cümle. */
.legal-note{background:#eef4ff;border:1px solid #cfe0ff;border-left:3px solid var(--blue);
  border-radius:10px;padding:14px 18px;margin:22px 0;color:var(--ink-2);line-height:1.65;font-size:.94rem}
.legal-note b{color:var(--ink)}
.legal-table{width:100%;border-collapse:collapse;margin:16px 0 8px;font-size:.9rem}
.legal-table th,.legal-table td{border:1px solid var(--line);padding:9px 12px;text-align:left;vertical-align:top}
.legal-table th{background:var(--bg-2);font-family:var(--display);font-size:.82rem;color:var(--ink)}
.legal-table td{color:var(--ink-2);line-height:1.6}
.legal-table code{font-family:var(--mono);font-size:.84rem;color:var(--ink);word-break:break-all}
@media(max-width:640px){ .legal-table,.legal-table tbody,.legal-table tr,.legal-table td{display:block;width:100%}
  .legal-table thead{display:none}
  .legal-table tr{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:4px 0}
  .legal-table td{border:0;padding:6px 12px} }

/* ---- footer: çerez tercihi bağlantısı ---- */
/* "yakında" rozetinin kuralları (.foot-soon, .soon-tag, .soon-eyebrow)
   kaldırıldı: rozeti taşıyan iki yer de (footer'daki API bağlantısı ve
   /api-servisi başlığı) API yayına alınınca temizlendi. Kullanılmayan bir
   kuralı bırakmak, sonraki okuyucuya hâlâ "yakında" bir şey varmış gibi
   görünür. Videolardaki .soon AYRI bir kuraldır ve duruyor. */
.foot-links{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.linklike{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;
  text-decoration:underline;text-underline-offset:3px;opacity:.85}
.linklike:hover{opacity:1}

/* ---- API servisi sayfası ---- */
.api-shell{max-width:900px;margin:0 auto;padding:30px 22px 80px}
.api-banner{display:flex;gap:22px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  background:#fff8e8;border:1px solid #f0d79a;border-radius:14px;padding:20px 24px;margin-bottom:34px}
.api-banner b{display:block;font-family:var(--display);font-size:1.02rem;color:var(--ink);margin-bottom:5px}
.api-banner p{margin:0;color:var(--ink-2);line-height:1.6;font-size:.93rem;max-width:56ch}
.api-h2{font-family:var(--display);font-size:1.15rem;margin:34px 0 6px;color:var(--ink)}
.api-sub{color:var(--muted);font-size:.92rem;margin:0 0 14px}
.api-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:16px}
.api-card{border:1px solid var(--line);border-radius:12px;padding:18px 20px;background:var(--bg)}
.api-ic{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;
  border-radius:9px;background:var(--bg-2);color:var(--blue-ink);font-size:1rem;margin-bottom:10px}
.api-card b{display:block;font-family:var(--display);font-size:.96rem;color:var(--ink);margin-bottom:6px}
.api-card p{margin:0;color:var(--ink-2);font-size:.9rem;line-height:1.65}
.api-code{background:#0f172a;color:#e2e8f0;border-radius:12px;padding:18px 20px;overflow-x:auto;
  font-family:var(--mono);font-size:.83rem;line-height:1.6;margin:0}
.api-code code{color:inherit;background:none;font:inherit}
.api-faq details{border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin-top:10px;background:var(--bg)}
.api-faq summary{cursor:pointer;font-family:var(--display);font-size:.94rem;color:var(--ink);list-style:none}
.api-faq summary::-webkit-details-marker{display:none}
.api-faq summary::before{content:"+";display:inline-block;width:16px;color:var(--blue-ink);font-weight:600}
.api-faq details[open] summary::before{content:"–"}
.api-faq p{margin:10px 0 2px 16px;color:var(--ink-2);font-size:.91rem;line-height:1.7}
/* Bant artik uyari degil davet: kehribar zemin (API yayinda degil) yerine
   markanin sogut tonu. Renk bir DURUM tasiyor, dekorasyon degil - kehribari
   birakmak "bir sorun var" demeyi surdururdu. */
.api-live{background:var(--chip-a);border-color:var(--chip-b)}
.api-cta{display:flex;gap:9px;flex-wrap:wrap;flex-shrink:0}
/* Uc nokta tablosunda ilk sutun tek satirda dursun: "GET /api/v1/jobs/{id}"
   sarilirsa adres iki parcaya bolunur ve kopyalanamaz hale gelir. */
.api-ep td:first-child,.api-ep th:first-child{white-space:nowrap}
.api-gap{margin-top:16px}
.api-limits{margin-top:14px}
.api-more{margin:14px 0 0;font-size:.92rem}

/* ---- çerez onay bandı ---- */
/* Bant sayfayı kapatmaz, alttan gelir: kullanıcı okumaya devam edebilsin. */
.cookie-bar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--bg);
  border-top:1px solid var(--line);box-shadow:0 -8px 30px rgba(16,24,40,.10);
  transform:translateY(100%);transition:transform .28s ease}
.cookie-bar.in{transform:translateY(0)}
.ck-in{max-width:1180px;margin:0 auto;padding:16px 22px;display:flex;gap:22px;
  align-items:center;justify-content:space-between;flex-wrap:wrap}
.ck-txt b{display:block;font-family:var(--display);font-size:.98rem;color:var(--ink);margin-bottom:4px}
.ck-txt p{margin:0;color:var(--ink-2);font-size:.9rem;line-height:1.6;max-width:78ch}
.ck-txt a{color:var(--blue-ink)}
.ck-btns{display:flex;gap:8px;flex-wrap:wrap}

/* ---- tercih penceresi ---- */
.ck-modal{position:fixed;inset:0;z-index:70;background:rgba(16,24,40,.45);
  display:flex;align-items:center;justify-content:center;padding:20px}
.ck-modal[hidden]{display:none}
.ck-dialog{background:var(--bg);border-radius:16px;width:min(560px,100%);max-height:86vh;overflow-y:auto;
  padding:22px 24px;box-shadow:0 24px 60px rgba(16,24,40,.28)}
.ck-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.ck-head b{font-family:var(--display);font-size:1.08rem;color:var(--ink)}
.ck-x{background:none;border:0;font-size:1.5rem;line-height:1;color:var(--dim);cursor:pointer;padding:0 4px}
.ck-x:hover{color:var(--ink)}
.ck-lead{color:var(--muted);font-size:.9rem;line-height:1.65;margin:0 0 18px}
.ck-cat{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px}
.ck-cat-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}
.ck-cat-h b{font-family:var(--display);font-size:.95rem;color:var(--ink)}
.ck-cat p{margin:0;color:var(--ink-2);font-size:.88rem;line-height:1.65}
.ck-always{font-family:var(--mono);font-size:.68rem;letter-spacing:.05em;text-transform:uppercase;
  color:var(--dim);background:var(--bg-2);border:1px solid var(--line);border-radius:999px;padding:2px 9px}
/* anahtar */
.ck-sw{position:relative;display:inline-block;width:42px;height:24px;flex:none}
.ck-sw input{position:absolute;opacity:0;width:0;height:0}
.ck-sw span{position:absolute;inset:0;background:#d7dce5;border-radius:999px;cursor:pointer;transition:background .18s}
.ck-sw span::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;
  border-radius:50%;transition:transform .18s;box-shadow:0 1px 3px rgba(16,24,40,.25)}
.ck-sw input:checked + span{background:var(--blue)}
.ck-sw input:checked + span::after{transform:translateX(18px)}
.ck-sw input:focus-visible + span{outline:2px solid var(--blue);outline-offset:2px}
.ck-foot{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}
body.no-scroll{overflow:hidden}
@media(max-width:640px){
  .ck-in{flex-direction:column;align-items:stretch;gap:14px}
  .ck-btns{justify-content:stretch}
  .ck-btns .btn{flex:1}
  .ck-foot{justify-content:stretch} .ck-foot .btn{flex:1}
}

/* ---- dokümanlarda karşılaştırma tabloları ---- */
.doc-table{width:100%;border-collapse:collapse;margin:14px 0 6px;font-size:.9rem}
.doc-table th,.doc-table td{border:1px solid var(--line);padding:9px 12px;text-align:left;vertical-align:top}
.doc-table th{background:var(--bg-2);font-family:var(--display);font-size:.82rem;color:var(--ink)}
.doc-table td{color:var(--ink-2);line-height:1.6}
.doc-table b{color:var(--ink)}
@media(max-width:720px){
  .doc-table,.doc-table tbody,.doc-table tr,.doc-table td{display:block;width:100%}
  .doc-table thead{display:none}
  .doc-table tr{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:4px 0}
  .doc-table td{border:0;padding:6px 12px}
}

/* ---- giriş sayfası: kurumsal e-posta bilgilendirmesi ---- */
.login-help{margin-top:16px;border:1px solid var(--line);border-radius:12px;background:var(--bg);overflow:hidden}
.login-help summary{cursor:pointer;list-style:none;padding:13px 16px;font-family:var(--display);
  font-size:.9rem;color:var(--ink);display:flex;align-items:center;gap:8px}
.login-help summary::-webkit-details-marker{display:none}
.login-help summary::before{content:"?";flex:none;width:19px;height:19px;border-radius:50%;
  background:var(--bg-2);color:var(--blue-ink);font-size:.72rem;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center}
.login-help summary:hover{background:var(--bg-2)}
.login-help[open] summary{border-bottom:1px solid var(--line)}
.login-help-body{padding:16px}
.login-help-body p{margin:0 0 14px;color:var(--ink-2);font-size:.88rem;line-height:1.65}
.lh-item{border-left:2px solid var(--line);padding-left:13px;margin-bottom:14px}
.lh-item b{display:block;font-family:var(--display);font-size:.86rem;color:var(--ink);margin-bottom:4px}
.lh-item span{display:block;color:var(--ink-2);font-size:.85rem;line-height:1.65}
.lh-foot{margin:0 !important;font-size:.82rem !important;color:var(--muted) !important}

/* ---- hesap menüsünde devre dışı öğe ---- */
/* Henüz gelmemiş bir özelliği tıklanabilir bırakıp "yakında" demek yerine
   görünür biçimde kapatıyoruz: kullanıcı boşuna tıklamıyor. */
.acct-item.is-disabled{color:var(--dim);cursor:default;opacity:.7}
.acct-item.is-disabled:hover{background:transparent;color:var(--dim)}
.acct-item.is-disabled svg{color:var(--dim)}

/* ---- duyuru yönetimi (admin) ---- */
.ann-admin{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}
@media (max-width:1000px){ .ann-admin{grid-template-columns:1fr} }
.ann-form{padding:16px}
.ann-lang{border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;margin-bottom:10px;
  background:var(--bg-2)}
/* Eksik dil GORSEL olarak isaretli. Yedi kutu alt alta dururken hangisinin
   bos oldugunu okumak zor; kehribar kenar gozu dogrudan oraya cekiyor ve
   "yayinla" dugmesine basmadan once fark ediliyor. */
.ann-lang.missing{border-color:#f0d79a;background:#fffaf0}
.ann-lang-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ann-lang-h b{font-family:var(--display);font-size:.86rem;color:var(--ink)}
.ann-lang input,.ann-lang textarea{width:100%;margin-bottom:6px}
.ann-lang textarea{resize:vertical;min-height:64px}
.ann-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

/* ---- ücretsiz katman şeridi ---- */
/* Sahnenin USTUNDE, araclarin altinda: kullanicinin gorus alaninda ama
   sahneyi kapatmayan bir yerde. Alt bilgi seridiyle yan yana koysaydik
   dar ekranda ikisi de okunmaz olurdu. */
.tier-bar{position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:20;
  display:flex;align-items:center;gap:12px;padding:8px 14px;border-radius:999px;
  background:#fff8e8;border:1px solid #f0d79a;color:#8a5a12;
  font-size:.85rem;font-weight:500;box-shadow:var(--shadow-sm);max-width:calc(100% - 32px)}
/* Hak BITTIGINDE uyari degil engel var: renk de bunu soylemeli. */
.tier-bar.out{background:#fdeef0;border-color:#f5c2c7;color:#a3282c}
.tier-bar span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:640px){ .tier-bar{font-size:.78rem;padding:6px 10px;gap:8px} }

/* Rapor sayfasindaki cikti kilidi aciklamasi. */
.lock-note{font-size:.85rem;color:var(--muted)}

/* ---- kilitli dugme ----
   Deneme suresi dolunca ucretli dugmeler GIZLENMEZ, kilitlenir.

   Gizli bir ozellik satin alinmaz; kullanici onun var oldugunu bile bilmez
   ve urunu eksik zanneder. Kilitli bir ozellik ise sorulur.

   disabled ozniteligi KULLANILMIYOR: devre disi bir dugme tiklama olayi
   uretmez, dolayisiyla "neden kapali" penceresini acamaz ve kullanici
   sessiz bir duvara carpar. Dugme tiklanabilir kalir, ne yapacagini
   soyler. */
.btn.locked{opacity:.55;filter:grayscale(.5)}
.btn.locked::after{content:"🔒";margin-left:6px;font-size:.9em;filter:none}
.btn.locked:hover{opacity:.7}

/* ---- duyuru zili ---- */
.bell{position:relative}
.bell-btn{display:inline-flex;align-items:center;justify-content:center;position:relative;
  width:34px;height:34px;border:1px solid transparent;border-radius:9px;background:none;
  color:var(--ink-2);cursor:pointer;padding:0}
.bell-btn:hover{background:var(--bg-2);border-color:var(--line);color:var(--ink)}
.bell-btn svg{width:19px;height:19px}
/* Rozet SAYI gosteriyor, yalnizca nokta degil: "uc yeni duyuru" ile "bir
   yeni duyuru" arasindaki fark, paneli acmaya deger olup olmadigini
   belirliyor. 9'dan sonrasi "9+" — daha genis bir rozet zile sigmiyor. */
.bell-dot{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;padding:0 4px;
  border-radius:999px;background:var(--red);color:#fff;font-family:var(--mono);
  font-size:.62rem;font-weight:600;line-height:16px;text-align:center;
  border:2px solid var(--panel);box-sizing:content-box}
.bell-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:60;width:340px;
  max-height:min(70vh,460px);overflow-y:auto;background:var(--panel);
  border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.bell-head{padding:12px 14px;border-bottom:1px solid var(--line-2);
  font-family:var(--display);font-size:.86rem;font-weight:600;color:var(--ink);
  position:sticky;top:0;background:var(--panel)}
.bell-list{padding:4px 0}
.bell-empty{padding:26px 14px;text-align:center;color:var(--muted);font-size:.86rem}
.bell-item{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line-2)}
.bell-item:last-child{border-bottom:none}
/* Okunmamis olan SOL SERITLE isaretli, arka planla degil: koyu bir zemin
   uzun metni okunmaz hale getiriyordu ve panelde cogunlukla uzun metin var. */
.bell-item.new{border-left:3px solid var(--blue);padding-left:11px}
.bell-ic{flex:0 0 auto;width:9px;height:9px;border-radius:999px;margin-top:6px}
.bell-ic.info{background:var(--blue)}
.bell-ic.maint{background:var(--amber)}
.bell-ic.rel{background:var(--teal)}
.bell-tx{min-width:0}
.bell-meta{font-family:var(--mono);font-size:.68rem;color:var(--dim);margin-bottom:3px}
.bell-ver{color:var(--blue-ink)}
.bell-tx b{display:block;font-family:var(--display);font-size:.9rem;color:var(--ink);margin-bottom:3px}
/* Uzun kelimeler ve baglantilar paneli tasirmasin. */
.bell-tx p{margin:0;font-size:.85rem;line-height:1.6;color:var(--ink-2);
  overflow-wrap:anywhere}
@media (max-width:520px){
  /* Dar ekranda panel zile degil EKRANA hizalanir; 340px'lik bir kutu
     360px'lik bir telefonda sag kenardan tasiyordu. */
  .bell-panel{position:fixed;left:10px;right:10px;width:auto;top:58px}
}

/* ---- ayarlar penceresi ---- */
.set-modal{display:block}
.set-lbl{display:block;font-size:.78rem;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.set-sel{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--panel);color:var(--ink);font:inherit;font-size:.9rem}
.set-sel:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,107,255,.15)}
/* Not metni birimin NEYI etkilemedigini de soyluyor (API); kullanicinin
   "ayari degistirdim, entegrasyonum bozulur mu" sorusu burada cevaplaniyor. */
.set-note{margin:10px 0 0;font-size:.82rem;line-height:1.6;color:var(--muted)}

/* ---- yönetim paneli ---- */
/* Bilinçli olarak yoğun ve sade: burası ürün arayüzü değil, çok satırı hızlıca
   taramak için bir işletme ekranı. Boşluk yerine okunabilirliğe öncelik. */
.admin-shell{max-width:1400px;margin:0 auto;padding:26px 20px 70px}
.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}
.admin-head h1{font-size:1.6rem;margin:2px 0 0}
.admin-badge{font-family:var(--mono);font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;
  background:var(--bg-2);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 11px}

.admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-bottom:22px}
.ac{border:1px solid var(--line);border-radius:12px;padding:13px 15px;background:var(--bg)}
.ac .n{font-family:var(--display);font-size:1.45rem;color:var(--ink);line-height:1.15}
.ac .l{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:3px}

.admin-panel{border:1px solid var(--line);border-radius:14px;background:var(--bg);
  padding:16px 18px;margin-bottom:18px;overflow-x:auto}
.ap-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.ap-head b{font-family:var(--display);font-size:1rem;color:var(--ink)}
.ap-head .btn{margin-left:auto}

.admin-table{width:100%;border-collapse:collapse;font-size:.84rem;white-space:nowrap}
.admin-table th{text-align:left;font-family:var(--display);font-size:.72rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);padding:7px 10px}
.admin-table td{padding:7px 10px;border-bottom:1px solid var(--line-2);color:var(--ink-2)}
.admin-table tr:hover td{background:var(--bg-2)}
.admin-table .mono{font-family:var(--mono);font-size:.79rem}
.admin-table .small{white-space:normal;max-width:280px;font-size:.79rem;color:var(--muted)}
/* Hiç kullanmamış üye ve eksik kalan çalışma, listede kendini belli etmeli. */
.admin-table tr.dim-row td{opacity:.5}
.admin-table tr.warn-row td{background:#fffaf0}
.admin-table tr.warn-row:hover td{background:#fff4e0}

.admin-space{border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin-bottom:12px}
.as-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.as-head b{font-family:var(--display);font-size:.94rem;color:var(--ink)}
.tag{font-family:var(--mono);font-size:.7rem;background:var(--bg-2);border:1px solid var(--line);
  border-radius:999px;padding:2px 9px;color:var(--muted)}
.tag-green{background:#e8f6ee;border-color:#bfe3cd;color:#136c3a}

/* ---- yonetim paneli: kullanilan strateji ----
   Kapali secenekler de listede durur; ayirt etmeyi renk degil, once solukluk
   yapar — yan yana on onalti rozeti renkle ayirmak ekrani gurultuye bogardi. */
.admin-strat{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0 0 16px;background:var(--bg-2)}
.ast-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.ast-head b{font-family:var(--display);font-size:.94rem;color:var(--ink)}
.ast-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 14px}
.ast{display:flex;align-items:baseline;gap:7px;font-size:.82rem;padding:3px 0}
.ast-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--line);transform:translateY(-1px)}
.ast.on .ast-dot{background:#2e9e63}
.ast-l{color:var(--ink-2)}
.ast.on .ast-l{color:var(--ink);font-weight:600}
.ast-v{margin-left:auto;font-family:var(--mono);font-size:.74rem;color:var(--muted);text-align:right}
.ast.off{opacity:.55}

/* Strateji sutunu sarilabilmeli: rozetler tek satirda tasarsa tablo yatay kayar. */
.admin-table td.strat-cell{white-space:normal;max-width:300px;line-height:1.9}
.admin-table td.strat-cell .tag{margin-right:4px}

.admin-warn{border:1px solid #f0d79a;background:#fffaf0;border-radius:11px;padding:12px 15px;margin-top:10px}
.admin-warn b{display:block;font-family:var(--display);font-size:.9rem;color:#8a6100;margin-bottom:6px}
.admin-warn ul{margin:0;padding-left:20px;font-size:.84rem;color:var(--ink-2);line-height:1.7}

/* ---- Raf gözü ızgarası ----
   Üst kat en üstte çizilir; rafa bakan insanın gördüğü sıra budur. Kapalı göz
   çarpı ile işaretlenir, yalnızca renkle değil — renk körlüğünde de okunmalı. */
.rack-cells-box{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}
.rack-cells-box>b{font-family:var(--display);font-size:.9rem;color:var(--ink)}
.rack-grid{display:flex;flex-direction:column;gap:4px;margin:8px 0}
.rack-row{display:flex;align-items:center;gap:4px}
.rack-lv{flex:none;width:58px;font-size:.7rem;color:var(--muted);text-align:right;padding-right:4px}
.rack-cell{flex:1;min-width:30px;height:30px;border:1px solid var(--line);border-radius:6px;
  background:var(--bg);color:var(--muted);font-size:.74rem;font-family:var(--mono);
  cursor:pointer;transition:.12s}
.rack-cell:hover{border-color:var(--teal);color:var(--teal)}
.rack-cell.off{background:#fdeaea;border-color:#f0b8b8;color:var(--red);font-weight:700}
.rack-cell.off:hover{border-color:var(--red)}
.rack-cells-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}

/* ---- Agirlik-denge kutusu ----
   Uyari serbest birakilamayacak kadar onemli: emniyete dokunan bir alanda
   "bu bir yukleme belgesi degildir" cumlesi gozden kacmamali. */
.wb-box .wb-warn{border:1px solid #f0b8b8;background:#fdeaea;color:#8a2020;
  border-radius:9px;padding:9px 11px;font-size:.8rem;line-height:1.5;margin:8px 0 10px}

/* ---- Plan tespitleri ----
   Uyari gorunur olmali ama sonucu bogmamali: renk soldan bir seritle veriliyor,
   zemin nerdeyse notr. Kirmizi bir kutu, gecerli bir plani hatali gosterirdi. */
.advice-box{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.advice{display:flex;gap:9px;align-items:flex-start;padding:9px 11px;border-radius:9px;
  border:1px solid var(--line);background:var(--bg-2);font-size:.82rem;line-height:1.45}
.advice.warn{border-left:3px solid #e0a02a;background:#fffaf0}
.advice.info{border-left:3px solid var(--teal)}
.advice .ai{flex:none;width:17px;height:17px;border-radius:50%;display:grid;place-items:center;
  font-size:.7rem;font-weight:700;color:#fff;background:var(--teal);margin-top:1px}
.advice.warn .ai{background:#e0a02a}
.advice .at{min-width:0}
.advice .at .n{display:block;color:var(--ink)}
.advice .at .d{display:block;margin-top:3px;font-family:var(--mono);font-size:.72rem;color:var(--muted)}
/* .d olcu degerleri icin (mono, kucuk); .dd duz cumle icindir. Uyari metnini
   mono ile basmak onu log satirina benzetiyordu. */
.advice .at .dd{display:block;margin-top:4px;font-size:.79rem;line-height:1.45;color:var(--muted)}
.advice .at .dd b{color:var(--ink);font-weight:600}
.advice .at .btn{margin-top:9px}

/* ---- Paletleme havuzu: denenecek diger tipler ---- */
.pal-alt{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}
.pal-alt-add{display:flex;gap:6px;align-items:center;margin:6px 0 8px}
.pal-alt-add select{flex:1;min-width:0}
.pal-alt-add .btn{flex:none}
.pal-alt-add .btn:disabled{opacity:.45;cursor:default}
.pal-alt-list{display:flex;flex-wrap:wrap;gap:6px;min-height:22px}
.pal-alt-chip{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;font-weight:600;
  background:#fdf3e3;border:1px solid #ecd6ad;color:#8a6100;border-radius:999px;padding:2px 4px 2px 10px}
.pal-alt-chip i{font-style:normal;font-family:var(--mono);font-size:.68rem;opacity:.75}
.pal-alt-chip button{border:0;background:transparent;cursor:pointer;color:#8a6100;
  font-size:.95rem;line-height:1;padding:0 4px;opacity:.65}
.pal-alt-chip button:hover{opacity:1;color:var(--red)}

/* ---- Ekipman seti rozeti ----
   Alan tipi etiketiyle karismasin diye baska bir renk ailesi ve zincir imi
   kullaniliyor: set bir SINIFLANDIRMA degil, bir BAGLILIK bildirir. */
.set-chip{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;
  background:#efeaff;border:1px solid #d7ccf7;color:#4b3a91;border-radius:999px;padding:2px 9px;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
/* Sol alan listesinde rozet adin ALTINA duser; oradaki bosluk yalnizca o
   baglamda gerekli, tablo hucrelerinde satiri asagi kaydiriyordu. */
.space-li .set-chip{margin-top:4px}
.set-chip::before{content:"⛓";font-weight:400;opacity:.7}
.set-chip span{font-family:var(--mono);font-size:.68rem;opacity:.75}

/* ---- Gabari baslangic degerleri secici ---- */
.gauge-pick{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.gp-lab{font-size:.8rem;color:var(--muted);margin-right:2px}
.gp-btn{font-size:.78rem;padding:4px 10px;border-radius:999px;cursor:pointer;
  border:1px solid var(--line);background:transparent;color:var(--text);transition:.15s}
.gp-btn:hover{border-color:var(--teal);color:var(--teal)}
.gp-clear{opacity:.7}
.gp-note{font-size:.75rem;color:var(--teal);margin:0 0 6px;min-height:1em}
.gp-warn{margin-bottom:10px}

/* ---- yonetim paneli: 3B gorunum ---- */
.admin-view{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:0 0 16px;background:var(--card)}
.av-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px;padding:8px 12px;
  border-bottom:1px solid var(--line);font-size:.8rem}
.av-nav{display:flex;align-items:center;gap:6px}
.av-nav button{width:24px;height:24px;border-radius:6px;border:1px solid var(--line);
  background:transparent;color:var(--text);cursor:pointer;line-height:1}
.av-nav button:disabled{opacity:.3;cursor:default}
.av-nav span{min-width:120px}
.av-tog{display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--muted)}
.av-tog label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.av-btns{margin-left:auto;display:flex;gap:6px}
.av-canvas{width:100%;height:460px;background:var(--bg)}
.av-metrics{display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line)}
.avm{flex:1 1 140px;padding:9px 12px;border-right:1px solid var(--line)}
.avm:last-child{border-right:0}
.avm .l{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.avm .v{font-size:1.05rem;font-weight:600;margin:2px 0 1px}
.avm .s{font-size:.72rem;color:var(--muted)}
.av-flag{flex:1 1 100%;padding:8px 12px;border-top:1px solid var(--line);
  font-size:.78rem;color:#b8860b;background:rgba(240,169,46,.08)}

/* ============================================================
   DUYARLI DUZELTMELER
   Asagidaki kurallar tek tek olculerek eklendi: her biri kucuk
   ekranda gercekten kirilan bir seyi duzeltiyor.
   ============================================================ */

/* ---- 1. Yatay tasma ----
   Tek bir genis oge (tablo, uzun kod, genis izgara) tum sayfayi yana
   kaydiriyordu. Once genel bir emniyet, sonra tablolara kendi kaydirmasi. */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas{max-width:100%}

/* Tablolar kirpilmaz, KENDI icinde kaydirilir: sutunlari alt alta dizmek
   sayi tablolarinda okunaksiz olur, yana kaydirmak dogal davranistir. */
.doc-table,.admin-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;
  white-space:nowrap}
.doc-table thead,.admin-table thead{white-space:normal}
@media(min-width:761px){
  .doc-table,.admin-table{display:table;white-space:normal}
}

/* Uzun kelimeler (URL, e-posta, kod) dar ekranda tasmasin. */
p,li,td,th,.doc-lead,.ft span{overflow-wrap:break-word}

/* ---- 2. Mobil karsiligi olmayan izgaralar ----
   Denetimde 8 tanesi tek sutuna dusmuyordu. auto-fit/auto-fill
   kullananlara dokunulmadi; onlar zaten kendiliginden esniyor. */
@media(max-width:760px){
  .row,.row-2,.toggles,.axle-grid,.pal-grid,
  .report .views{grid-template-columns:1fr}
  /* Alt bilgi seridi: 6 sutun dar ekranda 40 piksele duser. */
  .infopanel{grid-template-columns:repeat(2,1fr)}
  /* Durak satiri: numara + ad ustte, koordinatlar altta. */
  .stop-row{grid-template-columns:22px 1fr;row-gap:6px}
}
@media(max-width:420px){
  .stats3{grid-template-columns:1fr}
  .infopanel{grid-template-columns:1fr}
}

/* ---- 3. Dokunma hedefleri ----
   Parmakla basilan her sey en az ~40px olmali; 28px dugmeler kacinilmaz
   sekilde yanlis tiklaniyor. */
@media(max-width:760px){
  .btn,.btn-sm{min-height:40px}
  .icon-btn{width:40px;height:40px}
  .tool{width:44px;height:44px}
}

/* ---- 4. Tipografi ----
   Baslik olculeri masaustu icin secilmisti; 360px ekranda satir kiriliyordu. */
@media(max-width:640px){
  h1{font-size:1.7rem;line-height:1.25}
  h2{font-size:1.3rem}
  .container,.wide{padding:0 16px}
}

/* ---- 5. Editor sahnesi ----
   Sahnedeki her sey mutlak konumlu: sol panel, sag arac cubugu, ust orta
   gezinme, alt sol sevkiyat adi, alt orta bilgi seridi, alt sag Yukle.
   Masaustunde bunlar birbirine deymez; 390 piksellik bir ekranda hepsi ust
   uste biner. Asagida her biri yeniden konumlaniyor. */


/* Esik 640'tan 900'e cikarildi.
   Sebep sahadan geldi: 700 piksellik bir ekranda (tablet dikey, yan cevrilmis
   telefon) bu blok DEVREDE DEGILDI ve masaustu yerlesimi kullaniliyordu. Orada
   "Yukle" dugmesi ile alt bilgi seridi ust uste biniyor, sag arac cubugu dikey
   sutun oldugu icin dugmelerin bir kismi ekran disinda kaliyordu.
   640-900 arasi "kucuk masaustu" degil, elde tutulan bir cihazdir. */
@media(max-width:900px){
  /* --- telefon / tablet duzeni ---
     Sahnedeki alti oge dikey seritlere ayrildi. Olculer varsayimla degil,
     her ogenin gercek yuksekligiyle hesaplandi; eylem cubugu tek basina
     ~310 piksel oldugu icin sevkiyat adi ayni satirda duramiyordu ve
     UST sirada, panel dugmesinin yanina alindi. */

  /* UST: panel dugmesi + sevkiyat adi */
  /* ☰ panel ACIKKEN DE gorunur ve ayni dugme kapatir.
     Masaustunde bu dugme panelin tam altinda kaldigi icin (ikisi de
     top:16/left:16) acikken gizlenmek zorunda. Burada panel alt sayfaya
     indigi icin cakisma yok — gizlemek yalnizca kullaniciyi kapatma yolu
     aramaya zorluyordu. */
  .stage-open{top:8px;left:8px}
  .stage-open.off{display:flex}          /* mobilde acikken de gorunur */
  .stage-open.on{background:var(--blue);border-color:var(--blue);color:#fff}
  .stage-name{top:8px;left:60px;bottom:auto}
  .stage-name input{width:calc(100vw - 190px);min-width:90px;padding:10px 12px}
  .stage-name button{width:42px;height:42px}

  /* --- Arac cubugu TEK DUGME ARKASINDA ---
     Once yatay kaydirilabilir bir serit denendi. Yetmedi: on bir ikon 700
     piksellik bir ekranda seridin tamamini yiyor, sahneden geriye bakilacak
     yer kalmiyordu. Artik varsayilan KAPALI; kullanici dugmeye basip ayari
     degistiriyor, kapatinca sahneyle bas basa kaliyor.
     Aralarindaki fark su: serit "her sey her zaman gorunur" diyordu, bu ise
     "sahne asildir, araclar cagrilir" diyor. Dar ekranda ikincisi dogru. */
  .stage-toolsbtn{display:flex}
  .stage-tools{
    top:60px;bottom:auto;right:8px;left:auto;width:auto;
    flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:8px;
    max-width:calc(100vw - 16px);
    background:#fff;border:1px solid var(--line);border-radius:14px;
    box-shadow:var(--shadow);padding:10px;
    /* Kapaliyken yer kaplamaz VE odak alamaz: gizli bir dugmeye sekme ile
       ulasip goremeden basmak, klavye kullanicisi icin tuzaktir. */
    display:none}
  .stage-tools.open{display:flex}
  .tool[data-tip]:hover::after{display:none}   /* parmakla hover yok */

  /* Yon kubu telefonda yalnizca yer kaplar. */
  .stage-cube{display:none}

  /* Panel bir ALT SAYFA olur: yandan kayan dar bir panel telefonda sahnenin
     tamamini orter, asagidan acilan sayfa ust yariyi gorunur birakir. */
  .stage-panel{
    top:auto;bottom:170px;left:8px;right:8px;width:auto;
    height:min(46vh,340px);
    /* max-height OLMADAN panel KISA ekranlarda yukari kaciyordu.
       Hesap sasmaz: alt kenar 170px yukarida ve yukseklik 340px'e kadar
       cikabiliyor; sahne 400 pikselden alcaksa (yan cevrilmis telefon,
       kucultulmus pencere) toplam sahneyi asiyor, panel ust kenardan tasip
       sevkiyat adini ve ☰ dugmesini ortuyordu — kullanici paneli kapatamiyordu.
       Bu satir paneli tasmak yerine KUCULMEYE zorlar; govdesi zaten
       kaydirilabilir (.panel-body{overflow-y:auto}). */
    max-height:calc(100% - 178px);
    border-radius:16px}
  .stage-panel.collapsed{transform:translateY(calc(100% + 180px))}

  /* ☰ HER ZAMAN en ustte. Panelle ayni z-index'teydi ve isaretlemede sonra
     geldigi icin panel onu ortuyordu. Kapatma dugmesinin bir baskasinin
     altinda kalmasi, kullaniciyi kapana kistirir; bu dugme kucuk ve her zaman
     erisilebilir olmali. */
  .stage-open{z-index:24}

  /* ALT (yukaridan asagi): alan gezinme -> eylemler -> bilgi seridi */
  .stage-nav{top:auto;bottom:132px;font-size:.8rem;padding:5px 8px}

  .stage-actions{right:8px;left:8px;bottom:60px;gap:6px;justify-content:flex-end}
  .stage-actions .btn{padding:0 10px;font-size:.82rem}
  /* 104 piksellik daire ekranin ucte birini yiyordu. */
  .yukle{width:60px;height:60px;font-size:.82rem;box-shadow:0 6px 18px rgba(47,107,255,.38)}
  /* Rozet ana dugmeyle orantili kuculuyor; 46px'lik hali 60px'lik dairenin
     uzerinde onu neredeyse tamamen orterdi. */
  .continue-badge{width:32px;height:32px;border-width:2px;top:-2px;right:-2px}
  .continue-badge svg{width:15px;height:15px}

  .stage-info{left:8px;right:8px;bottom:8px;transform:none;max-width:none;
    overflow-x:auto;border-radius:12px}
  .stage-info .cell{min-width:78px;padding:7px 12px}

  /* --- Manuel duzenleme cubugu tek dugme arkasinda ---
     Cubuk masaustunde tek satir; dar ekranda dokuz dugme + iki bilgi satiri +
     kisayol yardimi alt alta sariyor ve sahnenin ustunu kapatiyordu. Manuel
     yerlestirme tam olarak sahneye dokunmayi gerektiren is oldugu icin bu,
     ozelligi kullanilamaz hale getiriyordu.
     Kapaliyken yalnizca anahtar ikonu gorunur. */
  .stage-manual{max-width:calc(100vw - 16px);top:112px;padding:6px;gap:6px}
  .man-toggle{display:inline-flex}
  .stage-manual:not(.open) > *:not(.man-toggle){display:none}
  .stage-manual.open{
    /* Uzun icerik ekrandan tasmasin; cubuk kendi icinde kaydirilir. */
    max-height:calc(100% - 130px);overflow-y:auto;padding:8px}
}

/* ---- yan cevrilmis telefon: dikey alan cok kisitli ----
   Yukaridaki olculer DIKEY telefona gore secildi; orada 170 piksellik alt
   pay makul. Yan cevrilince gorunur yukseklik ~390 pikselden ~320'ye duser
   ve ayni pay panele 140 pikselden az yer birakir.
   Kullaniciyi yatay kullanmaya biz yonlendiriyoruz (bkz. .rotate-hint);
   gonderdigimiz yerde calisilabilir bir alan birakmak zorundayiz.
   Bilgi seridi burada gizleniyor — ayni sayilar Sonuc sekmesinde tam
   haliyle duruyor ve orada okunmasi daha kolay. */
@media(max-width:900px) and (max-height:560px){
  .stage-info{display:none}
  .stage-actions{bottom:8px}
  .stage-nav{bottom:64px}
  .stage-panel{bottom:64px;max-height:calc(100% - 72px)}
  .stage-panel.collapsed{transform:translateY(calc(100% + 72px))}
  .stage-manual{top:60px}
}

/* ---- sahne eylem düğmelerindeki ikonlar ----
   Emoji yerine çizgi SVG. Emoji her işletim sisteminde başka bir sanatçının
   çizimi; boyu, rengi ve çizgi kalınlığı denetlenemediği için düğmeler
   birbirinden kopuk ve "sönük" görünüyordu. */
.stage-actions .btn svg{width:17px;height:17px;flex:none;
  fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.stage-actions .btn{display:inline-flex;align-items:center;gap:7px}
/* Yalnızca ikon taşıyan düğme kare olmalı, yoksa yanındakilerden dar kalır. */
.stage-actions .btn-icon{padding:0;width:42px;justify-content:center}

/* Cevirisi olmayan dilde gosterilen bilgi seridi. Belirgin ama alarm degil:
   sayfa calisiyor, yalnizca dili farkli. */
.legal-lang-note{margin:0 0 20px;padding:11px 14px;border:1px solid var(--line);
  border-left:3px solid var(--blue);border-radius:var(--r-sm);background:var(--bg-2);
  font-size:.84rem;line-height:1.55;color:var(--muted)}

/* ============================================================================
   MOBIL VE TABLET
   ============================================================================
   Tek yerde toplandi. Dagitilsaydi "bu kural neden var?" sorusuna cevap
   vermek icin dosyanin dortbir yanini taramak gerekirdi.

   Kirilma noktalari:
     900px  tablet / genis telefon yatay — ust menu zaten burada hamburger olur
     760px  tablo -> kart esigi
     640px  dar telefon
   Dokunma icin `pointer:coarse` aranir: masaustunde pencereyi daraltan
   kullaniciya dokunmatik duzeni acmak yanlis olur.
   ------------------------------------------------------------------------- */

/* ---- 1. Telefon dikeyken editoru kapatan katman ---- */
.rotate-hint{display:none}
@media (max-width:900px) and (orientation:portrait) and (pointer:coarse){
  .rotate-hint{
    display:flex;align-items:center;justify-content:center;
    position:fixed;inset:0;z-index:200;padding:28px;
    background:var(--bg,#f7f9fc)}
  .rotate-hint .rh-box{display:flex;flex-direction:column;align-items:center;gap:14px;
    text-align:center;max-width:320px;color:var(--ink)}
  .rotate-hint svg{width:66px;height:66px;color:var(--blue-ink);
    animation:rh-turn 2.4s ease-in-out infinite}
  .rotate-hint b{font-family:var(--display);font-size:1.15rem}
  .rotate-hint span{font-size:.9rem;line-height:1.55;color:var(--muted)}
  /* Arkadaki sahne WebGL cizmeye devam etmesin: katman zaten kapatiyor,
     gorunmeyen bir sahne icin pil harcamanin anlami yok. */
  .stage{visibility:hidden}
}
@keyframes rh-turn{
  0%,42%{transform:rotate(0)}
  58%,100%{transform:rotate(-90deg)}
}
/* Hareketi azalt tercihi acikken ok donmez — kural dosyanin basindaki genel
   `animation:none` ile zaten kapaniyor, burada yalnizca hatirlatma. */

/* ---- 2. Editor: dokunmatik ----
   BURADA SAHNE YERLESIMI YOK, bilerek.
   Bir ara buraya 641-900px icin ayri bir yerlesim yazilmisti; sahnenin telefon
   duzeni o sirada 640px'te kesiliyordu ve aradaki bosluk doldurulmak istendi.
   Yanlis yoldu: iki ayri yerde iki yerlesim, dosyada sonra gelenin oncekini
   ezmesiyle sonuclandi. Dogru cozum esigi 900'e cikarmak oldu (bkz. yukarida
   "Editor sahnesi"), boylece sahne TEK bir yerde tanimli.
   Burada yalnizca yerlesimden bagimsiz dokunma davranisi kaliyor. */
@media (pointer:coarse){
  /* Parmakla "uzerine gelme" yoktur; basili tutunca cikan ipucu yalnizca
     yolu kapatir. 640 alti icin ayni kural yukarida da var, burada tum
     dokunmatik boyutlara genisletiliyor. */
  .tool[data-tip]:hover::after{display:none}

  /* Manuel cubugundaki yardim satiri KLAVYE kisayollarini anlatiyor:
     "Oklar: ince ayar · Q/E: yukarı-aşağı · R/T/F: döndür · Esc: bırak".
     Dokunmatik bir cihazda bu tuslarin hicbiri yok — satir yalnizca yer
     kapliyor ve kullaniciya yapamayacagi seyleri anlatiyordu. */
  #mHint{display:none}
}

/* ---- 3. Tablolar telefonda kart olur ---- */
/* Etiketler `data-label` ile gelir; onu <thead>'den okuyup damgalayan betik
   wwwroot/js/responsive.js icinde. Boylece hicbir .cshtml'de td basina elle
   etiket yazmak gerekmiyor ve sutun eklenince kendiliginden dogru calisiyor. */
/* `screen` BILEREK: rapor dar bir cihazdan yazdirilirsa kagida kart degil
   tablo cikmali — baskida sutun genisligi sorunu yok, olan sey kagit. */
@media screen and (max-width:760px){
  table.as-cards,table.as-cards tbody,table.as-cards tr,table.as-cards td{display:block;width:100%}
  table.as-cards thead{display:none}
  table.as-cards tr{border:1px solid var(--line);border-radius:var(--r-sm);
    margin-bottom:10px;padding:6px 12px;background:var(--panel)}
  table.as-cards td{border:none;padding:7px 0;display:flex;gap:12px;
    align-items:center;justify-content:space-between;
    border-bottom:1px solid var(--line-2)}
  table.as-cards td:last-child{border-bottom:none}
  /* Etiketi olmayan hucre (islem dugmeleri sutunu) tam genislik alir. */
  table.as-cards td[data-label]::before{
    content:attr(data-label);flex:none;font-size:.72rem;font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}
  table.as-cards td:not([data-label]){justify-content:flex-end}
  /* Bos hucre kart icinde bos bir satir birakirdi. */
  table.as-cards td:empty{display:none}
}

/* ---- 4. Genel dokunma ve tasma duzeltmeleri ---- */
@media (max-width:760px){
  /* Genis tablolar kart olmuyorsa en azindan yatay kaydirilabilsin;
     sayfanin tamamini yana kaydirtmak yerine tablo kendi icinde kayar. */
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .container{padding-left:16px;padding-right:16px}
  /* iOS, yazi tipi 16px'in altindaysa alana dokununca sayfayi YAKINLASTIRIR
     ve geri cikmaz. Form alanlarinda 16px alt sinir bunu engeller. */
  input,select,textarea{font-size:16px}
}

/* ---- 5. Rapor ve paylasim: telefon ---- */
@media screen and (max-width:640px){
  /* Iki sutunlu gorsel izgarasi telefonda iki kucuk kareye dusuyordu; yerlesimi
     okumak icin zaten yakinlastirmak gerekiyordu. Tek sutun, tam genislik. */
  .report .views{grid-template-columns:1fr}
  /* 34px kenar bosluk dar ekranda icerige kalan yeri daraltiyor. */
  .report{padding:18px;border-radius:0;box-shadow:none}
  .report-space-head{font-size:.8rem}
}

/* ---- 6. Kilavuz ----
   Bilerek BOS. Kilavuzun yan menusu icin 900px altinda zaten bir kural var
   (kutulanmis, sayfayla birlikte akan dikey liste) ve dogru calisiyor.
   Uzerine yatay kaydirmali bir serit yazmak denendi ve GERI ALINDI: iki kural
   ust uste binip kutunun icinde kayan bir liste uretiyordu ve sonucu gozle
   dogrulamadan birakmak, "telefonda bozuk gorunuyor" bildirimine acik kapi
   birakmak olurdu. Kilavuz sayfasi telefonda elle denenip gerekiyorsa
   duzeltilmeli. */
