    :root {
      --tufo:       #E5D8C2;
      --terracotta: #B8593E;
      --earth:      #2C1E12;
      --gold:       #C4A265;
      --stone:      #8C7B66;
      --cream:      #F2EBDD;
      --deep:       #160F09;
      --olive:      #5C6B3C;
      --rust:       #9B3D2B;
      --card-bg:    #FBF7EF;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }
    html { scroll-behavior: smooth; }

    body {
      font-family: 'Inter', sans-serif;
      background: var(--cream);
      color: var(--earth);
      -webkit-font-smoothing: antialiased;
      line-height: 1.6;
    }

    h1, h2, h3, h4 {
      font-family: 'Cormorant Garamond', 'Georgia', serif;
    }

    /* ── Hero ── */
    .hero {
      min-height: 92vh;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      text-align: center;
      padding: 4rem 2rem;
      background-color: var(--deep);
      background-image: url('images/hero.jpg');
      background-size: cover;
      background-position: center 60%;
      color: var(--tufo);
      position: relative;
      overflow: hidden;
    }

    .hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background:
        radial-gradient(ellipse at 50% 0%, rgba(42,28,16,0.55) 0%, rgba(22,15,9,0.88) 65%),
        radial-gradient(ellipse at 15% 85%, rgba(92,107,60,0.18) 0%, transparent 50%),
        radial-gradient(ellipse at 85% 15%, rgba(184,89,62,0.15) 0%, transparent 50%);
      pointer-events: none;
    }

    .hero-content { position: relative; z-index: 1; max-width: 720px; }

    .hero .subtitle {
      font-size: clamp(0.72rem, 1.2vw, 0.85rem);
      letter-spacing: 0.4em;
      text-transform: uppercase;
      font-weight: 600;
      opacity: 0.5;
      color: var(--gold);
    }

    .hero .divider { width: 50px; height: 1px; background: var(--gold); margin: 1.8rem auto; opacity: 0.45; }

    .hero h1 {
      font-size: clamp(3.4rem, 9vw, 7.5rem);
      font-weight: 600;
      letter-spacing: 0.28em;
      text-transform: uppercase;
      margin-bottom: 0.4em;
      color: var(--gold);
      text-shadow: 0 2px 24px rgba(196,162,101,0.25);
    }

    .hero .tagline {
      font-size: clamp(1.05rem, 2vw, 1.3rem);
      font-weight: 300;
      letter-spacing: 0.01em;
      line-height: 1.75;
      opacity: 0.85;
      max-width: 32em;
      margin: 0 auto;
    }

    .cta-button {
      display: inline-block;
      margin-top: 2.5rem;
      padding: 1.05rem 2.8rem;
      border: 1.5px solid var(--gold);
      color: var(--gold);
      text-decoration: none;
      font-size: 0.78rem;
      font-weight: 600;
      letter-spacing: 0.22em;
      text-transform: uppercase;
      transition: all 0.3s;
      cursor: pointer;
      background: transparent;
      font-family: 'Inter', sans-serif;
    }
    .cta-button:hover { background: var(--gold); color: var(--deep); }

    /* ── Sticky nav ── */
    .site-nav {
      position: sticky; top: 0; z-index: 50;
      display: flex; align-items: center; justify-content: space-between;
      padding: 0.9rem 1.6rem;
      background: rgba(22,15,9,0.94);
      backdrop-filter: blur(6px);
      border-bottom: 1px solid rgba(196,162,101,0.15);
    }
    .site-nav .nav-logo {
      font-family: 'Cormorant Garamond', serif; font-size: 1.3rem; letter-spacing: 0.1em;
      color: var(--gold); text-decoration: none; text-transform: uppercase; font-weight: 600;
    }
    .site-nav .nav-links { display: flex; align-items: center; gap: 1.6rem; }
    .site-nav .nav-links a {
      color: var(--tufo); opacity: 0.65; text-decoration: none;
      font-size: 0.76rem; letter-spacing: 0.05em; text-transform: uppercase; transition: opacity 0.2s;
    }
    .site-nav .nav-links a:hover { opacity: 1; }
    .site-nav .nav-cta { display: flex; align-items: center; gap: 0.9rem; }
    .site-nav .nav-count { font-size: 0.72rem; color: var(--gold); opacity: 0.85; white-space: nowrap; }
    .site-nav .nav-btn {
      padding: 0.5rem 1.1rem; border: 1px solid var(--gold); color: var(--gold);
      font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase;
      text-decoration: none; transition: all 0.25s; white-space: nowrap;
    }
    .site-nav .nav-btn:hover { background: var(--gold); color: var(--deep); }
    @media (max-width: 820px) { .site-nav .nav-links { display: none; } }
    @media (max-width: 480px) { .site-nav .nav-count { display: none; } }

    section[id], .category[id] { scroll-margin-top: 78px; }

    /* ── Tab switcher ── */
    .tab-switcher-wrap {
      background: var(--deep); display: flex; justify-content: center;
      padding: 0 2rem 3rem;
    }
    .tab-switcher {
      display: inline-flex; gap: 0.3rem;
      border: 1px solid rgba(196,162,101,0.25);
      padding: 0.35rem; scroll-margin-top: 78px;
    }
    .tab-btn {
      padding: 0.75rem 1.7rem; background: transparent; border: none;
      color: var(--tufo); opacity: 0.6; font-family: 'Inter', sans-serif;
      font-size: 0.78rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase;
      cursor: pointer; transition: all 0.25s;
    }
    .tab-btn:hover { opacity: 0.9; }
    .tab-btn.active { background: var(--gold); color: var(--deep); opacity: 1; }
    @media (max-width: 480px) { .tab-btn { padding: 0.7rem 1.1rem; font-size: 0.7rem; } }

    /* ── Featured trip (fixed departure) ── */
    .featured-trip { background: var(--cream); }
    .featured-trip-hero {
      height: 380px;
      margin: -5.5rem -2rem 3rem;
      background-color: var(--earth);
      background-image: linear-gradient(180deg, rgba(22,15,9,0.15) 0%, rgba(22,15,9,0.55) 100%), url('images/chapter-break.jpg');
      background-size: cover;
      background-position: center 45%;
    }
    @media (max-width: 600px) {
      .featured-trip-hero { height: 220px; margin: -3.5rem -1.5rem 2rem; }
    }
    .featured-trip-badge {
      display: inline-block; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase;
      color: #fff; background: var(--terracotta); padding: 0.35rem 0.8rem; margin-bottom: 1.1rem;
    }
    .featured-trip-header { max-width: 700px; }
    .featured-trip-header p { margin-top: 1rem; }
    .featured-trip-subtitle {
      font-family: 'Cormorant Garamond', serif; font-style: italic;
      font-size: 1.15rem; color: var(--terracotta); opacity: 0.85; margin-top: -0.3rem;
    }

    /* ── Itinerary calendar grid (days across the top, time-of-day rows down) ── */
    #festival-week .section-wide { max-width: 1300px; }

    .calendar-grid-wrap { margin-top: 2.8rem; border: 1px solid var(--tufo); overflow: hidden; }

    .calendar-grid {
      display: grid;
      grid-template-columns: 84px repeat(7, 1fr);
      background: var(--tufo);
      gap: 1px;
    }

    .cg-cell { background: var(--card-bg); padding: 0.55rem 0.6rem; }
    .cg-corner { background: var(--deep); }

    .cg-rowlabel {
      background: var(--deep); color: var(--gold);
      font-size: 0.6rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
      display: flex; align-items: center;
    }

    .cg-head {
      background: var(--deep);
      display: flex; flex-direction: column; align-items: flex-start; gap: 0.3rem;
    }
    .cg-head-date { display: flex; align-items: baseline; gap: 0.3rem; }
    .cg-dow { font-size: 0.58rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--gold); }
    .cg-date { font-family: 'Cormorant Garamond', serif; font-size: 1.05rem; font-weight: 600; color: var(--tufo); }
    .cg-head .icon-badge {
      width: 18px; height: 18px; border-radius: 50%; background: rgba(196,162,101,0.15);
      display: flex; align-items: center; justify-content: center; color: var(--gold); flex-shrink: 0;
    }
    .cg-head .icon-badge svg { width: 10px; height: 10px; }
    .cg-head-title { font-size: 0.66rem; font-weight: 600; color: var(--tufo); line-height: 1.2; }

    .cg-cell.cg-slot { font-size: 0.68rem; opacity: 0.82; font-weight: 300; line-height: 1.3; color: var(--earth); }

    /* ── Mobile fallback: simple stacked day list, separate markup from the desktop grid ── */
    .calendar-mobile-list { display: none; margin-top: 2.8rem; }
    .cm-day { background: var(--card-bg); border: 1.5px solid var(--tufo); border-top: 3px solid var(--terracotta); padding: 0.9rem 1rem; margin-bottom: 0.8rem; }
    .cm-day-photo { display: block; width: calc(100% + 2rem); height: 150px; object-fit: cover; margin: -0.9rem -1rem 0.9rem; }
    .cm-day-header { display: flex; align-items: center; gap: 0.6rem; margin-bottom: 0.7rem; }
    .cm-day-header .icon-badge {
      width: 26px; height: 26px; border-radius: 50%; background: rgba(184,89,62,0.1);
      display: flex; align-items: center; justify-content: center; color: var(--terracotta); flex-shrink: 0;
    }
    .cm-day-header .icon-badge svg { width: 14px; height: 14px; }
    .cm-day-date { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--terracotta); }
    .cm-day-title { font-size: 0.98rem; font-weight: 600; color: var(--earth); }
    .cm-day-list { list-style: none; }
    .cm-day-list li { font-size: 0.82rem; opacity: 0.78; font-weight: 300; line-height: 1.55; margin-bottom: 0.4rem; }
    .cm-day-list li:last-child { margin-bottom: 0; }
    .cm-time-tag { display: inline-block; font-size: 0.6rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--olive); margin-right: 0.5rem; }

    .festival-gallery { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 200px; gap: 0.6rem; margin-top: 3rem; }
    .fg-photo { position: relative; overflow: hidden; background-color: rgba(44,30,18,0.15); background-size: cover; background-position: center; transition: transform 0.5s ease; }
    .fg-photo::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 55%, rgba(22,15,9,0.75) 100%); opacity: 0; transition: opacity 0.35s; }
    .fg-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 0.7rem 0.85rem; font-size: 0.72rem; letter-spacing: 0.03em; color: var(--tufo); opacity: 0; transform: translateY(6px); transition: opacity 0.35s, transform 0.35s; z-index: 1; }
    .fg-photo:hover::after { opacity: 1; }
    .fg-photo:hover .fg-caption { opacity: 0.92; transform: translateY(0); }
    .fg-photo:hover { transform: scale(1.01); }
    @media (max-width: 680px) {
      .festival-gallery { grid-template-columns: repeat(2, 1fr); height: auto; }
      .fg-photo { height: 150px; }
    }

    @media (max-width: 680px) {
      #festival-week .section-wide { max-width: 1080px; }
      .calendar-grid-wrap { display: none; }
      .calendar-mobile-list { display: block; }
    }

    .cta-button-solid {
      display: inline-block; padding: 1.05rem 2.8rem;
      background: var(--terracotta); color: #fff; border: none;
      font-family: 'Inter', sans-serif; font-size: 0.8rem; font-weight: 600;
      letter-spacing: 0.15em; text-transform: uppercase; cursor: pointer; transition: background 0.25s;
    }
    .cta-button-solid:hover { background: var(--rust); }

    /* ── Festival week booking form (light theme, standalone) ── */
    .festival-book {
      max-width: 560px; margin: 3.5rem auto 0; text-align: left;
      background: var(--card-bg); border: 1.5px solid var(--tufo); padding: 2.6rem 2.2rem;
    }
    .festival-book h3 { font-size: 1.6rem; font-weight: 600; margin-bottom: 0.6rem; color: var(--earth); }
    .festival-book > p { font-size: 0.88rem; opacity: 0.68; font-weight: 300; line-height: 1.6; margin-bottom: 1.8rem; }

    .festival-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
    .festival-form .form-group { margin-bottom: 1.2rem; }
    .festival-form label {
      display: block; font-size: 0.68rem; letter-spacing: 0.15em; text-transform: uppercase;
      color: var(--stone); margin-bottom: 0.5rem; font-weight: 600;
    }
    .festival-form input, .festival-form select, .festival-form textarea {
      width: 100%; padding: 0.85rem 1rem; background: #fff;
      border: 1px solid rgba(140,123,102,0.35); color: var(--earth);
      font-family: 'Inter', sans-serif; font-size: 0.92rem; font-weight: 300;
      outline: none; transition: border-color 0.3s;
    }
    .festival-form input:focus, .festival-form select:focus, .festival-form textarea:focus { border-color: var(--terracotta); }
    .festival-form textarea { resize: vertical; min-height: 80px; }
    .festival-submit { width: 100%; border: none; margin-top: 0.4rem; }

    .festival-success {
      display: none; max-width: 560px; margin: 3.5rem auto 0; text-align: center;
      background: var(--card-bg); border: 1.5px solid var(--tufo); padding: 2.6rem 2.2rem;
    }
    .festival-success h3 { color: var(--terracotta); font-size: 1.6rem; font-weight: 600; margin-bottom: 0.6rem; }
    .festival-success p { font-size: 0.9rem; opacity: 0.68; font-weight: 300; }

    .hero-secondary {
      display: block; margin-top: 1rem; font-size: 0.8rem; color: var(--tufo);
      opacity: 0.6; text-decoration: underline; text-underline-offset: 3px;
    }
    .hero-secondary:hover { opacity: 0.9; }

    /* ── Catalog quick nav ── */
    .catalog-quicknav { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem; margin-bottom: 3rem; }
    .catalog-quicknav a {
      padding: 0.5rem 1.1rem; border: 1px solid rgba(140,123,102,0.3); border-radius: 999px;
      color: var(--earth); text-decoration: none; font-size: 0.78rem; opacity: 0.75; transition: all 0.2s;
    }
    .catalog-quicknav a:hover { border-color: var(--terracotta); color: var(--terracotta); opacity: 1; }

    /* ── Trip stats (merged into What's Included) ── */
    .trip-stats {
      display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4rem; text-align: center;
      margin-top: 2.6rem; padding-top: 2.2rem; border-top: 1px solid rgba(140,123,102,0.25);
    }

    /* ── Etruscan borders ── */
    .etruscan-border, .etruscan-border-dark {
      height: 26px;
      display: flex; justify-content: center; align-items: center; overflow: hidden;
    }
    .etruscan-border { background: var(--cream); }
    .etruscan-border-dark { background: var(--deep); }
    .etruscan-border svg, .etruscan-border-dark svg { height: 26px; width: 100%; }

    .etruscan-ornament { display: block; margin: 0 auto; opacity: 0.25; }
    .hero .etruscan-ornament { opacity: 0.15; }

    .etruscan-corner { position: absolute; opacity: 0.06; }
    .etruscan-corner.top-left { top: 2rem; left: 2rem; }
    .etruscan-corner.top-right { top: 2rem; right: 2rem; transform: scaleX(-1); }
    .etruscan-corner.bottom-left { bottom: 2rem; left: 2rem; transform: scaleY(-1); }
    .etruscan-corner.bottom-right { bottom: 2rem; right: 2rem; transform: scale(-1); }

    /* ── Sections ── */
    section { padding: 5.5rem 2rem; }
    .section-inner { max-width: 740px; margin: 0 auto; }
    .section-wide { max-width: 1080px; margin: 0 auto; }

    .section-label {
      font-size: 0.7rem; letter-spacing: 0.38em; text-transform: uppercase;
      color: var(--stone); margin-bottom: 1.1rem; font-weight: 600;
    }

    section h2 {
      font-size: clamp(2rem, 4vw, 2.9rem);
      font-weight: 500; line-height: 1.2; margin-bottom: 1.1rem; color: var(--earth);
    }

    section > .section-wide > p, section > .section-inner > p {
      font-size: 1.02rem; line-height: 1.85; font-weight: 300; opacity: 0.78;
    }

    /* ── 3 Ways ── */
    .three-ways { background: var(--deep); color: var(--tufo); }
    .three-ways .section-label { color: var(--gold); opacity: 0.55; text-align: center; }
    .three-ways h2 { color: var(--tufo); text-align: center; }
    .three-ways > .section-wide > p { text-align: center; max-width: 600px; margin: 0 auto; }

    .ways-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.8rem; margin-top: 2.8rem; }

    .way-card {
      border: 1px solid rgba(196,162,101,0.18);
      padding: 2.2rem 1.6rem;
      text-align: center;
      background: rgba(196,162,101,0.03);
      transition: border-color 0.3s, background 0.3s;
    }
    .way-card:hover { border-color: rgba(196,162,101,0.4); background: rgba(196,162,101,0.06); }

    .way-icon { width: 44px; height: 44px; margin: 0 auto 1rem; color: var(--gold); opacity: 0.85; }
    .way-title { font-size: 1.4rem; font-weight: 500; color: var(--gold); margin-bottom: 0.6rem; }
    .way-desc { font-size: 0.85rem; font-weight: 300; line-height: 1.7; opacity: 0.55; color: var(--tufo); }

    /* ── About / Founder ── */
    .about { background: var(--tufo); }
    .about-content { max-width: 640px; margin: 0 auto; }
    .about-photo-main {
      width: 100%; max-width: 420px; margin: 0 auto 2.6rem;
      aspect-ratio: 4 / 5;
      background-size: cover; background-position: center;
      box-shadow: 0 20px 40px rgba(44,30,18,0.28);
    }
    .about-photo-accent {
      display: block;
      width: 100%; height: auto;
      margin: 2.6rem 0 0;
      box-shadow: 0 16px 32px rgba(44,30,18,0.3);
    }
    .about-text .section-label { color: var(--terracotta); opacity: 0.75; }
    .about-text p { font-size: 1.02rem; line-height: 1.85; font-weight: 300; opacity: 0.78; margin-bottom: 1.15rem; }
    .about-text blockquote {
      font-family: 'Cormorant Garamond', serif;
      font-size: clamp(1.15rem, 2vw, 1.4rem);
      font-weight: 500; font-style: italic; line-height: 1.5;
      color: var(--terracotta); border-left: 3px solid var(--olive);
      padding-left: 1.5rem; margin-top: 1.8rem;
    }

    /* ── Photo break (full-bleed chapter divider) ── */
    .photo-break {
      position: relative;
      min-height: 46vh;
      background-color: var(--earth);
      background-image: url('images/hero.jpg');
      background-size: cover;
      background-position: center;
      display: flex;
      align-items: flex-end;
      padding: 0;
    }
    .photo-break::before {
      content: '';
      position: absolute; inset: 0;
      background: linear-gradient(180deg, rgba(22,15,9,0.05) 0%, rgba(22,15,9,0.75) 100%);
    }
    .photo-break-caption {
      position: relative; z-index: 1;
      padding: 2.4rem 2rem;
      max-width: 740px; margin: 0 auto;
      text-align: center; width: 100%;
    }
    .photo-break-caption p {
      font-family: 'Cormorant Garamond', serif;
      font-style: italic;
      font-size: clamp(1.15rem, 2.2vw, 1.55rem);
      color: var(--tufo);
      opacity: 0.92;
    }

    /* ── Moments gallery ── */
    .moments { background: var(--tufo); }
    .moments-grid {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      grid-template-rows: repeat(7, minmax(160px, 1fr));
      gap: 0.9rem;
      margin-top: 2.4rem;
      height: 1456px;
    }
    .moment {
      position: relative;
      overflow: hidden;
      background-color: rgba(44,30,18,0.15);
      background-size: cover;
      background-position: center;
    }
    .moment::after {
      content: '';
      position: absolute; inset: 0;
      background: linear-gradient(180deg, transparent 55%, rgba(22,15,9,0.7) 100%);
      opacity: 0;
      transition: opacity 0.35s;
    }
    .moment img { display: none; }
    .moment-1 { grid-row: 1 / 4; grid-column: 1; background-image: url('images/moment-1.jpg'); }
    .moment-2 { grid-row: 1; grid-column: 2; background-image: url('images/moment-2.jpg'); }
    .moment-3 { grid-row: 1; grid-column: 3; background-image: url('images/moment-3.jpg'); }
    .moment-4 { grid-row: 2; grid-column: 2 / 4; background-image: url('images/moment-4.jpg'); }
    .moment-5 { grid-row: 3; grid-column: 2; background-image: url('images/moment-5.jpg'); }
    .moment-6 { grid-row: 3; grid-column: 3; background-image: url('images/moment-6.jpg'); }
    .moment-9 { grid-row: 4 / 8; grid-column: 1; background-image: url('images/moment-9.jpg'); }
    .moment-7 { grid-row: 4; grid-column: 2; background-image: url('images/moment-7.jpg'); }
    .moment-8 { grid-row: 4; grid-column: 3; background-image: url('images/moment-8.jpg'); }
    .moment-10 { grid-row: 5; grid-column: 2 / 4; background-image: url('images/moment-10.jpg'); }
    .moment-11 { grid-row: 6; grid-column: 2; background-image: url('images/moment-11.png'); }
    .moment-12 { grid-row: 6; grid-column: 3; background-image: url('images/moment-12.png'); }
    .moment-13 { grid-row: 7; grid-column: 2; background-image: url('images/moment-13.jpg'); }
    .moment-14 { grid-row: 7; grid-column: 3; background-image: url('images/moment-14.jpg'); }
    .moment-caption {
      position: absolute; left: 0; right: 0; bottom: 0;
      padding: 0.9rem 1.1rem;
      font-size: 0.76rem; letter-spacing: 0.05em; color: var(--tufo);
      opacity: 0; transform: translateY(6px);
      transition: opacity 0.35s, transform 0.35s;
      z-index: 1;
    }
    .moment:hover::after { opacity: 1; }
    .moment:hover .moment-caption { opacity: 0.92; transform: translateY(0); }
    .moment:hover { transform: scale(1.01); }
    .moment { transition: transform 0.5s ease; }

    @media (max-width: 760px) {
      .moments-grid { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(9, 220px); height: auto; }
      .moment-1 { grid-row: 1; grid-column: 1 / 3; }
      .moment-2 { grid-row: 2; grid-column: 1; }
      .moment-3 { grid-row: 2; grid-column: 2; }
      .moment-4 { grid-row: 3; grid-column: 1 / 3; }
      .moment-5 { grid-row: 4; grid-column: 1; }
      .moment-6 { grid-row: 4; grid-column: 2; }
      .moment-9 { grid-row: 5; grid-column: 1 / 3; }
      .moment-7 { grid-row: 6; grid-column: 1; }
      .moment-8 { grid-row: 6; grid-column: 2; }
      .moment-10 { grid-row: 7; grid-column: 1 / 3; }
      .moment-11 { grid-row: 8; grid-column: 1; }
      .moment-12 { grid-row: 8; grid-column: 2; }
      .moment-13 { grid-row: 9; grid-column: 1; }
      .moment-14 { grid-row: 9; grid-column: 2; }
    }

    /* ── Day trips gallery ── */
    .trips-gallery { background: var(--cream); }
    .trips-grid {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
      grid-template-rows: repeat(2, minmax(160px, 1fr)) minmax(200px, 1fr);
      gap: 0.9rem;
      margin-top: 2.4rem;
      height: 720px;
    }
    .trip {
      position: relative;
      overflow: hidden;
      background-color: rgba(44,30,18,0.15);
      background-size: cover;
      background-position: center;
      transition: transform 0.5s ease;
    }
    .trip::after {
      content: '';
      position: absolute; inset: 0;
      background: linear-gradient(180deg, transparent 55%, rgba(22,15,9,0.7) 100%);
      opacity: 0;
      transition: opacity 0.35s;
    }
    .trip-1 { grid-row: 1 / 3; grid-column: 1; background-image: url('images/trip-1.jpg'); }
    .trip-2 { grid-row: 1; grid-column: 2; background-image: url('images/trip-2.jpg'); }
    .trip-3 { grid-row: 1; grid-column: 3; background-image: url('images/trip-3.jpg'); }
    .trip-4 { grid-row: 2; grid-column: 2; background-image: url('images/trip-4.jpg'); }
    .trip-5 { grid-row: 2; grid-column: 3; background-image: url('images/trip-5.jpg'); }
    .trip-6 { grid-row: 3; grid-column: 1 / 4; background-image: url('images/trip-6.jpg'); }
    .trip-caption {
      position: absolute; left: 0; right: 0; bottom: 0;
      padding: 0.9rem 1.1rem;
      font-size: 0.76rem; letter-spacing: 0.05em; color: var(--tufo);
      opacity: 0; transform: translateY(6px);
      transition: opacity 0.35s, transform 0.35s;
      z-index: 1;
    }
    .trip:hover::after { opacity: 1; }
    .trip:hover .trip-caption { opacity: 0.92; transform: translateY(0); }
    .trip:hover { transform: scale(1.01); }

    @media (max-width: 760px) {
      .trips-grid { grid-template-columns: 1fr 1fr; grid-template-rows: repeat(5, 220px); height: auto; }
      .trip-1 { grid-row: 1; grid-column: 1 / 3; }
      .trip-2 { grid-row: 2; grid-column: 1; }
      .trip-3 { grid-row: 2; grid-column: 2; }
      .trip-4 { grid-row: 3; grid-column: 1; }
      .trip-5 { grid-row: 3; grid-column: 2; }
      .trip-6 { grid-row: 4; grid-column: 1 / 3; }
    }

    /* ── Catalog ── */
    .catalog { background: var(--cream); }

    .catalog-intro { text-align: center; margin-bottom: 3rem; }
    .catalog-intro p { max-width: 600px; margin: 0.8rem auto 0; }

    .category { margin-bottom: 3.2rem; }

    .category-header {
      display: flex;
      align-items: center;
      gap: 1rem;
      margin-bottom: 1.5rem;
    }

    .category-header h3 {
      font-size: 1.6rem;
      font-weight: 600;
      color: var(--earth);
      white-space: nowrap;
    }

    .category-header .rule {
      flex: 1;
      height: 1px;
      background: repeating-linear-gradient(90deg, var(--terracotta) 0, var(--terracotta) 6px, transparent 6px, transparent 11px);
      opacity: 0.5;
    }

    .activity-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
      gap: 1.1rem;
    }

    .activity-card {
      background: var(--card-bg);
      border: 1.5px solid var(--tufo);
      padding: 1.6rem;
      cursor: pointer;
      transition: all 0.25s;
      position: relative;
      user-select: none;
    }

    .activity-card:hover {
      border-color: var(--gold);
      box-shadow: 0 8px 28px rgba(44,30,18,0.1);
      transform: translateY(-2px);
    }

    .activity-card.selected {
      border-color: var(--terracotta);
      background: #FBEFE6;
      box-shadow: 0 8px 28px rgba(184,89,62,0.16);
    }

    .activity-card.selected::after {
      content: '\2713';
      position: absolute; top: 14px; right: 14px;
      background: var(--terracotta); color: #fff;
      width: 24px; height: 24px; border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 0.78rem; font-weight: 700;
      z-index: 2;
    }

    /* ── Activity card photo reveal (hover only) ── */
    .activity-card.has-photo { overflow: hidden; }
    .activity-card.has-photo::before {
      content: '';
      position: absolute; inset: 0;
      background-image: linear-gradient(180deg, rgba(22,15,9,0.3) 0%, rgba(22,15,9,0.9) 100%), var(--photo);
      background-size: cover;
      background-position: center;
      opacity: 0;
      transition: opacity 0.4s ease;
      z-index: 0;
      pointer-events: none;
    }
    .activity-card.has-photo:hover::before { opacity: 1; }
    .activity-card.has-photo > * { position: relative; z-index: 1; }
    .activity-card.has-photo:hover h4 { color: var(--tufo); }
    .activity-card.has-photo:hover p { color: var(--tufo); opacity: 0.85; }
    .activity-card.has-photo:hover .icon-badge { background: rgba(255,255,255,0.18); color: var(--gold); }
    .activity-card.has-photo:hover .season { background: rgba(255,255,255,0.22); color: var(--gold); }

    .activity-card .icon-badge {
      width: 38px; height: 38px;
      border-radius: 50%;
      background: rgba(184,89,62,0.1);
      display: flex; align-items: center; justify-content: center;
      margin-bottom: 0.9rem;
      color: var(--terracotta);
    }
    .activity-card .icon-badge svg { width: 20px; height: 20px; }

    .activity-card .icon-badge.brand-badge {
      width: 44px; height: 44px; border-radius: 10px;
      background: #0d0d0d; overflow: hidden; padding: 2px;
    }
    .activity-card .icon-badge.brand-badge.round { border-radius: 50%; background: #fff; }
    .activity-card .icon-badge.brand-badge img { width: 100%; height: 100%; object-fit: contain; display: block; }
    .activity-card.has-photo:hover .icon-badge.brand-badge { background: #0d0d0d; }
    .activity-card.has-photo:hover .icon-badge.brand-badge.round { background: #fff; }

    .activity-card h4 {
      font-size: 1.22rem; font-weight: 600;
      margin-bottom: 0.45rem; color: var(--earth); padding-right: 1.5rem;
    }

    .activity-card p {
      font-size: 0.88rem; color: var(--earth); opacity: 0.65;
      font-weight: 300; line-height: 1.65; margin-bottom: 0.8rem;
    }

    .activity-card .season {
      display: inline-block;
      font-size: 0.66rem; font-weight: 600;
      color: var(--olive);
      background: rgba(92,107,60,0.12);
      padding: 0.25rem 0.65rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    /* ── What's included ── */
    .what-you-get { background: var(--tufo); }
    .included-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.4rem; margin-top: 2rem; }
    .included-item { padding: 1.5rem; background: rgba(245,240,232,0.6); border-left: 3px solid var(--terracotta); }
    .included-item h3 { font-size: 1.05rem; font-weight: 600; margin-bottom: 0.35rem; color: var(--earth); }
    .included-item p { font-size: 0.83rem; line-height: 1.6; opacity: 0.62; }

    /* ── Trip stats item ── */
    .detail-item .detail-value { font-size: 1.7rem; font-weight: 500; color: var(--terracotta); margin-bottom: 0.2rem; }
    .detail-item .detail-label { font-size: 0.64rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--stone); font-weight: 600; }

    /* ── Pricing ── */
    .pricing { background: var(--deep); color: var(--tufo); text-align: center; }
    .pricing .section-label { color: var(--gold); opacity: 0.5; }
    .pricing h2 { color: var(--tufo); }
    .pricing-range { font-family: 'Cormorant Garamond', serif; font-size: 2.8rem; font-weight: 500; color: var(--gold); margin: 1.1rem 0 0.4rem; }
    .pricing-range-note { display: block; font-family: 'Inter', sans-serif; font-size: 0.75rem; font-weight: 300; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0.5; margin-top: 0.4rem; }
    .pricing-intro { max-width: 480px; margin: 0 auto; opacity: 0.65; font-size: 0.95rem; font-weight: 300; line-height: 1.7; }
    .pricing-card { max-width: 440px; margin: 2rem auto 0; border: 1px solid rgba(196,162,101,0.2); padding: 2.6rem 2.2rem; background: rgba(196,162,101,0.02); }
    .pricing-includes { list-style: none; text-align: left; font-size: 0.85rem; font-weight: 300; opacity: 0.62; }
    .pricing-includes li { padding: 0.5rem 0; border-bottom: 1px solid rgba(196,162,101,0.08); padding-left: 1.2rem; position: relative; }
    .pricing-includes li:last-child { border-bottom: none; }
    .pricing-includes li::before { content: ''; position: absolute; left: 0; top: 50%; width: 5px; height: 5px; background: var(--terracotta); border-radius: 50%; transform: translateY(-50%); }
    .pricing-note { margin-top: 1.5rem; font-size: 0.8rem; opacity: 0.3; font-style: italic; }
    .pricing-cta { margin-top: 2.2rem; }

    /* ── Philosophy ── */
    .philosophy {
      position: relative;
      background-color: var(--earth);
      background-image: url('images/philosophy-bg.jpg');
      background-size: cover;
      background-position: center 35%;
      color: var(--tufo);
    }
    .philosophy::before {
      content: '';
      position: absolute; inset: 0;
      background: linear-gradient(120deg, rgba(22,15,9,0.9) 0%, rgba(22,15,9,0.55) 55%, rgba(22,15,9,0.82) 100%);
    }
    .philosophy .section-inner { position: relative; z-index: 1; }
    .philosophy .section-label { color: var(--gold); opacity: 0.65; }
    .philosophy h2 { color: var(--tufo); }
    .philosophy blockquote {
      font-family: 'Cormorant Garamond', serif;
      font-size: clamp(1.4rem, 2.8vw, 2.1rem);
      font-weight: 500; font-style: italic; line-height: 1.5;
      color: var(--gold); border-left: 3px solid var(--gold);
      padding-left: 1.5rem; margin: 1.5rem 0;
      opacity: 0.95;
    }

    /* ── Form / Contact ── */
    .contact { background: var(--deep); color: var(--tufo); padding: 6rem 2rem 4rem; }
    .contact-header { text-align: center; max-width: 600px; margin: 0 auto; }
    .contact h2 { color: var(--gold); font-size: clamp(1.8rem, 3.5vw, 2.6rem); font-weight: 500; }
    .contact-header p { opacity: 0.55; font-size: 0.95rem; font-weight: 300; }
    .contact .section-label { color: var(--gold); opacity: 0.55; text-align: center; }
    .contact .divider { width: 40px; height: 1px; background: var(--gold); margin: 1.5rem auto; opacity: 0.25; }

    .contact-form { max-width: 560px; margin: 2.5rem auto 0; text-align: left; }

    .selected-activities-summary {
      background: rgba(184,89,62,0.1);
      border: 1px solid rgba(184,89,62,0.25);
      padding: 1.1rem 1.2rem;
      margin-bottom: 1.4rem;
      font-size: 0.88rem; font-weight: 300; color: var(--tufo); opacity: 0.9;
    }
    .selected-activities-summary .summary-label {
      font-size: 0.65rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase;
      color: var(--gold); display: block; margin-bottom: 0.4rem; opacity: 0.8;
    }
    .no-selection { opacity: 0.4; font-style: italic; }
    .no-selection a { color: var(--gold); }

    .contact-form .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
    .contact-form .form-group { margin-bottom: 1.2rem; }

    .contact-form label {
      display: block; font-size: 0.68rem; letter-spacing: 0.15em; text-transform: uppercase;
      color: var(--stone); margin-bottom: 0.5rem; font-weight: 600;
    }

    .contact-form input, .contact-form textarea, .contact-form select {
      width: 100%; padding: 0.85rem 1rem;
      background: rgba(232,220,200,0.06);
      border: 1px solid rgba(196,162,101,0.25);
      color: var(--tufo);
      font-family: 'Inter', sans-serif; font-size: 0.92rem; font-weight: 300;
      outline: none; transition: border-color 0.3s;
    }
    .contact-form input:focus, .contact-form textarea:focus, .contact-form select:focus { border-color: var(--gold); }
    .contact-form textarea { resize: vertical; min-height: 90px; }
    .contact-form select option { background: var(--deep); color: var(--tufo); }

    .form-submit { text-align: center; margin-top: 1.8rem; }
    .form-submit .submit-btn {
      width: 100%; padding: 1.1rem;
      background: var(--terracotta); color: #fff; border: none;
      font-family: 'Inter', sans-serif; font-size: 0.85rem; font-weight: 600;
      letter-spacing: 0.15em; text-transform: uppercase;
      cursor: pointer; transition: background 0.25s;
    }
    .form-submit .submit-btn:hover { background: var(--rust); }
    .form-submit .submit-btn:disabled { background: #5a4a3a; cursor: not-allowed; opacity: 0.6; }

    .contact .email-link {
      display: block; text-align: center; margin-top: 2rem;
      color: var(--gold); text-decoration: none; font-size: 0.8rem; opacity: 0.4; letter-spacing: 0.05em;
    }

    .success-message {
      display: none;
      text-align: center;
      max-width: 560px;
      margin: 2.5rem auto 0;
      padding: 2.5rem 2rem;
      border: 1px solid rgba(196,162,101,0.25);
      background: rgba(196,162,101,0.04);
    }
    .success-message h3 { color: var(--gold); font-size: 1.8rem; font-weight: 500; margin-bottom: 0.8rem; }
    .success-message p { color: var(--tufo); opacity: 0.65; font-size: 0.95rem; font-weight: 300; }

    /* ── Footer ── */
    footer {
      background: var(--deep);
      border-top: 1px solid rgba(196,162,101,0.06);
      text-align: center; padding: 1.6rem;
      font-size: 0.65rem; letter-spacing: 0.2em; text-transform: uppercase;
      color: var(--stone); opacity: 0.4;
    }

    /* ── Responsive ── */
    @media (max-width: 768px) {
      .ways-grid { grid-template-columns: 1fr; gap: 1rem; }
    }
    @media (max-width: 600px) {
      section { padding: 3.5rem 1.5rem; }
      .activity-grid { grid-template-columns: 1fr; }
      .itinerary-grid { grid-template-columns: 1fr; }
      .trip-stats { grid-template-columns: repeat(2, 1fr); gap: 1.4rem; }
      .included-grid { grid-template-columns: 1fr; }
      .contact-form .form-row { grid-template-columns: 1fr; }
      .category-header h3 { font-size: 1.3rem; }
    }

    /* ── Animations ── */
    .fade-in { opacity: 0; transform: translateY(16px); animation: fadeInFallback 0.01s 1s forwards; transition: opacity 0.7s ease, transform 0.7s ease; }
    .fade-in.visible { opacity: 1; transform: translateY(0); animation: none; }
    @keyframes fadeInFallback { to { opacity: 1; transform: translateY(0); } }
