[hidden] {
  display: none !important;
}
.gate {
  min-height: calc(100vh - 114px);
  min-height: calc(100dvh - 114px);
  display: grid;
  place-items: center;
  padding: 26px;
  background: var(--krem);
}
.gate article {
  width: 440px;
  max-width: 100%;
  background: var(--beyaz);
  border: 1px solid var(--cizgi);
  border-top: 4px solid var(--koyu-kirmizi);
  padding: 28px;
  border-radius: var(--kose);
}
.gate h1 {
  font-size: var(--y-32);
  margin: 0 0 10px;
}
.gate p {
  line-height: 1.5;
  color: var(--soluk);
}
.gate p.error {
  color: var(--hata-metin);
  line-height: 1.4;
}
.gate .field {
  min-height: 50px;
  margin-bottom: 12px;
}
.gate .wide {
  min-height: 48px;
  font-size: var(--y-16);
  margin-top: 6px;
}
#session-label {
  font-size: var(--y-14);
  max-width: 330px;
  line-height: 1.5;
}
#modal {
  width: 580px;
  max-height: calc(100vh - 28px);
  max-height: calc(100dvh - 28px);
  overflow: auto;
}
#modal label {
  margin-top: 8px;
}
#modal .field {
  margin-bottom: 10px;
  min-height: 48px;
}
#modal .actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 12px;
}
#modal .actions button {
  flex: 1;
}
#modal .list-row {
  padding: 14px 0;
  border-bottom: 1px solid var(--cizgi);
}
#modal .list-row button {
  margin-right: 8px;
}
#modal .list-row strong {
  display: block;
  margin-bottom: 8px;
}
#modal .detail {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
}
#modal pre {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  background: var(--krem);
  padding: 12px;
  font-size: var(--y-14);
}
#modal input[type='checkbox'] {
  width: 24px;
  height: 24px;
  vertical-align: middle;
}
.row-price {
  font-variant-numeric: tabular-nums;
}
.catalog-note {
  white-space: normal;
}
.disabled-note {
  color: var(--hata-metin);
  font-size: var(--y-14);
}
#modal .methods {
  margin-bottom: 12px;
}
#modal .methods button {
  min-height: 52px;
}
#cart .row {
  padding: 10px 0;
}
.product-photo {
  object-fit: cover;
}
#cashbox {
  font-size: var(--y-16); /* İnceleme: başlıktaki diğer düğmelerle aynı (önce 14 px kalmıştı). */
}
#customer {
  width: 100%;
}
.tabs {
  overflow: auto;
}
.catalog {
  min-width: 0;
}
.products {
  min-height: 0;
}
#modal .field-error {
  color: var(--hata-metin);
}
.cart .row-price {
  white-space: nowrap;
}
.product-media .product-icon {
  width: 64px;
  height: 64px;
  object-fit: contain;
}
.refund-item {
  padding: 14px 0;
  border-bottom: 1px solid var(--cizgi);
}
.refund-item strong {
  display: block;
  font-size: var(--y-18);
}
.refund-item p {
  margin: 8px 0;
}
#refund-form button,
#confirm-refund-form button,
#review-refund-form button,
#retry-refund,
#open-refund {
  min-height: 48px;
  font-size: var(--y-16);
}
#refund-form label {
  display: block;
  line-height: 1.6;
}
#modal input[type='number'] {
  font-size: var(--y-20);
}

#modal .stock-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
#modal .stock-pair > div {
  min-width: 0;
}
#stock-receive-form input[type='number'] {
  font-size: var(--y-20);
}
.paper-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 20px 6px;
  padding: 10px 12px;
  border-left: 4px solid var(--koyu-kirmizi);
  background: var(--uyari-zemin);
}
.paper-strip > div {
  min-width: 0;
}
.paper-strip span,
.paper-strip strong,
.paper-strip small {
  display: block;
  overflow-wrap: anywhere;
}
.paper-strip span {
  font-size: var(--y-14);
  color: var(--hata-metin);
}
.paper-strip strong {
  font-size: var(--y-18);
  font-variant-numeric: tabular-nums;
}
.paper-strip small {
  font-size: var(--y-14);
  font-variant-numeric: tabular-nums;
}
.paper-strip button {
  flex: none;
  min-height: 48px;
  padding: 0 16px;
  font-size: var(--y-16);
  white-space: nowrap;
}
#modal .paper-when {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
#modal .paper-when > div {
  min-width: 0;
}
#paper-form .field {
  font-size: var(--y-20);
}
#paper-form button,
#paper-start,
#paper-back,
#paper-leave,
#paper-stay {
  min-height: 52px;
  font-size: var(--y-16);
}
.paper-list-title {
  margin: 18px 0 0;
  font-size: var(--y-18);
}
/* 02.10.2026 kasa: ikinci kişi onayı, unutulan kasa şeridi ve gün sonu özeti. */
#modal .cash-approval {
  margin: 12px 0;
  padding-top: 4px;
  border-top: 1px solid var(--cizgi);
}
#modal .cash-approval .field {
  font-size: var(--y-18);
}
.closing-strip {
  flex-direction: column;
  align-items: stretch;
}
.closing-strip span {
  font-weight: 700;
}
.closing-strip strong {
  color: var(--hata-metin);
}
.closing-strip button {
  width: 100%;
}
#modal .day-end-head {
  margin: 18px 0 4px;
  padding-top: 10px;
  border-top: 1px solid var(--cizgi);
  font-size: var(--y-16);
  color: var(--soluk);
}
#modal .day-end-note {
  margin: -4px 0 6px;
  font-size: var(--y-14);
  color: var(--soluk);
}
#modal .day-end-total {
  font-weight: 700;
  border-top: 1px dashed var(--cizgi);
}
#modal .detail b {
  font-variant-numeric: tabular-nums;
  text-align: right;
}
#modal .cari-ekstre {
  margin: 10px 0;
  padding: 0 12px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
}
#modal .cari-ekstre summary {
  display: flex;
  align-items: center;
  min-height: 48px;
  font-weight: 700;
  cursor: pointer;
}
#modal .ekstre-row {
  display: grid;
  grid-template-columns: 96px 1fr auto;
  gap: 2px 12px;
  padding: 10px 0;
  border-top: 1px solid var(--cizgi-acik);
}
#modal .ekstre-row small {
  display: block;
  color: var(--soluk);
  font-size: var(--y-14);
}
#modal .ekstre-row b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#modal .ekstre-row > small {
  grid-column: 3;
  text-align: right;
}
/* MUS-14: tahsilat satırında makbuzu yeniden basma düğmesi (dokunma yüzeyi 48 px). */
#modal .ekstre-print {
  display: block;
  margin-top: 6px;
}
/* 02.10.2026 B-3 POS bilgi fişi: ekranda önizleme, kâğıtta 80 mm düzen (48 karakter). */
#print-slip {
  display: none;
}
#modal .slip-preview {
  max-height: 46vh;
  overflow: auto;
  margin: 8px 0 12px;
  padding: 12px;
  border: 1px solid var(--cizgi);
  background: var(--beyaz);
  font: var(--y-14) / 1.35 var(--yazi-sabit);
  white-space: pre;
}
.last-sale {
  display: grid;
  gap: 6px;
  margin: 12px 0 0;
}
.last-sale span {
  font-size: var(--y-14);
  color: var(--soluk);
}
.last-sale strong {
  font-size: var(--y-16);
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.last-sale button,
#sale-print,
#slip-copy,
#slip-close,
#paper-request,
#paper-yes,
#paper-no {
  min-height: 52px;
  font-size: var(--y-16);
}
#modal .card-choice {
  display: grid;
  gap: 8px;
  margin: 12px 0;
  padding: 10px 12px;
  border: 1px solid var(--cizgi);
}
/* 02.10.2026 kâğıt fiyat sorusu: değişen ürünler kısa liste, iki büyük seçenek. */
#modal .paper-price ul {
  display: grid;
  gap: 4px;
  margin: 0;
  padding-left: 20px;
  font-size: var(--y-16);
  line-height: 1.4;
}
#modal .paper-price p {
  margin: 4px 0 0;
}
#modal .card-choice label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: var(--dokun-yuzey);
  font-size: var(--y-16);
}
/* 03.10.2026 karar 1: seçeneğin sonucu (borçtan düşen, nakit) seçeneğin altında, girintili. */
#modal .choice-outcome {
  margin: -4px 0 4px 34px;
  font-size: var(--y-14);
}
#modal .choice-outcome .detail {
  padding: 3px 0;
}
/* 03.10.2026 karar 4: günü kapanmış satışta iade türü (ürün iadesi / kayıt düzeltmesi). */
#modal .refund-kind {
  display: grid;
  gap: 6px;
  margin: 8px 0 4px;
  padding: 10px 12px;
  border: 1px solid var(--cizgi);
}
#modal .refund-kind legend {
  font-weight: 700;
}
#modal .refund-kind label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: var(--dokun-yuzey);
  font-size: var(--y-16);
}
#modal .refund-kind .note {
  margin: 0;
  font-size: var(--y-14);
}
#modal .z-form {
  margin-top: 16px;
}
/* Q19 küpür kırılımı: isteğe bağlı, açılınca iki sütun; büyük dokunma hedefi. */
#modal details.kupur {
  margin: 4px 0 12px;
}
#modal details.kupur summary {
  min-height: var(--dokun-yuzey);
  display: flex;
  align-items: center;
  font-size: var(--y-16);
  cursor: pointer;
}
#modal .kupur-grid {
  display: grid;
  grid-template-columns: 6em minmax(0, 1fr);
  gap: 6px 10px;
  align-items: center;
}
#modal .kupur-grid label {
  margin: 0;
}
#modal .kupur-grid .field {
  margin: 0;
}
@media print {
  @page {
    size: 80mm auto;
    margin: 0;
  }
  body {
    background: #fff;
  }
  body > *:not(#print-slip) {
    display: none !important;
  }
  #print-slip {
    display: block;
    width: 72mm;
    margin: 0 4mm;
  }
  /* Logo fis-logo-03.svg (Kurumsal Kimlik 03, tek renk siyah vektör; V2 27.07 fişte sade logo kararı); devir tutanağının iki nüshası ayrı sayfa. */
  #print-slip .slip-logo {
    display: block;
    width: 52mm;
    height: auto;
    margin: 0 auto 2mm;
  }
  #print-slip .slip-page + .slip-page {
    break-before: page;
    page-break-before: always;
  }
  #print-slip pre {
    margin: 0;
    color: #000;
    font:
      2.5mm/1.3 'Courier New',
      Courier,
      monospace;
    white-space: pre;
  }
}
/* Bulut: kasa bilgisayarı tanıtma (kasa kodu ekranı ve merkezde gösterilen kod). */
.device-gate .device-code {
  min-height: 68px;
  font-size: var(--y-32);
  font-weight: 700;
  letter-spacing: 3px;
  text-align: center;
  text-transform: uppercase;
}
.device-gate .device-code::placeholder {
  color: var(--cizgi-koyu);
  font-weight: 400;
}
.device-gate .wide {
  min-height: 56px;
  font-size: var(--y-18);
}
#modal .device-code-show {
  margin: 14px 0;
  padding: 18px 12px;
  border: 2px solid var(--koyu-kirmizi);
  border-radius: var(--kose);
  font-size: var(--y-40);
  font-weight: 700;
  letter-spacing: 4px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
/* ===== 03.10.2026 görsel tur 2/3: satış ana ekranı (B1–B8) ve pencereler (C1, C3–C8). =====
   Yalnız görünüm: para, akış ve sunucu aynı. Ölçü hedefi 1536 × 864 (UI-01): en az 5 tam sepet
   satırı, ödeme alt kenarı ≤ 832; 1280 × 800'de en az 4 satır. Ödeme 2 × 2 düzeni, renkleri ve boş
   sepetin pasif görünümü 22.09 kararıyla aynı. Simgeler /static/icons altındaki 22.09 setinden. */

/* B5 · Logo: Kurumsal Kimlik paketi 03 değişkeni (sade; 01 ambalaj içindir, Marka Kitabı s.24),
   prototip/assets/logo-03.svg (Kurumsal Kimlik PDF s.3 vektörü; V2 9c08e26a logo-v3.svg ile aynı).
   Oran viewBox'tan gelir: 56 px yükseklikte ≈185 px; kutu ya da çerçeve yok. Eski logo-web.png
   geri dönüş için depoda (04.10.2026). */
header .brand img {
  width: auto;
  height: 56px;
}
/* B4 · Başlık: oturum, kasa çipi (UI-06: nakit bilgisi sürekli görünür), 48 px düğmeler. */
.head-right {
  gap: 8px;
}
header .head-right button {
  min-height: var(--dokun-yuzey);
  padding: 8px 16px;
  font-size: var(--y-16);
}
#session-label {
  max-width: 230px;
  line-height: 1.3;
  text-align: right;
}
.cash-chip:empty {
  display: none;
}
.cash-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  padding: 4px 12px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose-rozet);
  background: var(--yuzey-2);
  color: var(--siyah);
  font-size: var(--y-14);
  font-weight: 600;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cash-chip::before {
  content: '';
  flex: none;
  width: 10px;
  height: 10px;
  border-radius: var(--kose-rozet);
  background: var(--soluk);
}
.cash-chip[data-durum='acik'] {
  border-color: var(--olumlu);
  background: var(--olumlu-zemin);
  color: var(--olumlu);
}
.cash-chip[data-durum='acik']::before {
  background: var(--olumlu);
}
.cash-chip[data-durum='kapali'],
.cash-chip[data-durum='uyari'] {
  border-color: var(--bayrak);
  background: var(--hata-zemin);
  color: var(--hata-metin);
}
.cash-chip[data-durum='kapali']::before,
.cash-chip[data-durum='uyari']::before {
  background: var(--bayrak);
}
footer {
  justify-content: flex-start;
}

/* B6 · Ürün alanı: barkod düğmesi arama kutusunun sağında; ayrı barkod satırı yok. */
.catalog {
  grid-template-rows: auto minmax(0, 1fr) auto;
}
.tabs {
  grid-row: 2 / 4;
}
.products {
  grid-row: 2;
}
.catalog-note {
  grid-row: 3;
}
.searchline {
  gap: 12px;
}
.searchline input {
  height: var(--dokun-yuzey);
}
.searchline #barcode-button {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: var(--dokun-yuzey);
  padding: 0 16px;
  font-size: var(--y-16);
}
#barcode-button::before {
  content: '';
  flex: none;
  width: 24px;
  height: 24px;
  background: currentColor;
  mask: url('/static/icons/barcode.svg') center/contain no-repeat;
  -webkit-mask: url('/static/icons/barcode.svg') center/contain no-repeat;
}
.tabs button {
  font-size: var(--y-14);
}
.product .stock.untracked {
  font-weight: 400;
  color: var(--soluk);
}
.product .price.price-open {
  color: var(--soluk);
  font-size: var(--y-16);
  font-weight: 600;
}
/* Sepetteki ürünün kartı: krem zemin ve alt kırmızı çizgi (UI-03). */
.product.chosen {
  background: var(--krem-acik);
  border-color: var(--cizgi);
  box-shadow: inset 0 -4px 0 var(--koyu-kirmizi);
}
.products-empty b {
  display: block;
  margin-bottom: 6px;
  color: var(--siyah);
  font-size: var(--y-18);
}
.products-empty button {
  min-height: var(--dokun-yuzey);
  font-size: var(--y-16);
}

/* B3 · Sepet başlığı ve müşteri tek 64 px satırda; seçili müşteri belirgin. */
.basket-head {
  display: flex;
  align-items: center;
  gap: 10px;
  height: auto;
  min-height: 64px;
  padding: 8px 12px 8px 16px;
}
.basket-title {
  flex: none;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.basket-head h2 {
  font-size: var(--y-18);
  line-height: 1.2;
  white-space: nowrap;
}
.basket-head #count {
  font-size: var(--y-12);
  white-space: nowrap;
}
.basket-head .sale-context {
  flex: 1;
  min-width: 0;
  display: flex;
  padding: 0;
  border: 0;
}
#customer {
  flex: 1;
  min-width: 0;
  min-height: var(--dokun-yuzey);
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  column-gap: 8px;
  align-items: center;
  align-content: center;
  padding: 4px 10px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--beyaz);
  font-size: var(--y-16);
  text-align: left;
}
#customer::before {
  grid-column: 1;
  grid-row: 1 / 3;
  margin: 0;
}
#customer .customer-hint,
#customer .customer-name {
  grid-column: 2;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
#customer .customer-name {
  font-size: var(--y-16);
  color: var(--siyah);
}
#customer .customer-hint {
  font-size: var(--y-12);
  line-height: 1.2;
  color: var(--soluk);
}
#customer.secili {
  border-color: var(--koyu-kirmizi);
  background: var(--krem);
  box-shadow: inset 4px 0 0 var(--koyu-kirmizi);
}
#customer.secili .customer-name {
  font-size: var(--y-18);
  font-weight: 700;
  line-height: 1.2;
}
.basket > .paper-strip {
  margin-top: 8px;
}

/* B1 · Sepet satırı: 30.09'da onaylı ~85 px (36 px fotoğraf, 44 px dokunma); miktar kenarlı çip. */
.cart {
  padding: 0 16px;
}
#cart .row {
  padding: 2px 0;
}
.row-top strong {
  font-size: var(--y-16);
  line-height: 1.15;
}
.cart .row-bottom {
  margin-top: 0;
}
.cart .row-bottom .edit {
  min-width: 56px;
  min-height: var(--dokun-taban);
  margin-left: 44px;
  padding: 4px 12px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--beyaz);
  color: var(--siyah);
  font-size: var(--y-16);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.cart .row-bottom .edit::after {
  content: ' ✎';
  color: var(--soluk);
}
.cart .row-bottom .remove {
  width: var(--dokun-taban);
  height: var(--dokun-taban);
  padding: 0;
  font-size: var(--y-18);
  color: var(--hata-metin);
}

/* B2 · Ödeme bloğu: İndirim / Beklet / Temizle 48 px; 2 × 2 ödeme 62 px, 18 px, 24 px simge. */
.checkout {
  padding: 8px 16px 12px;
}
.checkout .secondary-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  padding-bottom: 8px;
}
.checkout .secondary-actions button,
.checkout .secondary-actions #hold,
.checkout .secondary-actions #clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--dokun-yuzey);
  padding: 6px 8px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--beyaz);
  font-size: var(--y-14);
}
.checkout .secondary-actions #discount {
  min-height: var(--dokun-yuzey);
  border-color: var(--koyu-kirmizi);
  background: var(--krem-acik);
}
.checkout .secondary-actions #discount.has-discount {
  background: var(--koyu-kirmizi);
}
.checkout .secondary-actions #clear {
  color: var(--hata-metin);
}
.checkout .subtotal {
  margin: 6px 0 8px;
}
.checkout .subtotal b {
  font-size: var(--y-32);
}
.checkout-note:empty {
  display: none;
}
.quick-payments button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 62px;
  padding: 6px 8px;
  font-size: var(--y-18);
  line-height: 1.1;
  white-space: normal;
  text-align: left;
}
.quick-payments #pay-cash::before,
.quick-payments #pay-card::before,
.quick-payments #pay-account::before,
.quick-payments #pay::before {
  content: '';
  display: block;
  flex: none;
  width: 24px;
  height: 24px;
  margin: 0;
  background: currentColor;
  mask: var(--odeme-ikon) center/contain no-repeat;
  -webkit-mask: var(--odeme-ikon) center/contain no-repeat;
}
.quick-payments #pay-cash {
  --odeme-ikon: url('/static/icons/pay-cash.svg');
}
.quick-payments #pay-card {
  --odeme-ikon: url('/static/icons/pay-card.svg');
}
.quick-payments #pay-account {
  --odeme-ikon: url('/static/icons/pay-account.svg');
}
.quick-payments #pay {
  --odeme-ikon: url('/static/icons/pay-more.svg');
}

/* B7 · Bildirim: sağ sütunun üstünde, ödeme düğmelerini örtmez; başarı yeşil, hata kırmızı. */
.notice {
  top: 72px;
  right: 8px;
  bottom: auto;
  left: auto;
  z-index: 30;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 364px;
  padding: 12px 14px 12px 12px;
  border: 1px solid var(--olumlu);
  border-left-width: 6px;
  border-radius: var(--kose);
  background: var(--olumlu-zemin);
  color: var(--siyah);
  font-size: var(--y-18);
  font-weight: 600;
  line-height: 1.35;
  cursor: pointer;
}
.notice::before {
  content: '✓';
  flex: none;
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  margin-top: 1px;
  border-radius: var(--kose-rozet);
  background: var(--olumlu);
  color: var(--beyaz);
  font-size: var(--y-14);
  font-weight: 700;
}
.notice.hata {
  border-color: var(--bayrak);
  background: var(--hata-zemin);
  color: var(--hata-metin);
}
.notice.hata::before {
  content: '!';
  background: var(--bayrak);
}

/* B8 · Son satış: kısa fiş no büyük; "Fiş yazdır" kenarlı ikincil. */
.last-sale {
  row-gap: 2px;
  margin: 12px 0;
}
.last-sale .last-sale-no {
  font-size: var(--y-32);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.last-sale small {
  font-size: var(--y-16);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.last-sale > strong {
  font-size: var(--y-14);
  font-weight: 600;
  color: var(--soluk);
}
.last-sale #print-last {
  min-height: var(--dokun-yuzey);
  margin-top: 6px;
  border-color: var(--cizgi-koyu);
}

/* C1 · Pencere kalıbı: pencere üstte sabit (içerik büyüyünce yerinden oynamaz); birincil düğme en
   altta ve uzun pencerede yapışkan (yapışkanlık pencerenin 28 px iç boşluğu kadar içeride ölçülür;
   -16 px ile düğme alt kenardan 12 px yukarıda durur, 12 px beyaz gölge altını ve üstünü örter,
   düğmeler arasındaki 12 px boşluğu aşmaz); ikincil hemen üstünde. Sıra CSS order ile; DOM aynı. */
#modal {
  margin-top: 16px;
  margin-bottom: auto;
  max-height: calc(100vh - 32px);
  max-height: calc(100dvh - 32px);
  container-type: scroll-state;
}
#modal .numpad {
  gap: 6px;
  margin: 10px 0 6px;
}
/* Bölünmüş ödeme: ped kaydırılınca yapışkan birincil düğmenin (58 px + 12 px beyaz pay) üstünde
   kalır; "Dağıtılan / Kalan" şeridi pedin hemen üstünde görünür (prova 04.10.2026). */
#modal #split-form .numpad {
  scroll-margin-bottom: 82px;
}
#modal .list-row button.wide {
  margin-right: 0;
}
#modal form > button.primary.wide:last-child,
#modal-body > button.primary.wide:last-child,
#modal-body > #check-sale,
#modal-body > #closing-go,
#modal-body > #open-refund {
  position: sticky;
  bottom: -16px;
  z-index: 2;
  box-shadow:
    0 -12px 0 var(--beyaz),
    0 12px 0 var(--beyaz);
}
@container scroll-state(scrollable: bottom) {
  #modal form > button.primary.wide:last-child,
  #modal-body > button.primary.wide:last-child,
  #modal-body > #check-sale,
  #modal-body > #closing-go,
  #modal-body > #open-refund {
    box-shadow:
      0 -12px 0 var(--beyaz),
      0 -13px 0 var(--cizgi),
      0 12px 0 var(--beyaz);
  }
}
#modal-body:has(> #check-sale),
#modal-body:has(> #closing-go),
#modal-body:has(> #open-refund),
#modal-body:has(> #unlock-form) {
  display: flex;
  flex-direction: column;
}
#modal-body:has(> #check-sale) > p,
#modal-body:has(> #closing-go) > p,
#modal-body:has(> #open-refund) > p,
#modal-body:has(> #unlock-form) > p {
  margin: 0 0 12px;
}
#modal-body > #check-sale,
#modal-body > #closing-go,
#modal-body > #open-refund {
  order: 2;
}
#modal-body > #sale-print,
#modal-body > .print-count {
  order: 1;
}
#modal-body > #open-refund ~ .warning,
#modal-body > #open-refund + .disabled-note {
  order: 3;
  margin-top: 12px;
}
/* Uzun özetin sonuna eklenen Z formu: düğmesi pencere boyunca yapışkan kalsın diye form kutusu
   açılır (DOM ve gönderim aynı). */
#modal-body > #z-form,
#unlock-form {
  display: contents;
}
#unlock-form > button.primary {
  order: 2;
}
#modal-body > #switch-user {
  order: 1;
}
/* Kilit penceresi yalnız PIN'le ya da "Başka personel girsin" ile kapanır. */
#modal:has(#unlock-form) #modal-close {
  display: none;
}
@media (min-width: 1400px) {
  #modal:has(#opening-count-form, #count-row-form, #count-day-form, #handover-form) {
    width: 720px;
  }
}

/* C3 · Devre dışı birincil düğme gri (ödeme 2 × 2 dışında). */
.primary:disabled {
  border-color: var(--pasif-zemin);
  background: var(--pasif-zemin);
  color: var(--pasif-metin);
  opacity: 1;
}

/* C4 · Miktar penceresi: hazır tuşlar 64 px, 20 px kalın; virgül yalnız ondalık alanda. */
#modal .quantity-price {
  margin: 0 0 4px;
  color: var(--siyah);
  font-size: var(--y-18);
  font-weight: 600;
}
#modal .presets {
  gap: 8px;
  margin: 12px 0 16px; /* İnceleme: alan etiketi hazır tuşlara yapışmasın. */
}
#modal .presets:empty {
  display: none;
}
#modal .presets button {
  min-height: 64px;
  font-size: var(--y-20);
  font-weight: 700;
}
#number-pad[data-kip='numeric'] button[data-key=','] {
  visibility: hidden;
}

/* C5 · Ödenecek 24 px; para üstü 36 px kutuda, Nakit yeşili bantla (değer sunucu önizlemesinden). */
#modal .pay-due {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--cizgi-acik);
}
#modal .pay-due span {
  color: var(--soluk);
  font-size: var(--y-16);
  font-weight: 600;
}
#modal .pay-due b {
  color: var(--siyah);
  font-size: var(--y-24);
  font-variant-numeric: tabular-nums;
}
#modal .change-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 4px 0;
  padding: 10px 14px;
  border-left: 6px solid var(--odeme-nakit);
  background: var(--olumlu-zemin);
}
#modal .change-box span {
  font-size: var(--y-18);
  font-weight: 600;
}
#modal .change-box b,
#modal #single-change {
  color: var(--siyah);
  font-size: var(--y-40);
  font-weight: 700;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

/* C6 · Diğer Ödemeler: 22.09 simgeleri, 56 px, solda yöntem ailesinin renk şeridi. */
#modal .methods .method-button {
  --serit: var(--odeme-diger-metin);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  min-height: var(--dokun-standart);
  padding: 8px 14px 8px 18px;
  font-size: var(--y-16);
  text-align: left;
  box-shadow: inset 6px 0 0 var(--serit);
}
#modal .methods .method-button .payment-icon {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
}
#modal .methods .method-gecmis_cari {
  --serit: var(--odeme-cari);
}
#modal .methods .method-split {
  box-shadow:
    inset 3px 0 0 var(--odeme-nakit),
    inset 6px 0 0 var(--odeme-kart);
}
#modal .methods .method-button[aria-pressed='true'] {
  border-color: var(--serit);
  background: var(--serit);
  color: var(--beyaz);
}

/* C7 · Müşteri listesi: ad düğmesi satırı kaplar; "Hesap" küçük ve ikincil. */
#modal .customer-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
}
#modal .customer-row strong {
  flex: 1;
  margin: 0;
}
#modal .customer-row .customer-pick {
  flex: 1;
  min-width: 0;
  min-height: var(--dokun-standart);
  margin: 0;
  padding: 8px 14px;
  font-size: var(--y-18);
  text-align: left;
}
#modal .customer-row .customer-account {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  padding: 8px 12px;
  color: var(--soluk);
  font-size: var(--y-14);
}
#modal .customer-row .customer-account::before {
  content: '';
  width: 20px;
  height: 20px;
  background: currentColor;
  mask: url('/static/icons/history.svg') center/contain no-repeat;
  -webkit-mask: url('/static/icons/history.svg') center/contain no-repeat;
}

/* C8 · Müşteri cari kartı: bakiye büyük; "Tahsilat al" tek birincil; diğer işler kapalı kutuda. */
#modal .cari-balance {
  align-items: baseline;
  padding: 2px 0 10px;
}
#modal .cari-balance b {
  font-size: var(--y-32);
}
#modal details.more-actions {
  margin-top: 12px;
  border-top: 1px solid var(--cizgi);
}
#modal details.more-actions > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: var(--dokun-yuzey);
  font-weight: 600;
  cursor: pointer;
  list-style: none;
}
#modal details.more-actions > summary::-webkit-details-marker {
  display: none;
}
#modal details.more-actions > summary::before {
  content: '▸';
  color: var(--soluk);
}
#modal details.more-actions[open] > summary::before {
  content: '▾';
}

/* Diğer genişlikler: bildirim sağ sütun kadar; telefonda iki kenardan. */
@media (min-width: 1200px) {
  /* Giriş ve kasa kodu ekranı: başlık 64 + alt şerit 24 px; altta boş beyaz şerit kalmaz. */
  .gate {
    min-height: calc(100vh - 88px);
    min-height: calc(100dvh - 88px);
  }
  .notice {
    width: 304px;
  }
  .searchline {
    padding: 6px 14px;
  }
}
@media (min-width: 1600px) {
  .notice {
    width: 354px;
  }
}
@media (max-width: 1050px) {
  .notice {
    width: 314px;
  }
}
@media (max-width: 700px) {
  header .brand img {
    height: 40px;
  }
  .catalog {
    grid-template-rows: auto 330px auto;
  }
  .notice {
    top: auto;
    right: 8px;
    bottom: 8px;
    left: 8px;
    width: auto;
  }
  .tabs button {
    font-size: var(--y-12);
  }
}

/* ===== 03.10.2026 görsel tur 3/3: kasa, gün sonu, devir, iade, kâğıt, geçmiş (D1–D8) ve fiş
   önizlemesi (E1). Yalnız görünüm: para, akış ve sunucu aynı; ölçü hedefi 1536 × 864 (UI-01). ===== */

/* D1 · İşlemler: aynı pencerede başlıklı gruplar; iki sütun, 56 px ve 18 px düğmeler; talepler
   kapalı kutuda; "Çıkış yap" en altta ayrı. */
#modal-body:has(> .cash-groups) > .detail {
  padding: 4px 0;
}
#modal .cash-groups {
  display: grid;
  gap: 16px;
  margin-top: 14px;
}
#modal .cash-group h3,
#modal details.cash-group > summary {
  margin: 0 0 8px;
  color: var(--soluk);
  font-size: var(--y-14);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
#modal .cash-group-yarim h3 {
  color: var(--hata-metin);
}
#modal .cash-group-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
#modal .cash-group-grid button {
  min-height: var(--dokun-standart);
  margin: 0;
  padding: 8px 14px;
  font-size: var(--y-18);
  line-height: 1.2;
}
#modal .cash-group-grid button:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}
#modal details.cash-group {
  padding: 0 12px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
}
#modal details.cash-group > summary {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: var(--dokun-standart);
  margin: 0;
  cursor: pointer;
  list-style: none;
}
#modal details.cash-group > summary::-webkit-details-marker {
  display: none;
}
#modal details.cash-group > summary::before {
  content: '▸';
  font-size: var(--y-16);
  letter-spacing: 0;
}
#modal details.cash-group[open] > summary::before {
  content: '▾';
}
#modal details.cash-group[open] {
  padding-bottom: 12px;
}
#modal .cash-groups > .cash-logout {
  width: 100%;
  min-height: var(--dokun-standart);
  margin: 4px 0 0;
  color: var(--soluk);
  font-size: var(--y-16);
}
@media (min-width: 1400px) {
  #modal:has(.cash-groups) {
    width: 720px;
  }
}

/* D2 · "Küpürle say": kenarlı 48 px açılır düğme, ▸/▾; küpürler iki sütun. */
#modal details.kupur > summary {
  gap: 10px;
  padding: 0 14px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--beyaz);
  font-weight: 600;
  list-style: none;
}
#modal details.kupur > summary::-webkit-details-marker {
  display: none;
}
#modal details.kupur > summary::before {
  content: '▸';
  color: var(--soluk);
}
#modal details.kupur[open] > summary {
  margin-bottom: 10px;
  border-color: var(--cizgi-koyu);
}
#modal details.kupur[open] > summary::before {
  content: '▾';
}
@media (hover: hover) {
  #modal details.kupur > summary:hover,
  #modal details.cash-group > summary:hover {
    background: var(--krem-acik);
  }
}
#modal .kupur-grid {
  grid-template-columns: 4.5em minmax(0, 1fr) 4.5em minmax(0, 1fr);
  gap: 8px 12px;
}
#modal .kupur-grid label {
  font-variant-numeric: tabular-nums;
}
#modal details.kupur > p {
  margin: 10px 0 0;
  color: var(--siyah);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

/* D3–D5 · Sayım, açılış, gün sonu ve devir: önemli tutar belirgin kutuda; döviz alanları yan yana;
   kaydedilen satır ✓; beklenen ve sayılan iki sütunda (yalnız yanıttaki değerler). */
#modal .carry-box {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 14px;
  padding: 12px 14px;
  border-left: 4px solid var(--altin);
  background: var(--krem-acik);
}
#modal .carry-box span {
  color: var(--siyah);
  font-weight: 600;
}
#modal .carry-box b {
  font-size: var(--y-24);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
#modal .fx-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 16px;
}
#modal .fx-pair > div {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
#modal .fx-pair > div:only-child {
  grid-column: 1 / -1;
}
#modal .fx-pair .field {
  margin-bottom: 4px;
}
#modal .fx-hint {
  display: block;
  margin: 0 0 10px;
  color: var(--soluk);
  font-size: var(--y-14);
  font-variant-numeric: tabular-nums;
}
#modal .fx-hint b {
  color: var(--siyah);
}
/* Prova düzeltme (03.10.2026). Döviz penceresinde ödeme öncesi kur ve TCMB tarihi (OD-08);
   bölünmüş ödemede her ödeme ayrı kutuda, dağıtılan ve kalan anlık şeritte (OD-02). */
#modal .fx-rate {
  margin: 0 0 10px;
  padding: 8px 12px;
  border-left: 4px solid var(--altin-koyu);
  background: var(--krem-acik);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
/* 05.10.2026 cevap 10: ödenecek ₺'nin döviz karşılığı, tutarın hemen altında büyük. */
#modal .fx-due {
  margin: -6px 0 12px;
  color: var(--siyah);
  font-size: var(--y-20);
  font-weight: 700;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#modal .fx-due:empty {
  display: none;
}
#modal .split-part {
  margin: 0 0 10px;
  padding: 8px 12px 0;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
}
#modal .split-part .fx-pair {
  align-items: end;
}
#modal .split-part .fx-hint {
  margin-top: -4px;
}
#modal .split-remove {
  width: 100%;
  margin: 0 0 10px;
  color: var(--hata-metin);
}
#modal .split-left {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 10px 0;
  padding: 10px 14px;
  font-size: var(--y-16);
  font-variant-numeric: tabular-nums;
}
#modal .split-left::before {
  content: none;
}
#modal .split-left b {
  font-size: var(--y-20);
}
#modal .split-left.split-ok {
  border-left: 4px solid var(--olumlu);
  background: var(--olumlu-zemin);
}
#modal .count-none {
  margin: 4px 0 12px;
  font-size: var(--y-14);
}
#modal .count-line strong {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: var(--y-18);
}
#modal .count-line.counted {
  padding-left: 12px;
  box-shadow: inset 4px 0 0 var(--olumlu);
}
#modal .count-ok {
  flex: none;
  padding: 2px 10px;
  border-radius: var(--kose-rozet);
  background: var(--olumlu-zemin);
  color: var(--olumlu);
  font-size: var(--y-14);
  font-weight: 700;
}
#modal .count-sum {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: baseline;
  gap: 6px 28px;
  margin: 0 0 12px;
  padding: 10px 14px;
  border: 1px solid var(--cizgi-acik);
  border-radius: var(--kose);
  background: var(--yuzey-2);
}
#modal .count-sum > span {
  color: var(--soluk);
  font-size: var(--y-14);
}
#modal .count-sum > span:nth-child(2),
#modal .count-sum > span:nth-child(3) {
  text-align: right;
}
#modal .count-sum b {
  font-size: var(--y-18);
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
#modal .count-sum.count-sum-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
#modal .count-sum.count-sum-2 > span,
#modal .count-sum.count-sum-2 b {
  text-align: left;
}
#modal .list-row .count-go {
  width: 100%;
  min-height: var(--dokun-standart);
  margin: 0;
  font-size: var(--y-18);
}
/* Kaydedilmiş sayımda devre dışı "Sayımı bitir" gizlenir; sonraki adım tek birincil kalır. */
#modal #count-finish:disabled:has(+ #count-deliver) {
  display: none;
}
#modal .auth-box {
  margin: 14px 0 0;
  padding: 12px 14px 2px;
  border: 1px solid var(--cizgi-koyu);
  border-radius: var(--kose);
  background: var(--yuzey-2);
}
#modal .auth-title {
  display: block;
  font-size: var(--y-18);
}
#modal .auth-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 12px;
}
#modal .auth-fields > div {
  min-width: 0;
}
#modal .auth-box .deneme-ipucu {
  margin: 8px 0 0;
}
#modal .handover-who {
  margin: 0;
  font-size: var(--y-14);
}

/* D3 · Gün sonu özeti: sıfır satırlar soluk; gram ve ciro büyük; tutar satır tabanında hizalı. */
#modal .detail {
  align-items: baseline;
}
#modal .detail.is-zero span,
#modal .detail.is-zero b {
  color: var(--soluk);
  font-weight: 400;
}
#modal .detail.day-end-key span {
  color: var(--siyah);
  font-size: var(--y-18);
  font-weight: 600;
}
#modal .detail.day-end-key b {
  font-size: var(--y-24);
}

/* D6 · Gün kapandı: olumlu başlık; yedek bilgisi nötr, teknik satırlar "Ayrıntı"da. */
#modal .day-closed {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin: 0 0 16px;
  padding: 14px 16px;
  border-left: 6px solid var(--olumlu);
  background: var(--olumlu-zemin);
}
#modal .day-closed b {
  color: var(--olumlu);
  font-size: var(--y-24);
}
#modal .day-closed span {
  font-size: var(--y-18);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
#modal details.backup-more p {
  margin: 0 0 10px;
}

/* D8 · Satış geçmişi: büyük satırda saat · ödeme · tutar, altında kısa fiş no; arama tek satır. */
#history-search-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  column-gap: 8px;
  margin-bottom: 6px;
}
#history-search-form label {
  grid-column: 1 / -1;
}
#history-search-form .field {
  margin: 0;
}
#history-search-form button {
  width: auto;
  min-height: var(--dokun-yuzey);
  margin: 0;
  padding: 0 28px;
}
#modal .history-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 0;
}
#modal .history-main {
  flex: 1;
  display: grid;
  gap: 2px;
  min-width: 0;
}
#modal .history-row strong {
  margin: 0;
  font-size: var(--y-18);
  font-variant-numeric: tabular-nums;
}
#modal .history-main small {
  color: var(--soluk);
  font-size: var(--y-14);
  line-height: 1.35;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
#modal .history-main small b {
  color: var(--siyah);
  font-size: var(--y-16);
}
#modal .history-main .history-refund {
  color: var(--hata-metin);
  font-weight: 600;
}
#modal .history-row button {
  flex: none;
  margin: 0;
}

/* E1 · Fiş önizlemesi: 80 mm kâğıt şeridi gibi (48 karakter, aynı logo, sabit genişlikte yazı). */
#modal .slip-desk,
.yazici-icerik .slip-desk {
  margin: 8px 0 12px;
  padding: 14px 12px 10px;
  border-radius: var(--kose);
  background: var(--krem);
}
#modal .slip-paper,
.yazici-icerik .slip-paper {
  width: min(100%, calc(48ch + 34px));
  max-height: 44vh;
  overflow: auto;
  margin: 0 auto;
  padding: 16px 16px 20px;
  border: 1px solid var(--cizgi);
  background: var(--beyaz);
  font: var(--y-14) / 1.35 var(--yazi-sabit);
}
#modal .slip-preview-logo,
.yazici-icerik .slip-preview-logo {
  display: block;
  width: 72%;
  height: auto;
  margin: 0 auto 10px;
}
#modal .slip-paper .slip-preview,
.yazici-icerik .slip-paper .slip-preview {
  max-height: none;
  overflow: visible;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: var(--siyah);
  font: inherit;
}
#modal .slip-caption,
.yazici-icerik .slip-caption {
  margin: 8px 0 0;
  color: var(--soluk);
  font-size: var(--y-14);
  text-align: center;
}
/* Geçici şifre ve anahtar: okunaklı, sabit genişlikte büyük yazı. */
#modal pre:not(.slip-preview) {
  padding: 14px 16px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--krem-acik);
  font: 700 var(--y-24) / 1.3 var(--yazi-sabit);
  letter-spacing: 0.04em;
  text-align: center;
}
/* A7: ilk girişte telefon kodu karekodu. Beyaz zemin ve siyah modül her temada aynı kalır (telefon
   koyu temada da okusun); 4 modüllük sessiz alan SVG'nin içinde. Pencere 1280 × 800'de kaymasın diye
   boy ekran yüksekliğine de bağlı. */
#modal .enroll-qr {
  display: flex;
  justify-content: center;
  margin: 8px 0 12px;
}
#modal .enroll-qr svg {
  width: min(272px, 64vw, 34vh);
  height: auto;
  background: #fff;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
}
#modal .enroll-note {
  margin: 8px 0 0;
  font-size: var(--y-14);
  color: var(--soluk);
}

@media (max-width: 700px) {
  #modal .cash-group-grid,
  #modal .fx-pair,
  #modal .auth-fields {
    grid-template-columns: minmax(0, 1fr);
  }
  #modal .kupur-grid {
    grid-template-columns: 4.5em minmax(0, 1fr);
  }
}

/* ===== A8 · KES-01/02 kesinti kilidi (açılış hazırlığı, 04.10.2026). Bağlantı yokken ürün alanının
   üstünde büyük uyarı; ürün kartları soluk ve dokunulmaz, ödeme ve sepet düğmeleri kapalı; sepet
   olduğu gibi görünür. Ölçü hedefi 1536 × 864 (UI-01); yerleşim kaymaz (uyarı ürün alanının
   hücresinde, ürünlerin üstünde durur). ===== */
.ag-kilit {
  grid-column: 2;
  grid-row: 2;
  align-self: start;
  z-index: 6;
  margin: 18px 22px;
  padding: 22px 26px 18px;
  border: 2px solid var(--bayrak);
  border-left-width: 12px;
  border-radius: var(--kose);
  background: var(--hata-zemin);
  box-shadow: var(--golge-pencere);
}
.ag-kilit strong {
  display: block;
  color: var(--hata-metin);
  font-size: var(--y-32);
  line-height: 1.15;
}
.ag-kilit p {
  margin: 12px 0 0;
  color: var(--siyah);
  font-size: var(--y-20);
  font-weight: 600;
  line-height: 1.35;
}
.ag-kilit p.ag-kagit {
  font-size: var(--y-24);
  font-weight: 700;
}
.ag-kilit p.ag-belirsiz {
  padding: 10px 14px;
  border-left: 4px solid var(--koyu-kirmizi);
  background: var(--uyari-zemin);
}
.ag-kilit small {
  display: block;
  margin-top: 12px;
  color: var(--soluk);
  font-size: var(--y-14);
}
.products.ag-kilitli {
  opacity: 0.35;
  filter: grayscale(0.7);
  pointer-events: none;
}
/* A11 (açılış hazırlığı, 04.10.2026) · Kısa ekran. Android kasalar (Hava-3 HP Engage One Prime 14",
   Chrome) tam ekranda 1280 × 720, tarayıcı çubuğuyla yaklaşık 1280 × 640 CSS piksel; 960 × 540 de
   ölçüldü. Satış ekranı sayfayı kaydırmaz: dört ödeme düğmesi her zaman görünür; kısalan yalnız
   kendi içinde kayan sepet listesi ve ürün alanıdır (önce ana alanın en az 650 px kuralı sayfayı
   uzatıyordu, 1280 × 640'ta Cari ve Diğer Ödemeler ekran dışında kalıyordu). Yüksekliği 761 px ve
   üstü olan ekran (1536 × 864, 1280 × 800, 1366 × 768, 1920 × 1080) değişmez. */
@media (min-width: 701px) and (max-height: 760px) {
  main {
    min-height: 0;
  }
  .checkout .subtotal {
    margin: 2px 0 6px;
  }
  .quick-payments button {
    min-height: 56px;
  }
  /* Giriş: kart ekrana sığsın diye kenar boşlukları azalır (ekran klavyesi açılınca sayfa yine kayar). */
  .gate {
    padding: 12px 26px;
  }
  .gate article {
    padding: 20px 28px;
  }
}
/* 1200 px'ten dar kısa ekranda başlık ve alt şerit de kasa yoğunluğunda (64 + 24 px). */
@media (min-width: 701px) and (max-width: 1199px) and (max-height: 760px) {
  header {
    height: 64px;
    padding: 4px 14px;
  }
  header .brand img {
    height: 44px;
  }
  header .head-right button {
    min-height: var(--dokun-yuzey);
    padding: 6px 10px;
    white-space: nowrap;
  }
  #session-label {
    max-width: 150px;
    font-size: var(--y-12);
  }
  main {
    height: calc(100vh - 88px);
    height: calc(100dvh - 88px);
  }
  footer {
    height: 24px;
  }
  .gate {
    min-height: calc(100vh - 88px);
    min-height: calc(100dvh - 88px);
  }
}

/* A12 · Yazıcı denemesi: İşlemler penceresinde ve girişsiz /yazici-kontrol.html sayfasında aynı iki
   kâğıt önizlemesi (E1 kâğıt şeridi), kısa kontrol listesi ve büyük Yazdır düğmesi. */
.printer-check {
  margin: 4px 0 12px;
  padding-left: 22px;
  font-size: var(--y-16);
  line-height: 1.5;
}
/* Deneme kâğıtları tam boy görünür (satış fişi önizlemesindeki 44vh sınırı yok); pencere kayar. */
#modal .printer-desk .slip-paper,
.yazici-icerik .printer-desk .slip-paper {
  max-height: none;
}
#modal .slip-caption.printer-cut,
.yazici-icerik .slip-caption.printer-cut {
  margin: 10px 0;
  color: var(--siyah);
  font-weight: 700;
}
/* Krem zemin yalnız ekranda; kâğıtta beyaz kalır (pos.css @media print). */
@media screen {
  body.yazici-sayfa {
    background: var(--krem);
  }
}
.yazici-sayfa header .yazici-geri {
  display: inline-flex;
  align-items: center;
  min-height: var(--dokun-yuzey);
  padding: 8px 16px;
  border: 1px solid var(--cizgi);
  border-radius: var(--kose);
  background: var(--beyaz);
  color: var(--siyah);
  font-weight: 600;
  text-decoration: none;
}
.yazici-icerik {
  max-width: 720px;
  margin: 0 auto;
  padding: 20px 16px 40px;
}
.yazici-icerik h1 {
  margin: 0 0 8px;
  font-size: var(--y-32);
}
.yazici-icerik .yazici-tarayici {
  color: var(--soluk);
  font-size: var(--y-14);
}
.yazici-icerik #printer-test-print {
  min-height: 64px;
  font-size: var(--y-20);
}

/* A11 · Eski tarayıcı uyarısı (uygulama/tarayici-uyari.js): sayfanın en üstünde, satışı durdurmaz. */
.tarayici-uyari {
  padding: 10px 18px;
  border-bottom: 2px solid var(--bayrak);
  background: var(--hata-zemin);
  color: var(--hata-metin);
  font-size: var(--y-18);
  font-weight: 700;
  text-align: center;
}

/* 06.10.2026 Şubeler arası cari: müşteri listesinde bağlı şube(ler) adın altında; başka şubenin
   müşterisi soluk kenarlı. "Hangi şube?" seçimi büyük düğmelerle; onay bekleyen satış penceresi. */
#modal .customer-row .customer-branches {
  display: block;
  margin-top: 2px;
  color: var(--soluk);
  font-size: var(--y-14);
  font-weight: 400;
}
#modal .customer-row.customer-cross .customer-pick {
  border-left: 4px solid var(--cizgi);
}
#modal .customer-cross-note {
  margin: 0 0 6px;
  color: var(--soluk);
  font-size: var(--y-14);
}
#modal .branch-choices {
  display: grid;
  gap: 10px;
}
#modal .branch-choices button {
  min-height: var(--dokun-standart);
  font-size: var(--y-18);
}
#modal .cross-wait {
  padding: 10px 12px;
  border-left: 4px solid var(--koyu-kirmizi);
  background: var(--uyari-zemin);
}
