/* Extracted from index.html on 2026-05-26 — see scripts/templates/shell.html for inline critical CSS. */
/* =====================================================================
   ATRAKCJE · POMORZE — design system
   ===================================================================== */

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; font-family: inherit; }
a { color: inherit; text-decoration: none; cursor: pointer; }
img, svg { display: block; max-width: 100%; }
em { font-style: italic; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }

/* ── TOKENS ─────────────────────────────────────────────────────────── */
:root {
  /* fonts — the actual family names are injected by next/font (layout.js) as
     --font-text / --font-display on <html>, self-hosted, with system fallbacks. */

  /* radii */
  --rad-sm: 8px;
  --rad:    14px;
  --rad-lg: 20px;
  --rad-pill: 999px;

  /* Sticky top offset — clears the 67px sticky header + 28px wave + breathing
     room so sticky sidebars (filters, booking card) don't disappear under
     the wave when the page scrolls. */
  --sticky-top: 110px;

  /* colors — clean white + sea blue accent */
  --bg:        #ffffff;
  --surface:   #ffffff;
  --surface-2: #f4f7fa;
  --surface-3: #e7edf3;

  --ink:        #0b1a2b;
  --ink-soft:   #56657a;
  --ink-faint:  rgba(11,26,43,.14);
  --rule:       rgba(11,26,43,.08);
  --rule-strong:rgba(11,26,43,.22);

  --accent:      #0a5fa1;
  --accent-deep: #073d6c;
  --accent-soft: #e6eef7;
  --accent-ink:  #ffffff;
  --accent-tint: #c9e0f2;

  --positive:    #2d7a3f;
  --positive-bg: #e8f3df;
  --positive-ring: #c2dfa8;

  --rating:      #f9b418;

  --map-bg:    #f1f6fa;
  --map-water: #b9d4dd;

  --photo-skel:#eef0f0;

  --shadow-xs: 0 1px 2px rgba(11,26,43,.05);
  --shadow-sm: 0 2px 6px rgba(11,26,43,.06);
  --shadow:    0 6px 18px rgba(11,26,43,.08);
  --shadow-lg: 0 18px 44px rgba(11,26,43,.12);

  /* motion */
  --t-fast: 120ms;
  --t-mid:  200ms;
  --t-slow: 380ms;
  --ease:   cubic-bezier(.2, .7, .2, 1);
}

/* ── BASE ───────────────────────────────────────────────────────────── */
body {
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 1.5;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  position: relative;
  font-feature-settings: "cv11", "ss01";
}
/* Global wallpaper — soft blue + green radial wash lifted from /swipe.
   Sits fixed behind everything so every screen gets the same tinted bg. */
body::before {
  content: "";
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  /* Wide, horizontally-centred ellipse so the wash spans the FULL width:
     a soft blue glow across the top, fading to transparent. */
  background:
    radial-gradient(150% 70% at 50% -8%, rgba(10,95,161,0.11) 0%, transparent 60%);
}

/* ── Landing hero — trip-planner story (replaces the photo hero) ──────── */
.lp-hero { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: 48px; align-items: center; padding: 28px 0 56px; }
@media (max-width: 900px) { .lp-hero { grid-template-columns: 1fr; gap: 34px; padding-top: 8px; } }
.lp-kicker { display: inline-block; font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); }
.lp-eyebrow { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 700; color: #0a5fa1; background: #e6eef7; padding: 6px 13px; border-radius: 999px; }
.lp-h1 { font-family: "Bricolage Grotesque", "Plus Jakarta Sans", sans-serif; font-weight: 800; font-size: clamp(36px, 5.4vw, 58px); line-height: 1.03; letter-spacing: -0.035em; color: #0b1a2b; margin: 14px 0 0; text-wrap: balance; }
.lp-h1 em { font-style: normal; color: #0a5fa1; }
.lp-lede { font-size: 18px; line-height: 1.62; color: #46566a; margin: 20px 0 0; max-width: 50ch; }
.lp-cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; margin-top: 30px; }
.lp-cta-row .btn { padding: 13px 24px; font-size: 15px; display: inline-flex; align-items: center; gap: 8px; }
.lp-textlink { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; font-size: 15px; color: var(--accent); padding: 12px 4px; }
.lp-textlink svg { transition: transform var(--t-fast) var(--ease); }
.lp-textlink:hover svg { transform: translateX(3px); }
.lp-stats { display: flex; align-items: center; gap: 30px; margin: 34px 0 0; padding: 0; }
.lp-stat { display: flex; flex-direction: column; gap: 3px; }
.lp-stat dt { font-family: var(--font-display); font-weight: 800; font-size: 26px; line-height: 1; letter-spacing: -.02em; color: var(--ink); }
.lp-stat dd { margin: 0; font-size: 13px; color: var(--ink-soft); }
@media (max-width: 560px) { .lp-stats { gap: 22px; } .lp-stat dt { font-size: 22px; } }

/* preview card — sample itinerary */
.lp-preview { background: #fff; border: 1px solid rgba(11,26,43,.08); border-radius: 18px; box-shadow: 0 12px 34px rgba(11,26,43,.08); overflow: hidden; }
.lp-preview-cover { position: relative; aspect-ratio: 16 / 10; background: #eef0f0; }
.lp-preview-cover .ph, .lp-preview-cover picture { display: block; width: 100%; height: 100%; }
.lp-preview-cover img { width: 100%; height: 100%; object-fit: cover; }
.lp-preview-badge { position: absolute; top: 12px; left: 12px; background: rgba(10,95,161,.95); color: #fff; font-size: 11px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px; }
.lp-preview-body { padding: 16px 18px 18px; }
.lp-preview-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.lp-preview-h strong { font-size: 17px; font-weight: 800; color: #0b1a2b; }
.lp-preview-h span { font-size: 12.5px; color: #56657a; white-space: nowrap; }
.lp-route { list-style: none; margin: 14px 0 0; padding: 0; }
.lp-route li { position: relative; display: flex; align-items: center; gap: 12px; padding: 7px 0; font-size: 14px; color: #0b1a2b; }
.lp-route-pin { flex: 0 0 auto; width: 24px; height: 24px; border-radius: 999px; background: #0a5fa1; color: #fff; font-size: 12px; font-weight: 800; display: grid; place-items: center; position: relative; z-index: 1; }
.lp-route li:not(:last-child)::before { content: ""; position: absolute; left: 11px; top: 26px; bottom: -7px; width: 2px; background: #cdddec; }
.lp-preview-cta { display: inline-flex; align-items: center; gap: 6px; margin-top: 14px; font-size: 14px; font-weight: 700; color: #0a5fa1; }
.lp-preview-cta:hover { text-decoration: underline; }

/* Itinerary (trasa) day blocks */
.trasa-days { margin-top: 28px; display: grid; gap: 20px; }
.trasa-day { padding: 18px 20px; border: 1px solid rgba(11,26,43,.10); border-radius: 16px; background: rgba(255,255,255,.72); }
.trasa-day-h { font-family: "Bricolage Grotesque", "Plus Jakarta Sans", sans-serif; font-weight: 800; font-size: 18px; color: #0b1a2b; margin: 0 0 6px; }
.trasa-route li { font-size: 15px; }
.trasa-route a { color: #0b1a2b; }
.trasa-route a:hover b { color: #0a5fa1; }

/* Map */
.map-canvas { border: 1px solid rgba(11,26,43,.12); }
.map-pin span { display: block; width: 16px; height: 16px; border-radius: 999px; background: #0a5fa1; border: 2.5px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.35); }
.leaflet-container { font-family: inherit; }

/* Swipe deck */
.swipe-page { max-width: 460px; margin: 0 auto; text-align: center; }
.swipe-card { position: relative; border-radius: 22px; overflow: hidden; border: 1px solid rgba(11,26,43,.10); box-shadow: 0 20px 50px rgba(11,26,43,.14); background: #fff; text-align: left; }
.swipe-card .ph, .swipe-card picture { display: block; width: 100%; aspect-ratio: 3 / 4; }
.swipe-card img { width: 100%; height: 100%; object-fit: cover; }
.swipe-card-body { padding: 16px 18px; }
.swipe-card-name { font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; font-size: 22px; color: #0b1a2b; margin: 0; }
.swipe-card-meta { font-size: 13px; color: #56657a; margin: 4px 0 0; }
.swipe-card-tag { font-size: 14px; color: #46566a; margin: 8px 0 0; line-height: 1.45; }
.swipe-actions { display: flex; justify-content: center; gap: 18px; margin-top: 22px; }
.swipe-btn { width: 60px; height: 60px; border-radius: 999px; border: 1px solid rgba(11,26,43,.12); background: #fff; font-size: 24px; cursor: pointer; box-shadow: 0 6px 16px rgba(11,26,43,.10); display: grid; place-items: center; }
.swipe-btn-like { color: #e23; }
.swipe-btn-skip { color: #56657a; }
.swipe-progress { font-size: 13px; color: #56657a; margin-top: 14px; }

.app { min-height: 100vh; display: flex; flex-direction: column; }
/* Reserve space at the top so the header's wave (28px, absolutely positioned)
   never overlays the first row of content (crumbs, hero text, etc.). */
.view-stage {
  animation: pageIn var(--t-slow) var(--ease);
  padding-top: 36px;
}

/* Reveal animation for sections + cards */
.reveal { animation: reveal 500ms var(--ease) both; }
@keyframes reveal {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}
@keyframes pageIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* ── HEADER + WAVE ──────────────────────────────────────────────────── */
.hd {
  position: sticky; top: 0; z-index: 200;
  background: #ffffff;
  transition: box-shadow var(--t-mid) var(--ease);
}
.hd[data-scrolled="true"] {
  box-shadow: 0 2px 0 rgba(11,26,43,.04);
}
.hd-row {
  display: grid; grid-template-columns: 1fr auto 1fr;
  align-items: center; gap: 24px;
  padding: 14px 32px;
  max-width: 1480px; margin: 0 auto;
  /* Sits above the scrim so the logo + burger remain interactive when the
     mobile sheet is open. */
  position: relative; z-index: 4;
  background: #fff;
}
.hd-row > .logo { justify-self: start; }
.hd-row > .hd-r { justify-self: end; }

/* Wavy bottom edge of header — top flush against navbar, only bottom curve oscillates */
.hd-wave {
  position: absolute;
  top: 100%; left: 0; right: 0;
  width: 100%; height: 28px;
  pointer-events: none;
  z-index: 1;
  overflow: hidden;
  display: block;
}
.hd-wave > path {
  transform-box: fill-box;
  transform-origin: 50% 0%;
}
.hd-wave-back {
  fill: var(--accent-tint); opacity: 1;
  animation: waveBreatheBack 6s ease-in-out infinite;
}
.hd-wave-fore {
  fill: #ffffff;
  animation: waveBreatheFore 4.2s ease-in-out infinite;
}
@keyframes waveBreatheBack {
  0%, 100% { transform: scaleY(0.92); }
  50%      { transform: scaleY(1.10); }
}
@keyframes waveBreatheFore {
  0%, 100% { transform: scaleY(1.04); }
  50%      { transform: scaleY(0.90); }
}

/* Logo */
.logo {
  display: inline-flex;
  color: var(--ink);
  transition: opacity var(--t-fast) var(--ease);
}
.logo:hover { opacity: 0.85; }

/* Pure-text wordmark stacked on two rows — magazine-masthead feel. */
.logo-wordmark {
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 28;
  letter-spacing: -0.035em;
  line-height: 0.95;
  text-align: left;
}
.logo-w-1, .logo-w-2 {
  font-size: 20px; font-weight: 800;
  display: block;
}
.logo-w-1 { color: var(--ink); }
.logo-w-2 { color: var(--accent); }
@media (max-width: 380px) {
  .logo-w-1, .logo-w-2 { font-size: 17px; }
}

.hd-nav { display: flex; gap: 2px; justify-content: center; }
.hd-nav a {
  padding: 9px 14px; border-radius: var(--rad-pill);
  font-size: 14px; font-weight: 600;
  color: var(--ink-soft);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.hd-nav a:hover { background: var(--surface-2); color: var(--ink); }
.hd-nav a[data-on="true"] { color: var(--accent); background: var(--accent-soft); }
.hd-r { display: inline-flex; align-items: center; gap: 4px; }
.hd-iconbtn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 12px; border-radius: var(--rad-pill);
  color: var(--ink-soft); font-size: 13px; font-weight: 600;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.hd-iconbtn:hover { background: var(--surface-2); color: var(--ink); }
.hd-iconbtn-circle { padding: 8px; }
.hd-cta { margin-left: 8px; }

/* Hamburger — hidden on desktop, shown on mobile */
.hd-burger {
  display: none;
  width: 40px; height: 40px; border-radius: var(--rad-pill);
  align-items: center; justify-content: center;
  color: var(--ink);
  background: var(--surface-2);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.hd-burger:hover { background: var(--surface-3); }
.hd[data-menu-open="true"] .hd-burger { background: var(--accent-soft); color: var(--accent); }

/* Mobile sheet (slides below the wave). Hidden on desktop. */
.hd-sheet {
  display: none;
  position: absolute;
  top: calc(100% + 28px); /* clear the 28px wave so it still drips above the sheet */
  left: 0; right: 0;
  background: #fff;
  border-bottom: 1px solid var(--rule);
  box-shadow: 0 18px 36px rgba(11,26,43,.10);
  z-index: 3;
  transform: translateY(-12px);
  opacity: 0;
  pointer-events: none;
  transition: transform var(--t-mid) var(--ease), opacity var(--t-mid) var(--ease);
}
.hd-sheet[data-open="true"] {
  transform: none; opacity: 1; pointer-events: auto;
}
.hd-sheet-nav { display: flex; flex-direction: column; padding: 12px 16px 8px; }
.hd-sheet-nav a {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  padding: 14px 14px;
  border-radius: var(--rad);
  font-size: 16px; font-weight: 700;
  color: var(--ink); letter-spacing: -0.015em;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.hd-sheet-nav a:hover { background: var(--surface-2); }
.hd-sheet-nav a[data-on="true"] { background: var(--accent-soft); color: var(--accent); }
.hd-sheet-nav a svg { color: var(--ink-faint); transition: color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease); }
.hd-sheet-nav a:hover svg { color: var(--accent); transform: translateX(2px); }
.hd-sheet-nav a[data-on="true"] svg { color: var(--accent); }

.hd-sheet-actions {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 12px 16px 18px;
  border-top: 1px solid var(--rule);
}
.hd-sheet-iconbtn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 14px;
  border-radius: var(--rad);
  background: var(--surface-2); color: var(--ink);
  font-size: 14px; font-weight: 700;
  transition: background var(--t-fast) var(--ease);
}
.hd-sheet-iconbtn:hover { background: var(--surface-3); }
.hd-sheet-cta { grid-column: 1 / -1; width: 100%; }

/* Scrim — covers the rest of the page when the sheet is open */
.hd-scrim {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(11, 26, 43, 0.32);
  z-index: 2;
  opacity: 0;
  transition: opacity var(--t-mid) var(--ease);
  cursor: pointer;
}
.hd[data-menu-open="true"] .hd-scrim {
  display: block;
  animation: scrimIn var(--t-mid) var(--ease) forwards;
}
@keyframes scrimIn { from { opacity: 0; } to { opacity: 1; } }

@media (max-width: 1040px) {
  .hd-row { gap: 12px; padding: 12px 16px; grid-template-columns: 1fr auto; }
  .hd-nav { display: none; }
  .hd-d-only { display: none !important; }
  .hd-burger { display: inline-flex; }
  .hd-sheet { display: block; }
  .hd-r { gap: 0; }
  /* When the drawer is open, the wave-strip between navbar and menu reads as
     an awkward gap. Hide the wave and pull the sheet flush against the
     navbar so the drawer becomes a clean extension of the header. */
  .hd[data-menu-open="true"] .hd-wave { display: none; }
  .hd[data-menu-open="true"] .hd-sheet { top: 100%; }
}
@media (max-width: 380px) {
  .hd-row { padding: 10px 14px; }
}

/* ── BUTTONS ────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 13px 22px; border-radius: var(--rad-pill);
  font-family: var(--font-text); font-size: 14.5px; font-weight: 600;
  letter-spacing: -0.005em;
  transition: transform var(--t-fast) var(--ease),
              background var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              border-color var(--t-fast) var(--ease);
  white-space: nowrap; line-height: 1;
}
.btn-pri { background: var(--ink); color: #fff; }
.btn-pri:hover { transform: translateY(-1px); box-shadow: var(--shadow); background: #000; }
.btn-pri:active { transform: translateY(0); }
.btn-ghost { background: var(--surface); color: var(--ink); border: 1px solid var(--rule-strong); }
.btn-ghost:hover { border-color: var(--ink); background: var(--surface-2); }
.btn-sm { padding: 9px 16px; font-size: 13.5px; }
.btn-block { display: flex; width: 100%; }

/* ── PHOTO ──────────────────────────────────────────────────────────── */
.ph {
  position: relative; width: 100%; height: 100%; overflow: hidden;
  background: var(--photo-skel);
  border-radius: inherit;
}
.ph::before {
  /* shimmer placeholder while loading */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(
    90deg,
    var(--photo-skel) 0%,
    color-mix(in oklab, var(--photo-skel) 60%, #fff 40%) 50%,
    var(--photo-skel) 100%
  );
  background-size: 200% 100%;
  animation: shimmer 1.4s ease-in-out infinite;
  z-index: 0;
}
.ph[data-loaded="1"]::before { display: none; }
.ph img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block;
  opacity: 0; transition: opacity var(--t-slow) var(--ease), transform var(--t-slow) var(--ease);
  z-index: 1;
}
.ph[data-loaded="1"] img { opacity: 1; }
@keyframes shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ── LAYOUT ─────────────────────────────────────────────────────────── */
.home, .browse, .mapview, .detail, .about {
  max-width: 1320px; margin: 0 auto;
  padding: 0 32px 96px;
  width: 100%;
}
@media (max-width: 720px) {
  .home, .browse, .mapview, .detail, .about { padding: 0 20px 64px; }
}

/* ── HERO ───────────────────────────────────────────────────────────── */
.phero {
  position: relative;
  /* Pull the hero up under the wave — its huge internal padding keeps text clear. */
  margin: -36px -32px 64px;
  padding: 112px 32px 80px;
  overflow: hidden;
  isolation: isolate;
}
@media (max-width: 720px) { .phero { margin: -36px -20px 48px; padding: 72px 20px 56px; } }
.phero-bg { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.phero-bg-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  filter: saturate(0.9) brightness(0.9);
  transform: scale(1.04);
  animation: heroDrift 28s ease-in-out infinite alternate;
}
@keyframes heroDrift {
  from { transform: scale(1.04) translate3d(0, 0, 0); }
  to   { transform: scale(1.08) translate3d(-1%, -1%, 0); }
}
.phero-bg-veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg,
      rgba(255,255,255,.32) 0%,
      rgba(255,255,255,.50) 30%,
      rgba(255,255,255,.78) 65%,
      rgba(255,255,255,.96) 88%,
      #ffffff 100%),
    linear-gradient(90deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.0) 60%);
}
.phero-inner {
  position: relative; z-index: 1;
  max-width: 1320px; margin: 0 auto;
}
.phero-crumb {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12px; font-weight: 600;
  color: var(--ink-soft);
  margin-bottom: 22px;
  padding: 6px 14px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad-pill);
  box-shadow: var(--shadow-xs);
}
.phero-crumb-on { color: var(--ink); font-weight: 700; }
.phero-h1 {
  font-family: var(--font-display);
  font-weight: 800;
  font-variation-settings: "opsz" 96;
  font-size: clamp(46px, 7.4vw, 100px); line-height: 1;
  letter-spacing: -0.035em;
  margin: 0 0 18px; color: var(--ink);
  text-wrap: balance;
}
/* Bricolage Grotesque has no italic, so the em accent is set apart by color
   + a slightly heavier weight only. */
.phero-h1 em {
  font-style: normal;
  font-weight: 800;
  color: var(--accent);
}
.phero-lede {
  font-size: clamp(15.5px, 1.1vw, 18px); line-height: 1.5;
  color: var(--ink-soft);
  margin: 0 0 36px; max-width: 56ch;
  text-wrap: pretty;
}

/* HERO SEARCH BAR */
.hsearch {
  background: #fff;
  border-radius: var(--rad-lg);
  box-shadow: var(--shadow-lg), 0 0 0 1px var(--rule);
  padding: 6px;
  margin-bottom: 38px;
  max-width: 900px;
}
.hsearch-tabs {
  display: flex; gap: 2px; padding: 6px 10px 0;
  /* On narrow viewports the tabs scroll horizontally instead of wrapping. */
  overflow-x: auto; scrollbar-width: none;
  scroll-snap-type: x mandatory;
}
.hsearch-tabs::-webkit-scrollbar { display: none; }
.hsearch-tabs button {
  padding: 10px 16px;
  font-size: 14px; font-weight: 600;
  color: var(--ink-soft);
  border-radius: var(--rad-pill);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  position: relative;
  white-space: nowrap; flex-shrink: 0;
  scroll-snap-align: start;
}
.hsearch-tabs button:hover { background: var(--surface-2); color: var(--ink); }
.hsearch-tabs button[data-on="true"] { color: var(--ink); }
.hsearch-tabs button[data-on="true"]::after {
  content: ""; display: block; height: 3px;
  background: var(--accent);
  margin: 8px auto -8px; width: calc(100% - 24px);
  border-radius: 99px;
}
.hsearch-row {
  display: grid; grid-template-columns: 1.5fr 1fr 0.9fr auto;
  gap: 2px; padding: 8px;
  background: #fff; border-radius: var(--rad);
}
.hsearch-field {
  padding: 10px 18px; border-radius: var(--rad);
  display: flex; flex-direction: column; gap: 2px;
  transition: background var(--t-fast) var(--ease);
  cursor: text;
}
.hsearch-field:hover { background: var(--surface-2); }
.hsearch-field + .hsearch-field { border-left: 1px solid var(--rule); }
.hsearch-field label {
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.02em; text-transform: uppercase;
  color: var(--ink-soft);
}
.hsearch-field input {
  border: 0; background: transparent; outline: none;
  font-size: 15px; font-weight: 600; color: var(--ink);
  width: 100%; padding: 2px 0;
}
.hsearch-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 0 22px;
  background: var(--accent); color: var(--accent-ink);
  font-size: 15px; font-weight: 700;
  border-radius: var(--rad);
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.hsearch-btn:hover { background: var(--accent-deep); }
.hsearch-btn:active { transform: scale(0.98); }
@media (max-width: 780px) {
  .hsearch-row { grid-template-columns: 1fr; }
  .hsearch-field + .hsearch-field { border-left: 0; border-top: 1px solid var(--rule); }
  .hsearch-btn { padding: 14px; }
}

/* CITY BADGES */
.cities-wrap { margin-top: 26px; }
.cities-h {
  font-size: 12px; font-weight: 700;
  color: var(--ink-soft);
  letter-spacing: 0.06em; text-transform: uppercase;
  margin-bottom: 12px;
}
.cities-row { display: flex; flex-wrap: wrap; gap: 8px; }
.city-badge {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 5px 18px 5px 5px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad-pill);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              border-color var(--t-fast) var(--ease);
}
.city-badge:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-sm);
  border-color: var(--rule-strong);
}
.city-badge:active { transform: translateY(0); }
.city-badge-img {
  display: block; width: 40px; height: 40px; border-radius: 50%;
  overflow: hidden; flex-shrink: 0;
  background: var(--photo-skel);
}
.city-badge-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.city-badge-body { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.2; }
.city-badge-name { font-weight: 700; font-size: 14px; color: var(--ink); letter-spacing: -0.01em; }
.city-badge-count { font-size: 11.5px; color: var(--ink-soft); font-weight: 500; }

/* ── CALLOUT (with peeking mascot) ──────────────────────────────────── */
.callout-wrap {
  position: relative;
  margin: 0 0 56px;
  padding-left: 96px;
  min-height: 120px;
}
.callout-mascot {
  position: absolute;
  left: -8px; bottom: 0;
  width: 150px; height: 150px;
  pointer-events: none;
  z-index: 0;
  animation: mascotHover 4s ease-in-out infinite;
  transform-origin: 80px 200px;
}
@keyframes mascotHover {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50%      { transform: translateY(-3px) rotate(-1.5deg); }
}
.mascot-wave {
  transform-origin: 115px 152px;
  animation: mascotWave 1.8s ease-in-out infinite;
}
@keyframes mascotWave {
  0%, 100% { transform: rotate(0deg); }
  20%      { transform: rotate(-18deg); }
  50%      { transform: rotate(14deg); }
  80%      { transform: rotate(-10deg); }
}

.callout {
  position: relative;
  z-index: 1;
  display: grid; grid-template-columns: 1fr auto;
  gap: 16px; align-items: center;
  padding: 12px 18px 12px 56px;
  background: var(--positive-bg);
  border: 1px solid var(--positive-ring);
  border-radius: var(--rad);
  cursor: pointer;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.callout:hover { transform: translateY(-1px); box-shadow: var(--shadow-sm); border-color: var(--positive); }
.callout-body { display: flex; align-items: center; min-width: 0; }
.callout-body p {
  margin: 0; color: var(--ink); font-size: 13.5px;
  line-height: 1.4; font-weight: 500;
}
.callout-body p b { color: var(--positive); font-weight: 800; }
.callout-cta {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 8px 14px; border-radius: var(--rad-pill);
  background: var(--positive); color: #fff;
  font-weight: 700; font-size: 12.5px;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
  white-space: nowrap; flex-shrink: 0;
}
.callout-cta:hover { transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.callout-wrap { min-height: 96px; }
.callout-mascot { width: 130px; height: 130px; left: -10px; }
@media (max-width: 780px) {
  .callout-wrap { padding-left: 70px; min-height: 80px; }
  .callout-mascot { width: 100px; height: 100px; }
  .callout { grid-template-columns: 1fr; padding: 12px 14px 12px 44px; }
  .callout-cta { justify-self: start; }
}

/* ── CATEGORY CHIP STRIP ────────────────────────────────────────────── */
.cstrip { margin-bottom: 56px; }
.cstrip-h {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 16px;
}
.cstrip-h h2 {
  margin: 0; font-size: clamp(22px, 2vw, 28px); font-weight: 800;
  letter-spacing: -0.025em; color: var(--ink);
}
.cstrip-sub { color: var(--ink-soft); font-size: 13.5px; font-weight: 500; }
.cstrip-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.cchip {
  padding: 9px 16px;
  border-radius: var(--rad-pill);
  background: #fff;
  border: 1px solid var(--rule);
  font-size: 13.5px; font-weight: 600;
  color: var(--ink);
  transition: all var(--t-fast) var(--ease);
  display: inline-flex; align-items: center; gap: 7px;
}
.cchip:hover { border-color: var(--rule-strong); transform: translateY(-1px); box-shadow: var(--shadow-xs); }
.cchip[data-on="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }
.cchip-n {
  display: inline-grid; place-items: center;
  min-width: 22px; height: 22px; padding: 0 6px;
  border-radius: 99px;
  background: var(--surface-2);
  color: var(--ink-soft);
  font-size: 11.5px; font-weight: 700;
}
.cchip[data-on="true"] .cchip-n { background: rgba(255,255,255,.16); color: rgba(255,255,255,.95); }

/* ── SECTION HEADER ─────────────────────────────────────────────────── */
.sec-h {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 20px; margin-bottom: 24px;
  padding-top: 16px;
}
.sec-h > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.sec-h h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(24px, 2.4vw, 32px); line-height: 1.1;
  letter-spacing: -0.025em;
  color: var(--ink); margin: 0;
  text-wrap: balance;
}
.sec-sub { color: var(--ink-soft); font-size: 14px; font-weight: 500; margin: 0; }
.sec-h-more {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 14px; font-weight: 700;
  color: var(--accent);
  flex-shrink: 0;
  transition: color var(--t-fast) var(--ease);
}
.sec-h-more:hover { color: var(--accent-deep); }
.sec-h-more svg { transition: transform var(--t-fast) var(--ease); }
.sec-h-more:hover svg { transform: translateX(3px); }

/* ── BUBBLES ────────────────────────────────────────────────────────── */
.bubs { display: inline-flex; gap: 3px; vertical-align: middle; }
.bub {
  width: var(--bub-size, 14px); height: var(--bub-size, 14px);
  border-radius: 50%;
  background: var(--surface-3);
  position: relative; overflow: hidden;
  flex-shrink: 0;
}
.bub-fill {
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 0;                 /* empty by default — no inline style needed */
  background: var(--rating);
}
.bub-fill--full { width: 100%; }   /* full bubble — class, not inline */

/* ── ATTRACTION CARD ────────────────────────────────────────────────── */
.best-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
}
@media (max-width: 980px) { .best-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .best-grid { grid-template-columns: 1fr; } }

/* Filter cascade — the FilterableGrid remounts this grid on filter/sort change
   (via a key), replaying a quick staggered fade-up. `backwards` fill so no
   animated transform lingers and the card :hover lift keeps working. */
.best-grid.is-filtering .acard { animation: filterCardIn 360ms var(--ease) backwards; }
.best-grid.is-filtering .acard:nth-child(2) { animation-delay: 35ms; }
.best-grid.is-filtering .acard:nth-child(3) { animation-delay: 70ms; }
.best-grid.is-filtering .acard:nth-child(4) { animation-delay: 105ms; }
.best-grid.is-filtering .acard:nth-child(5) { animation-delay: 140ms; }
.best-grid.is-filtering .acard:nth-child(6) { animation-delay: 175ms; }
.best-grid.is-filtering .acard:nth-child(7) { animation-delay: 210ms; }
.best-grid.is-filtering .acard:nth-child(8) { animation-delay: 245ms; }
.best-grid.is-filtering .acard:nth-child(9) { animation-delay: 280ms; }
.best-grid.is-filtering .acard:nth-child(n+10) { animation-delay: 310ms; }
@keyframes filterCardIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .best-grid.is-filtering .acard { animation: none; } }
.best-grid > div { animation: reveal 500ms var(--ease) both; }

.acard {
  position: relative;
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease),
              box-shadow var(--t-mid) var(--ease),
              border-color var(--t-mid) var(--ease);
  height: 100%;
}
.acard:hover {
  transform: translateY(-6px);
  box-shadow: 0 22px 50px rgba(11,26,43,.16);
  border-color: var(--accent-tint);
}
.acard:active { transform: translateY(-1px); }
@media (prefers-reduced-motion: reduce) { .acard:hover { transform: none; } }
/* Whole-card anchor — replaces the old role=button click target so crawlers
   see the link graph and middle-click opens a new tab. */
.acard-link {
  display: flex; flex-direction: column;
  flex: 1; color: inherit; text-decoration: none;
  outline: 0;
}
.acard-link:focus-visible {
  outline: 3px solid var(--accent); outline-offset: -3px; border-radius: var(--rad);
}
.acard-photo {
  position: relative; aspect-ratio: 4 / 3;
  background: var(--photo-skel); overflow: hidden;
}
.acard-photo .ph { transition: transform 500ms var(--ease); }
.acard:hover .acard-photo .ph { transform: scale(1.05); }
/* Editorial badge — shown only on the highest-ranked card in a list,
   never as a numeric enumeration. Gold pill with a small star. */
.acard-rank {
  position: absolute; top: 14px; left: 14px;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px 5px 9px; border-radius: var(--rad-pill);
  background: linear-gradient(135deg, #f9b418 0%, #e89e0a 100%);
  color: #1a1f28;
  font-weight: 800; font-size: 11.5px;
  letter-spacing: 0.02em; text-transform: uppercase;
  box-shadow: 0 4px 10px -3px rgba(232,158,10,0.45), inset 0 1px 0 rgba(255,255,255,0.5);
}
.acard-fav {
  position: absolute; top: 12px; right: 12px;
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(255,255,255,.95); color: var(--ink-soft);
  display: grid; place-items: center;
  box-shadow: var(--shadow-sm);
  opacity: 0;                       /* hidden until card hover or active */
  transform: translateY(-4px);
  pointer-events: none;
  transition:
    opacity 180ms var(--ease),
    transform 220ms cubic-bezier(.34,1.56,.64,1),
    color var(--t-fast) var(--ease);
}
.acard:hover .acard-fav,
.acard-fav:focus-visible,
.acard-fav[data-on="true"] {
  opacity: 1; transform: translateY(0); pointer-events: auto;
}
.acard-fav:hover { transform: translateY(-2px) scale(1.08); color: var(--accent); }
.acard-fav[data-on="true"]        { color: #c83a3a; animation: acard-btn-pop 360ms cubic-bezier(.34,1.56,.64,1); }
.acard-fav[data-on="true"]:hover  { color: #c83a3a; transform: translateY(-2px) scale(1.08); }
/* Touch devices have no hover — always show so favorites stay reachable. */
@media (hover: none) {
  .acard-fav { opacity: 1; transform: none; pointer-events: auto; }
}

/* Visited toggle — sits left of the heart, same 36×36 disc.
   Hidden until card hover (mirrors the heart). Stays visible while active. */
.acard-visited {
  position: absolute; top: 12px; right: 56px;
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(255,255,255,.95); color: var(--ink-soft);
  display: grid; place-items: center;
  box-shadow: var(--shadow-sm);
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition:
    opacity 180ms var(--ease),                 /* same timing as heart */
    transform 220ms cubic-bezier(.34,1.56,.64,1),
    color    140ms var(--ease),
    background 180ms var(--ease),
    box-shadow 180ms var(--ease);
  z-index: 2;
}
.acard:hover .acard-visited,
.acard-visited:focus-visible,
.acard-visited[data-on="true"] {
  opacity: 1; transform: translateY(0); pointer-events: auto;
}
@media (hover: none) {
  .acard-visited { opacity: 1; transform: none; pointer-events: auto; }
}
.acard-visited svg {
  transition: transform 240ms cubic-bezier(.34,1.56,.64,1);
  transform-origin: 50% 90%;        /* tilt from the pin's tip */
}
.acard-visited:hover {
  color: var(--positive);
  transform: translateY(-2px) scale(1.08);
  box-shadow: 0 6px 14px -4px rgba(45,122,63,0.35);
}
.acard-visited:hover svg     { transform: rotate(-12deg) translateY(-1px); }
.acard-visited:active        { transform: translateY(0) scale(.96); }
.acard-visited:active svg    { transform: rotate(-6deg) scale(.92); }

/* Active state: same minimal treatment as the heart — just the icon
   takes its accent color. No background fill, no white-on-green chunk.
   Pop animation matches the heart's. */
.acard-visited[data-on="true"]        { color: var(--positive); animation: acard-btn-pop 360ms cubic-bezier(.34,1.56,.64,1); }
.acard-visited[data-on="true"]:hover  { color: var(--positive); transform: translateY(-2px) scale(1.08); }
.acard-visited[data-on="true"]:hover svg { transform: rotate(8deg); }

@keyframes acard-btn-pop {
  0%   { transform: scale(.7); }
  55%  { transform: scale(1.18); }
  100% { transform: scale(1); }
}
/* (removed dead .acard-360 rule — class no longer referenced in JSX) */
.acard-body {
  padding: 16px 18px 18px;
  display: flex; flex-direction: column; gap: 6px;
  flex: 1;
}
.acard-name {
  margin: 0;
  font-size: 18px; font-weight: 700; line-height: 1.25;
  letter-spacing: -0.018em;
  color: var(--ink);
  text-wrap: balance;
}
.acard-rating {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 13px;
}
.acard-rating-num { color: var(--ink); font-weight: 700; }
.acard-revcount { color: var(--ink-soft); font-weight: 500; }
/* Subtle visual hint that the rating reflects real user reviews from
   our own portal (not the editorial seed in data.json). */
.acard-rating[data-real] .acard-rating-num { color: var(--accent); }
.acard-meta {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--ink-soft);
  margin: 0; font-weight: 500;
}
.acard-cat { font-weight: 600; color: var(--ink); }
.acard-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--ink-faint); }
.acard-tagline {
  font-size: 13.5px; line-height: 1.45;
  color: var(--ink-soft); margin: 4px 0 0;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.acard-foot {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: auto; padding-top: 12px;
  border-top: 1px solid var(--rule);
  font-size: 13px;
}
.acard-price { font-weight: 700; color: var(--ink); }
.acard-open {
  display: inline-flex; align-items: center; gap: 4px;
  font-weight: 800; color: var(--accent);
  padding: 5px 11px; border-radius: var(--rad-pill);
  background: var(--accent-soft);
  font-size: 12px;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  cursor: pointer;
}
.acard-open:hover { background: var(--accent); color: #fff; transform: translateX(2px); }
.acard-open:active { transform: translateX(0); }
.acard-open svg { transition: transform var(--t-fast) var(--ease); }
.acard:hover .acard-open svg { transform: translateX(3px); }

/* ── CATEGORIES 4-col ───────────────────────────────────────────────── */
.cgrid { margin-bottom: 56px; }
.cgrid-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
}
/* Adapt column count to the number of active categories so the last row
   never sits half-empty. data-cols matches the JSX-supplied min(n, 4). */
.cgrid-grid[data-cols="3"] { grid-template-columns: repeat(3, 1fr); }
.cgrid-grid[data-cols="2"] { grid-template-columns: repeat(2, 1fr); max-width: 760px; }
.cgrid-grid[data-cols="1"] { grid-template-columns: 1fr; max-width: 420px; }
@media (max-width: 980px) {
  .cgrid-grid,
  .cgrid-grid[data-cols="3"],
  .cgrid-grid[data-cols="2"] { grid-template-columns: repeat(2, 1fr); max-width: none; }
}
@media (max-width: 540px) {
  .cgrid-grid,
  .cgrid-grid[data-cols="3"],
  .cgrid-grid[data-cols="2"] { grid-template-columns: 1fr; }
}
.cgrid-card {
  position: relative;
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  overflow: hidden;
  text-align: left;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease),
              box-shadow var(--t-mid) var(--ease),
              border-color var(--t-mid) var(--ease);
  cursor: pointer;
}
.cgrid-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
  border-color: var(--rule-strong);
}
.cgrid-img { aspect-ratio: 4 / 3; overflow: hidden; }
.cgrid-img .ph { transition: transform 500ms var(--ease); }
.cgrid-card:hover .cgrid-img .ph { transform: scale(1.06); }
.cgrid-body {
  padding: 16px 18px 18px;
  display: flex; flex-direction: column; gap: 4px; flex: 1;
}
.cgrid-body h4 {
  margin: 0; font-size: 18px; font-weight: 700;
  letter-spacing: -0.018em; color: var(--ink);
}
.cgrid-body p {
  margin: 2px 0 0; font-size: 13px; color: var(--ink-soft);
  line-height: 1.4;
}
.cgrid-count {
  margin-top: auto; padding-top: 14px;
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 13px; font-weight: 700; color: var(--accent);
}
.cgrid-card:hover .cgrid-count svg { transform: translateX(3px); }
.cgrid-count svg { transition: transform var(--t-fast) var(--ease); }

/* ── MAP TEASER ─────────────────────────────────────────────────────── */
.mapteaser { cursor: pointer; margin-bottom: 24px; }
.mapteaser-frame {
  aspect-ratio: 16 / 6;
  border-radius: var(--rad);
  overflow: hidden;
  border: 1px solid var(--rule);
  background: var(--map-bg);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease);
}
.mapteaser:hover .mapteaser-frame { transform: translateY(-2px); box-shadow: var(--shadow); }

.gmap { width: 100%; height: 100%; display: block; }
.gmap-label {
  font-family: var(--font-text); font-size: 10.5px; font-weight: 600;
  fill: var(--ink-soft);
  letter-spacing: 0.08em; text-transform: uppercase;
}
.gmap-city {
  font-family: var(--font-text); font-size: 11px; font-weight: 700;
  fill: var(--ink);
}
.gpin { cursor: pointer; transition: opacity var(--t-mid) var(--ease); }
.gpin-halo { fill: var(--accent); opacity: 0.18; transition: r var(--t-mid) var(--ease), opacity var(--t-mid) var(--ease); }
.gpin-core { fill: var(--accent); stroke: #fff; stroke-width: 3; transition: r var(--t-fast) var(--ease); }
.gpin:hover .gpin-halo { opacity: 0.32; }
.gpin[data-active="true"] .gpin-halo { opacity: 0.4; }
.gpin[data-active="true"] .gpin-core { fill: var(--accent-deep); stroke-width: 4; }
.gpin[data-dim="true"] { opacity: 0.2; }

/* ── CRUMB ROW ──────────────────────────────────────────────────────── */
.crumb-row {
  display: flex; gap: 8px; align-items: center;
  padding-top: 24px;
  font-size: 13px; color: var(--ink-soft);
  font-weight: 500;
}
.crumb-row a { color: var(--ink-soft); }
.crumb-row a:hover { color: var(--accent); }
.crumb-row .on { color: var(--ink); font-weight: 600; }

/* ── BROWSE / CATEGORY ──────────────────────────────────────────────── */
.browse-h { padding-bottom: 28px; }
.browse-title {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(34px, 5vw, 52px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 16px 0 10px;
  text-wrap: balance;
}
.browse-lede {
  color: var(--ink-soft); font-size: 15.5px;
  max-width: 60ch; margin: 0;
}

.browse-bar {
  display: grid; grid-template-columns: minmax(280px, 360px) 1fr;
  gap: 20px; align-items: center;
  padding-block: 20px;
  border-block: 1px solid var(--rule);
  margin-bottom: 36px;
}
@media (max-width: 800px) { .browse-bar { grid-template-columns: 1fr; } }
.browse-search {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 18px;
  border: 1px solid var(--rule-strong); border-radius: var(--rad-pill);
  background: #fff;
  box-shadow: var(--shadow-xs);
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.browse-search:focus-within { border-color: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }
.browse-search input {
  flex: 1; border: 0; background: transparent; outline: none;
  font-size: 14.5px; font-weight: 500;
}
.browse-search button { color: var(--ink-soft); display: flex; }
.browse-search button:hover { color: var(--ink); }
.browse-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.browse-chips button {
  padding: 9px 16px; border-radius: var(--rad-pill);
  font-size: 13.5px; font-weight: 600;
  color: var(--ink-soft);
  border: 1px solid var(--rule);
  background: #fff;
  transition: all var(--t-fast) var(--ease);
}
.browse-chips button:hover { color: var(--ink); border-color: var(--rule-strong); }
.browse-chips button[data-on="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }

.browse-grid-wrap {
  display: grid; grid-template-columns: 264px 1fr; gap: 32px;
}
@media (max-width: 980px) {
  .browse-grid-wrap { grid-template-columns: 1fr; gap: 24px; }
  /* Results first, then filters — so the sidebar never covers the grid. */
  .browse-side  { order: 2; }
  .browse-list  { order: 1; }
}

/* ── SIDEBAR FILTERS ────────────────────────────────────────────────── */
.browse-side { position: sticky; top: var(--sticky-top); align-self: start; z-index: 2; }
@media (max-width: 980px) {
  /* On mobile the sidebar moves below results and stops being sticky. */
  .browse-side { position: static; top: auto; }
}
.side-card {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
}

/* Sticky header inside the card */
.side-head {
  position: sticky; top: 0; z-index: 2;
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px;
  font-size: 14px; font-weight: 700; color: var(--ink);
  background: #fff;
  border-bottom: 1px solid var(--rule);
}
.side-head-l { display: inline-flex; align-items: center; gap: 9px; }
.side-head-l svg { color: var(--accent); }
.side-head-count {
  display: inline-grid; place-items: center;
  min-width: 22px; height: 22px; padding: 0 7px;
  border-radius: var(--rad-pill);
  background: var(--accent); color: #fff;
  font-size: 11.5px; font-weight: 800;
  font-variant-numeric: tabular-nums;
  animation: popBadge 280ms var(--ease);
}
@keyframes popBadge {
  0%   { transform: scale(0.4); opacity: 0; }
  60%  { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); }
}
.side-clear {
  font-size: 12px; font-weight: 600;
  color: var(--accent);
  padding: 4px 8px; margin: -4px -8px -4px 0;
  border-radius: var(--rad-pill);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.side-clear:hover { background: var(--accent-soft); color: var(--accent-deep); }

/* Active-filter chips */
.side-active {
  display: flex; flex-wrap: wrap; gap: 6px;
  padding: 14px 18px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--rule);
  transition: padding var(--t-mid) var(--ease);
}
.side-active.is-empty { padding: 0 18px; border-bottom: 0; }
.side-active-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 8px 5px 11px; border-radius: var(--rad-pill);
  background: var(--accent); color: #fff;
  font-size: 12px; font-weight: 600;
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  animation: chipIn 280ms var(--ease) both;
}
.side-active-chip:hover { background: var(--accent-deep); transform: translateY(-1px); }
.side-active-chip svg { width: 12px; height: 12px; opacity: 0.85; }
@keyframes chipIn {
  from { opacity: 0; transform: translateX(-6px) scale(0.92); }
  to   { opacity: 1; transform: none; }
}

/* Collapsible sections */
.side-sec { border-bottom: 1px solid var(--rule); }
.side-sec:last-child { border-bottom: 0; }
.side-sec-h {
  display: flex; justify-content: space-between; align-items: center;
  width: 100%; padding: 14px 18px;
  font-size: 13px; font-weight: 700; color: var(--ink);
  text-align: left;
  transition: background var(--t-fast) var(--ease);
}
.side-sec-h:hover { background: var(--surface-2); }
.side-sec-h-title { display: inline-flex; align-items: center; gap: 8px; }
.side-sec-h-badge {
  display: inline-grid; place-items: center;
  min-width: 18px; height: 18px; padding: 0 6px;
  border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent);
  font-size: 10.5px; font-weight: 800;
  animation: popBadge 220ms var(--ease);
}
.side-sec-chev {
  color: var(--ink-soft);
  transition: transform var(--t-mid) var(--ease);
  display: inline-flex;
}
.side-sec[data-open="true"] .side-sec-chev { transform: rotate(180deg); color: var(--accent); }
.side-sec-body {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--t-mid) var(--ease);
}
.side-sec-body > * { overflow: hidden; min-height: 0; }
.side-sec[data-open="true"] .side-sec-body { grid-template-rows: 1fr; }
.side-sec-inner {
  padding: 0 18px 14px;
  display: flex; flex-direction: column; gap: 2px;
  opacity: 0;
  transform: translateY(-4px);
  transition: opacity var(--t-mid) var(--ease) var(--t-fast),
              transform var(--t-mid) var(--ease) var(--t-fast);
}
.side-sec[data-open="true"] .side-sec-inner {
  opacity: 1; transform: none;
}

/* Single-select rows */
.side-row {
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: 10px;
  width: 100%; padding: 7px 10px;
  margin: 0 -10px;
  border-radius: var(--rad-sm);
  font-size: 13.5px; color: var(--ink-soft);
  font-weight: 500; text-align: left;
  transition: background var(--t-fast) var(--ease),
              color var(--t-fast) var(--ease);
}
.side-row:hover { background: var(--surface-2); color: var(--ink); }
.side-row[data-on="true"] {
  background: var(--accent-soft); color: var(--accent);
  font-weight: 700;
}
.side-row-dot {
  width: 8px; height: 8px; border-radius: 50%;
  border: 1.5px solid var(--ink-faint);
  background: transparent;
  transition: all var(--t-fast) var(--ease);
}
.side-row:hover .side-row-dot { border-color: var(--ink-soft); }
.side-row[data-on="true"] .side-row-dot {
  border-color: var(--accent);
  background: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.side-row-label {
  line-height: 1.2;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.side-row-n {
  color: var(--ink-faint); font-weight: 600; font-size: 12px;
  font-variant-numeric: tabular-nums;
  transition: color var(--t-fast) var(--ease);
}
.side-row[data-on="true"] .side-row-n { color: var(--accent); }

/* Custom checkbox */
.side-check {
  display: grid; grid-template-columns: auto 1fr auto;
  align-items: center; gap: 10px;
  padding: 7px 10px; margin: 0 -10px;
  border-radius: var(--rad-sm);
  font-size: 13.5px; color: var(--ink-soft); font-weight: 500;
  cursor: pointer; user-select: none;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.side-check:hover { background: var(--surface-2); color: var(--ink); }
.side-check[data-on="true"] { color: var(--accent); }
.side-check input { display: none; }
.side-check-box {
  width: 18px; height: 18px;
  border: 1.5px solid var(--rule-strong);
  border-radius: 5px;
  background: #fff;
  position: relative;
  transition: all var(--t-fast) var(--ease);
}
.side-check-box::after {
  content: ""; position: absolute;
  left: 5px; top: 2px;
  width: 5px; height: 9px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg) scale(0);
  transform-origin: center;
  transition: transform 180ms var(--ease);
}
.side-check[data-on="true"] .side-check-box {
  background: var(--accent); border-color: var(--accent);
}
.side-check[data-on="true"] .side-check-box::after {
  transform: rotate(45deg) scale(1);
}
.side-check-label {
  line-height: 1.2;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Range slider */
.side-range-wrap { padding: 4px 0 4px; display: flex; flex-direction: column; gap: 14px; }
.side-range-label {
  display: flex; justify-content: space-between; align-items: baseline;
  font-size: 12px; color: var(--ink-soft);
}
.side-range-label b {
  font-size: 15px; font-weight: 800; color: var(--accent);
  letter-spacing: -0.01em;
}
.side-range-track {
  position: relative;
  height: 6px; border-radius: var(--rad-pill);
  background: var(--surface-3);
  margin: 0 2px;
}
.side-range-track::before {
  content: "";
  position: absolute; left: 0; top: 0; bottom: 0;
  width: var(--p, 50%);
  background: var(--accent);
  border-radius: var(--rad-pill);
  transition: width var(--t-fast) var(--ease);
}
.side-range {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  -webkit-appearance: none; appearance: none;
  background: transparent; outline: none;
  margin: 0;
}
.side-range::-webkit-slider-runnable-track { height: 6px; background: transparent; }
.side-range::-moz-range-track { height: 6px; background: transparent; }
.side-range::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; cursor: grab;
  border: 3px solid var(--accent);
  box-shadow: var(--shadow-sm);
  margin-top: -7px;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.side-range::-webkit-slider-thumb:hover { transform: scale(1.12); }
.side-range::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.08); box-shadow: 0 0 0 6px var(--accent-soft); }
.side-range::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; cursor: grab;
  border: 3px solid var(--accent);
  box-shadow: var(--shadow-sm);
}
.side-range-marks {
  display: flex; justify-content: space-between;
  font-size: 11px; color: var(--ink-faint);
  font-weight: 600;
}

/* ── BROWSE LIST ────────────────────────────────────────────────────── */
.browse-list-h {
  display: flex; justify-content: space-between; align-items: center;
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--rule);
  font-size: 14px; color: var(--ink-soft);
}
.browse-list-h b { color: var(--ink); font-weight: 800; font-size: 17px; letter-spacing: -0.01em; }
.browse-list-h-sort {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13.5px; font-weight: 600; color: var(--ink-soft);
}
.browse-list-h-sort select {
  font-size: 13.5px; font-weight: 700;
  color: var(--ink); border: 0; background: transparent;
  cursor: pointer; padding: 4px;
}
.browse-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px;
}
@media (max-width: 720px) { .browse-grid { grid-template-columns: 1fr; } }
.browse-grid > div { animation: reveal 500ms var(--ease) both; }
.empty {
  padding: 60px; text-align: center; color: var(--ink-soft);
  border: 1px dashed var(--rule); border-radius: var(--rad);
  font-size: 16px; font-weight: 600;
}

/* ── MAP VIEW (list inside card) ────────────────────────────────────── */
.mapview { max-width: 1440px; }
.mapview-h { padding-bottom: 16px; }
.mapview-h h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(32px, 4vw, 52px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 14px 0 16px;
}
.mapview-h h1 em {
  font-style: normal; font-weight: 800; color: var(--accent);
}
.mapview-chips {
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.mapview-chips button {
  padding: 8px 14px; border-radius: var(--rad-pill);
  font-size: 13px; font-weight: 600;
  color: var(--ink-soft);
  border: 1px solid var(--rule);
  background: #fff;
  display: inline-flex; align-items: center; gap: 6px;
  transition: all var(--t-fast) var(--ease);
}
.mapview-chips button:hover { color: var(--ink); border-color: var(--rule-strong); }
.mapview-chips button[data-on="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }
.mapview-sep { width: 1px; height: 18px; background: var(--rule); margin: 0 6px; }

.mapcard {
  display: grid; grid-template-columns: 1fr 380px;
  margin-top: 22px;
  min-height: 80vh;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  /* Contain Leaflet's internal z-indexes (tile pane 200, controls 1000)
     so they don't bleed through the sticky header on scroll. */
  isolation: isolate;
  position: relative; z-index: 0;
}
@media (max-width: 980px) {
  .mapcard { grid-template-columns: 1fr; min-height: auto; }
  .mapcard-canvas { aspect-ratio: 4/3; min-height: auto; }
}
.mapcard-canvas {
  position: relative;
  min-height: 80vh;
  background: var(--map-bg);
  border-right: 1px solid var(--rule);
}
.mapcard-canvas .gmap {
  position: absolute; inset: 0; width: 100%; height: 100%;
}
.mapcard-list {
  display: flex; flex-direction: column;
  max-height: 80vh; overflow: hidden;
}
.mapcard-list-h {
  padding: 18px 22px;
  border-bottom: 1px solid var(--rule);
  flex-shrink: 0;
}
.mapcard-list-h-title { font-size: 16px; font-weight: 800; color: var(--ink); letter-spacing: -0.01em; }
.mapcard-list-h-sub { font-size: 12.5px; color: var(--ink-soft); margin-top: 2px; font-weight: 500; }
.mapcard-list-ul { list-style: none; margin: 0; padding: 0; overflow-y: auto; }
.mapcard-list-ul li { border-bottom: 1px solid var(--rule); }
.mapcard-list-ul li:last-child { border-bottom: 0; }

.lrow {
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 14px; align-items: center;
  width: 100%; text-align: left;
  padding: 14px 22px;
  transition: background var(--t-fast) var(--ease);
}
.lrow:hover, .lrow[data-on="true"] { background: var(--surface-2); }
.lrow-thumb {
  display: block; width: 60px; height: 60px;
  border-radius: var(--rad-sm); overflow: hidden;
  flex-shrink: 0; background: var(--photo-skel);
}
.lrow-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.lrow-name {
  font-size: 14px; font-weight: 700; color: var(--ink);
  line-height: 1.2;
  text-overflow: ellipsis; overflow: hidden; white-space: nowrap;
  letter-spacing: -0.01em;
}
.lrow-rating { display: inline-flex; align-items: center; gap: 6px; }
.lrow-rev { font-size: 11px; color: var(--ink-soft); font-weight: 600; }
.lrow-sub { font-size: 12px; color: var(--ink-soft); font-weight: 500; }
.lrow-arr { color: var(--ink-faint); transition: color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease); }
.lrow:hover .lrow-arr { color: var(--accent); transform: translateX(3px); }

.mapcard-pop {
  position: absolute; right: 24px; top: 24px;
  width: 320px;
  background: #fff;
  border-radius: var(--rad);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
  animation: popIn var(--t-mid) var(--ease);
  z-index: 2;
}
@keyframes popIn { from { opacity: 0; transform: translateY(8px) scale(0.98); } to { opacity: 1; transform: none; } }
.mapcard-pop-img { aspect-ratio: 16/10; background: var(--photo-skel); }
.mapcard-pop-body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; }
.mapcard-pop-meta {
  font-size: 11.5px; color: var(--ink-soft); font-weight: 600;
  letter-spacing: 0.04em; text-transform: uppercase;
}
.mapcard-pop h3 {
  margin: 0; font-size: 19px; font-weight: 800;
  letter-spacing: -0.018em; line-height: 1.2;
}
.mapcard-pop-rating { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--ink-soft); font-weight: 600; }
.mapcard-pop p { margin: 0; color: var(--ink-soft); font-size: 13px; line-height: 1.45; }
.mapcard-pop-foot { display: flex; align-items: center; gap: 10px; margin-top: 4px; }
.mapcard-pop-price { font-weight: 800; color: var(--ink); flex: 1; font-size: 14px; }
.mapcard-pop-x {
  position: absolute; right: 10px; top: 10px;
  width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center;
  background: #fff;
  color: var(--ink-soft);
  box-shadow: var(--shadow-sm);
  transition: color var(--t-fast) var(--ease);
}
.mapcard-pop-x:hover { color: var(--ink); }

/* ── DETAIL ─────────────────────────────────────────────────────────── */
.detail-head {
  padding: 18px 0 22px;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 22px;
  display: flex; justify-content: space-between; gap: 24px;
  align-items: flex-start;
}
@media (max-width: 720px) {
  /* Stack header on phones so the title gets a full line and action buttons
     drop below instead of getting squeezed into a side column. */
  .detail-head { flex-direction: column; gap: 18px; }
  .detail-head-r { width: 100%; }
  .detail-head-r .detail-act { flex: 1; justify-content: center; }
}
.detail-head-l { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.detail-h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(34px, 5vw, 52px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 0; color: var(--ink);
  text-wrap: balance;
}
.detail-rating {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px;
  font-size: 14px; color: var(--ink-soft); font-weight: 500;
}
@media (max-width: 480px) {
  /* Drop the secondary "#1 of N" badge — keeps the rating row to one tidy line. */
  .detail-rating-rank, .detail-rating-dot { display: none; }
}
.detail-rating-num { font-weight: 800; color: var(--ink); font-size: 15px; }
.detail-rating-link {
  color: var(--ink); font-weight: 700;
  text-decoration: underline; text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
.detail-rating-link:hover { color: var(--accent); }
.detail-rating-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--ink-faint); }
.detail-rating-rank {
  display: inline-flex; align-items: center;
  padding: 4px 10px; border-radius: var(--rad-pill);
  background: var(--positive-bg); color: var(--positive);
  font-size: 12px; font-weight: 700;
  border: 1px solid var(--positive-ring);
}
.detail-sub { font-size: 14px; color: var(--ink-soft); margin: 0; font-weight: 500; }
.detail-head-r { display: flex; gap: 8px; flex-shrink: 0; }
.detail-act {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 16px; border-radius: var(--rad-pill);
  border: 1px solid var(--rule-strong);
  font-size: 13.5px; font-weight: 700;
  color: var(--ink);
  background: #fff;
  transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.detail-act:hover { border-color: var(--ink); background: var(--surface-2); }

.detail-gallery {
  display: grid; grid-template-columns: 2fr 1fr; gap: 8px;
  margin-bottom: 32px;
  aspect-ratio: 21 / 9;
  max-height: 520px;
}
.detail-gallery-main {
  position: relative;
  border-radius: var(--rad); overflow: hidden;
  background: var(--photo-skel);
}
.detail-gallery-main .ph { transition: transform 800ms var(--ease); }
.detail-gallery-main:hover .ph { transform: scale(1.02); }
.detail-gallery-tour {
  position: absolute; left: 18px; bottom: 18px;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 18px; border-radius: var(--rad-pill);
  background: rgba(0,0,0,0.78); color: #fff;
  font-size: 13.5px; font-weight: 700;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  transition: transform var(--t-fast) var(--ease);
}
.detail-gallery-tour:hover { transform: translateY(-1px); }
.detail-gallery-side {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.detail-gallery-side > div,
.detail-gallery-side > button {
  border-radius: var(--rad-sm); overflow: hidden;
  position: relative; background: var(--photo-skel);
  padding: 0; border: 0;
  cursor: pointer;
}
/* The main slot is now also a <button> so it opens the lightbox. */
.detail-gallery-main {
  padding: 0; border: 0; background: var(--photo-skel);
  cursor: zoom-in;
}
.detail-gallery-main:disabled { cursor: default; }
.detail-gallery-side > button { cursor: zoom-in; }
.detail-gallery-side > button:focus-visible,
.detail-gallery-main:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }

/* Bare <img> elements fed by the multi-photo Commons gallery — same
   cover-fit treatment as the Photo component's internal images. */
.detail-gallery-main > img,
.detail-gallery-side > div > img,
.detail-gallery-side > button > img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 800ms var(--ease);
}
.detail-gallery-main:hover > img { transform: scale(1.02); }
.detail-gallery-side > div:hover > img,
.detail-gallery-side > button:hover > img { transform: scale(1.04); }
.detail-gallery-more { position: relative; }
.detail-gallery-more > span {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.45);
  color: #fff;
  display: grid; place-items: center;
  font-size: 13.5px; font-weight: 700; letter-spacing: -0.01em;
  cursor: pointer; z-index: 2;
}
@media (max-width: 780px) {
  .detail-gallery { grid-template-columns: 1fr; aspect-ratio: 4/3; }
  .detail-gallery-side { display: none; }
}

.detail-body {
  display: grid; grid-template-columns: 1fr 340px;
  gap: 48px;
}
/* No real ticketing (e.g. imported listings) → single readable column. */
.detail-body[data-book="0"] { grid-template-columns: minmax(0, 820px); }
@media (max-width: 980px) {
  .detail-body { grid-template-columns: 1fr; gap: 32px; }
  /* Sticky booking column would jam against the navbar after the main column
     scrolls past — drop sticky on mobile so it sits naturally below. */
  .detail-book { position: static; top: auto; }
}

.detail-tagline {
  font-weight: 500;
  font-size: clamp(18px, 1.8vw, 22px); line-height: 1.4;
  color: var(--ink-soft); margin: 0 0 24px;
  text-wrap: balance;
}
.detail-stats {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
  padding: 18px 0; margin-bottom: 24px;
  border-block: 1px solid var(--rule);
}
@media (max-width: 480px) {
  .detail-stats { grid-template-columns: 1fr; gap: 10px; padding: 14px 0; }
  .detail-stats > div { flex-direction: row; align-items: baseline; gap: 8px; }
}
.detail-stats > div { display: flex; flex-direction: column; gap: 4px; }
.detail-stats b {
  font-weight: 800; font-size: 18px;
  letter-spacing: -0.018em; color: var(--ink);
}
.detail-stats span {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12.5px; color: var(--ink-soft); font-weight: 500;
}

.detail-tabs {
  display: flex; gap: 0;
  border-bottom: 1px solid var(--rule);
  margin-bottom: 24px;
  overflow-x: auto;
}
.detail-tabs button {
  padding: 14px 18px;
  font-size: 14px; font-weight: 700;
  color: var(--ink-soft);
  border-bottom: 3px solid transparent;
  margin-bottom: -1px; white-space: nowrap;
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.detail-tabs button:hover { color: var(--ink); }
.detail-tabs button[data-on="true"] { color: var(--ink); border-color: var(--accent); }

.tab-about p { font-size: 16px; line-height: 1.65; margin: 0 0 16px; }
.tab-about h4 {
  margin: 24px 0 12px;
  font-size: 17px; font-weight: 800; letter-spacing: -0.018em;
}
.bullets { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }
.bullets li {
  padding-left: 22px; position: relative;
  font-size: 14px; color: var(--ink-soft);
}
.bullets li::before {
  content: "✓"; position: absolute; left: 0; top: 0;
  color: var(--accent); font-weight: 800;
}

.tab-howto { display: grid; grid-template-columns: 1fr 1fr; gap: 36px; }
@media (max-width: 720px) { .tab-howto { grid-template-columns: 1fr; } }
.tab-howto h4 { margin: 0 0 14px; font-size: 16px; font-weight: 800; letter-spacing: -0.018em; }
.hours { width: 100%; border-collapse: collapse; }
.hours td {
  padding: 8px 0; border-bottom: 1px solid var(--rule);
  font-size: 14px; font-weight: 500;
}
.hours td:first-child {
  color: var(--ink-soft);
  text-transform: uppercase; letter-spacing: 0.04em;
  font-size: 12px; font-weight: 700;
}
.hours td:last-child { text-align: right; }
.howto-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.howto-list li { font-size: 14px; color: var(--ink-soft); line-height: 1.45; }
.howto-list li b {
  display: inline-block;
  font-size: 11px; font-weight: 800;
  color: var(--accent);
  text-transform: uppercase; letter-spacing: 0.06em;
  margin-right: 8px;
}

.tab-reviews { display: flex; flex-direction: column; gap: 24px; }
.rev-summary {
  display: grid; grid-template-columns: auto 1fr; gap: 24px; align-items: center;
  padding: 22px;
  background: var(--surface-2);
  border-radius: var(--rad);
}
.rev-big {
  font-weight: 800; font-size: 56px;
  letter-spacing: -0.04em; color: var(--ink); line-height: 1;
}
.rev-count { font-size: 13px; color: var(--ink-soft); font-weight: 600; margin-top: 4px; }
.rev-list { display: flex; flex-direction: column; }
.rev-item { padding: 22px 0; border-bottom: 1px solid var(--rule); }
.rev-item-h {
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 14px; align-items: center; margin-bottom: 10px;
}
.rev-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  background: var(--accent); color: #fff;
  display: grid; place-items: center;
  font-weight: 800; font-size: 16px;
}
.rev-who { font-weight: 700; font-size: 14.5px; color: var(--ink); }
.rev-when { font-size: 12.5px; color: var(--ink-soft); font-weight: 500; }
.rev-item p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--ink); }

.detail-book {
  position: sticky; top: var(--sticky-top); align-self: start;
  padding: 22px;
  background: #fff;
  border: 1px solid var(--rule-strong);
  border-radius: var(--rad);
  box-shadow: var(--shadow);
  display: flex; flex-direction: column; gap: 14px;
}
@media (max-width: 980px) {
  /* On mobile the columns stack, so sticky pinning is wrong — the card would
     "stick" against the navbar after the main column scrolls past. */
  .detail-book { position: static; top: auto; }
}
.book-h {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 12px; color: var(--ink-soft);
  font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
  padding-bottom: 14px; border-bottom: 1px solid var(--rule);
}
.book-h-l { color: var(--ink); font-size: 13px; }
.book-h-r b { color: var(--ink); }
.book-h-r { display: inline-flex; align-items: center; gap: 4px; }
.book-price { display: flex; align-items: baseline; gap: 6px; }
.book-from { font-size: 13px; color: var(--ink-soft); font-weight: 600; }
.book-amt {
  font-size: 52px; font-weight: 800;
  letter-spacing: -0.04em; color: var(--ink); line-height: 1;
}
.book-cur { font-size: 20px; font-weight: 700; color: var(--ink); }
.book-per { font-size: 13px; color: var(--ink-soft); font-weight: 500; margin-left: 4px; }
.book-desc { margin: 0; color: var(--ink-soft); font-size: 13.5px; line-height: 1.45; }
.book-perks {
  list-style: none; margin: 6px 0 0; padding: 14px 0 0;
  border-top: 1px solid var(--rule);
  display: flex; flex-direction: column; gap: 8px;
  font-size: 13px; color: var(--ink-soft); font-weight: 500;
}

/* TOUR VIEWER */
.tv {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-radius: var(--rad);
  background: var(--surface-2);
  cursor: grab;
  user-select: none; -webkit-user-select: none;
  margin-bottom: 16px;
}
.tv[data-dragging="1"] { cursor: grabbing; }
.tv-pan { position: absolute; inset: 0; display: flex; width: 300%; height: 100%; }
.tv-pan > div { width: 33.333%; height: 100%; flex-shrink: 0; }
.tv-vignette {
  position: absolute; inset: 0;
  background: radial-gradient(80% 80% at 50% 50%, transparent 50%, rgba(0,0,0,.55) 100%);
  pointer-events: none;
}
.tv-hud {
  position: absolute; top: 0; left: 0; right: 0;
  display: flex; justify-content: space-between;
  padding: 14px 18px;
  font-size: 11.5px; font-weight: 700;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: #fff;
  text-shadow: 0 1px 4px rgba(0,0,0,.6);
  pointer-events: none;
}
.tv-hud-l, .tv-hud-r { display: flex; align-items: center; gap: 8px; }
.tv-rec {
  width: 8px; height: 8px; border-radius: 50%; background: #ff4a3b;
  box-shadow: 0 0 8px #ff4a3b;
  animation: pulse 1.5s infinite;
}
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:.3} }
.tv-hint {
  position: absolute; left: 50%; bottom: 100px; transform: translateX(-50%);
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: rgba(255,255,255,.92);
  padding: 8px 16px;
  border: 1px solid rgba(255,255,255,.3);
  background: rgba(0,0,0,.4);
  border-radius: var(--rad-pill);
  backdrop-filter: blur(6px);
  pointer-events: none;
}
.tv-hot { position: absolute; width: 44px; height: 44px; transform: translate(-50%, -50%); display: grid; place-items: center; cursor: pointer; }
.tv-hot-ring {
  position: absolute; inset: 0; border-radius: 50%;
  border: 2px solid #fff; opacity: 0.85;
  animation: tvRing 2.2s ease-out infinite;
}
@keyframes tvRing {
  0% { transform: scale(0.5); opacity: 0.9; }
  100% { transform: scale(1.6); opacity: 0; }
}
.tv-hot-core {
  width: 14px; height: 14px; border-radius: 50%; background: #fff;
  box-shadow: 0 0 12px rgba(255,255,255,.6);
}
.tv-hot-lbl {
  position: absolute; top: 110%; left: 50%; transform: translateX(-50%);
  white-space: nowrap;
  padding: 5px 12px;
  background: rgba(0,0,0,.85); color: #fff;
  font-size: 11.5px; font-weight: 600;
  border-radius: var(--rad-sm);
}
.tv-scenes { position: absolute; left: 18px; right: 18px; bottom: 18px; display: flex; gap: 6px; }
.tv-scene {
  flex: 1; display: flex; flex-direction: column; gap: 4px;
  padding: 10px 14px;
  background: rgba(0,0,0,.5);
  border: 1px solid rgba(255,255,255,.18);
  color: #fff;
  font-size: 12.5px; font-weight: 700;
  text-align: left;
  border-radius: var(--rad-sm);
  backdrop-filter: blur(6px);
  transition: background var(--t-fast) var(--ease);
}
.tv-scene:hover { background: rgba(0,0,0,.7); }
.tv-scene-nr {
  font-size: 10px; font-weight: 700;
  color: rgba(255,255,255,.7);
  letter-spacing: 0.04em;
}
.tv-scene[data-on="true"] { background: var(--accent); border-color: var(--accent); color: #fff; }
.tv-scene[data-on="true"] .tv-scene-nr { color: rgba(255,255,255,.85); }
.tab-tour-desc { color: var(--ink-soft); font-size: 14px; margin: 0; }

.detail-similar { margin-top: 48px; }

/* ── ABOUT ──────────────────────────────────────────────────────────── */
.about { max-width: 800px; }
.about h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(40px, 6vw, 64px); line-height: 1;
  letter-spacing: -0.03em;
  margin: 16px 0;
}
.about h1 em {
  font-style: normal; font-weight: 800; color: var(--accent);
}
.about p { font-size: 17px; line-height: 1.6; color: var(--ink-soft); }

/* ── FOOTER (light, compact) ────────────────────────────────────────── */
.ft {
  position: relative;
  margin-top: auto;
  background: var(--surface-2);
  color: var(--ink-soft);
  padding: 56px 32px 20px;
  overflow: hidden;
  border-top: 1px solid var(--rule);
}
@media (max-width: 720px) { .ft { padding: 44px 20px 18px; } }
.ft-wave {
  position: absolute;
  top: -1px; left: 0; right: 0;
  width: 100%; height: 24px;
  pointer-events: none;
  display: block;
  z-index: 1;
}
.ft-wave-back { fill: var(--accent-tint); opacity: 0.55; }
.ft-wave-fore { fill: var(--surface-2); }
.ft-inner { max-width: 1320px; margin: 0 auto; position: relative; z-index: 2; }

/* — newsletter card — link grid + bottom bar share the same horizontal
   inset (var(--ft-pad)) so their content aligns with the card's content — */
.ft-inner { --ft-pad: 22px; }
.ft-news {
  display: grid; grid-template-columns: 1fr auto;
  gap: 24px; align-items: center;
  padding: 18px var(--ft-pad);
  margin-bottom: 32px;
  background: #fff;
  /* inset shadow stands in for the 1px border so it doesn't shift content by 1px */
  box-shadow: inset 0 0 0 1px var(--rule), var(--shadow-xs);
  border-radius: var(--rad);
}
@media (max-width: 780px) {
  .ft-news { grid-template-columns: 1fr; gap: 14px; padding: 18px var(--ft-pad) 20px; }
}
.ft-news-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ft-news-tag {
  display: inline-block; width: fit-content;
  padding: 2px 9px; margin-bottom: 4px;
  border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent);
  font-size: 10px; font-weight: 800;
  letter-spacing: 0.08em; text-transform: uppercase;
}
.ft-news-h {
  margin: 0;
  font-size: 16px; font-weight: 800; letter-spacing: -0.015em;
  color: var(--ink); line-height: 1.25;
}
.ft-news-sub {
  margin: 0; font-size: 13px; line-height: 1.45;
  color: var(--ink-soft);
}
.ft-news-action { display: flex; flex-shrink: 0; }
.ft-news-form {
  display: grid; grid-template-columns: minmax(180px, 240px) auto;
  gap: 6px;
  padding: 5px;
  background: var(--surface-2);
  border: 1px solid var(--rule);
  border-radius: var(--rad-pill);
  transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.ft-news-form:focus-within {
  border-color: var(--accent);
  background: #fff;
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.ft-news-form input {
  background: transparent; border: 0; outline: none;
  padding: 7px 12px;
  font-size: 13.5px; font-weight: 500;
  color: var(--ink);
  min-width: 0;
}
.ft-news-form input::placeholder { color: var(--ink-soft); opacity: 0.7; }
.ft-news-form button {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 8px 14px;
  background: var(--accent); color: #fff;
  border-radius: var(--rad-pill);
  font-size: 13px; font-weight: 700;
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.ft-news-form button:hover { background: var(--accent-deep); transform: translateY(-1px); }
.ft-news-form button:active { transform: translateY(0); }
.ft-news-ok {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 14px;
  border-radius: var(--rad-pill);
  background: var(--positive-bg);
  border: 1px solid var(--positive-ring);
  color: var(--positive);
  font-size: 13px; font-weight: 700;
  animation: msgIn 280ms var(--ease);
}
.ft-news-ok svg { color: var(--positive); }

/* — link columns — inset matches the newsletter card's inner padding — */
.ft-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 28px 32px;
  padding: 0 var(--ft-pad) 24px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--rule);
}
@media (max-width: 980px) { .ft-grid { grid-template-columns: repeat(2, 1fr); gap: 24px; } }
@media (max-width: 480px) { .ft-grid { grid-template-columns: 1fr; gap: 20px; } }
.ft-col { display: flex; flex-direction: column; gap: 2px; }
.ft-col h4 {
  margin: 0 0 8px;
  font-size: 11px; font-weight: 800;
  color: var(--ink); letter-spacing: 0.08em;
  text-transform: uppercase;
}
.ft-col a {
  font-size: 13px; color: var(--ink-soft); padding: 3px 0;
  width: fit-content;
  transition: color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.ft-col a:hover { color: var(--accent); transform: translateX(2px); }

/* — bottom bar — copyright + legal on left, socials on right — */
.ft-bar {
  display: flex; justify-content: space-between; align-items: center;
  gap: 20px;
  padding: 4px var(--ft-pad) 0;
  font-size: 12px; color: var(--ink-soft); font-weight: 500;
}
.ft-bar-l {
  display: inline-flex; flex-wrap: wrap; align-items: center;
  gap: 8px 18px;
  min-height: 30px; /* match social icon height so both sides align */
}
.ft-bar-copy { color: var(--ink); font-weight: 700; }
.ft-bar-l > a {
  color: var(--ink-soft); transition: color var(--t-fast) var(--ease);
}
.ft-bar-l > a:hover { color: var(--accent); }

.ft-bar-r { display: inline-flex; align-items: center; gap: 14px; }

.ft-social { display: inline-flex; gap: 8px; }
.ft-social-i {
  display: inline-grid; place-items: center;
  width: 32px; height: 32px; border-radius: 50%;
  background: #fff;
  border: 1px solid var(--rule);
  color: var(--ink-soft);
  transition: background var(--t-fast) var(--ease),
              border-color var(--t-fast) var(--ease),
              color var(--t-fast) var(--ease),
              transform var(--t-fast) var(--ease);
  cursor: pointer;
}
.ft-social-i:hover {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
  transform: translateY(-2px);
}

@media (max-width: 720px) {
  .ft-bar { flex-direction: column-reverse; align-items: flex-start; gap: 18px; }
  .ft-bar-l { gap: 6px 14px; }
}

/* ── ARTYKUŁY (editorial guides) ────────────────────────────────────── */
.artykuly { max-width: 1180px; margin: 0 auto; padding: 0 32px 96px; }
.art-h { padding: 12px 0 36px; border-bottom: 1px solid var(--rule); margin-bottom: 36px; }
.art-h-tag {
  display: inline-block; padding: 4px 12px; border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent);
  font-size: 11.5px; font-weight: 800;
  letter-spacing: 0.06em; text-transform: uppercase;
  margin-bottom: 14px;
}
.art-h-title {
  font-family: var(--font-display); font-weight: 800;
  font-variation-settings: "opsz" 72;
  font-size: clamp(40px, 6vw, 72px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 0 0 14px;
}
.art-h-title em { font-style: normal; font-weight: 800; color: var(--accent); }
.art-h-lede {
  font-size: clamp(15px, 1.1vw, 17px); line-height: 1.5;
  color: var(--ink-soft); max-width: 62ch; margin: 0 0 22px;
}
.art-tags { display: flex; flex-wrap: wrap; gap: 8px; }

.art-tag {
  display: inline-flex; align-items: center;
  padding: 3px 10px; border-radius: var(--rad-pill);
  font-size: 11px; font-weight: 800;
  letter-spacing: 0.06em; text-transform: uppercase;
}
.art-tag-positive { background: var(--positive-bg); color: var(--positive); border: 1px solid var(--positive-ring); }
.art-tag-accent   { background: var(--accent-soft); color: var(--accent); }
.art-tag-ink      { background: var(--surface-3); color: var(--ink); }
.art-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--ink-faint); display: inline-block; }

/* — featured (top) article — */
.art-featured {
  display: grid; grid-template-columns: 1.05fr 1fr;
  gap: 36px; align-items: center;
  margin-bottom: 56px;
  cursor: pointer;
}
@media (max-width: 800px) { .art-featured { grid-template-columns: 1fr; gap: 22px; } }
.art-featured-photo {
  border-radius: var(--rad);
  overflow: hidden;
  aspect-ratio: 16 / 11;
  background: var(--photo-skel);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease);
}
.art-featured:hover .art-featured-photo { transform: translateY(-2px); box-shadow: var(--shadow); }
.art-featured-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.art-featured-body { display: flex; flex-direction: column; gap: 14px; }
.art-featured-meta {
  display: inline-flex; align-items: center; gap: 10px;
  font-size: 12.5px; color: var(--ink-soft); font-weight: 600;
}
.art-featured-title {
  margin: 0; font-family: var(--font-display); font-weight: 800;
  font-variation-settings: "opsz" 40;
  font-size: clamp(28px, 3vw, 40px); line-height: 1.12;
  letter-spacing: -0.025em; color: var(--ink);
  text-wrap: balance;
}
.art-featured:hover .art-featured-title { color: var(--accent); }
.art-featured-title { transition: color var(--t-fast) var(--ease); }
.art-featured-lede {
  margin: 0; color: var(--ink-soft); font-size: 15.5px; line-height: 1.55;
  max-width: 50ch;
}
.art-featured-foot {
  display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 13px; color: var(--ink-soft); font-weight: 600;
  margin-top: 4px;
}
.art-author { color: var(--ink); font-weight: 700; }
.art-featured-cta {
  display: inline-flex; align-items: center; gap: 4px;
  font-weight: 700; color: var(--accent);
  margin-left: auto;
}
.art-featured-cta svg { transition: transform var(--t-fast) var(--ease); }
.art-featured:hover .art-featured-cta svg { transform: translateX(3px); }

/* — grid of remaining articles — */
.art-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px;
}
@media (max-width: 980px) { .art-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .art-grid { grid-template-columns: 1fr; } }

.art-card {
  display: flex; flex-direction: column;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
  cursor: pointer;
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease);
}
.art-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
  border-color: var(--rule-strong);
}
.art-card-photo {
  position: relative;
  aspect-ratio: 16 / 10;
  background: var(--photo-skel); overflow: hidden;
}
.art-card-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 500ms var(--ease); }
.art-card:hover .art-card-photo img { transform: scale(1.05); }
.art-card-photo .art-tag {
  position: absolute; top: 12px; left: 12px;
  background: rgba(255,255,255,0.94);
  color: var(--ink); border: 0;
  box-shadow: var(--shadow-xs);
}
.art-card-body {
  padding: 16px 18px 18px;
  display: flex; flex-direction: column; gap: 8px; flex: 1;
}
.art-card-title {
  margin: 0; font-family: var(--font-display); font-weight: 700;
  font-variation-settings: "opsz" 22;
  font-size: 19px; line-height: 1.22;
  letter-spacing: -0.02em; color: var(--ink);
  text-wrap: balance;
}
.art-card-lede {
  margin: 0; color: var(--ink-soft); font-size: 13.5px; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.art-card-foot {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; color: var(--ink-soft); font-weight: 600;
  margin-top: auto; padding-top: 12px;
  border-top: 1px solid var(--rule);
}

/* ── KATALOG (newspaper distribution) ───────────────────────────────── */
.katalog { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
.kat-h { padding: 28px 0 36px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.kat-h-tag {
  display: inline-block;
  padding: 4px 12px; border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent);
  font-size: 11.5px; font-weight: 800;
  letter-spacing: 0.06em; text-transform: uppercase;
  margin-bottom: 14px;
}
.kat-h-title {
  font-size: clamp(40px, 7vw, 80px); font-weight: 800;
  line-height: 0.95; letter-spacing: -0.04em;
  margin: 0 0 16px;
}
.kat-h-title em { font-style: normal; color: var(--accent); font-weight: 800; }
.kat-h-lede {
  font-size: clamp(15px, 1.2vw, 18px); line-height: 1.5;
  color: var(--ink-soft); max-width: 60ch; margin: 0 0 22px;
}
.kat-h-lede b { color: var(--ink); font-weight: 700; }
.kat-h-meta {
  display: inline-flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 13px; color: var(--ink-soft); font-weight: 500;
}
.kat-h-free {
  padding: 2px 10px; border-radius: var(--rad-pill);
  background: var(--positive-bg); color: var(--positive);
  font-weight: 700; font-size: 12px;
}

.kat-stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 14px; margin-bottom: 36px;
}
@media (max-width: 720px) { .kat-stats { grid-template-columns: repeat(2, 1fr); } }
.kat-stat {
  background: #fff; border: 1px solid var(--rule);
  border-radius: var(--rad); padding: 22px 22px 20px;
  display: flex; flex-direction: column; gap: 2px;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
  box-shadow: var(--shadow-xs);
}
.kat-stat:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--rule-strong); }
.kat-stat b {
  font-size: 36px; font-weight: 800;
  letter-spacing: -0.03em; line-height: 1;
  color: var(--ink); margin-bottom: 8px;
}
.kat-stat-label { font-size: 13.5px; font-weight: 700; color: var(--ink); }
.kat-stat-sub { font-size: 12px; color: var(--ink-soft); font-weight: 500; }

.kat-cities-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
}
@media (max-width: 980px) { .kat-cities-grid { grid-template-columns: repeat(2, 1fr); } }
.kat-city {
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad);
  padding: 14px 16px; text-align: left;
  display: flex; flex-direction: column; gap: 8px;
  transition: all var(--t-fast) var(--ease);
}
.kat-city:hover { border-color: var(--accent); background: var(--accent-soft); }
.kat-city[data-on="true"] { border-color: var(--accent); background: var(--accent); color: #fff; }
.kat-city-h { display: flex; justify-content: space-between; align-items: baseline; }
.kat-city-name { font-size: 16px; font-weight: 800; letter-spacing: -0.015em; }
.kat-city-count {
  font-size: 13px; font-weight: 800; color: var(--accent);
  background: var(--accent-soft); padding: 2px 10px; border-radius: var(--rad-pill);
}
.kat-city[data-on="true"] .kat-city-count { background: rgba(255,255,255,.2); color: #fff; }
.kat-city-areas { display: flex; flex-wrap: wrap; gap: 4px; }
.kat-city-area {
  font-size: 11px; color: var(--ink-soft);
  padding: 2px 8px; border-radius: var(--rad-pill);
  background: var(--surface-2);
}
.kat-city[data-on="true"] .kat-city-area { background: rgba(255,255,255,.18); color: rgba(255,255,255,.9); }

.kat-clear {
  font-size: 13px; font-weight: 700; color: var(--accent);
  padding: 6px 12px; border-radius: var(--rad-pill);
  border: 1px solid var(--accent);
}
.kat-clear:hover { background: var(--accent-soft); }

.kat-type-chips {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 18px;
}

.kat-points-list {
  display: flex; flex-direction: column; gap: 8px;
}
.kat-point {
  display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad);
  padding: 14px 18px;
  transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.kat-point:hover { border-color: var(--rule-strong); background: var(--surface-2); }
.kat-point-l { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.kat-point-type {
  font-size: 10.5px; font-weight: 800; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--accent);
}
.kat-point-name {
  font-size: 15.5px; font-weight: 700; color: var(--ink);
  letter-spacing: -0.01em;
}
.kat-point-addr {
  font-size: 12.5px; color: var(--ink-soft); font-weight: 500;
  display: inline-flex; align-items: center; gap: 5px;
}
.kat-point-addr svg { color: var(--accent); flex-shrink: 0; }
.kat-point-r { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.kat-point-city {
  font-size: 13px; font-weight: 700; color: var(--ink);
}
.kat-point-qty {
  font-size: 11.5px; font-weight: 600; color: var(--ink-soft);
  padding: 2px 8px; border-radius: var(--rad-pill);
  background: var(--surface-2);
}

.kat-partner {
  display: grid; grid-template-columns: 1fr auto; gap: 20px; align-items: center;
  padding: 28px 32px; margin-top: 56px;
  background: linear-gradient(135deg, var(--accent-soft) 0%, #fff 70%);
  border: 1px solid var(--accent);
  border-radius: var(--rad);
}
.kat-partner-tag {
  font-size: 11px; font-weight: 800; letter-spacing: 0.06em;
  color: var(--accent); text-transform: uppercase;
}
.kat-partner-body h3 {
  margin: 4px 0 4px; font-size: 22px; font-weight: 800;
  letter-spacing: -0.02em;
}
.kat-partner-body p {
  margin: 0; color: var(--ink-soft); font-size: 14px; max-width: 56ch;
}
.kat-partner .callout-cta { background: var(--accent); }
@media (max-width: 720px) {
  .kat-partner { grid-template-columns: 1fr; }
  .kat-partner .callout-cta { justify-self: start; }
}
.chatbot {
  position: fixed;
  right: 24px; bottom: 24px;
  z-index: 80;
  font-family: var(--font-text);
}

/* Floating action button */
.cb-fab {
  display: inline-flex; align-items: center; gap: 10px;
  padding: 12px 20px 12px 14px;
  background: var(--accent);
  color: #fff;
  border-radius: var(--rad-pill);
  box-shadow: 0 10px 28px rgba(10,95,161,.36), 0 2px 8px rgba(11,26,43,.18);
  font-size: 14px; font-weight: 700;
  letter-spacing: -0.01em;
  cursor: pointer;
  transition: transform var(--t-fast) var(--ease),
              box-shadow var(--t-fast) var(--ease),
              background var(--t-fast) var(--ease);
  position: relative;
  animation: fabIn 500ms var(--ease) both 200ms;
}
@keyframes fabIn {
  from { opacity: 0; transform: translateY(20px) scale(0.9); }
  to   { opacity: 1; transform: none; }
}
.cb-fab:hover { transform: translateY(-2px); box-shadow: 0 14px 36px rgba(10,95,161,.4), 0 4px 12px rgba(11,26,43,.2); background: var(--accent-deep); }
.cb-fab:active { transform: translateY(0); }
.cb-fab-icon {
  display: inline-grid; place-items: center;
  width: 32px; height: 32px; border-radius: 50%;
  background: rgba(255,255,255,.18);
}
.cb-fab-icon svg {
  animation: fabIconWiggle 4s ease-in-out infinite;
  transform-origin: 50% 60%;
}
@keyframes fabIconWiggle {
  0%, 88%, 100% { transform: rotate(0deg); }
  92%           { transform: rotate(-10deg); }
  96%           { transform: rotate(10deg); }
}
.cb-fab-label { line-height: 1; }
.cb-fab-dot {
  position: absolute; top: 4px; right: 4px;
  width: 10px; height: 10px; border-radius: 50%;
  background: #ff5a5f;
  box-shadow: 0 0 0 2px var(--accent);
  animation: pulse 1.5s ease-in-out infinite;
}

/* Expanded panel */
.cb-panel {
  width: 380px;
  max-width: calc(100vw - 32px);
  height: min(560px, calc(100vh - 64px));
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 20px;
  box-shadow:
    0 24px 60px rgba(11,26,43,.20),
    0 6px 18px rgba(11,26,43,.10);
  overflow: hidden;
  display: flex; flex-direction: column;
  transform-origin: bottom right;
  animation: panelIn 280ms var(--ease);
}
@keyframes panelIn {
  from { opacity: 0; transform: translateY(16px) scale(0.94); }
  to   { opacity: 1; transform: none; }
}

/* Header */
.cb-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 16px;
  background: linear-gradient(180deg, var(--accent) 0%, var(--accent-deep) 100%);
  color: #fff;
}
.cb-head-l { display: flex; align-items: center; gap: 12px; min-width: 0; }
.cb-avatar {
  display: inline-grid; place-items: center;
  width: 38px; height: 38px; border-radius: 50%;
  background: rgba(255,255,255,.18);
  flex-shrink: 0;
}
.cb-head-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cb-head-title {
  font-size: 15px; font-weight: 800; line-height: 1.2;
  letter-spacing: -0.015em;
}
.cb-head-sub {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: rgba(255,255,255,.78); font-weight: 500;
}
.cb-head-status {
  width: 7px; height: 7px; border-radius: 50%;
  background: #5af0a8;
  box-shadow: 0 0 6px rgba(90,240,168,.7);
}
.cb-close {
  width: 32px; height: 32px; border-radius: 50%;
  display: grid; place-items: center;
  color: #fff;
  background: rgba(255,255,255,.10);
  transition: background var(--t-fast) var(--ease);
}
.cb-close:hover { background: rgba(255,255,255,.22); }

/* Message list */
.cb-body {
  flex: 1; overflow-y: auto;
  padding: 16px;
  display: flex; flex-direction: column; gap: 10px;
  background:
    linear-gradient(180deg, var(--accent-soft) 0%, #fff 60px);
  scroll-behavior: smooth;
}
.cb-body::-webkit-scrollbar { width: 6px; }
.cb-body::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: 3px; }

.cb-msg {
  display: flex; gap: 8px; align-items: flex-end;
  animation: msgIn 240ms var(--ease) both;
}
@keyframes msgIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}
.cb-msg-user { justify-content: flex-end; }
.cb-msg-assistant { justify-content: flex-start; }
.cb-msg-avatar {
  display: inline-grid; place-items: center;
  width: 26px; height: 26px; border-radius: 50%;
  background: #fff;
  border: 1px solid var(--rule);
  flex-shrink: 0;
  margin-bottom: 2px;
}
.cb-msg-bubble {
  max-width: 78%;
  padding: 10px 14px;
  border-radius: 14px;
  font-size: 14px; line-height: 1.45;
  letter-spacing: -0.005em;
  word-wrap: break-word;
}
.cb-msg-user .cb-msg-bubble {
  background: var(--accent);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.cb-msg-assistant .cb-msg-bubble {
  background: #fff;
  color: var(--ink);
  border: 1px solid var(--rule);
  border-bottom-left-radius: 4px;
}

/* Assistant-generated tour suggestion card (inside the bubble) */
.cb-msg-bubble:has(.cb-tour) { max-width: 94%; }
.cb-tour { margin-top: 10px; border-top: 1px solid var(--rule); padding-top: 10px; }
.cb-tour-head { display: flex; flex-direction: column; gap: 2px; margin-bottom: 8px; }
.cb-tour-head strong { font-size: 14px; color: #0b1a2b; }
.cb-tour-head span { font-size: 12px; color: #6a7a90; }
.cb-tour-days { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.cb-tour-day-t { font-size: 11.5px; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: .04em; margin-bottom: 4px; }
.cb-tour-stops { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.cb-tour-stops li { position: relative; padding-left: 16px; font-size: 13px; line-height: 1.4; }
.cb-tour-stops li::before { content: ""; position: absolute; left: 5px; top: 7px; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); }
.cb-tour-stops a { color: #0b1a2b; }
.cb-tour-stops a:hover { color: var(--accent); text-decoration: underline; }
.cb-tour-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.cb-tour-actions .btn-sm { padding: 7px 12px; font-size: 12.5px; }
.cb-tour-toggle { background: none; border: none; padding: 6px 2px; margin-right: auto; font-size: 12.5px; font-weight: 600; color: var(--accent); cursor: pointer; }
.cb-tour-toggle:hover { text-decoration: underline; }

/* Detailed (rich) plan view inside the chat */
.cb-tour-stops-rich { gap: 8px; }
.cb-tour-stops-rich .cb-tour-stop { padding-left: 0; }
.cb-tour-stops-rich .cb-tour-stop::before { display: none; }
.cb-tour-stop { display: flex; gap: 10px; align-items: flex-start; }
.cb-tour-thumb { flex: 0 0 auto; width: 52px; height: 40px; border-radius: 8px; overflow: hidden; background: #eef1f4; display: block; }
.cb-tour-thumb .ph, .cb-tour-thumb picture, .cb-tour-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cb-tour-stop-body { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cb-tour-stop-name { font-size: 13px; font-weight: 600; color: #0b1a2b; }
.cb-tour-stop-name:hover { color: var(--accent); }
.cb-tour-stop-meta { font-size: 11px; color: #6a7a90; }
.cb-tour-stop-tag { font-style: normal; font-size: 11.5px; color: #56657a; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cb-msg.is-error .cb-msg-bubble {
  background: #fff2f0;
  border-color: #f5c2bf;
  color: #8a2c20;
}

/* Typing indicator */
.cb-typing {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 12px 14px;
}
.cb-typing span {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--ink-faint);
  animation: typingDot 1.2s ease-in-out infinite;
}
.cb-typing span:nth-child(2) { animation-delay: 0.15s; }
.cb-typing span:nth-child(3) { animation-delay: 0.30s; }
@keyframes typingDot {
  0%, 60%, 100% { opacity: 0.3; transform: translateY(0); }
  30%           { opacity: 1;   transform: translateY(-3px); }
}

/* Suggestion chips */
.cb-suggestions {
  padding: 0 16px 8px;
  background: #fff;
}
.cb-suggestions-label {
  font-size: 11px; font-weight: 700;
  color: var(--ink-soft);
  letter-spacing: 0.04em; text-transform: uppercase;
  margin-bottom: 8px;
}
.cb-suggestions-list {
  display: flex; flex-direction: column; gap: 6px;
}
.cb-suggestion {
  display: block; text-align: left;
  padding: 9px 14px; border-radius: var(--rad-pill);
  background: var(--accent-soft);
  color: var(--accent);
  font-size: 13px; font-weight: 600;
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  border: 1px solid transparent;
}
.cb-suggestion:hover {
  background: #fff;
  border-color: var(--accent);
  transform: translateX(2px);
}

/* Input form */
.cb-form {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 12px 6px;
  background: #fff;
  border-top: 1px solid var(--rule);
}
.cb-input {
  flex: 1;
  padding: 11px 16px;
  background: var(--surface-2);
  border: 1px solid transparent;
  border-radius: var(--rad-pill);
  outline: none;
  font-size: 14px; font-weight: 500;
  color: var(--ink);
  transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.cb-input:focus {
  background: #fff;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.cb-input:disabled { opacity: 0.6; }
.cb-send {
  width: 40px; height: 40px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--accent);
  color: #fff;
  transition: transform var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.cb-send:hover:not(:disabled) { background: var(--accent-deep); transform: scale(1.05); }
.cb-send:active:not(:disabled) { transform: scale(0.96); }
.cb-send:disabled { background: var(--surface-3); color: var(--ink-faint); cursor: not-allowed; }

.cb-foot {
  padding: 0 14px 10px;
  text-align: center;
  font-size: 10.5px;
  color: var(--ink-faint);
  background: #fff;
  font-weight: 500;
}

@media (max-width: 520px) {
  /* FAB stays anchored to the right edge; the panel can stretch full-width
     when actually open via the [data-open] attribute on .chatbot. */
  .chatbot { right: 14px; bottom: 14px; }
  .chatbot[data-open="true"] { left: 14px; }
  .cb-panel { width: 100%; height: min(540px, calc(100vh - 28px)); }
  .cb-fab-label { display: none; }
  .cb-fab { padding: 14px; }
  .cb-fab-icon { background: transparent; width: 24px; height: 24px; }
}
/* ── LEAFLET MAP ────────────────────────────────────────────────────── */
.lmap {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  background: var(--map-bg);
}
.lmap .leaflet-container {
  width: 100%; height: 100%;
  font-family: var(--font-text);
  background: var(--map-bg);
}
.lmap-pin {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--accent);
  border: 3px solid #fff;
  box-shadow: 0 4px 10px rgba(11,26,43,.25);
  display: grid; place-items: center;
  color: #fff; font-weight: 800; font-size: 11.5px;
  cursor: pointer;
  transition: transform var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.lmap-pin:hover { transform: scale(1.12); background: var(--accent-deep); }
.lmap-pin.is-active {
  background: var(--accent-deep);
  transform: scale(1.18);
  box-shadow: 0 6px 14px rgba(7,61,108,.45), 0 0 0 6px rgba(10,95,161,.18);
}
.lmap-pin.is-dim { opacity: 0.35; }
/* Rich attraction popup */
.leaflet-popup.map-popup-wrap .leaflet-popup-content-wrapper {
  border-radius: var(--rad);
  box-shadow: var(--shadow-lg);
  padding: 0;
  overflow: hidden;
  background: #fff;
}
.leaflet-popup.map-popup-wrap .leaflet-popup-content {
  margin: 0;
  width: 280px !important;
  font-family: var(--font-text);
  font-size: 13px;
  line-height: 1.4;
}
.leaflet-popup.map-popup-wrap .leaflet-popup-tip { box-shadow: var(--shadow-sm); }
.leaflet-popup.map-popup-wrap a.leaflet-popup-close-button {
  color: #fff; font-size: 22px; padding: 6px 9px 0 0;
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
  z-index: 2;
}

.map-popup { display: flex; flex-direction: column; }
.map-popup-photo {
  width: 100%; height: 140px;
  background-size: cover; background-position: center;
  background-color: var(--photo-skel);
}
.map-popup-body { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; }
.map-popup-meta {
  font-size: 10.5px; font-weight: 800;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-soft);
}
.map-popup-title {
  margin: 0; font-size: 16px; font-weight: 800;
  letter-spacing: -0.015em; color: var(--ink);
  line-height: 1.2;
}
.map-popup-rating {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12.5px; color: var(--ink-soft);
}
.map-popup-rating b { color: var(--ink); font-weight: 800; }
.map-popup-rev { font-weight: 500; }
.map-popup-bubs { display: inline-flex; gap: 2px; }
.map-popup-bub {
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--surface-3); position: relative; overflow: hidden;
}
.map-popup-bub-f {
  position: absolute; left: 0; top: 0; bottom: 0; background: var(--rating);
}
.map-popup-tagline {
  margin: 2px 0 0; font-size: 12.5px; color: var(--ink-soft); line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.map-popup-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px; margin-top: 6px; padding-top: 10px;
  border-top: 1px solid var(--rule);
}
.map-popup-price { font-weight: 800; color: var(--ink); font-size: 13px; }
/* Specificity bumped (`.leaflet-popup-content a.map-popup-cta`) to outweigh
   Leaflet's own `.leaflet-popup-content a` rule, which forces blue link
   color on every anchor inside its popups and is loaded AFTER our CSS
   because we lazy-inject Leaflet on map mount. */
.leaflet-popup-content a.map-popup-cta,
.map-popup-cta {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 7px 12px; border-radius: var(--rad-pill);
  background: var(--accent); color: #fff;
  font-size: 12.5px; font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.leaflet-popup-content a.map-popup-cta:hover,
.map-popup-cta:hover { background: var(--accent-deep); color: #fff; transform: translateY(-1px); }
.leaflet-popup-content a.map-popup-cta:active,
.map-popup-cta:active { transform: translateY(0); }
.leaflet-popup-content a.map-popup-cta:visited { color: #fff; }

/* ── LOGIN MODAL ────────────────────────────────────────────────────── */
.login-overlay {
  position: fixed; inset: 0;
  background: rgba(11, 26, 43, 0.48);
  display: grid; place-items: center;
  z-index: 100;
  padding: 20px;
  animation: scrimIn 200ms var(--ease);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.login-modal {
  width: min(420px, 100%);
  background: #fff;
  border-radius: var(--rad-lg);
  box-shadow: 0 30px 80px rgba(11,26,43,.25);
  padding: 32px 28px 26px;
  position: relative;
  animation: panelIn 240ms var(--ease);
}
.login-close {
  position: absolute; top: 14px; right: 14px;
  width: 34px; height: 34px; border-radius: 50%;
  display: grid; place-items: center;
  color: var(--ink-soft);
  background: transparent;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.login-close:hover { background: var(--surface-2); color: var(--ink); }
.login-head { text-align: center; margin-bottom: 22px; }
.login-tabs {
  display: inline-flex; gap: 2px;
  margin: 4px auto 14px;
  padding: 4px;
  background: var(--surface-2);
  border: 1px solid var(--rule);
  border-radius: var(--rad-pill);
}
.login-tabs button {
  padding: 7px 18px; border-radius: var(--rad-pill);
  font-size: 13px; font-weight: 700;
  color: var(--ink-soft);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.login-tabs button:hover { color: var(--ink); }
.login-tabs button[data-on="true"] {
  background: #fff; color: var(--accent);
  box-shadow: var(--shadow-xs);
}
.login-h {
  margin: 0 0 6px;
  font-family: var(--font-text); font-weight: 800;
  font-size: 24px; letter-spacing: -0.025em; color: var(--ink);
  line-height: 1.15;
}
.login-sub {
  margin: 0; font-size: 14px; color: var(--ink-soft); line-height: 1.45;
}
.login-form { display: flex; flex-direction: column; gap: 12px; }
.login-field {
  display: flex; flex-direction: column; gap: 6px;
}
.login-field label {
  font-size: 12px; font-weight: 700;
  color: var(--ink); letter-spacing: 0.02em;
}
.login-field input {
  padding: 12px 14px;
  border: 1px solid var(--rule-strong);
  border-radius: var(--rad);
  font-size: 14.5px; font-weight: 500;
  color: var(--ink); background: #fff;
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
  outline: none;
}
.login-field input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.login-row {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 13px;
}
.login-remember { display: inline-flex; align-items: center; gap: 8px; color: var(--ink-soft); cursor: pointer; }
.login-remember input { width: 16px; height: 16px; accent-color: var(--accent); flex-shrink: 0; }
.login-accept {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: 12.5px; line-height: 1.45;
  padding: 6px 2px;
}
.login-hint {
  font-size: 11.5px; color: var(--ink-soft);
  margin-top: 2px; line-height: 1.4;
}
.login-forgot { color: var(--accent); font-weight: 700; }
.login-forgot:hover { text-decoration: underline; }
.login-submit {
  margin-top: 6px;
  background: var(--accent); color: #fff;
  padding: 13px 18px;
  border-radius: var(--rad);
  font-size: 15px; font-weight: 800;
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
}
.login-submit:hover { background: var(--accent-deep); transform: translateY(-1px); }
.login-divider {
  display: flex; align-items: center; gap: 12px;
  margin: 22px 0 16px;
  font-size: 11.5px; font-weight: 700;
  color: var(--ink-soft); letter-spacing: 0.06em; text-transform: uppercase;
}
.login-divider::before, .login-divider::after {
  content: ""; flex: 1; height: 1px; background: var(--rule);
}
.login-socials { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.login-social {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 11px 12px;
  border: 1px solid var(--rule-strong); border-radius: var(--rad);
  font-size: 13.5px; font-weight: 700;
  color: var(--ink); background: #fff;
  transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.login-social:hover { background: var(--surface-2); border-color: var(--ink-soft); }
.login-foot {
  margin: 22px 0 0; text-align: center;
  font-size: 13px; color: var(--ink-soft);
}
.login-foot a { color: var(--accent); font-weight: 700; }
.login-foot a:hover { text-decoration: underline; }

/* (removed dead .acard-360 cleanup rule) */

.sec-h { position: relative; }
.sec-h::before {
  content: "";
  display: block;
  width: 40px; height: 6px;
  background-image:
    radial-gradient(circle at 4px 50%, var(--accent) 1.6px, transparent 2px),
    radial-gradient(circle at 14px 50%, var(--accent) 1.6px, transparent 2px),
    radial-gradient(circle at 24px 50%, var(--accent) 1.6px, transparent 2px),
    radial-gradient(circle at 34px 50%, var(--accent) 1.6px, transparent 2px);
  background-repeat: no-repeat;
  opacity: 0.0;
  position: absolute;
  top: -12px;
  left: 0;
}

/* ── Auth UI (header user menu + modal alerts) ─────────────────────────── */

/* Header: signed-in user pill + dropdown */
.hd-user-wrap { position: relative; }
.hd-user-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 14px 5px 5px;
  border-radius: var(--rad-pill);
  background: var(--surface-2);
  color: var(--ink); font-size: 13px; font-weight: 700;
  transition: background var(--t-fast) var(--ease);
}
.hd-user-btn:hover { background: var(--surface-3); }
.hd-user-avatar {
  display: inline-grid; place-items: center;
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--accent); color: #fff;
  font-size: 12.5px; font-weight: 800;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
}
.hd-user-name {
  max-width: 140px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.hd-user-menu {
  position: absolute; right: 0; top: calc(100% + 8px);
  min-width: 240px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  box-shadow: var(--shadow-lg);
  z-index: 60;
  animation: hdUserMenuIn 140ms var(--ease);
  overflow: hidden;
}
@keyframes hdUserMenuIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}
.hd-user-menu-head {
  display: flex; flex-direction: column;
  padding: 14px 16px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--rule);
}
.hd-user-menu-head strong {
  font-size: 14px; font-weight: 800; color: var(--ink); letter-spacing: -0.01em;
}
.hd-user-menu-head span {
  font-size: 12px; color: var(--ink-soft); margin-top: 2px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.hd-user-menu-item {
  display: block; width: 100%; text-align: left;
  padding: 11px 16px;
  font-size: 14px; font-weight: 600; color: var(--ink);
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.hd-user-menu-item:hover { background: var(--surface-2); color: var(--accent); }
.hd-user-menu-item:focus-visible { background: var(--accent-soft); color: var(--accent); outline: 0; }

/* Login modal alerts */
.login-alert {
  margin: 0 24px 8px;
  padding: 11px 14px;
  border-radius: var(--rad-sm);
  font-size: 13.5px; font-weight: 500; line-height: 1.4;
}
.login-alert-err {
  background: #fdecec; color: #8b1f1f;
  border: 1px solid #f5b3b3;
}
.login-alert-ok {
  background: var(--positive-bg); color: var(--positive);
  border: 1px solid var(--positive-ring);
}
.login-submit:disabled,
.login-social:disabled { opacity: 0.55; cursor: not-allowed; }
.login-submit:disabled:hover { transform: none; box-shadow: none; }

/* ── POMYSŁY (roadmap / public ideas board) ─────────────────────────────── */
.pomysly { max-width: 1180px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .pomysly { padding: 0 20px 64px; } }

.pomysly-h { padding: 16px 0 32px; }
.pomysly-h h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(34px, 5vw, 56px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 16px 0 10px;
  text-wrap: balance;
}
.pomysly-h h1 em { font-style: normal; color: var(--accent); font-weight: 800; }
.pomysly-lede {
  color: var(--ink-soft); font-size: 15.5px; line-height: 1.5;
  max-width: 60ch; margin: 0;
}
.pomysly-votes-mine { color: var(--accent); font-weight: 700; }

.pomysly-filters {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding-block: 18px;
  border-block: 1px solid var(--rule);
  margin-bottom: 28px;
}
.pomysly-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px; border-radius: var(--rad-pill);
  font-size: 13.5px; font-weight: 600; color: var(--ink-soft);
  background: #fff; border: 1px solid var(--rule);
  transition: all var(--t-fast) var(--ease);
}
.pomysly-chip:hover { border-color: var(--rule-strong); color: var(--ink); transform: translateY(-1px); }
.pomysly-chip[data-on="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }
.pomysly-chip-n {
  display: inline-grid; place-items: center;
  min-width: 22px; height: 22px; padding: 0 6px;
  border-radius: 999px;
  background: var(--surface-2); color: var(--ink-soft);
  font-size: 11.5px; font-weight: 700;
}
.pomysly-chip[data-on="true"] .pomysly-chip-n { background: rgba(255,255,255,.16); color: rgba(255,255,255,.95); }

.pomysly-grid {
  list-style: none; padding: 0; margin: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px;
}
@media (max-width: 980px) { .pomysly-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .pomysly-grid { grid-template-columns: 1fr; } }

.pomysly-card {
  display: flex; flex-direction: column; gap: 10px;
  padding: 20px 22px 18px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease),
              box-shadow var(--t-mid) var(--ease),
              border-color var(--t-mid) var(--ease);
}
.pomysly-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
  border-color: var(--rule-strong);
}
.pomysly-card-head {
  display: flex; justify-content: space-between; align-items: center;
}
.pomysly-icon {
  display: inline-grid; place-items: center;
  width: 38px; height: 38px;
  border-radius: 10px;
  background: var(--accent-soft); color: var(--accent);
}
.pomysly-status {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: var(--rad-pill);
  font-size: 11px; font-weight: 800;
  letter-spacing: 0.02em; text-transform: uppercase;
}
.pomysly-status-accent { background: var(--accent-soft); color: var(--accent); }
.pomysly-status-ink    { background: var(--surface-3);   color: var(--ink); }
.pomysly-status-soft   { background: var(--surface-2);   color: var(--ink-soft); }

.pomysly-card-title {
  font-family: var(--font-text); font-weight: 800;
  font-size: 19px; line-height: 1.25;
  letter-spacing: -0.018em;
  color: var(--ink); margin: 4px 0 0;
}
.pomysly-card-lede {
  font-size: 14px; line-height: 1.5; color: var(--ink);
  margin: 0;
}
.pomysly-card-why {
  font-size: 13px; line-height: 1.45; color: var(--ink-soft);
  margin: 0; padding: 10px 12px;
  background: var(--surface-2); border-radius: 10px;
}
.pomysly-card-why strong { color: var(--ink); font-weight: 700; }

.pomysly-card-foot {
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px; margin-top: auto; padding-top: 10px;
  border-top: 1px solid var(--rule);
}
.pomysly-tag {
  font-size: 12px; font-weight: 600; color: var(--ink-soft);
}
.pomysly-effort {
  display: inline-grid; place-items: center;
  width: 24px; height: 24px; border-radius: 6px;
  background: var(--surface-2); color: var(--ink-soft);
  font-size: 11.5px; font-weight: 800;
}
.pomysly-vote {
  margin-left: auto;
  padding: 7px 14px; border-radius: var(--rad-pill);
  background: #fff; color: var(--accent); border: 1px solid var(--accent-tint);
  font-size: 12.5px; font-weight: 700;
  transition: all var(--t-fast) var(--ease);
}
.pomysly-vote:hover { background: var(--accent-soft); transform: translateY(-1px); }
.pomysly-vote[data-on="true"] {
  background: var(--accent); color: #fff; border-color: var(--accent);
}
.pomysly-vote[data-on="true"]:hover { background: var(--accent-deep); border-color: var(--accent-deep); }

.pomysly-cta {
  margin-top: 56px;
  padding: 32px 28px;
  background: var(--surface-2);
  border-radius: var(--rad);
  text-align: center;
}
.pomysly-cta h3 {
  font-family: var(--font-text); font-weight: 800;
  font-size: 22px; letter-spacing: -0.02em;
  margin: 0 0 8px; color: var(--ink);
}
.pomysly-cta p {
  color: var(--ink-soft); font-size: 14.5px; max-width: 50ch; margin: 0 auto 18px;
}

/* ── ULUBIONE (user favorites dashboard) ───────────────────────────────── */
.ulubione { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .ulubione { padding: 0 20px 64px; } }

.ulubione-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.ulubione-h h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(34px, 5vw, 56px); line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 16px 0 10px;
}
.ulubione-h h1 em { font-style: normal; color: var(--accent); font-weight: 800; }
.ulubione-lede {
  color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0;
}
.ulubione-sub {
  margin: 14px 0 0; font-size: 13px; color: var(--ink-soft);
}
.ulubione-sub strong { color: var(--ink); font-weight: 700; }

.ulubione-anon {
  display: flex; align-items: center; gap: 14px;
  margin-top: 16px;
  padding: 12px 16px;
  background: var(--accent-soft);
  border: 1px solid var(--accent-tint);
  border-radius: var(--rad);
  font-size: 13.5px; color: var(--ink);
}
.ulubione-anon strong { color: var(--accent-deep); font-weight: 700; }
.ulubione-anon .btn { margin-left: auto; flex-shrink: 0; }

.ulubione-empty {
  text-align: center;
  padding: 64px 24px;
  border: 1px dashed var(--rule);
  border-radius: var(--rad);
  background: var(--surface-2);
}
.ulubione-empty-illustration {
  font-size: 64px; line-height: 1;
  color: var(--accent-tint);
  margin-bottom: 18px;
  animation: ulubioneHeartPulse 2.4s ease-in-out infinite;
}
@keyframes ulubioneHeartPulse {
  0%, 100% { transform: scale(1); opacity: 0.75; }
  50%      { transform: scale(1.08); opacity: 1; }
}
.ulubione-empty h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: 24px; letter-spacing: -0.02em;
  margin: 0 0 8px; color: var(--ink);
}
.ulubione-empty p {
  color: var(--ink-soft); font-size: 15px; max-width: 40ch; margin: 0 auto 24px;
}
.ulubione-empty-actions {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
}

.ulubione-city { margin-bottom: 48px; }
.ulubione-city-h {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: 18px;
  padding-bottom: 12px; border-bottom: 1px solid var(--rule);
}
.ulubione-city-h h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(20px, 2vw, 26px); letter-spacing: -0.02em;
  color: var(--ink); margin: 0;
}
.ulubione-city-n {
  font-size: 13px; font-weight: 600; color: var(--ink-soft);
}

/* ── POGODA (weather) ─────────────────────────────────────────────────── */
.pogoda-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: var(--rad-pill); background: var(--surface-2); color: var(--ink); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
.pogoda-chip-sm { padding: 2px 8px; font-size: 12px; }
.pogoda-loading { background: var(--surface-3); color: var(--ink-faint); }
.pogoda-icon { font-size: 14px; line-height: 1; }
.pogoda-label { color: var(--ink-soft); font-weight: 500; }
.pogoda-view { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .pogoda-view { padding: 0 20px 64px; } }
.pogoda-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.pogoda-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.pogoda-h h1 em { font-style: normal; color: var(--accent); }
.pogoda-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0; }
.pogoda-grid { display: grid; gap: 16px; grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .pogoda-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .pogoda-grid { grid-template-columns: 1fr; } }
.pogoda-card { display: flex; flex-direction: column; gap: 12px; padding: 20px 22px; border: 1px solid var(--rule); border-radius: var(--rad); background: #fff; box-shadow: var(--shadow-xs); transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease); color: inherit; }
.pogoda-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); border-color: var(--rule-strong); }
.pogoda-card-h { display: flex; align-items: center; gap: 14px; }
.pogoda-card-icon { font-size: 36px; line-height: 1; flex-shrink: 0; }
.pogoda-card-h h3 { margin: 0; font-size: 18px; font-weight: 800; letter-spacing: -0.02em; }
.pogoda-card-h p  { margin: 2px 0 0; font-size: 13px; color: var(--ink-soft); }
.pogoda-card-temp { font-size: 44px; font-weight: 800; color: var(--accent); letter-spacing: -0.04em; font-variant-numeric: tabular-nums; line-height: 1; }
.pogoda-card-days { list-style: none; padding: 12px 0 0; margin: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; border-top: 1px solid var(--rule); }
.pogoda-card-days li { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 2px; font-size: 11.5px; }
.pogoda-day-name { color: var(--ink-soft); text-transform: capitalize; font-weight: 600; }
.pogoda-day-icon { font-size: 18px; line-height: 1; }
.pogoda-day-t { font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; }

/* ── QUIZ ──────────────────────────────────────────────────────────────── */
.quiz-view { max-width: 720px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .quiz-view { padding: 0 20px 64px; } }
.quiz-h { padding: 16px 0 24px; }
.quiz-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(30px, 4.5vw, 48px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.quiz-h h1 em { font-style: normal; color: var(--accent); }
.quiz-lede { color: var(--ink-soft); font-size: 15px; margin: 0; }
.quiz-progress { display: flex; align-items: center; gap: 14px; margin-bottom: 24px; }
.quiz-progress-track { flex: 1; height: 8px; background: var(--surface-3); border-radius: var(--rad-pill); overflow: hidden; }
.quiz-progress-fill  { height: 100%; background: var(--accent); border-radius: var(--rad-pill); transition: width 280ms var(--ease); }
.quiz-progress-label { font-size: 13px; font-weight: 700; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.quiz-card { background: #fff; border: 1px solid var(--rule); border-radius: var(--rad); padding: 32px 28px; box-shadow: var(--shadow); animation: reveal 380ms var(--ease) both; }
.quiz-q { margin: 0 0 24px; font-family: var(--font-text); font-weight: 800; font-size: 24px; letter-spacing: -0.02em; line-height: 1.2; }
.quiz-answers { display: grid; gap: 10px; }
.quiz-answer { display: block; width: 100%; text-align: left; padding: 16px 20px; border: 1.5px solid var(--rule); border-radius: var(--rad); background: #fff; color: var(--ink); font-size: 15px; font-weight: 600; transition: all var(--t-fast) var(--ease); }
.quiz-answer:hover { border-color: var(--accent); background: var(--accent-soft); transform: translateX(4px); }
.quiz-result { animation: reveal 380ms var(--ease) both; }
.quiz-result h2 { font-family: var(--font-text); font-weight: 800; font-size: 28px; letter-spacing: -0.02em; margin: 0 0 8px; }
.quiz-result-lede { color: var(--ink-soft); font-size: 14.5px; margin: 0 0 24px; }
.quiz-result-tag { color: var(--accent); font-weight: 700; }
.quiz-actions { display: flex; gap: 10px; margin-top: 28px; flex-wrap: wrap; }

/* ── PROMOCJE (deals) ─────────────────────────────────────────────────── */
.promocje-view { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .promocje-view { padding: 0 20px 64px; } }
.promocje-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.promocje-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.promocje-h h1 em { font-style: normal; color: var(--accent); }
.promocje-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0; }
.promocje-grid { display: grid; gap: 22px; grid-template-columns: repeat(3, 1fr); }
@media (max-width: 980px) { .promocje-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .promocje-grid { grid-template-columns: 1fr; } }
.promo-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--rule); border-radius: var(--rad); overflow: hidden; box-shadow: var(--shadow-xs); transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease); }
.promo-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.promo-card-photo { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--photo-skel); }
.promo-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.promo-badge { position: absolute; top: 12px; left: 12px; padding: 6px 12px; border-radius: var(--rad-pill); background: #c8281c; color: #fff; font-size: 12px; font-weight: 800; letter-spacing: -0.01em; box-shadow: var(--shadow-sm); }
.promo-card-body { padding: 18px 20px 22px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.promo-meta { font-size: 12.5px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.04em; margin: 0; }
.promo-title { font-size: 18px; font-weight: 800; letter-spacing: -0.02em; color: var(--ink); margin: 0; }
.promo-desc { color: var(--ink-soft); font-size: 13.5px; line-height: 1.45; margin: 4px 0 0; }
.promo-pricerow { display: flex; align-items: baseline; gap: 10px; margin-top: 8px; }
.promo-price { font-size: 22px; font-weight: 800; color: var(--accent); letter-spacing: -0.02em; }
.promo-orig  { font-size: 14px; color: var(--ink-soft); text-decoration: line-through; }
.promo-code { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; background: var(--surface-2); border-radius: var(--rad-sm); font-size: 13px; }
.promo-code span { color: var(--ink-soft); }
.promo-code code { font-family: "SF Mono", Menlo, monospace; font-weight: 800; color: var(--ink); letter-spacing: 0.04em; }
.promo-countdown { display: inline-block; padding: 4px 10px; border-radius: var(--rad-pill); background: var(--positive-bg); color: var(--positive); font-size: 12px; font-weight: 700; }
.promo-countdown-urgent { background: #fde7e0; color: #c8281c; }
.promo-countdown-ended  { background: var(--surface-3); color: var(--ink-soft); }
.promo-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 12px; }
.promo-actions .btn { flex: 1; }

/* ── TRASY (itineraries) ──────────────────────────────────────────────── */
.trasy-view { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .trasy-view { padding: 0 20px 64px; } }
.trasy-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.trasy-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.trasy-h h1 em { font-style: normal; color: var(--accent); }
.trasy-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0; }
.trasy-grid { display: grid; gap: 22px; grid-template-columns: repeat(2, 1fr); }
@media (max-width: 720px) { .trasy-grid { grid-template-columns: 1fr; } }
.trasa-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--rule); border-radius: var(--rad); overflow: hidden; color: inherit; box-shadow: var(--shadow-xs); transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease); }
.trasa-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.trasa-card-photo { position: relative; aspect-ratio: 16/9; overflow: hidden; background: var(--photo-skel); }
.trasa-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.trasa-card-badges { position: absolute; top: 12px; right: 12px; display: flex; gap: 6px; }
.trasa-badge { display: inline-flex; align-items: center; padding: 5px 12px; border-radius: var(--rad-pill); background: var(--accent); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: -0.01em; box-shadow: var(--shadow-sm); }
.trasa-badge-soft { background: rgba(255,255,255,0.95); color: var(--ink); }
.trasa-card-body { padding: 18px 22px 22px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.trasa-card-body h3 { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: -0.02em; line-height: 1.15; }
.trasa-card-lede { color: var(--ink-soft); font-size: 14px; line-height: 1.45; margin: 4px 0 0; }
.trasa-card-meta { color: var(--ink-faint); font-size: 12.5px; font-weight: 600; margin-top: auto; padding-top: 8px; }
.trasa-detail { max-width: 960px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .trasa-detail { padding: 0 20px 64px; } }
.trasa-h { padding: 16px 0 32px; }
.trasa-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 14px; }
.trasa-lede { color: var(--ink-soft); font-size: 16px; line-height: 1.5; margin: 0 0 24px; max-width: 60ch; }
.trasa-meta { display: grid; grid-template-columns: max-content 1fr; gap: 4px 18px; margin: 0 0 20px; padding: 16px 20px; border: 1px solid var(--rule); border-radius: var(--rad); background: var(--surface-2); }
.trasa-meta dt { font-size: 12px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.04em; align-self: center; }
.trasa-meta dd { margin: 0; font-size: 14px; font-weight: 600; color: var(--ink); }
.trasa-tagline { font-size: 14.5px; color: var(--ink); font-style: italic; }
.trasa-day { margin-top: 36px; }
.trasa-day-h { display: flex; align-items: baseline; gap: 14px; margin-bottom: 16px; padding-bottom: 10px; border-bottom: 2px solid var(--accent); }
.trasa-day-num { display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--rad-pill); background: var(--accent); color: #fff; font-size: 13px; font-weight: 800; letter-spacing: -0.01em; flex-shrink: 0; }
.trasa-day-h h2 { font-family: var(--font-text); font-weight: 800; font-size: 22px; letter-spacing: -0.02em; margin: 0; }
.trasa-day-empty { color: var(--ink-soft); font-style: italic; }
.trasa-stops { display: flex; flex-direction: column; gap: 12px; }
.trasa-stop { display: grid; grid-template-columns: auto 96px 1fr; gap: 16px; align-items: center; padding: 14px; border: 1px solid var(--rule); border-radius: var(--rad); background: #fff; color: inherit; transition: transform var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); }
.trasa-stop:hover { transform: translateX(4px); border-color: var(--accent); box-shadow: var(--shadow-sm); }
.trasa-stop-num { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--surface-2); color: var(--ink); font-weight: 800; font-size: 14px; }
.trasa-stop-photo { width: 96px; aspect-ratio: 1; border-radius: var(--rad-sm); overflow: hidden; background: var(--photo-skel); }
.trasa-stop-body h3 { margin: 0; font-size: 16px; font-weight: 700; }
.trasa-stop-meta { margin: 2px 0 4px; font-size: 12.5px; color: var(--ink-soft); font-weight: 600; }
.trasa-stop-tagline { margin: 0; font-size: 13px; color: var(--ink-soft); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 560px) { .trasa-stop { grid-template-columns: auto 64px 1fr; } .trasa-stop-photo { width: 64px; } }

/* ── WYDARZENIA ────────────────────────────────────────────────────────── */
.wydarzenia-view { max-width: 960px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .wydarzenia-view { padding: 0 20px 64px; } }
.wydarzenia-h { padding: 16px 0 24px; }
.wydarzenia-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.wydarzenia-h h1 em { font-style: normal; color: var(--accent); }
.wydarzenia-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0; }
.wydarzenia-filters { display: flex; flex-direction: column; gap: 12px; padding: 16px 0; margin-bottom: 12px; border-bottom: 1px solid var(--rule); }
.wydarzenia-filter-group { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.wydarzenia-filter-label { font-size: 12.5px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.04em; margin-right: 6px; }
.wydarzenia-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.wydarzenie { display: grid; grid-template-columns: 76px 1fr auto; gap: 18px; align-items: center; padding: 16px 20px; border: 1px solid var(--rule); border-radius: var(--rad); background: #fff; transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease); }
.wydarzenie:hover { transform: translateY(-2px); box-shadow: var(--shadow-sm); border-color: var(--accent); }
.wydarzenie-date { display: flex; flex-direction: column; align-items: center; padding: 10px 6px; background: var(--accent-soft); border-radius: var(--rad-sm); color: var(--accent-deep); text-align: center; }
.wydarzenie-day { font-size: 26px; font-weight: 800; line-height: 1; }
.wydarzenie-mon { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; }
.wydarzenie-meta { font-size: 12px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: 0.04em; margin: 0; }
.wydarzenie-title { margin: 4px 0 4px; font-size: 18px; font-weight: 800; letter-spacing: -0.02em; }
.wydarzenie-lede { margin: 0 0 4px; font-size: 13.5px; color: var(--ink-soft); line-height: 1.4; }
.wydarzenie-when { margin: 0; font-size: 12.5px; color: var(--ink-faint); font-weight: 600; }
.wydarzenie-cta { flex-shrink: 0; }
.wydarzenia-empty { padding: 40px; text-align: center; color: var(--ink-soft); border: 1px dashed var(--rule); border-radius: var(--rad); }
@media (max-width: 600px) { .wydarzenie { grid-template-columns: 60px 1fr; } .wydarzenie-cta { grid-column: 1 / -1; } }

/* ── DZIENNIK (visited diary) ─────────────────────────────────────────── */
.dziennik-view { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .dziennik-view { padding: 0 20px 64px; } }
.dziennik-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.dziennik-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(34px, 5vw, 56px); line-height: 1.05; letter-spacing: -0.03em; margin: 16px 0 10px; }
.dziennik-h h1 em { font-style: normal; color: var(--accent); }
.dziennik-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0 0 16px; }
.dziennik-progress { display: flex; align-items: center; gap: 14px; max-width: 600px; margin-top: 12px; }
.dziennik-progress-bar { flex: 1; height: 12px; background: var(--surface-3); border-radius: var(--rad-pill); overflow: hidden; }
.dziennik-progress-fill { height: 100%; background: linear-gradient(90deg, var(--accent), var(--positive)); border-radius: var(--rad-pill); transition: width 380ms var(--ease); }
.dziennik-progress-label { font-size: 13px; font-weight: 800; color: var(--ink); font-variant-numeric: tabular-nums; flex-shrink: 0; }

/* ── DETAIL extras (Tour360 + Reviews + visited button) ───────────────── */
.detail-act[data-on="true"] { background: var(--accent-soft); color: var(--accent); border-color: var(--accent); }
.detail-act-visited[data-on="true"] { background: var(--positive-bg); color: var(--positive); border-color: var(--positive); }
.tour360-block { margin-top: 56px; padding: 24px; border: 1px solid var(--rule); border-radius: var(--rad-lg); background: linear-gradient(135deg, var(--accent-soft), #fff); }
.tour360-h { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; flex-wrap: wrap; }
.tour360-h h2 { font-family: var(--font-text); font-weight: 800; font-size: 24px; letter-spacing: -0.02em; margin: 0 0 6px; }
.tour360-sub { color: var(--ink-soft); font-size: 14px; margin: 0; max-width: 50ch; }
.tour360-frame { position: relative; margin-top: 18px; aspect-ratio: 21/9; border-radius: var(--rad); overflow: hidden; background: #000; cursor: grab; }
.tour360-img { width: 100%; height: 100%; object-fit: cover; cursor: grab; user-select: none; }
.tour360-credit { position: absolute; bottom: 8px; right: 12px; padding: 4px 8px; border-radius: var(--rad-sm); background: rgba(0,0,0,.55); color: #fff; font-size: 11px; font-weight: 600; }
.tour360-hint   { position: absolute; top: 12px; left: 12px;   padding: 6px 12px; border-radius: var(--rad-pill); background: rgba(0,0,0,.65); color: #fff; font-size: 12px; font-weight: 600; }

/* Unsplash photographer credit overlay — hidden by default, fades in
   when the .ph container is hovered. Click → photographer's Unsplash. */
.ph { position: relative; }
.ph-credit {
  position: absolute; bottom: 8px; right: 8px;
  padding: 4px 10px; border-radius: var(--rad-pill);
  background: rgba(0,0,0,0.55); color: #fff;
  font-size: 11px; font-weight: 600;
  opacity: 0; transform: translateY(4px); pointer-events: none;
  transition: opacity 180ms var(--ease), transform 180ms var(--ease), background 140ms var(--ease);
  text-decoration: none;
  backdrop-filter: blur(6px);
}
.ph:hover .ph-credit, .ph-credit:focus-visible {
  opacity: 1; transform: translateY(0); pointer-events: auto;
}
.ph-credit:hover { background: rgba(0,0,0,0.75); }

/* ── Google photo gallery ─────────────────────────────────────────────── */
.gallery-block { margin-top: 56px; }
.gallery-h {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 20px;
}
.gallery-h h2 { font-family: var(--font-text); font-weight: 800; font-size: 28px; letter-spacing: -0.02em; margin: 0 0 6px; }
.gallery-sub  { color: var(--ink-soft); font-size: 14px; margin: 0; }
.gallery-count { font-size: 13px; color: var(--ink-soft); }
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 8px;
}
.gallery-tile {
  display: block; padding: 0; border: 0; background: var(--surface-2);
  aspect-ratio: 1/1; overflow: hidden; border-radius: var(--rad-sm);
  cursor: zoom-in; box-shadow: var(--shadow-xs);
  transition: transform 220ms cubic-bezier(.34,1.56,.64,1), box-shadow 180ms var(--ease);
}
.gallery-tile img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 360ms var(--ease);
}
.gallery-tile:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.gallery-tile:hover img { transform: scale(1.06); }
.gallery-attrib { margin: 12px 0 0; font-size: 11px; color: var(--ink-faint); text-align: right; }

.gallery-lightbox {
  position: fixed; inset: 0; z-index: 1000;
  background: rgba(0,0,0,0.85);
  display: grid; place-items: center;
  animation: gallery-fade-in 200ms var(--ease);
}
@keyframes gallery-fade-in { from { opacity: 0; } to { opacity: 1; } }
.gallery-lb-frame {
  max-width: 92vw; max-height: 92vh;
  margin: 0; display: flex; flex-direction: column; gap: 8px;
}
.gallery-lb-frame img {
  max-width: 92vw; max-height: 86vh;
  object-fit: contain; border-radius: 4px;
  box-shadow: 0 16px 48px -8px rgba(0,0,0,0.6);
}
.gallery-lb-cap {
  color: rgba(255,255,255,0.85); font-size: 12px; text-align: center;
}
.gallery-lb-cap a { color: #fff; text-decoration: underline; }
.gallery-lb-close, .gallery-lb-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 56px; height: 56px; border-radius: 50%;
  background: rgba(255,255,255,0.15); color: #fff;
  font-size: 32px; line-height: 1; cursor: pointer;
  display: grid; place-items: center;
  transition: background 140ms var(--ease), transform 140ms var(--ease);
}
.gallery-lb-close { top: 20px; right: 24px; transform: none; font-size: 28px; width: 44px; height: 44px; }
.gallery-lb-prev  { left: 24px; }
.gallery-lb-next  { right: 24px; }
.gallery-lb-close:hover, .gallery-lb-nav:hover { background: rgba(255,255,255,0.3); }
.gallery-lb-nav:hover:is(.gallery-lb-prev) { transform: translateY(-50%) scale(1.08); }
.gallery-lb-nav:hover:is(.gallery-lb-next) { transform: translateY(-50%) scale(1.08); }
.gallery-lb-close:hover { transform: scale(1.08); }
@media (max-width: 540px) {
  .gallery-lb-close { top: 12px; right: 12px; width: 36px; height: 36px; font-size: 22px; }
  .gallery-lb-nav { width: 40px; height: 40px; font-size: 22px; }
  .gallery-lb-prev { left: 12px; }
  .gallery-lb-next { right: 12px; }
}

/* ── Portal reviews — restyled ────────────────────────────────────────── */
.reviews-block { margin-top: 56px; }

/* Summary card: big number on left, distribution bars on right */
.reviews-summary {
  display: grid;
  grid-template-columns: minmax(140px, 200px) 1fr;
  gap: 32px; align-items: center;
  padding: 24px 28px; margin-bottom: 24px;
  background: linear-gradient(180deg, #fafbff 0%, #fff 100%);
  border: 1px solid var(--rule); border-radius: var(--rad);
}
@media (max-width: 640px) {
  .reviews-summary { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
}
.reviews-summary-score { text-align: center; padding-right: 32px; border-right: 1px solid var(--rule); }
@media (max-width: 640px) { .reviews-summary-score { padding: 0 0 20px 0; border-right: 0; border-bottom: 1px solid var(--rule); } }
.reviews-summary-avg {
  font-family: var(--font-text);
  font-size: clamp(48px, 7vw, 64px);
  font-weight: 800; line-height: 1;
  color: var(--ink); letter-spacing: -0.04em;
}
.reviews-summary-stars { color: #f9b418; font-size: 18px; letter-spacing: 2px; margin: 8px 0 6px; }
.reviews-summary-count { font-size: 12.5px; color: var(--ink-soft); }
.reviews-summary-count strong { color: var(--ink); font-weight: 800; }
.reviews-summary-dist { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 5px; }
.reviews-summary-row {
  display: grid; grid-template-columns: 32px 1fr 38px 32px;
  gap: 10px; align-items: center; width: 100%;
  padding: 4px 8px; border-radius: var(--rad-sm);
  background: transparent; border: 0; cursor: pointer; text-align: left;
  transition: background 140ms var(--ease);
  font-size: 12.5px; color: var(--ink-soft);
}
.reviews-summary-row:hover:not(:disabled) { background: var(--surface-2); }
.reviews-summary-row:disabled { cursor: default; opacity: 0.55; }
.reviews-summary-row[data-on="true"] { background: var(--surface-3); color: var(--ink); font-weight: 700; }
.reviews-summary-label { font-weight: 700; color: var(--ink); }
.reviews-summary-bar { display: block; height: 8px; background: var(--surface-3); border-radius: 4px; overflow: hidden; }
.reviews-summary-bar-fill {
  display: block; height: 100%;
  background: linear-gradient(90deg, #f9b418, #e89e0a);
  border-radius: 4px;
  transition: width 380ms cubic-bezier(.34,1.56,.64,1);
}
.reviews-summary-bar-pct { text-align: right; font-weight: 600; }
.reviews-summary-bar-n   { text-align: right; color: var(--ink-faint); }

/* Filter chips */
.reviews-toolbar { margin: 8px 0 18px; }
.reviews-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.reviews-chip {
  padding: 6px 14px; border-radius: var(--rad-pill);
  background: #fff; color: var(--ink-soft);
  border: 1px solid var(--rule);
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: background 140ms var(--ease), color 140ms var(--ease), border-color 140ms var(--ease);
}
.reviews-chip:hover { color: var(--ink); border-color: var(--rule-strong); }
.reviews-chip[data-on="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }
.reviews-empty-filter { margin: 16px 0 0; color: var(--ink-faint); font-size: 13px; }

/* Empty state — friendlier than a one-liner */
.reviews-empty-card {
  display: flex; align-items: center; gap: 18px;
  padding: 24px 28px; margin-bottom: 24px;
  background: var(--surface-2); border-radius: var(--rad);
  border: 1px dashed var(--rule-strong);
}
.reviews-empty-emoji { font-size: 36px; line-height: 1; }
.reviews-empty-card p { margin: 0; color: var(--ink-soft); font-size: 14px; }
.reviews-empty-card strong { color: var(--ink); }

/* Review cards — quote-style with avatar */
.reviews-list { list-style: none; padding: 0; margin: 0 0 32px; display: flex; flex-direction: column; gap: 14px; }
.rcard {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 16px;
  padding: 20px 24px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  transition: box-shadow 180ms var(--ease), border-color 180ms var(--ease);
}
.rcard:hover { box-shadow: var(--shadow-sm); border-color: var(--rule-strong); }
.rcard[data-mine] {
  background: linear-gradient(180deg, #fafffb 0%, #fff 100%);
  border-color: var(--positive);
  box-shadow: 0 0 0 3px rgba(45,122,63,0.08);
}
.rcard-avatar {
  width: 48px; height: 48px; border-radius: 50%;
  display: grid; place-items: center;
  color: #fff; font-weight: 800; font-size: 16px;
  letter-spacing: 0.03em;
  flex-shrink: 0;
  box-shadow: inset 0 -2px 0 rgba(0,0,0,0.12);
}
.rcard-body { min-width: 0; }
.rcard-head {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 4px;
}
.rcard-name { font-weight: 800; color: var(--ink); font-size: 14.5px; letter-spacing: -0.01em; }
.rcard-mine-tag {
  display: inline-block; margin-left: 8px;
  padding: 2px 7px; border-radius: var(--rad-pill);
  background: var(--positive-bg); color: var(--positive);
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
}
.rcard-date { font-size: 12px; color: var(--ink-faint); }
.rcard-stars { color: #f9b418; font-size: 14px; letter-spacing: 1.5px; margin: 4px 0 8px; }
.rcard-title { font-size: 16px; font-weight: 800; color: var(--ink); margin: 0 0 6px; letter-spacing: -0.015em; line-height: 1.3; }
.rcard-text {
  margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--ink);
  white-space: pre-wrap;
  /* Pull-quote feel — subtle left rule that hangs into the gutter */
  position: relative; padding-left: 14px;
  border-left: 3px solid var(--rule);
}
.rcard:hover .rcard-text { border-left-color: var(--accent-soft); }


.reviews-google {
  margin: 0 0 32px; padding: 20px 22px;
  background: linear-gradient(180deg, #f9fbff 0%, #fff 100%);
  border: 1px solid var(--rule); border-radius: var(--rad);
}
.reviews-google-h {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap; margin-bottom: 14px;
}
.reviews-google-h h3 { font-family: var(--font-text); font-weight: 800; font-size: 18px; letter-spacing: -0.02em; margin: 0; }
.reviews-google-meta { display: flex; align-items: baseline; gap: 12px; font-size: 13px; }
.reviews-google-rating strong { font-size: 18px; color: var(--ink); margin-right: 4px; }
.reviews-google-total { color: var(--ink-soft); margin-left: 4px; }
.reviews-google-link { color: var(--accent); font-weight: 600; }
.reviews-google-link:hover { text-decoration: underline; }
.reviews-google-loading { font-size: 13px; color: var(--ink-faint); }
.reviews-list-google { margin-bottom: 12px; }
.review-item-google { background: #fff; }
.review-avatar { width: 28px; height: 28px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.review-author { font-size: 14px; color: var(--ink); font-weight: 700; }
.review-author a { color: inherit; }
.review-author a:hover { color: var(--accent); }
.reviews-google-more { display: inline-block; margin-top: 4px; font-size: 13px; }
.reviews-google-attrib { margin: 12px 0 0; font-size: 11px; color: var(--ink-faint); text-align: right; }
.reviews-portal-h h3 { font-family: var(--font-text); font-weight: 800; font-size: 18px; letter-spacing: -0.02em; margin: 8px 0 16px; }
.reviews-h h2 { font-family: var(--font-text); font-weight: 800; font-size: 28px; letter-spacing: -0.02em; margin: 0 0 6px; }
.reviews-sub  { color: var(--ink-soft); font-size: 14px; margin: 0 0 24px; }
.reviews-empty { padding: 24px; border: 1px dashed var(--rule); border-radius: var(--rad); color: var(--ink-soft); text-align: center; }
.reviews-list { list-style: none; padding: 0; margin: 0 0 32px; display: flex; flex-direction: column; gap: 14px; }
.review-item { padding: 16px 20px; border: 1px solid var(--rule); border-radius: var(--rad); background: #fff; }
.review-item-h { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; flex-wrap: wrap; }
.review-stars { color: var(--rating); font-size: 16px; letter-spacing: 1px; }
.review-title { font-size: 15px; color: var(--ink); }
.review-date  { margin-left: auto; font-size: 12px; color: var(--ink-faint); }
.review-body  { margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--ink); white-space: pre-wrap; }
.review-form { padding: 20px 22px; border: 1px solid var(--rule); border-radius: var(--rad); background: var(--surface-2); }
.review-form h3 { font-family: var(--font-text); font-weight: 800; font-size: 18px; letter-spacing: -0.02em; margin: 0 0 14px; }
.review-form label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 700; color: var(--ink-soft); margin-bottom: 12px; }
.review-form-row { display: grid; grid-template-columns: max-content 1fr; gap: 12px; }
@media (max-width: 540px) { .review-form-row { grid-template-columns: 1fr; } }
.review-form-title { min-width: 0; }
.review-form input, .review-form select, .review-form textarea { padding: 10px 12px; border: 1px solid var(--rule-strong); border-radius: var(--rad-sm); font-size: 14px; font-weight: 500; background: #fff; color: var(--ink); font-family: inherit; }
.review-form textarea { resize: vertical; min-height: 100px; }
.review-form input:focus, .review-form select:focus, .review-form textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.review-form-actions { display: flex; gap: 8px; margin-top: 4px; }
.review-form-note { margin: 0 0 10px; font-size: 13px; color: var(--ink-soft); }
.link-btn { display: inline; padding: 0; background: none; border: 0; color: var(--accent); font: inherit; cursor: pointer; text-decoration: underline; }


/* ── SWIPE (Tinder-style deck — redesigned) ──────────────────────────── */

.swipe-view {
  max-width: 460px;
  margin: 0 auto;
  padding: 0 16px 40px;
  display: flex; flex-direction: column;
  min-height: calc(100vh - 80px);
}

/* Wallpaper now provided globally via body::before — see top of file. */

/* ── PRZEWODNIK (programmatic SEO collection pages) ───────────────────── */
.collection-view { max-width: 880px; margin: 0 auto; padding: 0 24px 96px; }
.collection-h { padding: 8px 0 28px; border-bottom: 1px solid var(--rule); margin-bottom: 28px; }
.collection-eyebrow { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--accent); margin: 0 0 10px; }
.collection-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(26px, 4vw, 40px); line-height: 1.15; letter-spacing: -0.025em; margin: 0 0 12px; }
.collection-lede { color: var(--ink-soft); font-size: 16px; line-height: 1.55; max-width: 680px; margin: 0; }

.collection-list { list-style: none; counter-reset: none; padding: 0; margin: 0 0 48px; display: flex; flex-direction: column; gap: 14px; }
.collection-item {
  display: grid; grid-template-columns: 36px 132px 1fr; gap: 16px; align-items: stretch;
  padding: 14px; background: #fff; border: 1px solid var(--rule); border-radius: var(--rad);
  transition: box-shadow 180ms var(--ease), border-color 180ms var(--ease);
}
.collection-item:hover { box-shadow: var(--shadow-sm); border-color: var(--rule-strong); }
@media (max-width: 600px) {
  .collection-item { grid-template-columns: 30px 90px 1fr; gap: 12px; padding: 12px; }
}
.collection-rank {
  font-family: var(--font-text); font-weight: 800; font-size: 22px;
  color: var(--accent); display: grid; place-items: start center; padding-top: 4px;
  letter-spacing: -0.03em;
}
.collection-item-photo { display: block; border-radius: var(--rad-sm); overflow: hidden; aspect-ratio: 4/3; background: var(--photo-skel); }
.collection-item-body { min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.collection-item-name { font-size: 18px; font-weight: 800; color: var(--ink); letter-spacing: -0.015em; line-height: 1.2; }
.collection-item-name:hover { color: var(--accent); }
.collection-item-meta { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; font-size: 12.5px; color: var(--ink-soft); }
.collection-item-rating { color: var(--ink); font-weight: 700; }
.collection-item-rating span { color: #f9b418; }
.collection-item-rev { color: var(--ink-faint); }
.collection-dot { width: 3px; height: 3px; border-radius: 50%; background: var(--rule-strong); }
.collection-item-tagline { font-size: 14px; color: var(--ink-soft); line-height: 1.45; margin: 2px 0; }
.collection-item-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; padding-top: 4px; }
.collection-item-price { font-size: 13px; font-weight: 700; color: var(--ink); }
.collection-item-cta { font-size: 13px; font-weight: 600; color: var(--accent); white-space: nowrap; }
.collection-item-cta:hover { text-decoration: underline; }

.collection-faq { margin: 0 0 48px; }
.collection-faq h2, .collection-related h2 { font-family: var(--font-text); font-weight: 800; font-size: 24px; letter-spacing: -0.02em; margin: 0 0 16px; }
.collection-faq-item { border: 1px solid var(--rule); border-radius: var(--rad-sm); padding: 0; margin-bottom: 8px; background: #fff; overflow: hidden; }
.collection-faq-item summary { padding: 14px 18px; font-weight: 700; font-size: 15px; cursor: pointer; list-style: none; color: var(--ink); }
.collection-faq-item summary::-webkit-details-marker { display: none; }
.collection-faq-item summary::after { content: '+'; float: right; color: var(--ink-soft); font-weight: 400; font-size: 20px; line-height: 1; }
.collection-faq-item[open] summary::after { content: '−'; }
.collection-faq-item p { margin: 0; padding: 0 18px 16px; color: var(--ink-soft); font-size: 14.5px; line-height: 1.55; }

.collection-related-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.collection-related-card {
  display: flex; align-items: center; gap: 12px; padding: 14px 16px;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad-sm);
  transition: transform 160ms var(--ease), box-shadow 160ms var(--ease), border-color 160ms var(--ease);
}
.collection-related-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-sm); border-color: var(--accent); }
.collection-related-count { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); font-weight: 800; font-size: 14px; display: grid; place-items: center; }
.collection-related-title { font-size: 14px; font-weight: 700; color: var(--ink); line-height: 1.3; }

/* ── HOTELE ────────────────────────────────────────────────────────────── */
.hotele-view { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .hotele-view { padding: 0 20px 64px; } }
.hotele-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.hotele-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(28px, 4vw, 44px); margin: 16px 0 8px; letter-spacing: -0.025em; }
.hotele-h h1 em { font-style: normal; color: var(--accent); font-weight: 600; font-size: 0.7em; }
.hotele-lede { color: var(--ink-soft); max-width: 720px; line-height: 1.55; margin: 0 0 16px; }
.hotele-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.hotele-empty { padding: 48px 24px; text-align: center; color: var(--ink-soft); background: var(--surface-2); border-radius: var(--rad); }
.hotele-empty code { background: var(--surface-3); padding: 2px 8px; border-radius: 4px; font-family: ui-monospace, Menlo, monospace; font-size: 12px; }
.hotele-disclaimer { margin-top: 32px; padding-top: 16px; border-top: 1px solid var(--rule); font-size: 12px; color: var(--ink-faint); text-align: center; }

.hotele-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 20px;
}
.hotel-card {
  display: flex; flex-direction: column;
  background: #fff; border: 1px solid var(--rule);
  border-radius: var(--rad); overflow: hidden;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease);
}
.hotel-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.hotel-card-photo { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--surface-2); }
.hotel-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.hotel-stars {
  position: absolute; top: 10px; left: 10px;
  background: rgba(0,0,0,0.65); color: #f9b418;
  padding: 4px 8px; border-radius: 4px;
  font-size: 13px; letter-spacing: 1px;
}
.hotel-card-body { padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.hotel-meta { font-size: 12px; color: var(--ink-soft); margin: 0; text-transform: uppercase; letter-spacing: 0.05em; }
.hotel-title { font-size: 17px; font-weight: 800; line-height: 1.25; margin: 0; color: var(--ink); }
.hotel-sub { font-size: 13px; color: var(--ink-soft); margin: 0; font-style: italic; }
.hotel-rating { font-size: 13px; margin: 0; color: var(--ink-soft); }
.hotel-rating span[aria-hidden] { color: #f9b418; }
.hotel-reviews { color: var(--ink-faint); }
.hotel-tagline { font-size: 14px; line-height: 1.45; margin: 4px 0; color: var(--ink); }
.hotel-pricerow { font-size: 13px; margin: 0; color: var(--ink-soft); }
.hotel-pricerow strong { color: var(--ink); font-weight: 800; font-size: 15px; }
.hotel-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 12px; flex-wrap: wrap; }
.hotel-actions .btn { flex: 1; min-width: 0; }


/* ── Header ── */
.swipe-h2 { padding: 12px 4px 16px; }
.swipe-h-top {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.swipe-h-back {
  display: inline-grid; place-items: center;
  width: 40px; height: 40px; border-radius: 50%;
  color: var(--ink);
  background: rgba(255,255,255,0.7);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid var(--rule);
  transition: transform var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.swipe-h-back:hover { transform: translateX(-2px); border-color: var(--rule-strong); }
.swipe-h-title {
  display: flex; flex-direction: column; align-items: center;
  line-height: 1;
}
.swipe-h-eyebrow {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--ink-faint); margin-bottom: 4px;
}
.swipe-h-title h1 {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 800; font-size: 26px; letter-spacing: -0.025em;
  color: var(--ink);
}
.swipe-h-count {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 7px 14px 7px 11px;
  border-radius: var(--rad-pill);
  background: var(--ink); color: #fff;
  font-size: 14px; font-weight: 800;
  font-variant-numeric: tabular-nums;
  transition: transform var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.swipe-h-count:hover { transform: translateY(-1px); background: #000; }
.swipe-h-count svg { color: #ff6b6b; }

.swipe-progress-rail {
  height: 4px; border-radius: 2px;
  background: rgba(11,26,43,0.07);
  overflow: hidden;
}
.swipe-progress-bar {
  height: 100%;
  background: linear-gradient(90deg, var(--accent), var(--positive));
  transition: width 400ms cubic-bezier(.2,.7,.2,1);
  border-radius: 2px;
}
.swipe-h-meta-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin: 8px 4px 0;
}
.swipe-h-meta {
  margin: 0;
  font-size: 12px; color: var(--ink-soft); font-variant-numeric: tabular-nums;
}
.swipe-h-meta strong { color: var(--ink); font-weight: 800; }
.swipe-h-shuffle {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px 5px 8px;
  border-radius: var(--rad-pill);
  background: transparent;
  color: var(--ink-soft);
  font-size: 12px; font-weight: 700;
  border: 1px solid var(--rule);
  transition: color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.swipe-h-shuffle:hover { color: var(--accent); border-color: var(--accent); background: var(--accent-soft); }
.swipe-h-shuffle:active { transform: scale(0.97); }

/* ── Stage + deck ── */
.swipe-stage {
  position: relative;
  flex: 1;
  display: flex; align-items: center; justify-content: center;
  padding: 12px 0;
  perspective: 1000px;
}
.swipe-deck {
  position: relative;
  width: 100%;
  max-width: 380px;
  aspect-ratio: 3 / 4.4;
  user-select: none; -webkit-user-select: none;
  touch-action: none;
}

.swipe-card {
  position: absolute; inset: 0;
  display: block;
  border-radius: 22px;
  overflow: hidden;
  background: #1a1f28;
  box-shadow:
    0 22px 44px -16px rgba(11, 26, 43, 0.45),
    0 8px 16px -8px rgba(11, 26, 43, 0.30),
    0 1px 0 rgba(255, 255, 255, 0.3) inset;
  will-change: transform;
  isolation: isolate;
}
.swipe-card-top  { z-index: 3; cursor: grab; }
.swipe-card-top:active { cursor: grabbing; }
.swipe-card-next {
  z-index: 2;
  transform: translateY(10px) scale(0.95);
  filter: brightness(0.94);
  pointer-events: none;
}
.swipe-card-peek {
  z-index: 1;
  transform: translateY(20px) scale(0.90);
  filter: brightness(0.88);
  opacity: 0.85;
  pointer-events: none;
}

.swipe-card-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  pointer-events: none;
}
.swipe-card-shade {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg,
      rgba(0,0,0,0) 35%,
      rgba(0,0,0,0.35) 65%,
      rgba(0,0,0,0.85) 100%);
  pointer-events: none;
}

/* Info button — discreet, top-right of the card */
.swipe-card-info {
  position: absolute; top: 14px; right: 14px;
  width: 36px; height: 36px;
  display: inline-grid; place-items: center;
  border-radius: 50%;
  background: rgba(0,0,0,0.4);
  color: #fff;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.25);
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  z-index: 2;
}
.swipe-card-info:hover { background: rgba(0,0,0,0.6); transform: scale(1.05); }

/* Text overlay (chips + name + tagline) at the bottom of the card */
.swipe-card-text {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 22px 22px 24px;
  color: #fff;
  z-index: 1;
}
.swipe-card-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 12px;
}
.swipe-chip {
  display: inline-flex; align-items: center;
  padding: 4px 10px;
  border-radius: var(--rad-pill);
  background: rgba(255,255,255,0.18);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.22);
  font-size: 11.5px; font-weight: 700; letter-spacing: 0.01em;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
.swipe-chip-rating { background: rgba(249,180,24,0.85); border-color: rgba(249,180,24,0.95); color: #1a1f28; text-shadow: none; }
.swipe-chip-price  { background: rgba(255,255,255,0.92); color: var(--ink); border-color: rgba(255,255,255,0.95); text-shadow: none; }

.swipe-card-name {
  margin: 0 0 6px;
  font-family: var(--font-display);
  font-weight: 800; font-size: clamp(28px, 7vw, 36px); line-height: 1.05;
  letter-spacing: -0.025em;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.35);
  display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px;
}
.swipe-card-city {
  font-family: var(--font-text);
  font-size: 14px; font-weight: 600;
  color: rgba(255,255,255,0.85);
  letter-spacing: 0;
  text-shadow: 0 1px 6px rgba(0,0,0,0.4);
}
.swipe-card-tagline {
  margin: 0;
  font-size: 14.5px; line-height: 1.4;
  color: rgba(255,255,255,0.9);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  text-shadow: 0 1px 4px rgba(0,0,0,0.35);
}

/* ── Stamps — rotated rubber-stamp aesthetic ── */
.swipe-stamp {
  position: absolute;
  top: 28px;
  padding: 10px 18px;
  border: 5px solid currentColor;
  border-radius: 10px;
  background: rgba(255,255,255,0.92);
  font-family: var(--font-display);
  font-weight: 800; font-size: 30px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  z-index: 2;
  transition: opacity 60ms linear;
}
.swipe-stamp-inner { display: inline-block; padding: 0 2px; }
.swipe-stamp-like {
  right: 24px;
  color: var(--positive);
  transform: rotate(-14deg) scale(1.05);
  box-shadow: 0 4px 12px rgba(45,122,63,0.25);
}
.swipe-stamp-skip {
  left: 24px;
  color: #c8281c;
  transform: rotate(14deg) scale(1.05);
  box-shadow: 0 4px 12px rgba(200,40,28,0.25);
}

/* ── Toast (after a like) ── */
.swipe-toast {
  position: absolute; bottom: -14px; left: 50%;
  transform: translateX(-50%);
  padding: 10px 18px;
  border-radius: var(--rad-pill);
  background: var(--positive);
  color: #fff;
  font-size: 13.5px; font-weight: 800; letter-spacing: -0.01em;
  box-shadow: 0 8px 20px rgba(45,122,63,0.35);
  animation: swipeToastIn 220ms cubic-bezier(.2,.7,.2,1), swipeToastOut 240ms cubic-bezier(.4,0,.6,1) 900ms forwards;
  pointer-events: none;
  z-index: 10;
}
@keyframes swipeToastIn {
  from { opacity: 0; transform: translate(-50%, 8px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}
@keyframes swipeToastOut {
  to   { opacity: 0; transform: translate(-50%, -6px); }
}

/* ── Action bar — Tinder-y chunky circular icons in their own colors ── */
.swipe-actions {
  display: grid;
  grid-template-columns: 48px 64px 80px 48px;
  align-items: center;
  justify-content: center;
  gap: 18px;
  padding: 20px 0 12px;
}
.swipe-btn {
  display: inline-grid; place-items: center;
  width: 100%; aspect-ratio: 1; max-width: 80px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid transparent;
  box-shadow:
    0 8px 16px -6px rgba(11,26,43,0.18),
    0 2px 4px -2px rgba(11,26,43,0.10);
  color: var(--ink);
  cursor: pointer;
  transition:
    transform 140ms cubic-bezier(.2,.7,.2,1),
    box-shadow 140ms cubic-bezier(.2,.7,.2,1),
    background 140ms cubic-bezier(.2,.7,.2,1),
    color 140ms cubic-bezier(.2,.7,.2,1);
  text-decoration: none;
}
.swipe-btn:hover { transform: translateY(-3px) scale(1.04); box-shadow: 0 12px 22px -6px rgba(11,26,43,0.25), 0 3px 6px -2px rgba(11,26,43,0.12); }
.swipe-btn:active { transform: translateY(-1px) scale(0.98); }
.swipe-btn:disabled { opacity: 0.45; cursor: not-allowed; transform: none; box-shadow: 0 4px 8px -4px rgba(11,26,43,0.1); }
.swipe-btn:focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }

.swipe-btn-undo  { color: #d4a017; }
.swipe-btn-undo:hover  { color: #b8870e; background: #fffaeb; }
.swipe-btn-skip  { color: #c8281c; }
.swipe-btn-skip:hover  { color: #fff; background: #c8281c; }
.swipe-btn-like  { color: var(--positive); }
.swipe-btn-like:hover  { color: #fff; background: var(--positive); }
.swipe-btn-info-btn  { color: var(--accent); }
.swipe-btn-info-btn:hover  { color: #fff; background: var(--accent); }

/* ── Hint footer ── */
.swipe-hint {
  margin: 16px auto 0;
  text-align: center;
  font-size: 12px; color: var(--ink-faint);
  max-width: 36ch;
}
.swipe-hint kbd {
  display: inline-block;
  padding: 1px 6px;
  margin: 0 1px;
  border: 1px solid var(--rule-strong);
  border-bottom-width: 2px;
  border-radius: 4px;
  background: #fff;
  color: var(--ink);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px; font-weight: 700;
  line-height: 1;
}

/* ── Done state ── */
.swipe-done {
  text-align: center;
  padding: 56px 24px 64px;
  margin-top: 32px;
  background: #fff;
  border-radius: var(--rad-lg);
  border: 1px solid var(--rule);
  box-shadow: 0 8px 24px -10px rgba(11,26,43,0.10);
}
.swipe-done-mark { color: var(--positive); margin: 0 auto 18px; display: inline-grid; place-items: center; }
.swipe-done h2 {
  font-family: var(--font-display);
  font-weight: 800; font-size: 28px;
  letter-spacing: -0.025em; margin: 0 0 8px;
}
.swipe-done p { color: var(--ink-soft); font-size: 14.5px; max-width: 38ch; margin: 0 auto 24px; }
.swipe-done-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

/* Narrow viewports — let the deck breathe */
@media (max-width: 420px) {
  .swipe-view { padding: 0 12px 32px; }
  .swipe-actions { gap: 14px; grid-template-columns: 44px 60px 72px 44px; }
  .swipe-stamp { font-size: 24px; padding: 8px 14px; border-width: 4px; }
}

/* Honor reduced motion */
@media (prefers-reduced-motion: reduce) {
  .swipe-card { transition: none !important; }
  .swipe-progress-bar { transition: none; }
  .swipe-toast { animation: none; }
}

/* ── RouteMap (Leaflet — numbered route pins + polyline) ──────────────── */
.routemap-wrap { position: relative; }
.routemap {
  width: 100%; aspect-ratio: 16 / 9;
  border-radius: var(--rad);
  background: var(--map-bg);
  border: 1px solid var(--rule);
  overflow: hidden;
  /* Same containment as .mapcard — Leaflet's z-indexes stay scoped. */
  isolation: isolate;
  position: relative; z-index: 0;
}
.routemap-compact { aspect-ratio: 4 / 3; }
.routemap .leaflet-container { background: var(--map-bg); }

.route-pin {
  width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--accent); color: #fff;
  font-family: var(--font-display); font-weight: 800; font-size: 14px;
  letter-spacing: -0.01em;
  border: 2.5px solid #fff;
  box-shadow: 0 2px 6px rgba(11,26,43,0.35);
  cursor: default;
}

.routemap-attrib {
  position: absolute; bottom: 8px; right: 8px;
  z-index: 500;
  padding: 4px 10px; border-radius: var(--rad-pill);
  background: rgba(255,255,255,0.95);
  border: 1px solid var(--rule);
  font-size: 11px; font-weight: 700;
  color: var(--ink-soft);
  pointer-events: none;
}
.routemap-attrib-warn {
  background: #fde7e0; color: #c8281c; border-color: #f5b3b3;
}

/* ── LegSummary (per-leg pills + total) ──────────────────────────────── */
.leg-summary { margin-top: 14px; }
.leg-pills {
  display: flex; gap: 8px; overflow-x: auto;
  padding-bottom: 8px; margin-bottom: 10px;
  scrollbar-width: thin;
}
.leg-pills::-webkit-scrollbar { height: 6px; }
.leg-pills::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: 3px; }
.leg-pill {
  flex-shrink: 0;
  display: inline-flex; flex-direction: column;
  padding: 8px 12px;
  border: 1px solid var(--rule); border-radius: var(--rad);
  background: #fff;
  font-size: 12.5px;
  min-width: 180px;
  transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
  cursor: default;
}
.leg-pill:hover { border-color: var(--accent); background: var(--accent-soft); }
.leg-pill-num {
  display: inline-block;
  font-size: 10.5px; font-weight: 800; color: var(--accent);
  letter-spacing: 0.04em; text-transform: uppercase;
}
.leg-pill-route {
  margin: 2px 0 4px;
  font-weight: 700; color: var(--ink);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.leg-pill-stat {
  color: var(--ink-soft); font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.leg-pill-approx {
  display: inline-block; margin-left: 4px;
  padding: 0 5px; border-radius: 4px;
  background: #fde7e0; color: #c8281c;
  font-size: 11px; font-weight: 800; line-height: 1.3;
  cursor: help;
}

/* ── LegConnector — inline "A↓B" pill between consecutive stops ─────── */
.leg-conn {
  display: flex; align-items: center; gap: 10px;
  margin: 2px 0 2px 32px;
  padding: 6px 12px;
  position: relative;
  font-size: 12.5px; color: var(--ink-soft);
  font-variant-numeric: tabular-nums;
  border-left: 2px dashed var(--accent);
}
.leg-conn::before {
  content: ""; position: absolute;
  left: -7px; top: 50%; width: 12px; height: 12px;
  border-radius: 50%; background: #fff;
  border: 2px solid var(--accent);
  transform: translateY(-50%);
}
.leg-conn-arrow {
  display: inline-grid; place-items: center;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--accent-soft); color: var(--accent);
  font-weight: 800; font-size: 14px; line-height: 1;
}
.leg-conn-stat { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.leg-conn-stat strong { color: var(--ink); font-weight: 800; }
.leg-conn-sep { color: var(--ink-faint); }
.leg-conn-mode { color: var(--ink-soft); font-weight: 500; font-size: 11.5px; }

/* When the connector is "rich" (transit with steps), let it grow + breathe. */
.leg-conn-rich { padding: 8px 14px; }
.leg-conn-summary { display: flex; align-items: center; gap: 10px; }

/* In the builder, the stop rows are denser — tighten the connector to match. */
.stop-list .leg-conn { margin: 2px 0 2px 22px; padding: 4px 10px; font-size: 12px; }
.stop-list .leg-conn::before { left: -7px; }
.stop-list .leg-conn-arrow { width: 18px; height: 18px; font-size: 12px; }

/* ── Transit step accordion (inside .leg-conn for transit mode) ───────── */
.leg-transit-steps {
  list-style: none; padding: 0; margin: 10px 0 4px;
  display: flex; flex-direction: column; gap: 6px;
}
.leg-transit-step {
  display: flex; align-items: stretch; gap: 12px;
  padding: 8px 12px;
  border-radius: var(--rad-sm);
  background: #fff;
  border: 1px solid var(--rule);
  font-size: 12.5px;
}
.leg-transit-walk {
  background: var(--surface-2);
  border-style: dashed;
  border-color: var(--rule);
}
.leg-transit-ride {
  border-left: 5px solid var(--accent);
}
.leg-transit-icon {
  display: inline-grid; place-items: center;
  width: 28px; height: 28px;
  font-size: 18px; line-height: 1;
  flex-shrink: 0;
}
.leg-transit-meta {
  display: flex; flex-direction: column;
  gap: 3px;
  flex: 1; min-width: 0;
}
.leg-transit-walk .leg-transit-meta {
  flex-direction: row; align-items: baseline; gap: 8px;
}
.leg-transit-walk .leg-transit-meta strong { font-weight: 700; color: var(--ink); }
.leg-transit-walk .leg-transit-meta span    { color: var(--ink-soft); font-variant-numeric: tabular-nums; }

.leg-transit-line {
  display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-weight: 700;
}
.leg-transit-line-badge {
  display: inline-flex; align-items: center;
  padding: 2px 9px;
  border-radius: var(--rad-sm);
  background: var(--accent); color: #fff;
  font-weight: 800; font-size: 12px;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.leg-transit-headsign {
  color: var(--ink-soft); font-weight: 500; font-size: 12px;
  font-style: italic;
}
.leg-transit-stops {
  font-size: 11.5px; color: var(--ink-soft); font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.leg-transit-numstops { color: var(--ink-faint); }
.leg-transit-timing {
  font-size: 11.5px; font-weight: 700; color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.leg-transit-clock { font-weight: 500; color: var(--ink-soft); }

/* ── DepartureTimePicker + per-leg scheduled time ─────────────────────── */
.trasa-route-controls {
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px;
  margin: 12px 0;
}
.trasa-route-controls .travel-modes { margin: 0; flex: 1; min-width: 280px; }

.dt-picker { position: relative; flex-shrink: 0; }
.dt-picker-btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  border-radius: var(--rad-pill);
  background: var(--surface-2);
  color: var(--ink); font-size: 13px; font-weight: 700;
  border: 1px solid var(--rule);
  transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.dt-picker-btn:hover { background: var(--surface-3); border-color: var(--rule-strong); }
.dt-picker-btn[data-on="true"] {
  background: var(--accent-soft); color: var(--accent-deep); border-color: var(--accent-tint);
}
.dt-picker-icon { font-size: 14px; line-height: 1; }

.dt-picker-pop {
  position: absolute; top: calc(100% + 8px); right: 0;
  z-index: 50;
  min-width: 280px;
  padding: 16px;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad);
  box-shadow: var(--shadow-lg);
  animation: dtPopIn 160ms var(--ease);
}
@keyframes dtPopIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.dt-picker-label {
  display: flex; flex-direction: column; gap: 6px;
  font-size: 12px; font-weight: 700; color: var(--ink-soft);
  text-transform: uppercase; letter-spacing: 0.04em;
}
.dt-picker-label input {
  padding: 10px 12px;
  border: 1px solid var(--rule-strong); border-radius: var(--rad-sm);
  font-size: 14px; font-weight: 600; color: var(--ink); background: #fff;
  font-family: inherit;
  font-variant-numeric: tabular-nums;
}
.dt-picker-label input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.dt-picker-actions {
  display: flex; gap: 12px; margin-top: 10px; padding-top: 10px;
  border-top: 1px solid var(--rule);
}
.dt-picker-hint {
  margin: 10px 0 0; font-size: 11.5px; color: var(--ink-faint);
  line-height: 1.4;
}

/* Per-leg scheduled time inside .leg-conn-stat */
.leg-conn-time {
  margin-left: auto;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 2px 9px; border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent-deep);
  font-size: 11.5px; font-weight: 800;
  font-variant-numeric: tabular-nums;
}

/* Trip-level "Wyjazd ... · Powrót ..." summary line */
.trasa-schedule-span {
  margin: 14px 0 0; padding: 12px 16px;
  background: linear-gradient(135deg, var(--accent-soft), #fff);
  border-radius: var(--rad);
  border: 1px solid var(--accent-tint);
  font-size: 13.5px; color: var(--ink);
}
.trasa-schedule-span strong { color: var(--accent-deep); font-weight: 800; font-variant-numeric: tabular-nums; }

/* ── ADMIN ─────────────────────────────────────────────────────────────── */
.admin { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .admin { padding: 0 20px 64px; } }
.admin-h { padding: 16px 0 32px; border-bottom: 1px solid var(--rule); margin-bottom: 32px; }
.admin-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(28px, 4vw, 44px); margin: 16px 0 8px; letter-spacing: -0.025em; }
.admin-h h1 em { font-style: normal; color: var(--accent); font-weight: 600; font-size: 0.7em; }
.admin-h p { color: var(--ink-soft); font-size: 14px; margin: 0; }
.admin-h code { background: var(--surface-2); padding: 2px 6px; border-radius: 4px; font-size: 12px; font-family: ui-monospace, Menlo, monospace; }
.admin-grid { display: grid; gap: 22px; grid-template-columns: 1fr 2fr; }
@media (max-width: 900px) { .admin-grid { grid-template-columns: 1fr; } }
.admin-card {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  padding: 22px;
  box-shadow: var(--shadow-xs);
}
.admin-card h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: 16px; letter-spacing: 0.02em;
  text-transform: uppercase; color: var(--ink-soft);
  margin: 0 0 14px;
}
.admin-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.admin-table th, .admin-table td {
  text-align: left; padding: 8px 6px;
  border-bottom: 1px solid var(--rule);
  vertical-align: top;
}
.admin-table th {
  font-size: 11px; font-weight: 800; color: var(--ink-soft);
  text-transform: uppercase; letter-spacing: 0.04em;
}
.admin-table tr:last-child td { border-bottom: 0; }
.admin-table code {
  background: var(--accent-soft); color: var(--accent-deep);
  padding: 1px 5px; border-radius: 3px;
  font-family: ui-monospace, Menlo, monospace; font-size: 11.5px;
}
.admin-num { text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; }
.admin-chip {
  display: inline-flex; align-items: center; gap: 4px;
  margin: 2px; padding: 2px 6px; border-radius: 4px;
  background: var(--surface-2);
  font-size: 11.5px;
}
.hd-user-menu-item-admin {
  color: #c8281c; font-weight: 800;
}
.hd-user-menu-item-admin:hover { color: #c8281c; background: #fde7e0; }

/* ── PWA install prompt (slides up from bottom on mobile) ─────────────── */
.install-prompt {
  position: fixed; bottom: 16px; left: 16px; right: 16px;
  z-index: 70;
  display: flex; gap: 16px; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad-lg);
  box-shadow: 0 12px 32px -8px rgba(11,26,43,0.25), 0 4px 12px -4px rgba(11,26,43,0.15);
  animation: installSlide 360ms cubic-bezier(.2,.7,.2,1);
  max-width: 480px; margin: 0 auto;
}
@keyframes installSlide {
  from { transform: translateY(120%); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
.install-prompt-body { display: flex; gap: 12px; align-items: center; min-width: 0; flex: 1; }
.install-prompt-icon { font-size: 28px; line-height: 1; flex-shrink: 0; }
.install-prompt-title { font-size: 14px; font-weight: 800; color: var(--ink); margin-bottom: 2px; }
.install-prompt-text { font-size: 12px; color: var(--ink-soft); line-height: 1.35; }
.install-prompt-actions { display: flex; gap: 10px; align-items: center; flex-shrink: 0; }
@media (max-width: 440px) {
  .install-prompt { flex-direction: column; align-items: stretch; }
  .install-prompt-actions { justify-content: space-between; }
}

/* ── Offline / SW-update pill (floating bottom-right) ─────────────────── */
.conn-pill {
  position: fixed; bottom: 16px; right: 16px;
  z-index: 65;
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 14px;
  border-radius: var(--rad-pill);
  font-size: 13px; font-weight: 700;
  box-shadow: var(--shadow);
  animation: connIn 240ms var(--ease);
}
@keyframes connIn { from { transform: translateY(20px); opacity: 0; } to { transform: none; opacity: 1; } }
.conn-pill-offline {
  background: #2b2b2b; color: #fff;
}
.conn-pill-update {
  background: var(--accent); color: #fff;
}
.conn-pill-update button {
  padding: 4px 10px; border-radius: var(--rad-pill);
  background: #fff; color: var(--accent-deep);
  font-weight: 800; font-size: 12px;
}
.conn-pill-update button:hover { background: var(--accent-soft); }

/* ── "Zapisz do offline" button ───────────────────────────────────────── */
.cache-page-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 14px;
  border-radius: var(--rad-pill);
  background: #fff; color: var(--ink);
  border: 1px solid var(--rule-strong);
  font-size: 13px; font-weight: 700;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.cache-page-btn:hover  { background: var(--surface-2); }
.cache-page-btn[data-state="caching"] { background: var(--accent-soft); color: var(--accent-deep); border-color: var(--accent); }
.cache-page-btn[data-state="done"]    { background: var(--positive-bg); color: var(--positive); border-color: var(--positive-ring); }
.cache-page-btn[data-state="error"]   { background: #fde7e0; color: #c8281c; border-color: #f5b3b3; }
.cache-page-btn:disabled { cursor: wait; }

/* ── ADMIN CMS ─────────────────────────────────────────────────────────── */
.admin-tabs {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin: 16px 0 24px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rule);
}
.admin-tab {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  border-radius: var(--rad-pill);
  background: var(--surface-2);
  color: var(--ink-soft);
  font-size: 13px; font-weight: 700;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.admin-tab:hover { background: var(--surface-3); color: var(--ink); }
.admin-tab[data-on="true"] { background: var(--ink); color: #fff; }

.admin-editor {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  padding: 24px;
  box-shadow: var(--shadow-xs);
}
.admin-editor-h {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--rule);
}
.admin-editor-h h2 { margin: 0; font-size: 20px; font-weight: 800; letter-spacing: -0.02em; }
.admin-editor-status {
  display: inline-flex; align-items: center;
  padding: 3px 10px; border-radius: var(--rad-pill);
  font-size: 11px; font-weight: 800;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.admin-editor-status[data-status="published"] { background: var(--positive-bg); color: var(--positive); }
.admin-editor-status[data-status="draft"]     { background: #fff2c8; color: #8a6700; }
.admin-editor-status[data-status="archived"]  { background: var(--surface-3); color: var(--ink-soft); }

.admin-form {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 18px;
  margin-bottom: 18px;
}
@media (max-width: 720px) { .admin-form { grid-template-columns: 1fr; } }
.admin-form-field {
  display: flex; flex-direction: column; gap: 4px;
  font-size: 12px; font-weight: 700; color: var(--ink-soft);
}
.admin-form-field > span em { color: #c8281c; font-style: normal; }
.admin-form-field input,
.admin-form-field textarea,
.admin-form-field select {
  padding: 9px 11px;
  border: 1px solid var(--rule-strong); border-radius: var(--rad-sm);
  font-family: inherit; font-size: 14px; font-weight: 500;
  color: var(--ink); background: #fff;
}
.admin-form-field input:focus,
.admin-form-field textarea:focus,
.admin-form-field select:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.admin-form-field textarea { resize: vertical; min-height: 60px; font-family: inherit; }
.admin-form-field small { font-size: 11px; color: var(--ink-faint); font-weight: 500; }
.admin-form-raw {
  width: 100%;
  padding: 14px;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px; line-height: 1.5;
  border: 1px solid var(--rule-strong); border-radius: var(--rad-sm);
  background: #fafbfc;
  resize: vertical;
}
.admin-editor-actions {
  display: flex; gap: 12px; align-items: center;
  padding-top: 18px;
  border-top: 1px solid var(--rule);
  flex-wrap: wrap;
}

/* ── PARTNER PORTAL ─────────────────────────────────────────────────── */
.partner { max-width: 1100px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .partner { padding: 0 20px 64px; } }
.partner-h { padding: 16px 0 28px; border-bottom: 1px solid var(--rule); margin-bottom: 28px; }
.partner-h h1 { font-family: var(--font-text); font-weight: 800; font-size: clamp(30px, 4.5vw, 46px); margin: 16px 0 10px; letter-spacing: -0.025em; }
.partner-h h1 em { font-style: normal; color: var(--accent); }
.partner-lede { color: var(--ink-soft); font-size: 15.5px; max-width: 60ch; margin: 0; }

.partner-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 28px; }
@media (max-width: 880px) { .partner-grid { grid-template-columns: 1fr; } }
.partner-pitch h2 { font-family: var(--font-text); font-weight: 800; font-size: 18px; margin: 14px 0 8px; }
.partner-pitch ul, .partner-pitch ol { margin: 0 0 14px; padding-left: 22px; }
.partner-pitch li { margin-bottom: 6px; color: var(--ink); font-size: 14.5px; line-height: 1.5; }

.partner-form-wrap { background: #fff; border: 1px solid var(--rule); border-radius: var(--rad); padding: 24px; }
.partner-form-wrap h2 { font-family: var(--font-text); font-weight: 800; font-size: 18px; margin: 0 0 16px; }
.partner-form { display: flex; flex-direction: column; gap: 14px; }
.partner-form label { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; font-weight: 700; color: var(--ink-soft); }
.partner-form input { padding: 11px 13px; border: 1px solid var(--rule-strong); border-radius: var(--rad-sm); font-size: 14px; font-weight: 500; }
.partner-form input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.partner-form small { font-size: 11px; color: var(--ink-faint); font-weight: 500; }
.partner-form-preview { padding: 10px 14px; background: var(--positive-bg); color: var(--positive); border-radius: var(--rad-sm); font-size: 13px; }
.partner-anon { text-align: center; padding: 24px 0; }
.partner-anon p { color: var(--ink-soft); margin: 0 0 16px; }

.partner-section { margin-bottom: 36px; }
.partner-section-h {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  margin-bottom: 18px;
}
.partner-section-h h2 { font-family: var(--font-text); font-weight: 800; font-size: 22px; margin: 0; }

.partner-empty { padding: 36px; text-align: center; border: 1px dashed var(--rule); border-radius: var(--rad); }
.partner-empty p { color: var(--ink-soft); margin: 0 0 16px; }

.partner-claims { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; }
.partner-claim {
  padding: 18px 20px;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  border-left: 5px solid var(--rule);
}
.partner-claim[data-status="verified"] { border-left-color: var(--positive); }
.partner-claim[data-status="pending"]  { border-left-color: #d4a017; }
.partner-claim[data-status="rejected"] { border-left-color: #c8281c; }
.partner-claim-h { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.partner-claim-h h3 { margin: 0; font-size: 17px; font-weight: 800; letter-spacing: -0.02em; }
.partner-claim-status {
  display: inline-flex; padding: 3px 10px; border-radius: var(--rad-pill);
  background: var(--surface-2); color: var(--ink-soft);
  font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.04em;
}
.partner-claim[data-status="verified"] .partner-claim-status { background: var(--positive-bg); color: var(--positive); }
.partner-claim[data-status="pending"]  .partner-claim-status { background: #fff2c8; color: #8a6700; }
.partner-claim[data-status="rejected"] .partner-claim-status { background: #fde7e0; color: #c8281c; }
.partner-claim-meta { font-size: 13px; color: var(--ink-soft); margin: 0 0 8px; }
.partner-claim-note { font-size: 13px; color: var(--ink); margin: 8px 0 0; padding: 10px 12px; background: var(--surface-2); border-radius: var(--rad-sm); }
.partner-claim-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--rule); }
.partner-claim-tier { font-size: 12.5px; color: var(--ink-soft); margin-left: auto; }
.partner-claim-tier strong { color: var(--ink); text-transform: capitalize; }
.partner-claim-tier[data-tier="highlighted"] strong { color: #d4a017; }
.partner-claim-tier[data-tier="featured"]    strong { color: var(--accent); }

/* Card-level travel-total chip (on /trasy + /moje-trasy cards) */
.mt-card-travel {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px; margin-top: 4px;
  border-radius: var(--rad-pill);
  background: var(--accent-soft); color: var(--accent-deep);
  font-size: 11.5px; font-weight: 700;
  font-variant-numeric: tabular-nums;
  width: max-content;
}
.mt-card-travel-icon { font-size: 12px; line-height: 1; }
.leg-total {
  margin: 0; padding: 12px 16px;
  background: var(--surface-2);
  border-radius: var(--rad);
  font-size: 14px; color: var(--ink);
}
.leg-total strong { color: var(--accent); font-weight: 800; font-variant-numeric: tabular-nums; }
.leg-total-warn { color: #c8281c; font-weight: 600; font-size: 12.5px; margin-left: 4px; }

/* ── TravelModeTabs (driving / walking / transit / bicycling) ───────── */
.travel-modes {
  display: flex; gap: 4px;
  padding: 4px;
  background: var(--surface-2);
  border-radius: var(--rad-pill);
  margin: 12px 0;
}
.travel-mode {
  flex: 1;
  display: inline-flex; align-items: center; justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: var(--rad-pill);
  background: transparent; color: var(--ink-soft);
  font-size: 13px; font-weight: 700;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.travel-mode:hover { color: var(--ink); }
.travel-mode[data-on="true"] {
  background: #fff; color: var(--accent);
  box-shadow: 0 2px 8px -2px rgba(11,26,43,0.12);
}
.travel-mode-icon { font-size: 16px; line-height: 1; }
@media (max-width: 540px) {
  .travel-mode-label { display: none; }
  .travel-mode { padding: 8px 10px; }
  .travel-mode-icon { font-size: 18px; }
}

/* ── Builder layout (Phase D) ─────────────────────────────────────────── */
.builder { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .builder { padding: 0 16px 48px; } }

.builder-grid {
  display: grid;
  grid-template-columns: 280px 1fr 380px;
  gap: 22px;
  align-items: start;
}
@media (max-width: 1100px) { .builder-grid { grid-template-columns: 1fr; } }

.builder-col {
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: var(--rad);
  padding: 18px;
  position: sticky; top: var(--sticky-top);
  max-height: calc(100vh - var(--sticky-top) - 20px);
  overflow-y: auto;
}
@media (max-width: 1100px) {
  .builder-col { position: static; max-height: none; }
}
.builder-col h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: 15px; letter-spacing: -0.01em;
  text-transform: uppercase; color: var(--ink-soft); letter-spacing: 0.04em;
  margin: 0 0 12px;
}

/* Picker — compact list of attractions to add */
.picker-search {
  width: 100%; padding: 9px 12px; margin-bottom: 12px;
  border: 1px solid var(--rule-strong); border-radius: var(--rad-pill);
  font-size: 13.5px; font-weight: 500; background: #fff;
}
.picker-search:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.picker-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 12px; }
.picker-chip {
  padding: 4px 10px; border-radius: var(--rad-pill);
  font-size: 11.5px; font-weight: 700;
  background: var(--surface-2); color: var(--ink-soft);
  border: 1px solid transparent;
  transition: all var(--t-fast) var(--ease);
}
.picker-chip[data-on="true"] { background: var(--ink); color: #fff; }
.picker-list { display: flex; flex-direction: column; gap: 4px; }
.picker-item {
  display: grid; grid-template-columns: 36px 1fr auto; gap: 10px; align-items: center;
  padding: 8px; border-radius: var(--rad-sm);
  background: var(--surface-2);
  transition: background var(--t-fast) var(--ease);
}
.picker-item:hover { background: var(--accent-soft); }
.picker-item img { width: 36px; height: 36px; object-fit: cover; border-radius: var(--rad-sm); background: var(--photo-skel); }
.picker-item-body { min-width: 0; }
.picker-item-name { font-size: 13px; font-weight: 700; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.picker-item-meta { font-size: 11.5px; color: var(--ink-soft); }
.picker-add {
  display: inline-grid; place-items: center;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--accent); color: #fff;
  font-size: 18px; font-weight: 800; line-height: 1;
  transition: transform var(--t-fast) var(--ease), background var(--t-fast) var(--ease);
}
.picker-add:hover { background: var(--accent-deep); transform: scale(1.08); }
.picker-empty { padding: 28px 12px; text-align: center; color: var(--ink-faint); font-size: 13px; }

/* Editor — title + lede + stops list */
.editor-meta { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.editor-title-input {
  width: 100%;
  padding: 14px 16px;
  border: 1px solid var(--rule); border-radius: var(--rad);
  font-family: var(--font-display);
  font-size: 24px; font-weight: 800; letter-spacing: -0.025em;
  color: var(--ink); background: #fff;
}
.editor-title-input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.editor-lede-input {
  width: 100%; min-height: 60px; resize: vertical;
  padding: 10px 14px;
  border: 1px solid var(--rule); border-radius: var(--rad-sm);
  font-family: inherit; font-size: 14px; color: var(--ink-soft);
  background: #fff;
}
.editor-shape {
  display: inline-flex; gap: 4px;
  padding: 4px; background: var(--surface-2);
  border-radius: var(--rad-pill);
  margin-bottom: 16px;
}
.editor-shape button {
  padding: 7px 14px; border-radius: var(--rad-pill);
  font-size: 12.5px; font-weight: 700; color: var(--ink-soft);
  transition: all var(--t-fast) var(--ease);
}
.editor-shape button[data-on="true"] { background: #fff; color: var(--accent); box-shadow: 0 1px 4px rgba(11,26,43,0.10); }

.editor-day { margin-bottom: 24px; }
.editor-day-h {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.editor-day-h h3 {
  font-family: var(--font-text); font-weight: 800;
  font-size: 15px; letter-spacing: -0.01em;
  margin: 0; color: var(--ink);
}
.editor-day-h-title input {
  border: 0; background: transparent;
  font: inherit; color: inherit;
  padding: 4px 8px; margin-left: -8px;
  border-radius: var(--rad-sm);
}
.editor-day-h-title input:hover, .editor-day-h-title input:focus { background: var(--surface-2); outline: 0; }
.editor-day-remove { color: var(--ink-faint); font-size: 12px; padding: 4px 8px; border-radius: var(--rad-sm); }
.editor-day-remove:hover { color: #c8281c; background: #fde7e0; }
.editor-add-day {
  width: 100%; padding: 10px;
  border: 1.5px dashed var(--rule-strong); border-radius: var(--rad);
  background: transparent; color: var(--ink-soft);
  font-size: 13px; font-weight: 700;
  transition: all var(--t-fast) var(--ease);
}
.editor-add-day:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }

.stop-list { display: flex; flex-direction: column; gap: 6px; }
.stop-row {
  display: grid;
  grid-template-columns: 28px 1fr auto;
  gap: 10px; align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--rule); border-radius: var(--rad-sm);
  background: #fff;
  cursor: grab;
  transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.stop-row:active { cursor: grabbing; }
.stop-row[data-dragging="true"] { opacity: 0.4; }
.stop-row[data-drag-over="true"] { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.stop-row-num {
  display: inline-grid; place-items: center;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--accent); color: #fff;
  font-weight: 800; font-size: 13px;
  flex-shrink: 0;
}
.stop-row-body { min-width: 0; }
.stop-row-name { font-size: 13.5px; font-weight: 700; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stop-row-meta { font-size: 11.5px; color: var(--ink-soft); }
.stop-row-actions { display: inline-flex; gap: 2px; }
.stop-row-action {
  display: inline-grid; place-items: center;
  width: 26px; height: 26px; border-radius: var(--rad-sm);
  background: transparent; color: var(--ink-soft);
  font-size: 13px;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.stop-row-action:hover { background: var(--surface-2); color: var(--ink); }
.stop-row-action-remove:hover { color: #c8281c; background: #fde7e0; }
.stop-empty {
  padding: 24px; text-align: center;
  border: 1.5px dashed var(--rule);
  border-radius: var(--rad);
  color: var(--ink-faint); font-size: 13px;
}

/* Summary column (right) */
.summary-actions { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
.summary-actions .btn { width: 100%; }
.summary-save-status {
  font-size: 11.5px; color: var(--ink-faint); text-align: center;
  font-variant-numeric: tabular-nums;
  min-height: 14px;
}
.summary-save-status[data-state="saved"] { color: var(--positive); }
.summary-save-status[data-state="saving"] { color: var(--accent); }
.summary-save-status[data-state="error"]  { color: #c8281c; }
.summary-share {
  display: flex; flex-direction: column; gap: 8px;
  padding: 14px; margin-top: 14px;
  background: var(--accent-soft); border-radius: var(--rad);
}
.summary-share-label {
  display: flex; align-items: center; justify-content: space-between;
  font-size: 13px; font-weight: 700; color: var(--accent-deep);
}
.summary-share-toggle { width: 44px; height: 24px; }
.summary-share-url {
  display: flex; gap: 6px; align-items: center;
  padding: 6px 8px; background: #fff; border-radius: var(--rad-sm);
  border: 1px solid var(--accent-tint);
  font-size: 11.5px; color: var(--ink);
  font-family: ui-monospace, Menlo, monospace;
  word-break: break-all;
}
.summary-share-url button {
  padding: 2px 8px; border-radius: var(--rad-sm); background: var(--accent); color: #fff;
  font-size: 11px; font-weight: 700; flex-shrink: 0;
}
.summary-share-url button:hover { background: var(--accent-deep); }

/* Moje trasy dashboard */
.moje-trasy { max-width: 1320px; margin: 0 auto; padding: 0 32px 96px; }
@media (max-width: 720px) { .moje-trasy { padding: 0 20px 64px; } }
.moje-trasy-h { padding: 16px 0 24px; border-bottom: 1px solid var(--rule); margin-bottom: 24px; }
.moje-trasy-h-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.moje-trasy-h h1 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(34px, 5vw, 56px); line-height: 1.05;
  letter-spacing: -0.03em; margin: 16px 0 8px;
}
.moje-trasy-h h1 em { font-style: normal; color: var(--accent); }
.moje-trasy-h p { color: var(--ink-soft); font-size: 15px; max-width: 60ch; margin: 0; }
.moje-trasy-empty {
  padding: 56px 24px; text-align: center;
  border: 1px dashed var(--rule); border-radius: var(--rad-lg);
  background: var(--surface-2);
}
.moje-trasy-empty h2 {
  font-family: var(--font-display); font-weight: 800;
  font-size: 26px; letter-spacing: -0.02em; margin: 0 0 8px;
}
.moje-trasy-empty p { color: var(--ink-soft); margin: 0 auto 22px; max-width: 40ch; }
.moje-trasy-grid {
  display: grid; gap: 18px;
  grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 980px) { .moje-trasy-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .moje-trasy-grid { grid-template-columns: 1fr; } }

.mt-card {
  position: relative;
  background: #fff;
  border: 1px solid var(--rule); border-radius: var(--rad);
  padding: 18px 20px 16px;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease);
  display: flex; flex-direction: column; gap: 6px;
}
.mt-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--rule-strong); }
.mt-card-shared {
  position: absolute; top: 14px; right: 14px;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: var(--rad-pill);
  background: var(--positive-bg); color: var(--positive);
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase;
}
.mt-card-title {
  font-family: var(--font-text); font-weight: 800; font-size: 18px;
  letter-spacing: -0.018em; margin: 0;
  color: var(--ink); text-decoration: none;
}
.mt-card-title:hover { color: var(--accent); }
.mt-card-meta { font-size: 12.5px; color: var(--ink-soft); margin: 0; }
.mt-card-lede { font-size: 13.5px; color: var(--ink-soft); line-height: 1.4; margin: 4px 0 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mt-card-actions { display: flex; gap: 6px; margin-top: auto; padding-top: 8px; border-top: 1px solid var(--rule); }
.mt-card-action {
  flex: 1; padding: 7px 10px; border-radius: var(--rad-sm);
  font-size: 12px; font-weight: 700;
  background: var(--surface-2); color: var(--ink);
  text-align: center;
  transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.mt-card-action:hover { background: var(--ink); color: #fff; }
.mt-card-action-danger:hover { background: #c8281c; }

/* TrasaView extras (Phase C) */
.trasa-routemap { margin: 24px 0 32px; padding: 22px; border: 1px solid var(--rule); border-radius: var(--rad-lg); background: #fff; }
.trasa-clone-row {
  display: flex; flex-wrap: wrap; gap: 14px; align-items: center;
  padding: 16px 20px; margin-bottom: 32px;
  background: var(--accent-soft); border: 1px solid var(--accent-tint);
  border-radius: var(--rad);
}
.trasa-clone-hint { font-size: 13px; color: var(--accent-deep); flex: 1; min-width: 200px; }

/* TrasyView "Twoje trasy" + "Przewodniki redakcji" sections */
.trasy-mine { margin-bottom: 40px; padding-bottom: 32px; border-bottom: 1px solid var(--rule); }
.trasy-mine-h {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 16px; flex-wrap: wrap; gap: 10px;
}
.trasy-mine-h h2 {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(20px, 2.5vw, 28px); letter-spacing: -0.02em;
  margin: 0; color: var(--ink);
  display: inline-flex; align-items: center; gap: 10px;
}
.trasy-mine-count {
  display: inline-grid; place-items: center;
  min-width: 28px; height: 28px; padding: 0 8px;
  border-radius: var(--rad-pill);
  background: var(--accent); color: #fff;
  font-size: 13px; font-weight: 800;
}
.trasy-mine-empty {
  padding: 24px; text-align: center;
  border: 1px dashed var(--rule); border-radius: var(--rad);
  color: var(--ink-soft); font-size: 14px;
  background: var(--surface-2);
}
.trasy-mine-empty strong { color: var(--ink); font-weight: 700; }
.trasy-mine-empty a { color: var(--accent); font-weight: 700; }
.trasy-mine-grid {
  display: grid; gap: 14px;
  grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 980px) { .trasy-mine-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .trasy-mine-grid { grid-template-columns: 1fr; } }
.mt-card-more { display: flex; align-items: center; justify-content: center; min-height: 100px; border-style: dashed; }
.trasy-static-h {
  font-family: var(--font-text); font-weight: 800;
  font-size: clamp(20px, 2.5vw, 28px); letter-spacing: -0.02em;
  color: var(--ink); margin: 0 0 16px;
}

/* Public trasa banner */
.public-banner {
  display: flex; gap: 16px; align-items: center;
  padding: 14px 18px; margin: 16px 0 24px;
  background: var(--accent-soft);
  border: 1px solid var(--accent-tint);
  border-radius: var(--rad);
}
.public-banner-text { flex: 1; font-size: 14px; color: var(--accent-deep); }
.public-banner-text strong { font-weight: 800; }

/* ── SEARCH PAGE (/szukaj) ─────────────────────────────────────────────── */
.search-bar {
  display: flex; align-items: center; gap: 10px;
  margin: 18px 0 8px; padding: 8px 8px 8px 16px;
  background: var(--surface, #fff); border: 1px solid var(--rule, #e3e8ef);
  border-radius: var(--rad-pill, 999px); max-width: 640px;
  box-shadow: 0 1px 2px rgba(16,42,67,.04);
}
.search-bar:focus-within { border-color: var(--accent, #0a5fa1); box-shadow: 0 0 0 4px rgba(10,95,161,.12); }
.search-bar-ic { display: inline-flex; color: var(--ink-faint, #8a97a8); flex: none; }
.search-bar-ic svg { width: 20px; height: 20px; }
.search-bar-input {
  flex: 1; border: none; outline: none; background: transparent;
  font: inherit; font-size: 16px; color: var(--ink, #102a43); min-width: 0;
}
.search-sec { margin: 28px 0; }
.search-sec-h {
  font-family: var(--font-text); font-weight: 800; font-size: 20px;
  letter-spacing: -0.02em; margin: 0 0 14px; color: var(--ink, #102a43);
}
.search-articles { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.search-articles li a {
  display: block; padding: 12px 14px; border-radius: 12px;
  color: var(--ink, #102a43); font-weight: 600; text-decoration: none;
}
.search-articles li a:hover { background: var(--surface-2, #f2f6fb); color: var(--accent, #0a5fa1); }

/* ── TRIP BUILDER extras (travel mode tabs + mini map) ─────────────────── */
.travel-tabs { display: inline-flex; gap: 4px; padding: 4px; background: var(--surface-2, #f2f6fb); border-radius: var(--rad-pill, 999px); }
.travel-tabs button {
  border: none; background: transparent; cursor: pointer;
  padding: 7px 14px; border-radius: var(--rad-pill, 999px);
  font: inherit; font-size: 14px; font-weight: 600; color: var(--ink-soft, #56657a);
}
.travel-tabs button[data-on="true"] { background: var(--accent, #0a5fa1); color: #fff; box-shadow: 0 1px 3px rgba(10,95,161,.3); }
.route-mini-map { background: #e9eef4; }
.route-pin span {
  display: flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 50%;
  background: var(--accent, #0a5fa1); color: #fff;
  font-size: 13px; font-weight: 800; border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(16,42,67,.3);
}

/* ── HOME: CITY BENTO (top destinations) ──────────────────────────────── */
.city-bento-sec { margin-bottom: 56px; }
.city-bento {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 176px;
  grid-auto-flow: dense;
  gap: 14px;
}
.city-tile {
  position: relative; overflow: hidden; isolation: isolate;
  border-radius: var(--rad-lg); background: var(--surface-3);
  box-shadow: var(--shadow-xs); text-decoration: none;
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
}
.city-tile[data-size="featured"] { grid-column: span 2; grid-row: span 2; }
.city-tile > picture, .city-tile img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block; z-index: -2;
}
.city-tile img { transition: transform 600ms var(--ease); }
.city-tile-grad {
  position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(7,26,43,0) 38%, rgba(7,26,43,.34) 64%, rgba(7,26,43,.82) 100%);
  transition: background var(--t-mid) var(--ease);
}
.city-tile:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.city-tile:hover img { transform: scale(1.07); }
.city-tile:hover .city-tile-grad {
  background: linear-gradient(180deg, rgba(7,26,43,0) 28%, rgba(10,95,161,.30) 58%, rgba(7,26,43,.88) 100%);
}
.city-tile-cap {
  position: absolute; left: 0; right: 0; bottom: 0;
  display: flex; flex-direction: column; gap: 2px;
  padding: 14px 16px; color: #fff;
  transition: transform var(--t-mid) var(--ease);
}
.city-tile:hover .city-tile-cap { transform: translateY(-3px); }
@media (prefers-reduced-motion: reduce) {
  .city-tile:hover { transform: none; }
  .city-tile:hover img { transform: none; }
  .city-tile:hover .city-tile-cap { transform: none; }
}
.city-tile-name {
  font-family: var(--font-display); font-weight: 800; letter-spacing: -.02em;
  font-size: 19px; line-height: 1.1; text-shadow: 0 1px 8px rgba(0,0,0,.35);
}
.city-tile[data-size="featured"] .city-tile-name { font-size: clamp(26px, 3vw, 36px); }
.city-tile-sub {
  font-size: 13px; font-weight: 500; color: rgba(255,255,255,.86);
  text-shadow: 0 1px 6px rgba(0,0,0,.4);
}
.city-tile-n {
  position: absolute; top: 12px; right: 12px;
  background: rgba(255,255,255,.92); color: var(--ink);
  font-size: 12px; font-weight: 700; padding: 4px 9px; border-radius: var(--rad-pill);
  box-shadow: var(--shadow-xs);
}
@media (max-width: 900px) {
  .city-bento { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 150px; }
  .city-tile[data-size="featured"] { grid-column: span 2; grid-row: span 2; }
}
@media (max-width: 560px) {
  .city-bento { grid-template-columns: 1fr; grid-auto-rows: 150px; gap: 12px; }
  .city-tile[data-size="featured"] { grid-column: span 1; grid-row: span 2; }
}

/* ── HOME: TRIP PROPOSALS (popular itineraries) ───────────────────────── */
.trip-sec { margin-bottom: 56px; }
.trip-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(258px, 1fr));
  gap: 18px;
}
.trip-card {
  display: flex; flex-direction: column;
  background: var(--surface); border: 1px solid var(--rule);
  border-radius: var(--rad-lg); overflow: hidden; text-decoration: none;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.trip-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: var(--rule-strong); }
.trip-card-cover { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--surface-3); }
.trip-card-cover > picture, .trip-card-cover img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 600ms var(--ease);
}
.trip-card:hover .trip-card-cover img { transform: scale(1.06); }
.trip-card-days {
  position: absolute; top: 12px; left: 12px;
  background: var(--accent); color: #fff; font-size: 12px; font-weight: 700;
  padding: 4px 10px; border-radius: var(--rad-pill); box-shadow: var(--shadow-sm);
}
.trip-card-body { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px 18px; flex: 1; }
.trip-card-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.trip-card-badge {
  font-size: 11.5px; font-weight: 600; color: var(--accent-deep);
  background: var(--accent-soft); padding: 3px 9px; border-radius: var(--rad-pill);
}
.trip-card-badge--soft { color: var(--ink-soft); background: var(--surface-2); }
.trip-card-title { font-family: var(--font-display); font-weight: 800; font-size: 19px; letter-spacing: -.02em; line-height: 1.15; margin: 2px 0 0; color: var(--ink); }
.trip-card-lede { font-size: 14px; line-height: 1.5; color: var(--ink-soft); margin: 0; flex: 1; }
.trip-card-cta { display: inline-flex; align-items: center; gap: 5px; font-weight: 700; font-size: 14px; color: var(--accent); margin-top: 4px; }
.trip-card-cta svg { transition: transform var(--t-fast) var(--ease); }
.trip-card:hover .trip-card-cta svg { transform: translateX(3px); }
.trip-card--build {
  border-style: dashed; border-color: var(--accent-tint);
  background: linear-gradient(160deg, var(--accent-soft), var(--surface));
}
.trip-card-build-inner { display: flex; flex-direction: column; gap: 8px; padding: 24px 20px; height: 100%; justify-content: center; }
.trip-card-build-plus {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  background: var(--accent); color: #fff; font-size: 28px; font-weight: 700; line-height: 1; margin-bottom: 4px;
}
.trip-card--build h3 { font-family: var(--font-display); font-weight: 800; font-size: 18px; margin: 0; color: var(--ink); }
.trip-card--build p { font-size: 14px; line-height: 1.5; color: var(--ink-soft); margin: 0; }

/* Fuller navbar — compact the links at mid widths so all 8 fit before the
   ≤980px burger breakpoint (prevents overlap with the right-side actions). */
@media (max-width: 1180px) {
  .hd-nav { gap: 0; }
  .hd-nav a { padding: 8px 10px; font-size: 13px; }
}

/* ── HEADER SEARCH — expanding inline box ──────────────────────────────── */
.hd-search { position: relative; display: inline-flex; align-items: center; border-radius: var(--rad-pill); transition: background var(--t-fast) var(--ease); }
.hd-search[data-open="true"] { background: var(--surface-2); }
.hd-search-field {
  width: 0; min-width: 0; flex: 0 0 auto; padding: 0; border: none; outline: none; background: transparent;
  font: inherit; font-size: 14px; color: var(--ink);
  transition: width var(--t-mid) var(--ease), padding var(--t-mid) var(--ease);
}
.hd-search[data-open="true"] .hd-search-field { width: clamp(150px, 22vw, 248px); padding: 8px 14px 8px 2px; }
@media (max-width: 1040px) { .hd-search[data-open="true"] .hd-search-field { width: min(52vw, 240px); } }

/* (legacy typeahead-panel styles below are now unused) */
.hd-search-panel {
  position: absolute; top: calc(100% + 10px); right: 0;
  width: min(440px, calc(100vw - 28px));
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad-lg);
  box-shadow: var(--shadow-lg); z-index: 60; overflow: hidden;
  animation: hdSearchIn 140ms var(--ease);
}
@keyframes hdSearchIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.hd-search-bar { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--rule); }
.hd-search-ic { display: inline-flex; color: var(--ink-faint); }
.hd-search-ic svg { width: 18px; height: 18px; }
.hd-search-input { flex: 1; border: none; outline: none; background: transparent; font: inherit; font-size: 15px; color: var(--ink); min-width: 0; }
.hd-search-clear { border: none; background: var(--surface-2); color: var(--ink-soft); width: 24px; height: 24px; border-radius: 50%; cursor: pointer; font-size: 12px; line-height: 1; }
.hd-search-clear:hover { background: var(--surface-3); }
.hd-search-results { max-height: min(70vh, 520px); overflow-y: auto; padding: 6px; }
.hd-search-empty, .hd-search-hint { padding: 18px 14px; color: var(--ink-soft); font-size: 14px; margin: 0; }
.hd-search-grp { padding: 4px 2px; }
.hd-search-grp-h { font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-faint); padding: 6px 10px 4px; }
.hd-search-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 2px 8px 6px; }
.hd-search-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; border: none; background: transparent; cursor: pointer; padding: 8px 10px; border-radius: 10px; }
.hd-search-item:hover { background: var(--surface-2); }
.hd-search-item-ic { display: inline-flex; color: var(--accent); flex: none; width: 24px; justify-content: center; }
.hd-search-item-ic svg { width: 16px; height: 16px; }
.hd-search-thumb { flex: none; width: 46px; height: 36px; border-radius: 8px; overflow: hidden; background: var(--surface-3); }
.hd-search-thumb .ph, .hd-search-thumb picture, .hd-search-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hd-search-item-body { display: flex; flex-direction: column; min-width: 0; }
.hd-search-item-name { font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hd-search-item-meta { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hd-search-all { display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; border: none; border-top: 1px solid var(--rule); background: var(--surface-2); cursor: pointer; padding: 12px; font-weight: 700; font-size: 14px; color: var(--accent); }
.hd-search-all:hover { background: var(--accent-soft); }
.hd-search-all svg { width: 15px; height: 15px; }

/* ── HERO CAROUSEL ─────────────────────────────────────────────────────── */
.hero-carousel { position: relative; overflow: hidden; border-radius: var(--rad-lg); }
.hero-track { display: flex; transition: transform 520ms var(--ease); }
.hero-slide { flex: 0 0 100%; min-width: 0; display: flex; }
.hero-slide > * { width: 100%; }
.hero-arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
  width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center;
  background: rgba(10,22,38,.34); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.45); color: #fff;
  font-size: 26px; line-height: 1; padding-bottom: 3px; cursor: pointer;
  box-shadow: 0 6px 18px rgba(0,0,0,.22);
  transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.hero-arrow:hover { background: rgba(10,22,38,.58); border-color: #fff; transform: translateY(-50%) scale(1.06); }
.hero-arrow:active { transform: translateY(-50%) scale(.95); }
.hero-arrow-prev { left: 16px; }
.hero-arrow-next { right: 16px; }
.hero-dots { position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; z-index: 4; }
.hero-dot { width: 8px; height: 8px; padding: 0; border: none; border-radius: 999px; background: rgba(255,255,255,.55); box-shadow: 0 1px 3px rgba(0,0,0,.35); cursor: pointer; transition: width var(--t-fast) var(--ease), background var(--t-fast) var(--ease); }
.hero-dot[data-on="true"] { width: 28px; background: #fff; }
@media (max-width: 720px) { .hero-arrow { display: none; } }

/* ── CASUAL HERO (slide 1) ─────────────────────────────────────────────── */
.casual-hero { position: relative; min-height: 460px; display: flex; align-items: center; overflow: hidden; isolation: isolate; }
.casual-hero-bg { position: absolute; inset: 0; z-index: -1; }
.casual-hero-bg > picture, .casual-hero-bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.casual-hero-scrim { position: absolute; inset: 0; background: linear-gradient(105deg, rgba(7,26,43,.82) 0%, rgba(7,26,43,.55) 45%, rgba(7,26,43,.18) 100%); }
.casual-hero-inner { padding: 56px clamp(24px, 5vw, 64px); max-width: 640px; color: #fff; }
.casual-hero-kicker { display: inline-block; font-size: 12.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: rgba(255,255,255,.82); }
.casual-hero-h1 { font-family: var(--font-display); font-weight: 800; font-size: clamp(38px, 6vw, 64px); line-height: 1.02; letter-spacing: -0.035em; margin: 14px 0 0; text-shadow: 0 2px 20px rgba(0,0,0,.3); }
.casual-hero-sub { font-size: clamp(16px, 2.2vw, 19px); line-height: 1.55; color: rgba(255,255,255,.92); margin: 18px 0 0; max-width: 46ch; text-shadow: 0 1px 10px rgba(0,0,0,.35); }
.casual-hero-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 30px; }
.casual-hero-cta .btn { padding: 13px 24px; font-size: 15px; display: inline-flex; align-items: center; gap: 8px; }
.btn-ghost-light { background: rgba(255,255,255,.14); color: #fff; border: 1.5px solid rgba(255,255,255,.6); }
.btn-ghost-light:hover { background: rgba(255,255,255,.24); border-color: #fff; }
@media (max-width: 720px) { .casual-hero { min-height: 420px; } .casual-hero-inner { padding: 40px 22px; } }

/* ── TRIP HERO (slide 2) — full-bg card, matches slide 1 + glass route panel ── */
.casual-hero--trip { justify-content: space-between; gap: 32px; }
.casual-hero--trip .casual-hero-inner { flex: 0 1 600px; }
/* warmer scrim so white copy + glass panel stay legible across photos */
.casual-hero--trip .casual-hero-scrim { background: linear-gradient(100deg, rgba(7,26,43,.84) 0%, rgba(7,26,43,.6) 50%, rgba(7,26,43,.42) 100%); }

.hero-stats { display: flex; align-items: center; gap: 28px; margin: 26px 0 0; padding: 0; }
.hero-stat dt { font-family: var(--font-display); font-size: 26px; font-weight: 800; color: #fff; line-height: 1; }
.hero-stat dd { margin: 4px 0 0; font-size: 12.5px; font-weight: 600; letter-spacing: .03em; color: rgba(255,255,255,.82); }

.hero-routecard {
  flex: 0 0 auto; width: 300px; margin: 0 clamp(28px, 5vw, 64px) 0 0;
  background: rgba(255,255,255,.13); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.28); border-radius: 18px;
  box-shadow: 0 18px 44px rgba(0,0,0,.28); padding: 18px 20px 20px; color: #fff;
}
.hero-routecard-h { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.hero-routecard-h strong { font-size: 16.5px; font-weight: 800; color: #fff; }
.hero-routecard-h span { font-size: 12px; color: rgba(255,255,255,.78); white-space: nowrap; }
.hero-route { list-style: none; margin: 14px 0 0; padding: 0; }
.hero-route li { position: relative; display: flex; align-items: center; gap: 12px; padding: 6px 0; font-size: 13.5px; color: rgba(255,255,255,.95); }
.hero-route-pin { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 999px; background: rgba(255,255,255,.9); color: #0a2a45; font-size: 11.5px; font-weight: 800; display: grid; place-items: center; position: relative; z-index: 1; }
.hero-route li:not(:last-child)::before { content: ""; position: absolute; left: 10px; top: 24px; bottom: -6px; width: 2px; background: rgba(255,255,255,.35); }
.hero-routecard-cta { display: inline-flex; align-items: center; gap: 6px; margin-top: 14px; font-size: 13.5px; font-weight: 700; color: #fff; }
.hero-routecard-cta svg { transition: transform var(--t-fast) var(--ease); }
.hero-routecard-cta:hover svg { transform: translateX(3px); }
@media (max-width: 980px) { .hero-routecard { display: none; } .casual-hero--trip { justify-content: flex-start; } }
@media (max-width: 560px) { .hero-stats { gap: 20px; } .hero-stat dt { font-size: 22px; } }

/* ── HOME RHYTHM — more breathing room between sections ────────────────── */
.home > section, .home > .hero-carousel { margin-bottom: 96px; }
.home > section:last-child { margin-bottom: 72px; }
@media (max-width: 720px) { .home > section, .home > .hero-carousel { margin-bottom: 60px; } }

/* ── Homepage sponsored ad banner (single slot between discover sections) ──── */
.ad-banner-sec { width: 100%; }
.ad-banner {
  position: relative; display: block; overflow: hidden;
  border-radius: var(--rad-lg); min-height: 220px;
  text-decoration: none; color: #fff;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--t-mid) var(--ease), transform var(--t-mid) var(--ease);
}
.ad-banner:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.ad-banner-bg { position: absolute; inset: 0; }
.ad-banner-bg picture, .ad-banner-bg img { width: 100%; height: 100%; object-fit: cover; }
.ad-banner-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(7,33,58,.86) 0%, rgba(7,33,58,.64) 46%, rgba(7,33,58,.18) 100%);
}
.ad-banner-body {
  position: relative; z-index: 1;
  max-width: 600px; padding: 34px 38px;
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px;
  min-height: 220px; justify-content: center;
}
.ad-banner-tag {
  font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(255,255,255,.82);
  border: 1px solid rgba(255,255,255,.45); border-radius: var(--rad-pill);
  padding: 3px 9px;
}
.ad-banner-title { margin: 4px 0 0; font-family: var(--font-display); font-size: clamp(22px, 3vw, 30px); line-height: 1.12; letter-spacing: -.02em; }
.ad-banner-sub { margin: 0; font-size: 15.5px; line-height: 1.5; color: rgba(255,255,255,.9); }
.ad-banner-cta {
  margin-top: 10px; display: inline-flex; align-items: center; gap: 7px;
  background: #fff; color: var(--accent-deep);
  font-weight: 800; font-size: 14px;
  padding: 10px 18px; border-radius: var(--rad-pill);
  transition: transform var(--t-fast) var(--ease);
}
.ad-banner:hover .ad-banner-cta { transform: translateX(2px); }
@media (max-width: 720px) {
  .ad-banner-body { padding: 26px 24px; gap: 7px; }
  .ad-banner-scrim { background: linear-gradient(180deg, rgba(7,33,58,.55) 0%, rgba(7,33,58,.82) 100%); }
}

/* ── Editorial / text pages (articles, redakcja, partner-join) ──────────────
   These share the .pp / .pp-* class set but had no container styling, so the
   page rendered full-bleed with a bulleted breadcrumb and edge-to-edge text.
   This block gives them a centred, readable column. */
/* Match the site's standard page frame (1320px / 32px gutters, exactly like
   .home/.browse/.detail) so the article — including the body text — spans the same
   full width as the rest of the site instead of a narrow column. */
.pp { max-width: 1320px; margin: 0 auto; padding: 30px 32px 88px; width: 100%; }
@media (max-width: 720px) { .pp { padding: 18px 20px 64px; } }

.pp-crumb { margin: 0 0 18px; }
.pp-crumb ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 2px 0; padding: 0; margin: 0; font-size: 13px; }
.pp-crumb li { display: inline-flex; align-items: center; color: var(--ink-soft); }
.pp-crumb li + li::before { content: "›"; margin: 0 8px; color: var(--rule-strong); }
.pp-crumb a { color: var(--ink-soft); text-decoration: none; }
.pp-crumb a:hover { color: var(--accent); text-decoration: underline; }
.pp-crumb li[aria-current="page"] { color: var(--ink); font-weight: 600; }

.pp-head { margin: 0 0 24px; }
.pp-head h1 { font-family: var(--font-display); font-size: clamp(28px, 4.4vw, 42px); line-height: 1.12; letter-spacing: -0.02em; color: var(--ink); margin: 0 0 12px; }
.pp-tagline { font-size: 18.5px; line-height: 1.55; color: var(--ink-soft); margin: 0; }
.pp-facts { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 4px; margin: 20px 0 0; padding: 14px 0 0; border-top: 1px solid var(--rule); font-size: 13.5px; }
.pp-facts dt { color: var(--ink-soft); margin: 0; }
.pp-facts dt::after { content: ":"; }
.pp-facts dd { margin: 0 18px 0 5px; color: var(--ink); font-weight: 600; }

/* Article body — comfortable rhythm (also used by redakcja/partner) */
.pp-body { font-size: 17px; line-height: 1.72; color: #28323f; }
.pp-body p { margin: 0 0 16px; }
.pp-body p:last-child { margin-bottom: 0; }
.pp-body a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.pp-body .pp-subhead { font-size: 22px; font-weight: 700; color: #16233a; line-height: 1.3; margin: 28px 0 10px; letter-spacing: -0.01em; }
.pp-body .pp-subhead:first-child { margin-top: 4px; }
.pp-body .pp-lead { font-size: 19px; line-height: 1.62; color: var(--ink); font-weight: 500; margin-bottom: 20px; }

/* Category pill — light by default, glassy when overlaid on the hero photo */
.pp-kicker { display: inline-block; font-size: 11.5px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 5px 12px; border-radius: var(--rad-pill); }
/* Byline row: author · date · reading time, dot-separated */
.pp-byline { display: flex; flex-wrap: wrap; align-items: center; margin: 16px 0 0; font-size: 14px; color: var(--ink-soft); }
.pp-byline > * { display: inline-flex; align-items: center; }
.pp-byline > * + *::before { content: "·"; margin: 0 9px; opacity: .55; }
.pp-byline-author { font-weight: 700; color: var(--ink); }

/* ── ARTICLE (editorial) — immersive hero, drop-cap body, sticky sidebar ──── */
.pp-article .pp-crumb { margin-bottom: 14px; }
.pp-hero-wrap { position: relative; width: 100%; aspect-ratio: 21 / 9; max-height: 480px; border-radius: var(--rad-lg); overflow: hidden; margin: 0 0 30px; background: var(--surface-3); }
.pp-hero-wrap picture, .pp-hero-wrap img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pp-hero-shade { position: absolute; inset: 0; background: linear-gradient(to top, rgba(6,17,31,.86) 0%, rgba(6,17,31,.42) 42%, rgba(6,17,31,.04) 78%); }
.pp-hero-cap { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 34px 40px; max-width: 1000px; color: #fff; }
.pp-hero-cap h1 { font-family: var(--font-display); font-size: clamp(28px, 4.6vw, 50px); line-height: 1.08; letter-spacing: -.025em; margin: 14px 0 0; color: #fff; text-shadow: 0 2px 24px rgba(0,0,0,.34); }
.pp-hero-cap .pp-kicker { color: #fff; background: rgba(255,255,255,.20); }
.pp-hero-cap .pp-byline { color: rgba(255,255,255,.92); }
.pp-hero-cap .pp-byline-author { color: #fff; }
@media (max-width: 720px) { .pp-hero-wrap { aspect-ratio: 3 / 2; } .pp-hero-cap { padding: 20px 22px; } }

/* Standfirst (lede) under the hero */
.pp-standfirst { font-size: 20px; line-height: 1.5; color: var(--ink); font-weight: 500; margin: 0 0 30px; max-width: 880px; }
@media (max-width: 720px) { .pp-standfirst { font-size: 17.5px; } }

/* Two-column reading layout: flowing body + sticky sidebar */
.pp-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 56px; align-items: start; }
@media (max-width: 980px) { .pp-layout { grid-template-columns: 1fr; gap: 0; } }
.pp-article .pp-body { font-size: 18px; line-height: 1.75; }
.pp-article .pp-body .pp-lead { font-size: 20px; }
.pp-article .pp-body .pp-lead::first-letter { float: left; font-family: var(--font-display); font-size: 62px; line-height: .82; font-weight: 800; color: var(--accent); padding: 6px 10px 0 0; }
.pp-article .pp-body .pp-subhead { font-size: 24px; scroll-margin-top: 88px; }
.pp-subhead-rest { display: block; font-size: 16px; font-weight: 400; color: var(--ink-soft); line-height: 1.5; margin-top: 6px; }

.pp-foot { margin-top: 40px; padding-top: 26px; border-top: 1px solid var(--rule); }
.pp-back { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; color: var(--accent); text-decoration: none; }
.pp-back svg { transform: rotate(180deg); }
.pp-back:hover { text-decoration: underline; }

/* Sidebar */
.pp-aside { position: sticky; top: 88px; display: flex; flex-direction: column; gap: 28px; }
@media (max-width: 980px) { .pp-aside { position: static; margin-top: 40px; padding-top: 28px; border-top: 1px solid var(--rule); } }
.pp-aside-h { font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin: 0 0 12px; }
.pp-toc { border-left: 2px solid var(--accent-soft); padding-left: 16px; }
.pp-toc ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.pp-toc a { font-size: 14px; color: var(--ink-soft); text-decoration: none; line-height: 1.4; }
.pp-toc a:hover { color: var(--accent); }
.pp-aside-related ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.pp-aside-card { display: flex; gap: 12px; align-items: center; text-decoration: none; color: inherit; }
.pp-aside-thumb { flex: 0 0 auto; width: 76px; height: 58px; border-radius: 10px; overflow: hidden; background: var(--photo-skel); }
.pp-aside-thumb .ph, .pp-aside-thumb picture, .pp-aside-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pp-aside-tag { display: block; font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--accent); margin-bottom: 3px; }
.pp-aside-card h4 { font-size: 14px; font-weight: 700; line-height: 1.3; margin: 0; color: var(--ink); }
.pp-aside-card:hover h4 { color: var(--accent); }

/* ── FIX: "Byłem tu" visited badge — clear active state (solid green) ───── */
.acard-visited[data-on="true"], .acard-visited[data-on="true"]:hover { background: var(--positive); color: #fff; box-shadow: 0 2px 9px rgba(45,122,63,.42); }
.detail-act-visited[data-on="true"] { background: var(--positive); color: #fff; border-color: var(--positive); }
.detail-act-visited[data-on="true"]:hover { background: var(--positive); color: #fff; border-color: var(--positive); }

/* ── MAP EXPLORER — side panel + map ───────────────────────────────────── */
.map-page .map-explorer { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 16px; height: 72vh; min-height: 480px; }
.map-list { display: flex; flex-direction: column; min-height: 0; border: 1px solid var(--rule); border-radius: var(--rad-lg); overflow: hidden; background: #fff; }
.map-list-filter { display: flex; flex-wrap: wrap; gap: 6px; padding: 12px; border-bottom: 1px solid var(--rule); }
.map-list-scroll { overflow-y: auto; flex: 1; padding: 6px; }
.map-list-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; border: none; background: transparent; cursor: pointer; padding: 8px; border-radius: 12px; }
.map-list-item:hover { background: var(--surface-2); }
.map-list-item[data-on="true"] { background: var(--accent-soft); }
.map-list-thumb { flex: none; width: 54px; height: 44px; border-radius: 8px; overflow: hidden; background: var(--surface-3); }
.map-list-thumb .ph, .map-list-thumb picture, .map-list-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.map-list-body { display: flex; flex-direction: column; min-width: 0; }
.map-list-name { font-size: 14px; font-weight: 700; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.map-list-meta { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.map-explorer-canvas { height: 100%; min-height: 480px; min-width: 0; border-radius: var(--rad-lg); overflow: hidden;
  /* Contain Leaflet's internal z-indexes (tile pane 200, controls 1000) so they
     don't paint over the sticky header on scroll. */
  isolation: isolate; position: relative; z-index: 0; }
@media (max-width: 860px) {
  .map-page .map-explorer { grid-template-columns: 1fr; height: auto; }
  .map-explorer-canvas { height: 56vh; min-height: 340px; order: -1; }
  .map-list { max-height: 360px; }
}
.map-pop strong { display: block; font-size: 14px; color: #102a43; }
.map-pop-meta { display: block; font-size: 12px; color: #56657a; margin: 2px 0 6px; }
.map-pop-link { font-size: 13px; font-weight: 700; color: #0a5fa1; text-decoration: none; }

/* ── FILTER BAR (atrakcje / wydarzenia) ────────────────────────────────── */
.filterbar { display: flex; flex-direction: column; gap: 14px; margin: 0 0 16px; padding: 16px; background: var(--surface-2); border-radius: var(--rad-lg); }
.filterbar-group { display: flex; flex-direction: column; gap: 8px; }
.filterbar-label { font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-faint); }
.filterbar-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.filterbar-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.filterbar-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: var(--ink); cursor: pointer; }
.filterbar-sort { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ink-soft); margin-left: auto; }
.filterbar-sort select { font: inherit; font-size: 14px; padding: 7px 10px; border-radius: 10px; border: 1px solid var(--rule-strong); background: #fff; color: var(--ink); cursor: pointer; }
.filterbar-count { font-size: 13.5px; color: var(--ink-soft); margin: 0 0 16px; font-weight: 600; }

/* ── ACCOUNT MENU (header) ─────────────────────────────────────────────── */
.acct { position: relative; display: inline-flex; }
.acct-btn { display: inline-flex; align-items: center; justify-content: center; padding: 0; border: none; background: transparent; cursor: pointer; margin-left: 8px; }
.acct-avatar { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; font-weight: 800; font-size: 15px; border: 2px solid #fff; box-shadow: var(--shadow-sm); transition: background var(--t-fast) var(--ease); }
.acct-btn:hover .acct-avatar { background: var(--accent-deep); }
.acct-menu { position: absolute; top: calc(100% + 12px); right: 0; min-width: 224px; background: #fff; border: 1px solid var(--rule); border-radius: var(--rad); box-shadow: var(--shadow-lg); z-index: 60; padding: 6px; animation: hdSearchIn 140ms var(--ease); }
.acct-menu-head { padding: 8px 12px 10px; border-bottom: 1px solid var(--rule); margin-bottom: 6px; display: flex; flex-direction: column; gap: 2px; }
.acct-menu-head-label { font-size: 10.5px; color: var(--ink-faint); text-transform: uppercase; letter-spacing: .07em; font-weight: 800; }
.acct-menu-head-email { font-size: 13px; color: var(--ink); font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acct-menu-item { display: block; width: 100%; text-align: left; border: none; background: transparent; cursor: pointer; padding: 10px 12px; border-radius: 10px; font: inherit; font-size: 14px; font-weight: 600; color: var(--ink); text-decoration: none; }
.acct-menu-item:hover { background: var(--surface-2); }
.acct-menu-danger { color: #c83a3a; }
.acct-menu-danger:hover { background: #fdeaea; }
.hd-sheet-account { border-top: 1px solid var(--rule); padding-top: 8px; }

/* ── ROUTE page stop number + footer CTA ───────────────────────────────── */
.trasa-stop { display: flex; align-items: center; gap: 14px; }
.trasa-stop-num { flex: none; width: 27px; height: 27px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 12px; font-weight: 800; display: grid; place-items: center; }
.trasa-foot-cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; }
.trasa-routemap { margin: 0 0 32px; }

/* ── FACETED FILTERS (browse) ──────────────────────────────────────────── */
.browse-layout { display: grid; grid-template-columns: 264px minmax(0, 1fr); gap: 28px; align-items: start; }
.browse-filters { position: sticky; top: 92px; align-self: start; background: #fff; border: 1px solid var(--rule); border-radius: var(--rad-lg); padding: 6px 6px 14px; }
.browse-filters-head { display: flex; align-items: center; gap: 10px; padding: 12px 12px 8px; font-weight: 800; font-size: 15px; color: var(--ink); }
.browse-filters-head > span:first-child { margin-right: auto; }
.browse-filters-clear { font-size: 13px; }
.browse-filters-close { display: none; border: none; background: var(--surface-2); width: 30px; height: 30px; border-radius: 50%; cursor: pointer; font-size: 13px; color: var(--ink-soft); }
.fgroup { border-top: 1px solid var(--rule); }
.fgroup-head { display: flex; align-items: center; justify-content: space-between; width: 100%; border: none; background: transparent; cursor: pointer; padding: 12px; font: inherit; font-weight: 700; font-size: 14px; color: var(--ink); }
.fgroup-title { display: inline-flex; align-items: center; gap: 8px; }
.fgroup-badge { background: var(--accent); color: #fff; font-size: 11px; font-weight: 800; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; display: inline-grid; place-items: center; }
.fgroup-chev { color: var(--ink-faint); transition: transform var(--t-fast) var(--ease); }
.fgroup[data-open="true"] .fgroup-chev { transform: rotate(180deg); }
.fgroup-body { display: flex; flex-direction: column; gap: 2px; padding: 0 8px 10px; max-height: 264px; overflow-y: auto; }
.fopt { display: flex; align-items: center; gap: 9px; padding: 7px 8px; border-radius: 9px; cursor: pointer; font-size: 14px; color: var(--ink); }
.fopt:hover { background: var(--surface-2); }
.fopt input { accent-color: var(--accent); width: 16px; height: 16px; flex: none; cursor: pointer; }
.fopt-label { flex: 1; }
.fopt-n { font-size: 12px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.browse-filters-apply { display: none; }
.browse-filters-toggle { display: none; }

@media (max-width: 860px) {
  .browse-layout { grid-template-columns: 1fr; gap: 0; }
  .browse-filters-toggle { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; padding: 10px 18px; border-radius: var(--rad-pill); border: 1px solid var(--rule-strong); background: #fff; font-weight: 700; font-size: 14px; cursor: pointer; }
  .browse-filters {
    position: fixed; top: 0; right: 0; bottom: 0; width: min(340px, 88vw); z-index: 210;
    border-radius: 0; border: none; box-shadow: var(--shadow-lg); overflow-y: auto;
    transform: translateX(100%); transition: transform var(--t-mid) var(--ease); padding-bottom: 24px;
  }
  .browse-filters[data-open="true"] { transform: none; }
  .browse-filters-close { display: inline-flex; align-items: center; justify-content: center; }
  .browse-filters-apply { display: block; width: calc(100% - 24px); margin: 14px 12px 0; }
  .browse-filters-scrim { position: fixed; inset: 0; background: rgba(11,26,43,.4); border: none; z-index: 209; cursor: pointer; }
}

/* ── EVENT FULL-CARD MODAL ─────────────────────────────────────────────── */
.ev-card-btn { width: 100%; text-align: left; border: none; background: transparent; cursor: pointer; padding: 0; font: inherit; }
.ev-overlay { position: fixed; inset: 0; z-index: 220; background: rgba(11,26,43,.55); display: grid; place-items: center; padding: 20px; animation: hdSearchIn 160ms var(--ease); }
.ev-modal { position: relative; width: min(560px, 100%); max-height: 88vh; overflow-y: auto; background: #fff; border-radius: var(--rad-lg); box-shadow: var(--shadow-lg); padding: 30px 28px 26px; }
.ev-modal-close { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border-radius: 50%; border: none; background: var(--surface-2); color: var(--ink-soft); font-size: 15px; cursor: pointer; }
.ev-modal-close:hover { background: var(--surface-3); }
.ev-modal-date { display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 5px 11px; border-radius: var(--rad-pill); }
.ev-modal-title { font-family: var(--font-display); font-weight: 800; font-size: clamp(24px, 4vw, 32px); line-height: 1.1; letter-spacing: -.02em; margin: 14px 0 6px; color: var(--ink); }
.ev-modal-where { font-size: 15px; font-weight: 600; color: var(--ink-soft); margin: 0; }
.ev-modal-body { font-size: 15.5px; line-height: 1.65; color: #46566a; margin: 18px 0 0; }
.ev-modal-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--rule); }
.ev-modal-price { font-weight: 700; color: var(--ink); }

/* ── Attraction detail gallery (secondary + extras) ────────────────────── */
.detail-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; margin: -16px 0 30px; }
.detail-gallery-item { display: block; aspect-ratio: 3 / 2; border-radius: var(--rad); overflow: hidden; background: var(--surface-3); }
.detail-gallery-item picture, .detail-gallery-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 500ms var(--ease); }
.detail-gallery-item:hover img { transform: scale(1.05); }
@media (max-width: 720px) { .detail-gallery { grid-template-columns: repeat(2, 1fr); } }

/* ── Route distances (Trasy: builder live + premade meta) ───────────────── */
.route-dist { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 8px; font-size: 13px; color: var(--ink-soft, #56657a); }
.route-dist-item { white-space: nowrap; }
.route-dist-item b { color: #0b1a2b; font-weight: 700; }
.route-dist-note { font-style: italic; opacity: .8; }

/* ── Trasy creator: login gate, travel-time chips, drag, assistant ──────── */
.builder-gate { display: grid; place-items: center; min-height: 50vh; padding: 40px 16px; }
.builder-gate-card { max-width: 460px; text-align: center; background: #fff; border: 1px solid var(--rule); border-radius: 18px; padding: 32px 28px; box-shadow: 0 12px 34px rgba(11,26,43,.07); }
.builder-gate-card h1 { font-family: var(--font-display); font-size: 24px; margin: 0 0 8px; }
.builder-gate-card p { color: var(--ink-soft); margin: 0 0 18px; }
.builder-gate-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.builder-gate-foot { margin-top: 18px !important; font-size: 13px; }

.stop-wrap { display: flex; flex-direction: column; }
.stop-leg { display: flex; align-items: center; gap: 8px; min-height: 18px; padding: 2px 0 2px 22px; }
.stop-leg-line { width: 2px; height: 16px; background: repeating-linear-gradient(to bottom, var(--accent) 0 3px, transparent 3px 6px); border-radius: 2px; opacity: .55; }
.stop-leg-time { font-size: 11.5px; color: var(--ink-soft); font-weight: 600; }

.editor-day[data-drop="1"] { outline: 2px dashed var(--accent); outline-offset: 2px; border-radius: 12px; }
.editor-day[data-drop="1"] .stop-empty { color: var(--accent); }

.route-assistant { margin-top: 14px; border: 1px solid var(--rule); border-radius: 14px; padding: 14px; background: #f8fafc; }
.route-assistant h3 { font-size: 14px; margin: 0 0 10px; }
.route-assistant-empty, .ra-ok { font-size: 13px; color: var(--ink-soft); margin: 0; }
.ra-tip { display: flex; flex-direction: column; gap: 8px; font-size: 13px; color: #0b1a2b; background: #fff; border: 1px solid var(--rule); border-radius: 10px; padding: 10px; margin-bottom: 10px; }
.ra-nearby-h { font-size: 12px; font-weight: 700; color: var(--ink-soft); text-transform: uppercase; letter-spacing: .03em; margin: 6px 0 6px; }
.ra-nearby-item { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size: 13px; }
.ra-nearby-name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ra-nearby-dist { font-size: 11.5px; color: var(--ink-soft); white-space: nowrap; }
.ra-nearby-add { border: 1px solid var(--accent); color: var(--accent); background: #fff; border-radius: 8px; padding: 3px 8px; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.ra-nearby-add:hover { background: var(--accent); color: #fff; }

/* ── Cookie consent banner ─────────────────────────────────────────────── */
.cc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 400; display: flex; justify-content: center; padding: 14px; pointer-events: none; }
.cc-card { pointer-events: auto; width: 100%; max-width: 760px; background: #fff; border: 1px solid var(--rule); border-radius: 16px; box-shadow: 0 16px 44px rgba(11,26,43,.18); padding: 18px 20px; }
.cc-title { display: block; font-size: 15px; color: #0b1a2b; margin-bottom: 4px; }
.cc-body { font-size: 13.5px; line-height: 1.5; color: var(--ink-soft); margin: 0; }
.cc-link { color: var(--accent); font-weight: 600; }
.cc-cats { margin: 14px 0 4px; display: flex; flex-direction: column; gap: 8px; }
.cc-cat { display: flex; align-items: center; justify-content: space-between; gap: 12px; border: 1px solid var(--rule); border-radius: 10px; padding: 10px 12px; }
.cc-cat b { font-size: 13.5px; color: #0b1a2b; }
.cc-cat small { display: block; font-size: 12px; color: var(--ink-soft); }
.cc-always { font-size: 12px; font-weight: 700; color: var(--positive, #2a8a4a); }
.cc-cat input[type="checkbox"] { width: 18px; height: 18px; }
.cc-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; margin-top: 14px; }
@media (max-width: 560px) { .cc-actions { justify-content: stretch; } .cc-actions .btn { flex: 1; } }

.ft-linklike { background: none; border: none; padding: 0; font: inherit; color: inherit; cursor: pointer; }
.ft-linklike:hover { text-decoration: underline; }

/* ── Legal / policy pages ──────────────────────────────────────────────── */
.legal { max-width: 760px; }
.legal h1 { font-family: var(--font-display); font-size: clamp(26px, 4vw, 34px); margin: 8px 0 6px; }
.legal-lede { color: var(--ink-soft); font-size: 16px; line-height: 1.6; }
.legal-sec { margin-top: 22px; }
.legal-sec h2 { font-size: 19px; margin: 0 0 8px; }
.legal-sec h3 { font-size: 15px; margin: 14px 0 4px; }
.legal-sec p, .legal-sec li { font-size: 14.5px; line-height: 1.6; color: #34404f; }
.legal-sec ul { margin: 6px 0 0; padding-left: 20px; }
.legal-sec li { margin-bottom: 4px; }

/* Account trigger: a labelled "Moje konto" button instead of an avatar. */
.acct-trigger { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.acct-chev { font-size: 10px; line-height: 1; opacity: .75; }

/* Trasy tabs (Gotowe trasy / Trasy społeczności) */
.trasy-tabs { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 20px; border-bottom:1px solid var(--line,#e5e7eb); }
.trasy-tab { appearance:none; background:none; border:none; padding:10px 4px; margin-right:14px; font-size:15px; font-weight:600; color:#6b7280; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; }
.trasy-tab:hover { color:#34404f; }
.trasy-tab.on { color:#0b6; border-bottom-color:#0b6; }
.cr-status { padding:32px 8px; color:#6b7280; text-align:center; }
.cr-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:18px; }
.cr-card { display:flex; flex-direction:column; background:#fff; border:1px solid var(--line,#e5e7eb); border-radius:14px; overflow:hidden; text-decoration:none; color:inherit; transition:box-shadow .15s, transform .15s; }
.cr-card:hover { box-shadow:0 8px 24px rgba(0,0,0,.09); transform:translateY(-2px); }
.cr-card-photo { aspect-ratio:16/10; background:#f1f3f5; overflow:hidden; }
.cr-card-photo img { width:100%; height:100%; object-fit:cover; }
.cr-card-body { padding:14px 16px 16px; display:flex; flex-direction:column; gap:6px; }
.cr-card-title { font-size:16px; font-weight:700; margin:0; color:#1f2937; }
.cr-card-lede { font-size:13px; color:#6b7280; margin:0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.cr-card-meta { font-size:12px; color:#9ca3af; display:flex; gap:5px; }
.cr-card-cta { margin-top:6px; font-size:13px; font-weight:600; color:var(--accent); }

/* Trasy filter — days range slider (brand-blue, 22px touch-friendly thumbs) */
.fslider { padding: 4px 2px 2px; }
.fslider-val { font-size: 14px; font-weight: 700; color: var(--ink); margin-bottom: 10px; }
/* Two-thumb (from–to) range: two overlapping inputs, only the thumbs catch pointer
   events. The thumbs are taller than the 6px track so their full 22px disc is the
   grab target; the active thumb's z-index is lifted in JS so it's always reachable. */
.fslider-range { position: relative; height: 22px; margin: 12px 0 6px; }
.fslider-track { position: absolute; top: 50%; left: 0; right: 0; transform: translateY(-50%); height: 6px; border-radius: 6px; background: var(--surface-3); }
.fslider-fill { position: absolute; top: 50%; transform: translateY(-50%); height: 6px; border-radius: 6px; background: var(--accent); }
.fslider-input { position: absolute; top: 0; left: 0; width: 100%; height: 22px; margin: 0; padding: 0; background: transparent; outline: none; pointer-events: none; appearance: none; -webkit-appearance: none; }
.fslider-input--min { z-index: 4; }
.fslider-input--max { z-index: 3; }
.fslider-input::-webkit-slider-runnable-track { -webkit-appearance: none; height: 22px; background: transparent; border: none; }
.fslider-input::-moz-range-track { height: 22px; background: transparent; border: none; }
.fslider-input::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; pointer-events: auto; width: 22px; height: 22px; border-radius: 50%; background: var(--accent); border: 3px solid #fff; box-shadow: 0 1px 5px rgba(11,26,43,.30); cursor: grab; transition: transform .12s ease, box-shadow .12s ease; }
.fslider-input::-moz-range-thumb { pointer-events: auto; width: 22px; height: 22px; border-radius: 50%; background: var(--accent); border: 3px solid #fff; box-shadow: 0 1px 5px rgba(11,26,43,.30); cursor: grab; transition: transform .12s ease; }
.fslider-input:hover::-webkit-slider-thumb { transform: scale(1.08); }
.fslider-input:hover::-moz-range-thumb { transform: scale(1.08); }
.fslider-input:active::-webkit-slider-thumb { cursor: grabbing; transform: scale(1.12); }
.fslider-input:active::-moz-range-thumb { cursor: grabbing; transform: scale(1.12); }
.fslider-input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 4px var(--accent-tint); }
.fslider-input:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 4px var(--accent-tint); }
.fslider-scale { display: flex; justify-content: space-between; font-size: 12px; color: var(--ink-soft); margin-top: 6px; }

/* Attraction offer — discount code chip (shown next to the partner/affiliate link) */
.book-promo { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; padding: 10px 12px; border: 1px dashed #0b6; border-radius: 10px; background: #f0fbf5; }
.book-promo-label { font-size: 12px; font-weight: 600; color: #0a7a47; text-transform: uppercase; letter-spacing: .03em; }
.book-promo-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 16px; font-weight: 700; color: #064e2e; background: #fff; border: 1px solid #bbf0d3; border-radius: 6px; padding: 3px 10px; user-select: all; }

/* Trasy — choice cards (Gotowe / Zbuduj własną / Wczasowiczów) */
.trasy-choices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 0 0 26px; }
.trasy-choice { display: flex; align-items: flex-start; gap: 12px; text-align: left; padding: 15px 16px; border: 1.5px solid var(--line, #e5e7eb); border-radius: 14px; background: #fff; cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s, background .15s; }
.trasy-choice:hover { border-color: #0b6; transform: translateY(-1px); box-shadow: 0 6px 18px rgba(0,0,0,.06); }
.trasy-choice.on { border-color: #0b6; background: #f0fbf5; box-shadow: inset 0 0 0 1px #0b6; }
.trasy-choice-icon { font-size: 24px; line-height: 1; flex-shrink: 0; }
.trasy-choice-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.trasy-choice-title { font-weight: 700; font-size: 15px; color: #1f2937; }
.trasy-choice-desc { font-size: 12.5px; color: #6b7280; line-height: 1.4; }
@media (max-width: 760px) { .trasy-choices { grid-template-columns: 1fr; gap: 10px; } }

/* Trasy — build-your-own CTA panel */
.trasy-build { text-align: center; padding: 52px 24px; border: 1px dashed #cbd5e1; border-radius: 16px; background: #fafbfc; }
.trasy-build-icon { font-size: 38px; display: block; margin-bottom: 6px; }
.trasy-build h3 { font-size: 22px; margin: 0 0 8px; color: #1f2937; }
.trasy-build p { color: #6b7280; max-width: 540px; margin: 0 auto 22px; line-height: 1.55; }
.trasy-build-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

/* Featured full-background cards (Trasy top strip / Atrakcje ad slots) */
.feature-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 0 0 26px; }
.feature-card { position: relative; display: block; width: 100%; border: 0; background: none; padding: 0; margin: 0; font: inherit; text-align: left; appearance: none; -webkit-appearance: none; cursor: pointer; border-radius: 16px; overflow: hidden; min-height: 220px; text-decoration: none; color: #fff; box-shadow: 0 6px 20px rgba(11,26,43,.12); isolation: isolate; }
.feature-card.on { box-shadow: inset 0 0 0 3px #0b6, 0 10px 26px rgba(11,26,43,.18); }
.feature-card.on .feature-card-scrim { background: linear-gradient(180deg, rgba(6,78,46,.18) 0%, rgba(6,78,46,.30) 40%, rgba(6,50,34,.84) 100%); }
.feature-card.on .feature-card-kicker { background: #0b6; color: #fff; }
.feature-card-bg { position: absolute; inset: 0; z-index: 0; }
.feature-card-bg img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.feature-card-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,18,30,.12) 0%, rgba(8,18,30,.20) 40%, rgba(8,18,30,.78) 100%); }
.feature-card-body { position: relative; z-index: 1; height: 100%; min-height: 220px; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; gap: 4px; padding: 20px; }
.feature-card-kicker { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #bdf0d4; background: rgba(0,0,0,.25); padding: 3px 9px; border-radius: 999px; backdrop-filter: blur(2px); }
.feature-card-title { font-family: var(--font-display, inherit); font-size: 22px; font-weight: 800; line-height: 1.12; margin-top: 4px; text-shadow: 0 1px 12px rgba(0,0,0,.35); }
.feature-card-sub { font-size: 13.5px; color: rgba(255,255,255,.9); line-height: 1.35; }
.feature-card-cta { margin-top: 8px; font-size: 13.5px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; color: #fff; }
.feature-card:hover .feature-card-bg img { transform: scale(1.05); }
.feature-card:hover { box-shadow: 0 12px 30px rgba(11,26,43,.2); }
.feature-card:focus-visible { outline: 3px solid #0b6; outline-offset: 2px; }
@media (max-width: 760px) { .feature-cards { grid-template-columns: 1fr; gap: 12px; } }

/* Featured/ad card without a photo — solid colour or gradient background */
.feature-card-fill { position: absolute; inset: 0; width: 100%; height: 100%; background: #1f2937; }

/* Owner panel (/panel) — business self-service dashboard */
.op-muted { color: #6b7280; }
.op-intro { color: #56657a; margin: 0 0 18px; }
.op-gate, .op-empty { max-width: 560px; margin: 24px auto; text-align: center; background: #fff; border: 1px solid var(--line, #e5e7eb); border-radius: 16px; padding: 32px 24px; }
.op-gate h2 { margin: 0 0 8px; }
.op-gate-actions { display: flex; gap: 10px; justify-content: center; margin-top: 18px; flex-wrap: wrap; }
.op-empty p { margin: 0 0 10px; }
.op-list { display: flex; flex-direction: column; gap: 18px; }
.op-card { background: #fff; border: 1px solid var(--line, #e5e7eb); border-radius: 16px; padding: 18px 20px; }
.op-missing { color: #9ca3af; }
.op-head { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.op-thumb { width: 72px; height: 56px; border-radius: 10px; overflow: hidden; flex-shrink: 0; background: #f1f3f5; }
.op-thumb img { width: 100%; height: 100%; object-fit: cover; }
.op-name { margin: 0 0 2px; font-size: 18px; }
.op-link { font-size: 13px; color: #0b6; text-decoration: none; }
.op-link:hover { text-decoration: underline; }
.op-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 16px; }
.op-field { display: flex; flex-direction: column; gap: 4px; }
.op-field:nth-child(1), .op-field:nth-child(2) { grid-column: 1 / -1; }
.op-field-label { font-size: 12.5px; font-weight: 600; color: #34404f; }
.op-field input, .op-field textarea { font: inherit; font-size: 14px; padding: 8px 10px; border: 1px solid var(--line, #d1d5db); border-radius: 8px; background: #fff; resize: vertical; }
.op-field input:focus, .op-field textarea:focus { outline: none; border-color: #0b6; box-shadow: 0 0 0 3px rgba(0,187,102,.15); }
.op-actions { display: flex; align-items: center; gap: 12px; margin-top: 16px; flex-wrap: wrap; }
.op-ok { color: #0a7a47; font-size: 13.5px; font-weight: 600; }
.op-err { color: #c0392b; font-size: 13.5px; font-weight: 600; }
@media (max-width: 640px) { .op-fields { grid-template-columns: 1fr; } }

/* Attraction contact / hours (owner-editable fields) */
.detail-info { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; margin: 18px 0 0; padding: 14px 16px; background: var(--surface-2, #f7f9fb); border: 1px solid var(--line, #e5e7eb); border-radius: 12px; font-size: 14px; }
.detail-info dt { font-weight: 600; color: #56657a; }
.detail-info dd { margin: 0; color: #1f2937; }
.detail-info a { color: var(--accent); text-decoration: none; }
.detail-info a:hover { text-decoration: underline; }

/* Best attractions — editorial spotlight + ranked list */
.best2 { }
.best2-layout { display: grid; grid-template-columns: 1.35fr 1fr; gap: 22px; align-items: stretch; }
.best2-hero { position: relative; display: block; min-height: 420px; border-radius: 18px; overflow: hidden; color: #fff; text-decoration: none; box-shadow: 0 10px 30px rgba(11,26,43,.14); isolation: isolate; }
.best2-hero-img { position: absolute; inset: 0; z-index: 0; }
.best2-hero-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; }
.best2-hero:hover .best2-hero-img img { transform: scale(1.04); }
.best2-hero-grad { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,18,30,.05) 0%, rgba(8,18,30,.25) 45%, rgba(8,18,30,.85) 100%); }
.best2-hero-body { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-end; gap: 6px; padding: 26px; }
.best2-badge { font-size: 12px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; background: #f9b418; color: #1a1f28; padding: 4px 11px; border-radius: 999px; }
.best2-hero-name { font-family: var(--font-display, inherit); font-size: clamp(24px, 3vw, 34px); font-weight: 800; margin: 6px 0 0; text-shadow: 0 1px 14px rgba(0,0,0,.4); }
.best2-hero-tag { font-size: 15px; color: rgba(255,255,255,.92); margin: 0; max-width: 46ch; }
.best2-hero-meta { font-size: 13.5px; color: rgba(255,255,255,.9); margin-top: 4px; }
.best2-hero-meta b { color: #ffd86b; }
.best2-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.best2-list li { flex: 1; display: flex; }
.best2-row { display: flex; align-items: center; gap: 14px; width: 100%; padding: 10px 14px; border: 1px solid var(--line, #e9edf1); border-radius: 14px; background: #fff; text-decoration: none; color: inherit; transition: border-color .15s, box-shadow .15s, transform .15s; }
.best2-row:hover { border-color: #0b6; transform: translateX(2px); box-shadow: 0 6px 16px rgba(0,0,0,.06); }
.best2-rank { flex-shrink: 0; width: 26px; text-align: center; font-family: var(--font-display, inherit); font-size: 20px; font-weight: 800; color: #c2ccd6; }
.best2-thumb { flex-shrink: 0; width: 64px; height: 48px; border-radius: 9px; overflow: hidden; background: #f1f3f5; }
.best2-thumb img { width: 100%; height: 100%; object-fit: cover; }
.best2-row-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.best2-row-name { font-weight: 700; font-size: 15px; color: #1f2937; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.best2-row-meta { font-size: 12.5px; color: #6b7280; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.best2-row-rate { flex-shrink: 0; font-size: 13.5px; font-weight: 700; color: #0a7a47; }
.best2-arrow { flex-shrink: 0; color: #c2ccd6; }
@media (max-width: 860px) { .best2-layout { grid-template-columns: 1fr; } .best2-hero { min-height: 320px; } }

/* Closing CTA banner */
.home-cta { position: relative; border-radius: 20px; overflow: hidden; color: #fff; isolation: isolate; }
.home-cta-bg { position: absolute; inset: 0; z-index: 0; }
.home-cta-bg img { width: 100%; height: 100%; object-fit: cover; }
.home-cta-scrim { position: absolute; inset: 0; background: linear-gradient(120deg, rgba(8,22,38,.86) 0%, rgba(8,22,38,.6) 55%, rgba(8,22,38,.35) 100%); }
.home-cta-inner { position: relative; z-index: 1; padding: clamp(36px, 6vw, 72px) clamp(24px, 5vw, 64px); max-width: 720px; }
.home-cta-kicker { font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #8be0b3; }
.home-cta-h2 { font-family: var(--font-display, inherit); font-size: clamp(28px, 4.5vw, 44px); font-weight: 800; line-height: 1.1; margin: 8px 0 12px; }
.home-cta-sub { font-size: 16px; line-height: 1.55; color: rgba(255,255,255,.9); margin: 0 0 22px; max-width: 52ch; }
.home-cta-actions { display: flex; gap: 12px; flex-wrap: wrap; }

/* Events calendar (Google-Calendar-style) */
.evcal-views { display: flex; gap: 8px; margin: 0 0 18px; }
.evcal-view { appearance: none; border: 1px solid var(--line, #e5e7eb); background: #fff; border-radius: 999px; padding: 7px 16px; font: inherit; font-size: 14px; font-weight: 600; color: #56657a; cursor: pointer; }
.evcal-view.on { background: #0b6; border-color: #0b6; color: #fff; }
.evcal { border: 1px solid var(--line, #e5e7eb); border-radius: 16px; overflow: hidden; background: #fff; }
.evcal-bar { display: flex; align-items: center; gap: 14px; padding: 14px 16px; border-bottom: 1px solid var(--line, #eef1f4); }
.evcal-nav { display: flex; align-items: center; gap: 6px; }
.evcal-navbtn { width: 34px; height: 34px; border: 1px solid var(--line, #e5e7eb); background: #fff; border-radius: 9px; font-size: 20px; line-height: 1; color: #34404f; cursor: pointer; }
.evcal-navbtn:hover { border-color: #0b6; color: #0b6; }
.evcal-today { border: 1px solid var(--line, #e5e7eb); background: #fff; border-radius: 9px; padding: 0 14px; height: 34px; font: inherit; font-size: 13.5px; font-weight: 600; color: #34404f; cursor: pointer; }
.evcal-today:hover { border-color: #0b6; color: #0b6; }
.evcal-title { font-family: var(--font-display, inherit); font-size: 20px; font-weight: 800; margin: 0; color: #1f2937; }
.evcal-spacer { flex: 1; }
.evcal-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.evcal-head { border-bottom: 1px solid var(--line, #eef1f4); background: #fafbfc; }
.evcal-wd { padding: 8px 10px; font-size: 12px; font-weight: 700; color: #8a97a6; text-transform: uppercase; letter-spacing: .03em; text-align: left; }
.evcal-cell { min-height: 104px; border-right: 1px solid var(--line, #eef1f4); border-bottom: 1px solid var(--line, #eef1f4); padding: 6px; display: flex; flex-direction: column; gap: 4px; }
.evcal-cell:nth-child(7n) { border-right: 0; }
.evcal-cell.out { background: #fafbfc; }
.evcal-cell.out .evcal-day { color: #c2ccd6; }
.evcal-day { font-size: 13px; font-weight: 600; color: #56657a; width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; }
.evcal-cell.today .evcal-day { background: #0b6; color: #fff; border-radius: 50%; }
.evcal-evs { display: flex; flex-direction: column; gap: 3px; }
.evcal-chip { appearance: none; border: 0; text-align: left; width: 100%; border-radius: 5px; padding: 3px 7px; font: inherit; font-size: 11.5px; font-weight: 600; color: #fff; background: var(--c, #2563eb); cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evcal-chip:hover { filter: brightness(1.08); }
.evcal-more { font-size: 11px; color: #6b7280; padding-left: 4px; }
.evcal-hint { font-size: 12.5px; color: #8a97a6; padding: 10px 16px; margin: 0; }
@media (max-width: 720px) {
  .evcal-cell { min-height: 78px; }
  .evcal-chip { font-size: 10px; padding: 2px 5px; }
  .evcal-wd { padding: 6px 6px; font-size: 10px; }
}

/* Newsletter form helper text */
.ft-news-consent { font-size: 11.5px; color: var(--ink-soft, #8a97a6); margin: 8px 0 0; max-width: 42ch; }
.ft-news-err { font-size: 12.5px; color: #ffd0d0; margin: 6px 0 0; }

/* Visitor reviews (attraction detail → Opinie tab) */
.rev-user { margin-top: 18px; }
.rev-user-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.rev-user-h h4 { margin: 0; font-size: 16px; }
.rev-user-avg { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: #0a7a47; font-size: 14px; }
.rev-form { display: flex; flex-direction: column; gap: 10px; background: var(--surface-2, #f7f9fb); border: 1px solid var(--line, #e5e7eb); border-radius: 12px; padding: 14px; margin-bottom: 18px; }
.rev-stars-input { display: inline-flex; gap: 2px; }
.rev-star { appearance: none; background: none; border: 0; padding: 0 2px; font-size: 26px; line-height: 1; color: #d1d5db; cursor: pointer; transition: color .1s; }
.rev-star.on { color: #f9b418; }
.rev-star:hover { color: #f9b418; }
.rev-form textarea { font: inherit; font-size: 14px; padding: 9px 11px; border: 1px solid var(--line, #d1d5db); border-radius: 8px; resize: vertical; }
.rev-form textarea:focus { outline: none; border-color: #0b6; box-shadow: 0 0 0 3px rgba(0,187,102,.15); }
.rev-form .btn { align-self: flex-start; }
.rev-err { color: #c0392b; font-size: 13px; }
.rev-mine-note { background: #f0fbf5; border: 1px solid #bbf0d3; color: #0a5a36; border-radius: 10px; padding: 12px 14px; font-size: 14px; margin: 0 0 18px; }
.rev-muted { color: #6b7280; padding: 6px 0; }

/* ── Partner dashboard (/partner) ───────────────────────────────────────── */
.pdash-page { padding-top: 18px; }
.pdash-bar { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.pdash-h1 { font-family: var(--display, inherit); font-size: clamp(24px, 4vw, 34px); margin: 0 0 4px; }
.pdash-sub { color: #56657a; margin: 0; max-width: 60ch; }
.pdash-range { display: inline-flex; background: #eef2f7; border-radius: 10px; padding: 3px; gap: 2px; }
.pdash-range button { border: 0; background: transparent; padding: 7px 12px; border-radius: 8px; font-weight: 600; font-size: 13px; color: #56657a; cursor: pointer; }
.pdash-range button[data-on="true"] { background: #fff; color: var(--accent, #0a5fa1); box-shadow: 0 1px 3px rgba(0,0,0,.1); }
.pdash-list { display: grid; gap: 18px; }
.pdash-card { border: 1px solid var(--line, #e6e9ef); border-radius: 16px; background: #fff; padding: 18px; box-shadow: 0 1px 2px rgba(16,24,40,.04); }
.pdash-missing { color: #8a5a00; background: #fff8ec; border-color: #f0dcb0; }
.pdash-head { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; }
.pdash-thumb { width: 64px; height: 64px; border-radius: 12px; overflow: hidden; flex: 0 0 auto; }
.pdash-thumb :is(img, .photobox) { width: 100%; height: 100%; object-fit: cover; }
.pdash-name { margin: 0 0 2px; font-size: 18px; }
.pdash-link { font-size: 13px; font-weight: 600; color: var(--accent, #0a5fa1); text-decoration: none; }
.pstat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.pstat { background: #f7f9fc; border: 1px solid var(--line, #e9edf3); border-radius: 12px; padding: 12px 14px; }
.pstat[data-accent="1"] { background: linear-gradient(180deg, #eaf3fb, #f4f9fd); border-color: #cfe3f5; }
.pstat-val { font-size: 26px; font-weight: 800; line-height: 1.1; color: #14223a; }
.pstat-label { font-size: 12.5px; font-weight: 600; color: #44546b; margin-top: 2px; }
.pstat-sub { font-size: 11px; color: #8a97a6; margin-top: 1px; }
.pspark { width: 100%; height: 30px; display: block; margin: 2px 0 4px; }
.pdash-nodata { font-size: 13px; }
.pdash-muted { color: #6b7280; }
.pdash-edit-toggle { margin-top: 12px; border: 1px solid var(--line, #e6e9ef); background: #fff; border-radius: 10px; padding: 8px 14px; font-weight: 600; font-size: 13px; color: #2d3a4d; cursor: pointer; }
.pdash-edit-toggle:hover { background: #f6f8fb; }
.pdash-fields { margin-top: 14px; display: grid; gap: 12px; }
.pdash-field { display: grid; gap: 5px; }
.pdash-field-label { font-size: 12.5px; font-weight: 600; color: #44546b; }
.pdash-field :is(input, textarea) { width: 100%; border: 1px solid var(--line, #d7dde6); border-radius: 10px; padding: 9px 11px; font: inherit; font-size: 14px; background: #fff; }
.pdash-field :is(input, textarea):focus { outline: none; border-color: var(--accent, #0a5fa1); box-shadow: 0 0 0 3px var(--accent-soft, #d7e8f7); }
.pdash-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pdash-ok { color: #0a5a36; font-size: 13px; }
.pdash-err { color: #c0392b; font-size: 13px; }
.pdash-gate, .pdash-empty { max-width: 560px; margin: 40px auto; text-align: center; border: 1px solid var(--line, #e6e9ef); border-radius: 16px; padding: 32px 26px; background: #fff; }
.pdash-gate h1 { margin: 0 0 8px; font-size: 26px; }
.pdash-gate-lede { color: #56657a; margin: 0 0 18px; }
.pdash-gate-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.pdash-gate-foot { margin: 18px 0 0; font-size: 14px; }
.pdash-empty h2 { margin: 0 0 8px; }
@media (max-width: 560px) { .pstat-grid { grid-template-columns: 1fr; } }

/* Homepage guide intro (SEO copy block before the closing CTA) */
/* ── Homepage guide intro + FAQ accordion ──────────────────────────────────── */
.home-seo { max-width: 980px; margin: 0 auto; padding: 0 20px; }

/* Intro — centred lead with a kicker pill */
.home-seo-intro { max-width: 760px; margin: 0 auto 26px; text-align: center; }
.home-seo-kicker {
  display: inline-block; margin-bottom: 14px;
  font-size: 11.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent); background: var(--accent-soft); padding: 6px 14px; border-radius: var(--rad-pill);
}
.home-seo-intro h2 {
  font-family: var(--font-display); font-size: clamp(26px, 3.4vw, 34px);
  font-weight: 800; letter-spacing: -0.02em; color: var(--ink); line-height: 1.15; margin: 0 0 16px;
}
.home-seo-lead { font-size: 17.5px; line-height: 1.7; color: var(--ink); margin: 0 0 12px; }
.home-seo-sub  { font-size: 15.5px; line-height: 1.7; color: var(--ink-soft); margin: 0; }
.home-seo a { color: var(--accent); text-decoration: none; font-weight: 600; border-bottom: 1px solid var(--accent-tint); }
.home-seo a:hover { color: var(--accent-deep); border-bottom-color: var(--accent); }

/* Stat cards — compose the intro with the page's card sections */
.home-seo-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin: 0 0 40px; }
@media (max-width: 560px) { .home-seo-stats { grid-template-columns: 1fr 1fr; } }
.hs-stat {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  background: #fff; border: 1px solid var(--rule); border-radius: var(--rad);
  padding: 18px 14px 16px; text-align: center; text-decoration: none;
  box-shadow: var(--shadow-xs);
  transition: transform var(--t-mid) var(--ease), box-shadow var(--t-mid) var(--ease), border-color var(--t-mid) var(--ease);
}
.hs-stat:hover { transform: translateY(-3px); box-shadow: var(--shadow); border-color: var(--accent-tint); }
.hs-stat-ico {
  display: inline-grid; place-items: center;
  width: 40px; height: 40px; margin-bottom: 2px;
  border-radius: 50%; background: var(--accent-soft); color: var(--accent);
  transition: transform var(--t-mid) var(--ease), background var(--t-mid) var(--ease);
}
.hs-stat-ico svg { width: 21px; height: 21px; }
.hs-stat:hover .hs-stat-ico { transform: scale(1.08) rotate(-4deg); }
.hs-stat b { font-family: var(--font-display); font-size: 30px; font-weight: 800; letter-spacing: -0.02em; color: var(--accent); line-height: 1; }
.hs-stat span { font-size: 13px; font-weight: 600; color: var(--ink-soft); }
@media (prefers-reduced-motion: reduce) { .hs-stat:hover .hs-stat-ico { transform: none; } }

/* FAQ accordion */
.home-faq-h {
  font-family: var(--font-display); font-size: clamp(22px, 2.8vw, 28px); font-weight: 800;
  letter-spacing: -0.02em; color: var(--ink); text-align: center; margin: 0 0 22px;
}
.home-faq-list { display: grid; gap: 12px; }
@media (min-width: 760px) { .home-faq-list { grid-template-columns: 1fr 1fr; align-items: start; } }
.faq-item {
  border: 1px solid var(--rule); border-radius: var(--rad); background: #fff;
  box-shadow: var(--shadow-xs); overflow: hidden;
  transition: box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.faq-item:hover { border-color: var(--rule-strong); box-shadow: var(--shadow-sm); }
.faq-item[open] { border-color: var(--accent-tint); box-shadow: var(--shadow-sm); }
.faq-item > summary {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 16px 18px; cursor: pointer; list-style: none;
  font-size: 15.5px; font-weight: 700; color: var(--ink); line-height: 1.35;
}
.faq-item > summary::-webkit-details-marker { display: none; }
.faq-item > summary:hover { color: var(--accent); }
.faq-ico {
  position: relative; flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%;
  background: var(--accent-soft); transition: background var(--t-fast) var(--ease), transform var(--t-mid) var(--ease);
}
.faq-ico::before, .faq-ico::after {
  content: ""; position: absolute; top: 50%; left: 50%; background: var(--accent);
  border-radius: 2px; transform: translate(-50%, -50%);
}
.faq-ico::before { width: 10px; height: 2px; }
.faq-ico::after  { width: 2px; height: 10px; transition: transform var(--t-mid) var(--ease); }
.faq-item[open] .faq-ico { background: var(--accent); }
.faq-item[open] .faq-ico::before, .faq-item[open] .faq-ico::after { background: #fff; }
.faq-item[open] .faq-ico::after { transform: translate(-50%, -50%) scaleY(0); }
.faq-a { padding: 0 18px 16px; }
.faq-a p { font-size: 14.5px; line-height: 1.65; color: var(--ink-soft); margin: 0; }

/* ══ Trasa builder — modern editor (tb-*) ══════════════════════════════════ */
.tb { background: var(--surface-2); min-height: 60vh; padding-bottom: 80px; }

/* Sticky toolbar (sits under the 67px site header) */
.tb-bar {
  position: sticky; top: 0; z-index: 150;
  display: flex; align-items: center; gap: 12px;
  padding: 10px 22px; background: rgba(255,255,255,.92);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--rule);
}
.tb-bar-back {
  flex: none; width: 36px; height: 36px; display: grid; place-items: center;
  border-radius: 50%; background: var(--surface-2); color: var(--ink);
  font-size: 18px; text-decoration: none; transition: background .15s;
}
.tb-bar-back:hover { background: var(--surface-3); }
.tb-bar-title {
  flex: 1; min-width: 0; border: none; background: transparent; outline: none;
  font-family: var(--font-display); font-size: 21px; font-weight: 700; color: var(--ink);
  padding: 4px 8px; border-radius: 8px;
}
.tb-bar-title:hover { background: var(--surface-2); }
.tb-bar-title:focus { background: var(--surface-2); box-shadow: inset 0 0 0 2px var(--accent-tint); }
.tb-bar-count { flex: none; font-size: 12.5px; font-weight: 700; color: var(--ink-soft); background: var(--surface-2); border-radius: var(--rad-pill); padding: 5px 11px; }
.tb-bar-save { flex: none; display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--ink-soft); }
.tb-bar-save-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--positive); }
.tb-bar-save[data-state="saving"] .tb-bar-save-dot { background: var(--rating); animation: tbPulse 1s ease-in-out infinite; }
.tb-bar-save[data-state="error"] .tb-bar-save-dot { background: #c0392b; }
.tb-bar-save[data-state="error"] { color: #c0392b; }
@keyframes tbPulse { 50% { opacity: .35; } }
.tb-bar-share { position: relative; flex: none; }
.tb-share-pop {
  position: absolute; right: 0; top: calc(100% + 8px); width: 300px; z-index: 250;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--rad);
  box-shadow: 0 14px 40px rgba(11,26,43,.16); padding: 14px;
}
.tb-share-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 14px; font-weight: 700; color: var(--ink); }
.tb-share-hint { font-size: 12px; color: var(--ink-soft); margin: 8px 0 0; line-height: 1.45; }
.tb-share-url { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.tb-share-url code { flex: 1; font-size: 11px; overflow-wrap: anywhere; background: var(--surface-2); border-radius: 8px; padding: 7px 9px; color: var(--ink-soft); }

/* Layout */
.tb-grid {
  display: grid; grid-template-columns: 320px minmax(0,1fr) 360px; gap: 18px;
  max-width: 1480px; margin: 0 auto; padding: 18px 22px 0;
  align-items: start;
}

/* Picker */
.tb-picker {
  position: sticky; top: 76px; display: flex; flex-direction: column; gap: 10px;
  background: var(--surface); border: 1px solid var(--rule); border-radius: var(--rad-lg);
  padding: 14px; max-height: calc(100vh - 96px); overflow: hidden;
}
.tb-picker-head { display: flex; align-items: center; justify-content: space-between; }
.tb-picker-head h2 { font-size: 15px; font-weight: 800; color: var(--ink); margin: 0; }
.tb-picker-close { display: none; border: none; background: var(--surface-2); width: 30px; height: 30px; border-radius: 50%; font-size: 13px; cursor: pointer; color: var(--ink-soft); }
.tb-picker-search {
  width: 100%; border: 1px solid var(--rule-strong); border-radius: var(--rad-pill);
  padding: 9px 14px; font-size: 14px; outline: none; background: var(--surface);
}
.tb-picker-search:focus { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.tb-picker-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.tb-chip {
  border: 1px solid var(--rule); background: var(--surface); color: var(--ink-soft);
  border-radius: var(--rad-pill); padding: 4px 11px; font-size: 12px; font-weight: 600; cursor: pointer;
  transition: all .14s;
}
.tb-chip:hover { border-color: var(--rule-strong); color: var(--ink); }
.tb-chip[data-on="true"] { background: var(--ink); border-color: var(--ink); color: #fff; }
.tb-picker-list { overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding-right: 2px; }
.tb-tile {
  display: flex; align-items: center; gap: 10px; border: 1px solid var(--rule);
  border-radius: 12px; padding: 7px; background: var(--surface); transition: all .14s;
}
.tb-tile:hover { border-color: var(--rule-strong); box-shadow: 0 4px 14px rgba(11,26,43,.08); transform: translateY(-1px); }
.tb-tile-photo { flex: none; width: 54px; height: 54px; border-radius: 9px; overflow: hidden; background: var(--photo-skel); }
.tb-tile-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tb-tile-body { flex: 1; min-width: 0; }
.tb-tile-name { font-size: 13.5px; font-weight: 700; color: var(--ink); line-height: 1.25; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tb-tile-meta { font-size: 11.5px; color: var(--ink-soft); margin-top: 2px; }
.tb-tile-add {
  flex: none; width: 32px; height: 32px; border-radius: 50%; border: none; cursor: pointer;
  background: var(--accent-soft); color: var(--accent); font-size: 19px; font-weight: 700; line-height: 1;
  transition: all .14s;
}
.tb-tile-add:hover { background: var(--accent); color: #fff; transform: scale(1.08); }

/* Timeline */
.tb-main { min-width: 0; }
.tb-lede {
  width: 100%; border: 1px dashed var(--rule-strong); background: var(--surface);
  border-radius: 12px; padding: 10px 14px; font-size: 13.5px; color: var(--ink-soft);
  font-family: var(--font-text); resize: vertical; outline: none;
}
.tb-lede:focus { border-style: solid; border-color: var(--accent); }
.tb-controls { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 16px; }
.tb-seg { display: inline-flex; background: #e9eef4; border-radius: var(--rad-pill); padding: 3px; gap: 2px; }
.tb-seg button {
  border: none; background: transparent; cursor: pointer; border-radius: var(--rad-pill);
  padding: 7px 14px; font-size: 13px; font-weight: 700; color: var(--ink-soft); transition: all .15s;
}
.tb-seg button:hover { color: var(--ink); }
.tb-seg button[data-on="true"] { background: var(--surface); color: var(--accent); box-shadow: 0 1px 5px rgba(11,26,43,.14); }

.tb-stops { display: flex; flex-direction: column; }
.tb-stop {
  display: flex; align-items: center; gap: 12px;
  background: var(--surface); border: 1px solid var(--rule); border-radius: 14px;
  padding: 9px 12px; transition: box-shadow .15s, border-color .15s;
}
.tb-stop:hover { border-color: var(--rule-strong); box-shadow: 0 6px 18px rgba(11,26,43,.09); }
.tb-stop[draggable] { cursor: grab; }
.tb-stop:active { cursor: grabbing; }
.tb-stop-grip { flex: none; color: var(--ink-faint); font-size: 13px; letter-spacing: -2px; user-select: none; }
.tb-stop-photo { flex: none; position: relative; width: 84px; height: 63px; border-radius: 10px; overflow: hidden; background: var(--photo-skel); }
.tb-stop-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tb-stop-num {
  position: absolute; top: 5px; left: 5px; width: 22px; height: 22px; border-radius: 50%;
  background: var(--accent); color: #fff; font-size: 11.5px; font-weight: 800;
  display: grid; place-items: center; box-shadow: 0 1px 4px rgba(0,0,0,.35);
}
.tb-stop-body { flex: 1; min-width: 0; }
.tb-stop-name { font-size: 15px; font-weight: 700; color: var(--ink); line-height: 1.3; }
.tb-stop-meta { font-size: 12.5px; color: var(--ink-soft); margin-top: 2px; }
.tb-stop-actions { flex: none; display: flex; gap: 4px; opacity: 0; transition: opacity .15s; }
.tb-stop:hover .tb-stop-actions, .tb-stop:focus-within .tb-stop-actions { opacity: 1; }
.tb-iconbtn {
  width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--rule);
  background: var(--surface); color: var(--ink-soft); cursor: pointer; font-size: 13px;
  display: grid; place-items: center; transition: all .14s;
}
.tb-iconbtn:hover { background: var(--surface-2); color: var(--ink); border-color: var(--rule-strong); }
.tb-iconbtn-x:hover { background: #fdecea; color: #c0392b; border-color: #f5c6c0; }

.tb-leg { display: flex; align-items: center; gap: 10px; padding: 3px 0 3px 34px; min-height: 30px; }
.tb-leg-rail { width: 2px; height: 24px; flex: none; background: repeating-linear-gradient(to bottom, var(--accent-tint) 0 4px, transparent 4px 8px); border-radius: 2px; }
.tb-leg-chip { font-size: 11.5px; font-weight: 600; color: var(--ink-soft); background: var(--surface); border: 1px solid var(--rule); border-radius: var(--rad-pill); padding: 3px 10px; }

.tb-day { background: var(--surface); border: 1px solid var(--rule); border-radius: var(--rad-lg); padding: 12px 14px 14px; margin-bottom: 16px; transition: border-color .15s, box-shadow .15s; }
.tb-day[data-drop="1"] { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.tb-day .tb-stop { border-color: transparent; background: var(--surface-2); }
.tb-day .tb-stop:hover { border-color: var(--rule-strong); background: var(--surface); }
.tb-day-h { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.tb-day-badge { flex: none; background: var(--accent-soft); color: var(--accent); font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; border-radius: var(--rad-pill); padding: 4px 11px; }
.tb-day-title { flex: 1; min-width: 0; border: none; background: transparent; outline: none; font-size: 16px; font-weight: 700; color: var(--ink); padding: 3px 6px; border-radius: 7px; }
.tb-day-title:hover, .tb-day-title:focus { background: var(--surface-2); }
.tb-day-count { flex: none; font-size: 12px; color: var(--ink-soft); }
.tb-day-remove { flex: none; border: none; background: transparent; color: var(--ink-soft); font-size: 12px; font-weight: 600; cursor: pointer; border-radius: var(--rad-pill); padding: 5px 10px; transition: all .15s; }
.tb-day-remove:hover { background: #fdecea; color: #c0392b; }
.tb-day-remove[data-armed="1"] { background: #c0392b; color: #fff; }
.tb-add-day { width: 100%; border: 2px dashed var(--rule-strong); background: transparent; color: var(--ink-soft); border-radius: var(--rad-lg); padding: 13px; font-size: 14px; font-weight: 700; cursor: pointer; transition: all .15s; }
.tb-add-day:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }

/* Side column */
.tb-side { position: sticky; top: 76px; display: flex; flex-direction: column; gap: 14px; max-height: calc(100vh - 96px); overflow-y: auto; }
.tb-card { background: var(--surface); border: 1px solid var(--rule); border-radius: var(--rad-lg); padding: 14px; position: relative; isolation: isolate; z-index: 0; }
.tb-card-h { font-size: 14px; font-weight: 800; color: var(--ink); margin: 0 0 10px; }
.tb-side-meta { font-size: 12.5px; color: var(--ink-soft); margin: 10px 0 0; }
.tb-muted { font-size: 13px; color: var(--ink-soft); margin: 0; line-height: 1.5; }
.tb-tip { display: flex; flex-direction: column; gap: 10px; background: var(--accent-soft); border-radius: 12px; padding: 12px; font-size: 13px; color: var(--ink); line-height: 1.45; }
.tb-tip .btn { align-self: flex-start; }
.tb-ok { font-size: 13px; color: var(--positive); font-weight: 600; margin: 0; }
.tb-nearby { margin-top: 12px; }
.tb-nearby-h { font-size: 12.5px; font-weight: 800; color: var(--ink); margin-bottom: 8px; }
.tb-nearby-item { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-top: 1px solid var(--rule); }
.tb-nearby-name { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 600; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tb-nearby-dist { flex: none; font-size: 11px; color: var(--ink-soft); }
.tb-nearby-add { flex: none; border: none; background: var(--accent-soft); color: var(--accent); font-size: 11.5px; font-weight: 700; border-radius: var(--rad-pill); padding: 4px 10px; cursor: pointer; transition: all .14s; }
.tb-nearby-add:hover { background: var(--accent); color: #fff; }

/* Empty states, toast, FAB, scrim */
.tb-empty { border: 2px dashed var(--rule); border-radius: 12px; padding: 16px; font-size: 13px; color: var(--ink-soft); text-align: center; line-height: 1.5; }
.tb-empty-lg { padding: 44px 20px; font-size: 14.5px; }
.tb-toast {
  position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%); z-index: 400;
  background: var(--ink); color: #fff; font-size: 13.5px; font-weight: 600;
  border-radius: var(--rad-pill); padding: 11px 20px; box-shadow: 0 10px 30px rgba(11,26,43,.3);
  animation: tbToastIn .2s ease-out;
}
@keyframes tbToastIn { from { opacity: 0; transform: translate(-50%, 8px); } }
.tb-fab { display: none; }
.tb-scrim { display: none; }

/* ── Mobile / tablet ─────────────────────────────────────────────────────── */
@media (max-width: 1100px) {
  .tb-grid { grid-template-columns: 1fr; padding: 14px 14px 0; }
  .tb-side { position: static; max-height: none; overflow: visible; }
  .tb-bar { padding: 8px 14px; }
  .tb-bar-count { display: none; }
  .tb-bar-title { font-size: 17px; }
  .tb-picker {
    position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 320;
    max-height: 78vh; border-radius: 18px 18px 0 0; border-bottom: none;
    transform: translateY(105%); transition: transform .25s ease; box-shadow: 0 -14px 40px rgba(11,26,43,.25);
  }
  .tb-picker[data-open="1"] { transform: translateY(0); }
  .tb-picker-close { display: grid; place-items: center; }
  .tb-scrim { display: block; position: fixed; inset: 0; z-index: 310; background: rgba(11,26,43,.42); border: none; cursor: pointer; }
  .tb-fab {
    display: inline-flex; align-items: center; gap: 6px;
    position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%); z-index: 300;
    border: none; background: var(--accent); color: #fff; font-size: 14.5px; font-weight: 700;
    border-radius: var(--rad-pill); padding: 13px 22px; cursor: pointer;
    box-shadow: 0 10px 26px rgba(10,95,161,.4);
  }
  .tb-stop-actions { opacity: 1; }
}
@media (max-width: 560px) {
  .tb-bar-save-label { display: none; }
  .tb-stop { gap: 9px; padding: 8px 9px; }
  .tb-stop-photo { width: 64px; height: 52px; }
  .tb-stop-grip { display: none; }
  .tb-leg { padding-left: 18px; }
  .tb-share-pop { right: -8px; width: calc(100vw - 32px); max-width: 320px; }
}

/* Stretched-link cards: the title is the only anchor (short anchor text for SEO),
   its ::after covers the positioned card so the whole card stays clickable. */
.card-stretch { color: inherit; text-decoration: none; }
.card-stretch::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.trip-card { position: relative; }
.best2-hero { position: relative; }

/* Branded 404 page */
.nf { max-width: 640px; margin: 0 auto; padding: 70px 20px 90px; text-align: center; }
.nf-code { font-family: var(--font-display); font-size: 88px; font-weight: 800; color: var(--accent-tint); margin: 0; line-height: 1; }
.nf h1 { font-size: 28px; font-weight: 800; color: var(--ink); margin: 8px 0 10px; }
.nf-sub { font-size: 15px; color: var(--ink-soft); line-height: 1.6; margin: 0 0 22px; }
.nf-actions { display: flex; justify-content: center; gap: 10px; margin-bottom: 30px; }
.nf-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 18px; padding-top: 22px; border-top: 1px solid var(--rule); }
.nf-links a { font-size: 13.5px; font-weight: 600; color: var(--accent); text-decoration: none; }
.nf-links a:hover { text-decoration: underline; }

/* Attraction detail — compact photo mosaic (replaces the full-width .pp-hero there) */
.detail-mosaic { display: grid; grid-template-columns: 2fr 1fr; gap: 8px; height: 420px; border-radius: var(--rad-lg); overflow: hidden; margin: 8px 0 20px; }
/* Single-photo (the common case): photo left, quick-facts panel right. */
.detail-mosaic[data-n="1"] { grid-template-columns: 1.7fr 1fr; height: 380px; }
.detail-mosaic-facts { min-width: 0; overflow-y: auto; padding: 18px; background: var(--surface-2); }
.detail-mosaic-facts .detail-tagline { margin-top: 0; font-size: 15.5px; }
.detail-mosaic-facts .detail-info { margin-bottom: 0; }
.detail-mosaic-main { position: relative; height: 100%; min-width: 0; background: var(--photo-skel); }
.detail-mosaic-side { display: grid; grid-template-rows: 1fr 1fr; gap: 8px; min-width: 0; }
.detail-mosaic[data-n="2"] .detail-mosaic-side { grid-template-rows: 1fr; }
.detail-mosaic-tile { position: relative; display: block; height: 100%; min-height: 0; background: var(--photo-skel); }
.detail-mosaic-main picture, .detail-mosaic-main img,
.detail-mosaic-tile picture, .detail-mosaic-tile img { display: block; width: 100%; height: 100%; object-fit: cover; }
.detail-mosaic-tile { transition: filter .15s; }
.detail-mosaic-tile:hover { filter: brightness(1.06); }

.detail-thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin: -8px 0 20px; }
.detail-thumbs-item { width: 84px; height: 60px; border-radius: 10px; overflow: hidden; background: var(--photo-skel); transition: filter .15s; }
.detail-thumbs-item:hover { filter: brightness(1.06); }
.detail-thumbs-item picture, .detail-thumbs-item img { display: block; width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 900px) {
  .detail-mosaic { grid-template-columns: 1fr; height: auto; }
  .detail-mosaic-main { height: 240px; }
  .detail-mosaic-side { grid-template-rows: none; grid-template-columns: 1fr 1fr; height: 92px; }
  .detail-mosaic[data-n="2"] .detail-mosaic-side { grid-template-columns: 1fr; }
  .detail-mosaic[data-n="1"] { grid-template-columns: 1fr; height: auto; }
  .detail-mosaic[data-n="1"] .detail-mosaic-main { height: 240px; }
  .detail-mosaic-facts { overflow-y: visible; }
}

/* Discount amount shown next to the "Kod rabatowy" label */
.book-promo-value { color: var(--positive); font-size: 14px; font-weight: 800; text-transform: none; letter-spacing: 0; }

/* ── Adaptive attraction gallery (ag-*) — replaces detail-mosaic ─────────── */
.ag { display: grid; gap: 8px; height: 420px; border-radius: var(--rad-lg); overflow: hidden; margin: 8px 0 20px; grid-template-columns: 2fr 1fr; }
.ag[data-n="1"] { grid-template-columns: 1.7fr 1fr; height: 380px; }
.ag[data-n="2"] { grid-template-columns: 1.7fr 1fr; }
.ag-main, .ag-tile { position: relative; display: block; border: none; padding: 0; background: var(--photo-skel); cursor: zoom-in; min-width: 0; min-height: 0; height: 100%; width: 100%; }
.ag-main picture, .ag-main img, .ag-tile picture, .ag-tile img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ag-main:hover img, .ag-tile:hover img { filter: brightness(1.06); }
.ag-count {
  position: absolute; left: 12px; bottom: 12px; z-index: 1;
  background: rgba(11,26,43,.72); color: #fff; font-size: 12px; font-weight: 700;
  border-radius: var(--rad-pill); padding: 5px 11px; pointer-events: none;
}
.ag-side { display: grid; gap: 8px; min-width: 0; }
.ag-side[data-k="1"] { grid-template-rows: 1fr; }
.ag-side[data-k="2"] { grid-template-rows: 1fr 1fr; }
.ag-side[data-k="3"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.ag-side[data-k="3"] .ag-tile:first-child { grid-column: 1 / -1; }
.ag-side[data-k="4"] { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.ag-more {
  position: absolute; inset: 0; display: grid; place-items: center;
  background: rgba(11,26,43,.55); color: #fff; font-size: 15px; font-weight: 800;
}
/* Single-photo case: the facts panel reads as a clean white info card beside the
   photo (was a flat grey block) — white bg, hairline divider, comfortable rhythm. */
.ag-facts { min-width: 0; overflow-y: auto; padding: 22px 24px; background: #fff; border-left: 1px solid var(--rule); display: flex; flex-direction: column; }
.ag-facts .detail-tagline { margin-top: 0; margin-bottom: 16px; font-size: 16px; line-height: 1.5; color: var(--ink); }
.ag-facts .detail-stats { margin: 0 0 4px; padding: 16px 0 0; border-top: 1px solid var(--rule); }
.ag-facts .detail-info { margin-bottom: 0; margin-top: 16px; }
.ag-facts-below { margin: -6px 0 22px; }

/* Lightbox */
.ag-lb { position: fixed; inset: 0; z-index: 600; background: rgba(8,14,22,.92); display: grid; place-items: center; animation: agFade .15s ease-out; }
@keyframes agFade { from { opacity: 0; } }
.ag-lb-stage { margin: 0; max-width: 92vw; max-height: 86vh; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ag-lb-stage img { max-width: 92vw; max-height: 80vh; object-fit: contain; border-radius: 10px; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.ag-lb-stage figcaption { color: rgba(255,255,255,.85); font-size: 13.5px; text-align: center; }
.ag-lb-btn {
  position: fixed; z-index: 601; border: none; cursor: pointer;
  width: 46px; height: 46px; border-radius: 50%;
  background: rgba(255,255,255,.14); color: #fff; font-size: 24px; line-height: 1;
  display: grid; place-items: center; transition: background .15s;
}
.ag-lb-btn:hover { background: rgba(255,255,255,.3); }
.ag-lb-close { top: 18px; right: 18px; font-size: 18px; }
.ag-lb-prev { left: 18px; top: 50%; transform: translateY(-50%); }
.ag-lb-next { right: 18px; top: 50%; transform: translateY(-50%); }
.ag-lb-counter { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); color: rgba(255,255,255,.8); font-size: 13px; font-weight: 700; letter-spacing: .04em; }

@media (max-width: 900px) {
  .ag, .ag[data-n="1"], .ag[data-n="2"] { grid-template-columns: 1fr; height: auto; }
  .ag-main { height: 240px; }
  .ag-side, .ag-side[data-k="1"], .ag-side[data-k="2"], .ag-side[data-k="3"], .ag-side[data-k="4"] {
    display: flex; overflow-x: auto; height: 92px; grid-template-columns: none; grid-template-rows: none;
    scroll-snap-type: x mandatory;
  }
  .ag-side .ag-tile { flex: 0 0 31%; scroll-snap-align: start; }
  .ag-facts { overflow-y: visible; }
  .ag-lb-prev { left: 8px; } .ag-lb-next { right: 8px; }
}

/* Stretched-link AttractionCard: title is the only <a>; its ::after covers the
   card, so the fav/visited buttons must sit ABOVE that overlay to stay clickable. */
/* Keep the fav/visited toggles above the title's stretched ::after overlay so they
   stay clickable. They're already position:absolute — only the z-index is needed. */
.acard-fav, .acard-visited { z-index: 2; }
.acard-name .card-stretch:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; border-radius: 4px; }

/* ── Utility classes — replace one-off inline styles (SEO: no inline style attrs).
   Static layout tweaks only; genuinely dynamic values (computed widths, positions,
   colour vars) remain inline as React style props. ───────────────────────────── */
.u-msg        { padding: 40px 0; color: var(--ink-soft); }
.u-pad-40v    { padding: 40px 0; }
.u-msg-pad    { padding: 24px 0; color: var(--ink-soft); }
.u-msg-c      { padding: 48px 0; text-align: center; color: var(--ink-soft); }
.u-msg-c2     { padding: 40px 0; text-align: center; color: var(--ink-soft); }
.u-pad-c      { padding: 40px; text-align: center; }
.u-pad-c-muted{ padding: 40px; text-align: center; color: var(--ink-soft); }
.u-pad-32v    { padding: 32px 0; }
.u-pad-48v    { padding: 48px 0; }
.u-pad-24v    { padding: 24px 0; }
.u-center     { text-align: center; }
.u-fs-28      { font-size: 28px; }
.u-fs-14      { font-size: 14px; }
.u-strong     { font-weight: 600; }
.u-cursor-default { cursor: default; }
.u-empty-h    { font-size: 18px; margin-bottom: 8px; }
.u-sub-18     { color: var(--ink-soft); margin: 0 0 18px; }
.u-mt-12 { margin-top: 12px; } .u-mt-14 { margin-top: 14px; } .u-mt-16 { margin-top: 16px; }
.u-mt-18 { margin-top: 18px; } .u-mt-28 { margin-top: 28px; }
.u-mb-14 { margin-bottom: 14px; }
.u-capitalize { text-transform: capitalize; }
.u-hidden { display: none; }
.bub-fill--10{width:10%}.bub-fill--20{width:20%}.bub-fill--30{width:30%}.bub-fill--40{width:40%}.bub-fill--50{width:50%}.bub-fill--60{width:60%}.bub-fill--70{width:70%}.bub-fill--80{width:80%}.bub-fill--90{width:90%}

/* Event detail — facts card in the sidebar */
.ev-facts { border: 1px solid var(--rule); border-radius: var(--rad); background: #fff; box-shadow: var(--cms-shadow-xs, 0 1px 2px rgba(11,33,58,.05)); padding: 16px 18px; }
.ev-facts dl { margin: 0; display: grid; gap: 4px 0; }
.ev-facts dt { font-size: 11px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft); margin-top: 12px; }
.ev-facts dt:first-child { margin-top: 0; }
.ev-facts dd { margin: 0; font-size: 14.5px; color: var(--ink); font-weight: 600; }
.ev-facts dd a { color: var(--accent); text-decoration: none; }
.ev-facts dd a:hover { text-decoration: underline; }
