@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap');

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

:root{
  --brand:#16a34a;
  --brand-dark:#15803d;
  --brand-light:#f0fdf4;
  --brand-mid:#22c55e;

  --fast:#f97316;
  --fast-light:#fff7ed;
  --fast-dark:#ea580c;
  --free:#10b981;
  --free-light:#ecfdf5;
  --free-dark:#059669;

  --dark:#09090f;
  --dark-2:#0c150d;
  --dark-3:#0f1f14;

  --gray-50:#f8fafc;
  --gray-100:#f1f5f9;
  --gray-200:#e2e8f0;
  --gray-300:#cbd5e1;
  --gray-400:#94a3b8;
  --gray-500:#64748b;
  --gray-600:#475569;
  --gray-700:#334155;
  --gray-800:#1e293b;
  --gray-900:#0f172a;

  --text:#0f172a;
  --text-muted:#64748b;
  --border:#e2e8f0;
  --border-dark:#334155;

  --radius:10px;
  --radius-lg:16px;
  --radius-xl:24px;
  --shadow-sm:0 1px 2px rgba(0,0,0,.05);
  --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.04);
  --shadow-md:0 4px 16px rgba(15,23,42,.08),0 2px 4px rgba(15,23,42,.04);
  --shadow-lg:0 12px 32px rgba(15,23,42,.1),0 4px 8px rgba(15,23,42,.05);
  --shadow-brand:0 4px 20px rgba(22,163,74,.25);

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

html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{font-family:var(--font);color:var(--text);background:#fff;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none;transition:color .15s}
a:hover{color:var(--brand-dark)}
ul{list-style:none}
img{max-width:100%}

/* ── Layout ── */
.container{max-width:1200px;margin:0 auto;padding:0 20px}
.section{padding:56px 0}
.section.bg-light{background:var(--gray-50)}
.two-col{display:grid;grid-template-columns:1fr;gap:32px}
@media(min-width:768px){.two-col{grid-template-columns:1fr 1fr}}
.page-content{padding:32px 0 72px}
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}
.section-header h2{margin-bottom:0}
.subsection{margin-top:48px}

/* ── Typography ── */
h1{font-size:clamp(1.6rem,3.5vw,2.5rem);font-weight:800;color:var(--gray-900);margin-bottom:12px;line-height:1.2;letter-spacing:-.02em}
h2{font-size:clamp(1.2rem,2.5vw,1.6rem);font-weight:700;color:var(--gray-900);margin-bottom:20px;letter-spacing:-.01em}
h3{font-size:1.05rem;font-weight:600;letter-spacing:-.01em}
h4{font-size:.875rem;font-weight:600;margin-bottom:8px}
p{margin-bottom:12px}
p:last-child{margin-bottom:0}
.result-count{color:var(--text-muted);margin-bottom:20px;font-size:.875rem}
.summary-text{background:var(--brand-light);border-left:3px solid var(--brand);padding:16px 20px;border-radius:var(--radius);margin-bottom:24px}
.summary-text p{margin-bottom:0;font-size:.9rem;color:var(--gray-700)}

/* ══════════════════════════════════════════
   HEADER — brand banner + sticky nav bar
   ══════════════════════════════════════════ */
.site-header{color:#fff}

/* ── Brand banner (scrolls with page) ── */
.header-brand-bar{
  display:block;
  background:linear-gradient(135deg,#030a04 0%,#061209 30%,#091a0d 65%,#0d2414 100%);
  position:relative;overflow:hidden;text-decoration:none;color:inherit
}
.header-brand-bar::before{
  content:'';position:absolute;inset:0;
  background:
    radial-gradient(ellipse 500px 140px at 280px 50%,rgba(22,163,74,.14) 0%,transparent 100%),
    radial-gradient(ellipse 700px 220px at 80% 50%,rgba(16,185,129,.06) 0%,transparent 100%);
  pointer-events:none
}
.header-brand-inner{
  display:flex;align-items:center;justify-content:space-between;
  padding:18px 0;position:relative;z-index:1;gap:24px
}
.brand-left{display:flex;align-items:center;gap:20px;flex:1;min-width:0}
.brand-icon{
  width:82px;height:82px;border-radius:18px;
  background:#fff;padding:6px;flex-shrink:0;object-fit:contain;
  box-shadow:0 0 0 1px rgba(22,163,74,.5),0 0 32px rgba(22,163,74,.45),0 6px 20px rgba(0,0,0,.5);
  transition:box-shadow .25s
}
.header-brand-bar:hover .brand-icon{box-shadow:0 0 0 1px rgba(22,163,74,.7),0 0 48px rgba(22,163,74,.6),0 6px 20px rgba(0,0,0,.5)}
.brand-text{display:flex;flex-direction:column;gap:4px}
.brand-name{
  font-size:clamp(2rem,4.5vw,3.2rem);font-weight:900;letter-spacing:-.04em;line-height:1;
  background:linear-gradient(110deg,#ffffff 0%,#d1fae5 55%,#86efac 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text
}
.brand-tagline{
  font-size:.72rem;font-weight:700;letter-spacing:.2em;
  color:rgba(134,239,172,.6);text-transform:uppercase
}

/* Decorative bolts on the right */
.brand-deco{display:flex;align-items:center;gap:6px;flex-shrink:0;line-height:1;user-select:none}
.brand-deco-bolt{font-style:normal}
.brand-deco-bolt:nth-child(1){font-size:3.8rem;opacity:.18;filter:drop-shadow(0 0 10px rgba(22,163,74,.6))}
.brand-deco-bolt:nth-child(2){font-size:2.8rem;opacity:.10}
.brand-deco-bolt:nth-child(3){font-size:1.8rem;opacity:.05}

/* ── Sticky nav wrapper ── */
.header-sticky{position:sticky;top:0;z-index:100}

/* ── Nav bar ── */
.header-nav-bar{background:#08120a;border-bottom:1px solid rgba(255,255,255,.07)}
.header-nav-inner{display:flex;align-items:center;padding:0;min-height:44px;gap:0}
.site-nav{display:flex;align-items:center;gap:2px;flex-wrap:wrap;width:100%;padding:4px 0}
.site-nav a{color:rgba(255,255,255,.62);font-size:.82rem;font-weight:500;padding:6px 10px;border-radius:8px;transition:all .15s;white-space:nowrap}
.site-nav a:hover{color:#fff;background:rgba(255,255,255,.08);text-decoration:none}
.site-nav a.nav-map,.site-nav a.nav-trip{color:rgba(255,255,255,.9);background:rgba(22,163,74,.22);border:1px solid rgba(22,163,74,.32)}
.site-nav a.nav-map:hover,.site-nav a.nav-trip:hover{background:rgba(22,163,74,.38);color:#fff}
.nav-divider{width:1px;height:20px;background:rgba(255,255,255,.12);margin:0 6px;flex-shrink:0}
.nav-cta{font-size:.775rem !important;font-weight:600 !important;padding:5px 10px !important;border-radius:20px !important;white-space:nowrap;border:1px solid transparent !important;transition:all .18s !important}
.nav-cta-add{color:#d1fae5 !important;background:rgba(22,163,74,.2) !important;border-color:rgba(22,163,74,.35) !important}
.nav-cta-add:hover{background:rgba(22,163,74,.35) !important;color:#fff !important;border-color:rgba(22,163,74,.6) !important}
.nav-cta-claim{color:#ede9fe !important;background:rgba(124,58,237,.25) !important;border-color:rgba(124,58,237,.4) !important}
.nav-cta-claim:hover{background:rgba(124,58,237,.4) !important;color:#fff !important;border-color:rgba(124,58,237,.65) !important}
.nav-cta-signin{color:#fff !important;background:rgba(22,163,74,.85) !important;border-color:#16a34a !important;font-weight:700 !important}
.nav-cta-signin:hover{background:#15803d !important;border-color:#15803d !important}
.nav-cta-profile{color:#fef9c3 !important;background:rgba(234,179,8,.18) !important;border-color:rgba(234,179,8,.35) !important}
.nav-cta-profile:hover{background:rgba(234,179,8,.32) !important;color:#fff !important;border-color:rgba(234,179,8,.6) !important}
@media(max-width:640px){
  .brand-icon{width:60px;height:60px;border-radius:13px}
  .header-brand-inner{padding:14px 0}
  .brand-deco{display:none}
}
/* Profile filter bar */
.profile-filter-bar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.pfb-btn{padding:8px 16px;border-radius:20px;border:1.5px solid #16a34a;background:#f0fdf4;color:#166534;font-size:.825rem;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit}
.pfb-btn:hover{background:#dcfce7}
.pfb-btn.pfb-active{background:#16a34a;color:#fff;border-color:#16a34a}
.pfb-hint{font-size:.8rem;color:#6b7280}
/* Compatibility badges on station detail */
.compat-badge{font-size:.775rem !important;font-weight:600 !important;padding:5px 12px !important;border-radius:14px !important}
.compat-yes{background:#dcfce7 !important;color:#15803d !important;border:1px solid #bbf7d0 !important}
.compat-no{background:#fef9c3 !important;color:#92400e !important;border:1px solid #fde68a !important}
/* Filter hidden cards */
.station-card.cf-hidden{display:none !important}
/* Photo gallery */
.station-gallery{margin:20px 0 4px}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.gallery-thumb{position:relative;border:none;background:none;padding:0;cursor:pointer;border-radius:10px;overflow:hidden;aspect-ratio:4/3;display:block}
.gallery-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .2s}
.gallery-thumb:hover img{transform:scale(1.04)}
.gallery-caption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.65));color:#fff;font-size:.7rem;padding:16px 8px 6px;text-align:left;line-height:1.3}
/* Lightbox */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9999;display:flex;align-items:center;justify-content:center;gap:16px}
.lb-content{max-width:calc(100vw - 140px);max-height:90vh;display:flex;flex-direction:column;align-items:center;gap:10px}
.lb-content img{max-width:100%;max-height:80vh;object-fit:contain;border-radius:8px}
.lb-caption{color:rgba(255,255,255,.8);font-size:.875rem;text-align:center;margin:0}
.lb-close{position:fixed;top:16px;right:20px;background:rgba(255,255,255,.15);border:none;color:#fff;font-size:1.3rem;width:38px;height:38px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10000}
.lb-close:hover{background:rgba(255,255,255,.3)}
.lb-prev,.lb-next{background:rgba(255,255,255,.12);border:none;color:#fff;font-size:2.5rem;width:48px;height:64px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s}
.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,.25)}
/* Owner portal photo section */
.photo-upload-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:16px}
.portal-photo-item{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:4/3;background:#f3f4f6}
.portal-photo-item img{width:100%;height:100%;object-fit:cover}
.portal-photo-delete{position:absolute;top:5px;right:5px;background:rgba(0,0,0,.6);border:none;color:#fff;border-radius:50%;width:26px;height:26px;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center}
.portal-photo-delete:hover{background:rgba(220,38,38,.8)}
.portal-photo-caption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,.6));color:#fff;font-size:.65rem;padding:12px 6px 4px;line-height:1.3}
.photo-empty-state{border:2px dashed #d1d5db;border-radius:12px;padding:28px;text-align:center;color:#9ca3af;font-size:.85rem}
.photo-count-badge{display:inline-block;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:20px;font-size:.75rem;font-weight:600;color:#6b7280;padding:3px 10px;margin-left:8px}
/* Community photo submit */
.community-photo-section{margin-top:24px}
.cps-toggle{display:flex;align-items:center;gap:8px;font-size:.82rem;color:#16a34a;font-weight:600;cursor:pointer;background:none;border:none;font-family:inherit;padding:0}
.cps-toggle:hover{text-decoration:underline}
.cps-form{margin-top:12px;display:none;background:#f8fafc;border:1.5px solid #e5e7eb;border-radius:14px;padding:20px}
.cps-form.open{display:block}
.cps-form input[type=file]{font-size:.82rem;width:100%;padding:8px;border:1.5px dashed #d1d5db;border-radius:8px;background:#fff;cursor:pointer;box-sizing:border-box}
.cps-form input[type=text]{font-size:.82rem;width:100%;padding:9px 12px;border:1.5px solid #d1d5db;border-radius:8px;font-family:inherit;box-sizing:border-box;margin-top:8px}
.cps-note{font-size:.75rem;color:#9ca3af;margin:6px 0 12px}
.photo-submitted-banner{background:#f0fdf4;border:1.5px solid #bbf7d0;color:#16a34a;border-radius:10px;padding:10px 14px;font-size:.82rem;font-weight:600;margin-bottom:16px}
/* Favorites heart button */
.fav-btn {
  background: none; border: 1.5px solid #e5e7eb; border-radius: 20px;
  padding: 5px 10px; font-size: .85rem; cursor: pointer; color: #9ca3af;
  transition: all .15s; font-family: inherit; line-height: 1; white-space: nowrap;
  display: inline-flex; align-items: center; gap: 4px;
}
.fav-btn:hover { border-color: #fca5a5; color: #ef4444; background: #fff5f5; }
.fav-btn.fav-active { border-color: #fca5a5; color: #ef4444; background: #fff5f5; }
.fav-btn-lg { padding: 7px 14px; font-size: .875rem; border-radius: 22px; }
.fav-btn.fav-pop { animation: fav-pop .35s cubic-bezier(.36,.07,.19,.97); }
@keyframes fav-pop {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.35); }
  60%  { transform: scale(.9); }
  100% { transform: scale(1); }
}
/* Nav favorites badge */
.fav-count-badge {
  background: #ef4444; color: #fff; font-size: .65rem; font-weight: 800;
  min-width: 17px; height: 17px; border-radius: 10px; padding: 0 4px;
  display: inline-flex; align-items: center; justify-content: center;
  margin-left: 2px; vertical-align: middle;
}
.nav-cta-fav { background: #fff5f5 !important; color: #dc2626 !important; border-color: #fca5a5 !important; }
.nav-cta-fav:hover { background: #fee2e2 !important; }
/* Directions button group */
.directions-group { margin-top: 14px; }
.directions-label { display: block; font-size: .75rem; font-weight: 600; color: #6b7280; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 8px; }
.directions-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.dir-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 10px; font-size: .82rem; font-weight: 600;
  text-decoration: none; border: 1.5px solid transparent; transition: all .15s;
  white-space: nowrap;
}
.dir-google { background: #fff; border-color: #d1d5db; color: #374151; }
.dir-google:hover { border-color: #4285f4; color: #4285f4; background: #f0fdf4; }
.dir-apple  { background: #fff; border-color: #d1d5db; color: #374151; }
.dir-apple:hover  { border-color: #1c1c1e; color: #1c1c1e; background: #f9fafb; }
.dir-waze   { background: #fff; border-color: #d1d5db; color: #374151; }
.dir-waze:hover   { border-color: #05c8f7; color: #0099cc; background: #ecfeff; }
/* Recently viewed history items */
.history-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.history-clear-btn { background:none; border:1px solid #e5e7eb; border-radius:12px; padding:3px 11px; font-size:.75rem; color:#9ca3af; cursor:pointer; font-family:inherit; transition:all .15s; }
.history-clear-btn:hover { border-color:#fca5a5; color:#ef4444; background:#fff5f5; }
.history-list { display:flex; flex-direction:column; gap:2px; }
.history-item { display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:10px; transition:background .1s; text-decoration:none; color:inherit; }
.history-item:hover { background:#f9fafb; }
.history-dot { width:9px; height:9px; border-radius:50%; flex-shrink:0; }
.history-dot-fast { background:#dc2626; }
.history-dot-free { background:#16a34a; }
.history-dot-std  { background:#2563eb; }
.history-body { flex:1; min-width:0; }
.history-name { font-size:.875rem; font-weight:600; color:#111827; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.history-meta { font-size:.75rem; color:#6b7280; margin-top:1px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.history-time { font-size:.7rem; color:#9ca3af; flex-shrink:0; text-align:right; }
.history-empty { font-size:.85rem; color:#9ca3af; margin:0; padding:8px 0; }
/* Station card rating */
.station-card-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px}
.card-rating{font-size:.8rem;display:flex;align-items:center;gap:4px}
.card-stars{color:#f59e0b;letter-spacing:1px;font-size:.9rem}
.card-rating-val{font-weight:700;color:#111}
.card-rating-ct{color:#9ca3af}
/* Reviews section */
.reviews-section{background:#fff}
.reviews-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-bottom:16px}
.reviews-header h2{margin:0;font-size:.95rem;font-weight:700}
.reviews-aggregate{display:flex;align-items:center;gap:6px}
.agg-stars{color:#f59e0b;font-size:1.1rem;letter-spacing:1px}
.agg-score{font-size:1.05rem;font-weight:800;color:#111}
.agg-count{font-size:.82rem;color:#6b7280}
.reviews-list{display:flex;flex-direction:column;gap:14px;margin-bottom:20px}
.review-item{border-bottom:1px solid #f3f4f6;padding-bottom:12px}
.review-item:last-child{border-bottom:none}
.review-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.review-stars{color:#f59e0b;font-size:1rem;letter-spacing:1px}
.review-who{font-size:.8rem;font-weight:600;color:#374151}
.review-date{font-size:.75rem;color:#9ca3af;margin-left:auto}
.review-text{margin:0;font-size:.85rem;color:#4b5563;line-height:1.55}
.reviews-empty{font-size:.85rem;color:#9ca3af;margin:0 0 18px}
.review-already{background:#f0fdf4;border:1.5px solid #bbf7d0;color:#16a34a;border-radius:10px;padding:10px 14px;font-size:.82rem;font-weight:600}
.review-success-banner{background:#fffbeb;border:1.5px solid #fde68a;color:#92400e;border-radius:10px;padding:10px 14px;font-size:.82rem;font-weight:600;margin-bottom:12px}
.review-error-banner{background:#fef2f2;border:1.5px solid #fecaca;color:#dc2626;border-radius:10px;padding:10px 14px;font-size:.82rem;font-weight:600;margin-bottom:12px}
/* Star picker */
.review-form{margin-top:16px;border-top:1.5px solid #f3f4f6;padding-top:16px}
.review-form-label{font-size:.85rem;font-weight:600;color:#374151;margin:0 0 10px}
.star-picker{display:flex;gap:4px;margin-bottom:14px}
.star-btn{background:none;border:none;font-size:2rem;color:#d1d5db;cursor:pointer;padding:0 3px;line-height:1;transition:color .1s,transform .1s}
.star-btn:hover,.star-btn.lit{color:#f59e0b}
.star-btn:hover{transform:scale(1.15)}
.review-form-fields{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.review-form-fields input,.review-form-fields textarea{border:1.5px solid #d1d5db;border-radius:8px;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#111;outline:none;width:100%;box-sizing:border-box;transition:border-color .15s}
.review-form-fields input:focus,.review-form-fields textarea:focus{border-color:#16a34a}
.review-form-fields textarea{resize:vertical}
#review-submit:disabled{opacity:.4;cursor:not-allowed}
/* Rating on station detail header */
.station-rating-header{display:inline-flex;align-items:center;gap:5px;background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:4px 10px;font-size:.82rem;font-weight:600}
.station-rating-header .sh-stars{color:#f59e0b;letter-spacing:1px}

.search-bar-wrap{background:var(--dark-2);border-bottom:1px solid rgba(255,255,255,.06);padding:10px 0}
.search-form{display:flex;gap:8px;max-width:720px}
.search-form input[type="search"]{flex:1;padding:10px 16px;border:1px solid rgba(255,255,255,.1);border-radius:10px;font-size:.9rem;background:rgba(255,255,255,.07);color:#fff;font-family:var(--font);transition:border-color .15s}
.search-form input[type="search"]::placeholder{color:rgba(255,255,255,.35)}
.search-form input[type="search"]:focus{outline:none;border-color:var(--brand-mid);background:rgba(255,255,255,.1)}
.search-form button{padding:10px 22px;background:var(--brand);color:#fff;border:none;border-radius:10px;font-size:.875rem;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .15s;white-space:nowrap}
.search-form button:hover{background:var(--brand-dark);transform:translateY(-1px)}

/* ── Hero ── */
.hero{background:linear-gradient(135deg,var(--dark) 0%,var(--dark-3) 60%,#0d1f0a 100%);color:#fff;padding:72px 0 60px;text-align:center;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-40%;left:50%;transform:translateX(-50%);width:800px;height:800px;background:radial-gradient(ellipse,rgba(22,163,74,.15) 0%,transparent 70%);pointer-events:none}
.hero h1{color:#fff;font-size:clamp(2rem,5vw,3.25rem);letter-spacing:-.03em;max-width:700px;margin:0 auto 16px}
.hero-sub{font-size:1.1rem;color:rgba(255,255,255,.65);max-width:560px;margin:0 auto 40px;line-height:1.65}
.stats-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:40px}
.stat-item{display:flex;flex-direction:column;align-items:center;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);padding:20px 28px;backdrop-filter:blur(8px);min-width:110px}
.stat-num{font-size:2rem;font-weight:900;color:#fff;line-height:1;letter-spacing:-.03em}
.stat-label{font-size:.72rem;color:rgba(255,255,255,.5);text-transform:uppercase;letter-spacing:.08em;margin-top:6px;font-weight:600}
.empty-state-hero{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);padding:20px 32px;border-radius:var(--radius-lg)}
.empty-state-hero a{color:#86efac;font-weight:600;text-decoration:underline}

/* ── Quick Links ── */
.quick-links{padding:40px 0}
.quick-link-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
@media(min-width:640px){.quick-link-grid{grid-template-columns:repeat(4,1fr)}}
.quick-link-card{display:flex;flex-direction:column;align-items:center;padding:24px 16px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-lg);text-align:center;transition:all .2s;color:var(--text);position:relative;overflow:hidden}
.quick-link-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--brand-light),transparent);opacity:0;transition:opacity .2s}
.quick-link-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand);transform:translateY(-2px);text-decoration:none}
.quick-link-card:hover::before{opacity:1}
.ql-icon{font-size:1.75rem;margin-bottom:10px;position:relative;z-index:1}
.quick-link-card span{font-weight:700;font-size:.9rem;position:relative;z-index:1}
.quick-link-card small{color:var(--text-muted);font-size:.75rem;margin-top:4px;position:relative;z-index:1}

/* ── Tags & Feature Cards ── */
.tag-cloud{display:flex;flex-wrap:wrap;gap:8px}
.tag-link{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;background:var(--gray-100);border-radius:999px;color:var(--gray-700);font-size:.825rem;font-weight:500;border:1.5px solid transparent;transition:all .15s}
.tag-link:hover{background:var(--brand-light);border-color:var(--brand);color:var(--brand);text-decoration:none}
.tag-count{font-size:.72rem;color:var(--text-muted);font-weight:600}
.card-grid-sm{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media(min-width:640px){.card-grid-sm{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1024px){.card-grid-sm{grid-template-columns:repeat(4,1fr)}}
.feature-card{display:flex;flex-direction:column;padding:16px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-lg);transition:all .15s;color:var(--text)}
.feature-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand);text-decoration:none;transform:translateY(-1px)}
.feature-name{font-weight:600;font-size:.875rem}
.feature-count{font-size:.75rem;color:var(--text-muted);margin-top:4px}

/* ── Station Cards ── */
.station-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-top:20px}
@media(min-width:640px){.station-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.station-grid{grid-template-columns:repeat(3,1fr)}}
.station-card{display:flex;flex-direction:column;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;transition:all .2s}
.station-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand);transform:translateY(-2px)}
.station-card-header{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 16px 8px;gap:8px}
.station-name{font-size:.9rem;font-weight:700;line-height:1.3}
.station-name a{color:var(--gray-900)}
.station-name a:hover{color:var(--brand)}
.station-card-body{padding:0 16px 12px;flex:1}
.station-address{font-size:.775rem;color:var(--text-muted);margin-bottom:8px}
.station-meta{display:flex;flex-wrap:wrap;gap:6px;font-size:.75rem;color:var(--text-muted)}
.station-meta span{display:inline-flex;align-items:center;gap:3px}
.station-verified{font-size:.7rem;color:var(--free);margin-top:8px;font-weight:500}
.station-card-footer{padding:10px 16px;border-top:1px solid var(--gray-100);display:flex;justify-content:space-between;align-items:center}
.power-badge{font-weight:700;font-size:.78rem;color:var(--gray-600)}
.power-badge.fast{color:var(--fast);font-weight:800}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:.68rem;font-weight:700;white-space:nowrap;letter-spacing:.01em}
.badge-green{background:var(--free-light);color:var(--free-dark)}
.badge-blue{background:var(--brand-light);color:var(--brand-dark)}
.badge-orange{background:var(--fast-light);color:var(--fast-dark)}
.badge-gray{background:var(--gray-100);color:var(--gray-600)}
.badge-flag{background:#fef9c3;color:#854d0e;border:1px solid #fde047}
.station-card-badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.badge-red{background:#fef2f2;color:#dc2626}
.badge-lg{font-size:.78rem;padding:4px 12px}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 22px;border-radius:10px;font-weight:600;font-size:.875rem;cursor:pointer;border:none;font-family:var(--font);transition:all .15s;line-height:1}
.btn:hover{text-decoration:none;transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn-primary{background:var(--brand);color:#fff;box-shadow:var(--shadow-brand)}
.btn-primary:hover{background:var(--brand-dark);color:#fff}
.btn-secondary{background:var(--gray-100);color:var(--gray-800);border:1.5px solid var(--border)}
.btn-secondary:hover{background:var(--gray-200);color:var(--gray-900)}
.btn-sm{padding:6px 14px;font-size:.78rem;border-radius:8px}
.btn-lg{padding:14px 32px;font-size:1rem;border-radius:12px}
.btn-directions{background:var(--dark);color:#fff;margin-top:12px}
.btn-directions:hover{background:var(--dark-3);color:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

/* ── Breadcrumb ── */
.breadcrumb{margin-bottom:24px}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:4px;font-size:.775rem;color:var(--text-muted)}
.breadcrumb li{display:flex;align-items:center}
.breadcrumb li:not(:last-child)::after{content:'›';margin-left:4px;color:var(--gray-300)}
.breadcrumb a{color:var(--text-muted)}
.breadcrumb a:hover{color:var(--brand)}

/* ── City & Rank Lists ── */
.city-list{display:flex;flex-wrap:wrap;gap:8px}
.city-link{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:.825rem;font-weight:500;transition:all .15s}
.city-link:hover{border-color:var(--brand);color:var(--brand);text-decoration:none;background:var(--brand-light)}
.city-name{font-weight:600}
.city-count{font-size:.72rem;color:var(--text-muted);background:var(--gray-100);padding:1px 6px;border-radius:999px}
.rank-list{display:flex;flex-direction:column;gap:0}
.rank-list li{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--gray-100);font-size:.875rem}
.rank-list li:last-child{border-bottom:none}
.rank-list span{font-size:.78rem;color:var(--text-muted);font-weight:600;background:var(--gray-100);padding:2px 8px;border-radius:999px}

/* ── Pills & Quick Links Row ── */
.quick-links-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.pill-link{padding:6px 16px;border-radius:999px;background:var(--brand-light);color:var(--brand);font-size:.825rem;font-weight:600;border:1.5px solid rgba(22,163,74,.2);transition:all .15s}
.pill-link:hover{background:var(--brand);color:#fff;text-decoration:none;border-color:var(--brand)}

/* ── Map Components ── */
.map-container{border-radius:var(--radius-lg);overflow:hidden;border:1.5px solid var(--border);margin-bottom:32px}
.station-detail-grid{display:grid;grid-template-columns:1fr;gap:32px}
@media(min-width:900px){.station-detail-grid{grid-template-columns:1fr 360px}}
.station-map-wrap{position:sticky;top:80px;align-self:start}

/* ── Station Detail ── */
.station-detail{margin-bottom:40px}
.station-detail-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:28px}
.station-detail-header h1{margin-bottom:0}
.info-section{margin-bottom:28px}
.info-table{width:100%;border-collapse:collapse;font-size:.875rem}
.info-table th,.info-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--gray-100);vertical-align:top}
.info-table th{color:var(--text-muted);font-weight:500;width:38%;white-space:nowrap}
.connection-list{display:flex;flex-direction:column;gap:12px}
.connection-item{background:var(--gray-50);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}
.connection-item strong{display:block;margin-bottom:6px;font-size:.875rem}
.conn-details{display:flex;flex-wrap:wrap;gap:6px;font-size:.775rem;color:var(--text-muted)}
.conn-details span{background:#fff;border:1px solid var(--border);padding:2px 8px;border-radius:6px}

/* ── Filter Form ── */
.filter-form{background:var(--gray-50);border:1.5px solid var(--border);border-radius:var(--radius-lg);padding:16px 20px;margin-bottom:24px}
.filter-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.filter-row label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;font-weight:600;color:var(--gray-700);text-transform:uppercase;letter-spacing:.04em}
.filter-row select,.filter-row input[type="number"]{padding:8px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.875rem;background:#fff;color:var(--text);font-family:var(--font)}
.filter-row select:focus,.filter-row input:focus{outline:none;border-color:var(--brand)}
.checkbox-label{flex-direction:row!important;align-items:center!important;gap:6px!important;font-size:.875rem!important;cursor:pointer;text-transform:none!important;letter-spacing:0!important}
.checkbox-label input{accent-color:var(--brand);width:15px;height:15px}

/* ── Admin ── */
.admin-grid{display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:768px){.admin-grid{grid-template-columns:1fr 1fr}}
.admin-panel{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-lg);padding:24px}
.data-table{width:100%;border-collapse:collapse;font-size:.875rem;margin-top:12px}
.data-table th,.data-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border)}
.data-table th{background:var(--gray-50);font-weight:600;color:var(--gray-700);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}
.import-progress{background:var(--brand-light);border:1px solid rgba(22,163,74,.2);border-radius:var(--radius);padding:16px;margin:16px 0}
.progress-bar{background:var(--gray-200);border-radius:999px;height:6px;overflow:hidden;margin-top:8px}
.progress-fill{background:var(--brand);height:100%;border-radius:999px;transition:width .5s}
.hint{font-size:.78rem;color:var(--text-muted);margin-top:12px}

/* ── Notices ── */
.notice-box{background:#fffbeb;border:1.5px solid #f59e0b;border-radius:var(--radius);padding:14px 18px;margin:20px 0;font-size:.875rem}
.disclaimer-box{background:var(--gray-50);border:1.5px solid var(--border);border-radius:var(--radius);padding:16px 20px;margin-top:24px;font-size:.775rem;color:var(--text-muted)}
.disclaimer-box p{margin-bottom:4px}

/* ── Pagination ── */
.pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:40px 0}
.page-btn{padding:8px 22px;background:#fff;border:1.5px solid var(--border);border-radius:var(--radius);color:var(--brand);font-weight:600;font-size:.875rem;transition:all .15s;font-family:var(--font)}
.page-btn:hover{background:var(--brand);color:#fff;border-color:var(--brand);text-decoration:none}
.page-info{font-size:.8rem;color:var(--text-muted)}

/* ── Footer ── */
.site-footer{background:var(--dark);color:rgba(255,255,255,.5);padding:56px 0 28px;margin-top:80px}
.footer-grid{display:grid;grid-template-columns:1fr;gap:36px;margin-bottom:40px}
@media(min-width:640px){.footer-grid{grid-template-columns:2fr 1fr 1fr}}
.site-footer h4{color:rgba(255,255,255,.9);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px;font-weight:700}
.footer-logo{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.footer-tagline{font-size:.85rem;color:rgba(255,255,255,.4);line-height:1.6;max-width:260px}
.footer-disclaimer{font-size:.75rem;color:rgba(255,255,255,.25);margin-top:12px;font-style:italic}
.site-footer a{color:rgba(255,255,255,.4);transition:color .15s}
.site-footer a:hover{color:rgba(255,255,255,.85)}
.site-footer ul{display:flex;flex-direction:column;gap:8px}
.site-footer li{font-size:.825rem}
.footer-bottom{border-top:1px solid rgba(255,255,255,.06);padding-top:24px;font-size:.75rem;color:rgba(255,255,255,.25);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}
.footer-bottom a{color:rgba(255,255,255,.35)}
.footer-bottom a:hover{color:rgba(255,255,255,.7)}

/* ── Empty & Error ── */
.empty-state{padding:56px 24px;text-align:center;color:var(--text-muted);background:var(--gray-50);border-radius:var(--radius-xl);border:2px dashed var(--gray-200);margin-top:24px}
.error-page{padding:80px 0;text-align:center}
.error-page h1{color:#dc2626;margin-bottom:16px}
.error-page p{color:var(--text-muted);margin-bottom:28px}

/* ── Planner / Map pages (scoped overrides) ── */
.page-subtitle{color:var(--text-muted);margin:-4px 0 28px;max-width:620px;font-size:.95rem}
.planner-form{background:#fff;border:1.5px solid var(--border);border-radius:var(--radius-xl);padding:32px;box-shadow:var(--shadow-md)}
.planner-inputs{display:flex;align-items:flex-end;gap:12px;margin-bottom:20px}
@media(max-width:640px){.planner-inputs{flex-direction:column;align-items:stretch}}
.planner-field{flex:1;display:flex;flex-direction:column;gap:6px}
.planner-field label{font-size:.72rem;font-weight:700;color:var(--gray-500);text-transform:uppercase;letter-spacing:.06em}
.planner-field input{padding:12px 16px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:1rem;transition:border-color .15s;font-family:var(--font);color:var(--text)}
.planner-field input:focus{outline:none;border-color:var(--brand)}
.geocode-hint{font-size:.72rem;color:var(--free);min-height:18px;font-weight:500}
.planner-swap{font-size:1.25rem;cursor:pointer;padding:10px 6px;color:var(--gray-400);user-select:none;transition:color .15s}
.planner-swap:hover{color:var(--brand)}
.planner-options{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:24px;padding-top:4px}
.planner-option-group{display:flex;flex-direction:column;gap:5px}
.planner-option-group label{font-size:.72rem;font-weight:700;color:var(--gray-500);text-transform:uppercase;letter-spacing:.06em}
.planner-option-group select{padding:8px 12px;border:1.5px solid var(--border);border-radius:var(--radius);font-size:.875rem;background:#fff;color:var(--text);font-family:var(--font)}
.planner-option-group select:focus{outline:none;border-color:var(--brand)}
.planner-checkbox{display:flex;align-items:center;gap:8px;font-size:.875rem;color:var(--gray-700);cursor:pointer;font-weight:500}
.planner-checkbox input{width:16px;height:16px;accent-color:var(--brand)}

.results-section{border-top:3px solid var(--brand);background:var(--gray-50)}
.planner-layout{display:grid;grid-template-columns:380px 1fr;height:calc(100vh - 60px);max-height:820px}
@media(max-width:900px){.planner-layout{grid-template-columns:1fr;height:auto;max-height:none}}
.planner-sidebar{overflow-y:auto;padding:20px;border-right:1px solid var(--border);background:#fff;display:flex;flex-direction:column}
.sidebar-header{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--gray-100)}
.route-summary{font-size:.875rem;color:var(--gray-700)}
.summary-row{font-size:1rem;font-weight:800;margin-bottom:4px;color:var(--gray-900)}
.summary-meta{font-size:.78rem;color:var(--text-muted)}
.btn-gmaps{display:flex;align-items:center;gap:8px;background:var(--brand);color:#fff;border-radius:10px;padding:11px 16px;font-size:.875rem;font-weight:600;text-decoration:none;transition:all .15s;width:100%;justify-content:center}
.btn-gmaps:hover{background:var(--brand-dark);color:#fff;transform:translateY(-1px)}
.stops-list{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}
.stop-card{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1.5px solid var(--brand-light);border-radius:var(--radius);background:var(--brand-light);cursor:pointer;transition:border-color .15s}
.stop-card:hover{border-color:var(--brand)}
.stop-number{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#fff;font-weight:700;font-size:.8rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.stop-info{flex:1;min-width:0}
.stop-title{font-weight:700;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stop-meta{font-size:.75rem;color:var(--gray-700);margin-top:2px}
.stop-sub{font-size:.7rem;color:var(--text-muted);margin-top:2px}
.stop-connectors{font-size:.68rem;color:var(--gray-400);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stop-detail-link{color:var(--brand);font-size:1rem;padding:4px;text-decoration:none;flex-shrink:0}
.kw-badge{font-size:.68rem;padding:1px 6px;border-radius:999px;background:var(--gray-100);font-weight:700}
.kw-fast{background:var(--fast-light);color:var(--fast-dark)}
.free-badge{font-size:.68rem;padding:1px 6px;border-radius:999px;background:var(--free-light);color:var(--free-dark);font-weight:700}
.no-stops{color:var(--text-muted);font-size:.85rem;padding:12px}
.nearby-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}
.nearby-item{display:flex;flex-direction:column;padding:6px 8px;border-radius:6px;font-size:.72rem;background:var(--gray-50);border:1px solid var(--gray-100)}
.nearby-selected{background:var(--brand-light);border-color:rgba(99,102,241,.2)}
.nearby-name{font-weight:600;color:var(--gray-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nearby-meta{color:var(--gray-400);font-size:.65rem}
.planner-map-wrap{position:relative;display:flex;flex-direction:column}
#planner-map{flex:1;min-height:500px}
.map-legend{display:flex;gap:16px;padding:8px 16px;background:#fff;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-muted)}
.legend-item{display:flex;align-items:center;gap:6px}
.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.legend-stop{background:var(--brand)}
.legend-nearby{background:var(--fast)}
.map-pin{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.map-pin-stop{background:var(--brand);color:#fff;width:36px;height:36px;font-size:13px}
.map-pin-nearby{background:var(--fast);color:#fff;width:26px;height:26px;font-size:9px}
.map-pin-origin{background:var(--free);color:#fff;width:32px;height:32px}
.map-pin-dest{background:#dc2626;color:#fff;width:32px;height:32px}
.map-popup{font-size:.78rem;line-height:1.5;max-width:220px}
.popup-stop-num{font-size:.72rem;font-weight:700;color:var(--brand);margin-bottom:4px}
.alert-error{background:#fef2f2;border:1.5px solid #fecaca;color:#991b1b;padding:14px 18px;border-radius:var(--radius)}

/* ── Map Widget page ── */
html.map-page-html,body.map-page{height:100%}
body.map-page{display:flex;flex-direction:column}
.map-page-layout{display:flex;flex:1;height:calc(100vh - 112px);overflow:hidden}
@media(max-width:700px){.map-page-layout{flex-direction:column;height:auto}}
.map-panel{width:340px;min-width:280px;flex-shrink:0;display:flex;flex-direction:column;background:#fff;border-right:1.5px solid var(--border);z-index:10}
@media(max-width:700px){.map-panel{width:100%;max-height:240px;border-right:none;border-bottom:1.5px solid var(--border)}}
.map-panel-top{padding:14px;border-bottom:1px solid var(--gray-100);flex-shrink:0}
.map-search-wrap{display:flex;align-items:center;border:1.5px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;margin-bottom:10px;transition:border-color .15s}
.map-search-wrap:focus-within{border-color:var(--brand)}
#map-search{flex:1;border:none;outline:none;padding:9px 12px;font-size:.875rem;color:var(--text);background:transparent;font-family:var(--font)}
.map-search-icon{background:none;border:none;padding:9px 12px;cursor:pointer;color:var(--text-muted);display:flex;align-items:center}
.map-search-icon:hover{color:var(--brand)}
.map-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.filter-btn{padding:5px 12px;border:1.5px solid var(--border);border-radius:999px;font-size:.75rem;font-weight:600;background:#fff;color:var(--text-muted);cursor:pointer;transition:all .15s;font-family:var(--font)}
.filter-btn.active,.filter-btn:hover{border-color:var(--brand);background:var(--brand-light);color:var(--brand)}
.map-stats{font-size:.7rem;color:var(--text-muted)}
.map-results-list{flex:1;overflow-y:auto;padding:6px 0}
.map-results-placeholder{padding:28px 16px;text-align:center;color:var(--text-muted)}
.placeholder-icon{font-size:2rem;margin-bottom:10px}
.map-results-placeholder p{font-size:.78rem;line-height:1.6;margin:0}
.result-item{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--gray-50);transition:background .1s}
.result-item:hover{background:var(--brand-light)}
.result-body{min-width:0}
.result-name{font-size:.8rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--gray-900)}
.result-meta{font-size:.7rem;color:var(--text-muted);margin-top:2px}
.result-more{text-align:center;font-size:.7rem;color:var(--text-muted);padding:10px}
.map-container-wrap{flex:1;position:relative;display:flex;flex-direction:column}
#main-map{flex:1}
.locate-btn{position:absolute;bottom:48px;right:12px;z-index:1000;width:36px;height:36px;border-radius:8px;background:#fff;border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--gray-700);box-shadow:var(--shadow-md);transition:all .15s}
.locate-btn:hover{border-color:var(--brand);color:var(--brand)}
.map-legend-bar{position:absolute;bottom:8px;left:8px;z-index:1000;background:rgba(255,255,255,.92);border-radius:10px;padding:6px 12px;display:flex;gap:14px;font-size:.68rem;color:var(--gray-600);backdrop-filter:blur(6px);border:1px solid rgba(0,0,0,.06)}
.map-legend-bar span{display:flex;align-items:center;gap:5px;font-weight:500}
.ldot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0}
.ldot-fast{background:var(--fast)}
.ldot-free{background:var(--free)}
.ldot-std{background:var(--brand)}
.station-pin{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.25)}
.pin-fast{background:var(--fast);color:#fff}
.pin-free{background:var(--free);color:#fff}
.pin-std{background:var(--brand);color:#fff}
.cluster-pin{display:flex;align-items:center;justify-content:center;border-radius:50%;border:3px solid #fff;font-weight:700;color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.cluster-sm{width:32px;height:32px;font-size:11px;background:var(--brand)}
.cluster-md{width:40px;height:40px;font-size:13px;background:var(--fast)}
.cluster-lg{width:50px;height:50px;font-size:15px;background:#dc2626}
.map-popup{font-size:.78rem;line-height:1.5;min-width:180px}
.popup-title{font-weight:700;font-size:.875rem;margin-bottom:5px;color:var(--gray-900)}
.popup-badge{display:inline-block;font-size:.65rem;font-weight:700;padding:2px 8px;border-radius:999px;margin-bottom:6px}
.popup-fast{background:var(--fast-light);color:var(--fast-dark)}
.popup-free{background:var(--free-light);color:var(--free-dark)}
.popup-std{background:var(--brand-light);color:var(--brand-dark)}
.popup-addr,.popup-op,.popup-conn,.popup-pts{color:var(--gray-500);font-size:.72rem}
.popup-link{display:inline-block;margin-top:8px;font-size:.75rem;font-weight:600;color:var(--brand)}
.popup-link:hover{text-decoration:underline}

/* ── Theme toggle button (nav) ── */
.theme-wrap{position:relative;display:flex;align-items:center}
.theme-toggle-btn{
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);
  border-radius:8px;color:rgba(255,255,255,.65);padding:5px 9px;
  font-size:.85rem;cursor:pointer;font-family:var(--font);transition:all .15s;
  line-height:1;display:flex;align-items:center;
}
.theme-toggle-btn:hover{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.25)}

/* ── Theme settings panel ── */
.theme-panel{
  position:absolute;top:calc(100% + 10px);right:0;z-index:400;
  background:#fff;border:1.5px solid #e2e8f0;border-radius:16px;
  box-shadow:0 8px 32px rgba(0,0,0,.12);padding:16px;min-width:238px;
  animation:tm-pop .15s ease;color:#0f172a;
}
@keyframes tm-pop{from{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:none}}
.tm-header{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#94a3b8;margin-bottom:10px}
.tm-modes{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:4px}
.tm-btn{
  padding:8px 6px;border:1.5px solid #e2e8f0;border-radius:10px;
  background:#f8fafc;font-size:.77rem;font-weight:500;cursor:pointer;
  font-family:var(--font);color:#374151;transition:all .15s;text-align:center;
}
.tm-btn:hover{border-color:#16a34a;color:#16a34a;background:#f0fdf4}
.tm-btn.tm-active{border-color:#16a34a;background:#f0fdf4;color:#15803d;font-weight:700}
.tm-sched-block{border-top:1px solid #f3f4f6;padding-top:12px;margin-top:10px}
.tm-sched-label{font-size:.68rem;font-weight:700;color:#9ca3af;margin:0 0 8px;text-transform:uppercase;letter-spacing:.05em}
.tm-sched-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.tm-sched-sep{font-size:.85rem;color:#94a3b8;flex-shrink:0}
.tm-time-group{display:flex;flex-direction:column;gap:3px;flex:1}
.tm-time-group label{font-size:.65rem;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em}
.tm-time-group input[type="time"]{
  padding:6px 8px;border:1.5px solid #e2e8f0;border-radius:8px;
  font-size:.8rem;font-family:var(--font);color:#111827;
  background:#fff;outline:none;width:100%;transition:border-color .15s;
}
.tm-time-group input[type="time"]:focus{border-color:#16a34a}
.tm-sched-note{font-size:.67rem;color:#9ca3af;margin:4px 0 0;line-height:1.4}
.tm-status{
  font-size:.74rem;color:#6b7280;border-top:1px solid #f3f4f6;
  padding-top:10px;margin-top:10px;font-weight:500;text-align:center;
}

/* ═══════════════════════════════════════
   DARK MODE
   ═══════════════════════════════════════ */

/* 1. CSS variable overrides — cascades through all var()-based rules */
[data-theme="dark"]{
  --text:#f1f5f9;
  --text-muted:#94a3b8;
  --border:#334155;
  --border-dark:#475569;
  --gray-50:#1e293b;
  --gray-100:#334155;
  --gray-200:#475569;
  --gray-300:#64748b;
  --gray-400:#94a3b8;
  --gray-500:#94a3b8;
  --gray-600:#cbd5e1;
  --gray-700:#cbd5e1;
  --gray-800:#e2e8f0;
  --gray-900:#f1f5f9;
  --brand-light:#052e16;
  --brand-dark:#86efac;
  --fast-light:#431407;
  --fast-dark:#fdba74;
  --free-light:#064e3b;
  --free-dark:#6ee7b7;
  --shadow-sm:0 1px 2px rgba(0,0,0,.25);
  --shadow:0 1px 3px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2);
  --shadow-md:0 4px 16px rgba(0,0,0,.35),0 2px 4px rgba(0,0,0,.2);
  --shadow-lg:0 12px 32px rgba(0,0,0,.4),0 4px 8px rgba(0,0,0,.2);
  --shadow-brand:0 4px 20px rgba(99,102,241,.4);
}

/* 2. Page body & base */
[data-theme="dark"] body{background:#0f172a;color:#f1f5f9}
[data-theme="dark"] h1,[data-theme="dark"] h2,[data-theme="dark"] h3{color:#f1f5f9}
[data-theme="dark"] a{color:#4ade80}
[data-theme="dark"] a:hover{color:#86efac}

/* 3. Cards & surfaces */
[data-theme="dark"] .station-card,
[data-theme="dark"] .quick-link-card,
[data-theme="dark"] .feature-card{background:#1e293b;border-color:#334155}
[data-theme="dark"] .station-card:hover,
[data-theme="dark"] .quick-link-card:hover,
[data-theme="dark"] .feature-card:hover{border-color:#4ade80}
[data-theme="dark"] .station-card-footer{border-color:#334155}
[data-theme="dark"] .station-name a{color:#f1f5f9}
[data-theme="dark"] .station-name a:hover{color:#4ade80}
[data-theme="dark"] .card-rating-val{color:#f1f5f9}

/* 4. Buttons */
[data-theme="dark"] .btn-secondary{background:#334155;color:#e2e8f0;border-color:#475569}
[data-theme="dark"] .btn-secondary:hover{background:#475569;color:#f1f5f9}
[data-theme="dark"] .page-btn{background:#1e293b;border-color:#475569;color:#4ade80}
[data-theme="dark"] .page-btn:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
[data-theme="dark"] .fav-btn{border-color:#475569;color:#64748b;background:transparent}
[data-theme="dark"] .fav-btn:hover,[data-theme="dark"] .fav-btn.fav-active{border-color:#fca5a5;color:#ef4444;background:#1e293b}

/* 5. Badges */
[data-theme="dark"] .badge-gray{background:#334155;color:#94a3b8}
[data-theme="dark"] .badge-green{background:#064e3b;color:#6ee7b7}
[data-theme="dark"] .badge-blue{background:#052e16;color:#4ade80}
[data-theme="dark"] .badge-orange{background:#431407;color:#fdba74}
[data-theme="dark"] .badge-teal{background:#064e3b;color:#6ee7b7}
[data-theme="dark"] .badge-flag{background:#422006;color:#fbbf24;border-color:#92400e}

/* 6. Links / pills / tags */
[data-theme="dark"] .pill-link{background:#052e16;color:#4ade80;border-color:rgba(99,102,241,.3)}
[data-theme="dark"] .pill-link:hover{background:var(--brand);color:#fff}
[data-theme="dark"] .tag-link{background:#334155;color:#cbd5e1;border-color:transparent}
[data-theme="dark"] .tag-link:hover{background:#052e16;border-color:#4ade80;color:#4ade80}
[data-theme="dark"] .city-link{background:#1e293b;border-color:#334155;color:#f1f5f9}
[data-theme="dark"] .city-link:hover{border-color:#4ade80;color:#4ade80;background:#052e16}
[data-theme="dark"] .city-count{background:#334155;color:#94a3b8}
[data-theme="dark"] .rank-list li{border-color:#334155}
[data-theme="dark"] .rank-list span{background:#334155;color:#94a3b8}

/* 7. Filter / search forms */
[data-theme="dark"] .filter-form{background:#1e293b;border-color:#334155}
[data-theme="dark"] .filter-row label{color:#94a3b8}
[data-theme="dark"] .filter-row select,
[data-theme="dark"] .filter-row input[type="number"]{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .filter-btn{background:#1e293b;color:#94a3b8;border-color:#475569}
[data-theme="dark"] .filter-btn.active,
[data-theme="dark"] .filter-btn:hover{background:#052e16;color:#4ade80;border-color:#16a34a}

/* 8. Info sections & tables (station detail) */
[data-theme="dark"] .info-table th{color:#94a3b8}
[data-theme="dark"] .info-table td{color:#f1f5f9}
[data-theme="dark"] .info-table th,
[data-theme="dark"] .info-table td{border-color:#334155}
[data-theme="dark"] .connection-item{background:#334155;border-color:#475569}
[data-theme="dark"] .conn-details span{background:#1e293b;border-color:#475569;color:#94a3b8}
[data-theme="dark"] .summary-text{background:#052e16;border-color:#16a34a}
[data-theme="dark"] .summary-text p{color:#cbd5e1}

/* 9. Direction buttons */
[data-theme="dark"] .dir-google,
[data-theme="dark"] .dir-apple,
[data-theme="dark"] .dir-waze{background:#1e293b;border-color:#475569;color:#cbd5e1}
[data-theme="dark"] .dir-google:hover{border-color:#4285f4;color:#4285f4;background:#1e293b}
[data-theme="dark"] .dir-apple:hover{border-color:#aaa;color:#ddd;background:#1e293b}
[data-theme="dark"] .dir-waze:hover{border-color:#05c8f7;color:#05c8f7;background:#1e293b}

/* 10. Reviews */
[data-theme="dark"] .reviews-section{background:transparent}
[data-theme="dark"] .review-item{border-color:#334155}
[data-theme="dark"] .review-who{color:#cbd5e1}
[data-theme="dark"] .review-text{color:#94a3b8}
[data-theme="dark"] .review-form{border-color:#334155}
[data-theme="dark"] .review-form-label{color:#cbd5e1}
[data-theme="dark"] .review-form-fields input,
[data-theme="dark"] .review-form-fields textarea{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .star-btn{color:#334155}
[data-theme="dark"] .star-btn:hover,[data-theme="dark"] .star-btn.lit{color:#f59e0b}
[data-theme="dark"] .review-success-banner{background:#1a2e1a;border-color:#16a34a;color:#6ee7b7}
[data-theme="dark"] .review-error-banner{background:#2a1010;border-color:#dc2626;color:#fca5a5}
[data-theme="dark"] .review-already{background:#1e293b;border-color:#334155;color:#6ee7b7}
[data-theme="dark"] .station-rating-header{background:#1e1b0a;border-color:#92400e;color:#fbbf24}
[data-theme="dark"] .agg-score{color:#f1f5f9}

/* 11. History sidebar */
[data-theme="dark"] .history-item:hover{background:#1e293b}
[data-theme="dark"] .history-name{color:#f1f5f9}
[data-theme="dark"] .history-clear-btn{border-color:#475569;color:#64748b;background:transparent}
[data-theme="dark"] .history-clear-btn:hover{border-color:#fca5a5;color:#ef4444;background:#1e293b}

/* 12. Profile page */
[data-theme="dark"] .pfb-btn{background:#052e16;color:#4ade80;border-color:#16a34a}
[data-theme="dark"] .pfb-btn:hover{background:#052e16;border-color:#22c55e}
[data-theme="dark"] .pfb-btn.pfb-active{background:#16a34a;color:#fff}

/* 13. Compatibility badges on station detail */
[data-theme="dark"] .compat-yes{background:#064e3b !important;color:#6ee7b7 !important;border-color:#065f46 !important}
[data-theme="dark"] .compat-no{background:#1a1200 !important;color:#fbbf24 !important;border-color:#92400e !important}

/* 14. Photo / gallery */
[data-theme="dark"] .photo-empty-state{border-color:#334155;color:#64748b}
[data-theme="dark"] .photo-count-badge{background:#334155;border-color:#475569;color:#94a3b8}
[data-theme="dark"] .portal-photo-item{background:#334155}
[data-theme="dark"] .cps-form{background:#1e293b;border-color:#334155}
[data-theme="dark"] .cps-form input[type=file]{border-color:#475569;background:#0f172a;color:#94a3b8}
[data-theme="dark"] .cps-form input[type=text]{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .cps-toggle{color:#4ade80}
[data-theme="dark"] .photo-submitted-banner{background:#064e3b;border-color:#065f46;color:#6ee7b7}

/* 15. Share dropdown (station page) */
[data-theme="dark"] .share-btn{background:#1e293b;border-color:#475569;color:#cbd5e1}
[data-theme="dark"] .share-btn:hover{border-color:#4ade80;color:#4ade80;background:#052e16}
[data-theme="dark"] .share-dropdown{background:#1e293b;border-color:#334155;box-shadow:0 8px 24px rgba(0,0,0,.4)}
[data-theme="dark"] .share-option{color:#cbd5e1}
[data-theme="dark"] .share-option:hover{background:#334155;color:#4ade80}

/* 16. Notice / disclaimer boxes */
[data-theme="dark"] .notice-box{background:#1a1200;border-color:#92400e;color:#fbbf24}
[data-theme="dark"] .disclaimer-box{background:#1e293b;border-color:#334155;color:#64748b}
[data-theme="dark"] .empty-state{background:#1e293b;border-color:#334155;color:#64748b}
[data-theme="dark"] .alert-error{background:#2a1010;border-color:#dc2626;color:#fca5a5}

/* 17. Admin */
[data-theme="dark"] .admin-panel{background:#1e293b;border-color:#334155}
[data-theme="dark"] .data-table th{background:#334155;color:#94a3b8}
[data-theme="dark"] .data-table th,
[data-theme="dark"] .data-table td{border-color:#334155}
[data-theme="dark"] .import-progress{background:#052e16;border-color:rgba(99,102,241,.3)}

/* 18. Map page */
[data-theme="dark"] .map-panel{background:#1e293b;border-color:#334155}
[data-theme="dark"] .map-panel-top{border-color:#334155}
[data-theme="dark"] .map-search-wrap{background:#1e293b;border-color:#475569}
[data-theme="dark"] #map-search{color:#f1f5f9}
[data-theme="dark"] .result-item{border-color:#334155}
[data-theme="dark"] .result-item:hover{background:#052e16}
[data-theme="dark"] .result-name{color:#f1f5f9}
[data-theme="dark"] .map-legend{background:#1e293b;border-color:#334155;color:#94a3b8}
[data-theme="dark"] .map-legend-bar{background:rgba(15,23,42,.92);color:#94a3b8;border-color:rgba(255,255,255,.06)}
[data-theme="dark"] .locate-btn{background:#1e293b;border-color:#475569;color:#94a3b8}
[data-theme="dark"] .locate-btn:hover{border-color:#4ade80;color:#4ade80}

/* 19. Trip planner */
[data-theme="dark"] .planner-form{background:#1e293b;border-color:#334155}
[data-theme="dark"] .planner-sidebar{background:#1e293b;border-color:#334155}
[data-theme="dark"] .planner-field input{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .planner-option-group select{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .planner-checkbox{color:#cbd5e1}
[data-theme="dark"] .sidebar-header{border-color:#334155}
[data-theme="dark"] .route-summary{color:#cbd5e1}
[data-theme="dark"] .summary-row{color:#f1f5f9}
[data-theme="dark"] .stop-card{background:#052e16;border-color:rgba(99,102,241,.3)}
[data-theme="dark"] .stop-title{color:#f1f5f9}
[data-theme="dark"] .nearby-item{background:#334155;border-color:#475569}
[data-theme="dark"] .nearby-selected{background:#052e16;border-color:rgba(99,102,241,.3)}
[data-theme="dark"] .nearby-name{color:#f1f5f9}
[data-theme="dark"] .map-legend{border-color:#334155}
[data-theme="dark"] .results-section{background:#1e293b;border-color:#334155}
[data-theme="dark"] .kw-badge{background:#334155;color:#94a3b8}

/* 20. Breadcrumb */
[data-theme="dark"] .breadcrumb a{color:#64748b}
[data-theme="dark"] .breadcrumb a:hover{color:#4ade80}
[data-theme="dark"] .breadcrumb li:not(:last-child)::after{color:#475569}

/* 21. Theme panel dark styles */
[data-theme="dark"] .theme-panel{background:#1e293b;border-color:#334155;color:#f1f5f9;box-shadow:0 8px 32px rgba(0,0,0,.4)}
[data-theme="dark"] .tm-header{color:#475569}
[data-theme="dark"] .tm-btn{background:#334155;border-color:#475569;color:#cbd5e1}
[data-theme="dark"] .tm-btn:hover{border-color:#4ade80;color:#4ade80;background:#052e16}
[data-theme="dark"] .tm-btn.tm-active{border-color:#4ade80;background:#052e16;color:#86efac;font-weight:700}
[data-theme="dark"] .tm-sched-block{border-color:#334155}
[data-theme="dark"] .tm-sched-label{color:#475569}
[data-theme="dark"] .tm-time-group label{color:#475569}
[data-theme="dark"] .tm-time-group input[type="time"]{background:#0f172a;border-color:#475569;color:#f1f5f9}
[data-theme="dark"] .tm-time-group input[type="time"]:focus{border-color:#4ade80}
[data-theme="dark"] .tm-sched-note{color:#475569}
[data-theme="dark"] .tm-status{border-color:#334155;color:#64748b}

/* ── About section ── */
.bg-dark-green{background:linear-gradient(135deg,#040d05 0%,#071510 50%,#0a1e0e 100%)}
.about-block{max-width:760px;margin:0 auto;color:rgba(255,255,255,.88)}
.about-block h2{color:#fff;margin-bottom:20px}
.about-block p{line-height:1.75;margin-bottom:16px;color:rgba(255,255,255,.8)}
.about-block a{color:#86efac;text-decoration:underline;text-decoration-color:rgba(134,239,172,.4)}
.about-block a:hover{color:#d1fae5;text-decoration-color:rgba(209,250,233,.7)}
.about-feedback{font-size:.9rem;color:rgba(255,255,255,.55) !important;margin-top:24px;margin-bottom:0 !important;font-style:italic}
.about-feedback-link{color:#4ade80 !important;text-decoration:underline;text-decoration-color:rgba(74,222,128,.4);font-style:normal;font-weight:600}
.about-feedback-link:hover{color:#86efac !important}
.btn-contact-us{
  display:inline-flex;align-items:center;gap:8px;
  margin-top:24px;padding:12px 28px;
  background:rgba(22,163,74,.2);color:#d1fae5;
  border:1.5px solid rgba(22,163,74,.45);border-radius:10px;
  font-size:.9rem;font-weight:700;letter-spacing:.01em;
  text-decoration:none;transition:all .18s;
}
.btn-contact-us:hover{
  background:rgba(22,163,74,.35);color:#fff;
  border-color:rgba(22,163,74,.7);
  transform:translateY(-1px);
  box-shadow:0 4px 16px rgba(22,163,74,.25);
  text-decoration:none;
}
