/* =========================================================
   KARABÜK ULAŞIM — Design System
   Mobile-first, modern mobility app aesthetic.
   ========================================================= */

:root{
  --primary: #8B1E2D;
  --primary-dark: #6E1723;
  --secondary: #B52B3A;
  --ink: #111827;
  --ink-soft: #4B5563;
  --muted: #6B7280;
  --line: #E2E4E9;
  --line-strong: #C9CCD3;
  --bg: #F7F7F8;
  --surface: #FFFFFF;
  --success: #15803D;
  --success-bg: #ECFDF3;
  --warn: #92610A;
  --warn-bg: #FDF6E5;
  --danger: #B91C1C;
  --danger-bg: #FEF2F2;

  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 10px;
  --shadow-sm: 0 1px 2px rgba(17,24,39,.05);
  --shadow-md: 0 2px 6px rgba(17,24,39,.08);
  --shadow-lg: 0 4px 14px rgba(17,24,39,.10);

  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --header-h: 60px;
  --bottom-nav-h: 68px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--font);
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; }

.container{ max-width:1280px; margin:0 auto; padding:0 20px; }

/* ---------- Header ---------- */
.site-header{
  position:sticky; top:0; z-index:40;
  height:var(--header-h);
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.header-inner{ height:100%; display:flex; align-items:center; justify-content:space-between; }
.brand{ display:flex; align-items:center; gap:10px; font-weight:800; font-size:1.05rem; }
.brand-mark{
  width:32px; height:32px; border-radius:6px;
  background:var(--primary);
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:.9rem;
}
.brand-text em{ font-style:normal; color:var(--primary); }
.main-nav{ display:none; gap:28px; font-weight:600; font-size:.92rem; color:var(--ink-soft); }
.main-nav a:hover, .main-nav a.active{ color:var(--primary); }
@media(min-width:900px){ .main-nav{ display:flex; } }

/* ---------- Bottom mobile nav ---------- */
.bottom-nav{
  position:fixed; left:0; right:0; bottom:0; z-index:50;
  display:flex; justify-content:space-around; align-items:center;
  height:var(--bottom-nav-h);
  background:rgba(255,255,255,.96);
  backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.bottom-nav a{
  display:flex; flex-direction:column; align-items:center; gap:3px;
  font-size:.66rem; font-weight:600; color:var(--muted);
  flex:1; padding:6px 2px;
}
.bottom-nav a.active{ color:var(--primary); }
.bn-icon{ width:22px; height:22px; display:inline-block; }
.bn-icon::before{ content:''; display:block; width:100%; height:100%; background:currentColor; -webkit-mask-size:contain; mask-size:contain; -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat; -webkit-mask-position:center; mask-position:center; }
.bn-icon[data-icon="home"]::before{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M3 11l9-8 9 8M5 10v10h14V10' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Cpath d='M3 11l9-8 9 8M5 10v10h14V10' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.bn-icon[data-icon="search"]::before{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.3-4.3' stroke-linecap='round'/%3E%3C/svg%3E"); }
.bn-icon[data-icon="bus"]::before{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='4' y='4' width='16' height='13' rx='2'/%3E%3Ccircle cx='8' cy='19.5' r='1.5'/%3E%3Ccircle cx='16' cy='19.5' r='1.5'/%3E%3Cpath d='M4 11h16' /%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Crect x='4' y='4' width='16' height='13' rx='2'/%3E%3Ccircle cx='8' cy='19.5' r='1.5'/%3E%3Ccircle cx='16' cy='19.5' r='1.5'/%3E%3Cpath d='M4 11h16' /%3E%3C/svg%3E"); }
.bn-icon[data-icon="star"]::before{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14l-5-4.87 6.91-1.01L12 2z'/%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 2l3.09 6.26L22 9.27l-5 4.87L18.18 21 12 17.77 5.82 21 7 14.14l-5-4.87 6.91-1.01L12 2z'/%3E%3C/svg%3E"); }
.bn-icon[data-icon="info"]::before{ -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6M12 7.5v.01' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v6M12 7.5v.01' stroke-linecap='round'/%3E%3C/svg%3E"); }
@media(min-width:900px){ .bottom-nav{ display:none; } }

.site-main{ min-height:60vh; padding-bottom:calc(var(--bottom-nav-h) + 24px); }
@media(min-width:900px){ .site-main{ padding-bottom:40px; } }

/* ---------- Hero ---------- */
.hero{
  position:relative;
  background:var(--ink);
  color:#fff;
  padding:36px 0 72px;
  border-bottom:3px solid var(--primary);
  overflow:hidden;
}
.hero-illustration{
  position:absolute; right:-1%; bottom:-4%; width:72%; max-width:820px;
  height:auto; pointer-events:none; user-select:none;
  opacity:.55;
  mask-image:linear-gradient(to left, black 55%, transparent 96%);
  -webkit-mask-image:linear-gradient(to left, black 55%, transparent 96%);
}
@media(max-width:640px){
  .hero-illustration{ width:92%; opacity:.32; right:-4%; bottom:-2%; }
}
.hero-inner{ position:relative; z-index:1; }
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:6px;
  font-size:.72rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:#D8DCE3; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16);
  padding:5px 11px; border-radius:4px;
}
.hero h1{
  font-size:clamp(1.6rem, 4.6vw, 2.3rem);
  line-height:1.2; font-weight:800; margin:14px 0 6px;
}
.hero p.lead{ color:#C2C6CE; font-size:.96rem; max-width:540px; margin:0 0 12px; }
.hero .hero-note{
  color:#9AA0AC; font-size:.82rem; max-width:540px; margin:0;
  padding-top:12px; border-top:1px solid rgba(255,255,255,.12);
}

.hero-stats{
  display:flex; gap:0; margin:20px 0 18px;
}
.hero-stat{
  display:flex; flex-direction:column; gap:2px;
  padding:0 20px 0 0; margin-right:20px;
  border-right:1px solid rgba(255,255,255,.15);
}
.hero-stat:last-child{ border-right:none; margin-right:0; padding-right:0; }
.hero-stat strong{ font-size:1.7rem; font-weight:800; line-height:1; color:#fff; }
.hero-stat span{ font-size:.7rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:#9AA0AC; }

.popular-stops{ margin:16px 0 0; }
.popular-stops-label{
  display:block; font-size:.72rem; font-weight:700; color:var(--muted);
  text-transform:uppercase; letter-spacing:.04em; margin-bottom:8px;
}
.popular-stops-list{ display:flex; flex-wrap:wrap; gap:8px; }
.stop-chip{
  padding:8px 14px; border-radius:999px; border:1px solid var(--line-strong);
  background:var(--surface); font-size:.84rem; font-weight:600; color:var(--ink-soft);
  cursor:pointer; transition:all .12s ease;
}
.stop-chip:hover{ border-color:var(--primary); color:var(--primary); }
.stop-chip.is-selected{ background:var(--primary); border-color:var(--primary); color:#fff; }

/* ---------- Yaklaşan seferler (ana sayfa) ---------- */
.upcoming-row{
  display:flex; align-items:center; gap:12px; padding:14px 16px;
  border-top:1px solid var(--line); color:inherit; transition:background-color .12s ease;
}
.upcoming-row:hover{ background:var(--bg); }
.upcoming-row:first-child{ border-top:none; }

/* ---------- Nasıl Çalışır (ana sayfa) ---------- */
.how-steps{ display:grid; grid-template-columns:1fr; gap:14px; }
@media(min-width:720px){ .how-steps{ grid-template-columns:repeat(3,1fr); } }
.how-step{
  position:relative; background:var(--surface); border:1px solid var(--line);
  border-radius:var(--radius-md); padding:22px 18px 18px;
}
.how-step-icon{
  width:42px; height:42px; border-radius:var(--radius-sm);
  background:var(--bg); color:var(--primary);
  display:flex; align-items:center; justify-content:center; margin-bottom:12px;
}
.how-step-num{
  position:absolute; top:16px; right:16px; font-size:1.6rem; font-weight:800;
  color:var(--line-strong);
}
.how-step h3{ font-size:.98rem; font-weight:700; margin:0 0 6px; }
.how-step p{ font-size:.85rem; color:var(--muted); margin:0; line-height:1.5; }

/* ---------- Hakkında tanıtım (ana sayfa) ---------- */
.about-teaser{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg);
  overflow:hidden;
}
.about-teaser-img{ display:block; width:100%; height:auto; background:var(--bg); }
.about-teaser-content{ padding:22px 24px 26px; }
.about-teaser-content h2{ font-size:1.15rem; font-weight:800; margin:0 0 10px; }
.about-teaser-content p{ font-size:.9rem; color:var(--ink-soft); line-height:1.6; margin:0 0 16px; max-width:640px; }
@media(min-width:720px){
  .about-teaser{ display:flex; align-items:center; }
  .about-teaser-img{ width:42%; flex:none; height:100%; object-fit:cover; }
  .about-teaser-content{ flex:1; }
}

/* ---------- Search card ---------- */
.search-card{
  background:var(--surface);
  border-radius:var(--radius-lg);
  border:1px solid var(--line-strong);
  box-shadow:var(--shadow-lg);
  padding:20px;
  margin-top:-52px;
  position:relative; z-index:2;
}
@media(min-width:640px){ .search-card{ padding:26px; } }

.search-field{
  display:flex; align-items:center; gap:12px;
  padding:14px 4px; border-bottom:1px solid var(--line);
}
.search-field:last-of-type{ border-bottom:none; }
.search-field .field-icon{
  width:38px; height:38px; border-radius:10px; flex:none;
  background:var(--bg); display:flex; align-items:center; justify-content:center;
  font-size:1rem;
}
.search-field .field-body{ flex:1; min-width:0; }
.search-field label{ display:block; font-size:.72rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; margin-bottom:2px; }
.search-field select, .search-field input[type="time"]{
  border:none; background:none; width:100%; font-size:1rem; font-weight:600;
  color:var(--ink); padding:2px 0; font-family:inherit; -webkit-appearance:none; appearance:none;
}
.search-field select:focus, .search-field input:focus{ outline:none; }

.swap-btn{
  width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
  background:var(--surface); display:flex; align-items:center; justify-content:center;
  cursor:pointer; margin:-6px auto; position:relative; z-index:1; box-shadow:var(--shadow-sm);
}

.time-toggle{ display:flex; gap:8px; margin-top:4px; }
.time-toggle button{
  flex:1; padding:10px; border-radius:var(--radius-sm); border:1px solid var(--line);
  background:var(--surface); font-weight:600; font-size:.85rem; cursor:pointer; color:var(--ink-soft);
  transition:all .15s ease;
}
.time-toggle button.active{ background:var(--primary); border-color:var(--primary); color:#fff; }

.btn-primary{
  width:100%; margin-top:16px; padding:14px; border:none; border-radius:var(--radius-sm);
  background:var(--primary); color:#fff;
  font-weight:700; font-size:.96rem; cursor:pointer;
  transition:background-color .12s ease;
}
.btn-primary:hover{ background:var(--primary-dark); }
.btn-primary:active{ background:var(--primary-dark); }
.btn-primary:disabled{ opacity:.6; cursor:not-allowed; }

.btn-secondary{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  padding:11px 18px; border-radius:var(--radius-sm); border:1px solid var(--line);
  background:var(--surface); color:var(--ink); font-weight:600; font-size:.88rem; cursor:pointer;
}
.btn-secondary:hover{ border-color:var(--primary); color:var(--primary); }

/* ---------- Sections / cards ---------- */
.section{ padding:36px 0; }
.section-head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:16px; gap:12px; }
.section-head h2{ font-size:1.2rem; font-weight:800; margin:0; }
.section-head a{ font-size:.85rem; font-weight:700; color:var(--primary); white-space:nowrap; }

.card{
  background:var(--surface); border-radius:var(--radius-md); border:1px solid var(--line);
  box-shadow:var(--shadow-sm); padding:18px;
}
.card + .card{ margin-top:12px; }

.route-card{ display:block; }
.route-card-top{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.route-badge{
  min-width:40px; height:40px; padding:0 6px; border-radius:var(--radius-sm); flex:none;
  background:var(--primary);
  color:#fff; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:.9rem;
  letter-spacing:-.01em;
}
.route-card-title{ font-weight:700; font-size:1rem; }
.route-card-sub{ font-size:.8rem; color:var(--muted); }

.stop-chain{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-size:.86rem; color:var(--ink-soft); margin-bottom:10px; }

.trip-details{ margin-top:2px; }
.trip-details summary{
  cursor:pointer; font-size:.82rem; font-weight:600; color:var(--primary);
  list-style:none; display:flex; align-items:center; gap:5px;
}
.trip-details summary::-webkit-details-marker{ display:none; }
.trip-details summary::before{
  content:'▸'; font-size:.7rem; transition:transform .15s ease; display:inline-block;
}
.trip-details[open] summary::before{ transform:rotate(90deg); }
.trip-details[open] summary{ margin-bottom:2px; }

/* ---------- Bilgi sayfası ---------- */
.about-hero{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-lg);
  padding:24px;
}
.about-icon-badge{
  width:40px; height:40px; border-radius:var(--radius-sm);
  background:var(--bg); color:var(--primary);
  display:flex; align-items:center; justify-content:center;
}
.faq-item{ padding:14px 0; border-bottom:1px solid var(--line); }
.faq-item:last-child{ border-bottom:none; }
.faq-item summary{
  cursor:pointer; font-weight:700; font-size:.92rem; list-style:none;
  display:flex; align-items:center; gap:8px;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::before{ content:'+'; color:var(--primary); font-weight:800; font-size:1.1rem; width:16px; }
.faq-item[open] summary::before{ content:'−'; }
.faq-item p{ margin:10px 0 0 24px; font-size:.86rem; color:var(--ink-soft); line-height:1.6; }
.stop-chain .sep{ color:var(--muted); }

.badge{ display:inline-flex; align-items:center; gap:5px; font-size:.72rem; font-weight:700; padding:4px 9px; border-radius:999px; }
.badge-official{ background:var(--success-bg); color:var(--success); }
.badge-estimated{ background:var(--warn-bg); color:var(--warn); }
.badge-neutral{ background:var(--bg); color:var(--muted); border:1px solid var(--line); }

.route-meta-row{ display:flex; align-items:center; justify-content:space-between; }
.route-duration{ font-size:.82rem; color:var(--muted); font-weight:600; }

/* ---------- Journey / trip result ---------- */
.trip-timeline{ position:relative; padding-left:26px; margin:14px 0; }
.trip-timeline::before{ content:''; position:absolute; left:9px; top:6px; bottom:6px; width:2px; background:var(--line); }
.trip-stop{ position:relative; padding-bottom:20px; }
.trip-stop:last-child{ padding-bottom:0; }
.trip-stop::before{
  content:''; position:absolute; left:-26px; top:2px; width:14px; height:14px; border-radius:50%;
  background:var(--surface); border:3px solid var(--primary);
}
.trip-stop.is-end::before{ border-color:var(--secondary); }
.trip-stop-time{ font-weight:800; font-size:.95rem; }
.trip-stop-name{ font-size:.9rem; color:var(--ink-soft); }

.schedule-row{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:14px 0; border-bottom:1px solid var(--line);
}
.schedule-row:last-child{ border-bottom:none; }
.schedule-time{ font-weight:800; font-size:1.05rem; min-width:64px; }
.schedule-time.passed{ color:var(--muted); text-decoration:line-through; }
.schedule-time.next{ color:var(--primary); }
.schedule-info{ flex:1; font-size:.82rem; color:var(--muted); }

/* ---------- Stats (admin dashboard) ---------- */
.stat-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:12px; }
@media(min-width:720px){ .stat-grid{ grid-template-columns:repeat(4,1fr); } }
.stat-card{ background:var(--surface); border:1px solid var(--line); border-radius:var(--radius-md); padding:18px; }
.stat-card .stat-label{ font-size:.76rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; }
.stat-card .stat-value{ font-size:1.8rem; font-weight:800; margin-top:6px; }

/* ---------- Empty / loading / error states ---------- */
.empty-state{ text-align:center; padding:48px 20px; color:var(--muted); }
.empty-state .icon{ font-size:2.2rem; margin-bottom:10px; }
.empty-state h3{ color:var(--ink); font-size:1rem; margin:0 0 6px; }
.empty-state p{ font-size:.88rem; margin:0; max-width:320px; margin:0 auto; }

.loading-row{ display:flex; align-items:center; gap:10px; padding:20px; color:var(--muted); font-size:.9rem; font-weight:600; }
.spinner{ width:18px; height:18px; border-radius:50%; border:2.5px solid var(--line); border-top-color:var(--primary); animation:spin .7s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }

.skeleton{ background:linear-gradient(90deg,#EEF0F3 25%,#F6F7F9 37%,#EEF0F3 63%); background-size:400% 100%; animation:shimmer 1.4s ease infinite; border-radius:8px; }
@keyframes shimmer{ 0%{background-position:100% 0;} 100%{background-position:0 0;} }

.alert{ border-radius:var(--radius-sm); padding:14px 16px; font-size:.88rem; }
.alert-danger{ background:var(--danger-bg); color:var(--danger); }
.alert-success{ background:var(--success-bg); color:var(--success); }
.alert-info{ background:#EFF6FF; color:#1D4ED8; }

/* ---------- Toast ---------- */
.toast-wrap{ position:fixed; bottom:calc(var(--bottom-nav-h) + 16px); left:0; right:0; display:flex; justify-content:center; z-index:100; pointer-events:none; }
@media(min-width:900px){ .toast-wrap{ bottom:20px; } }
.toast{
  background:var(--ink); color:#fff; padding:12px 18px; border-radius:999px; font-size:.85rem; font-weight:600;
  box-shadow:var(--shadow-lg); pointer-events:auto; opacity:0; transform:translateY(10px); transition:all .25s ease;
}
.toast.show{ opacity:1; transform:translateY(0); }

/* ---------- Map ---------- */
.map-wrap{ border-radius:var(--radius-md); overflow:hidden; border:1px solid var(--line); position:relative; }
#map, .leaflet-map{ height:320px; width:100%; }

/* ---------- Rota haritası: durak ikonları, kontroller ---------- */
.route-stop-marker-inner{
  width:24px; height:24px; border-radius:50%;
  background:var(--primary); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:.7rem; font-weight:800; font-family:var(--font);
  border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,.4);
}
/* Başlangıç ve varış: aynı marka rengi, sadece belirgin çift halkayla ayrılır (trafik ışığı hissi vermesin) */
.route-stop-marker-inner.is-start,
.route-stop-marker-inner.is-destination{
  border-width:3px; box-shadow:0 0 0 2px var(--primary), 0 1px 4px rgba(0,0,0,.4);
}

.route-via-marker-inner{
  width:9px; height:9px; border-radius:50%;
  background:var(--secondary); border:1.5px solid #fff;
  box-shadow:0 1px 3px rgba(0,0,0,.35);
}

.route-user-marker-inner{
  width:16px; height:16px; border-radius:50%;
  background:#1D4ED8; border:3px solid #fff;
  box-shadow:0 0 0 4px rgba(29,78,216,.25), 0 1px 4px rgba(0,0,0,.4);
}

.map-btn-control{
  width:34px; height:34px; background:#fff; border:2px solid rgba(0,0,0,.15);
  border-radius:4px; font-size:1rem; cursor:pointer; color:var(--ink);
  display:flex; align-items:center; justify-content:center; margin-bottom:6px;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.map-btn-control:hover{ background:var(--bg); }

/* Leaflet popup'larını markaya uydur */
.leaflet-popup-content-wrapper{
  border-radius:var(--radius-sm); box-shadow:0 4px 16px rgba(0,0,0,.22);
  font-family:var(--font);
}
.leaflet-popup-content{ margin:9px 13px; font-size:.86rem; font-weight:700; color:var(--ink); }
.leaflet-popup-tip{ box-shadow:0 2px 6px rgba(0,0,0,.15); }
.leaflet-container a.leaflet-popup-close-button{ color:var(--muted); }
.leaflet-container a.leaflet-popup-close-button:hover{ color:var(--primary); }

/* Mobilde harita: dokunma hedefleri büyük, yükseklik daha kompakt */
@media(max-width:640px){
  #map, .leaflet-map{ height:260px; }
  .map-btn-control{ width:40px; height:40px; }
  .leaflet-touch .leaflet-bar a{ width:34px; height:34px; line-height:34px !important; }
}

/* ---------- Footer ---------- */
.site-footer{
  position:relative; overflow:hidden;
  background:var(--ink); color:#B9BEC7; padding:40px 0 20px; margin-top:20px;
}
.footer-illustration{
  position:absolute; right:0; bottom:0; width:auto; max-height:180px;
  pointer-events:none; user-select:none;
  opacity:.16;
  mask-image:linear-gradient(to left, black 30%, transparent 95%);
  -webkit-mask-image:linear-gradient(to left, black 30%, transparent 95%);
}
@media(max-width:640px){
  .footer-illustration{ max-height:110px; }
}
.footer-inner{ position:relative; z-index:1; }
.footer-top{
  display:flex; flex-wrap:wrap; gap:32px; padding-bottom:24px;
  margin-bottom:16px; border-bottom:1px solid rgba(255,255,255,.1);
}
.footer-brand{ flex:1 1 260px; min-width:220px; }
.footer-disclaimer{ font-size:.8rem; line-height:1.6; max-width:400px; margin:12px 0 0; color:#9AA0AC; }
.footer-links{ display:flex; flex-direction:column; gap:9px; min-width:120px; }
.footer-links-title{ font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#7C828F; margin-bottom:2px; }
.footer-links a{ font-size:.85rem; color:#D4D7DD; }
.footer-links a:hover{ color:#fff; }
.footer-meta{ font-size:.74rem; color:#7C828F; margin:0; }

/* ---------- Utilities ---------- */
.text-center{ text-align:center; }
.mt-0{ margin-top:0; }
.grid-2{ display:grid; grid-template-columns:1fr; gap:14px; }
@media(min-width:720px){ .grid-2{ grid-template-columns:1fr 1fr; } }

/* ---------- Forms (admin) ---------- */
.form-group{ margin-bottom:16px; }
.form-group label{ display:block; font-size:.82rem; font-weight:700; margin-bottom:6px; color:var(--ink-soft); }
.form-control{
  width:100%; padding:11px 13px; border:1px solid var(--line); border-radius:var(--radius-sm);
  font-size:.92rem; font-family:inherit; background:var(--surface); color:var(--ink);
}
.form-control:focus{ outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(139,30,45,.12); }
textarea.form-control{ resize:vertical; min-height:80px; }

table.data-table{ width:100%; border-collapse:collapse; font-size:.88rem; }
table.data-table th, table.data-table td{ padding:12px 10px; text-align:left; border-bottom:1px solid var(--line); }
table.data-table th{ font-size:.72rem; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); font-weight:700; }
.table-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; }

.btn-icon-sm{
  display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px;
  border-radius:8px; border:1px solid var(--line); background:var(--surface); cursor:pointer; color:var(--ink-soft);
}
.btn-icon-sm:hover{ border-color:var(--primary); color:var(--primary); }
.btn-danger-outline{ border-color:var(--danger); color:var(--danger); }

/* ---------- Admin shell ---------- */
.admin-body{ background:var(--bg); }
.admin-shell{ display:flex; min-height:100vh; }
.admin-sidebar{
  width:230px; background:var(--ink); color:#D4D7DD; flex:none; padding:20px 14px;
  position:fixed; top:0; bottom:0; left:0; overflow-y:auto; z-index:60; transition:left .2s ease;
}
.admin-sidebar .brand{ color:#fff; padding:0 10px 20px; }
.admin-sidebar nav a{
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px;
  font-size:.88rem; font-weight:600; color:#B9BEC7; margin-bottom:2px;
}
.admin-sidebar nav a:hover, .admin-sidebar nav a.active{ background:rgba(255,255,255,.08); color:#fff; }
.admin-content{ flex:1; margin-left:0; padding:20px 16px calc(var(--bottom-nav-h) + 20px); }
@media(min-width:900px){
  .admin-content{ margin-left:230px; padding:28px 32px; }
}
@media(max-width:899px){
  .admin-sidebar{ left:-240px; }
  .admin-sidebar.open{ left:0; }
}
.admin-topbar{ display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.admin-menu-toggle{ display:inline-flex; background:none; border:1px solid var(--line); border-radius:8px; width:38px; height:38px; align-items:center; justify-content:center; cursor:pointer; }
@media(min-width:900px){ .admin-menu-toggle{ display:none; } }

.login-shell{ min-height:100vh; display:flex; align-items:center; justify-content:center; background:var(--ink); padding:20px; }
.login-card{ background:#fff; border-radius:var(--radius-lg); padding:32px; width:100%; max-width:380px; box-shadow:var(--shadow-lg); }
