/* Site-specific overrides on top of Bootstrap 5.3 RTL */

/* Brand colors */
:root {
  --brand: #c88a2e;
  --kicker: #ad4a29;
  --text: #4a4949;
  --wa-green: #25d366;
  --wa-green-hover: #1fb855;
}

body {
  font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  line-height: 1.8;
  color: var(--text);
}
.container { max-width: 960px; }

/* Links */
a { color: var(--brand); }
a:hover { color: #a06e1a; }

/* Nav links */
.nav-link { color: #666; font-size: 14px; font-weight: 300; padding: 0; }
.nav-link:hover { color: var(--brand); }

/* Headings - consistent across all page types */
h1 { font-family: 'Heebo', 'Open Sans', sans-serif; font-size: 2.5rem; font-weight: 800; color: var(--text); line-height: 1.3; letter-spacing: -.01em; margin-bottom: .5rem; }

/* Category kicker / eyebrow above the article title */
.article-kicker { font-family: 'Heebo', 'Open Sans', sans-serif; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; margin-bottom: .5rem; }
.article-kicker a { color: var(--kicker); text-decoration: none; }
.article-kicker a:hover { color: #8c3a20; text-decoration: underline; }
h2 { font-family: 'Heebo', 'Open Sans', sans-serif; font-size: 1.75rem; font-weight: 700; color: var(--text); line-height: 1.3; margin-top: 2.5rem; margin-bottom: 1rem; padding-top: 1.5rem; border-top: 2px solid #b3a892; }
h3 { font-family: 'Heebo', 'Open Sans', sans-serif; font-size: 1.25rem; font-weight: 600; color: var(--text); margin-top: 1.75rem; margin-bottom: .625rem; }
/* Override global h2/h3 margin-top inside accordions (Bootstrap only resets margin-bottom) */
.accordion h2.accordion-header,
.accordion h3.accordion-header { margin: 0; font-size: inherit; padding-top: 0; border-top: 0; }

/* Article body container */
.article-body { max-width: 720px; padding-top: 3rem; padding-bottom: 4rem; }

/* Listing-page heading scale - consistent across /articles/, /neighbourhoods/, /london-calendar/.
   Section labels sit one clear step above card/row titles; the lead hero is the single step-up. */
.listing-section-title { font-size: 1.75rem; font-weight: 600; padding-top: 0; border-top: 0; padding-bottom: .75rem; border-bottom: 2px solid #b3a892; }
.title-card { font-size: 1.25rem; font-weight: 400; margin-top: 0; line-height: 1.2; }
.title-card-lead { font-size: 1.5rem; font-weight: 400; margin-top: 0; line-height: 1.2; }

/* Preserve aspect ratio when intrinsic width/height attrs are present but CSS sizes the width */
img { height: auto; max-width: 100%; }

/* Hero image */
.container-hero { max-width: 1012px; }
.slider-img { height: 636px; object-fit: cover; }

/* Callouts - Bootstrap alerts with near-side border accent */
.callout { border: none; border-inline-start: 3px solid; border-start-start-radius: 0; border-start-end-radius: .375rem; border-end-end-radius: .375rem; border-end-start-radius: 0; }
.callout p { margin-bottom: 0; }
.alert-success.callout { border-color: #25d366; background: #f0faf4; }
.alert-warning.callout { border-color: #e8a838; background: #fef8ee; }
.alert-danger.callout  { border-color: #d94f4f; background: #fdf0f0; }
.alert-info.callout    { border-color: #5b9bd5; background: #f0f5fa; }
.alert-light.callout { border-color: var(--brand); background: #fdf8f0; }

/* WhatsApp button */
.btn-wa { background: var(--wa-green); color: #fff; border: none; }
.btn-wa:hover, .btn-wa:focus, .btn-wa:active { background: var(--wa-green-hover); color: #fff; box-shadow: none; }

/* WhatsApp share float */
.wa-share {
  position: fixed; bottom: 1.5rem; left: 1.5rem; height: 44px; padding: 0 1rem 0 .75rem;
  gap: .375rem; background: var(--wa-green); color: #fff; border-radius: 22px;
  display: flex; align-items: center; box-shadow: 0 2px 8px rgba(0,0,0,.2);
  z-index: 900; text-decoration: none; font-size: .875rem; font-weight: 500;
}
.wa-share:hover { background: var(--wa-green-hover); color: #fff; }
.wa-share svg { width: 22px; height: 22px; flex-shrink: 0; }

/* Tables inherit site body text color (Bootstrap defaults to near-black).
   Pin striped-color too, else striped rows keep Bootstrap's darker emphasis color
   and the text tone differs between tinted and white rows. */
.table { --bs-table-color: var(--text); --bs-table-striped-color: var(--text); --bs-table-striped-bg: rgba(176, 74, 28, .06); margin-block: 2rem; }
/* Start the zebra striping on white: tint even rows instead of odd */
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: initial; }
.table-striped > tbody > tr:nth-of-type(even) > * { --bs-table-bg-type: var(--bs-table-striped-bg); }

/* Bio box */
.bio-box { background: #f9f7f4; }
.bio-avatar { width: 120px; height: 120px; object-fit: cover; }

/* Service icons */
.service-icon { width: 52px; height: 52px; object-fit: contain; opacity: .65; }

/* Linked headings (cards, article rows) read as headings, not links */
.card-title,
.article-link h3 { color: var(--text); }
.article-link:hover h3 { color: var(--brand); }

/* Card hover */
.card { border: none; }
.card:hover .card-title { color: var(--brand); }

/* Zoom-in on hover */
.card-img-wrap {
  overflow: hidden;
  border-top-left-radius: var(--bs-card-inner-border-radius);
  border-top-right-radius: var(--bs-card-inner-border-radius);
}
.card-img-cover,
.card-img-hero { transition: transform .4s ease; }
.card:hover .card-img-cover,
.card:hover .card-img-hero { transform: scale(1.04); }

@media (prefers-reduced-motion: reduce) {
  .card-img-cover,
  .card-img-hero { transition: none; }
  .card:hover .card-img-cover,
  .card:hover .card-img-hero { transform: none; }
}

/* Card / list image sizing */
.card-img-cover { height: 180px; object-fit: cover; }
.card-img-hero { height: 280px; object-fit: cover; }
.article-thumb { width: 72px; height: 72px; object-fit: cover; }

/* CTA modal avatar */
.cta-avatar { width: 80px; height: 80px; object-fit: cover; object-position: center 35%; }

/* Related-article bookmark card */
.bookmark-card { background: #faf9f7; transition: transform .2s ease, box-shadow .2s ease; }
.bookmark-card:hover { transform: translateY(-3px); box-shadow: 0 .75rem 1.5rem rgba(0,0,0,.12); }
.bookmark-card:hover .bookmark-card-title { color: var(--brand); }
.bookmark-card-body { flex: 1 1 auto; }
.bookmark-card-label { color: var(--brand); letter-spacing: .06em; }
.bookmark-card-img { flex: 0 0 38%; max-width: 38%; align-self: stretch; object-fit: cover; }
.bookmark-card-excerpt {
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

@media (max-width: 576px) {
  .bookmark-card { flex-direction: column; }
  .bookmark-card-img { flex-basis: auto; max-width: 100%; width: 100%; height: 180px; }
}

/* Swiper overrides */
.swiper-button-next, .swiper-button-prev { --swiper-navigation-color: #fff; }
.swiper-pagination-bullet-active { background: var(--brand); }
.swiper-slide { opacity: 0 !important; transition: opacity .8s ease; }
.swiper-slide-active { opacity: 1 !important; }

/* Mobile nav */
.navbar-collapse .nav-link { padding: .75rem 0; font-size: 1rem; }
.navbar-collapse .navbar-nav { padding-top: .5rem; }

/* Responsive */
@media (max-width: 576px) {
  h1 { font-size: 1.75rem; }
}
