:root{
  --midnight:#2A483F;
  --midnight-2:#345349;
  --amber:#C1443B;
  --amber-soft:#D9A05B;
  --ember:#A3352D;
  --ember-soft:#E0A79E;
  --snow:#FAF3E8;
  --snow-dim:#CFC3AE;
  --paper:#F2ECDD;
  --ink:#3A342C;
  --ink-soft:#756B5C;
  --line:#E7DCC8;
  --serif:'Quicksand', 'Inter', sans-serif;
  --sans:'Inter', -apple-system, sans-serif;
  /* Aliases kept so inline styles written during later passes still resolve correctly */
  --display:var(--serif);
  --gold:var(--amber-soft);
  --cranberry:var(--amber);
  --cranberry-deep:#8f352d;
  --navy:var(--midnight);
  --sky-deep:var(--midnight);
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--sans); color:var(--ink); background:var(--snow); line-height:1.6; display:flex; flex-direction:column; min-height:100vh;}
a{color:inherit; text-decoration:none;}
img{max-width:100%; display:block;}
ul{list-style:none;}

/* ===== NAV ===== */
header{position:sticky; top:0; z-index:50; background:rgba(42,72,63,0.94); backdrop-filter:blur(8px); color:var(--snow);}
.nav-wrap{max-width:1280px; margin:0 auto; padding:16px 28px; display:flex; align-items:center; justify-content:space-between; gap:16px;}
.logo{font-family:var(--serif); font-size:1.25rem; font-weight:600; letter-spacing:0.02em; flex:0 0 auto;}
.logo span{color:var(--amber);}
nav{flex:1 1 auto; min-width:0;}
nav ul{display:flex; gap:20px; font-size:0.86rem; white-space:nowrap;}
nav a{opacity:0.82; transition:opacity 0.2s;}
nav a.active, nav a:hover{opacity:1;}
nav a.active{color:var(--amber-soft);}
.nav-right{display:flex; align-items:center; gap:14px; flex:0 0 auto;}
.btn-donate{background:var(--amber); color:var(--snow); padding:9px 18px; border-radius:12px; font-weight:600; font-size:0.86rem; white-space:nowrap;}
.mobile-toggle{display:none; background:none; border:none; color:var(--snow); font-size:1.4rem; cursor:pointer; flex:0 0 auto;}

/* Nav collapses to a hamburger menu once there isn't genuinely enough
   room for all items on one line — avoids the cramped mid-size wrap. */
@media (max-width:1180px){
  nav{display:none;}
  .mobile-toggle{display:block;}

  header.nav-open nav{
    display:block;
    position:absolute; top:100%; left:0; right:0;
    background:var(--midnight-2);
    border-top:1px solid rgba(245,243,238,0.12);
    padding:20px 28px 24px;
  }
  header.nav-open nav ul{flex-direction:column; gap:4px; white-space:normal; font-size:0.98rem;}
  header.nav-open nav ul li{border-bottom:1px solid rgba(245,243,238,0.08);}
  header.nav-open nav ul li a{display:block; padding:12px 4px;}
}

/* ===== PAGE HEADER (non-home hero) ===== */
.page-header{
  background:linear-gradient(180deg,#23413A 0%, var(--midnight) 100%);
  color:var(--snow); padding:96px 32px 72px; position:relative; overflow:hidden;
}
.page-header::before{
  content:''; position:absolute; inset:0;
  background-image: radial-gradient(circle, rgba(255,255,255,0.5) 1px, transparent 1px);
  background-size: 34px 34px; opacity:0.05;
}
.page-header-inner{max-width:820px; margin:0 auto; text-align:center; position:relative; z-index:2;}
.page-eyebrow{font-size:0.8rem; color:var(--amber-soft); letter-spacing:0.05em; margin-bottom:14px;}
.page-header h1{font-family:var(--serif); font-weight:500; font-size:clamp(2rem,4.5vw,3.1rem); line-height:1.15;}
.page-header p{margin-top:18px; font-size:1.05rem; opacity:0.85; max-width:600px; margin-left:auto; margin-right:auto;}

/* ===== SECTION GENERIC ===== */
section{padding:88px 32px;}
.section-inner{max-width:1140px; margin:0 auto;}
.section-inner.narrow{max-width:760px;}
.section-head{max-width:640px; margin-bottom:52px;}
.section-head h3{font-family:var(--serif); font-size:clamp(1.6rem,3vw,2.2rem); font-weight:500; color:var(--midnight); line-height:1.25;}
.section-head p{margin-top:14px; color:var(--ink-soft); font-size:1.02rem;}
.bg-paper{background:var(--paper);}
.bg-midnight{background:var(--midnight); color:var(--snow);}

.btn-primary{background:var(--amber); color:var(--snow); padding:14px 30px; font-weight:600; border-radius:12px; font-size:0.95rem; display:inline-block; box-shadow:0 8px 24px rgba(193,68,59,0.3);}
.btn-ghost{border:1px solid rgba(26,26,34,0.25); color:var(--ink); padding:13px 28px; border-radius:12px; font-size:0.95rem; display:inline-block;}
.btn-ghost.on-dark{border-color:rgba(245,243,238,0.5); color:var(--snow);}

/* ===== STAT STRIP ===== */
.stat-strip{background:var(--midnight-2); color:var(--snow); display:flex; justify-content:center; gap:0; flex-wrap:wrap; padding:36px 24px; text-align:center;}
.stat{padding:0 44px; border-right:1px solid rgba(245,243,238,0.15);}
.stat:last-child{border-right:none;}
.stat .num{font-family:var(--serif); font-size:2.2rem; color:var(--amber-soft); font-weight:600;}
.stat .label{font-size:0.85rem; opacity:0.7; margin-top:4px;}

/* ===== STORY / SPLIT PANELS ===== */
.story-section{position:relative; overflow:hidden;}
.story-section-bg{
  position:absolute; inset:0; z-index:0;
  background-image:
    linear-gradient(180deg, rgba(250,243,232,0.55) 0%, rgba(250,243,232,0.8) 100%),
    url('images/story-bg-amber.jpg');
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.story-section > .section-inner{position:relative; z-index:1;}
.story-grid{display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line);}
.story-panel{
  padding:220px 40px 36px; position:relative; min-height:360px;
  background-size:cover; background-position:center; display:flex; flex-direction:column; justify-content:flex-end;
}
.story-panel::before{
  content:''; position:absolute; inset:0;
  background-image:linear-gradient(180deg, rgba(26,53,46,0.12) 0%, rgba(20,17,12,0.55) 62%, rgba(16,14,10,0.88) 100%);
}
.story-panel.p1{background-image:url('images/story-card-act1.jpg'); border-right:1px solid var(--line);}
.story-panel.p2{background-image:url('images/story-card-act2.jpg');}
.story-panel > *{position:relative; z-index:1;}
.story-panel .tag{font-size:0.78rem; letter-spacing:0.06em; color:var(--amber-soft); margin-bottom:10px; font-weight:600;}
.story-panel.p2 .tag{color:var(--ember-soft);}
.story-panel h4{font-family:var(--serif); font-size:1.5rem; margin-bottom:14px; color:var(--snow);}
.story-panel p{color:rgba(250,243,232,0.82); font-size:0.98rem; margin-bottom:12px;}
.story-panel p:last-child{margin-bottom:0;}

.story-visual{aspect-ratio:16/10; border-radius:14px; margin-bottom:24px; background-size:cover; background-position:center;}
.story-visual.p1{background-image:radial-gradient(ellipse at 30% 20%, rgba(240,196,118,0.38), transparent 60%), linear-gradient(180deg, rgba(52,83,73,0.5), rgba(42,72,63,0.72)), url('https://picsum.photos/seed/christmas-miracle-act1/960/600');}
.story-visual.p2{background-image:radial-gradient(ellipse at 70% 25%, rgba(178,58,46,0.32), transparent 60%), linear-gradient(180deg, rgba(60,45,40,0.5), rgba(42,72,63,0.75)), url('https://picsum.photos/seed/christmas-miracle-act2/960/600');}

/* ===== IMAGE SLIDER (act intro photos) ===== */
.img-slider{position:relative; aspect-ratio:16/10; border-radius:14px; overflow:hidden; margin-bottom:24px;}
.is-slide{position:absolute; inset:0; background-size:cover; background-position:center; opacity:0; transition:opacity 1s ease;}
.is-slide.active{opacity:1;}
.is-dots{position:absolute; bottom:14px; left:50%; transform:translateX(-50%); z-index:5; display:flex; gap:6px; padding:6px 10px; background:rgba(26,40,35,0.35); border-radius:20px; backdrop-filter:blur(2px);}
.is-dots button{width:7px; height:7px; border-radius:50%; background:rgba(245,243,238,0.6); border:none; cursor:pointer; padding:0;}
.is-dots button.active{background:var(--amber-soft); width:18px; border-radius:12px; transition:width 0.25s;}
.is-arrow{position:absolute; top:50%; transform:translateY(-50%); z-index:5; width:42px; height:42px; border-radius:50%; border:none; cursor:pointer; background:rgba(26,40,35,0.4); color:var(--snow); font-size:1rem; line-height:1; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(2px); transition:background 0.2s, transform 0.2s;}
.is-arrow:hover{background:rgba(193,68,59,0.75); transform:translateY(-50%) scale(1.08);}
.is-arrow-prev{left:14px;}
.is-arrow-next{right:14px;}
@media(max-width:640px){
  .is-arrow{width:34px; height:34px; font-size:0.85rem;}
  .is-arrow-prev{left:8px;}
  .is-arrow-next{right:8px;}
}

/* ===== TOUR FINDER ===== */
.finder{background:var(--midnight); color:var(--snow); border-radius:14px; padding:40px;}
.finder-top{display:flex; gap:16px; flex-wrap:wrap; margin-bottom:28px;}
.finder-top input, .finder-top select{flex:1; min-width:180px; background:rgba(245,243,238,0.08); border:1px solid rgba(245,243,238,0.2); color:var(--snow); padding:12px 16px; border-radius:12px; font-family:var(--sans); font-size:0.95rem;}
.finder-top input::placeholder{color:var(--snow-dim);}
.finder-top select option{color:var(--ink); background:var(--snow);}
.city-list{display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:1px; background:rgba(245,243,238,0.1);}
.city-card{background:var(--midnight); padding:18px 20px; transition:background 0.15s;}
.city-card:hover{background:var(--midnight-2);}
.city-card .date{color:var(--amber-soft); font-size:0.8rem; font-weight:600; letter-spacing:0.03em;}
.city-card .city{font-family:var(--serif); font-size:1.15rem; margin-top:4px;}
.city-card .city.city-tbd{color:var(--snow-dim); font-style:italic; font-size:1rem;}
.city-card .country{color:var(--snow-dim); font-size:0.82rem; margin-top:2px;}
.city-card.hidden{display:none !important;}

/* ===== Home page: compact Nov/Dec finder (tour-map's own list is untouched) ===== */
.finder-month-tabs{display:flex; gap:10px; margin-bottom:18px;}
.finder-month-tab{background:rgba(245,243,238,0.08); border:1px solid rgba(245,243,238,0.2); color:var(--snow); padding:7px 18px; border-radius:20px; font-size:0.85rem; font-weight:600; cursor:pointer;}
.finder-month-tab.active{background:var(--amber); border-color:var(--amber); color:var(--snow);}
.finder-months{display:flex; gap:36px; flex-wrap:wrap;}
.finder-month-col{flex:1 1 100%; min-width:240px;}
.finder-month-rows{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(245,243,238,0.12); border-radius:10px; overflow:hidden;}
.city-card.mini{display:flex; align-items:baseline; gap:7px; padding:9px 12px; background:var(--midnight); break-inside:avoid; transition:background 0.15s;}
.city-card.mini:hover{background:var(--midnight-2);}
.city-card.mini .date{color:var(--amber-soft); font-weight:600; width:50px; flex:0 0 auto; font-size:0.74rem; white-space:nowrap;}
.city-card.mini .city{font-family:var(--serif); font-size:0.86rem; color:var(--snow); flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.city-card.mini .city.city-tbd{color:var(--snow-dim); font-style:italic; font-size:0.78rem;}
.city-card.mini .country{color:var(--snow-dim); font-size:0.7rem; flex:0 0 auto; white-space:nowrap;}
@media (max-width:700px){.finder-month-rows{grid-template-columns:repeat(2,1fr);}}
@media (max-width:480px){.finder-month-rows{grid-template-columns:1fr;}}

/* ===== ARCHIVE LIST (Past Tours) — single-line rows, link to Media gallery ===== */
.archive-list{display:flex; flex-direction:column;}
.archive-list:not(.single-col){display:block; column-count:2; column-gap:0; column-rule:1px solid rgba(245,243,238,0.12);}
.archive-row{display:flex; align-items:center; gap:18px; padding:14px 22px; text-decoration:none; color:var(--snow); border-bottom:1px solid rgba(245,243,238,0.12); transition:background 0.15s; break-inside:avoid;}
.archive-row:last-child{border-bottom:none;}
.archive-row:hover{background:rgba(245,243,238,0.07);}
.archive-row:hover .a-arrow{opacity:1; transform:translateX(2px);}
.archive-row.hidden{display:none;}
.archive-row .a-date{font-family:var(--serif); font-weight:700; color:var(--amber-soft); font-size:0.85rem; width:56px; flex:0 0 auto;}
.archive-row .a-city{font-family:var(--serif); font-size:1.05rem; flex:1; min-width:0;}
.archive-row .a-country{color:var(--snow-dim); font-size:0.85rem; width:110px; flex:0 0 auto;}
.archive-row .a-arrow{color:var(--amber-soft); font-size:0.8rem; flex:0 0 auto; opacity:0.7; transition:all 0.15s; white-space:nowrap;}
@media (max-width:760px){
  .archive-list:not(.single-col){column-count:1;}
  .archive-row{flex-wrap:wrap; gap:6px 14px;}
  .archive-row .a-country{order:3; width:auto;}
  .archive-row .a-arrow{order:4; width:100%; font-size:0.78rem;}
}

/* ===== CITY INFO MODAL (This Year — tap a card for details) ===== */
.info-modal-overlay{position:fixed; inset:0; background:rgba(20,30,26,0.55); z-index:200; display:flex; align-items:center; justify-content:center; padding:20px;}
.info-modal{background:var(--paper); border-radius:16px; padding:36px; max-width:420px; width:100%; position:relative; box-shadow:0 24px 60px rgba(0,0,0,0.3);}
.info-modal-close{position:absolute; top:12px; right:14px; background:none; border:none; font-size:1.7rem; cursor:pointer; color:var(--ink-soft); line-height:1;}
.info-modal-date{font-family:var(--serif); font-weight:700; color:var(--amber); font-size:0.9rem; margin-bottom:6px;}
.info-modal h3{font-family:var(--serif); font-size:1.5rem; color:var(--midnight); margin-bottom:4px;}
.info-modal-country{color:var(--ink-soft); font-size:0.92rem; margin-bottom:20px;}
.info-modal-rows{display:flex; flex-direction:column; gap:10px; padding:16px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); margin-bottom:16px;}
.info-modal-row{display:flex; justify-content:space-between; gap:12px; font-size:0.92rem;}
.info-modal-row span{color:var(--ink-soft);}
.info-modal-row strong{color:var(--ink); font-weight:600; text-align:right;}
.info-modal-note{font-size:0.82rem; color:var(--ink-soft);}
.finder-note{margin-top:20px; font-size:0.85rem; color:var(--snow-dim); text-align:center;}
.month-tab{background:var(--snow); border:2px solid var(--line); color:var(--ink); padding:8px 18px; border-radius:20px; font-size:0.85rem; cursor:pointer; font-weight:600;}
.month-tab.active{background:var(--amber); border-color:var(--amber); color:var(--snow); font-weight:600;}
.month-tabs{display:flex; gap:10px; margin-bottom:22px; flex-wrap:wrap;}

/* Year toggle (Tour Map) */
.year-toggle{display:flex; gap:10px; margin-bottom:28px;}
.year-toggle button{background:none; border:1px solid var(--line); color:var(--ink); padding:10px 22px; border-radius:12px; font-size:0.92rem; cursor:pointer; font-weight:500;}
.year-toggle button.active{background:var(--midnight); border-color:var(--midnight); color:var(--snow);}
.archive-year-tabs{display:flex; gap:8px; margin-bottom:24px; flex-wrap:wrap;}
.archive-year-tabs button{background:none; border:1px solid var(--line); color:var(--ink-soft); padding:7px 16px; border-radius:20px; font-size:0.85rem; cursor:pointer;}
.archive-year-tabs button.active{background:var(--amber); border-color:var(--amber); color:var(--snow); font-weight:600;}
.archive-summary{display:flex; gap:40px; padding:20px 0 28px; flex-wrap:wrap;}
.archive-summary .a-stat{font-family:var(--serif); font-size:1.6rem; color:var(--midnight);}
.archive-summary .a-label{font-size:0.8rem; color:var(--ink-soft);}

/* ===== TIMELINE ===== */
/* ===== TIMELINE ===== */
/* A vertical list rather than a horizontal scroll track, so it can grow
   with new entries indefinitely without ever causing page overflow. */
.timeline{position:relative; max-width:640px; padding-left:30px; border-left:2px solid var(--line);}
.tl-item{position:relative; padding-bottom:30px;}
.tl-item:last-child{padding-bottom:0;}
.tl-item::before{content:''; position:absolute; left:-38px; top:5px; width:11px; height:11px; border-radius:50%; background:var(--amber); border:2px solid var(--paper);}
.tl-year{font-family:var(--serif); font-size:1.3rem; color:var(--amber); font-weight:600;}
.tl-desc{font-size:0.92rem; color:var(--ink-soft); margin-top:6px; line-height:1.55;}
.tl-item.paused{opacity:0.6;}
.tl-item.paused .tl-year{color:var(--ink-soft);}
.tl-item.paused::before{background:var(--ink-soft); border-color:var(--paper);}

/* ===== QUOTE ===== */
.quote-block{border-left:2px solid var(--amber); padding-left:28px; max-width:640px;}
.quote-block p{font-family:var(--serif); font-size:1.3rem; font-style:italic; color:var(--midnight); line-height:1.5;}
.quote-block cite{display:block; margin-top:14px; font-size:0.85rem; font-style:normal; color:var(--ink-soft);}
.quote-attribution{display:flex; align-items:center; gap:12px; margin-top:16px;}
.quote-attribution img{width:44px; height:44px; border-radius:50%; object-fit:cover; flex:0 0 auto;}
.quote-attribution .qa-text{font-size:0.85rem; color:var(--ink-soft); text-align:left;}
.quote-attribution .qa-text strong{display:block; color:var(--ink); font-weight:600; font-size:0.9rem;}
.founder-quote-photo{width:120px; height:120px; border-radius:50%; object-fit:cover; margin:0 auto 22px; display:block; box-shadow:0 10px 24px rgba(42,72,63,0.18);}
.founder-quote-name{margin-top:16px; font-size:0.95rem; color:var(--ink);}
.founder-quote-name strong{display:block; font-weight:600;}
.founder-quote-name span{color:var(--ink-soft); font-size:0.88rem;}

/* ===== FOUNDER PORTRAIT ===== */
.founder-card{display:flex; flex-direction:column; align-items:center; text-align:center; margin-bottom:36px;}
.founder-card img{width:132px; height:132px; border-radius:50%; object-fit:cover; margin-bottom:14px; border:3px solid var(--paper); box-shadow:0 10px 24px rgba(42,72,63,0.18);}
.founder-card .fname{font-family:var(--serif); font-size:1.1rem; color:var(--midnight); font-weight:600;}
.founder-card .frole{font-size:0.85rem; color:var(--ink-soft); margin-top:2px;}

/* ===== TESTIMONIAL GRID (static, no slider) ===== */
.ts-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line);}
.ts-grid-item{background:var(--paper); padding:40px 36px; display:flex; flex-direction:column;}
.ts-grid-item .tg-mark{font-family:var(--serif); font-size:3rem; color:var(--amber); line-height:1; margin-bottom:8px;}
.ts-grid-item .tg-quote{font-family:var(--serif); font-size:1.15rem; font-style:italic; color:var(--midnight); line-height:1.55; flex:1;}
.ts-grid-item .tg-who{display:flex; align-items:center; gap:14px; margin-top:26px;}
.ts-grid-item .tg-who img{width:56px; height:56px; border-radius:50%; object-fit:cover; flex:0 0 auto;}
.ts-grid-item .tg-who-text strong{display:block; font-weight:600; font-size:0.95rem; color:var(--ink);}
.ts-grid-item .tg-who-text span{font-size:0.85rem; color:var(--ink-soft);}
@media (max-width:720px){.ts-grid{grid-template-columns:1fr;}}

/* ===== TESTIMONIAL ROW (horizontal scroll, bounded height, each card substantial) ===== */
.tg-row-wrap{position:relative;}
.tg-row{display:flex; gap:22px; overflow-x:auto; scroll-behavior:smooth; padding:4px 4px 4px; scrollbar-width:none; -ms-overflow-style:none;}
.tg-row::-webkit-scrollbar{display:none;}
.tg-row::-webkit-scrollbar{height:6px;}
.tg-card{flex:0 0 min(420px, 84vw); background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:40px 36px; display:flex; flex-direction:column;}
.tg-card .tg-mark{font-family:var(--serif); font-size:3.2rem; color:var(--amber); line-height:1; margin-bottom:8px;}
.tg-card .tg-quote{font-family:var(--serif); font-size:1.18rem; font-style:italic; color:var(--midnight); line-height:1.6; flex:1;}
.tg-card .tg-who{display:flex; align-items:center; gap:16px; margin-top:28px;}
.tg-card .tg-who img{width:64px; height:64px; border-radius:50%; object-fit:cover; flex:0 0 auto;}
.tg-card .tg-who-text strong{display:block; font-weight:600; font-size:1rem; color:var(--ink);}
.tg-card .tg-who-text span{font-size:0.86rem; color:var(--ink-soft);}
.tg-arrow{position:absolute; top:42%; transform:translateY(-50%); background:var(--snow); border:1px solid var(--line); color:var(--ink); width:38px; height:38px; border-radius:50%; cursor:pointer; font-size:1.2rem; display:flex; align-items:center; justify-content:center; z-index:2;}
.tg-arrow.prev{left:-18px;}
.tg-arrow.next{right:-18px;}
@media (max-width:760px){.tg-arrow{display:none;}}
.tg-dots{display:flex; gap:8px; justify-content:center; margin-top:18px;}
.tg-dots button{width:8px; height:8px; border-radius:50%; background:var(--line); border:none; cursor:pointer; padding:0;}
.tg-dots button.active{background:var(--amber); width:20px; border-radius:14px; transition:width 0.25s;}

/* ===== TESTIMONIAL SLIDER ===== */
.ts-slider{max-width:540px; margin:0 auto; text-align:center; position:relative;}
.ts-slide{display:none;}
.ts-slide.active{display:block;}
.ts-photo{width:84px; height:84px; border-radius:50%; object-fit:cover; margin:0 auto 20px; border:3px solid var(--paper); box-shadow:0 10px 22px rgba(42,72,63,0.16);}
.ts-quote{font-family:var(--serif); font-size:1.2rem; font-style:italic; color:var(--midnight); line-height:1.55;}
.ts-who{margin-top:16px; font-size:0.88rem; color:var(--ink-soft);}
.ts-who strong{display:block; color:var(--ink); font-weight:600; font-size:0.95rem; margin-bottom:2px;}
.ts-dots{display:flex; gap:8px; justify-content:center; margin-top:30px;}
.ts-dots button{width:8px; height:8px; border-radius:50%; background:var(--line); border:none; cursor:pointer; padding:0;}
.ts-dots button.active{background:var(--amber); width:20px; border-radius:14px; transition:width 0.25s;}
.ts-arrow{position:absolute; top:38%; transform:translateY(-50%); background:var(--snow); border:1px solid var(--line); color:var(--ink); width:36px; height:36px; border-radius:50%; cursor:pointer; font-size:1.15rem; display:flex; align-items:center; justify-content:center;}
.ts-arrow.prev{left:-52px;}
.ts-arrow.next{right:-52px;}
@media (max-width:680px){.ts-arrow{display:none;}}

/* Split layout variant: photo left, quote right */
.ts-slider.ts-split{max-width:640px; text-align:left;}
.ts-slider.ts-split .ts-slide{display:none; align-items:center; gap:28px;}
.ts-slider.ts-split .ts-slide.active{display:flex;}
.ts-slider.ts-split .ts-photo{width:100px; height:100px; border-radius:50%; margin:0; flex:0 0 auto; border:none; object-fit:cover;}
.ts-slider.ts-split .ts-text{flex:1; min-width:0;}
.ts-slider.ts-split .ts-arrow.prev{left:-68px;}
.ts-slider.ts-split .ts-arrow.next{right:-68px;}
.ts-slider.ts-split .ts-quote{font-size:1.08rem;}
.ts-slider.ts-split .ts-who{margin-top:12px;}
.ts-slider.ts-split .ts-dots{justify-content:center; margin-left:0;}
@media (max-width:600px){
  .ts-slider.ts-split .ts-slide.active{flex-direction:column; text-align:center;}
  .ts-slider.ts-split .ts-photo{width:96px; height:96px; margin:0 auto;}
  .ts-slider.ts-split .ts-dots{justify-content:center; margin-left:0;}
}

/* ===== TESTIMONIALS ===== */
.testimonial-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line);}
.testimonial-card{background:var(--snow); padding:36px 34px;}
.testimonial-card p.quote{font-family:var(--serif); font-size:1.1rem; font-style:italic; color:var(--midnight); line-height:1.55; margin-bottom:18px;}
.testimonial-card .who{font-size:0.85rem; color:var(--ink-soft);}
.testimonial-card .who strong{color:var(--ink); font-weight:600; display:block; font-size:0.92rem; margin-bottom:2px;}

/* ===== NARRATIVE / ABOUT ===== */
.narrative{}
.narrative p{color:var(--ink-soft); font-size:1.02rem; margin-bottom:20px;}
.narrative p:last-child{margin-bottom:0;}
.pull-quote{font-family:var(--serif); font-size:1.4rem; font-style:italic; color:var(--midnight); line-height:1.5; margin:36px 0; padding-left:24px; border-left:2px solid var(--amber);}
.signoff{font-size:0.85rem; color:var(--ink-soft); text-align:right;}

/* ===== PROGRAM RUNNING ORDER ===== */
.program-list{border-top:1px solid var(--line);}
.program-item{display:grid; grid-template-columns:96px 1fr; gap:20px; padding:22px 0; border-bottom:1px solid var(--line); align-items:center;}
.program-thumb{position:relative; width:96px; height:96px; border-radius:16px; overflow:hidden; flex:0 0 auto; background-size:cover; background-position:center;}
.program-thumb .pnum{position:absolute; top:6px; left:6px; background:rgba(42,72,63,0.82); color:var(--amber-soft); font-family:var(--serif); font-size:0.85rem; font-weight:600; width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center;}
.program-item h4{font-family:var(--serif); font-size:1.1rem; color:var(--midnight); margin-bottom:4px;}
.program-item p{font-size:0.9rem; color:var(--ink-soft);}
.program-item .ptag{font-size:0.72rem; color:var(--amber); letter-spacing:0.03em; margin-bottom:3px; font-weight:600;}
.program-item.is-act{background:#FBF9F4; margin:0 -28px; padding:22px 28px; border-bottom:1px solid var(--line); border-radius:14px;}
@media (max-width:640px){
  .program-item{grid-template-columns:72px 1fr; gap:14px;}
  .program-thumb{width:72px; height:72px;}
}

/* ===== PHOTO FILTER TOOLBAR ===== */
.photo-toolbar{display:flex; gap:16px; flex-wrap:wrap; margin-bottom:24px;}
.photo-toolbar select{padding:10px 14px; border:1px solid var(--line); border-radius:12px; font-family:var(--sans); font-size:0.92rem; background:#fff; min-width:160px;}
.photo-card{position:relative; border-radius:14px; overflow:hidden; aspect-ratio:1;}
.photo-card.hidden{display:none;}
.photo-card{cursor:pointer; background-size:cover; background-position:center;}
.photo-card .count-badge{position:absolute; top:8px; right:8px; background:rgba(0,0,0,0.55); color:#fff; font-size:0.7rem; padding:2px 9px; border-radius:20px;}
.photo-card .sample-badge{position:absolute; top:8px; left:8px; background:rgba(217,143,43,0.85); color:#1A1A22; font-size:0.65rem; font-weight:700; padding:2px 8px; border-radius:20px; letter-spacing:0.03em;}

/* ===== PHOTO LIGHTBOX ===== */
.lightbox-overlay{position:fixed; inset:0; background:rgba(10,15,13,0.88); z-index:300; display:flex; align-items:center; justify-content:center; padding:24px;}
.lightbox-box{position:relative; max-width:800px; width:100%;}
.lightbox-close{position:absolute; top:-40px; right:0; background:none; border:none; color:var(--snow); font-size:2rem; cursor:pointer; line-height:1;}
.lightbox-image-wrap{position:relative; display:flex; align-items:center; justify-content:center; background:#000; border-radius:12px; overflow:hidden;}
.lightbox-image-wrap img{max-width:100%; max-height:70vh; width:auto; height:auto; display:block;}
.lightbox-arrow{position:absolute; top:50%; transform:translateY(-50%); background:rgba(0,0,0,0.4); color:#fff; border:none; width:42px; height:42px; border-radius:50%; font-size:1.4rem; cursor:pointer; z-index:2;}
.lightbox-arrow.prev{left:12px;}
.lightbox-arrow.next{right:12px;}
.lightbox-caption{display:flex; justify-content:space-between; color:var(--snow); font-size:0.9rem; margin-top:14px;}
.lightbox-caption #lightboxCount{color:var(--snow-dim);}
.photo-card{position:relative;}
.photo-card .cap{position:absolute; left:8px; bottom:8px; z-index:1; display:flex; flex-direction:column; align-items:flex-start; gap:4px; aspect-ratio:auto;}
.photo-card .cap .cap-main{background:var(--cranberry); color:var(--snow); font-weight:600; font-size:0.72rem; padding:2px 8px; border-radius:5px; line-height:1.1; display:inline-block; aspect-ratio:auto; width:auto; height:auto;}
.photo-card .cap .cap-date{background:var(--midnight); color:var(--snow); opacity:1; font-size:0.66rem; padding:2px 8px; border-radius:5px; line-height:1.1; display:inline-block; aspect-ratio:auto; width:auto; height:auto;}

/* ===== MEDIA ===== */
.media-grid{display:grid; grid-template-columns:2fr 1fr; gap:20px;}
.media-main{background-image:linear-gradient(145deg, rgba(52,83,73,0.5), rgba(42,72,63,0.72)), url('https://picsum.photos/seed/christmas-miracle-video/960/540'); background-size:cover; background-position:center; aspect-ratio:16/9; border-radius:14px; display:flex; align-items:center; justify-content:center; color:var(--snow); position:relative; cursor:pointer;}
.play-btn{width:64px; height:64px; border-radius:50%; background:rgba(245,243,238,0.15); border:1px solid rgba(245,243,238,0.4); display:flex; align-items:center; justify-content:center; font-size:1.4rem;}
.media-side{display:flex; flex-direction:column; gap:20px;}
.media-thumb{background-size:cover; background-position:center; border-radius:14px; flex:1; display:flex; align-items:flex-end; padding:16px; color:var(--snow); font-size:0.85rem; cursor:pointer;}
.media-side .media-thumb:nth-child(1){background-image:linear-gradient(145deg, rgba(58,45,32,0.45), rgba(42,72,63,0.72)), url('https://picsum.photos/seed/christmas-miracle-bts1/480/520');}
.media-side .media-thumb:nth-child(2){background-image:linear-gradient(145deg, rgba(60,45,40,0.45), rgba(42,72,63,0.72)), url('https://picsum.photos/seed/christmas-miracle-bts2/480/520');}
.photo-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:14px;}
.photo-grid div, .photo-grid .photo-card{aspect-ratio:1; border-radius:14px; background-size:cover; background-position:center;}
.photo-grid > div:nth-child(6n+1){background-image:linear-gradient(145deg, rgba(52,83,73,0.35), rgba(42,72,63,0.55)), url('https://picsum.photos/seed/christmas-miracle-g1/400/400');}
.photo-grid > div:nth-child(6n+2){background-image:linear-gradient(145deg, rgba(58,45,32,0.35), rgba(42,72,63,0.55)), url('https://picsum.photos/seed/christmas-miracle-g2/400/400');}
.photo-grid > div:nth-child(6n+3){background-image:linear-gradient(145deg, rgba(63,50,25,0.35), rgba(42,72,63,0.55)), url('https://picsum.photos/seed/christmas-miracle-g3/400/400');}
.photo-grid > div:nth-child(6n+4){background-image:linear-gradient(145deg, rgba(60,45,40,0.35), rgba(52,83,73,0.55)), url('https://picsum.photos/seed/christmas-miracle-g4/400/400');}
.photo-grid > div:nth-child(6n+5){background-image:linear-gradient(145deg, rgba(58,32,32,0.35), rgba(42,72,63,0.55)), url('https://picsum.photos/seed/christmas-miracle-g5/400/400');}
.photo-grid > div:nth-child(6n+6){background-image:linear-gradient(145deg, rgba(40,65,58,0.35), rgba(42,72,63,0.55)), url('https://picsum.photos/seed/christmas-miracle-g6/400/400');}

/* ===== COMPANY / CAST ===== */
.company-grid{display:grid; grid-template-columns:repeat(3,1fr);}
@media (max-width:480px){.company-grid{grid-template-columns:1fr;}}
.company-card{background:var(--snow); padding:18px 20px; display:flex; align-items:center; gap:14px; text-align:left; transition:background 0.15s; border-bottom:1px solid var(--line); border-right:1px solid var(--line);}
.company-card:nth-child(3n){border-right:none;}
@media (max-width:480px){.company-card{border-right:none;}}
.company-card:hover{background:var(--paper);}
.avatar{width:76px; height:76px; flex:0 0 auto; aspect-ratio:1; border-radius:50%; overflow:hidden; margin-bottom:0; background:var(--paper);}
.avatar img{width:100%; height:100%; object-fit:cover; display:block;}
.company-card .text{display:flex; flex-direction:column;}
.company-card .role{color:var(--amber); font-size:0.78rem; font-weight:600; letter-spacing:0.02em; order:1;}
.company-card .name{font-family:var(--serif); font-size:1.1rem; color:var(--ink); margin-top:3px; order:2;}
.company-card .since{color:var(--ink-soft); font-size:0.8rem; margin-top:2px; display:block; order:3;}
.avatar.no-photo{display:flex; align-items:center; justify-content:center;}
.avatar-initial{width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-family:var(--serif); font-size:1.6rem; font-weight:600; color:var(--amber); background:var(--paper);}
.company-section-title{font-family:var(--serif); font-size:1.25rem; margin:48px 0 22px; color:var(--midnight);}
.company-section-title:first-child{margin-top:0;}

/* ===== INVOLVE / CARDS ===== */
.involve-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line);}
.involve-card{background:var(--snow); padding:36px 30px;}
.involve-card h4{font-family:var(--serif); font-size:1.25rem; margin-bottom:10px; color:var(--midnight);}
.involve-card p{font-size:0.92rem; color:var(--ink-soft); margin-bottom:18px;}
.involve-card a{font-size:0.88rem; font-weight:600; color:var(--amber); border-bottom:1px solid var(--amber); padding-bottom:2px;}

.role-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
.role-card{border:1px solid var(--line); padding:28px; border-radius:14px;}
.role-card h4{font-family:var(--serif); font-size:1.15rem; margin-bottom:8px;}
.role-card p{font-size:0.9rem; color:var(--ink-soft);}
.role-card .tag{display:inline-block; font-size:0.75rem; background:#F0EAD8; color:#8a6d1f; padding:3px 10px; border-radius:20px; margin-top:12px;}

/* ===== FORMS ===== */
.form-card{background:var(--paper); border:1px solid var(--line); border-radius:16px; padding:40px; max-width:640px; margin:0 auto;}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px;}
.form-row.full{grid-template-columns:1fr;}
.field label{display:block; font-size:0.82rem; color:var(--ink-soft); margin-bottom:6px;}
.field input, .field select, .field textarea{
  width:100%; padding:12px 14px; border:1px solid var(--line); border-radius:12px; font-family:var(--sans); font-size:0.95rem; background:#fff;
}
.field textarea{resize:vertical; min-height:110px;}
.form-submit{margin-top:8px; width:100%; background:var(--amber); color:var(--snow); border:none; padding:14px; font-weight:600; border-radius:12px; font-size:0.95rem; cursor:pointer;}

/* ===== BUS DRIVER RECRUITMENT (get-involved.html#bus-driver) ===== */
#bus-driver{scroll-margin-top:64px; padding:0;}
.bus-apply-wrap{padding:80px 32px 96px;}
.bus-band{padding:80px 32px 88px; position:relative; overflow:hidden;}
.bus-band-inner{max-width:1140px; margin:0 auto; display:flex; flex-wrap:wrap; align-items:center; gap:40px 56px;}
.bus-band-copy{flex:999 1 520px; min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:18px;}
.bus-band .page-eyebrow{margin:0; font-weight:600; letter-spacing:0.16em;}
.bus-band h3{font-family:var(--serif); font-weight:700; font-size:clamp(2.2rem,4.6vw,3.4rem); line-height:1.05; color:var(--snow); text-wrap:balance;}
.bus-band-intro{color:var(--snow-dim); font-size:1.08rem; line-height:1.65; max-width:560px;}
.bus-chips{display:flex; flex-wrap:wrap; gap:10px; margin-top:6px;}
.bus-chip{padding:8px 16px; border:1.5px solid var(--amber-soft); border-radius:999px; font-size:0.88rem; font-weight:600; color:var(--snow); white-space:nowrap;}
.bus-band-art{flex:1 1 280px; min-width:0; display:flex; justify-content:center;}
.bus-band-art svg{width:100%; max-width:340px; height:auto;}

.bus-apply{display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:48px; align-items:start;}
.bus-offer h4, .bus-form-card h4{font-family:var(--serif); font-size:1.5rem; font-weight:600; color:var(--midnight); margin-bottom:18px;}
.bus-offer-list{display:flex; flex-direction:column;}
.bus-offer-list li{padding:16px 0; border-bottom:1px solid var(--line);}
.bus-offer-list li:first-child{padding-top:0;}
.bus-offer-list strong{display:block; font-family:var(--serif); font-weight:700; color:var(--amber); font-size:1.02rem; margin-bottom:2px;}
.bus-offer-list span{color:var(--ink-soft); font-size:0.95rem;}
.bus-offer-contact{margin-top:20px; font-size:0.95rem; color:var(--ink-soft);}
.bus-offer-contact a{color:var(--amber); font-weight:600; border-bottom:1px solid currentColor;}
.bus-form-card{max-width:none; margin:0;}
.choice-group{border:0; margin:0 0 16px; padding:0; min-width:0;}
.choice-group legend{font-size:0.82rem; color:var(--ink-soft); margin-bottom:8px; padding:0;}
.choice-pills{display:flex; flex-wrap:wrap; gap:10px;}
.choice-pills label{display:flex; align-items:center; gap:9px; min-height:44px; padding:0 16px; border:1px solid var(--line); border-radius:999px; background:#fff; font-size:0.92rem; color:var(--ink); cursor:pointer;}
.choice-pills label:has(input:checked){border-color:var(--amber); box-shadow:inset 0 0 0 1px var(--amber);}
.choice-pills input, .consent input{accent-color:var(--amber); width:18px; height:18px; margin:0; flex:0 0 auto;}
.choice-pills input:focus-visible, .consent input:focus-visible{outline:2px solid var(--midnight); outline-offset:2px;}
.consent{display:flex; align-items:flex-start; gap:12px; font-size:0.88rem; line-height:1.5; color:var(--ink-soft); margin:4px 0 8px; cursor:pointer;}
.consent input{margin-top:2px;}
@media (max-width:860px){
  .bus-band{padding:64px 20px 72px;}
  .bus-apply-wrap{padding:64px 20px 80px;}
  .bus-band-art{display:none;}
  .bus-apply{grid-template-columns:1fr; gap:40px;}
}
@media (max-width:640px){
  .bus-form-card{padding:28px 20px;}
}

/* ===== DONATE METHODS (bank transfer card) ===== */
.donate-methods{display:grid; grid-template-columns:1fr 1fr; gap:24px; margin-top:32px;}
.donate-methods-single{grid-template-columns:1fr; max-width:640px; margin-left:auto; margin-right:auto;}
.donate-method-card{border:1px solid rgba(245,243,238,0.2); background:rgba(245,243,238,0.04); border-radius:16px; padding:28px;}
.donate-method-card h4{font-family:var(--serif); font-size:1.15rem; margin-bottom:8px;}
.bank-details{margin-top:16px; display:flex; flex-direction:column; gap:10px;}
.bank-details > div{display:flex; justify-content:space-between; gap:12px; border-bottom:1px solid rgba(245,243,238,0.12); padding-bottom:8px;}
.bank-details dt{color:var(--snow-dim); font-size:0.82rem;}
.bank-details dd{color:var(--snow); font-size:0.9rem; font-weight:600; text-align:right; font-family:var(--sans); letter-spacing:0.02em;}
@media(max-width:640px){
  .donate-methods{grid-template-columns:1fr;}
  .bank-details > div{flex-direction:column; gap:2px;}
  .bank-details dd{text-align:left;}
}

.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:flex-start;}
.info-block{margin-bottom:28px;}
.info-block h5{font-family:var(--serif); font-size:1.05rem; margin-bottom:8px; color:var(--midnight);}
.info-block p{font-size:0.92rem; color:var(--ink-soft);}

/* ===== FOOTER ===== */
footer{background:var(--midnight); color:var(--snow-dim); padding:64px 32px 32px; margin-top:auto;}
.footer-grid{max-width:1140px; margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid rgba(245,243,238,0.12);}
.footer-grid h5{color:var(--snow); font-size:0.9rem; margin-bottom:14px; font-weight:600;}
.footer-grid ul{display:flex; flex-direction:column; gap:8px; font-size:0.88rem;}
.footer-bottom{max-width:1140px; margin:24px auto 0; display:flex; justify-content:space-between; font-size:0.8rem; flex-wrap:wrap; gap:10px;}

/* ===== WINTER ORNAMENTS (decorative icon set — Style C: hand-drawn doodle) =====
   Shared <symbol> library is injected once by nav.js (see wmInjectIconLibrary).
   <use> clones a symbol's content into a shadow tree that ordinary descendant
   selectors can't reach, so every icon is colored on the <use> element itself
   via SVG inheritance (fill/stroke/color), never via an #id or child selector. */
.wm-icon{fill:none; stroke:var(--amber-soft); stroke-width:2; stroke-linejoin:round; stroke-linecap:round; color:var(--amber-soft); display:block;}
.wm-icon.wm-cookie{fill:rgba(217,160,91,0.35);}
.wm-w1{transform:rotate(-6deg);}
.wm-w2{transform:rotate(4deg);}
.wm-w3{transform:rotate(-3deg);}
.wm-w4{transform:rotate(7deg);}
.wm-w5{transform:rotate(-8deg);}

/* Page-header confetti: a handful of small icons scattered in the corners
   of the dark hero band, echoing the winter-ornament-study.html comparison. */
.page-header{ /* establishes the positioning context for .wm-confetti */ }
.wm-confetti{position:absolute; inset:0; pointer-events:none; z-index:1;}
.wm-confetti .wm-icon{position:absolute; opacity:0.8; stroke:var(--amber-soft);}

/* Section-head accent: one small icon above the heading, on any .section-head
   across the site — a light touch, not a repeat of the header confetti. */
.section-head{position:relative;}
.wm-section-icon{width:26px; height:26px; margin-bottom:10px;}

/* Photo-card corner badge (media.html gallery) — sits top-left, opposite the
   existing +N count-badge which stays top-right. */
.photo-card .wm-card-badge{
  position:absolute; top:8px; left:8px; z-index:1;
  width:26px; height:26px; padding:4px; border-radius:50%;
  background:rgba(250,243,232,0.85); backdrop-filter:blur(2px);
}
.photo-card .wm-card-badge .wm-icon{width:100%; height:100%; stroke:var(--amber);}

@media (max-width:860px){
  .story-grid, .involve-grid, .role-grid, .media-grid, .contact-grid, .form-row{grid-template-columns:1fr;}
  .story-panel.p1{border-right:none; border-bottom:1px solid var(--line);}
  .involve-card{border-bottom:1px solid var(--line);}
  .footer-grid{grid-template-columns:1fr 1fr;}
  .photo-grid{grid-template-columns:repeat(2,1fr);}
}
