/* Red Holiday Rentals — yönetim, misafir ve personel arayüzü (Sürüm 7.10: sıcak tema + koyu mod).
   Marka: logodaki kırmızı (#c00901). Tek imza öğe: başlık altındaki el çizimi çizgi ("swoosh").
   Bütün renkler aşağıdaki değişkenlerden gelir; sayfa <html data-theme="light|dark"> ile tema değiştirir.
   Izgara 8 px; köşe 10–12 px; gölge çok hafif. Kontrast: metin/zemin çiftleri iki temada da WCAG AA. */

/* =====================================================================
   1) TEMA DEĞİŞKENLERİ
   ===================================================================== */
:root {
  color-scheme: light;
  /* zemin ve yüzeyler: sıcak krem/kum */
  --bg: #f6f1ea;
  --surface: #fffdf9;
  --surface-2: #faf5ee;          /* tablo başlığı, açılır bölüm, ikincil yüzey */
  --hover: #f3ebe1;
  --input-bg: #fffdf9;
  /* metin */
  --ink: #241a14;
  --ink-2: #4a3c33;
  --muted: #74665b;
  /* çizgiler: sıcak gri */
  --line: #e8dfd3;
  --line-strong: #d6c9ba;
  /* vurgu: Red Holiday kırmızısı */
  --accent: #c00901;              /* çizgi, simge, bugün işareti */
  --accent-bg: #c00901;           /* birincil düğme dolgusu */
  --accent-bg-hover: #9c0701;
  --accent-text: #a30801;         /* kırmızı yazı (bağlantı, uyarı) */
  --accent-ink: #ffffff;          /* kırmızı dolgu üstündeki yazı */
  --accent-soft: #fbe8e3;
  --accent-line: #efc3b9;
  /* tek ikincil renk: derin lacivert */
  --second: #1f3a5f;
  --second-ink: #ffffff;
  --second-soft: #e5ecf5;
  /* durum renkleri */
  --ok: #1b6a3f; --ok-soft: #e2f1e5;
  --wait: #845000; --wait-soft: #fbecd0;
  --off: #6c5f56; --off-soft: #efe7de;
  --bad: #b3261e; --bad-soft: #fbe7e3;
  /* katmanlar */
  --overlay: rgba(36, 26, 20, .5);
  --shadow-sm: 0 1px 2px rgba(60, 40, 20, .06);
  --shadow-md: 0 4px 14px rgba(60, 40, 20, .08);
  --shadow-lg: 0 18px 50px rgba(36, 26, 20, .25);
  --toast-bg: #241a14; --toast-ink: #fff8f0;
  --focus: #241a14;
  --sk-a: #ece3d8; --sk-b: #f7f2eb;
  --hatch-a: #ddd3c8; --hatch-b: #f1ebe4;   /* kapalı gün deseni */
  /* takvim: durum (çubuk dolgusu) */
  --st-paid: #1e6b3f; --st-paid-ink: #ffffff;
  --st-due: #f2b33d; --st-due-ink: #3a2500;
  --st-late: #b42318; --st-late-ink: #ffffff;
  --st-opt: #dce8fb; --st-opt-ink: #173a73; --st-opt-line: #3b6fd1;
  --cal-we: #f7f1e8;
  --cal-today: rgba(192, 9, 1, .05);
  /* takvim: kaynak (sol şerit + tutarsız kayıtta açık dolgu) */
  --src-airbnb: #d8344f; --src-airbnb-fill: #fde6ea; --src-airbnb-ink: #7f1530;
  --src-booking: #1d4fa3; --src-booking-fill: #e3ecfa; --src-booking-ink: #12336e;
  --src-direkt: #a30801; --src-direkt-fill: #fbe4df; --src-direkt-ink: #7a0a03;
  --src-whatsapp: #1f8a4c; --src-whatsapp-fill: #e1f3e7; --src-whatsapp-ink: #145c33;
  --src-bedbooking: #0f766e; --src-bedbooking-fill: #dcf0ec; --src-bedbooking-ink: #0b4f4a;   /* BedBooking'den aktarılan, kanalı bilinmeyen */
  --src-other: #7d6f66; --src-other-fill: #efe8e1; --src-other-ink: #3f342d;
  /* yazı tipleri */
  --font-display: 'Bricolage Grotesque', 'Trebuchet MS', system-ui, sans-serif;
  --font-body: 'Figtree', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --swoosh: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12'%3E%3Cpath d='M2 9.5C30 3 70 10.5 118 2.5' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E");
}
/* Koyu tema: kömür zemin (saf siyah değil), yüzeyler bir ton açık, kırmızı biraz açılır */
[data-theme="dark"] {
  color-scheme: dark;
  --bg: #17140f;
  --surface: #211d17;
  --surface-2: #29241d;
  --hover: #312b23;
  --input-bg: #1b1813;
  --ink: #f3ece3;
  --ink-2: #d8cdc0;
  --muted: #a99d90;
  --line: #3a3329;
  --line-strong: #4f4639;
  --accent: #e5483f;
  --accent-bg: #c8352c;
  --accent-bg-hover: #dc4238;
  --accent-text: #ff8a80;
  --accent-ink: #ffffff;
  --accent-soft: #3b201c;
  --accent-line: #6e2c25;
  --second: #9dbbe8;
  --second-ink: #10203a;
  --second-soft: #1e2a3b;
  --ok: #7ad3a0; --ok-soft: #173022;
  --wait: #f2b765; --wait-soft: #3a2b12;
  --off: #b6aa9d; --off-soft: #2f2922;
  --bad: #ff8a80; --bad-soft: #3b1d1a;
  --overlay: rgba(0, 0, 0, .62);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);
  --shadow-md: 0 4px 14px rgba(0, 0, 0, .35);
  --shadow-lg: 0 18px 50px rgba(0, 0, 0, .55);
  --toast-bg: #f3ece3; --toast-ink: #17140f;
  --focus: #f3ece3;
  --sk-a: #29241d; --sk-b: #352f27;
  --hatch-a: #3a3329; --hatch-b: #29241d;
  --st-paid: #1f6e43; --st-paid-ink: #eafff1;
  --st-due: #e2a73c; --st-due-ink: #2b1c00;
  --st-late: #c8352c; --st-late-ink: #ffffff;
  --st-opt: #1d2d47; --st-opt-ink: #bcd4ff; --st-opt-line: #6f9de8;
  --cal-we: #1c1813;
  --cal-today: rgba(229, 72, 63, .09);
  --src-airbnb: #ff5c7a; --src-airbnb-fill: #3c1d26; --src-airbnb-ink: #ffb8c5;
  --src-booking: #5b8def; --src-booking-fill: #182a47; --src-booking-ink: #b0cbff;
  --src-direkt: #e5483f; --src-direkt-fill: #3e1b17; --src-direkt-ink: #ffb0a8;
  --src-whatsapp: #3fbf74; --src-whatsapp-fill: #15301f; --src-whatsapp-ink: #a3e6bd;
  --src-bedbooking: #2bb3a3; --src-bedbooking-fill: #10302c; --src-bedbooking-ink: #9fe3d9;
  --src-other: #9c8f83; --src-other-fill: #2c2620; --src-other-ink: #d8cdc0;
}
/* Logo koyu zeminde: renkleri bozulmasın diye küçük krem zemin üstünde */
[data-theme="dark"] .brand img, [data-theme="dark"] .brand-top, [data-theme="dark"] .topbar img { background: #fbf6ee; border-radius: 10px; padding: 6px 10px; }
[data-theme="dark"] .topbar img { padding: 3px 6px; border-radius: 7px; }

/* =====================================================================
   2) TEMEL
   ===================================================================== */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 16px/1.5 var(--font-body); font-variant-numeric: lining-nums; }
body.guest { padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 48px max(16px, env(safe-area-inset-left)); }
h1, h2, h3 { font-family: var(--font-display); line-height: 1.15; margin: 0; text-wrap: balance; letter-spacing: -0.015em; color: var(--ink); }
h1 { font-size: 2rem; font-weight: 700; }
h2 { font-size: 1.2rem; font-weight: 700; }
h3 { font-size: 1.02rem; font-weight: 700; }
a { color: var(--accent-text); }
[hidden] { display: none !important; }   /* display tanımlayan sınıflara karşı da geçerli */
.wrap { max-width: 920px; margin: 0 auto; display: grid; gap: 16px; }
.guest .wrap { max-width: 560px; }
.brand-top { display: block; width: min(230px, 62%); height: auto; margin: 4px auto 6px; }
/* 7.36: misafir sayfasında dil seçici (Türkçe / English) */
.lang-bar { display: flex; justify-content: center; margin: 0 0 12px; }
.lang-bar .seg button { min-height: 32px; padding: 0 12px; font-size: .85rem; }
.muted { color: var(--muted); }
.small { font-size: .85rem; }
.num { font-variant-numeric: tabular-nums; }
.card { background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; box-shadow: var(--shadow-sm); }
.row { display: flex; gap: 8px 12px; flex-wrap: wrap; align-items: center; }
.row > * { min-width: 0; }
.between { justify-content: space-between; }
.grid { display: grid; gap: 16px; }
.grid.cols { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.login { max-width: 400px; width: calc(100% - 32px); margin: 9vh auto 0; padding: 26px 24px; }
.login .brand-top { margin-bottom: 4px; }
.ic { width: 18px; height: 18px; flex: 0 0 18px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* =====================================================================
   3) FORM VE DÜĞMELER
   ===================================================================== */
label { display: grid; gap: 4px; font-size: .85rem; color: var(--muted); font-weight: 500; }
input, select, textarea { font: inherit; color: var(--ink); background: var(--input-bg); border: 1px solid var(--line-strong); border-radius: 8px; padding: 8px 11px; width: 100%; min-height: 42px; }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: .8; }
textarea { line-height: 1.4; }
input[type=checkbox] { width: 20px; height: 20px; min-height: 0; accent-color: var(--accent); }
input[type=color] { padding: 2px; min-height: 42px; width: 64px; cursor: pointer; }
input:focus, select:focus, textarea:focus { outline: 0; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
button:focus-visible, a:focus-visible, .cal-scroll:focus-visible, summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
button { font: inherit; font-weight: 600; cursor: pointer; min-height: 42px; padding: 0 16px; border-radius: 8px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); white-space: nowrap; transition: background-color .12s, border-color .12s, color .12s, box-shadow .12s, transform .12s; }
button:hover:not(:disabled) { border-color: var(--ink-2); background: var(--hover); }
button.primary { background: var(--accent-bg); border-color: var(--accent-bg); color: var(--accent-ink); }
button.primary:hover:not(:disabled) { background: var(--accent-bg-hover); border-color: var(--accent-bg-hover); }
button.danger { color: var(--bad); }
button.danger:hover:not(:disabled) { border-color: var(--bad); background: var(--bad-soft); }
button.small { min-height: 34px; padding: 0 11px; font-size: .85rem; }
button.ghost { border-color: transparent; background: transparent; }
button.ghost:hover:not(:disabled) { background: var(--hover); border-color: transparent; }
button:disabled { opacity: .5; cursor: not-allowed; }
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 0 16px; border-radius: 8px; border: 1px solid var(--line-strong); background: var(--surface); color: var(--ink); font-weight: 600; text-decoration: none; white-space: nowrap; }
.btn:hover { border-color: var(--ink-2); background: var(--hover); }
.btn.small { min-height: 34px; padding: 0 11px; font-size: .85rem; }
a.btn.primary { background: var(--accent-bg); border-color: var(--accent-bg); color: var(--accent-ink); }
a.btn.primary:hover { background: var(--accent-bg-hover); border-color: var(--accent-bg-hover); }
.big-btn { min-height: 54px; font-size: 1.05rem; }
kbd { font: 600 .72rem/1 var(--font-body); color: var(--muted); background: var(--bg); border: 1px solid var(--line-strong); border-bottom-width: 2px; border-radius: 5px; padding: 3px 5px; white-space: nowrap; }
/* bölümlü seçici (Bugün/Yarın, 14/30/90 ...) */
.seg { display: inline-flex; border: 1px solid var(--line-strong); border-radius: 9px; padding: 2px; background: var(--surface); }
.seg button { min-height: 34px; border: 0; border-radius: 7px; padding: 0 14px; background: transparent; font-size: .9rem; color: var(--ink-2); }
.seg button:hover:not(:disabled) { border: 0; background: var(--hover); }
.seg button[aria-pressed="true"], .seg button[aria-pressed="true"]:hover:not(:disabled) { background: var(--second); color: var(--second-ink); }

/* =====================================================================
   4) YÖNETİM İSKELETİ
   ===================================================================== */
body.admin { padding: 0; }
.shell { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.side { position: sticky; top: 0; height: 100vh; overflow-y: auto; background: var(--surface); border-right: 1px solid var(--line); padding: 20px 12px 14px; display: flex; flex-direction: column; gap: 14px; }
.brand { padding: 2px 8px 10px; border-bottom: 1px solid var(--line); }
.brand img { display: block; width: 100%; max-width: 190px; height: auto; }
.nav { display: grid; gap: 2px; }
.nav-title { font-size: .72rem; font-weight: 700; color: var(--muted); padding: 12px 12px 4px; text-transform: uppercase; letter-spacing: .05em; }
.nav button { width: 100%; min-height: 40px; display: flex; align-items: center; gap: 11px; text-align: left; border: 0; border-radius: 8px; padding: 0 12px; background: transparent; color: var(--ink-2); font-weight: 600; font-size: .94rem; }
.nav button .ic { opacity: .8; }
.nav button:hover:not(:disabled) { background: var(--hover); border: 0; }
.nav button[aria-current="page"], .nav button[aria-current="page"]:hover:not(:disabled) { background: var(--accent-soft); color: var(--accent-text); }
.nav button[aria-current="page"] .ic { opacity: 1; stroke: var(--accent); }
.navbadge { margin-left: auto; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--accent-bg); color: var(--accent-ink); font-size: .74rem; font-weight: 700; display: inline-grid; place-items: center; }
.side-foot { margin-top: auto; display: grid; gap: 4px; border-top: 1px solid var(--line); padding-top: 12px; }
.me { padding: 0 8px 6px; display: grid; gap: 0; font-size: .85rem; }
.me strong { font-weight: 700; }
.me span { color: var(--muted); font-size: .78rem; }
.side-foot > button { width: 100%; text-align: left; border: 0; background: transparent; color: var(--ink-2); min-height: 36px; font-size: .88rem; }
.side-foot > button:hover:not(:disabled) { background: var(--hover); border: 0; }
/* tema seçici: Açık / Koyu / Oto */
.themesw { display: grid; grid-template-columns: repeat(3, 1fr); margin: 0 4px 6px; }
.themesw button { padding: 0 6px; font-size: .8rem; min-height: 30px; }
.searchbtn { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 40px; padding: 0 10px 0 12px; border: 1px solid var(--line-strong); border-radius: 9px; background: var(--bg); color: var(--muted); font-weight: 500; text-align: left; }
.searchbtn span { flex: 1; }
.searchbtn:hover:not(:disabled) { background: var(--surface); color: var(--ink); }
.main { min-width: 0; padding: 28px max(32px, env(safe-area-inset-right)) 64px max(32px, env(safe-area-inset-left)); display: grid; gap: 24px; align-content: start; max-width: 1280px; width: 100%; }
.topbar { display: none; }
.scrim { display: none; }
.page-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 6px 16px; }
.page-head h1 { font-size: 2.05rem; }
/* swoosh: maske ile çizilir, rengi temadan gelir */
.page-head h1::after { content: ''; display: block; width: 104px; height: 11px; margin-top: 6px; background: var(--ink); -webkit-mask: var(--swoosh) no-repeat left center / contain; mask: var(--swoosh) no-repeat left center / contain; }
.page-head .muted { font-size: .9rem; padding-bottom: 4px; }
@media (max-width: 900px) {
  .shell { display: block; }
  .side { position: fixed; z-index: 30; left: 0; top: 0; bottom: 0; width: 280px; transform: translateX(-102%); transition: transform .18s ease; padding-top: max(20px, env(safe-area-inset-top)); padding-bottom: calc(76px + env(safe-area-inset-bottom)); }
  .shell.open .side { transform: translateX(0); box-shadow: var(--shadow-lg); }
  .shell.open .scrim { display: block; position: fixed; inset: 0; z-index: 20; background: var(--overlay); }
  .topbar { display: flex; align-items: center; gap: 12px; min-height: 52px; position: sticky; top: 0; z-index: 10; background: var(--surface); border-bottom: 1px solid var(--line); padding: max(8px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) 8px max(14px, env(safe-area-inset-left)); }
  .topbar img { height: 30px; width: auto; }
  .topbar strong { font-family: var(--font-display); margin-left: auto; font-size: 1rem; }
  .main { padding: 20px max(16px, env(safe-area-inset-right)) calc(92px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); gap: 20px; }
  h1, .page-head h1 { font-size: 1.65rem; }
}
@media (prefers-reduced-motion: reduce) { .side, button { transition: none; } }

/* mobil alt sekme çubuğu */
.tabbar { display: none; }
@media (max-width: 900px) {
  .tabbar { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); position: fixed; z-index: 25; left: 0; right: 0; bottom: 0; background: var(--surface); border-top: 1px solid var(--line); box-shadow: var(--shadow-md); padding: 2px max(4px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(4px, env(safe-area-inset-left)); }
  .tabbar button { position: relative; min-height: 58px; padding: 0 2px; border: 0; border-radius: 0; background: transparent; color: var(--muted); display: grid; justify-items: center; align-content: center; gap: 3px; font-size: .72rem; font-weight: 600; }
  .tabbar button .ic { width: 23px; height: 23px; flex-basis: 23px; }
  .tabbar button span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
  .tabbar button:hover:not(:disabled) { background: transparent; border: 0; color: var(--ink); }
  .tabbar button[aria-current="page"], .tabbar button.on, .tabbar button[aria-current="page"]:hover:not(:disabled), .tabbar button.on:hover:not(:disabled) { color: var(--accent); }
  .tabbar button[aria-current="page"]::before, .tabbar button.on::before { content: ''; position: absolute; top: -2px; width: 30px; height: 3px; border-radius: 0 0 3px 3px; background: var(--accent); }
  .tabbar button:focus-visible { outline-offset: -4px; }
}

/* =====================================================================
   5) ORTAK PARÇALAR
   ===================================================================== */
.pill { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: .78rem; font-weight: 600; white-space: nowrap; }
.pill.wait { background: var(--wait-soft); color: var(--wait); }
.pill.ok { background: var(--ok-soft); color: var(--ok); }
.pill.off { background: var(--off-soft); color: var(--off); }
.pill.red { background: var(--accent-soft); color: var(--accent-text); }
.pill.ink { background: var(--second); color: var(--second-ink); }
.notice { padding: 12px 14px; border-radius: 8px; background: var(--accent-soft); color: var(--accent-text); margin: 0; }
.notice.bad { background: var(--wait-soft); color: var(--wait); }
.notice.ok { background: var(--ok-soft); color: var(--ok); }
code.iban { font-variant-numeric: tabular-nums; user-select: all; word-break: break-all; }
/* 7.23 misafir erken çıkış */
.early-lang { color: var(--muted); font-size: .82rem; margin: 0; }
.early-iban { text-transform: uppercase; letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.score { font-family: var(--font-display); font-size: 2.4rem; font-variant-numeric: tabular-nums; line-height: 1; margin: 0; }
.linkbox { word-break: break-all; font-size: .85rem; background: var(--bg); border: 1px dashed var(--line-strong); border-radius: 8px; padding: 8px 10px; }
.info-block { white-space: pre-wrap; overflow-wrap: anywhere; margin: 0; }
.tablewrap { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: .9rem; }
th, td { text-align: left; padding: 10px 12px; border-top: 1px solid var(--line); vertical-align: middle; }
th { color: var(--muted); font-weight: 600; font-size: .8rem; border-top: 0; white-space: nowrap; background: var(--surface-2); }
th:first-child { border-top-left-radius: 8px; } th:last-child { border-top-right-radius: 8px; }
td { font-variant-numeric: tabular-nums; }
tr.clickrow { cursor: pointer; }
tr.clickrow:hover td, tr.clickrow:focus-visible td { background: var(--hover); }
tr.clickrow:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.empty { text-align: center; padding: 28px 12px; color: var(--muted); display: grid; gap: 8px; justify-items: center; }
.dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: var(--c, var(--src-other)); margin-right: 5px; vertical-align: baseline; }
.sect { display: grid; gap: 4px; align-content: start; }
.sect-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding-bottom: 8px; border-bottom: 1.5px solid var(--ink); margin-bottom: 4px; }
.sect-head h2 { font-size: 1.08rem; }
.sect-head span { font-size: .82rem; color: var(--muted); }
.filters { display: grid; grid-template-columns: minmax(200px, 2fr) minmax(150px, 1.1fr) repeat(2, minmax(130px, 1fr)) auto; gap: 10px; align-items: end; }
@media (max-width: 900px) { .filters { grid-template-columns: 1fr 1fr; } .filters .grow { grid-column: 1 / -1; } }
/* villa rozeti: fotoğraf yoksa renkli baş harf */
.vbadge { --h: 10; flex: 0 0 auto; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: hsl(var(--h) 45% 88%); color: hsl(var(--h) 50% 26%); font: 700 .74rem/1 var(--font-display); letter-spacing: -.02em; overflow: hidden; }
.vbadge img { width: 100%; height: 100%; object-fit: cover; }
[data-theme="dark"] .vbadge { background: hsl(var(--h) 28% 26%); color: hsl(var(--h) 70% 84%); }

/* =====================================================================
   6) BÜYÜK SAYI KARTLARI (Bugün, Panel)
   ===================================================================== */
.statband { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-sm); overflow: hidden; }
.stat { padding: 16px 20px; display: grid; gap: 2px; border-left: 1px solid var(--line); align-content: start; }
.stat:first-child { border-left: 0; }
.stat b { font-family: var(--font-display); font-size: 2.15rem; line-height: 1.05; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.stat b small { font-size: 1rem; font-weight: 600; color: var(--muted); }
.stat span { font-size: .84rem; color: var(--muted); }
.stat em { font-style: normal; font-size: .78rem; color: var(--muted); }
.stat.hot b { color: var(--accent); }
.stat .bar { height: 6px; border-radius: 3px; background: var(--line); overflow: hidden; margin-top: 6px; }
.stat .bar i { display: block; height: 100%; background: var(--accent); border-radius: 3px; }
@media (max-width: 760px) {
  .statband { grid-template-columns: 1fr 1fr; }
  .stat { border-left: 0; border-top: 1px solid var(--line); }
  .stat:nth-child(even) { border-left: 1px solid var(--line); }
  .stat:nth-child(-n+2) { border-top: 0; }
  .stat b { font-size: 1.7rem; }
}

/* =====================================================================
   7) PANEL: ajanda, villa tahtası, dikkat listesi
   ===================================================================== */
.cols2 { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: 32px; align-items: start; }
@media (max-width: 1040px) { .cols2 { grid-template-columns: minmax(0, 1fr); } }
.vboard { display: grid; grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)); gap: 8px; }
.vt { border: 1px solid var(--line); border-radius: 10px; background: var(--surface); padding: 8px 10px; display: grid; gap: 1px; min-height: 58px; align-content: center; text-align: left; font-weight: 400; }
.vt b { font-family: var(--font-display); font-size: .95rem; }
.vt small { font-size: .76rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vt.occ { background: var(--accent-soft); border-color: var(--accent-line); }
.vt.occ small { color: var(--accent-text); }
.vt.in { border: 2px solid var(--accent); }
.vt.out { border-style: dashed; border-color: var(--ink-2); }
.vt.closed { background: repeating-linear-gradient(-45deg, var(--hatch-b) 0 6px, var(--surface) 6px 12px); }
.vlegend { display: flex; gap: 6px 14px; flex-wrap: wrap; font-size: .78rem; color: var(--muted); margin-top: 8px; }
.vlegend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; border: 1px solid var(--line-strong); vertical-align: -2px; margin-right: 5px; background: var(--surface); }
.vlegend i.occ { background: var(--accent-soft); border-color: var(--accent-line); }
.vlegend i.in { border: 2px solid var(--accent); }
.vlegend i.out { border: 1px dashed var(--ink-2); }
.attn { display: grid; gap: 0; }
.attn-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 10px; align-items: center; padding: 10px 4px; border-bottom: 1px solid var(--line); cursor: pointer; }
.attn-row:hover { background: var(--surface); }
.attn-row strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.attn-row small { color: var(--muted); grid-column: 1; }
.attn-row .amt { font-weight: 700; color: var(--accent-text); font-variant-numeric: tabular-nums; grid-row: 1 / span 2; grid-column: 2; }

/* =====================================================================
   8) GİRİŞ SAATLERİ, GÖREVLER, AYARLAR
   ===================================================================== */
.slots { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; }
.slot { min-height: 60px; border-radius: 10px; border: 1.5px solid var(--accent); background: var(--surface); color: var(--accent-text); font-variant-numeric: tabular-nums; font-size: 1.08rem; display: grid; gap: 1px; align-content: center; justify-items: center; line-height: 1.15; padding: 4px 6px; }
.slot small { font-size: .72rem; font-weight: 600; opacity: .85; }
.slot[aria-pressed="true"] { background: var(--accent-bg); color: var(--accent-ink); }
.slot:hover:not(:disabled):not([aria-pressed="true"]) { background: var(--accent-soft); color: var(--accent-text); border-color: var(--accent); }
.slot:disabled { border-color: var(--line); background: var(--off-soft); color: var(--muted); text-decoration: line-through; opacity: 1; }
.rail-wait { background: var(--surface); border: 1px dashed var(--line-strong); border-radius: 10px; padding: 10px 12px; display: flex; gap: 10px; align-items: center; justify-content: space-between; flex-wrap: wrap; }

.datebar { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; }
.datebar label { min-width: 150px; }
.progress { height: 8px; border-radius: 4px; background: var(--line); overflow: hidden; }
.progress i { display: block; height: 100%; background: var(--accent); }
.quick { display: grid; grid-template-columns: 110px minmax(160px, 2fr) repeat(3, minmax(120px, 1fr)) auto; gap: 8px; align-items: end; }
@media (max-width: 900px) { .quick { grid-template-columns: 1fr 1fr; } .quick .grow { grid-column: 1 / -1; } }
.todo { display: grid; grid-template-columns: 34px 64px minmax(0, 1fr) auto; gap: 8px 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.todo:first-of-type { border-top: 0; }
.todo > * { min-width: 0; }
.todo .when { font-variant-numeric: tabular-nums; font-weight: 700; font-family: var(--font-display); color: var(--ink); }
.todo .when.none { color: var(--muted); font-weight: 400; }
.todo .what { display: grid; gap: 2px; }
.todo .what strong { overflow-wrap: anywhere; }
.todo.done .what strong { text-decoration: line-through; color: var(--muted); font-weight: 600; }
.todo .acts { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.todo.edit { grid-template-columns: 1fr; }
@media (max-width: 640px) { .todo { grid-template-columns: 34px 52px minmax(0, 1fr); } .todo .acts { grid-column: 2 / -1; justify-content: flex-start; } }
.check { width: 30px; height: 30px; min-height: 0; padding: 0; border-radius: 50%; border: 2px solid var(--line-strong); background: var(--surface); position: relative; }
.check:hover:not(:disabled) { border-color: var(--accent); background: var(--surface); }
.check[aria-pressed="true"] { background: var(--accent-bg); border-color: var(--accent-bg); }
.check[aria-pressed="true"]::after { content: ''; position: absolute; left: 9px; top: 4px; width: 7px; height: 13px; border: solid var(--accent-ink); border-width: 0 3px 3px 0; transform: rotate(45deg); }
.slot-row { display: grid; grid-template-columns: 120px minmax(140px, 1fr) auto auto auto; gap: 8px; align-items: end; padding: 10px 0; border-top: 1px solid var(--line); }
.slot-row:first-of-type { border-top: 0; }
.slot-row .chk { display: flex; align-items: center; gap: 6px; min-height: 42px; color: var(--ink); }
@media (max-width: 640px) { .slot-row { grid-template-columns: 1fr 1fr; } .slot-row .grow { grid-column: 1 / -1; } }
.task { display: grid; grid-template-columns: 1fr auto; gap: 10px 16px; align-items: start; padding: 12px 0; border-top: 1px solid var(--line); }
.task:first-of-type { border-top: 0; }
.task > * { min-width: 0; }
.task .vname { display: flex; align-items: center; gap: 10px; }
@media (max-width: 560px) { .task { grid-template-columns: 1fr; } }

/* =====================================================================
   9) BUGÜN: giriş/çıkış kartları
   ===================================================================== */
.dgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 12px; margin-top: 8px; }
.dcard { background: var(--surface); border: 1px solid var(--line); border-left: 4px solid var(--c, var(--accent)); border-radius: 12px; padding: 14px 14px 12px; display: grid; gap: 10px; align-content: start; box-shadow: var(--shadow-sm); }
.dcard.done { background: var(--surface-2); }
.dcard.done .dcard-name strong { color: var(--muted); }
.dcard-top { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; align-items: center; }
.dcard-time { font-family: var(--font-display); font-weight: 700; font-size: 1.35rem; font-variant-numeric: tabular-nums; line-height: 1; }
.dcard-time.none, .dcard-time.out { font-family: var(--font-body); font-size: .8rem; font-weight: 600; color: var(--wait); background: var(--wait-soft); border-radius: 6px; padding: 4px 7px; }
.dcard-time.out { color: var(--off); background: var(--off-soft); }
.dcard-name { display: grid; gap: 1px; text-align: left; border: 0; background: transparent; padding: 0; min-height: 0; font-weight: 400; white-space: normal; }
.dcard-name:hover:not(:disabled) { background: transparent; border: 0; }
.dcard-name:hover strong { text-decoration: underline; text-underline-offset: 3px; }
.dcard-name strong { font-size: 1.05rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dcard-name small { color: var(--muted); font-size: .84rem; }
.dcard-tags { grid-column: 1 / -1; display: flex; gap: 6px 10px; flex-wrap: wrap; align-items: center; }
.dcard-note { margin: 0; font-size: .84rem; color: var(--wait); background: var(--wait-soft); border-radius: 8px; padding: 6px 10px; }
.dcard-acts { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; border-top: 1px solid var(--line); padding-top: 10px; }
.reqbadge { min-height: 34px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--accent-line); background: var(--accent-soft); color: var(--accent-text); font-size: .86rem; }
.reqbadge:hover:not(:disabled) { background: var(--accent-soft); border-color: var(--accent); }

/* =====================================================================
   10) PENCERE (modal), hızlı form, özet çubuğu, sekmeler
   ===================================================================== */
body.modal-open { overflow: hidden; }
.modal-back { position: fixed; inset: 0; z-index: 50; background: var(--overlay); display: grid; place-items: start center; padding: 24px 12px; overflow: auto; }
.modal { width: min(880px, 100%); background: var(--surface); border-radius: 12px; padding: 18px; display: grid; gap: 14px; align-content: start; box-shadow: var(--shadow-lg); }
.modal > [role=status]:empty { display: none; }
.modal-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; position: sticky; top: -24px; background: var(--surface); padding: 4px 0; z-index: 3; }
.modal-head.rich { align-items: flex-start; border-bottom: 1px solid var(--line); margin: 0 -18px; padding: 6px 18px 0; }
.modal-foot { position: sticky; bottom: -24px; background: var(--surface); padding: 10px 0 12px; border-top: 1px solid var(--line); z-index: 3; }
.sec { border: 1px solid var(--line); border-radius: 10px; padding: 12px; display: grid; gap: 12px; margin: 0; min-width: 0; }
.sec legend { font-family: var(--font-display); font-weight: 700; padding: 0 6px; color: var(--accent-text); }
.lbl { display: block; font-size: .85rem; color: var(--muted); margin-bottom: 4px; }
.big-num { font-size: 1.4rem; font-weight: 700; font-family: var(--font-display); font-variant-numeric: tabular-nums; }
.gresults { display: grid; gap: 6px; }
.gresults:empty { display: none; }
.gres { text-align: left; }
.sumtab th, .kart-tab th { text-align: left; font-weight: 600; padding-right: 14px; }
.sumtab tr.owe td { color: var(--accent-text); font-weight: 700; }
.sumtab tr.okrow td { color: var(--ok); font-weight: 700; }
/* 7.28: Giriş / Çıkış ekranları */
.kart-tab th { color: var(--muted); font-weight: 500; width: 40%; }
.kart-tab tr.okrow th, .kart-tab tr.okrow td { color: var(--ink); font-weight: 700; border-top: 1px solid var(--line); }
.kart-op .money-row input { min-width: 0; }
.kur-line { font-size: .92rem; }
.iade-big { display: grid; gap: 2px; }
.iade-big strong { font-family: var(--font-display); font-size: 1.6rem; line-height: 1.1; color: var(--ok); font-variant-numeric: tabular-nums; }
.iade-big.neg strong { color: var(--accent-text); }
.cikis-sonuc { display: grid; gap: 6px; }
tr.voided td { text-decoration: line-through; color: var(--muted); }
tr.voided td:nth-child(5), tr.voided td:last-child { text-decoration: none; }
.modal .grid.cols { grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); }
.quick-res { display: grid; gap: 14px; }
.quick-res > p { margin: 0; }
.quick-res > p:empty { display: none; }
.modal .grid.qcols { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.quick-res input, .quick-res select { min-height: 46px; font-size: 1.02rem; }
.quick-res input[name=total] { font-weight: 700; }
.more { border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.more > .more-h { margin: 0; padding: 12px 14px; font-size: 1rem; font-weight: 700; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.more > .more-h small { font-weight: 400; color: var(--muted); font-size: .82rem; }
.more > .grid { padding: 0 12px 12px; }
.more .sec { background: var(--surface); }
.rsum { display: grid; gap: 6px; min-width: 0; flex: 1; }
.rsum-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.rsum-top h2 { font-size: 1.35rem; }
.rsum-tags { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.rsum-facts { margin: 0; color: var(--ink-2); font-size: .9rem; }
.rsum-facts .dot { margin-left: 2px; }
.rsum-acts { display: flex; flex-wrap: wrap; gap: 6px; }
.rtabs { display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; margin-top: 4px; padding-right: 24px; -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent); }
.rtabs::-webkit-scrollbar { display: none; }
.rtabs [role=tab] { position: relative; min-height: 42px; padding: 0 14px; border: 0; border-radius: 0; background: transparent; color: var(--muted); font-weight: 600; border-bottom: 3px solid transparent; }
.rtabs [role=tab]:hover:not(:disabled) { background: transparent; border: 0; border-bottom: 3px solid var(--line-strong); color: var(--ink); }
.rtabs [role=tab][aria-selected="true"], .rtabs [role=tab][aria-selected="true"]:hover:not(:disabled) { color: var(--accent-text); border-bottom: 3px solid var(--accent); }
.rtabs [role=tab].due::after { content: ''; position: absolute; top: 9px; right: 4px; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.rtabs [role=tab]:focus-visible { outline-offset: -3px; }
.rpanel { display: grid; gap: 12px; }
@media (max-width: 640px) {
  .modal-back { padding: 0; }
  .modal { border-radius: 0; min-height: 100%; }
  .modal-head { top: 0; }
  .modal-foot { bottom: 0; padding-bottom: max(10px, env(safe-area-inset-bottom)); }
  .modal-foot button { padding: 0 12px; }
  .modal-foot .danger { font-size: .84rem; padding: 0 10px; }
  .modal .grid.cols { grid-template-columns: repeat(auto-fill, minmax(135px, 1fr)); gap: 12px 10px; }
  .rsum-top h2 { font-size: 1.15rem; }
  .rsum-facts { font-size: .84rem; }
  .rtabs [role=tab] { padding: 0 10px; font-size: .9rem; }
}

/* =====================================================================
   11) GENEL ARAMA (Ctrl+K), BİLDİRİMLER, İSKELET
   ===================================================================== */
.cmdk-back { position: fixed; inset: 0; z-index: 60; background: var(--overlay); display: grid; justify-items: center; align-items: start; padding: 10vh 12px 12px; }
.cmdk { width: min(640px, 100%); max-height: min(560px, 80vh); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; background: var(--surface); border-radius: 14px; box-shadow: var(--shadow-lg); overflow: hidden; }
.cmdk-head { display: flex; align-items: center; gap: 10px; padding: 8px 10px 8px 16px; border-bottom: 1px solid var(--line); color: var(--muted); }
.cmdk-head .ic { width: 20px; height: 20px; flex-basis: 20px; }
.cmdk-input { border: 0; min-height: 48px; padding: 0; font-size: 1.08rem; box-shadow: none; background: transparent; }
.cmdk-input:focus { box-shadow: none; }
.cmdk-input::-webkit-search-cancel-button { display: none; }
.cmdk-list { overflow-y: auto; padding: 6px 8px 10px; overscroll-behavior: contain; }
.cmdk-group { font-size: .74rem; font-weight: 700; color: var(--muted); padding: 10px 10px 4px; text-transform: uppercase; letter-spacing: .04em; }
.cmdk-item { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 52px; padding: 6px 10px; border: 0; border-radius: 9px; background: transparent; text-align: left; font-weight: 400; white-space: normal; }
.cmdk-item:hover:not(:disabled) { border: 0; background: transparent; }
.cmdk-item[aria-selected="true"], .cmdk-item[aria-selected="true"]:hover:not(:disabled) { background: var(--accent-soft); }
.cmdk-item .ic { color: var(--muted); }
.cmdk-item .dot { margin: 0 4px; flex: 0 0 10px; width: 10px; height: 10px; }
.cmdk-main { display: grid; gap: 0; min-width: 0; flex: 1; }
.cmdk-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-main small { color: var(--muted); font-size: .82rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cmdk-empty { color: var(--muted); padding: 18px 10px; margin: 0; }
.cmdk-foot { display: flex; gap: 16px; flex-wrap: wrap; padding: 9px 16px; border-top: 1px solid var(--line); font-size: .78rem; color: var(--muted); background: var(--surface-2); }
.cmdk-foot kbd { margin-right: 2px; }
@media (max-width: 640px) { .cmdk-back { padding: 0; } .cmdk { border-radius: 0; max-height: 100%; height: 100%; width: 100%; } .cmdk-foot { display: none; } }
.toasts { position: fixed; z-index: 70; right: max(20px, env(safe-area-inset-right)); bottom: max(20px, env(safe-area-inset-bottom)); display: grid; gap: 8px; width: min(400px, calc(100vw - 32px)); pointer-events: none; }
.toast { pointer-events: auto; display: flex; align-items: center; gap: 4px 10px; padding: 10px 8px 10px 14px; border-radius: 10px; background: var(--toast-bg); color: var(--toast-ink); font-size: .92rem; font-weight: 500; box-shadow: var(--shadow-lg); animation: toast-in .22s ease-out; }
.toast::before { content: ''; flex: 0 0 9px; width: 9px; height: 9px; border-radius: 50%; background: #3ddc84; }
.toast.bad { background: var(--accent-bg); color: var(--accent-ink); }
.toast.bad::before { background: var(--accent-ink); }
.toast-text { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.toast button { min-height: 34px; border: 0; background: transparent; color: inherit; padding: 0 10px; }
.toast button:hover:not(:disabled) { background: rgba(127, 127, 127, .2); border: 0; }
.toast .toast-act { text-decoration: underline; text-underline-offset: 3px; font-weight: 700; }
.toast .toast-x { font-size: 1.25rem; line-height: 1; padding: 0 9px; opacity: .8; }
.toast button:focus-visible { outline-color: currentColor; }
@keyframes toast-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (max-width: 900px) { .toasts { left: 16px; right: 16px; width: auto; bottom: calc(72px + env(safe-area-inset-bottom)); } }
.sk { display: block; border-radius: 6px; max-width: 100%; background: linear-gradient(90deg, var(--sk-a) 25%, var(--sk-b) 40%, var(--sk-a) 60%); background-size: 300% 100%; animation: sk-shine 1.3s ease-in-out infinite; }
.skel .side .sk { margin: 0; }
.sk-card { border-left-color: var(--line-strong); gap: 12px; }
.sk-card .row { flex-wrap: nowrap; }
@keyframes sk-shine { from { background-position: 100% 0; } to { background-position: 0 0; } }
@media (prefers-reduced-motion: reduce) { .sk, .toast { animation: none; } }

/* =====================================================================
   12) TAKVİM: zaman çizelgesi. Dolgu = durum (tutar varsa) ya da kaynak (tutar yoksa); sol şerit = kaynak
   ===================================================================== */
.cal-view { gap: 12px; }
.cal-bar { display: grid; gap: 8px; padding: 10px 12px; }
.cal-nav { gap: 8px; }
.cal-bar select, .cal-bar input { width: auto; min-height: 36px; padding: 5px 10px; font-size: .9rem; }
.cal-bar button.small { min-height: 36px; }
.cal-bar .seg button { min-height: 30px; padding: 0 11px; font-size: .86rem; }
.cal-bar input[type=search] { flex: 0 1 170px; min-width: 120px; }
.cal-bar .chk { display: inline-flex; align-items: center; gap: 6px; color: var(--ink); font-size: .88rem; }
.cal-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; padding-top: 8px; border-top: 1px solid var(--line); }
.cal-sum { display: flex; flex-wrap: wrap; gap: 4px 16px; font-size: .86rem; color: var(--muted); }
.cal-sum span { white-space: nowrap; }
.cal-sum b { font-family: var(--font-display); font-size: 1.05rem; color: var(--ink); font-variant-numeric: tabular-nums; margin-right: 3px; }
.cal-sum .hot b { color: var(--accent-text); }
.cal-help { font-size: .8rem; color: var(--muted); flex: 1 1 200px; }
.cal-acts { display: inline-flex; gap: 8px; margin-left: auto; }
/* "Görünüm" menüsü: çizelge/liste, sık/geniş, iptaller, tarihe git */
.cal-menu { position: relative; }
.cal-menu > summary { list-style: none; display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface); font-weight: 600; font-size: .86rem; cursor: pointer; color: var(--ink); }
.cal-menu > summary::-webkit-details-marker { display: none; }
.cal-menu > summary::after { content: '▾'; font-size: .7rem; color: var(--muted); }
.cal-menu[open] > summary { border-color: var(--ink-2); }
.cal-menu-pop { position: absolute; z-index: 20; right: 0; top: calc(100% + 6px); display: grid; gap: 10px; min-width: 240px; padding: 12px; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; box-shadow: var(--shadow-lg); }
.cal-menu-pop label { color: var(--ink-2); }
.cal-scroll { overflow: auto; max-height: 72vh; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; box-shadow: var(--shadow-sm); -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
.cal-inner { position: relative; --rowh: 48px; --barh: 34px; --barfs: .8rem; }
.cal-scroll.dense .cal-inner { --rowh: 38px; --barh: 26px; --barfs: .78rem; }
.cal-head, .cal-rowline { display: flex; }
.cal-head { position: sticky; top: 0; z-index: 6; background: var(--surface); }
.cal-head2 { top: 24px; }
.cal-name { position: sticky; left: 0; z-index: 7; flex: 0 0 var(--namew, 168px); width: var(--namew, 168px); background: var(--surface); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 0 10px; display: flex; align-items: center; gap: 8px; min-width: 0; font-size: .86rem; }
.cal-name .vbadge { width: 24px; height: 24px; font-size: .64rem; }
.cal-vn { display: grid; gap: 2px; min-width: 0; flex: 1; }
.cal-vn strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 700; line-height: 1.1; }
.cal-occ { display: flex; align-items: center; gap: 6px; font-size: .68rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.cal-occ i { flex: 1; height: 4px; border-radius: 2px; background: var(--line); overflow: hidden; }
.cal-occ i b { display: block; height: 100%; background: var(--accent); border-radius: 2px; }
.cal-head .cal-name { font-weight: 600; color: var(--muted); }
.cal-track { position: relative; flex: 0 0 auto; }
.cal-mtrack { height: 24px; border-bottom: 1px solid var(--line); }
.cal-month { position: absolute; top: 0; height: 24px; padding: 0 8px; line-height: 24px; font-size: .76rem; font-weight: 700; color: var(--ink-2); border-left: 1px solid var(--line); white-space: nowrap; overflow: hidden; }
.cal-dtrack { display: flex; height: 40px; border-bottom: 1px solid var(--line-strong); }
.cal-day { flex: 0 0 auto; display: grid; place-content: center; text-align: center; line-height: 1.1; border-left: 1px solid var(--line); font-size: .84rem; }
.cal-day b { font-variant-numeric: tabular-nums; }
.cal-day small { color: var(--muted); font-size: .64rem; }
.cal-day.we { background: var(--cal-we); }
.cal-day.today { background: var(--cal-today); box-shadow: inset 0 -3px 0 var(--accent); color: var(--accent-text); }
.cal-day.today small { color: var(--accent-text); }
.cal-day.first { border-left: 2px solid var(--ink-2); }
.cal-bg { position: absolute; bottom: 0; pointer-events: none; z-index: 0; }
.cal-we { position: absolute; top: 0; bottom: 0; background: var(--cal-we); }
.cal-todaycol { position: absolute; top: 0; bottom: 0; background: var(--cal-today); }
.cal-now { position: absolute; top: 0; bottom: 0; width: 2px; margin-left: -1px; background: var(--accent); z-index: 3; }
.cal-body { position: relative; z-index: 1; height: var(--rowh); border-bottom: 1px solid var(--line); background-image: repeating-linear-gradient(to right, transparent 0, transparent calc(var(--w) - 1px), var(--line) calc(var(--w) - 1px), var(--line) var(--w)); cursor: cell; }
.cal-rowline:hover .cal-name { background: var(--surface-2); }
/* boş hücre: "+" ipucu */
.cal-hover { position: absolute; top: 3px; bottom: 3px; z-index: 1; display: grid; place-items: center; border: 1.5px dashed var(--line-strong); border-radius: 6px; color: var(--muted); font-weight: 700; font-size: .9rem; pointer-events: none; }
/* çubuk */
.cal-bk { position: absolute; top: calc((var(--rowh) - var(--barh)) / 2); height: var(--barh); min-height: 0; padding: 0 8px 0 5px; display: flex; align-items: center; gap: 5px; border: 0; border-left: 4px solid var(--src); border-radius: 7px; font: 600 var(--barfs)/1 var(--font-body); text-align: left; white-space: nowrap; overflow: hidden; cursor: pointer; z-index: 2; background: var(--bk-bg); color: var(--bk-ink); box-shadow: var(--shadow-sm); transition: transform .12s, box-shadow .12s; }
.cal-bk:hover:not(:disabled) { background: var(--bk-bg); color: var(--bk-ink); border-color: var(--src); transform: translateY(-1px); box-shadow: var(--shadow-md); z-index: 4; }
.cal-bk:focus-visible { outline: 3px solid var(--focus); outline-offset: 1px; z-index: 4; }
.cal-bk.cut-l { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cal-bk.cut-r { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.cal-lab { overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.cal-ic { flex: 0 0 auto; font-size: .8rem; width: 13px; text-align: center; }
.cal-src { flex: 0 0 16px; width: 16px; height: 16px; border-radius: 4px; display: inline-grid; place-items: center; background: var(--src); color: #fff; font: 800 .6rem/1 var(--font-body); font-style: normal; }
/* kaynak renkleri */
.src-airbnb { --src: var(--src-airbnb); --src-fill: var(--src-airbnb-fill); --src-ink: var(--src-airbnb-ink); }
.src-booking { --src: var(--src-booking); --src-fill: var(--src-booking-fill); --src-ink: var(--src-booking-ink); }
.src-direkt { --src: var(--src-direkt); --src-fill: var(--src-direkt-fill); --src-ink: var(--src-direkt-ink); }
.src-whatsapp { --src: var(--src-whatsapp); --src-fill: var(--src-whatsapp-fill); --src-ink: var(--src-whatsapp-ink); }
.src-bedbooking { --src: var(--src-bedbooking); --src-fill: var(--src-bedbooking-fill); --src-ink: var(--src-bedbooking-ink); }
.src-other, .cal-bk:not([class*="src-"]) { --src: var(--src-other); --src-fill: var(--src-other-fill); --src-ink: var(--src-other-ink); }
/* durum renkleri (tutar girilmiş rezervasyon) */
.st-paid { --bk-bg: var(--st-paid); --bk-ink: var(--st-paid-ink); }
.st-due { --bk-bg: var(--st-due); --bk-ink: var(--st-due-ink); }
.st-late { --bk-bg: var(--st-late); --bk-ink: var(--st-late-ink); }
.st-opt { --bk-bg: var(--st-opt); --bk-ink: var(--st-opt-ink); }
/* tutar girilmemiş (çoğu BedBooking kaydı): kaynağa göre açık dolgu + koyu ince kenar; "–" soluk */
.st-noprice { --bk-bg: var(--src-fill, var(--off-soft)); --bk-ink: var(--src-ink, var(--ink-2)); }
.st-cancel { --bk-bg: repeating-linear-gradient(-45deg, var(--hatch-a) 0 5px, var(--hatch-b) 5px 10px); --bk-ink: var(--muted); }
.st-paid, .st-due, .st-late, .st-opt, .st-noprice, .st-cancel { background: var(--bk-bg); color: var(--bk-ink); }
.cal-bk.st-noprice { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--src) 55%, transparent); }
.cal-bk.st-noprice .cal-ic { opacity: .45; font-size: .7rem; }
.cal-bk.st-opt { outline: 1.5px dashed var(--st-opt-line); outline-offset: -2px; box-shadow: none; }
.cal-bk.st-cancel { top: auto; bottom: 2px; height: 10px; padding: 0 4px; font-size: .58rem; box-shadow: none; z-index: 1; }
.cal-bk.st-cancel .cal-src, .cal-bk.st-cancel .cal-ic { display: none; }
.cal-bk.past:not(:hover) { opacity: .7; }
.cal-bk.dim { opacity: .2; }
.cal-bk.hit { box-shadow: 0 0 0 2px var(--focus), var(--shadow-md); z-index: 3; }
.cal-prog { position: absolute; left: 0; top: 0; height: 3px; background: currentColor; opacity: .7; border-radius: 0 2px 2px 0; }
.cal-bk.cal-closed, .cal-bk.cal-closed:hover:not(:disabled) { top: 4px; height: calc(var(--rowh) - 8px); border-left: 0; padding: 0 8px; background: repeating-linear-gradient(-45deg, var(--hatch-a) 0 6px, var(--hatch-b) 6px 12px); color: var(--ink-2); box-shadow: none; cursor: pointer; z-index: 1; transform: none; }
.cal-sel { position: absolute; top: 3px; bottom: 3px; z-index: 4; border: 2px dashed var(--accent); border-radius: 7px; background: var(--accent-soft); color: var(--accent-text); font: 700 .74rem/1 var(--font-body); display: grid; place-items: center; pointer-events: none; overflow: hidden; white-space: nowrap; }
.cal-tip { position: fixed; z-index: 80; display: grid; gap: 2px; max-width: 300px; padding: 10px 12px; border-radius: 10px; background: var(--toast-bg); color: var(--toast-ink); font-size: .82rem; line-height: 1.35; box-shadow: var(--shadow-lg); pointer-events: none; }
.cal-tip strong { font-size: .92rem; }
.cal-tip .tip-st { margin-top: 4px; justify-self: start; padding: 2px 8px; border-radius: 999px; font-weight: 600; font-size: .76rem; }
/* renk açıklaması: tek satır, daraltılabilir */
.cal-legend { position: sticky; bottom: 0; z-index: 8; display: flex; align-items: center; gap: 4px 14px; padding: 6px 10px; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; box-shadow: var(--shadow-md); font-size: .76rem; color: var(--ink-2); overflow-x: auto; scrollbar-width: none; white-space: nowrap; }
.cal-legend::-webkit-scrollbar { display: none; }
.cal-legend.closed { display: inline-flex; justify-self: start; }
.lg-toggle { min-height: 28px; padding: 0 8px; font-size: .76rem; flex: 0 0 auto; }
.lg-group { display: flex; align-items: center; gap: 4px 10px; flex-wrap: nowrap; }
.lg-group strong { color: var(--muted); font-weight: 700; }
.lg { display: inline-flex; align-items: center; gap: 5px; }
.lg-sw { display: inline-grid; place-items: center; width: 22px; height: 16px; border-radius: 4px; font-style: normal; font-size: .68rem; font-weight: 700; }
.lg-sw.st-opt { outline: 1.5px dashed var(--st-opt-line); outline-offset: -1.5px; }
.lg-sw.lg-src { width: 26px; border-left: 4px solid var(--src); background: var(--src-fill); color: var(--src-ink); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--src) 55%, transparent); }
.lg-closed { background: repeating-linear-gradient(-45deg, var(--hatch-a) 0 3px, var(--hatch-b) 3px 6px); }
/* liste görünümü */
.cal-list { display: grid; gap: 4px; padding: 8px 12px; }
.cal-lday { display: grid; gap: 0; padding: 8px 0; border-bottom: 1px solid var(--line); }
.cal-lday:last-child { border-bottom: 0; }
.cal-lday h3 { font-size: .95rem; padding: 4px 0 6px; }
.cal-lday.today h3 { color: var(--accent-text); }
.cal-litem { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 52px; padding: 6px 4px; border: 0; border-radius: 8px; background: transparent; text-align: left; font-weight: 400; white-space: normal; }
.cal-litem:hover:not(:disabled) { background: var(--hover); border: 0; }
.cal-lkind { flex: 0 0 52px; font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; }
.cal-lkind.in { color: var(--ok); }
.cal-lkind.out { color: var(--off); }
.cal-lmain { display: grid; flex: 1; min-width: 0; }
.cal-lmain strong { white-space: normal; }
.cal-lmain small { color: var(--muted); font-size: .8rem; }
.cal-lwarn { color: var(--accent-text); font-weight: 700; }
@media (max-width: 900px) { .cal-legend { bottom: calc(62px + env(safe-area-inset-bottom)); } }

/* =====================================================================
   13) MİSAFİR İSTEKLERİ
   ===================================================================== */
.req { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 8px 14px; align-items: center; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; box-shadow: var(--shadow-sm); }
.req.new { border-left: 4px solid var(--accent); }
.req:not(.open) { background: var(--surface-2); }
.req:not(.open) .req-main strong { color: var(--muted); }
.req-ic { font-size: 1.6rem; line-height: 1; text-align: center; }
.req-main { display: grid; gap: 2px; min-width: 0; }
.req-main small { color: var(--muted); font-size: .84rem; }
.req-note { margin: 4px 0 0; font-size: .92rem; color: var(--ink-2); overflow-wrap: anywhere; }
.req-acts { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 640px) { .req { grid-template-columns: 36px minmax(0, 1fr); } .req-acts { grid-column: 2; justify-content: flex-start; } }
/* misafir sayfası */
.reqgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; }
.reqbtn { min-height: 72px; display: grid; justify-items: center; align-content: center; gap: 4px; border: 1.5px solid var(--line-strong); border-radius: 12px; background: var(--surface); font-size: .95rem; white-space: normal; }
.reqbtn span { font-size: 1.6rem; line-height: 1; }
/* 7.29: misafir kartı */
.reqbtn { font-size: .88rem; text-align: center; }
.notice.warn { background: var(--wait-soft); color: var(--ink); border-left: 4px solid var(--wait); }
.misafir-uyari { line-height: 1.5; }
.req-saat { background: var(--surface-2); color: var(--ink-2); font-size: .9rem; line-height: 1.45; }
.map-frame { border-radius: 12px; overflow: hidden; border: 1px solid var(--line); aspect-ratio: 4 / 3; background: var(--surface-2); }
.map-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.konum-not { background: var(--accent-soft); color: var(--ink); }
.konum-not strong { color: var(--accent-text); }
.kv-row { display: grid; grid-template-columns: 80px 1fr auto; gap: 8px; align-items: center; }
.kv-val { font-size: 1.05rem; word-break: break-all; }
.onizleme-not { background: var(--surface-2); color: var(--ink-2); }
.kart-onizleme { width: 100%; height: 640px; border: 1px solid var(--line); border-radius: 12px; background: var(--bg); }
.reqbtn[aria-pressed="true"], .reqbtn[aria-pressed="true"]:hover:not(:disabled) { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-text); }
.myreqs { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.myreqs li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 0; border-top: 1px solid var(--line); }
.myreqs li:first-child { border-top: 0; }
.myreqs small { display: block; color: var(--muted); }
/* araç çubuğu 1440 px'te tek satıra sığsın */
.cal-nav select { max-width: 150px; }
.cal-legend { gap: 4px 12px; font-size: .74rem; }
.lg-group { gap: 4px 8px; }
.lg-sw { width: 20px; }

/* =====================================================================
   14) DOKUNMATİK SEÇİM (her genişlikte) + TELEFON TAKVİMİ (≤ 700 px, Sürüm 7.11)
   ===================================================================== */
.cal-body.picking { background-color: var(--accent-soft); }
.cal-rowline.picking .cal-name { color: var(--accent-text); box-shadow: inset 3px 0 0 var(--accent); }
.cal-pick { position: absolute; top: 3px; bottom: 3px; z-index: 3; border: 2px solid var(--accent); border-radius: 7px; background: color-mix(in srgb, var(--accent) 14%, transparent); pointer-events: none; }
.cal-pick.range { border-style: dashed; }
.cal-pickbar { position: fixed; z-index: 40; left: 50%; transform: translateX(-50%); bottom: 16px; width: min(560px, calc(100vw - 16px)); display: flex; align-items: center; gap: 8px; padding: 10px 10px 10px 14px; border-radius: 12px; background: var(--toast-bg); color: var(--toast-ink); box-shadow: var(--shadow-lg); }
.cal-pickbar.err { background: var(--accent-bg); color: var(--accent-ink); }
.cal-pick-txt { display: grid; gap: 1px; flex: 1; min-width: 0; }
.cal-pick-txt strong { font-variant-numeric: tabular-nums; }
.cal-pick-txt small { opacity: .85; font-size: .8rem; }
.cal-pickbar button { min-height: 40px; }
.cal-pickbar button.ghost { color: inherit; font-size: 1.1rem; }
.cal-pickbar button.ghost:hover:not(:disabled) { background: rgba(127, 127, 127, .2); }
.cal-pickbar button.primary { background: var(--accent-bg); border-color: var(--toast-ink); }
.cal-pickbar.err button.primary { display: none; }
@media (max-width: 900px) { .cal-pickbar { bottom: calc(68px + env(safe-area-inset-bottom)); } }

@media (max-width: 700px) {
  /* başlık ve açıklama yok; takvim kenardan kenara */
  .main.tab-takvim { padding: 0 0 calc(70px + env(safe-area-inset-bottom)); gap: 0; }
  .main.tab-takvim .page-head { display: none; }
  .cal-view.mobile { gap: 0; }
  /* tek ince araç satırı (BedBooking uygulaması gibi) */
  .cal-mbar { position: sticky; top: 52px; z-index: 9; display: flex; align-items: center; gap: 6px; padding: 6px 8px; background: var(--surface); border-bottom: 1px solid var(--line); }
  .cal-mbar .cal-arrows { flex-wrap: nowrap; }
  .cal-mbar button.small { min-height: 40px; min-width: 40px; padding: 0 10px; }
  .cal-mbar button.icon { padding: 0; width: 40px; display: inline-grid; place-items: center; position: relative; font-size: 1.3rem; line-height: 1; }
  .cal-mbar button.icon.on { border-color: var(--accent); color: var(--accent-text); }
  .cal-mbar .navbadge { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; font-size: .66rem; padding: 0 4px; }
  .cal-month-sel { flex: 1 1 auto; min-width: 0; width: auto; min-height: 40px; padding: 0 22px 0 6px; border: 0; background: transparent; font-family: var(--font-display); font-weight: 700; font-size: 1.02rem; color: var(--ink); text-overflow: ellipsis; }
  .cal-msearch { padding: 6px 8px; background: var(--surface); border-bottom: 1px solid var(--line); }
  /* takvim ekranın geri kalanını doldurur: üst çubuk 52 + araç 52 + alt sekme 62 */
  .cal-view.mobile .cal-scroll { max-height: calc(100vh - 170px - env(safe-area-inset-bottom)); max-height: calc(100dvh - 170px - env(safe-area-inset-bottom)); border-radius: 0; border-left: 0; border-right: 0; box-shadow: none; scroll-snap-type: x proximity; scroll-padding-left: 76px; }
  .cal-view.mobile .cal-day { scroll-snap-align: start; }
  .cal-view.mobile .cal-list { border-radius: 0; border-left: 0; border-right: 0; }
  .cal-inner, .cal-scroll.dense .cal-inner { --rowh: 44px; --barh: 34px; --barfs: 13px; }   /* dokunma hedefi */
  .cal-view.mobile .cal-bk { font-weight: 700; padding: 0 6px 0 5px; gap: 4px; }
  .cal-view.mobile .cal-src { display: none; }   /* kaynak sol şeritte; ad için yer kalsın */
  .cal-view.mobile .cal-body { background-image: repeating-linear-gradient(to right, transparent 0, transparent calc(var(--w) - 1px), var(--line-strong) calc(var(--w) - 1px), var(--line-strong) var(--w)); }   /* yarım gün belirgin */
  .cal-name { padding: 0 6px 0 8px; gap: 0; font-size: .8rem; }
  .cal-name .vbadge, .cal-occ { display: none; }
  .cal-vn strong { white-space: normal; overflow-wrap: anywhere; line-height: 1.15; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .cal-cap { color: var(--muted); font-size: .68rem; }
  .cal-day b { font-size: .95rem; }
  .cal-day.today { background: var(--accent-bg); color: var(--accent-ink); box-shadow: none; }
  .cal-day.today small { color: var(--accent-ink); }
  /* alttan açılan Filtre sayfası */
  .cal-sheet-back { position: fixed; inset: 0; z-index: 45; background: var(--overlay); }
  .cal-sheet { position: absolute; left: 0; right: 0; bottom: 0; max-height: 86vh; overflow-y: auto; display: grid; gap: 12px; padding: 16px 16px calc(16px + env(safe-area-inset-bottom)); background: var(--surface); border-radius: 16px 16px 0 0; box-shadow: var(--shadow-lg); }
  .cal-sheet select, .cal-sheet input { width: 100%; }
  .cal-sheet .seg { display: flex; }
  .cal-sheet .seg button { flex: 1; min-height: 40px; }
  .cal-sheet .cal-sum { font-size: .86rem; }
  .cal-legend.inline { position: static; flex-wrap: wrap; white-space: normal; overflow: visible; box-shadow: none; padding: 10px; }
  .cal-legend.inline .lg-group { flex-wrap: wrap; }
}
@media (max-width: 700px) {
  /* 360 px'e de sığsın: ay seçici daralır, düğmeler sıkışır */
  .cal-mbar { gap: 4px; padding: 6px; }
  .cal-mbar .cal-arrows { gap: 4px !important; }
  .cal-mbar .cal-arrows button.small:not(.primary) { min-width: 34px; width: 34px; padding: 0; }
  .cal-mbar .cal-arrows button.primary { padding: 0 9px; }
  .cal-mbar button.icon { width: 38px; min-width: 38px; }
  .cal-month-sel { flex: 1 1 0; width: 0; }
  .main.tab-takvim, .cal-view.mobile { max-width: 100vw; overflow-x: clip; }
}
@media (max-width: 700px) {
  /* seçim çubuğu açıkken takvim alanı onun kadar kısalır; son satırlar örtülmez */
  .cal-view.mobile.picking .cal-scroll { max-height: calc(100vh - 268px - env(safe-area-inset-bottom)); max-height: calc(100dvh - 268px - env(safe-area-inset-bottom)); }
}
@media (max-width: 700px) { .cal-sheet .chk { display: flex; align-items: center; gap: 10px; min-height: 40px; color: var(--ink); font-size: .95rem; } }

/* ===================================================================== */
/* 15. Villa durumu (7.12): kirli kırmızı, temizleniyor turuncu, hazır yeşil, arızalı gri çizgili */
/* ===================================================================== */
.vdgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: 8px; }
.vd { display: grid; grid-template-columns: auto 1fr; column-gap: 8px; align-items: center; text-align: left; min-height: 52px; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--surface); font-weight: 400; }
.vd b { font-family: var(--font-display); font-size: .95rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vd small { grid-column: 2; font-size: .76rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vd .vd-dot { grid-row: span 2; }
.vd.vd-kirli { background: var(--bad-soft); border-color: var(--bad); }
.vd.vd-kirli small { color: var(--bad); }
.vd.vd-temizleniyor { background: var(--wait-soft); border-color: var(--wait); }
.vd.vd-temizleniyor small { color: var(--wait); }
.vd.vd-hazir { background: var(--ok-soft); border-color: transparent; }
.vd.vd-arizali { background: repeating-linear-gradient(-45deg, var(--hatch-b) 0 6px, var(--surface) 6px 12px); border-color: var(--muted); }
.vd-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex: none; background: var(--ok); vertical-align: middle; }
.vd-dot.vd-kirli { background: var(--bad); }
.vd-dot.vd-temizleniyor { background: var(--wait); }
.vd-dot.vd-hazir { background: var(--ok); }
.vd-dot.vd-arizali { background: repeating-linear-gradient(-45deg, var(--muted) 0 2px, transparent 2px 4px); box-shadow: inset 0 0 0 1.5px var(--muted); }
.cal-vn strong .vd-dot { width: 8px; height: 8px; margin-right: 5px; vertical-align: 1px; }
.vd-pill { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-weight: 700; font-size: .86rem; background: var(--ok-soft); color: var(--ok); }
.vd-pill.vd-kirli { background: var(--bad-soft); color: var(--bad); }
.vd-pill.vd-temizleniyor { background: var(--wait-soft); color: var(--wait); }
.vd-pill.vd-arizali { background: var(--hatch-b); color: var(--ink); }
.slot-row.tg-staff { grid-template-columns: minmax(160px, 1fr) minmax(150px, 220px) auto auto auto; }
.tg-staff.wait { border-left: 3px solid var(--wait); padding-left: 8px; }
.vd.vd-arizali small { color: var(--ink-2); font-weight: 600; }
@media (max-width: 640px) { .slot-row.tg-staff { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px) { .vdgrid { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 6px; } .vd { min-height: 46px; padding: 6px 8px; } }

/* ===================================================================== */
/* 16. KOMPAKT TASARIM (7.13): yoğunluk sistemi, çekmece, kart ızgarası, chip, yoğun liste, otomatik kaydet    */
/*     Ölçüler tek yerde (değişkenler): alan 36 px, satır 38 px, kart iç boşluğu 14–16 px, başlıklar 15–18 px.  */
/* ===================================================================== */
:root { --h-field: 36px; --h-btn: 36px; --h-btn-sm: 30px; --h-row: 38px; --pad-card: 14px 16px; --gap: 12px; --side-item: 34px; }
@media (max-width: 900px) { :root { --h-field: 40px; --h-btn: 40px; --h-btn-sm: 34px; --h-row: 42px; } }   /* parmakla dokunma için biraz daha yüksek */
body.admin { font-size: 15px; }
.admin h1, .admin .page-head h1 { font-size: 1.6rem; }
.admin h2 { font-size: 1.05rem; }
.admin h3 { font-size: .95rem; }
.admin .page-head h1::after { width: 84px; height: 9px; margin-top: 4px; }
.admin .main { gap: 16px; padding-top: 20px; padding-bottom: 48px; }
.admin .grid { gap: var(--gap); }
.admin .card { padding: var(--pad-card); border-radius: 10px; }
.admin label { gap: 3px; font-size: .8rem; }
.admin input, .admin select, .admin textarea { min-height: var(--h-field); padding: 6px 10px; border-radius: 7px; font-size: .92rem; }
.admin input[type=checkbox] { min-height: 0; width: 18px; height: 18px; }
.admin input[type=color] { min-height: var(--h-field); width: 48px; }
.admin button, .admin .btn { min-height: var(--h-btn); padding: 0 13px; font-size: .9rem; border-radius: 7px; }
.admin button.small, .admin .btn.small { min-height: var(--h-btn-sm); padding: 0 10px; font-size: .82rem; }
.admin .seg button { min-height: calc(var(--h-btn-sm) - 2px); padding: 0 12px; font-size: .86rem; }
.admin textarea { resize: vertical; max-height: 40vh; }
.admin th, .admin td { padding: 0 10px; height: var(--h-row); }
.admin th { position: sticky; top: 0; z-index: 1; height: 32px; font-size: .76rem; }
.admin .notice { padding: 8px 12px; font-size: .88rem; }
.admin .sect-head { padding-bottom: 6px; }
.admin .sect-head h2 { font-size: 1rem; }
/* yan menü */
.admin .side { padding: 14px 10px 10px; gap: 10px; }
.admin .brand { padding: 0 6px 8px; }
.admin .brand img { max-width: 150px; }
.admin .nav-title { font-size: .66rem; padding: 10px 10px 2px; }
.admin .nav button { min-height: var(--side-item); font-size: .88rem; gap: 10px; padding: 0 10px; }
.admin .nav .ic { width: 16px; height: 16px; flex-basis: 16px; }
.admin .navbadge { min-width: 19px; height: 19px; font-size: .7rem; }
.admin .searchbtn { min-height: 34px; font-size: .88rem; }
.admin .side-foot { gap: 2px; padding-top: 8px; }
.admin .side-foot > button { min-height: 28px; font-size: .82rem; }
.admin .themesw button { min-height: 26px; font-size: .76rem; }
.admin .me { font-size: .8rem; padding-bottom: 4px; }
/* Bugün/Panel: büyük sayılar tek satırlık özet şeridi */
.admin .statband { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); border-radius: 10px; }
.admin .stat { padding: 8px 14px; grid-template-columns: auto 1fr; column-gap: 10px; align-items: center; }
.admin .stat b { font-size: 1.45rem; grid-row: span 2; }
.admin .stat b small { font-size: .8rem; }
.admin .stat span { font-size: .78rem; }
.admin .stat em { font-size: .72rem; grid-column: 2; }
.admin .stat .bar { grid-column: 1 / -1; margin-top: 4px; height: 4px; }
@media (max-width: 760px) { .admin .stat { padding: 8px 10px; } .admin .stat b { font-size: 1.25rem; } }
/* villa durumu: tek satır, yana kayan chip'ler */
/* 7.30 villa durumu: satır kıran ızgara (yatay kaydırma yok); sorunlular önde ve renkli, hazırlar sönük */
.admin .vdgrid { grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); gap: 6px; }
.admin .vd { min-height: 0; padding: 6px 10px; border-radius: 10px; }
.admin .vd b { font-size: .86rem; }
.admin .vd small { font-size: .74rem; }
.vd.ariza { background: var(--wait-soft); border-color: var(--wait); }
.vd.sonuk { background: var(--surface); border-color: var(--line); opacity: .62; }
.vd.sonuk:hover { opacity: 1; }
@media (max-width: 700px) { .admin .vdgrid { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); } }
.flt { display: inline-grid; place-items: center; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 999px; background: var(--wait); color: var(--surface); font: 800 .7rem/1 var(--font-body); }
/* takvimde: .cal-vn bir ızgara; "!" satıra yayılmasın diye adın sağ üstüne oturur, ad ona yer bırakır */
.cal-vn { position: relative; }
.cal-vn .flt { position: absolute; top: -1px; right: 0; cursor: help; }
.cal-vn:has(> .flt) strong { padding-right: 22px; }
/* çekmece (sağdan açılan düzenleme paneli): kaydırma çekmecenin içinde, arka plan hep dolu kalır */
.modal-back.drawer-back { place-items: stretch end; padding: 0; overflow: hidden; }
.modal.drawer { width: min(460px, 100vw); height: 100%; overflow-y: auto; overscroll-behavior: contain; border-radius: 0; padding: 14px 16px; gap: 12px; }
.modal.drawer .modal-head { top: 0; }
.drawer .danger-zone { margin-top: 8px; border: 1px solid var(--bad); border-radius: 8px; padding: 10px 12px; display: grid; gap: 8px; }
.drawer .danger-zone h3 { color: var(--bad); font-size: .86rem; }
.drawer .two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.drawer .hist { display: grid; gap: 4px; font-size: .8rem; color: var(--muted); margin: 0; padding: 0; list-style: none; }
.drawer .hist b { color: var(--ink); font-weight: 600; }
/* otomatik kaydet göstergesi */
.saved { font-size: .74rem; color: var(--ok); font-weight: 600; margin-left: 6px; white-space: nowrap; }
.saved.bad { color: var(--bad); }
/* araç satırı: arama + sağda ana düğme */
.toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.toolbar .grow { flex: 1 1 200px; min-width: 0; }
.toolbar input[type=search] { max-width: 320px; }
/* villa kartları */
.vcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.admin .vcard { display: grid; gap: 6px; text-align: left; align-content: start; padding: 12px 14px; border-radius: 10px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow-sm); font-weight: 400; min-height: 0; white-space: normal; }
.admin .vcard:hover:not(:disabled) { border-color: var(--ink-2); background: var(--surface); }
.vcard .vc-top { display: flex; align-items: center; gap: 10px; min-width: 0; }
.vcard .vc-top strong { font-family: var(--font-display); font-size: .98rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vcard .vc-meta { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; font-size: .76rem; color: var(--muted); }
.vcard .pill { font-size: .7rem; padding: 1px 7px; }
/* yoğun liste (görevler, şablonlar) */
.dlist { display: grid; }
.drow { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; gap: 4px 10px; align-items: center; min-height: var(--h-row); padding: 5px 4px; border-top: 1px solid var(--line); cursor: pointer; }
.drow:first-child { border-top: 0; }
.drow:hover { background: var(--hover); }
.drow:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.drow .dr-main { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 8px; min-width: 0; }
.drow .dr-main strong { font-weight: 600; font-size: .9rem; overflow-wrap: anywhere; }
.drow .dr-sub { font-size: .76rem; color: var(--muted); }
.drow .dr-acts { display: flex; gap: 4px; align-items: center; justify-content: flex-end; }
.drow.done .dr-main strong { text-decoration: line-through; color: var(--muted); }
.drow .ico { font-size: 1rem; text-align: center; }
.tag { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px; border-radius: 6px; font-size: .72rem; font-weight: 600; background: var(--surface-2); border: 1px solid var(--line); color: var(--ink-2); white-space: nowrap; }
.tag.rol { background: var(--accent-soft); border-color: var(--accent-line); color: var(--accent-text); }
.tag.late { background: var(--bad-soft); border-color: var(--bad); color: var(--bad); }
@media (max-width: 640px) { .drow { grid-template-columns: 22px minmax(0, 1fr); } .drow .dr-acts { grid-column: 2; justify-content: flex-start; } }
/* sekmeler (Ayarlar, Görevler) */
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--line); overflow-x: auto; }
.admin .tabs button { border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); min-height: 34px; padding: 0 12px; font-size: .9rem; }
.admin .tabs button:hover:not(:disabled) { background: transparent; border: 0; border-bottom: 2px solid var(--line-strong); color: var(--ink); }
.admin .tabs button[aria-selected="true"], .admin .tabs button[aria-selected="true"]:hover:not(:disabled) { color: var(--ink); border-bottom: 2px solid var(--accent); }
.tabs .navbadge { margin-left: 6px; }
/* tek satır form (hızlı ekleme, toplu saat) */
.inline-form { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.admin .inline-form > input, .admin .inline-form > select { width: auto; flex: 0 1 auto; }
.admin .inline-form > .grow { flex: 1 1 220px; }
.admin .inline-form > input.grow { width: auto; }
.inline-form .lbl-in { font-size: .8rem; color: var(--muted); }
/* giriş saati chip'leri */
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.admin .chip { position: relative; min-height: 30px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--line-strong); background: var(--surface); font-variant-numeric: tabular-nums; font-weight: 600; font-size: .86rem; }
.chip.off { opacity: .45; text-decoration: line-through; }
.chip.note::after { content: ""; position: absolute; top: 3px; right: 3px; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }
.chip[aria-expanded="true"] { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.admin .chip.ins { font-family: ui-monospace, monospace; font-size: .76rem; font-weight: 500; min-height: 26px; }
.popover { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface-2); }
/* mesajlar: iki sütun */
.msg2 { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, 1fr); gap: 12px; align-items: start; }
@media (max-width: 980px) { .msg2 { grid-template-columns: 1fr; } }
/* ekip / kullanıcı tabloları: hücrede alan */
.admin .ttable td input, .admin .ttable td select { min-height: 30px; padding: 3px 8px; }
.ttable td .chk { display: inline-flex; align-items: center; gap: 6px; color: var(--ink); }
.ttable tr.wait td:first-child { box-shadow: inset 3px 0 0 var(--wait); }
@media (max-width: 640px) {
  /* telefonda tablo satırı kart gibi alt alta */
  .ttable thead { display: none; }
  .ttable tr { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 8px 0; border-top: 1px solid var(--line); }
  .admin .ttable td { height: auto; padding: 0; border: 0; }
  .ttable td:first-child { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  /* telefonda: villa kartları iki sütun, görev filtreleri tek satır (yana kayar), hızlı ekleme iki satır */
  .vcards { grid-template-columns: 1fr 1fr; gap: 8px; }
  .admin .vcard { padding: 10px; gap: 4px; }
  .vcard .vc-top { gap: 6px; }
  .vcard .vc-top strong { font-size: .9rem; }
  .gfilters { flex-wrap: nowrap; overflow-x: auto; flex: 1 1 100%; min-width: 0; padding-bottom: 2px; }
  .admin .gfilters > select { flex: 0 0 auto; min-height: 34px; font-size: .84rem; }
  .admin form.quickadd > .grow { flex: 1 1 150px; }
  .admin form.quickadd > select { flex: 1 1 30%; }
  .drow .dr-acts button { min-height: 32px; }
}
/* 7.14: uzun saat notu saat düğmesinin içinde kırılsın; "saat seçmeyenler" satırları sıkı */
.slot small { white-space: normal; text-align: center; overflow-wrap: anywhere; }
.admin .rail-wait { padding: 4px 4px 4px 12px; min-height: var(--h-row); }
.admin .rail-wait select { min-height: var(--h-btn-sm); padding: 2px 8px; font-size: .82rem; width: auto; }
/* 7.15: canlı bağlantı noktası (yeşil canlı / sarı yeniden bağlanıyor / gri yoklama) */
.livedot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: 1px; background: var(--muted); }
.livedot.live { background: var(--ok); box-shadow: 0 0 0 3px var(--ok-soft); }
.livedot.retry, .livedot.paused { background: var(--wait); }
.livedot.bad { background: var(--bad); }

/* ============================================================================================== */
/* 17. OPERASYON (7.19): bölge esaslı günlük rota                                                   */
/* ============================================================================================== */
.op-grp { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: .74rem; font-weight: 700; white-space: nowrap;
  color: var(--c); background: color-mix(in srgb, var(--c) 14%, var(--surface)); border: 1px solid color-mix(in srgb, var(--c) 40%, transparent); }
.op-list { list-style: none; margin: 0; padding: 0; display: grid; }
.op-row { display: grid; grid-template-columns: 26px 64px minmax(0, 1fr) auto; gap: 4px 12px; align-items: start; padding: 10px 6px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); }
.op-row.warn { border-color: var(--accent-line); }
.op-row.done { opacity: .62; }
.op-no { width: 24px; height: 24px; border-radius: 999px; display: grid; place-items: center; background: var(--surface-2); color: var(--ink-2); font-size: .78rem; font-weight: 700; }
.op-time { display: grid; line-height: 1.15; font-variant-numeric: tabular-nums; }
.op-time b { font-size: 1.05rem; }
.op-time small { color: var(--muted); font-size: .72rem; }
.op-time small.op-varis { color: var(--accent-text); font-weight: 600; }
.op-main { display: grid; gap: 3px; min-width: 0; }
.op-tur { font-size: .78rem; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.op-warn { color: var(--accent-text); font-size: .82rem; font-weight: 600; }
.op-info { color: var(--muted); font-size: .8rem; }
.op-acts { display: flex; gap: 4px; align-items: center; }
.op-conn { padding: 3px 0 3px 44px; font-size: .78rem; color: var(--muted); }
.op-conn.change { color: var(--wait); font-weight: 600; }
@media (max-width: 700px) {
  .op-row { grid-template-columns: 54px minmax(0, 1fr); }
  .op-no { display: none; }
  .op-acts { grid-column: 1 / -1; justify-content: flex-end; }
  .op-conn { padding-left: 8px; }
}

/* ===== 7.24 kaynağa göre rezervasyon formu ===== */
.res-villa { margin: 0; font-family: var(--font-display); font-size: 1.7rem; font-weight: 700; line-height: 1.1; color: var(--ink); }
.res-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 8px 16px; }
.res-total { display: grid; justify-items: end; text-align: right; }
.res-total .lbl { margin: 0; }
.res-total strong { font-family: var(--font-display); font-size: 1.7rem; line-height: 1.1; color: var(--accent-text); font-variant-numeric: tabular-nums; }
@media (max-width: 700px) { .res-total { justify-items: start; text-align: left; } .res-total strong { font-size: 1.4rem; } }
.src-form { gap: 10px; }
.src-form [hidden] { display: none !important; }
.src-form .sf-h { margin: 6px 0 0; font-size: .95rem; color: var(--ink-2); border-bottom: 1px solid var(--line); padding-bottom: 4px; }
.money-f { display: grid; gap: 4px; align-content: start; min-width: 0; }
.money-row { display: flex; gap: 6px; align-items: center; min-width: 0; }
.money-row > input { flex: 1 1 auto; min-width: 0; }
.money-row .cur-sel, .cur-sel { flex: 0 0 auto; width: 96px; }
.pct-w { display: inline-flex; align-items: center; gap: 2px; flex: 0 0 auto; color: var(--muted); }
.pct-w .pct-in { width: 64px; }
.money-grid .sf-on { grid-column: span 2; }
.money-row > input[name=onAmt] { min-width: 90px; }
@media (max-width: 700px) { .money-grid .sf-on, .money-grid .money-f { grid-column: 1 / -1; } }

/* ===== 7.25 fiyat listesi önizleme ===== */
.modal.wide { width: min(1400px, 96vw); max-width: 96vw; }
.fl-wrap { max-height: 62vh; overflow: auto; }
.fl-table { font-size: .8rem; border-collapse: collapse; }
.fl-table th, .fl-table td { white-space: nowrap; padding: 4px 6px; border-bottom: 1px solid var(--line); text-align: right; font-variant-numeric: tabular-nums; }
.fl-table thead th { position: sticky; top: 0; background: var(--surface); z-index: 1; text-align: center; vertical-align: bottom; }
.fl-table thead th small, .fl-table td small { display: block; color: var(--muted); font-weight: 400; font-size: .7rem; }
.fl-table tbody th { text-align: left; position: sticky; left: 0; background: var(--surface); }
.fl-table td select { max-width: 150px; font-size: .8rem; }
.fl-table td select.bad, .fl-miss th { color: var(--accent-text); }
.fl-miss { background: var(--accent-soft); }
.fl-yeni { background: var(--ok-soft); }
.fl-degisiyor { background: var(--wait-soft); }
.fl-ayni { color: var(--muted); }
.fl-atla, .fl-yok { color: var(--muted); opacity: .6; }
.fl-ozet { margin: 0; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.fl-table td select { min-width: 150px; }
.fl-table tbody td:nth-child(2) { text-align: left; }

/* ===================================================================== */
/* 18. 7.30: alt sekmeler (birleşen ekranlar), Saatler ekranı, hızlı filtreler */
/* ===================================================================== */
.subnav { display: flex; gap: 2px; border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; margin-top: -4px; }
.admin .subnav button { flex: none; border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); min-height: 38px; padding: 0 14px; font-size: .92rem; font-weight: 600; display: inline-flex; align-items: center; gap: 6px; }
.admin .subnav button:hover:not(:disabled) { background: transparent; border: 0; border-bottom: 2px solid var(--line-strong); color: var(--ink); }
.admin .subnav button[aria-selected="true"], .admin .subnav button[aria-selected="true"]:hover:not(:disabled) { color: var(--ink); border-bottom: 2px solid var(--accent); }
.subnav .navbadge, .nav .navbadge + .navbadge { margin-left: 4px; }
.navbadge.nb-req { background: var(--wait-soft); color: var(--wait); }
.reqbadge.task { border-color: var(--line-strong); background: var(--surface); color: var(--ink-2); }
.toggle[aria-pressed="true"], .toggle[aria-pressed="true"]:hover:not(:disabled) { background: var(--second); color: var(--second-ink); border-color: var(--second); }
.hafta { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.admin .hafta button { position: relative; display: grid; gap: 0; justify-items: center; min-height: 48px; padding: 4px 2px; border-radius: 10px; font-size: .82rem; }
.admin .hafta button b { font-weight: 700; white-space: nowrap; }
.admin .hafta button small { color: var(--muted); font-size: .72rem; white-space: nowrap; }
.admin .hafta button[aria-pressed="true"] { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.hafta-nokta { position: absolute; top: 5px; right: 6px; width: 7px; height: 7px; border-radius: 50%; background: var(--wait); }
.saat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 8px; margin-top: 6px; }
.saat-kart { display: grid; grid-template-columns: 62px minmax(0, 1fr) auto; gap: 4px 12px; align-items: center; background: var(--surface); border: 1px solid var(--line); border-left: 4px solid var(--c, var(--accent)); border-radius: 10px; padding: 8px 10px; cursor: pointer; }
.saat-kart:hover { border-color: var(--line-strong); border-left-color: var(--c, var(--accent)); }
.saat-kart:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.saat-t { display: grid; justify-items: center; }
.saat-t b { font-family: var(--font-display); font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.saat-t small { font-size: .7rem; font-weight: 700; color: var(--accent-text); text-transform: uppercase; letter-spacing: .04em; }
.saat-kart.out .saat-t small { color: var(--ink-2); }
.saat-m { display: grid; gap: 1px; min-width: 0; }
.saat-m strong, .saat-m small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.saat-m small { color: var(--muted); font-size: .8rem; }
.saat-ipucu { font-size: .78rem; font-weight: 600; color: var(--ok); }
.saat-e { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; align-items: center; }
@media (max-width: 640px) { .saat-kart { grid-template-columns: 56px minmax(0, 1fr); } .saat-e { grid-column: 2; justify-content: flex-start; } }
.bos-dilim summary { cursor: pointer; font-weight: 600; }
.bos-dilim .chips { margin-top: 10px; }
.bos-dilim .chip small { margin-left: 4px; font-weight: 500; color: var(--muted); }
@media (max-width: 640px) { .hafta { display: flex; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px; } .admin .hafta button { flex: 0 0 70px; } }

/* ---------- 19. Telefonda rezervasyon listesi (7.31) ---------- */
/* ızgara öğeleri içindeki geniş tablo sayfayı genişletmesin (tablo kendi kutusunda kayar) */
.main > *, .grid > * { min-width: 0; }
@media (max-width: 700px) {
  .rez-tablo, .rez-tablo tbody { display: block; }
  .rez-tablo thead { display: none; }
  .rez-tablo tr { display: grid; grid-template-columns: auto auto minmax(0, 1fr) auto; grid-template-areas: "g g g d" "v v v tut" "t t t tut" "k k k k" "gs cs . no";
    gap: 4px 8px; padding: 10px 8px; border-bottom: 1px solid var(--line); align-items: start; }
  .admin .rez-tablo td { display: block; padding: 0; border: 0; min-width: 0; height: auto; background: transparent; }
  .rez-tablo tr.clickrow:hover, .rez-tablo tr.clickrow:focus-visible { background: var(--hover); }
  .rez-tablo .r-g { grid-area: g; } .rez-tablo .r-g strong { font-size: .98rem; } .rez-tablo .r-g .pill { display: table; margin-top: 4px; }
  .rez-tablo .r-d { grid-area: d; text-align: right; }
  .rez-tablo .r-v { grid-area: v; font-weight: 600; }
  .rez-tablo .r-t { grid-area: t; font-size: .86rem; } .rez-tablo .r-t .small { display: inline; margin-left: 4px; }
  .rez-tablo .r-tut { grid-area: tut; text-align: right; display: grid; justify-items: end; gap: 3px; }
  .rez-tablo .r-k { grid-area: k; font-size: .84rem; color: var(--muted); }
  .rez-tablo .r-gs { grid-area: gs; } .rez-tablo .r-cs { grid-area: cs; }
  .rez-tablo .r-gs:not(:empty)::before, .rez-tablo .r-cs:not(:empty)::before { content: attr(data-l) " "; font-size: .76rem; color: var(--muted); }
  .rez-tablo .r-no { grid-area: no; text-align: right; align-self: center; }
}

/* ---------- 20. Fiyatlar: villa × ay tablosu (7.33) ---------- */
.fy-bar { gap: 8px; flex-wrap: wrap; }
.fy-card { padding: 6px; }
.fy-table { width: 100%; border-collapse: separate; border-spacing: 3px; }
.admin .fy-table th, .admin .fy-table td { padding: 0; height: auto; border: 0; }
.fy-table thead th { font-size: .74rem; color: var(--muted); font-weight: 600; text-align: center; padding: 2px 0 4px; }
.fy-table tbody th { position: sticky; left: 0; z-index: 1; background: var(--surface); text-align: left; padding: 0 8px 0 4px; font-size: .86rem; white-space: nowrap; }
.fy-table tbody th small { color: var(--muted); font-weight: 500; }
.admin .fy-c { display: grid; gap: 1px; align-content: center; justify-items: center; width: 100%; min-width: 68px; min-height: 46px; padding: 4px 3px; border-radius: 6px; border: 1px solid var(--line);
  background: var(--surface-2, var(--surface)); color: var(--ink); font-size: .84rem; line-height: 1.15; text-align: center; }
.admin .fy-c:hover:not(:disabled) { border-color: var(--line-strong); background: var(--hover); }
.fy-c b { font-weight: 650; font-variant-numeric: tabular-nums; }
.fy-c small { font-size: .66rem; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fy-oz { color: var(--accent-text); }
.fy-ek { color: var(--bad); }
.admin .fy-c.fy-bos { border-style: dashed; background: transparent; color: var(--muted); }
.fy-yok { font-size: .72rem; }
.admin .fy-c.fy-yarim { border-color: var(--bad); }
.fy-donem { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: end; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
tr.fy-eksik td { color: var(--bad); }
@media (max-width: 700px) { .admin .fy-c { min-width: 60px; min-height: 42px; } .fy-table tbody th { font-size: .8rem; padding-right: 4px; } }
.admin .fy-c.fy-gecmis { opacity: .55; }   /* geçmiş aylar: bilgi için, uyarı sayılmaz */

/* ---------- 21. Takvim › Fiyat sorgula (7.34) ---------- */
.sq-form { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; align-items: end; }
.sq-form button[type=submit] { min-width: 110px; }
.sq-ozet { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding: 10px 14px; }
.sq-arac { gap: 8px; flex-wrap: wrap; align-items: end; }
.sq-arac label { display: flex; gap: 6px; align-items: center; }
.sq-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 10px; }
.sq-card { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "sec ad fiyat" "acts acts acts"; gap: 8px 10px; align-items: center; padding: 10px 12px; }
.sq-sec { grid-area: sec; display: flex; align-items: center; min-width: 28px; min-height: 28px; justify-content: center; }
.sq-ad { grid-area: ad; display: flex; gap: 8px; align-items: center; min-width: 0; }
.sq-ad strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sq-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.sq-fiyat { grid-area: fiyat; display: grid; justify-items: end; text-align: right; }
.sq-fiyat b { font-size: 1.12rem; font-variant-numeric: tabular-nums; }
.sq-fiyat small { color: var(--muted); font-size: .76rem; }
.sq-fiyat b.sq-eksik { font-size: .9rem; color: var(--bad); }
.sq-acts { grid-area: acts; display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.sq-yok { opacity: .85; }
.sq-dolu summary { cursor: pointer; font-weight: 600; }
.sq-dolu ul { margin: 8px 0 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.sq-dolu li { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.sq-dolu .tag { white-space: normal; }
@media (max-width: 700px) {
  .sq-form { grid-template-columns: 1fr 1fr; }
  .sq-form button[type=submit] { grid-column: 1 / -1; }
  .sq-card { grid-template-areas: "sec ad ad" "fiyat fiyat fiyat" "acts acts acts"; }
  .sq-fiyat { justify-items: start; text-align: left; }
  .sq-acts { justify-content: stretch; } .sq-acts button { flex: 1; }
  .main.tab-takvim .subnav { display: none; }   /* telefonda takvim alanı küçülmesin; kısayol Filtre sayfasında */
}
.sq-card.sq-yok { grid-template-areas: "sec ad ad" "fiyat fiyat fiyat" "acts acts acts"; }
.sq-yok .sq-fiyat { justify-items: start; text-align: left; }

/* ---------- 22. Fiyat sorgula ekleri: bölge, WhatsApp mesajı, boşluk uyarısı (7.35) ---------- */
.sq-bolge { display: grid; gap: 4px; }
.sq-bolge .lbl { font-size: .86rem; color: var(--muted); }
.sq-bolge .seg { width: 100%; } .sq-bolge .seg button { flex: 1; }
.sq-msg { display: grid; gap: 10px; }
.sq-msg-ust { gap: 8px; flex-wrap: wrap; }
.sq-msg textarea { width: 100%; min-height: 150px; resize: vertical; font-size: .9rem; line-height: 1.4; }
.sq-msg-acts { gap: 8px; flex-wrap: wrap; }
.sq-msg .sq-uzun { margin: 0; }
.sq-bosluk { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; }
.sq-bosluk:empty { display: none; }
.sq-card { grid-template-areas: "sec ad fiyat" "bos bos bos" "acts acts acts"; }
.sq-bosluk { grid-area: bos; }
.tag.sq-iyi { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.sq-uyari { width: 100%; background: var(--wait-soft); color: var(--ink); border-radius: 8px; padding: 6px 10px; font-size: .84rem; }
.sq-uyari summary { cursor: pointer; font-weight: 600; color: var(--wait); }
.sq-uyari ul { margin: 6px 0 2px; padding-left: 18px; display: grid; gap: 4px; }
.sq-oneri { color: var(--ink); }
.gap-hint { padding: 6px 10px; border-radius: 8px; background: var(--ok-soft); }
.gap-hint.warn { background: var(--wait-soft); color: var(--ink); }
.sq-card.sq-yok { grid-template-areas: "sec ad ad" "fiyat fiyat fiyat" "bos bos bos" "acts acts acts"; }
@media (max-width: 700px) {
  .sq-card { grid-template-areas: "sec ad ad" "fiyat fiyat fiyat" "bos bos bos" "acts acts acts"; }
  .sq-msg-acts button { flex: 1 1 100%; white-space: normal; }
}
