/*
Theme Name: Lyons Links Child
Template: generatepress
Version: 1.2.42
Description: Lyons Links – Tailored Travel. Local Knowledge. Great Golf.
*/

/* =============================================
   GENERATEPRESS LAYOUT RESET
   ============================================= */

/* Remove GP's default page title and article padding so our custom sections bleed full-width */
.page-title,
.entry-title { display: none !important; }

.inside-article,
.entry-content {
  padding: 0 !important;
  margin: 0 !important;
}

/* Make GP's content area go full-width */
.site-content .content-area,
.site-content .site-main,
.site-content article,
.site-content .inside-article {
  max-width: 100% !important;
  width: 100% !important;
  float: none !important;
}

/* Blog archive (home.php) — #main is a direct flex child of #content; make it fill */
.blog #main {
  flex: 1 1 100% !important;
  width: 100% !important;
  min-width: 0;
}

/* Remove GP's container constraint on content */
.container,
.grid-container {
  max-width: 100% !important;
  padding: 0 !important;
}

/* Kill GP's default header/nav — we use our own */
.site-header,
.main-navigation {
  display: none !important;
}

/* Remove all GP spacing between header and page content */
.site-content,
#primary,
.site-main,
.site-content article {
  padding: 0 !important;
  margin: 0 !important;
}

/* Transparent article bg so body colour doesn't bleed through any residual gap */
.separate-containers .inside-article {
  background-color: transparent !important;
}

/* Override GP's gray body bg — prevents any gap from showing as a visible strip */
body {
  background-color: #fff !important;
}

/* =============================================
   CUSTOM HEADER
   ============================================= */

.ll-notice-strip {
  background: var(--ll-forest);
  color: rgba(247,242,242,0.85);
  text-align: center;
  font-family: 'Lato', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 0.55rem 1rem;
  position: sticky;
  top: 0;
  z-index: 200;
}

.ll-notice-strip a {
  color: var(--ll-gold);
  text-decoration: none;
  margin-left: 0.6em;
  transition: opacity 0.2s;
}

.ll-notice-strip a:hover { opacity: 0.8; }

.ll-notice-short { display: none; }

.ll-header {
  background: #fff;
  position: sticky;
  top: 2rem; /* offset by notice strip height */
  z-index: 100;
}

/* When the WordPress admin bar is showing (logged-in users), push the sticky
   notice strip + header down so they don't slide under the fixed admin bar.
   Admin bar is 32px on desktop, 46px on small screens. */
.admin-bar .ll-notice-strip { top: 32px; }
.admin-bar .ll-header { top: calc(2rem + 32px); }
@media screen and (max-width: 782px) {
  .admin-bar .ll-notice-strip { top: 46px; }
  .admin-bar .ll-header { top: calc(2rem + 46px); }
}

.ll-header-inner {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 2rem;
  display: flex;
  align-items: center;
  gap: 2rem;
  height: 80px;
}

.ll-logo-link {
  text-decoration: none;
  display: flex;
  flex-direction: column;
  line-height: 1.1;
  flex-shrink: 0;
}

.ll-logo-text {
  font-family: 'Playfair Display', serif;
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--ll-forest);
  letter-spacing: 0.05em;
}

.ll-logo-tagline {
  font-family: 'Lato', sans-serif;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ll-gold);
  margin-top: 0.1rem;
}

.ll-header img.custom-logo {
  max-height: 64px;
  width: auto;
}

.ll-main-nav {
  flex: 1;
  display: flex;
  justify-content: flex-end;
  align-items: center;
}

.ll-nav-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.ll-nav-list li a {
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: 0.72rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ll-forest);
  text-decoration: none;
  padding: 0.5rem 0.85rem;
  display: block;
  transition: color 0.2s;
  position: relative;
}

.ll-nav-list li a:hover,
.ll-nav-list li.current-menu-item > a {
  color: var(--ll-gold);
}

.ll-nav-list li.current-menu-item > a::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0.85rem;
  right: 0.85rem;
  height: 2px;
  background: var(--ll-gold);
}

.ll-header-cta {
  flex-shrink: 0;
  background: var(--ll-gold);
  color: var(--ll-forest);
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  font-size: 0.88rem;
  padding: 0.65rem 1.5rem;
  text-decoration: none;
  border: 1px solid var(--ll-gold);
  transition: all 0.22s ease;
  white-space: nowrap;
}

.ll-header-cta:hover {
  background: var(--ll-forest);
  color: var(--ll-cream);
  border-color: var(--ll-forest);
}

/* Mobile menu toggle */
.ll-menu-toggle {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.5rem;
}

.ll-menu-toggle-bar {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--ll-forest);
  transition: all 0.2s;
}

@media (max-width: 900px) {
  .ll-menu-toggle { display: flex; }
  .ll-header-cta { display: none; }

  .ll-nav-list {
    display: none;
    position: absolute;
    top: 80px;
    left: 0;
    right: 0;
    background: #fff;
    flex-direction: column;
    align-items: flex-start;
    padding: 1rem 2rem;
    border-top: 1px solid rgba(18,46,31,0.1);
    box-shadow: 0 8px 24px rgba(0,0,0,0.08);
    gap: 0;
  }

  .ll-nav-list.is-open { display: flex; }
  .ll-nav-list li a {
    padding: 0.9rem 0;
    font-size: 0.9rem;
    letter-spacing: 0.12em;
    border-bottom: 1px solid rgba(18,46,31,0.07);
    width: 100%;
    display: block;
  }
  /* position relative on header (sticky), not nav — makes dropdown full-width */
  .ll-header { position: sticky; }
  .ll-main-nav { position: static; }
}

/* Brand tokens */
:root {
  --ll-cream: #F7F2F2;
  --ll-gold: #B89A49;
  --ll-ink: #1A1A1A;
  --ll-sage: #7C8C58;
  --ll-forest: #122E1F;
}

/* Base */
body {
  font-family: 'Lato', sans-serif;
  color: var(--ll-ink);
  background: var(--ll-cream);
  font-size: 17px;
  line-height: 1.7;
}

h1, h2, h3, h4, h5, h6,
.entry-title,
.page-title {
  font-family: 'Playfair Display', serif;
  color: var(--ll-forest);
  line-height: 1.2;
}

/* Navigation */
.main-navigation .main-nav ul li a,
.main-navigation .menu-toggle {
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ll-forest);
}

.main-navigation .main-nav ul li a:hover,
.main-navigation .main-nav ul li.current-menu-item > a {
  color: var(--ll-gold);
}

/* Site header */
.site-header {
  background: var(--ll-cream);
  border-bottom: 1px solid rgba(18,46,31,0.12);
}

.site-branding .site-title a {
  font-family: 'Playfair Display', serif;
  color: var(--ll-forest);
  font-weight: 700;
  font-size: 1.5rem;
  letter-spacing: 0.04em;
}

/* Buttons — SHAPE & TYPE only.
   Button COLOUR is owned natively by GeneratePress: the brand gold/forest is set
   in Customizer → Colors → Buttons (the form_button_* settings), which GP renders
   as a.wp-block-button__link:not(.has-background) so an editor's own colour pick
   still wins. We only add the brand typography + square corners here. */
.wp-block-button__link,
.button,
button[type="submit"] {
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  border-radius: 0;
  padding: 0.9rem 2.25rem;
  transition: all 0.25s ease;
}

/* Notice strip */
.ll-notice-strip {
  background: var(--ll-forest);
  color: var(--ll-cream);
  text-align: center;
  font-size: 0.8rem;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 0.6rem 1rem;
}

.ll-notice-strip a {
  color: var(--ll-gold);
  text-decoration: none;
  margin-left: 0.5em;
}

/* Hero */
.ll-hero {
  position: relative;
  min-height: 92vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--ll-forest);
}

.ll-hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-image: url('https://images.pexels.com/photos/1325751/pexels-photo-1325751.jpeg');
  opacity: 0.45;
}

.ll-hero-content {
  position: relative;
  z-index: 2;
  max-width: 700px;
  padding: 4rem 2rem;
  color: var(--ll-cream);
}

.ll-hero-eyebrow {
  font-family: 'Lato', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ll-gold);
  margin-bottom: 1.25rem;
  display: block;
}

.ll-hero-h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.4rem, 5vw, 4rem);
  font-weight: 700;
  color: var(--ll-cream);
  line-height: 1.1;
  margin: 0 0 1.5rem;
}

.ll-hero-lede {
  font-size: 1.15rem;
  line-height: 1.65;
  color: rgba(247,242,242,0.88);
  margin-bottom: 2.25rem;
}

.ll-hero-actions {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  align-items: center;
}

.ll-btn-primary {
  display: inline-block;
  background: var(--ll-gold);
  color: var(--ll-forest);
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.02em;
  padding: 1rem 2.25rem;
  border: 1px solid var(--ll-gold);
  text-decoration: none;
  transition: all 0.25s ease;
}

.ll-btn-primary:hover {
  background: var(--ll-forest);
  color: var(--ll-cream);
  border-color: var(--ll-cream);
}

.ll-btn-outline {
  display: inline-block;
  border: 1px solid rgba(247,242,242,0.6);
  color: var(--ll-cream);
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  font-size: 1rem;
  padding: 0.9rem 2rem;
  text-decoration: none;
  transition: all 0.25s ease;
}

.ll-btn-outline:hover {
  background: var(--ll-cream);
  color: var(--ll-forest);
}

/* Trust strip */
.ll-trust-strip {
  background: var(--ll-forest);
  color: rgba(247,242,242,0.75);
  text-align: center;
  font-size: 0.78rem;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 1.1rem 2rem;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2.5rem;
  flex-wrap: wrap;
}

.ll-trust-strip span {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.ll-trust-strip .ll-trust-dot {
  color: var(--ll-gold);
  font-size: 1rem;
}

/* ---- Editable contact / plan-your-trip info column (replaces old locked HTML block) ----
   IMPORTANT: GeneratePress wraps every group block in an extra .wp-block-group__inner-container,
   so we must target the text elements (.ll-contact-value etc.) DIRECTLY — selectors like
   ".ll-contact-block > *" only hit that hidden wrapper and do nothing. */
.ll-contact-cols { gap: 4rem; }
.ll-contact-cols .wp-block-column > * { margin-top: 0; }     /* neutralise column block-gap */

/* GeneratePress adds ".site-main .wp-block-group__inner-container { padding: 40px }" to EVERY
   core group block in the content. That inflated the email/phone blocks (tall + indented) and
   squeezed the section width. Zero it for our contact-section groups (specificity 0,3,0 > GP's 0,2,0). */
.site-main .ll-section > .wp-block-group__inner-container,
.site-main .ll-section-inner > .wp-block-group__inner-container,
.site-main .ll-contact-block > .wp-block-group__inner-container { padding: 0; }

.ll-contact-block { margin: 0 0 1.5rem; }
.ll-contact-heading {
  font-family: 'Playfair Display', serif; color: var(--ll-forest);
  font-size: 1.3rem; margin: 0 0 1.5rem;
}
.ll-contact-label {
  font-family: 'Lato', sans-serif; font-size: 0.72rem; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.12em; color: var(--ll-gold); margin: 0 0 0.3rem;
}
.ll-contact-block .ll-contact-value { margin: 0; }           /* neutralise label→value block-gap */
.ll-contact-value, .ll-contact-value a {
  color: var(--ll-forest); font-size: 1.05rem; font-weight: 700; text-decoration: none;
}
.ll-contact-value a:hover { color: var(--ll-gold); }

/* Response-time callout — cream card with gold left border */
.ll-contact-note {
  background: var(--ll-cream); border-left: 3px solid var(--ll-gold);
  padding: 1.5rem; color: var(--ll-ink); font-size: 0.9rem; line-height: 1.65;
}
.ll-contact-cols .ll-contact-note { margin-top: 1.5rem; }

/* Trust badges — dark forest box with gold diamonds (matches the original design) */
.ll-trust-list {
  list-style: none; padding: 1.5rem; background: var(--ll-forest); margin: 0;  /* kill GP's ol,ul 3em left margin */
  display: flex; flex-direction: column; gap: 0.85rem;
  font-family: 'Lato', sans-serif; font-size: 0.78rem; font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase; color: rgba(247,242,242,0.85);
}
.ll-contact-cols .ll-trust-list { margin-top: 1.5rem; }
.ll-trust-list li { margin: 0; }
.ll-trust-list li::before { content: "\25C6"; color: var(--ll-gold); margin-right: 0.5rem; }
.ll-trust-list a { color: inherit; text-decoration: none; }
@media (max-width: 768px) { .ll-contact-cols { gap: 2rem; } }

/* Section base */
.ll-section {
  padding: 5rem 1.5rem;
}

.ll-section-inner {
  max-width: 1140px;
  margin: 0 auto;
}

.ll-section-eyebrow {
  font-family: 'Lato', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ll-gold);
  margin-bottom: 0.75rem;
  display: block;
}

.ll-section-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3.5vw, 2.8rem);
  color: var(--ll-forest);
  margin-bottom: 1rem;
}

.ll-section-lede {
  font-size: 1.05rem;
  color: var(--ll-ink);
  max-width: 640px;
  line-height: 1.7;
  margin-bottom: 3rem;
}

/* What we do — 3 columns */
.ll-values-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 2.5rem;
  margin-top: 3rem;
}

.ll-value-card {
  padding: 2.5rem 2rem;
  border-top: 3px solid var(--ll-gold);
  background: white;
}

.ll-value-card h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem;
  color: var(--ll-forest);
  margin: 1rem 0 0.75rem;
}

.ll-value-icon {
  font-size: 1.5rem;
  color: var(--ll-gold);
}

/* Itinerary cards */
.ll-cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 2rem;
  margin-top: 2.5rem;
}

.ll-card {
  background: white;
  overflow: hidden;
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.ll-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(18,46,31,0.12);
}

.ll-card-img {
  width: 100%;
  height: 220px;
  object-fit: cover;
  display: block;
}

.ll-card-body {
  padding: 1.5rem;
}

.ll-card-region {
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ll-sage);
  margin-bottom: 0.4rem;
  display: block;
}

.ll-card-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  color: var(--ll-forest);
  margin: 0 0 0.5rem;
}

.ll-card-meta {
  font-size: 0.82rem;
  color: #666;
  margin-bottom: 1rem;
}

.ll-card-link {
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--ll-gold);
  text-decoration: none;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.ll-card-link:hover { color: var(--ll-forest); }

/* Why Lyons Links — 2-col */
.ll-why-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
  margin-top: 2rem;
}

@media (max-width: 768px) {
  .ll-why-grid { grid-template-columns: 1fr; gap: 2rem; }
}

.ll-why-proof {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0;
}

.ll-why-proof li {
  padding: 0.75rem 0 0.75rem 1.5rem;
  border-bottom: 1px solid rgba(18,46,31,0.1);
  position: relative;
  font-size: 1rem;
  color: var(--ll-ink);
}

.ll-why-proof li::before {
  content: '◆';
  position: absolute;
  left: 0;
  color: var(--ll-gold);
  font-size: 0.6rem;
  top: 1.1rem;
}

.ll-why-img {
  width: 100%;
  height: 420px;
  object-fit: cover;
}

/* Testimonials */
.ll-testimonials {
  background: var(--ll-cream);
  padding: 5rem 1.5rem;
}

.ll-testimonials-inner {
  max-width: 1140px;
  margin: 0 auto;
}

.ll-pullquote {
  border-left: 4px solid var(--ll-gold);
  padding: 1.5rem 2rem;
  margin-bottom: 3rem;
  background: white;
}

.ll-pullquote blockquote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.15rem, 2.5vw, 1.5rem);
  color: var(--ll-forest);
  margin: 0 0 1rem;
  line-height: 1.4;
  font-style: italic;
}

.ll-pullquote cite {
  font-size: 0.82rem;
  font-family: 'Lato', sans-serif;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ll-sage);
  font-style: normal;
}

.ll-review-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
}

.ll-review-card {
  background: white;
  padding: 1.5rem;
  border-top: 2px solid var(--ll-sage);
}

.ll-review-card p {
  font-style: italic;
  font-size: 0.92rem;
  color: var(--ll-ink);
  margin-bottom: 0.75rem;
}

.ll-review-card cite {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ll-sage);
  font-style: normal;
}

/* Ryder Cup feature */
.ll-ryder-block {
  background: var(--ll-forest);
  padding: 5rem 2rem;
  text-align: center;
}

.ll-ryder-block .ll-section-eyebrow { color: var(--ll-gold); }

.ll-ryder-block h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  color: var(--ll-cream);
  margin-bottom: 1.25rem;
}

.ll-ryder-block p {
  color: rgba(247,242,242,0.82);
  font-size: 1.05rem;
  max-width: 540px;
  margin: 0 auto 2rem;
}

/* Newsletter band */
.ll-newsletter {
  background: var(--ll-cream);
  border-top: 2px solid rgba(18,46,31,0.1);
  border-bottom: 2px solid rgba(18,46,31,0.1);
  padding: 5rem 2rem;
  text-align: center;
}

.ll-newsletter h2 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  color: var(--ll-forest);
  margin-bottom: 0.75rem;
}

.ll-newsletter p {
  font-size: 1rem;
  color: #555;
  margin-bottom: 2rem;
}

.ll-newsletter-form {
  display: flex;
  gap: 0.75rem;
  justify-content: center;
  flex-wrap: wrap;
  max-width: 500px;
  margin: 0 auto;
}

.ll-newsletter-form input[type="email"] {
  flex: 1;
  min-width: 220px;
  padding: 0.85rem 1.25rem;
  border: 1px solid rgba(18,46,31,0.3);
  background: white;
  font-size: 0.95rem;
  font-family: 'Lato', sans-serif;
  outline: none;
}

.ll-newsletter-form input[type="email"]:focus {
  border-color: var(--ll-forest);
}

.ll-newsletter-form button {
  padding: 0.85rem 1.75rem;
  background: var(--ll-forest);
  color: var(--ll-cream);
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}

.ll-newsletter-form button:hover { background: var(--ll-gold); color: var(--ll-forest); }

/* Footer */
.site-footer {
  background: var(--ll-forest);
  color: rgba(247,242,242,0.75);
}

.site-footer a {
  color: rgba(247,242,242,0.75);
  text-decoration: none;
  transition: color 0.2s;
}

.site-footer a:hover { color: var(--ll-gold); }

.ll-footer-inner {
  max-width: 1140px;
  margin: 0 auto;
  padding: 4rem 1.5rem 2rem;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 3rem;
}

@media (max-width: 768px) {
  .ll-footer-inner { grid-template-columns: 1fr; gap: 2rem; }
}

.ll-footer-brand h3 {
  font-family: 'Playfair Display', serif;
  color: var(--ll-cream);
  font-size: 1.4rem;
  margin-bottom: 0.5rem;
}

.ll-footer-brand p {
  font-size: 0.88rem;
  line-height: 1.6;
  margin-bottom: 1rem;
}

.ll-footer-tagline {
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ll-gold);
}

.ll-footer-nav h4, .ll-footer-contact h4 {
  font-family: 'Lato', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--ll-gold);
  margin-bottom: 1rem;
}

.ll-footer-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.ll-footer-nav ul li {
  margin-bottom: 0.5rem;
  font-size: 0.88rem;
}

.ll-footer-contact p {
  font-size: 0.88rem;
  margin-bottom: 0.4rem;
}

.ll-footer-bottom {
  border-top: 1px solid rgba(247,242,242,0.1);
  text-align: center;
  padding: 1.25rem 1.5rem;
  font-size: 0.75rem;
  color: rgba(247,242,242,0.45);
  display: flex;
  justify-content: space-between;
  max-width: 1140px;
  margin: 0 auto;
  flex-wrap: wrap;
  gap: 0.5rem;
}

/* Page hero (inner pages) */
.ll-page-hero {
  background: var(--ll-forest);
  padding: 5rem 2rem 4rem;
  text-align: center;
}

.ll-page-hero h1 {
  font-family: 'Playfair Display', serif;
  color: var(--ll-cream);
  font-size: clamp(2rem, 4vw, 3.2rem);
  margin-bottom: 0.75rem;
}

.ll-page-hero p {
  color: rgba(247,242,242,0.82);
  font-size: 1.1rem;
  max-width: 600px;
  margin: 0 auto;
}

/* Bg utility classes for Gutenberg blocks */
.has-ll-forest-background-color { background-color: var(--ll-forest) !important; }
.has-ll-cream-background-color { background-color: var(--ll-cream) !important; }
.has-ll-gold-background-color { background-color: var(--ll-gold) !important; }
.has-ll-sage-background-color { background-color: var(--ll-sage) !important; }
.has-ll-forest-color { color: var(--ll-forest) !important; }
.has-ll-cream-color { color: var(--ll-cream) !important; }
.has-ll-gold-color { color: var(--ll-gold) !important; }
.has-ll-sage-color { color: var(--ll-sage) !important; }

/* =============================================
   SINGLE BLOG POST CONTENT
   ============================================= */

/* Hide legacy ll-page-hero block in post content — single.php renders its own hero */
.single .ll-page-hero { display: none !important; }

.ll-post-content p { margin-bottom: 1.6rem; }
.ll-post-content h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.6rem;
  color: var(--ll-forest);
  margin: 2.5rem 0 1rem;
  font-weight: 600;
}
.ll-post-content h3 {
  font-family: 'Playfair Display', serif;
  font-size: 1.25rem;
  color: var(--ll-forest);
  margin: 2rem 0 0.75rem;
  font-weight: 600;
}
.ll-post-content ul,
.ll-post-content ol {
  padding-left: 1.5rem;
  margin-bottom: 1.6rem;
}
.ll-post-content li { margin-bottom: 0.6rem; }
.ll-post-content blockquote {
  border-left: 3px solid var(--ll-gold);
  padding: 1rem 1.5rem;
  margin: 2rem 0;
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.2rem;
  color: var(--ll-forest);
  background: var(--ll-cream);
}
.ll-post-content a {
  color: var(--ll-forest);
  border-bottom: 1px solid var(--ll-gold);
  text-decoration: none;
}
.ll-post-content a:hover { color: var(--ll-gold); }
.ll-post-content img {
  width: 100%;
  height: auto;
  margin: 2rem 0;
}

/* Single post — make #main full-width like blog archive */
.single #main,
.single-itinerary #main {
  flex: 1 1 100% !important;
  width: 100% !important;
  min-width: 0;
}

/* ITINERARY CONTENT */
.ll-itinerary-content h2 {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  color: var(--ll-forest);
  margin: 3rem 0 0.875rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(18,46,31,0.1);
  font-weight: 600;
}
.ll-itinerary-content h2:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}
.ll-itinerary-content p {
  margin-bottom: 1.4rem;
  font-size: 1.05rem;
  line-height: 1.8;
  color: rgba(26,26,26,0.85);
}

/* ---- Block-editor canvas: brand typography for plain core blocks ----
   Posts and every CPT (itineraries + any added later) are plain core heading/
   paragraph blocks whose front-end look comes from .ll-post-content /
   .ll-itinerary-content wrappers absent in the editor. Mirror that here for ALL
   post types EXCEPT pages — pages are built from GenerateBlocks sections that own
   their own sizing via .ll-* classes, so we exclude them to avoid clobbering those.
   Scoped via the canvas body's post-type class. Loaded via enqueue_block_assets. */
.editor-styles-wrapper:not(.post-type-page) :is(h1, h2, h3, h4) {
  font-family: 'Playfair Display', serif;
  color: var(--ll-forest);
  font-weight: 600;
}
.editor-styles-wrapper:not(.post-type-page) :is(p, li) {
  font-family: 'Lato', sans-serif;
  color: rgba(26,26,26,0.85);
}
/* Use margin-block (vertical only) — a `margin: x 0 y` shorthand would zero the
   horizontal margins and override the editor's auto-centring, pushing headings to
   the left gutter while paragraphs stay centred. */
.editor-styles-wrapper:not(.post-type-page) h2 { font-size: 1.5rem; margin-block: 2.5rem 0.875rem; }
.editor-styles-wrapper:not(.post-type-page) h3 { font-size: 1.25rem; margin-block: 2rem 0.75rem; }
.editor-styles-wrapper:not(.post-type-page) p  { font-size: 1.05rem; line-height: 1.8; }
.editor-styles-wrapper:not(.post-type-page) blockquote {
  border-left: 3px solid var(--ll-gold);
  font-family: 'Playfair Display', serif;
  font-style: italic;
  color: var(--ll-forest);
}
/* Itinerary editor only: the "Day" section separators — mirror .ll-itinerary-content h2
   (a hairline rule + generous spacing above each heading) so the editor reads like the
   front-end day-by-day layout. Blog posts (.post-type-post) keep the plainer .ll-post-content look. */
.editor-styles-wrapper.post-type-itinerary h2 {
  margin-block: 3rem 0.875rem; /* vertical only — preserve the editor's horizontal auto-centring */
  padding-top: 2rem;
  border-top: 1px solid rgba(18,46,31,0.1);
}
.editor-styles-wrapper.post-type-itinerary .is-root-container > h2:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: none;
}

/* =============================================
   MOBILE FIXES
   ============================================= */

@media (max-width: 600px) {
  .ll-notice-long { display: none; }
  .ll-notice-short { display: inline; }

  /* Force all auto-fill grids to single column */
  .ll-values-grid,
  .ll-cards-grid {
    grid-template-columns: 1fr !important;
  }

  /* Reduce section padding on phones */
  section[style*="padding:5rem"],
  section[style*="padding: 5rem"],
  section[style*="padding:6rem"],
  section[style*="padding: 6rem"] {
    padding-top: 3rem !important;
    padding-bottom: 3rem !important;
  }

  /* Tighten horizontal padding */
  section[style*="padding:5rem 2.5rem"],
  section[style*="padding:4rem 2.5rem"],
  section[style*="padding:6rem 2.5rem"] {
    padding-left: 1.25rem !important;
    padding-right: 1.25rem !important;
  }

  /* Hero sections — reduce top padding so text doesn't sit too low */
  section[style*="min-height"] > div[style*="padding:8rem"],
  section[style*="min-height"] > div[style*="padding:7rem"] {
    padding-top: 5rem !important;
    padding-bottom: 2.5rem !important;
  }

  /* Itinerary enquire CTA button — full width on phone */
  .single-itinerary section:last-of-type a[style*="display:inline-block"] {
    display: block !important;
    text-align: center;
  }
}

/* =========================================================================
   Mobile responsiveness fixes (2026-06-03)
   ========================================================================= */

/* Migrated blog posts came from Visual Composer (old lyonslinks.com). Their
   image wrappers carry a hard-coded desktop width (e.g. inline width:1024px)
   and, without VC's own stylesheet, break out of the content column on every
   screen size. Constrain the VC wrappers to their container and keep all
   post images fluid. */
.vce-single-image-figure-inner,
.vce-single-image-inner,
.vce-single-image-figure,
.vce-single-image-wrapper,
.vce-single-image-container,
.vce-row-container,
.vce-row,
.vce-col {
  max-width: 100% !important;
}
.vce-single-image-figure-inner {
  width: auto !important;
}
/* Keep content/blog images fluid — but leave images that set their own inline
   height alone (hero cover images use object-fit + height:100% to fill their
   section; credential logos use a fixed height:64px). Forcing height:auto on
   those collapsed the heroes and blew sized logos up to natural width. The VC
   blog images carry no inline height, so they still get the fluid treatment. */
/* :where() keeps this at zero specificity (and no !important) so any sized-image
   class — logos, cover images — overrides it with an ordinary rule. GeneratePress's
   base img{max-width:100%;height:auto} backs this up for general/VC content images. */
:where(.entry-content img:not([style*="object-fit"]):not([style*="height:"])),
:where(.editor-styles-wrapper img:not([style*="object-fit"]):not([style*="height:"])),
:where(article img:not([style*="object-fit"]):not([style*="height:"])),
:where([class*="vce-single-image"] img) {
  max-width: 100%;
  height: auto;
}

/* Full-bleed hero images on every page: fill the hero section edge-to-edge and
   top-to-bottom, cropping as needed. */
.ll-hero > img,
.ll-hero-bg,
section[style*="min-height"] > img[style*="object-fit"] {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}

/* Template heroes (blog index, category archive, single post, single itinerary).
   Layout + gradient live in this class; only the dynamic image URL is passed inline via the
   --ll-hero-img custom property. We deliberately do NOT use an <img> for heroes: image
   optimisers (Imagify next-gen) and CDN image features strip inline style/class off <img>
   tags, which broke the old <img>-based heroes. See reference_imagify-staging-gotchas. */
.ll-posthero {
  position: relative;
  overflow: hidden;
  min-height: 52vh;
  background: var(--ll-forest) var(--ll-hero-img, none) center / cover no-repeat;
}
.ll-posthero--sm { min-height: 42vh; }  /* category archive */
.ll-posthero--md { min-height: 55vh; }  /* single post */
.ll-posthero--lg { min-height: 60vh; }  /* single itinerary */
.ll-posthero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(18,46,31,0.42) 0%, rgba(18,46,31,0.88) 100%);
}
.ll-posthero > * { position: relative; z-index: 2; }

/* Card thumbnails sized via the wrapper class, NOT the img's own inline style — same reason
   (Imagify/CDN strip the <img>'s style/class). Mirrors .ll-iticard/.ll-coursecard below. */
.ll-bcard-thumb img,
.ll-itin-card img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}

/* Several hand-coded sections set grid-template-columns inline with no class,
   so they can't carry their own media query. Stack those fixed two/three-column
   grids into a single column on phones (Contact form|info = 3fr 2fr, Ryder Cup
   and About info blocks = 1fr 1fr). auto-fit/auto-fill grids already reflow. */
@media (max-width: 768px) {
  [style*="grid-template-columns:3fr 2fr"],
  [style*="grid-template-columns: 3fr 2fr"],
  [style*="grid-template-columns:2fr 3fr"],
  [style*="grid-template-columns: 2fr 3fr"],
  [style*="grid-template-columns:1fr 1fr"],
  [style*="grid-template-columns: 1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }
}

/* Eyebrow with the gold lead line + gold italic accent — used by the GB heroes.
   (The core-block Cover POC CSS that used to live here was removed as dead code.) */
.ll-eyebrow {
  font-family: 'Lato', sans-serif;
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ll-gold);
  display: flex; align-items: center; gap: 0.75rem; margin: 0 0 2rem;
}
.ll-eyebrow::before {
  content: ""; height: 1px; width: 40px; background: var(--ll-gold); display: inline-block; flex: 0 0 auto;
}
.ll-accent { color: var(--ll-gold); font-style: italic; font-weight: 500; }

/* =========================================================================
   GenerateBlocks HYBRID hero — GB Container/Headline/Button blocks (editable
   structure + image) carrying brand classes; this CSS supplies the exact look
   (double-gradient overlay, Playfair headline w/ gold italic accent, etc.).
   ========================================================================= */
.ll-gbhero { position: relative; overflow: hidden; }
.ll-gbhero::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(18,46,31,0.82) 0%, rgba(18,46,31,0.65) 55%, rgba(18,46,31,0.4) 100%),
    linear-gradient(180deg, rgba(18,46,31,0.3) 0%, rgba(18,46,31,0.55) 100%);
}
.ll-gbhero > .gb-inside-container { position: relative; z-index: 2; }
.ll-gbhero-inner { max-width: 700px; margin-right: auto; }
.ll-gbhero-inner > .gb-inside-container { padding: 0; }
.ll-gbhero-h1 {
  font-family: 'Playfair Display', serif; font-size: clamp(2.8rem, 6vw, 4.5rem); font-weight: 700;
  color: var(--ll-cream); line-height: 1.08; margin: 0 0 1.5rem; width: 100%;
}
.ll-gbhero-h1 .ll-accent { color: var(--ll-gold); font-style: italic; font-weight: 500; }
.ll-gbhero-lede {
  font-size: 1.15rem; line-height: 1.7; color: rgba(247,242,242,0.88); max-width: 540px; margin: 0 0 1.5rem;
}
.ll-gbhero-credibility {
  display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2rem; margin: 0 0 2.5rem;
  font-family: 'Lato', sans-serif; font-size: 0.8rem; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--ll-gold);
}
/* secondary CTA = underlined text link (GB button carrying .ll-textlink) */
.ll-gbhero a.ll-textlink.gb-button {
  background: transparent; border: none; border-bottom: 1px solid var(--ll-gold); border-radius: 0;
  color: var(--ll-cream); font-family: 'Lato', sans-serif; font-weight: 700; font-size: 0.78rem;
  letter-spacing: 0.15em; text-transform: uppercase; padding: 0 0 2px; transition: color .2s;
}
.ll-gbhero a.ll-textlink.gb-button:hover { color: var(--ll-gold); }
.ll-gbhero .gb-button-wrapper { display: flex; flex-wrap: wrap; align-items: center; gap: 1.5rem; }
@media (max-width: 768px) {
  .ll-gbhero > .gb-inside-container { padding: 5rem 1.5rem 3rem !important; }
}

/* ---- GB hybrid PAGE heroes (sub-pages: smaller heading, plain eyebrow) ---- */
.ll-pagehero { position: relative; overflow: hidden; }
.ll-pagehero::before {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(18,46,31,0.45) 0%, rgba(18,46,31,0.82) 100%);
}
.ll-pagehero.ll-pagehero--diag::before {
  background: linear-gradient(135deg, rgba(18,46,31,0.7) 0%, rgba(18,46,31,0.9) 100%);
}
.ll-pagehero > .gb-inside-container { position: relative; z-index: 2; }
.ll-pagehero--center, .ll-pagehero--center > .gb-inside-container { text-align: center; }
.ll-pagehero-eyebrow {
  font-family: 'Lato', sans-serif; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ll-gold); margin: 0 0 1.25rem;
}
.ll-pagehero-h1 {
  font-family: 'Playfair Display', serif; font-size: clamp(2.2rem, 5vw, 3.8rem); font-weight: 600;
  color: var(--ll-cream); line-height: 1.1; margin: 0 0 1.25rem;
}
.ll-pagehero-h1 .ll-accent { color: var(--ll-gold); font-style: italic; font-weight: 500; }
.ll-pagehero-lede {
  color: rgba(247,242,242,0.85); font-size: 1.05rem; line-height: 1.6; max-width: 580px; margin: 0;
}
.ll-pagehero--center .ll-pagehero-lede { max-width: none; margin: 0 auto; }
.ll-pagehero-subtitle {
  font-family: 'Playfair Display', serif; font-style: italic; font-size: 1.25rem; color: var(--ll-gold); margin: 0 0 1.5rem;
}
.ll-pagehero-lede--italic {
  font-family: 'Playfair Display', serif; font-style: italic; font-weight: 500; font-size: 1.2rem;
  color: rgba(247,242,242,0.88); max-width: none; margin: 0 auto; line-height: 1.5;
}
.ll-pagehero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem; margin-top: 2rem; }
.ll-pagehero-actions a.ll-btn-outline.gb-button {
  background: transparent; border: 1px solid rgba(247,242,242,0.6); border-radius: 0;
  color: var(--ll-cream); font-family: 'Playfair Display', serif; font-weight: 600; font-size: 1rem;
  padding: 0.9rem 2rem; transition: all 0.25s ease; text-transform: none; letter-spacing: 0;
}
.ll-pagehero-actions a.ll-btn-outline.gb-button:hover { background: rgba(247,242,242,0.1); border-color: var(--ll-cream); }
@media (max-width: 768px) {
  .ll-pagehero > .gb-inside-container { padding: 4.5rem 1.5rem 3rem !important; }
}

/* ---- GB card-grid sections (reusable: cream section, centered head, white cards) ---- */
.ll-cardsec-head { text-align: center; margin-bottom: 4rem; }
.ll-cardsec-head > .gb-inside-container { text-align: center; }
.ll-cardsec-eyebrow {
  font-family: 'Lato', sans-serif; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--ll-gold); margin: 0 0 1rem;
}
.ll-cardsec-sub { color: rgba(26,26,26,0.7); font-size: 1rem; margin: 0; }
.ll-cardsec-h2 {
  font-family: 'Playfair Display', serif; font-size: clamp(2rem, 4vw, 3rem); color: var(--ll-forest);
  margin: 0 0 1rem; line-height: 1.15;
}
.ll-cardsec-intro { color: rgba(26,26,26,0.7); font-size: 1.05rem; max-width: 560px; margin: 0 auto; }

/* ---- Ryder Cup "Enquire now" section — editable text (eyebrow/sub reuse .ll-cardsec-*) + GF embed ---- */
/* Pin the section's bg/width/padding here (not via GB dynamic CSS): the block is inserted
   programmatically, so GB doesn't regenerate its container CSS. Values match the GB attrs. */
.ll-enquire { background: #fff; }
.ll-enquire > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 96px 40px; }
@media (max-width: 768px) { .ll-enquire > .gb-inside-container { padding: 64px 24px; } }
.ll-enquire-head { text-align: center; margin-bottom: 2.5rem; }
.ll-enquire-head > .gb-inside-container { text-align: center; }
.ll-enquire-h2 {
  font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.6rem);
  color: var(--ll-forest); margin: 0 0 0.75rem; line-height: 1.15;
}
.ll-cardgrid > .gb-inside-container {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 2rem;
}
.ll-card { background: #fff; border-top: 2px solid var(--ll-gold); }
.ll-card-num { font-family: 'Lato', sans-serif; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--ll-gold); margin: 0 0 0.75rem; }
.ll-card-h3 { font-family: 'Playfair Display', serif; color: var(--ll-forest); font-size: 1.4rem; margin: 0 0 0.75rem; }
.ll-card-text { color: rgba(26,26,26,0.8); line-height: 1.7; margin: 0; }

/* ---- GB testimonials (featured quote + cards) ---- */
.ll-featquote { background: var(--ll-cream); border-left: 4px solid var(--ll-gold); margin-bottom: 3rem; }
.ll-featquote-text {
  font-family: 'Playfair Display', serif; font-size: clamp(1.1rem, 2.5vw, 1.5rem); color: var(--ll-forest);
  margin: 0 0 1rem; line-height: 1.4; font-style: italic;
}
.ll-cite {
  font-family: 'Lato', sans-serif; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--ll-sage); font-style: normal; display: block; margin: 0;
}
.ll-tgrid > .gb-inside-container {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem;
}
.ll-tcard { background: var(--ll-cream); border-top: 2px solid var(--ll-sage); }
.ll-tcard-text { font-style: italic; font-size: 0.92rem; color: var(--ll-ink); margin: 0 0 0.75rem; line-height: 1.65; }
.ll-tcard-cite {
  font-family: 'Lato', sans-serif; font-size: 0.72rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.1em; color: var(--ll-sage); font-style: normal; display: block; margin: 0;
}

/* ---- GB CTA band (forest, centered) ---- */
.ll-ctaband > .gb-inside-container { text-align: center; }
.ll-ctaband-h2 {
  font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.8rem); color: var(--ll-cream);
  margin: 0 0 1.25rem; line-height: 1.15;
}
.ll-ctaband-lede { color: rgba(247,242,242,0.8); font-size: 1.05rem; max-width: 520px; margin: 0 auto 2.5rem; }
.ll-ctaband .gb-button-wrapper { display: flex; justify-content: center; }

/* ---- award banner (core Image, linked) ---- */
.ll-award-banner { max-width: 1100px; margin: 0 auto; }
.ll-award-banner img { border-radius: 6px; display: block; width: 100%; height: auto; }

/* ---- GB 'Recognised by' trust strip ---- */
.ll-truststrip { border-bottom: 1px solid rgba(184,154,73,0.2); }
.ll-truststrip > .gb-inside-container {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 2.5rem; align-items: center;
}
.ll-trustitem > .gb-inside-container { display: flex; align-items: flex-start; gap: 1rem; }
.ll-trust-eyebrow { font-family: 'Lato', sans-serif; font-size: 0.65rem; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ll-gold); margin: 0 0 0.2rem; }
.ll-trust-title { font-family: 'Playfair Display', serif; color: var(--ll-forest); font-size: 1rem; line-height: 1.2; margin: 0; }
.ll-trust-title a { color: inherit; text-decoration: none; }
.ll-trust-title a:hover { color: var(--ll-gold); }
.ll-trust-sub { font-size: 0.8rem; color: rgba(26,26,26,0.6); margin: 0.2rem 0 0; }
.ll-truststrip .ll-trustitem .ll-trust-logo img { height: 64px; width: auto; }
.ll-trustitem img { flex: 0 0 auto; }
.ll-trust-logo { margin: 0; flex: 0 0 auto; }
.ll-trustitem--right > .gb-inside-container { text-align: right; }

/* ---- GB two-column text + image ---- */
.ll-twocol > .gb-inside-container { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: center; }
.ll-twocol-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.8rem); color: var(--ll-forest); margin: 0 0 1.25rem; line-height: 1.15; }
.ll-twocol-p { color: rgba(26,26,26,0.75); font-size: 1rem; line-height: 1.7; margin: 0 0 2rem; }
.ll-checklist-head { font-family: 'Playfair Display', serif; color: var(--ll-forest); font-size: 1.35rem; margin: 0 0 1.25rem; }
.ll-checklist { list-style: none; padding: 0; margin: 0 0 2rem; }
.ll-checklist li { padding: 0.8rem 0 0.8rem 1.5rem; border-bottom: 1px solid rgba(18,46,31,0.1); position: relative; font-size: 0.97rem; color: var(--ll-ink); }
.ll-checklist li::before { content: "\25C6"; position: absolute; left: 0; color: var(--ll-gold); font-size: 0.6rem; top: 1.1rem; }
.ll-twocol-img img { width: 100%; height: 480px; object-fit: cover; display: block; }
@media (max-width: 768px) {
  .ll-twocol > .gb-inside-container { grid-template-columns: 1fr; gap: 2.5rem; }
  .ll-twocol-img img { height: 320px; }
}

/* ---- GB itinerary card grid ---- */
.ll-itihead > .gb-inside-container { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 3.5rem; }
.ll-itigrid > .gb-inside-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; }
.ll-iticard { overflow: hidden; }
.ll-iticard img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.ll-iticard-body { padding: 1.5rem; }
.ll-iti-region { font-family: 'Lato', sans-serif; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--ll-sage); display: block; margin: 0 0 0.4rem; }
.ll-iti-h3 { font-family: 'Playfair Display', serif; font-size: 1.2rem; color: var(--ll-forest); margin: 0 0 0.5rem; }
.ll-iti-meta { font-size: 0.85rem; color: #666; margin: 0 0 1rem; }
.ll-iti-link, .ll-iti-link a { font-size: 0.78rem; font-weight: 700; color: var(--ll-gold); text-decoration: none; letter-spacing: 0.05em; text-transform: uppercase; }
.ll-viewall, .ll-viewall a { font-family: 'Lato', sans-serif; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ll-forest); text-decoration: none; white-space: nowrap; }
.ll-viewall a { border-bottom: 1px solid var(--ll-gold); padding-bottom: 2px; }

/* ============ RYDER CUP page GB sections ============ */
/* testimonial quote band (forest, centered) */
.ll-quoteband > .gb-inside-container { text-align: center; max-width: 900px; margin: 0 auto; }
.ll-quoteband-text { font-family: 'Playfair Display', serif; font-size: clamp(1.4rem, 3vw, 2rem); color: var(--ll-cream); font-style: italic; line-height: 1.4; margin: 0 0 1.5rem; }
.ll-quoteband-cite { font-family: 'Lato', sans-serif; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ll-gold); font-style: normal; display: block; margin: 0; }
/* price band (forest, 2-col: text | white price card) */
.ll-priceband > .gb-inside-container { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; }
.ll-priceband-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.6rem); color: var(--ll-cream); margin: 0 0 1.75rem; line-height: 1.15; }
.ll-price-details { list-style: none; padding: 0; margin: 0; }
.ll-price-details li { display: flex; gap: 0.9rem; padding: 0.95rem 0; border-bottom: 1px solid rgba(247,242,242,0.15); color: var(--ll-cream); font-size: 1.02rem; align-items: baseline; }
.ll-price-details li::before { content: "\25C6"; color: var(--ll-gold); font-size: 0.7rem; flex: 0 0 auto; }
.ll-price-details strong { font-weight: 700; color: var(--ll-cream); }
.ll-pricecard { background: #fff; box-shadow: 0 24px 60px rgba(0,0,0,0.28); text-align: center; }
.ll-pricecard > .gb-inside-container { text-align: center; }
.ll-price-eyebrow { font-family: 'Lato', sans-serif; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ll-gold); margin: 0; }
.ll-price-amount { font-family: 'Playfair Display', serif; font-size: clamp(3rem, 7vw, 4.5rem); color: var(--ll-forest); line-height: 1; margin: 1.25rem 0; }
.ll-price-note { color: rgba(26,26,26,0.65); font-size: 0.95rem; line-height: 1.6; max-width: 360px; margin: 0 auto 2rem; }
.ll-priceband .gb-button-wrapper { justify-content: center; }
/* course cards (image + title) */
.ll-coursegrid > .gb-inside-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; }
.ll-coursecard { overflow: hidden; background: #fff; }
.ll-coursecard img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.ll-coursecard-title { font-family: 'Playfair Display', serif; font-size: 1.15rem; color: var(--ll-forest); margin: 0; padding: 1.25rem 1.5rem; }
/* 100-years 2-col image height variant */
.ll-twocol-img--rc img { height: 420px !important; }
@media (max-width: 768px) {
  .ll-priceband > .gb-inside-container { grid-template-columns: 1fr; gap: 2.5rem; }
  .ll-twocol-img--rc img { height: 300px !important; }
}

/* ============ FAQ (core Details blocks) ============ */
.ll-faq { max-width: 760px; margin: 0 auto; }
.ll-faq .wp-block-details { border-bottom: 1px solid rgba(18,46,31,0.12); }
.ll-faq summary { list-style: none; cursor: pointer; padding: 1.4rem 0; display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-family: 'Playfair Display', serif; font-size: 1.15rem; color: var(--ll-forest); }
.ll-faq summary::-webkit-details-marker { display: none; }
.ll-faq summary::after { content: "+"; color: var(--ll-gold); font-size: 1.4rem; line-height: 1; flex-shrink: 0; transition: transform .2s ease; }
.ll-faq details[open] > summary::after { transform: rotate(45deg); }
.ll-faq .wp-block-details > :not(summary) { color: rgba(26,26,26,0.75); font-size: 0.97rem; line-height: 1.7; margin: 0 0 1.4rem; padding: 0; }

/* SEOPress FAQ block — same accordion styling as .ll-faq, keyed to the block type
   so any FAQ block added via the editor is styled automatically (no wrapper class).
   width:100% holds a constant 760px whether items are open or closed (no jump).
   Added 2026-06-24. */
.wp-block-wpseopress-faq-block-v2 { width: 100%; max-width: 760px; margin: 0 auto; }
.wp-block-wpseopress-faq-block-v2 .wp-block-details { border-bottom: 1px solid rgba(18,46,31,0.12); }
.wp-block-wpseopress-faq-block-v2 summary { list-style: none; cursor: pointer; padding: 1.4rem 0; display: flex; justify-content: space-between; align-items: center; gap: 1rem; font-family: 'Playfair Display', serif; font-size: 1.15rem; color: var(--ll-forest); }
.wp-block-wpseopress-faq-block-v2 summary::-webkit-details-marker { display: none; }
.wp-block-wpseopress-faq-block-v2 summary::after { content: "+"; color: var(--ll-gold); font-size: 1.4rem; line-height: 1; flex-shrink: 0; transition: transform .2s ease; }
.wp-block-wpseopress-faq-block-v2 details[open] > summary::after { transform: rotate(45deg); }
.wp-block-wpseopress-faq-block-v2 .wp-block-details > :not(summary) { color: rgba(26,26,26,0.75); font-size: 0.97rem; line-height: 1.7; margin: 0 0 1.4rem; padding: 0; }

/* ============ ABOUT page GB sections ============ */
/* values grid (label + statement cards) */
.ll-vgrid > .gb-inside-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 2rem; }
.ll-vcard { background: var(--ll-cream); border-top: 2px solid var(--ll-gold); }
.ll-vcard-label { font-family: 'Lato', sans-serif; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ll-gold); margin: 0 0 0.5rem; }
.ll-vcard-text { font-family: 'Playfair Display', serif; font-size: 1rem; color: var(--ll-forest); margin: 0; line-height: 1.5; }
/* story (narrow text + button) */
.ll-story-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.6rem, 3vw, 2.4rem); color: var(--ll-forest); margin: 0 0 1.25rem; }
.ll-story-p { font-size: 1.05rem; line-height: 1.75; color: var(--ll-ink); margin: 0 0 2rem; }

/* team grid (member photo + name + role) */
.ll-teamgrid > .gb-inside-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 2rem; max-width: 920px; margin: 0 auto; }
.ll-member > .gb-inside-container { text-align: center; }
.ll-member img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; margin-bottom: 0.75rem; }
.ll-member-name { font-family: 'Playfair Display', serif; font-size: 1rem; color: var(--ll-forest); margin: 0; }
.ll-member-role { font-size: 0.72rem; color: var(--ll-sage); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; margin: 0.2rem 0 0; }
/* intro + co-owners 2-col */
.ll-intro-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.8rem); color: var(--ll-forest); margin: 0 0 1.25rem; }
.ll-intro-p { font-size: 1.05rem; line-height: 1.75; color: var(--ll-ink); max-width: 700px; margin: 0 0 3rem; }
.ll-owners > .gb-inside-container { display: grid; grid-template-columns: 1fr 1fr; gap: 5rem; align-items: start; padding-top: 3rem; border-top: 1px solid rgba(18,46,31,.08); }
.ll-owner-bio { font-size: 1rem; line-height: 1.75; color: var(--ll-ink); margin: 0 0 2rem; }
.ll-owner-photos > .gb-inside-container { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.ll-owner-photos img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.ll-reviews-banner { max-width: 760px; margin: 0 0 2.5rem; }
.ll-reviews-banner img { border-radius: 4px; display: block; width: 100%; height: auto; }
@media (max-width: 768px) { .ll-owners > .gb-inside-container { grid-template-columns: 1fr; gap: 2.5rem; } }

/* =========================================================================
   Form + misc styles — moved here from inline wp_head <style> blocks
   (enqueued + cacheable; previously rendered inline on every page load).
   ========================================================================= */
/* archive.php outputs a bare <main id="main">; make it fill the row like /blog/ */
body.archive #content > #main { flex-grow: 1; width: 100%; max-width: none; }

/* MC4WP newsletter form (form ID 580) */
.mc4wp-form .ll-newsletter-fields { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; max-width: 480px; margin: 0 auto; }
.mc4wp-form input[type="email"]:focus { outline: none; border-color: var(--ll-gold); }
.mc4wp-response { margin-top: 1.1rem; font-family: 'Lato', sans-serif; font-size: .92rem; line-height: 1.5; }
.mc4wp-response .mc4wp-alert p { margin: .25rem 0; }
.mc4wp-success, .mc4wp-alert.mc4wp-success { color: var(--ll-forest); font-weight: 700; }
.mc4wp-error, .mc4wp-alert.mc4wp-error { color: #a3382f; }

/* Gravity Forms (Contact = id 1, Ryder Cup = id 2) — brand styling, legacy "gravity" theme */
.gform_wrapper .gform_fields { grid-row-gap: 1.25rem; grid-column-gap: 1rem; }
.gform_wrapper .gfield_label { font-family: 'Lato', sans-serif; font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em; color: var(--ll-forest); margin-bottom: .4rem; }
.gform_wrapper .ginput_container input[type=text], .gform_wrapper .ginput_container input[type=email], .gform_wrapper .ginput_container input[type=tel], .gform_wrapper .ginput_container input[type=number], .gform_wrapper .ginput_container textarea, .gform_wrapper .ginput_container select { width: 100%; padding: .8rem 1rem !important; border: 1px solid rgba(18,46,31,.3) !important; background: var(--ll-cream) !important; font-family: 'Lato', sans-serif !important; font-size: .95rem !important; color: var(--ll-ink); box-sizing: border-box; border-radius: 0 !important; }
.gform_wrapper .ginput_container textarea { resize: vertical; min-height: 130px; }
.gform_wrapper .ginput_container input:focus, .gform_wrapper .ginput_container textarea:focus, .gform_wrapper .ginput_container select:focus { outline: none; border-color: var(--ll-gold) !important; }
.gform_wrapper .gfield_radio { display: flex !important; gap: 1.5rem; flex-wrap: wrap; padding-top: .3rem; }
.gform_wrapper .gfield_radio .gchoice { display: flex; align-items: center; gap: .4rem; flex: 0 0 auto; }
.gform_wrapper .gfield_radio .gchoice input { margin: 0; flex: 0 0 auto; }
.gform_wrapper .gfield_radio label { font-family: 'Lato', sans-serif; font-size: .95rem; color: var(--ll-ink); text-transform: none; letter-spacing: 0; font-weight: 400; margin: 0; white-space: nowrap; }
.gform_wrapper .gform_footer { margin-top: .5rem; padding: 0; }
.gform_wrapper .gform_footer input[type=submit], .gform_wrapper .gform-button, .gform_wrapper button.gform_button { display: inline-block; background: var(--ll-gold) !important; color: var(--ll-forest) !important; font-family: 'Playfair Display', serif !important; font-weight: 600 !important; font-size: 1rem !important; padding: 1rem 2.25rem !important; border: 1px solid var(--ll-gold) !important; border-radius: 0 !important; cursor: pointer; letter-spacing: .02em; transition: all .25s ease; width: auto !important; }
.gform_wrapper .gform_footer input[type=submit]:hover, .gform_wrapper .gform-button:hover, .gform_wrapper button.gform_button:hover { background: var(--ll-forest) !important; color: var(--ll-cream) !important; border-color: var(--ll-cream) !important; }
.gform_wrapper .gfield_required { color: var(--ll-gold); }
.gform_wrapper .gfield_validation_message, .gform_wrapper .validation_message { color: #a3382f; font-family: 'Lato', sans-serif; background: none; border: none; padding: .25rem 0 0; }
.gform_wrapper .gform_validation_errors { font-family: 'Lato', sans-serif; }
.gform_confirmation_message { font-family: 'Lato', sans-serif; color: var(--ll-forest); }

/* Fix WP core gotcha: html :where([style*="border-color"]){border-style:solid} substring-
   matches transition:border-color on inline-styled nav links → phantom border. Re-assert
   no border on the three unstyled sides (keeps the intended bottom underline). */
a[style*="transition:border-color"] { border-top-style: none !important; border-right-style: none !important; border-left-style: none !important; }

/* About co-owner name headings (intro section) */
.ll-owner-name { font-family: 'Playfair Display', serif; color: var(--ll-forest); font-size: 1.5rem; margin: 0 0 .75rem; }

/* =========================================================================
   Hero eyebrows on photographic backgrounds — mobile legibility
   The small muted-gold kicker (e.g. "FROM THE ROAD") sits over busy hero
   images and washes out on phones. Add a subtle shadow for contrast at all
   sizes, and on small screens bump the size a touch + tighten the tracking so
   it reads cleanly. Eyebrows on solid cream/white sections are left as-is.
   Covers: homepage hero (.ll-hero-eyebrow), GB sub-page heroes
   (.ll-pagehero-eyebrow), and the blog-index + single-post heroes
   (.ll-posthero-kicker, applied to the inline kickers in home.php/single.php).
   ========================================================================= */
.ll-posthero-kicker {
  font-family: 'Lato', sans-serif; font-size: 0.72rem; font-weight: 700;
  letter-spacing: 0.2em; text-transform: uppercase; color: var(--ll-gold);
}
.ll-hero-eyebrow,
.ll-pagehero-eyebrow,
.ll-posthero-kicker {
  text-shadow: 0 1px 3px rgba(18, 46, 31, 0.55);
}
@media (max-width: 600px) {
  .ll-hero-eyebrow,
  .ll-pagehero-eyebrow,
  .ll-posthero-kicker {
    font-size: 0.84rem;
    letter-spacing: 0.15em;
  }
}

/* ── Footer social icons (core Social Icons block, "logos only") ───────────── */
.ll-footer-social { margin-top: 1.5rem; padding-left: 0; }
.ll-footer-social.wp-block-social-links { gap: 0.85rem; display: flex; flex-wrap: wrap; }
.ll-footer-social .wp-social-link { background-color: transparent; margin: 0; }
.ll-footer-social .wp-social-link a { padding: 0; }
.ll-footer-social.wp-block-social-links .wp-social-link { color: rgba(255, 255, 255, 0.9) !important; }
.ll-footer-social.wp-block-social-links .wp-social-link svg { width: 28px; height: 28px; fill: rgba(255, 255, 255, 0.9) !important; transition: fill 0.2s ease, transform 0.2s ease; }
.ll-footer-social .wp-social-link:hover { transform: translateY(-2px); }
.ll-footer-social.wp-block-social-links .wp-social-link:hover svg { fill: #ffffff !important; }

/* ── Trust logos stack (clone/preview of homepage) ───────────────────────── */
.ll-trustlogos { background: var(--ll-cream); padding: 3rem 1.5rem; text-align: center; }
.ll-trustlogos .ll-trustlogo { margin: 0 auto 1.75rem; }
.ll-trustlogos .ll-trustlogo:last-child { margin-bottom: 0; }
.ll-trustlogos .ll-trustlogo img { width: 260px; height: auto; }

/* ── Trust column brand logos (under each text block) ────────────────────── */
.ll-trust-brand-logo { margin: 1.25rem 0 0; }
.ll-trust-brand-logo img { width: auto; height: auto; max-height: 55px; max-width: 240px; display: block; }
.ll-trust-brand-logo--badge img { max-height: 58px; max-width: none; }

/* Ryder Cup banner — centred below the trust strip */
.ll-ryder-banner-sec { background-color: #F7F2F2; }
.ll-ryder-banner-sec > .gb-inside-container { padding: 8px 40px 32px; }
.ll-ryder-banner.aligncenter { margin-left: auto; margin-right: auto; }
.ll-ryder-banner img { width: 100%; max-width: 360px; height: auto; display: block; margin: 0 auto; }

/* ── Default brand styling for newly-added GenerateBlocks buttons ────────────
   GeneratePress's button colours only style core buttons
   (a.wp-block-button__link); they don't reach GenerateBlocks' own .gb-button,
   so a freshly-inserted GB button falls back to GB's generic blue. Give any GB
   button that doesn't already carry one of our brand classes (.ll-btn-primary,
   .ll-btn-outline, .ll-textlink, …) the brand "primary" look (gold-on-forest)
   by default. An explicit colour chosen on the button in GenerateBlocks still
   wins — GB emits its per-button CSS after this stylesheet at the same
   specificity (.gb-button-wrapper a.gb-button-<id>). This rule is loaded in the
   block-editor canvas too (see functions.php), so the editor preview matches. */
a.gb-button:not([class*="ll-"]) {
  background-color: var(--ll-gold);
  color: var(--ll-forest);
  border: 1px solid var(--ll-gold);
  font-family: 'Playfair Display', serif;
  font-weight: 600;
  border-radius: 0;
  padding: 1rem 2.25rem;
}
a.gb-button:not([class*="ll-"]):hover {
  background-color: var(--ll-forest);
  color: var(--ll-cream);
  border-color: var(--ll-forest);
}

/* ── Itinerary body "feature" row: text-left / image-right (editorial) ───────
   A core Columns block (className .ll-itin-feature) used inside an itinerary's
   body to give a course its own text + photo, vertically centred. Image sizing
   lives on the figure-class descendant (.ll-itin-feature-img img), NOT the img's
   own inline style — Imagify/CDN rewriting strips inline style/class off <img>.
   Core Columns already stacks ≤781px (image drops under the text on mobile). */
.ll-itinerary-content .ll-itin-feature { margin: 3.5rem 0; align-items: flex-start; gap: 2.5rem; }
.ll-itinerary-content .ll-itin-feature .wp-block-heading { margin-top: 0; }
.ll-itin-feature-img { margin: 0; }
.ll-itin-feature-img img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  border-radius: 0;
}
@media (max-width: 781px) {
  .ll-itinerary-content .ll-itin-feature { gap: 1.5rem; margin: 2.5rem 0; }
}

/* Self-contained image lightbox (.ll-lb), used instead of WordPress core's
   "Expand on click" — core's rendered close button was missing its close
   directive on this site, so ✕ didn't work. This one we control fully: open on
   image click, close via ✕ / clicking the backdrop / Esc. Any image inside
   .ll-itin-feature-img or .ll-lightbox is clickable. */
.ll-itin-feature-img img,
.ll-lightbox img { cursor: zoom-in; }

.ll-lb {
  position: fixed;
  inset: 0;
  z-index: 100000;
  background: rgba(18, 46, 31, 0.93);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5vmin;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s ease;
  cursor: zoom-out;
}
.ll-lb.is-open { opacity: 1; visibility: visible; }
.ll-lb-img {
  max-width: 100%;
  max-height: 90vh;
  object-fit: contain;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.55);
  cursor: default;
}
.ll-lb-x {
  position: absolute;
  top: 1rem;
  right: 1.25rem;
  width: 48px;
  height: 48px;
  border: none;
  background: transparent;
  color: var(--ll-cream);
  font-size: 2.4rem;
  line-height: 1;
  cursor: pointer;
  transition: color 0.2s ease;
}
.ll-lb-x:hover,
.ll-lb-x:focus { color: var(--ll-gold); }
.admin-bar .ll-lb { z-index: 100000; }

/* =========================================================================
   World Golf Awards 2026 — voting campaign page (/world-golf-awards-2026).
   Editable GB blocks carry .ll-* brand classes; the look lives here. Because
   these sections are inserted programmatically, GB does NOT regenerate their
   container CSS — so each section's background / inner max-width / padding is
   PINNED here (values match the GB attrs). Inner text reuses the existing
   .ll-pagehero-* / .ll-cardsec-* / .ll-card* classes. Solid forest hero (no
   photo) sidesteps both the GB dynamic-CSS gotcha and the Imagify-strips-<img>
   hero issue. See reference_generateblocks-programmatic / reference_imagify-staging-gotchas.
   ========================================================================= */
.ll-wga-hero { background: var(--ll-forest); }
.ll-wga-hero > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 112px 40px 96px; }
.ll-pagehero--center .ll-pagehero-actions { justify-content: center; }

/* WGA Nominee 2026 seal in the hero (transparent PNG, reads on the forest bg). */
.ll-wga-badge { margin: 0 auto 1.75rem; }
.ll-wga-badge img { width: 150px; height: auto; display: block; margin: 0 auto; }

.ll-wga-body { background: #fff; }
.ll-wga-body > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 96px 40px; text-align: center; }
.ll-wga-body .ll-cardsec-intro { margin: 0 auto 1.25rem; }

/* Centered button row used by the nomination + how-to-vote sections.
   Two classes so it beats GenerateBlocks' single-class .gb-button-wrapper
   (which forces justify-content:flex-start). */
.gb-button-wrapper.ll-wga-actions { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; }
.ll-wga-body .ll-wga-actions { margin-top: 1.25rem; }

.ll-wga-steps { background: #F7F2F2; }
.ll-wga-steps > .gb-inside-container { max-width: 1100px; margin: 0 auto; padding: 96px 40px; }
.ll-wga-steps .ll-card > .gb-inside-container { padding: 36px; }
.ll-wga-steps .ll-wga-actions { margin-top: 3rem; }

@media (max-width: 768px) {
  .ll-wga-hero > .gb-inside-container,
  .ll-wga-body > .gb-inside-container { padding-left: 24px; padding-right: 24px; }
  .ll-wga-steps > .gb-inside-container { padding: 64px 24px; }
}

/* =========================================================================
   EVENTS + KINGDOM CUP pages (2026-06-09)
   Same hybrid-GB rule as the WGA page above: these sections are inserted
   programmatically, so GB does NOT regenerate their container CSS — each
   section's background / inner max-width / padding is PINNED here (values
   match the GB attrs). Text reuses .ll-pagehero-* / .ll-cardsec-* / .ll-card*.
   Hero background photos are pinned here too (root-relative url() → resolves on
   any domain, so it survives the staging→live clone). The .ll-pagehero::before
   forest gradient overlays the photo so hero text stays legible.
   Legibility insurance: forest sections set a cream default text colour so any
   text stays light even if a specific class rule is ever missing.
   ========================================================================= */

/* ---- Kingdom Cup page (/kingdom-cup-2027) ---- */
.ll-kc-hero {
  background-color: var(--ll-forest);
  background-image: url(/wp-content/uploads/2020/08/Dooks-9.jpg);
  background-size: cover; background-position: center;
  color: var(--ll-cream);
}
.ll-kc-hero > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 112px 40px 96px; }

.ll-kc-overview { background: #fff; }
.ll-kc-overview > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 96px 40px; text-align: center; }
.ll-kc-overview .ll-cardsec-intro { margin: 0 auto 1.25rem; }

.ll-kc-schedule { background: var(--ll-cream); }
.ll-kc-schedule > .gb-inside-container { max-width: 1100px; margin: 0 auto; padding: 96px 40px; }
/* 4 day cards as a roomy 2x2 grid (4-across was too narrow/squashed). */
.ll-kc-schedule .ll-cardgrid > .gb-inside-container { grid-template-columns: repeat(2, 1fr); align-items: stretch; gap: 1.5rem; }
.ll-kc-schedule .ll-card { display: flex; flex-direction: column; }
.ll-kc-schedule .ll-card > .gb-inside-container { padding: 38px 44px; }
.ll-kc-note { text-align: center; color: rgba(26,26,26,0.6); font-size: 0.92rem; font-style: italic; margin: 2.5rem auto 0; max-width: 680px; }

/* Kingdom Cup courses gallery (the WeTravel trip photos) */
.ll-kc-gallery { background: #fff; }
.ll-kc-gallery > .gb-inside-container { max-width: 1100px; margin: 0 auto; padding: 96px 40px; text-align: center; }
.ll-kc-gallery .ll-cardsec-intro { margin: 0 auto 0.5rem; }
.wp-block-gallery.ll-kc-galgrid { margin-top: 3rem; gap: 1rem; }
.wp-block-gallery.ll-kc-galgrid img { aspect-ratio: 3 / 2; object-fit: cover; width: 100%; border-radius: 0; }

.ll-kc-included { background: var(--ll-cream); }
.ll-kc-included > .gb-inside-container { max-width: 820px; margin: 0 auto; padding: 96px 40px; text-align: center; }
ul.ll-kc-list { list-style: none; margin: 2.5rem auto 0; padding: 0; max-width: 640px; display: grid; grid-template-columns: 1fr 1fr; gap: 0.85rem 2rem; text-align: left; }
ul.ll-kc-list li { position: relative; padding-left: 1.75rem; color: rgba(26,26,26,0.8); line-height: 1.5; margin: 0; }
ul.ll-kc-list li::before { content: "\2713"; position: absolute; left: 0; top: 0; color: var(--ll-gold); font-weight: 700; }

.ll-kc-cta { background: var(--ll-forest); color: var(--ll-cream); }
.ll-kc-cta > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 96px 40px; }
.ll-kc-cta-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.6rem); color: var(--ll-cream); margin: 0 0 1.25rem; line-height: 1.15; }
.ll-kc-cta-line { color: rgba(247,242,242,0.85); font-size: 1.05rem; line-height: 1.6; margin: 0 auto 0.5rem; max-width: 560px; }
.ll-kc-cta .ll-pagehero-actions { justify-content: center; margin-top: 2rem; }

/* ---- Events page (/events) ---- */
.ll-events-hero {
  background-color: var(--ll-forest);
  background-image: url(/wp-content/uploads/2026/06/Old-Head-Golf-Links-6.jpeg);
  background-size: cover; background-position: center;
  color: var(--ll-cream);
}
.ll-events-hero > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 112px 40px 96px; }

.ll-events-list { background: var(--ll-cream); }
.ll-events-list > .gb-inside-container { max-width: 1040px; margin: 0 auto; padding: 96px 40px; }

/* shared event text styles (used in the feature rows) */
.ll-event-meta { font-family: 'Lato', sans-serif; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--ll-gold); margin: 0 0 0.9rem; }
.ll-event-title { font-family: 'Playfair Display', serif; color: var(--ll-forest); font-size: 1.6rem; margin: 0 0 1rem; line-height: 1.2; }
.ll-event-text { color: rgba(26,26,26,0.8); line-height: 1.7; margin: 0 0 1.75rem; }

/* event feature rows — image beside text (core Columns), alternating */
.ll-event-row.wp-block-columns { gap: 0; margin: 0 0 2.5rem; align-items: stretch; }
.ll-event-row:last-child { margin-bottom: 0; }
.ll-event-row .wp-block-column { margin: 0; }
.ll-event-img { margin: 0; height: 100%; }
.ll-event-img img { width: 100%; height: 100%; min-height: 300px; object-fit: cover; display: block; }
.ll-event-body { background: #fff; border-top: 3px solid var(--ll-gold); padding: 2.75rem; display: flex; flex-direction: column; justify-content: center; }
.ll-event-body .ll-btn-primary { align-self: flex-start; }
@media (min-width: 782px) {
  .ll-event-row.ll-event-row--reverse { flex-direction: row-reverse; }
}

.ll-events-cta { background: var(--ll-forest); color: var(--ll-cream); }
.ll-events-cta > .gb-inside-container { max-width: 760px; margin: 0 auto; padding: 80px 40px; }
.ll-events-cta-h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem, 3.5vw, 2.6rem); color: var(--ll-cream); margin: 0 0 1rem; line-height: 1.15; }
.ll-events-cta-line { color: rgba(247,242,242,0.85); font-size: 1.05rem; line-height: 1.6; margin: 0 auto; max-width: 520px; }
.ll-events-cta .ll-pagehero-actions { justify-content: center; margin-top: 2rem; }

@media (max-width: 768px) {
  .ll-kc-hero > .gb-inside-container,
  .ll-kc-overview > .gb-inside-container,
  .ll-kc-included > .gb-inside-container,
  .ll-kc-gallery > .gb-inside-container,
  .ll-kc-cta > .gb-inside-container,
  .ll-events-hero > .gb-inside-container,
  .ll-events-cta > .gb-inside-container { padding-left: 24px; padding-right: 24px; }
  .ll-kc-schedule > .gb-inside-container,
  .ll-events-list > .gb-inside-container { padding: 64px 24px; }
  .ll-kc-schedule .ll-cardgrid > .gb-inside-container { grid-template-columns: 1fr 1fr; }
  .ll-event-img img { min-height: 220px; }
  ul.ll-kc-list { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  .ll-kc-schedule .ll-cardgrid > .gb-inside-container { grid-template-columns: 1fr; }
}

/* =============================================
   FALLBACK CONTENT WIDTH FOR PLAIN PAGES (v1.2.40)
   ---------------------------------------------
   The content area is intentionally full-width (see the layout reset at the
   top) so bespoke GenerateBlocks sections can bleed edge-to-edge. A plain
   Gutenberg page that has no GB wrapper would otherwise stretch its text the
   full width of the screen too. The rules below constrain ONLY bare flow
   blocks that sit directly inside .entry-content to a centred ~1140px column
   with side gutters. GenerateBlocks containers (.gb-container), groups,
   columns, and any aligned/full-width blocks are NOT matched, so the existing
   bespoke pages are completely unaffected and still bleed full-width.
   ============================================= */
.page .entry-content > :where(p, h1, h2, h3, h4, h5, h6, ul, ol, dl, blockquote, pre, figure.wp-block-table, .wp-block-quote, .wp-block-buttons, .wp-block-embed, .wp-block-code):not(.alignfull):not(.alignwide) {
  max-width: min(1140px, calc(100% - 40px));
  margin-left: auto;
  margin-right: auto;
}
.page .entry-content > figure.wp-block-image:not(.alignfull):not(.alignwide):not(.alignleft):not(.alignright) {
  max-width: min(1140px, calc(100% - 40px));
  margin-left: auto;
  margin-right: auto;
}
/* Breathing room above/below for plain pages only — these fire only when the
   first/last direct child is bare content (bespoke pages start/end with a GB
   container, which is excluded), so hero-led pages keep their flush spacing. */
.page .entry-content > :where(p, h1, h2, h3, h4, h5, h6, ul, ol, blockquote):first-child { margin-top: 3rem; }
.page .entry-content > :where(p, h1, h2, h3, h4, h5, h6, ul, ol, blockquote):last-child  { margin-bottom: 4rem; }

/* =============================================
   404 PAGE (v1.2.41)
   ============================================= */
.ll-404 {
  background: var(--ll-forest);
  min-height: 68vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 6rem 2rem;
}

.ll-404-inner {
  max-width: 660px;
}

.ll-404-eyebrow {
  display: block;
  font-family: 'Lato', sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ll-gold);
  margin-bottom: 1.25rem;
}

.ll-404-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2rem, 4.5vw, 3.2rem);
  font-weight: 700;
  color: var(--ll-cream);
  line-height: 1.15;
  margin: 0 0 1.25rem;
}

.ll-404-lede {
  font-size: 1.1rem;
  line-height: 1.65;
  color: rgba(247,242,242,0.85);
  margin: 0 0 2.25rem;
}

.ll-404-actions {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  justify-content: center;
  margin-bottom: 2.5rem;
}

.ll-404-search {
  display: flex;
  max-width: 420px;
  margin: 0 auto 2.25rem;
}

.ll-404-search input[type="search"] {
  flex: 1;
  min-width: 0;
  background: rgba(247,242,242,0.08);
  border: 1px solid rgba(247,242,242,0.35);
  border-right: none;
  color: var(--ll-cream);
  font-family: 'Lato', sans-serif;
  font-size: 0.95rem;
  padding: 0.8rem 1.1rem;
  border-radius: 0;
  -webkit-appearance: none;
}

.ll-404-search input[type="search"]::placeholder {
  color: rgba(247,242,242,0.55);
}

.ll-404-search input[type="search"]:focus {
  outline: 2px solid var(--ll-gold);
  outline-offset: -1px;
}

.ll-404-search button {
  background: transparent;
  border: 1px solid rgba(247,242,242,0.35);
  color: var(--ll-gold);
  font-family: 'Lato', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding: 0.8rem 1.4rem;
  cursor: pointer;
  transition: all 0.25s ease;
}

.ll-404-search button:hover,
.ll-404-search button:focus-visible {
  background: var(--ll-gold);
  color: var(--ll-forest);
  border-color: var(--ll-gold);
}

.ll-404-links {
  font-family: 'Lato', sans-serif;
  font-size: 0.85rem;
  color: rgba(247,242,242,0.5);
  display: flex;
  gap: 0.75rem;
  justify-content: center;
  flex-wrap: wrap;
}

.ll-404-links a {
  color: rgba(247,242,242,0.75);
  text-decoration: none;
  border-bottom: 1px solid rgba(247,242,242,0.3);
  transition: color 0.2s ease, border-color 0.2s ease;
}

.ll-404-links a:hover {
  color: var(--ll-gold);
  border-color: var(--ll-gold);
}

/* Same flex fix as .blog #main — GP's #content is a flex row and #main
   won't stretch on its own, leaving a dead white column beside the 404 hero.
   Applies to search results too (search.php reuses the .ll-404-search form). */
.error404 #main,
.search #main {
  flex: 1 1 100% !important;
  width: 100% !important;
  min-width: 0;
}
