/* MB Copy Center — prototipin görsel dili.
   Kağıt zemin, mürekkep lacivert-siyah metin, altın vurgu; başlıklar Cormorant
   Garamond, gövde Lora, bütün sayılar ve kodlar IBM Plex Mono. */

@import url("/static/fonts.css");

:root {
  --bg: #f3f2f2;
  --surface: #eae9e9;
  --paper: #fbfaf9;
  --text: #201f1d;
  --muted: #6f6b68;
  --accent: #b68235;
  --accent-soft: #fdf6ea;
  --accent-line: #e5cfa6;
  --divider: rgba(32, 31, 29, 0.16);
  --danger: #a33b2a;
  --ok: #3f6b45;

  --font-heading: "Cormorant Garamond", Georgia, serif;
  --font-body: "Lora", Georgia, serif;
  --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, monospace;

  --space-1: 4.6px;
  --space-2: 9.2px;
  --space-3: 13.8px;
  --space-4: 18.4px;
  --space-6: 27.6px;
  --space-8: 36.8px;

  --radius-sm: 2px;
  --radius-md: 4px;
}

*, *::before, *::after { box-sizing: border-box; }

/* Kareli kağıt: ince ızgara + üstten sıcak bir yıkama.
   Zemin html'e verilir ve görünüm alanına sabitlenir. Gövdeye verilseydi
   boyanan alan gövde kutusuyla biter, sayfa kısa olduğunda ekranın alt yarısı
   ızgarasız düz renk kalırdı. */
html {
  background-color: var(--bg);
  background-image:
    linear-gradient(180deg, rgba(182, 130, 53, 0.07), rgba(182, 130, 53, 0) 340px),
    linear-gradient(rgba(32, 31, 29, 0.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(32, 31, 29, 0.045) 1px, transparent 1px);
  background-size: auto, 28px 28px, 28px 28px;
  background-attachment: fixed;
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.55;
  color: var(--text);
  background: transparent;
}

h1, h2, h3 {
  font-family: var(--font-heading);
  font-weight: 600;
  line-height: 1.12;
  letter-spacing: -0.015em;
  margin: 0 0 var(--space-2);
}
h1 { font-size: 34px; }
h2 { font-size: 25px; }
h3 { font-size: 20px; }

p { margin: 0 0 var(--space-3); }
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }

.muted { color: var(--muted); }
.mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.small { font-size: 13px; }

/* ── üst şerit: çift çizgi ve yazı-logo ────────────────────────────────── */

.masthead {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-6);
  background: rgba(251, 250, 249, 0.92);
  border-bottom: 3px double var(--divider);
}

.wordmark {
  font-family: var(--font-heading);
  font-size: 26px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--accent);
  padding-right: var(--space-4);
  border-right: 1px solid var(--divider);
}

.masthead-name { font-family: var(--font-heading); font-size: 19px; }
.masthead-sub {
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
}
.masthead-spacer { margin-left: auto; }

/* ── kağıt yüzeyler ────────────────────────────────────────────────────── */

.sheet {
  background: var(--paper);
  border: 1px solid var(--divider);
  border-left: 4px solid var(--accent-line);
  border-radius: var(--radius-md);
  padding: var(--space-6);
}

.stack > * + * { margin-top: var(--space-4); }

.page {
  max-width: 1180px;
  margin: 0 auto;
  padding: var(--space-6) var(--space-4) var(--space-8);
}
.page-narrow { max-width: 420px; }

/* ── formlar ───────────────────────────────────────────────────────────── */

.field { margin-bottom: var(--space-4); }
.field > label {
  display: block;
  font-size: 12px;
  margin-bottom: 5px;
  color: var(--muted);
}

.input {
  width: 100%;
  min-height: 38px;
  padding: 7px 10px;
  font: inherit;
  font-size: 14px;
  color: var(--text);
  caret-color: var(--accent);
  background: #fff;
  border: 1px solid var(--divider);
  border-radius: var(--radius-md);
}
.input:hover { border-color: rgba(32, 31, 29, 0.45); }
.input:focus-visible { border-color: var(--accent); outline: 1px solid var(--accent); }
input.mono, .input.mono { font-family: var(--font-mono); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 38px;
  padding: 0 var(--space-4);
  font: inherit;
  font-size: 14px;
  color: var(--accent);
  background: transparent;
  border: 1px solid var(--accent);
  border-radius: var(--radius-md);
  cursor: pointer;
}
.btn:hover { background: var(--accent-soft); }
.btn:disabled { opacity: 0.45; cursor: not-allowed; }
.btn-block { width: 100%; }
.btn-quiet { color: var(--text); border-color: var(--divider); }
.btn-quiet:hover { background: var(--surface); }
.btn-danger { color: var(--danger); border-color: rgba(163, 59, 42, 0.5); }
.btn-danger:hover { background: rgba(163, 59, 42, 0.08); }
.btn-small { min-height: 30px; font-size: 13px; padding: 0 var(--space-3); }

/* ── bildirimler ───────────────────────────────────────────────────────── */

.flash {
  position: fixed;
  left: 50%;
  bottom: var(--space-6);
  transform: translateX(-50%);
  z-index: 20;
  display: flex;
  align-items: center;
  gap: var(--space-3);
  max-width: 460px;
  padding: var(--space-3) var(--space-4);
  font-size: 14px;
  color: #fbfaf9;
  background: var(--text);
  border-radius: var(--radius-md);
  box-shadow: 0 6px 20px rgba(32, 31, 29, 0.25);
}
.flash-mark { color: var(--accent-line); }
.flash-error .flash-mark { color: #e9a396; }

.notice {
  padding: var(--space-3) var(--space-4);
  font-size: 14px;
  border: 1px solid var(--divider);
  border-left: 3px solid var(--accent);
  border-radius: var(--radius-sm);
  background: var(--accent-soft);
}
.notice-error { border-left-color: var(--danger); background: rgba(163, 59, 42, 0.07); }

.empty {
  padding: var(--space-8);
  text-align: center;
  color: var(--muted);
  border: 1px dashed var(--divider);
  border-radius: var(--radius-md);
}

/* ── müşteri ekranı ────────────────────────────────────────────────────── */

.phone {
  max-width: 400px;
  margin: 0 auto;
  padding: var(--space-4);
  /* Çizgili defter zemini. */
  background:
    linear-gradient(var(--paper) 0 0) padding-box,
    repeating-linear-gradient(
      var(--paper) 0 27px,
      rgba(32, 31, 29, 0.07) 27px 28px
    );
  border: 1px solid var(--divider);
  border-radius: var(--radius-md);
}

.customer-head {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  padding-bottom: var(--space-3);
  border-bottom: 3px double var(--divider);
}
.customer-greeting {
  font-family: var(--font-heading);
  font-size: 27px;
  text-align: center;
  margin: var(--space-6) 0;
}

/* Bakiye kartı: cetvel çizgileri ve solda altın marj şeridi. */
.balance-card {
  position: relative;
  padding: var(--space-4) var(--space-4) var(--space-3);
  text-align: center;
  background: repeating-linear-gradient(
    #fff 0 21px,
    rgba(32, 31, 29, 0.06) 21px 22px
  );
  border: 1px solid var(--divider);
  border-left: 4px solid var(--accent);
  border-radius: var(--radius-sm);
}
.balance-label {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
}
.balance-value {
  font-family: var(--font-mono);
  font-size: 58px;
  font-weight: 500;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
}
.balance-unit {
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
}
.balance-low { color: var(--danger); }

/* Müşteri kartı: perfore kesik çizgiyle ayrılmış kod satırı. */
.customer-card {
  margin-top: var(--space-4);
  padding: var(--space-4);
  background: #fff;
  border: 1px solid var(--divider);
  border-radius: var(--radius-sm);
}
.card-label {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: var(--space-3);
}
.card-label::after {
  content: "";
  flex: 1;
  border-top: 1px solid var(--divider);
}
.qr { display: block; width: 100%; max-width: 250px; margin: 0 auto; }
.perforation {
  margin: var(--space-3) 0;
  border: 0;
  border-top: 1px dashed rgba(32, 31, 29, 0.35);
}
.card-code { text-align: center; font-size: 13px; color: var(--muted); }
.card-code strong { font-family: var(--font-mono); color: var(--text); }

.customer-links {
  margin-top: var(--space-6);
  text-align: center;
  font-size: 13px;
}

/* ── admin ─────────────────────────────────────────────────────────────── */

.adminbar {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  padding: var(--space-3) var(--space-6);
  background: var(--accent-soft);
  border-bottom: 1px solid var(--accent-line);
}
.adminbar nav { margin-left: auto; display: flex; align-items: center; gap: var(--space-2); }
.adminbar nav a {
  padding: 6px var(--space-3);
  color: var(--text);
  border-radius: var(--radius-sm);
}
.adminbar nav a:hover { background: rgba(182, 130, 53, 0.12); text-decoration: none; }
.adminbar nav a.active { color: var(--accent); background: rgba(182, 130, 53, 0.16); }

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; }
th {
  padding: var(--space-2) var(--space-3);
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  text-align: left;
  border-bottom: 1px solid var(--divider);
}
td {
  padding: var(--space-3);
  font-size: 14px;
  border-bottom: 1px solid var(--divider);
  vertical-align: middle;
}
tr:last-child td { border-bottom: 0; }
.num { text-align: right; font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.actions { display: flex; gap: var(--space-2); justify-content: flex-end; }

.row-between { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-4); }
.grid-2 { display: grid; grid-template-columns: 300px 1fr; gap: var(--space-4); align-items: start; }

/* Tarama alanı — sayfanın en dikkat çeken parçası. */
.scan-box {
  padding: var(--space-4);
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: var(--radius-md);
}
.scan-row { display: flex; gap: var(--space-3); }
.scan-row .input {
  font-family: var(--font-mono);
  font-size: 17px;
  letter-spacing: 0.08em;
  min-height: 46px;
}

.service-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: var(--space-3);
}
.service-name { font-family: var(--font-heading); font-size: 17px; }
.service-desc { font-size: 12px; color: var(--muted); }
.service-rate { font-family: var(--font-mono); font-size: 12px; color: var(--accent); }

.totals {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding-top: var(--space-4);
  margin-top: var(--space-4);
  border-top: 1px solid var(--divider);
}
.total-big { font-family: var(--font-mono); font-size: 30px; font-variant-numeric: tabular-nums; }
.total-after { font-family: var(--font-mono); font-size: 19px; font-variant-numeric: tabular-nums; }

.package-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
  gap: var(--space-3);
}
.package {
  padding: var(--space-3);
  text-align: left;
  background: #fff;
  border: 1px solid var(--divider);
  border-radius: var(--radius-sm);
  cursor: pointer;
  font: inherit;
}
.package:hover { border-color: var(--accent); background: var(--accent-soft); }
.package-price { font-family: var(--font-mono); font-size: 17px; }
.package-credits { font-family: var(--font-mono); font-size: 15px; color: var(--accent); }
.package-meta { font-family: var(--font-mono); font-size: 11px; color: var(--muted); }

.setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-3) 0;
  border-bottom: 1px solid var(--divider);
}
.setting-row .input { width: 96px; text-align: center; font-family: var(--font-mono); }
.setting-unit { font-size: 12px; color: var(--muted); min-width: 92px; }

.badge {
  display: inline-block;
  padding: 1px 7px;
  font-size: 11px;
  letter-spacing: 0.06em;
  border-radius: 999px;
  border: 1px solid rgba(163, 59, 42, 0.4);
  color: var(--danger);
  background: rgba(163, 59, 42, 0.07);
}

.tx-in { color: var(--ok); }
.tx-out { color: var(--danger); }

/* Dar telefonlarda geçmiş tablosunda "Kalan" sütunu satırları sıkıştırıyor;
   bilgi zaten her satırın kredisinden çıkarılabildiği için gizlenir. */
@media (max-width: 460px) {
  .history-after { display: none; }
  td { padding: var(--space-2); }
}

@media (max-width: 780px) {
  .masthead, .adminbar { padding: var(--space-3) var(--space-4); }
  .grid-2 { grid-template-columns: 1fr; }
  .adminbar nav { width: 100%; margin-left: 0; flex-wrap: wrap; }
  .page { padding: var(--space-4) var(--space-2) var(--space-8); }
  .sheet { padding: var(--space-4); }
}
