/*
Theme Name: Heart to Heart Festival
Theme URI: https://hearttoheartfestival.com
Author: Archer Digital Design
Description: Official theme for the Heart to Heart Festival at Wolf Ridge Forest Farm, Chattahoochee, FL. March 19-22, 2027.
Version: 1.0.0
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: heart-to-heart
*/

/* ============================================================
   TOKENS
   ============================================================ */
:root {
    --green:        #2d6a2d;
    --green-dark:   #1e4a1e;
    --green-light:  #d4e8d4;
    --gold:         #c8891a;
    --gold-dark:    #a06a10;
    --brown:        #6b4423;
    --cream:        #f5f0e8;
    --cream-dark:   #ede5d8;
    --dark:         #3a2510;
    --text:         #2a1f0e;
    --text-muted:   #7a6a52;
    --border:       #d9cfc0;
    --white:        #ffffff;

    --font-display: 'Zodiak', Georgia, serif;
    --font-body:    'Work Sans', system-ui, sans-serif;

    --text-xs:   clamp(0.75rem,  0.7rem  + 0.25vw, 0.875rem);
    --text-sm:   clamp(0.875rem, 0.8rem  + 0.35vw, 1rem);
    --text-base: clamp(1rem,     0.95rem + 0.25vw, 1.125rem);
    --text-lg:   clamp(1.125rem, 1rem    + 0.75vw, 1.5rem);
    --text-xl:   clamp(1.5rem,   1.2rem  + 1.25vw, 2.25rem);
    --text-2xl:  clamp(2rem,     1.2rem  + 2.5vw,  3.5rem);
    --text-hero: clamp(2.5rem,   1rem    + 4vw,    5rem);

    --space-2:  0.5rem;
    --space-3:  0.75rem;
    --space-4:  1rem;
    --space-6:  1.5rem;
    --space-8:  2rem;
    --space-10: 2.5rem;
    --space-12: 3rem;
    --space-16: 4rem;
    --space-20: 5rem;

    --radius:    0.5rem;
    --radius-lg: 1rem;
    --trans:     180ms cubic-bezier(0.16, 1, 0.3, 1);
    --shadow:    0 4px 16px rgba(42,31,14,0.10);

    --container: 1200px;
}

[data-theme="dark"] {
    --cream:      #141209;
    --cream-dark: #1c1810;
    --text:       #e8dfc8;
    --text-muted: #9a8a6a;
    --border:     #3a3020;
    --green:      #5a9e5a;
    --gold:       #e0a030;
    --white:      #1c1810;
}

/* ============================================================
   RESET
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 80px; -webkit-font-smoothing: antialiased; }
body { font-family: var(--font-body); font-size: var(--text-base); color: var(--text); background: var(--cream); line-height: 1.65; }
img, svg { display: block; max-width: 100%; height: auto; }
h1,h2,h3,h4,h5,h6 { line-height: 1.2; text-wrap: balance; font-family: var(--font-display); }
p, li { text-wrap: pretty; max-width: 68ch; }
ul { list-style: none; }
a { color: inherit; text-decoration: none; transition: color var(--trans); }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: none; }

/* ============================================================
   LAYOUT
   ============================================================ */
.container { width: 100%; max-width: var(--container); margin: 0 auto; padding: 0 var(--space-6); }
.section { padding: clamp(var(--space-12), 8vw, var(--space-20)) 0; }
.section-green { background: var(--green-dark); }
.section-dark { background: var(--dark); }
.section-cream { background: var(--cream-dark); }

/* ============================================================
   TYPOGRAPHY HELPERS
   ============================================================ */
.section-eyebrow { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--gold); margin-bottom: var(--space-3); text-align: center; display: block; }
.section-eyebrow.light { color: var(--gold); }
.section-title { font-size: var(--text-2xl); font-family: var(--font-display); font-weight: 700; color: var(--text); margin-bottom: var(--space-6); text-align: center; }
.section-title.light { color: var(--text); }
.section-subtitle { font-size: var(--text-lg); color: var(--text-muted); margin-bottom: var(--space-10); max-width: 60ch; text-align: center; margin-left: auto; margin-right: auto; }
/* Two-col sections keep their text left-aligned */
.about-text .section-title,
.volunteers-text .section-title,
.faq-col .section-title,
.contact-col .section-title { text-align: left; }
.about-text .section-eyebrow,
.volunteers-text .section-eyebrow,
.faq-col .section-eyebrow,
.contact-col .section-eyebrow { text-align: left; }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: 0.7em 1.6em; border-radius: var(--radius); font-size: var(--text-sm); font-weight: 600; text-decoration: none; transition: background var(--trans), color var(--trans), border-color var(--trans), box-shadow var(--trans); cursor: pointer; border: 2px solid transparent; }
.btn-primary { background: var(--green); color: #fff; border-color: var(--green); }
.btn-primary:hover { background: var(--green-dark); border-color: var(--green-dark); }
.btn-outline { background: transparent; color: #fff; border-color: rgba(255,255,255,0.6); }
.btn-outline:hover { background: rgba(255,255,255,0.1); border-color: #fff; }
.btn-gold { background: var(--gold); color: #fff; border-color: var(--gold); }
.btn-gold:hover { background: var(--gold-dark); border-color: var(--gold-dark); }
.btn-sm { padding: 0.5em 1.2em; font-size: var(--text-xs); }
.w-full { width: 100%; }

/* ============================================================
   FADE-UP ANIMATION
   ============================================================ */
.fade-up { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
.fade-up.visible { opacity: 1; transform: translateY(0); }

/* ============================================================
   HEADER
   ============================================================ */
.site-header { position: sticky; top: 0; z-index: 100; background: rgba(245,240,232,0.92); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid transparent; transition: box-shadow var(--trans), border-color var(--trans); }
.site-header.scrolled { box-shadow: var(--shadow); border-color: var(--border); }
[data-theme="dark"] .site-header { background: rgba(20,18,9,0.92); }
.header-inner { display: flex; align-items: center; gap: var(--space-6); max-width: var(--container); margin: 0 auto; padding: var(--space-4) var(--space-6); }
.site-logo { display: flex; align-items: center; gap: var(--space-3); font-family: var(--font-display); font-weight: 700; font-size: var(--text-sm); color: var(--green); flex-shrink: 0; }
.site-logo svg { color: var(--green); }
.site-name { white-space: nowrap; }
.primary-nav { flex: 1; }
.nav-list { display: flex; align-items: center; gap: var(--space-6); list-style: none; }
.nav-list a { font-size: var(--text-sm); font-weight: 500; color: var(--text); padding: var(--space-2) 0; border-bottom: 2px solid transparent; transition: color var(--trans), border-color var(--trans); }
.nav-list a:hover { color: var(--green); border-color: var(--green); }
.header-actions { display: flex; align-items: center; gap: var(--space-3); margin-left: auto; }
.theme-toggle { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: var(--radius); color: var(--text-muted); transition: color var(--trans), background var(--trans); }
.theme-toggle:hover { color: var(--green); background: var(--green-light); }
.mobile-menu-toggle { display: none; flex-direction: column; gap: 5px; padding: var(--space-2); }
.mobile-menu-toggle span { display: block; width: 22px; height: 2px; background: var(--text); border-radius: 2px; transition: transform var(--trans); }

@media (max-width: 768px) {
    .site-name { display: none; }
    .mobile-menu-toggle { display: flex; }
    .primary-nav { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--cream); border-top: 1px solid var(--border); padding: var(--space-4); }
    .primary-nav.nav-open { display: block; }
    .nav-list { flex-direction: column; align-items: flex-start; gap: var(--space-3); }
    .header-inner { flex-wrap: wrap; }
    .header-actions .btn-sm { display: none; }
}

/* ============================================================
   HERO
   ============================================================ */
.hero-section { position: relative; min-height: 100dvh; display: flex; align-items: center; justify-content: center; text-align: center; overflow: hidden; }
.hero-bg { position: absolute; inset: 0; background-image: url('assets/images/hero.png'); background-size: cover; background-position: center; z-index: 0; }
.hero-overlay { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(20,15,5,0.55) 0%, rgba(20,15,5,0.70) 100%); z-index: 1; }
.hero-content {
    text-align: center; position: relative; z-index: 2; padding: var(--space-16) var(--space-6); max-width: 800px; }
.hero-eyebrow { font-size: var(--text-xs); font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase; color: var(--gold); margin-bottom: var(--space-4); }
.hero-title { font-family: var(--font-display); font-size: var(--text-hero); font-weight: 700; color: #fff; line-height: 1.1; margin-bottom: var(--space-6); text-shadow: 0 2px 20px rgba(0,0,0,0.4); }
.hero-tagline { font-size: var(--text-lg); color: rgba(255,255,255,0.92); margin-bottom: var(--space-4); font-style: italic; }
.hero-meta { font-size: var(--text-base); color: rgba(255,255,255,0.75); margin-bottom: var(--space-8); letter-spacing: 0.04em; }
.hero-ctas { display: flex; gap: var(--space-4); justify-content: center; flex-wrap: wrap; }
.hero-scroll { position: absolute; bottom: var(--space-8); left: 50%; transform: translateX(-50%); z-index: 2; color: rgba(255,255,255,0.6); animation: bounce 2s infinite; }
@keyframes bounce { 0%,100% { transform: translateX(-50%) translateY(0); } 50% { transform: translateX(-50%) translateY(8px); } }

/* ============================================================
   ABOUT
   ============================================================ */
.about-section { background: var(--cream); }
.about-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-16); align-items: start; }
.about-text { }
.about-text p { margin-bottom: var(--space-4); color: var(--text); }
.about-activities { color: var(--text-muted); font-size: var(--text-sm); margin-top: var(--space-6); }
.about-pillars { display: flex; flex-direction: column; gap: var(--space-6); }
.pillar-card { background: var(--cream-dark); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-6); display: flex; gap: var(--space-4); align-items: flex-start; }
.pillar-icon { color: var(--green); flex-shrink: 0; }
.pillar-card h3 { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 700; color: var(--green); margin-bottom: var(--space-2); }
.pillar-card li { color: var(--text-muted); font-size: var(--text-sm); margin-bottom: var(--space-1); padding-left: 1em; position: relative; }
.pillar-card li::before { content: "--"; position: absolute; left: 0; color: var(--gold); }
.pillar-card-featured { border-color: var(--green); }

@media (max-width: 768px) {
    .about-grid { grid-template-columns: 1fr; gap: var(--space-10); }
}

/* ============================================================
   SCHEDULE
   ============================================================ */
.schedule-section { }
.schedule-tabs { display: flex; gap: var(--space-2); margin-bottom: var(--space-8); flex-wrap: wrap; }
.schedule-tab { padding: 0.6em 1.4em; border-radius: var(--radius); border: 2px solid rgba(255,255,255,0.3); background: transparent; color: rgba(255,255,255,0.7); font-size: var(--text-sm); font-weight: 600; cursor: pointer; transition: all var(--trans); }
.schedule-tab:hover, .schedule-tab.active { background: var(--gold); border-color: var(--gold); color: #fff; }
.session-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: var(--space-4); }
.session-card { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.15); border-radius: var(--radius); padding: 20px; color: rgba(255,255,255,0.9); }
.session-time { display: block; font-size: var(--text-xs); font-weight: 700; color: var(--gold); margin-bottom: var(--space-2); letter-spacing: 0.05em; }
.session-card h4 { font-family: var(--font-display); font-size: var(--text-base); font-weight: 600; margin-bottom: var(--space-2); color: #fff; }
.session-card p { font-size: var(--text-sm); color: rgba(255,255,255,0.7); margin-bottom: var(--space-2); }
.session-tag { display: inline-block; font-size: var(--text-xs); font-weight: 600; padding: 0.2em 0.7em; border-radius: 100px; background: rgba(200,137,26,0.25); color: var(--gold); letter-spacing: 0.05em; }
.schedule-panel { display: none; }
.schedule-panel.active { display: block; }

/* ============================================================
   FACILITATORS
   ============================================================ */
.facilitators-section { background: var(--green-dark); }
.facilitators-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); margin-top: var(--space-4); }
.facilitator-card { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.15); border-radius: var(--radius-lg); padding: 20px; text-align: center; transition: box-shadow var(--trans), transform var(--trans); }
.facilitator-card:hover { box-shadow: var(--shadow); transform: translateY(-4px); }
.facilitator-avatar { width: 80px; height: 80px; border-radius: 50%; overflow: hidden; margin: 0 auto var(--space-4); }
.facilitator-card h3 { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: #fff; margin-bottom: var(--space-2); }
.facilitator-card p { font-size: var(--text-sm); color: rgba(255,255,255,0.7); }
.facilitator-description { font-size: var(--text-sm); color: rgba(255,255,255,0.7);}
.facilitator-description p { margin-bottom: var(--space-3); max-width: none;}
.facilitator-description p:last-child { margin-bottom: 0;}

@media (max-width: 900px) { .facilitators-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 540px) { .facilitators-grid { grid-template-columns: 1fr; } }

/* ============================================================
   MUSIC
   ============================================================ */
.music-section { }
.music-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-4); margin-top: var(--space-4); }
.music-card { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); border-radius: var(--radius); padding: 20px; color: rgba(255,255,255,0.9); transition: background var(--trans); }
.music-card:hover { background: rgba(255,255,255,0.10); }
.music-icon { color: var(--gold); margin-bottom: var(--space-3); }
.music-card h3 { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: #fff; margin-bottom: var(--space-2); }
.music-genre { display: inline-block; font-size: var(--text-xs); font-weight: 600; color: var(--gold); letter-spacing: 0.05em; margin-bottom: var(--space-2); }
.music-card p { font-size: var(--text-sm); color: rgba(255,255,255,0.6); }

/* ============================================================
   LOCATION
   ============================================================ */
.location-section { position: relative; min-height: 500px; display: flex; align-items: center; }
.location-bg { position: absolute; inset: 0; background-image: url('assets/images/venue-aerial.png'); background-size: cover; background-position: center; z-index: 0; }
.location-overlay { position: absolute; inset: 0; background: rgba(20,15,5,0.72); z-index: 1; }
.location-content { position: relative; z-index: 2; padding: var(--space-16) var(--space-6); }
.location-desc { font-size: var(--text-base); color: rgba(255,255,255,0.85); max-width: 60ch; text-align: center; margin-bottom: var(--space-4); margin-right: auto; margin-left: auto; }
.location-address { font-size: var(--text-sm); color: rgba(255,255,255,0.6); text-align: center; margin-bottom: var(--space-8); letter-spacing: 0.05em; }
.location-features { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-bottom: var(--space-8); }
.location-feature { background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.2); border-radius: var(--radius); padding: 0.4em 1em; }
.location-feature span { font-size: var(--text-sm); color: rgba(255,255,255,0.9); }
.map-placeholder { color: rgba(255,255,255,0.5); font-size: var(--text-sm); font-style: italic; margin-top: var(--space-4); }

/* ============================================================
   TICKETS
   ============================================================ */
.tickets-section { background: var(--cream); }
.tickets-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); margin-top: var(--space-4); }
.ticket-card { background: var(--cream-dark); border: 2px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-8); text-align: center; position: relative; transition: box-shadow var(--trans); }
.ticket-card:hover { box-shadow: var(--shadow); }
.ticket-featured { border-color: var(--green); }
.ticket-badge { position: absolute; top: -1px; left: 50%; transform: translateX(-50%); background: var(--green); color: #fff; font-size: var(--text-xs); font-weight: 700; padding: 0.3em 1.2em; border-radius: 0 0 var(--radius) var(--radius); letter-spacing: 0.08em; white-space: nowrap; }
.ticket-tier { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 700; color: var(--green); margin-bottom: var(--space-3); margin-top: var(--space-4); }
.ticket-price { font-size: var(--text-xl); font-weight: 800; color: var(--text); margin-bottom: var(--space-6); }
.price-amount { font-family: var(--font-display); }
.ticket-features { list-style: none; margin-bottom: var(--space-8); text-align: left; }
.ticket-features li { font-size: var(--text-sm); color: var(--text-muted); padding: var(--space-2) 0; border-bottom: 1px solid var(--border); padding-left: 1.4em; position: relative; }
.ticket-features li::before { content: "v"; position: absolute; left: 0; color: var(--green); font-weight: 700; font-style: normal; }
.tickets-affiliate { text-align: center; margin-top: var(--space-8); color: var(--text-muted); font-size: var(--text-sm); }
.tickets-affiliate a { color: var(--green); font-weight: 600; }

@media (max-width: 768px) { .tickets-grid { grid-template-columns: 1fr; max-width: 400px; margin-left: auto; margin-right: auto; } }

/* ============================================================
REGISTRATION ADD-ONS
============================================================ */
.registration-addons-section {
  background: var(--cream-dark);
}

.addons-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-6);
  margin-top: var(--space-8);
}

.addon-card {
  background: var(--cream);
  border: 2px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-8);
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.addon-title {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  color: var(--green);
  margin: 0;
}

.addon-price {
  font-size: var(--text-xl);
  font-weight: 800;
  color: var(--text);
}

.addon-desc {
  font-size: var(--text-sm);
  color: var(--text-muted);
  max-width: none;
  flex: 1;
}

.btn.disabled {
  opacity: 0.65;
  pointer-events: none;
}

@media (max-width: 768px) {
  .addons-grid {
    grid-template-columns: 1fr;
  }
}

/* ============================================================
   SPONSORS
   ============================================================ */
.sponsors-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); margin-top: var(--space-4); }
.sponsor-tier-card { background: var(--cream); border: 2px solid var(--border); border-radius: var(--radius-lg); padding: var(--space-8); text-align: center; }
.sponsor-tier-featured { border-color: var(--green); }
.sponsor-tier-name { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 700; color: var(--green); margin-bottom: var(--space-2); }
.sponsor-tier-price { font-size: var(--text-xl); font-weight: 800; color: var(--text); margin-bottom: var(--space-6); }
.sponsor-features { text-align: left; list-style: none; }
.sponsor-features li { font-size: var(--text-sm); color: var(--text-muted); padding: var(--space-2) 0; border-bottom: 1px solid var(--border); padding-left: 1.4em; position: relative; }
.sponsor-features li::before { content: "+"; position: absolute; left: 0; color: var(--green); font-weight: 700; }
.sponsors-cta { text-align: center; margin-top: var(--space-10); }

@media (max-width: 768px) { .sponsors-grid { grid-template-columns: 1fr; max-width: 360px; margin-left: auto; margin-right: auto; } }

/* ============================================================
   VOLUNTEERS
   ============================================================ */
.volunteers-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-16); align-items: start; }
.volunteers-text p { color: rgba(255,255,255,0.85); margin-bottom: var(--space-4); }
.volunteer-roles { margin-top: var(--space-6); display: flex; flex-direction: column; gap: var(--space-4); }
.volunteer-role { border-left: 3px solid var(--gold); padding-left: var(--space-4); }
.volunteer-role h4 { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: #fff; margin-bottom: var(--space-1); }
.volunteer-role p { font-size: var(--text-sm); color: rgba(255,255,255,0.7); max-width: none; }
.volunteers-form { background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.15); border-radius: var(--radius-lg); padding: var(--space-8); }
.volunteers-form h3 { font-family: var(--font-display); font-size: var(--text-xl); color: #fff; margin-bottom: var(--space-6); }

@media (max-width: 768px) { .volunteers-grid { grid-template-columns: 1fr; gap: var(--space-10); } }

/* ============================================================
   FORMS
   ============================================================ */
.h2h-form { display: flex; flex-direction: column; gap: var(--space-4); }
.form-group { display: flex; flex-direction: column; gap: var(--space-2); }
.form-group label { font-size: var(--text-sm); font-weight: 600; color: inherit; }
.section-green .form-group label, .volunteers-form .form-group label { color: rgba(255,255,255,0.9); }
.form-group input, .form-group select, .form-group textarea { padding: 0.7em 1em; border-radius: var(--radius); border: 1px solid var(--border); background: rgba(255,255,255,0.08); color: inherit; font-size: var(--text-sm); transition: border-color var(--trans), box-shadow var(--trans); width: 100%; }
.form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(45,106,45,0.15); }
.contact-section .form-group input, .contact-section .form-group select, .contact-section .form-group textarea { background: var(--cream-dark); border-color: var(--border); color: var(--text); }

/* ============================================================
   CHILDREN'S CORNER
   ============================================================ */
.children-section { background: var(--cream); }
.children-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); margin: var(--space-4) 0; }
.children-card { background: var(--green-light); border: 1px solid rgba(45,106,45,0.2); border-radius: var(--radius-lg); padding: var(--space-6); text-align: center; }
.children-icon { color: var(--green); margin: 0 auto var(--space-4); }
.children-card h3 { font-family: var(--font-display); font-size: var(--text-lg); font-weight: 700; color: var(--green-dark); margin-bottom: var(--space-3); }
.children-card p { font-size: var(--text-sm); color: var(--text); }
.children-note { text-align: center; color: var(--text-muted); font-size: var(--text-sm); font-style: italic; margin-top: var(--space-6); }

@media (max-width: 768px) { .children-grid { grid-template-columns: 1fr; } }

/* ============================================================
   FOOD
   ============================================================ */
.food-section { }
.food-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-8); margin-top: var(--space-4); }
.food-col h3 { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: var(--green); margin-bottom: var(--space-3); margin-top: var(--space-6); }
.food-col h3:first-child { margin-top: 0; }
.food-list { list-style: none; }
.food-list li { font-size: var(--text-sm); color: var(--text-muted); padding: var(--space-2) 0; border-bottom: 1px solid var(--border); padding-left: 1.2em; position: relative; }
.food-list li::before { content: "~"; position: absolute; left: 0; color: var(--gold); font-weight: 600; }

@media (max-width: 768px) { .food-grid { grid-template-columns: 1fr; } }

/* ============================================================
   CONTACT / FAQ
   ============================================================ */
.contact-section { background: var(--cream); }
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-16); align-items: start; }
.faq-list { margin-top: var(--space-6); display: flex; flex-direction: column; gap: var(--space-3); }
.faq-item { border: 1px solid var(--border); border-radius: var(--radius); padding: 10px; overflow: hidden; }
.faq-question { width: 100%; text-align: left; padding: 10px; font-size: var(--text-sm); font-weight: 600; color: var(--text); background: var(--cream-dark); cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: background var(--trans); }
.faq-question::after { content: "+"; font-size: 1.2em; color: var(--green); transition: transform var(--trans); }
.faq-question[aria-expanded="true"] { background: var(--green); color: #fff; }
.faq-question[aria-expanded="true"]::after { content: "-"; color: #fff; }
.faq-answer { padding: 10px; background: var(--cream); }
.faq-answer p { font-size: var(--text-sm); color: var(--text-muted); }
.contact-social { margin-top: var(--space-6); font-size: var(--text-sm); color: var(--text-muted); }
.contact-social a { color: var(--green); font-weight: 600; }

@media (max-width: 768px) { .contact-grid { grid-template-columns: 1fr; gap: var(--space-10); } }

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer { background: var(--dark); color: rgba(255,255,255,0.8); padding: var(--space-16) 0 var(--space-8); }
.footer-inner { max-width: var(--container); margin: 0 auto; padding: 0 var(--space-6); }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--space-12); margin-bottom: var(--space-12); }
.footer-logo svg { color: var(--gold); margin-bottom: var(--space-4); }
.footer-tagline { font-size: var(--text-sm); color: rgba(255,255,255,0.6); margin-bottom: var(--space-4); max-width: 36ch; }
.footer-meta { font-size: var(--text-sm); color: rgba(255,255,255,0.5); line-height: 1.8; }
.footer-meta a { color: var(--gold); }
.footer-heading { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; color: #fff; margin-bottom: var(--space-4); }
.footer-links { list-style: none; display: flex; flex-direction: column; gap: var(--space-2); }
.footer-links a { font-size: var(--text-sm); color: rgba(255,255,255,0.6); transition: color var(--trans); }
.footer-links a:hover { color: var(--gold); }
.footer-col p { font-size: var(--text-sm); color: rgba(255,255,255,0.6); margin-bottom: var(--space-4); max-width: 32ch; }
.footer-social-btn { margin-bottom: var(--space-4); }
.footer-affiliates { font-size: var(--text-xs); color: rgba(255,255,255,0.45); max-width: none; }
.footer-affiliates a { color: var(--gold); }
.footer-bottom { border-top: 1px solid rgba(255,255,255,0.1); padding-top: var(--space-6); text-align: center; }
.footer-bottom p { font-size: var(--text-xs); color: rgba(255,255,255,0.4); max-width: none; }

@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 540px) { .footer-grid { grid-template-columns: 1fr; } }

/* ============================================================
   PAGE / SINGLE
   ============================================================ */
.page-main { padding: var(--space-16) 0; min-height: 60vh; }
.page-header h1 { font-family: var(--font-display); font-size: var(--text-2xl); color: var(--text); margin-bottom: var(--space-8); }
.page-content { color: var(--text); line-height: 1.7; }
.page-content h2 { font-family: var(--font-display); font-size: var(--text-xl); margin: var(--space-8) 0 var(--space-4); }
.page-content p { margin-bottom: var(--space-4); }

/* ============================================================
   ACCESSIBILITY
   ============================================================ */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border-width: 0; }
:focus-visible { outline: 2px solid var(--green); outline-offset: 3px; border-radius: 2px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } .fade-up { opacity: 1; transform: none; } }

/* --- Sponsor Logo Grid (ACF) --- */
.sponsors-logos { margin-top: 2.5rem; text-align: center; }
.sponsors-logos h3 { font-size: 1rem; letter-spacing: .08em; text-transform: uppercase; opacity: .7; margin-bottom: 1.25rem; }
.sponsors-logo-grid { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: center; align-items: center; }
.sponsor-logo-item img { max-height: 60px; max-width: 140px; object-fit: contain; filter: grayscale(40%); transition: filter .3s; }
.sponsor-logo-item img:hover { filter: none; }
.sponsor-name-text { font-weight: 600; font-size: .95rem; color: var(--green); }

/* ============================================================
   REGISTRATION PAGE
============================================================ */
.register-page { background: var(--cream); }

.register-hero {
    background: linear-gradient(160deg, var(--dark) 0%, var(--green) 100%);
    padding: 6rem 0 4rem;
    text-align: center;
}
.register-hero-title {
    font-family: var(--font-display);
    font-size: clamp(2.2rem, 5vw, 4rem);
    color: var(--cream);
    margin: .5rem 0;
}
.register-hero-sub { color: rgba(245,240,232,.7); font-size: 1.05rem; }

/* Ticket grid */
.register-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}
.reg-card {
    background: #fff;
    border-radius: 16px;
    border: 1.5px solid rgba(45,106,45,.15);
    padding: 2rem 1.75rem 1.75rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
    position: relative;
    transition: box-shadow .25s, transform .25s;
}
.reg-card:hover { box-shadow: 0 12px 40px rgba(45,106,45,.12); transform: translateY(-3px); }
.reg-card-featured {
    border-color: var(--gold);
    box-shadow: 0 8px 32px rgba(200,137,26,.18);
}
.reg-badge {
    display: inline-block;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    padding: .3rem .75rem;
    border-radius: 20px;
    width: fit-content;
}
.badge-popular { background: var(--gold); color: #fff; }
.badge-vip     { background: var(--dark); color: var(--gold); }
.reg-tier-name {
    font-family: var(--font-display);
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--dark);
    line-height: 1.2;
}
.reg-tier-subtitle { font-size: .88rem; color: var(--color-earth); }
.reg-tier-price {
    font-family: var(--font-display);
    font-size: 2.4rem;
    font-weight: 700;
    color: var(--green);
    line-height: 1;
    margin: .25rem 0;
}
.reg-features {
    list-style: none;
    padding: 0;
    margin: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}
.reg-features li {
    font-size: .9rem;
    color: #555;
    padding-left: 1.4rem;
    position: relative;
}
.reg-features li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .55em;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--green);
    opacity: .6;
}
.reg-btn { width: 100%; text-align: center; margin-top: .5rem; }
.reg-btn-pending { opacity: .5; cursor: not-allowed; }

/* Affiliate note */
.reg-affiliate-note {
    text-align: center;
    margin-top: 2.5rem;
    font-size: .92rem;
    color: var(--color-earth);
}
.reg-affiliate-note a { color: var(--green); font-weight: 600; }

/* Admin notice */
.admin-notice-box {
    background: #fff8e6;
    border: 2px dashed var(--gold);
    border-radius: 12px;
    padding: 2rem;
    max-width: 720px;
    margin: 0 auto;
}
.admin-notice-box h3 { margin-top: 0; color: var(--dark); }

/* Includes grid */
.reg-includes-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 2rem;
    margin-top: 2rem;
}
.reg-include-item { text-align: center; }
.reg-include-icon {
    width: 64px;
    height: 64px;
    background: var(--green);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1rem;
    color: var(--cream);
}
.reg-include-item h4 { font-size: 1rem; margin: 0 0 .4rem; color: var(--dark); }
.reg-include-item p  { font-size: .88rem; color: #666; margin: 0; }

/* FAQ section on register page */
.reg-faq-inner {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 4rem;
    align-items: start;
}
@media (max-width: 768px) {
    .reg-faq-inner { grid-template-columns: 1fr; gap: 2rem; }
    .register-grid { grid-template-columns: 1fr; }
}
.reg-contact-list { list-style: none; padding: 0; margin: 1rem 0 1.5rem; line-height: 2.2; }
.reg-contact-list a { color: var(--green); font-weight: 500; }
.reg-faq-link { display: inline-block; margin-top: .5rem; }

/* Nav Register highlight */
.nav-list .nav-register a,
.nav-list li a.nav-register {
    color: var(--gold) !important;
    font-weight: 700;
}

/* ============================================================
   RESPONSIVE — Registration page + schedule gaps
============================================================ */

/* Registration page tier grid */
.reg-tiers-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}
@media (max-width: 640px) {
    .reg-tiers-grid { grid-template-columns: 1fr; }
    .reg-tier-card { background: var(--cream-dark); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 20px; display: flex; flex-direction: column; gap: .75rem; position: relative; transition: box-shadow var(--trans), transform var(--trans); }
}

/* Registration page FAQ two-col */
.reg-faq-wrap {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: start;
}
@media (max-width: 768px) {
    .reg-faq-wrap { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* Registration includes grid */
@media (max-width: 640px) {
    .reg-includes-grid { grid-template-columns: 1fr; }
    .reg-include-card { text-align: left; display: flex; gap: 1rem; align-items: flex-start; }
    .reg-include-icon { flex-shrink: 0; }
}

/* Schedule tabs — wrap on mobile */
@media (max-width: 540px) {
    .schedule-tabs { gap: .4rem; }
    .schedule-tab { padding: .4rem .75rem; font-size: .78rem; }
    .session-grid { grid-template-columns: 1fr; }
}

/* Hero CTA buttons stack on mobile */
@media (max-width: 480px) {
    .hero-ctas { flex-direction: column; align-items: center; gap: .75rem; }
    .hero-ctas .btn { width: 100%; max-width: 280px; text-align: center; }
    .reg-page-hero { padding: 4rem 0 2.5rem; }
    .reg-page-title { font-size: clamp(1.8rem, 7vw, 3rem); }
}

/* Footer grid on very small screens */
@media (max-width: 380px) {
    .footer-grid { grid-template-columns: 1fr; }
    .about-grid  { grid-template-columns: 1fr; }
}

/* ============================================================
   REGISTRATION PAGE — Dropdown Selector
============================================================ */
.registration-page { background: var(--cream, #f5f0e8); }
/* Selector section: same cream background as facilitators so --cream-dark cards have clear contrast */
.reg-selector-section { background: var(--cream, #f5f0e8); }

.reg-hero {
    background: linear-gradient(150deg, var(--dark, #3a2510) 0%, var(--green, #2d6a2d) 100%);
    padding: 5rem 0 3.5rem;
    text-align: center;
}
.reg-hero-title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 5vw, 3.5rem);
    color: #fff;
    margin: .5rem 0 1rem;
    line-height: 1.1;
}
.reg-hero-desc { color: rgba(245,240,232,.8); max-width: 600px; margin: 0 auto; font-size: 1.05rem; text-align: center; }

/* Two-col layout */
.reg-selector-wrap {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 3rem;
    align-items: start;
}
@media (max-width: 860px) {
    .reg-selector-wrap { grid-template-columns: 1fr; }
    .reg-selector-right { order: -1; }
}

/* Dropdown */
.reg-select-label {
    display: block;
    font-weight: 600;
    font-size: .95rem;
    margin-bottom: .6rem;
    color: var(--dark);
}
.reg-select-wrapper {
    position: relative;
    margin-bottom: 1.75rem;
}
.reg-select-wrapper::after {
    content: '';
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    border: 6px solid transparent;
    border-top-color: var(--green);
    pointer-events: none;
}
.reg-select {
    width: 100%;
    padding: .85rem 2.5rem .85rem 1rem;
    font-family: var(--font-body);
    font-size: 1rem;
    border: 2px solid var(--green);
    border-radius: 10px;
    background: #fff;
    color: var(--dark);
    appearance: none;
    cursor: pointer;
    transition: border-color .2s, box-shadow .2s;
}
.reg-select:focus {
    outline: none;
    border-color: var(--gold);
    box-shadow: 0 0 0 3px rgba(200,137,26,.15);
}

/* Detail panel */
.reg-detail-panel { background: var(--cream-dark); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 20px; animation: regFadeIn .25s ease; transition: box-shadow var(--trans), transform var(--trans); }
.reg-detail-panel:hover { box-shadow: var(--shadow); transform: translateY(-4px); }
.reg-detail-panel.reg-detail-active { border-color: var(--green); box-shadow: var(--shadow); transform: translateY(-4px); }
@keyframes regFadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.reg-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
}
.reg-detail-name { font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; color: var(--green); margin: 0 0 .4rem; }
.reg-detail-desc { color: var(--text-muted); font-size: .95rem; line-height: 1.65; margin: 0; max-width: 480px; }
.reg-detail-price { font-family: var(--font-display); font-size: 2.2rem; font-weight: 700; color: var(--green); white-space: nowrap; }
.reg-detail-includes {
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
.reg-detail-includes li {
    padding-left: 1.5rem;
    position: relative;
    font-size: .93rem;
    color: #444;
}
.reg-detail-includes li::before {
    content: '';
    position: absolute;
    left: 0;
    top: .55em;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--green);
}
.reg-cta-btn { width: 100%; text-align: center; font-size: 1.05rem; padding: .9rem 1.5rem; }
.reg-admin-hint { font-size: .8rem; margin-top: .5rem; opacity: .6; }

/* Placeholder */
.reg-placeholder { background: var(--cream-dark); border-radius: var(--radius-lg); border: 2px dashed var(--border); padding: 3rem 2rem; text-align: center; color: var(--text-muted); }
.reg-placeholder-inner { display: flex; flex-direction: column; align-items: center; gap: 1rem; }
.reg-placeholder-inner p { margin: 0; font-size: .95rem; }

/* Right sidebar summary */
.reg-summary-title {
    font-family: var(--font-display);
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--dark);
    margin: 0 0 1rem;
}
.reg-summary-list { display: flex; flex-direction: column; gap: .5rem; margin-bottom: 1.5rem; }
.reg-summary-item { display: flex; justify-content: space-between; align-items: center; padding: .75rem 1rem; background: var(--cream-dark); border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; text-align: left; transition: box-shadow var(--trans), transform var(--trans); width: 100%; gap: .5rem; }
.reg-summary-item:hover { box-shadow: var(--shadow); transform: translateY(-2px); border-color: var(--green); }
.reg-summary-item.reg-summary-active { border-color: var(--green); box-shadow: var(--shadow); }
.reg-summary-name { font-weight: 600; font-size: .9rem; color: var(--text); }
.reg-summary-price { font-weight: 700; font-size: .9rem; color: var(--green); white-space: nowrap; }

/* Affiliate note */
.reg-affiliate-note { font-size: .83rem; color: #777; line-height: 1.7; }
.reg-affiliate-note a { color: var(--green); font-weight: 600; }

/* All-includes grid */
.reg-all-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 2rem;
    margin-top: 2rem;
}
.reg-all-item { text-align: center; }
.reg-all-item svg {
    color: var(--green);
    margin-bottom: .75rem;
}
.reg-all-item h4 { font-size: 1rem; margin: 0 0 .4rem; color: var(--text); }
.reg-all-item p  { font-size: .88rem; color: var(--text-muted); margin: 0; line-height: 1.6; }
@media (max-width: 540px) {
    .reg-all-item { text-align: left; display: flex; gap: 1rem; align-items: flex-start; }
    .reg-all-item svg { flex-shrink: 0; margin-bottom: 0; margin-top: .1rem; }
}
/* ---------------------------------------------------------
   Schedule page + homepage preview
--------------------------------------------------------- */
.schedule-preview-copy {
    max-width: 760px;
    margin: 0 auto 2rem;
    text-align: center;
    color: rgba(255, 255, 255, 0.88);
}

.schedule-preview-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
    margin-top: 2rem;
}

.schedule-preview-card {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 18px;
    padding: 1.5rem;
    backdrop-filter: blur(6px);
}

.schedule-preview-card h3 {
    color: #fff;
    margin-bottom: 0.9rem;
    font-size: 1.15rem;
}

.schedule-preview-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 0.8rem;
}

.schedule-preview-list li {
    display: grid;
    gap: 0.2rem;
    text-align: left;
    padding-bottom: 0.8rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.schedule-preview-list li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.preview-time {
    color: #f3d79b;
    font-weight: 700;
    font-size: 0.92rem;
}

.preview-title {
    color: rgba(255, 255, 255, 0.92);
}

.schedule-preview-actions {
    display: flex;
    justify-content: center;
    margin-top: 2rem;
}