:root {
  --pink:#E37FB6; --pink-deep:#B5507F;
  --ink:#232120; --ink-soft:#6B655F; --ink-softer:#4a453f;
  --cream:#F7F2EA; --dark:#34312F; --dark-2:#2B2926; --dark-3:#1c1c1c;
  --white:#FFFFFF; --line:rgba(0,0,0,.08);
  --display:'Fraunces', Georgia, serif;
  --body:'Work Sans', system-ui, sans-serif;
  --script:'Caveat', cursive;
  --container:1180px;
  color-scheme: light;
}
* { box-sizing: border-box; }
html { color-scheme: light; }
body { margin:0; background:var(--cream); color:var(--ink); font-family:var(--body); line-height:1.6; -webkit-font-smoothing:antialiased; }
img { max-width:100%; display:block; }
a { color:inherit; text-decoration:none; }
ul { margin:0; padding:0; }
.container { max-width:var(--container); margin:0 auto; padding:0 32px; }
@media (max-width:640px){ .container{ padding:0 22px; } }

.eyebrow { text-transform:uppercase; letter-spacing:.16em; font-size:12.5px; font-weight:700; color:var(--pink-deep); margin:0 0 16px; }
.eyebrow--on-dark { color:var(--pink); }
h1,h2,h3 { font-family:var(--display); font-weight:600; margin:0; }
.display-hero { font-size:clamp(34px,5.5vw,54px); text-transform:uppercase; line-height:1.06; color:#fff; letter-spacing:-.01em; font-weight:600; }
.display-h2 { font-size:clamp(26px,4vw,38px); text-transform:uppercase; line-height:1.12; letter-spacing:-.005em; }
.script-accent { font-family:var(--script); font-weight:700; font-size:clamp(20px,2.6vw,27px); line-height:1.25; }
p.lede { font-size:16.5px; color:var(--ink-soft); max-width:46ch; }

.btn { display:inline-flex; align-items:center; justify-content:center; padding:15px 32px; border-radius:999px; font-weight:700; text-transform:uppercase; letter-spacing:.09em; font-size:12.5px; border:none; cursor:pointer; transition:opacity .18s ease, transform .18s ease; }
.btn-pink { background:var(--pink); color:#2B2624; }
.btn-pink:hover { opacity:.89; transform:translateY(-1px); }
.btn-ghost { color:#fff; border:1.5px solid rgba(255,255,255,.55); }
.btn-ghost:hover { border-color:#fff; }
.link-secondary { font-size:14px; font-weight:600; color:var(--ink); border-bottom:1px solid var(--line); padding-bottom:1px; }

section { padding:80px 0; }
@media (max-width:900px){ section{ padding:56px 0; } }
.section--dark { background:var(--dark); color:#fff; }
.section--cream { background:var(--cream); color:var(--ink); }
.section--white { background:var(--white); color:var(--ink); }

/* ---------- sticky top menu ----------
   The header stays at the top while scrolling. --header-h is its height, used
   so that links to a part of a page (#destinations, the enquiry form) don't
   land hidden underneath it. */
:root { --header-h:84px; }
html { scroll-padding-top:calc(var(--header-h) + 12px); }
.site-header { position:sticky; top:0; z-index:900; box-shadow:0 1px 0 rgba(255,255,255,.06), 0 8px 22px rgba(0,0,0,.14); }
.nav-row { display:flex; justify-content:space-between; align-items:center; padding:18px 0; min-height:var(--header-h); }
.main-nav .btn { padding:12px 26px; }
.logo { display:flex; align-items:center; gap:14px; }
.logo img { height:28px; width:auto; display:block; }
.logo-divider { width:1px; height:30px; background:rgba(255,255,255,.25); }
.logo-title-block { display:flex; flex-direction:column; line-height:1.2; }
.logo-title-block .t1 { font-family:var(--display); font-weight:600; font-size:17px; color:#fff; }
.logo-title-block .t2 { font-family:var(--body); font-weight:400; font-size:12.5px; color:rgba(255,255,255,.55); margin-top:1px; }
.main-nav { display:flex; align-items:center; gap:22px; }
.main-nav a { color:rgba(255,255,255,.75); font-size:14px; }
.main-nav a:hover { color:#fff; }
/* Phones and small tablets: keep logo + WhatsApp button only (the text links
   are all on the homepage or in the footer anyway). */
@media (max-width:860px){ .main-nav a:not(.btn) { display:none; } }
@media (max-width:520px){
  :root { --header-h:62px; }
  .nav-row { padding:12px 0; gap:12px; }
  .logo { gap:10px; }
  .logo img { height:22px; }
  .logo-divider { height:24px; }
  .logo-title-block .t1 { font-size:14px; }
  .logo-title-block .t2 { display:none; }
  .main-nav .btn { padding:9px 14px; font-size:11px; white-space:nowrap; }
}
@media (max-width:430px){ .logo-divider, .logo-title-block { display:none; } }

.two-col { display:flex; gap:56px; align-items:flex-start; }
@media (max-width:860px){ .two-col{ flex-direction:column; align-items:stretch; } }
.col { flex:1; min-width:0; }
.rounded-img { border-radius:18px; overflow:hidden; background:#00000010; }
.rounded-img img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s cubic-bezier(.22,.61,.36,1); }
.rounded-img:hover img { transform:scale(1.04); }

/* ---------- founder ---------- */
.founder-credit { font-weight:700; }
blockquote.quote { font-family:var(--display); font-style:italic; margin:0; font-size:clamp(19px,2.2vw,23px); line-height:1.42; }
.signature { font-family:var(--script); font-weight:700; color:var(--pink-deep); font-size:clamp(24px,3vw,30px); display:inline-block; margin-top:14px; }
.cred-slot { margin-top:20px; font-size:13.5px; color:var(--ink-soft); border-left:2px solid var(--pink); padding-left:14px; }
.founder-tags { display:flex; gap:10px; flex-wrap:wrap; }
.founder-tags span { font-size:12.5px; font-weight:600; border:1.5px solid var(--line); border-radius:999px; padding:7px 15px; color:var(--ink); }

/* ---------- step cards (how it works) ---------- */
.steps-grid { display:flex; flex-direction:column; gap:14px; }
.step-card { background:var(--cream); color:var(--ink); border-radius:14px; padding:22px 26px; }
.step-card .step-num { font-family:var(--display); color:var(--pink-deep); font-style:italic; font-size:14px; display:block; margin-bottom:6px; }
.step-card h3 { font-size:17px; text-transform:uppercase; margin-bottom:6px; }
.step-card p { margin:0; font-size:14px; color:var(--ink-soft); }

/* ---------- trip finder (catalog-specific, re-skinned to brand) ---------- */
.finder-top { display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:10px; margin-bottom:18px; }
.finder-label { font-family:monospace; font-size:12px; letter-spacing:.05em; text-transform:uppercase; color:var(--ink-soft); font-weight:700; margin:0; }
.finder-note { font-size:14.5px; color:var(--ink-soft); margin:0; max-width:44ch; }
.finder-card { background:var(--white); border-radius:18px; padding:30px 32px; }
.finder-sub { font-size:11px; font-weight:700; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.08em; margin:0 0 10px; }
.kind-toggle-group { display:flex; gap:8px; margin-bottom:22px; }
.kind-toggle { padding:10px 20px; border:1.5px solid var(--line); border-radius:999px; background:#fff; font-size:13.5px; font-weight:700; cursor:pointer; color:var(--ink); }
.kind-toggle.active { background:var(--dark); color:#fff; border-color:var(--dark); }
.discovery-note { font-size:13px; color:var(--ink-soft); margin:-8px 0 20px; }
.discovery-note strong { color:var(--ink); }
.chip-toggle-group { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.chip-toggle { padding:9px 17px; border:1.5px solid var(--line); border-radius:999px; background:#fff; font-size:13px; font-weight:600; cursor:pointer; color:var(--ink); font-family:var(--body); }
.chip-toggle.active { background:var(--pink); color:#2B2624; border-color:var(--pink); }
.finder-grid { display:grid; grid-template-columns:repeat(4,1fr) auto; gap:14px; align-items:end; }
.field label { display:block; font-size:12px; font-weight:700; color:var(--ink-soft); margin-bottom:7px; }
.field select, .field input { width:100%; padding:12px 13px; border:1.5px solid var(--line); border-radius:10px; background:#fff; font-family:var(--body); font-size:14.5px; color:var(--ink); }
.field-pair { display:flex; gap:6px; }
.btn-find { padding:13px 24px; background:var(--dark); color:#fff; border:none; border-radius:10px; font-weight:700; font-size:14px; cursor:pointer; text-transform:uppercase; letter-spacing:.06em; white-space:nowrap; }
.btn-find:hover { opacity:.9; }
.btn-ghost-find { background:transparent !important; color:var(--ink-soft) !important; border:1.5px solid var(--line) !important; text-transform:uppercase; letter-spacing:.06em; font-weight:700; font-size:14px; padding:13px 24px; border-radius:10px; cursor:pointer; }
.finder-more { margin-top:16px; border-top:1px dashed var(--line); padding-top:14px; }
.finder-more > summary { cursor:pointer; font-size:12.5px; color:var(--pink-deep); list-style:none; font-weight:700; text-transform:uppercase; letter-spacing:.04em; }
.finder-more > summary::-webkit-details-marker { display:none; }
.finder-more > summary::before { content:'+ more filters (length, interests)'; }
.finder-more[open] > summary::before { content:'\2212 fewer filters'; }
.finder-more-body { margin-top:16px; display:grid; grid-template-columns:1fr 2fr; gap:24px; }
@media (max-width:820px){ .finder-more-body{ grid-template-columns:1fr; } }
@media (max-width:900px){ .finder-grid{ grid-template-columns:1fr 1fr; } }

/* ---------- results / camp cards ---------- */
.results-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:26px; flex-wrap:wrap; gap:10px; }
.results-count { font-size:13px; color:var(--ink-soft); }
.no-results { font-size:14px; color:var(--ink-soft); padding:40px 0; text-align:center; border:1px dashed var(--line); border-radius:14px; }
.grid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
@media (max-width:980px){ .grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .grid{ grid-template-columns:1fr; } }

.camp-card { background:var(--white); border-radius:16px; overflow:hidden; text-decoration:none; color:var(--ink); display:block; transition:transform .3s ease, box-shadow .3s ease; }
.camp-card:hover { transform:translateY(-4px); box-shadow:0 16px 32px rgba(0,0,0,.10); }
.camp-photo { height:170px; position:relative; }
.camp-photo::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0) 45%, rgba(0,0,0,.42) 100%); }
.camp-age-pill { position:absolute; z-index:1; top:14px; right:14px; background:rgba(255,255,255,.94); color:var(--ink); font-size:11.5px; font-weight:700; padding:5px 12px; border-radius:999px; }
.camp-loc { position:absolute; z-index:1; left:16px; bottom:12px; color:#fff; font-size:12.5px; font-weight:600; letter-spacing:.02em; }
.camp-body { padding:22px; }
.camp-type { font-size:11px; color:var(--pink-deep); text-transform:uppercase; letter-spacing:.08em; font-weight:700; margin:0 0 8px; }
.camp-title { font-family:var(--display); font-weight:600; font-size:19px; line-height:1.22; margin:0 0 10px; }
.camp-hook { font-size:13.8px; color:var(--ink-soft); margin:0 0 18px; }
.camp-facts { display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding-top:14px; }
.camp-facts .len { font-size:12.5px; color:var(--ink-soft); font-weight:600; text-transform:uppercase; letter-spacing:.03em; }
.camp-facts .price { font-family:var(--display); font-size:16px; font-weight:600; color:var(--ink); }

footer.footer-cta { background:var(--dark); color:#fff; padding:80px 0 90px; }
.contact-block { margin-top:26px; display:flex; flex-direction:column; align-items:flex-start; gap:12px; font-size:15px; }
.contact-block > a, .contact-block .contact-row { color:#fff; }
.contact-block a { border-bottom:1px solid rgba(255,255,255,.4); padding-bottom:1px; }
.contact-block a:hover { border-color:#fff; }
.soft-cta { font-size:14px; color:rgba(255,255,255,.7); margin-top:14px; display:block; }
.soft-cta a { color:#fff; }
.footer-legal { margin-top:56px; padding-top:22px; border-top:1px solid rgba(255,255,255,.15); font-size:12.5px; color:rgba(255,255,255,.55); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; }

/* ============ detail page ============ */
.breadcrumb { font-size:12.5px; color:var(--ink-soft); padding:18px 0 0; }
.breadcrumb a { color:var(--ink-soft); }
.detail-kicker { font-size:12px; text-transform:uppercase; letter-spacing:.1em; color:var(--pink-deep); font-weight:700; margin:16px 0 12px; }
.detail-hero-h1 { font-family:var(--display); font-weight:600; font-size:clamp(30px,4.5vw,42px); line-height:1.08; margin:0 0 12px; max-width:20ch; text-transform:uppercase; }
.detail-loc { font-size:15.5px; color:var(--ink-soft); margin:0 0 28px; }

.fact-row { display:flex; flex-wrap:wrap; gap:0; background:var(--white); border-radius:16px; overflow:hidden; }
.fact { flex:1; min-width:140px; padding:18px 22px; border-right:1px solid var(--line); }
.fact:last-child { border-right:none; }
.fact .k { font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft); font-weight:700; margin:0 0 6px; }
.fact .v { font-family:var(--display); font-size:16px; font-weight:600; color:var(--ink); margin:0; }

.detail-layout { display:grid; grid-template-columns:1.6fr 1fr; gap:48px; padding:44px 0 70px; }
@media (max-width:900px){ .detail-layout{ grid-template-columns:1fr; } }
.content h2 { font-family:var(--display); font-size:22px; font-weight:600; text-transform:uppercase; margin:38px 0 14px; }
.content h2:first-child { margin-top:0; }
.content p { font-size:15.5px; color:var(--ink-soft); }
.chip-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin:18px 0; }
.chip { border:1.5px solid var(--line); border-radius:10px; padding:10px 12px; font-size:13.5px; background:#fff; font-weight:500; }
.day-list { list-style:none; margin:18px 0; padding:0; }
.day-list li { display:flex; gap:16px; padding:12px 0; border-top:1px solid var(--line); font-size:14.5px; }
.day-list li:first-child { border-top:none; }
.day-list .time { font-weight:700; color:var(--pink-deep); min-width:90px; font-size:13px; text-transform:uppercase; letter-spacing:.03em; }
.faq-item { border-top:1px solid var(--line); padding:16px 0; }
.faq-item:last-child { border-bottom:1px solid var(--line); }
.faq-item summary { font-weight:700; font-size:15px; cursor:pointer; list-style:none; display:flex; justify-content:space-between; }
.faq-item summary::-webkit-details-marker { display:none; }
.faq-item summary::after { content:'+'; color:var(--pink-deep); font-weight:700; }
.faq-item[open] summary::after { content:'\2212'; }
.faq-item p { margin:10px 0 0; font-size:14.5px; color:var(--ink-soft); }

.inquiry-card { position:sticky; top:calc(var(--header-h) + 20px); border-radius:18px; background:var(--white); padding:24px; box-shadow:0 10px 26px rgba(0,0,0,.07); }
.inquiry-card .price-tag { font-family:var(--display); font-size:26px; font-weight:600; margin:0 0 2px; }
.inquiry-card .price-note { font-size:12.5px; color:var(--ink-soft); margin:0 0 18px; }
.btn-whatsapp-lg { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; background:#25D366; color:#fff; padding:14px; border-radius:999px; font-weight:700; text-decoration:none; margin-bottom:10px; font-size:14px; text-transform:uppercase; letter-spacing:.05em; }
.btn-whatsapp-lg:hover { opacity:.9; }
.divider-or { text-align:center; font-size:11px; color:var(--ink-soft); margin:16px 0; text-transform:uppercase; letter-spacing:.08em; font-weight:700; }
.inquiry-form label { display:block; font-size:12.5px; font-weight:700; margin:12px 0 6px; }
.inquiry-form input, .inquiry-form textarea { width:100%; padding:11px 12px; border:1.5px solid var(--line); border-radius:10px; font-family:var(--body); font-size:14px; }
.inquiry-form button { margin-top:16px; width:100%; padding:13px; background:var(--dark); color:#fff; border:none; border-radius:999px; font-weight:700; cursor:pointer; font-size:13px; text-transform:uppercase; letter-spacing:.06em; }
.trust-mini { display:flex; flex-direction:column; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--line); font-size:12px; color:var(--ink-soft); }

/* ---------- proof bar ---------- */
.proof-bar { display:flex; gap:0; border-top:1px solid rgba(255,255,255,.18); border-bottom:1px solid rgba(255,255,255,.18); padding:18px 0; margin-top:8px; }
.proof-item { flex:1; padding:0 22px; border-left:1px solid rgba(255,255,255,.18); }
.proof-item:first-child { border-left:none; padding-left:0; }
.proof-item .k { font-family:var(--display); font-weight:600; font-size:17px; margin:0 0 3px; color:#fff; }
.proof-item .v { font-size:12.5px; color:rgba(255,255,255,.65); line-height:1.35; }
@media (max-width:640px){ .proof-bar{ flex-direction:column; gap:14px; } .proof-item{ border-left:none; padding-left:0; } }

/* ---------- how it works: pink/dark split shell ---------- */
.how-shell { background:var(--dark); border-radius:24px; overflow:hidden; display:grid; grid-template-columns:.85fr 1.5fr; }
@media (max-width:820px){ .how-shell{ grid-template-columns:1fr; } }
.how-side { background:var(--pink); padding:44px 38px; display:flex; flex-direction:column; justify-content:center; }
.how-side h2 { font-family:var(--display); font-size:clamp(24px,3vw,30px); font-weight:600; color:#2B2624; margin:0 0 14px; line-height:1.18; text-transform:none; }
.how-side p { font-size:14.5px; color:rgba(43,38,36,.75); margin:0; max-width:26ch; }
.how-steps { padding:40px; display:flex; flex-direction:column; }
.how-step { display:grid; grid-template-columns:auto 1fr; gap:20px; padding:22px 0; border-top:1px solid rgba(255,255,255,.12); }
.how-step:first-child { border-top:none; padding-top:0; }
.how-note { margin:0; padding-top:18px; border-top:1px solid rgba(255,255,255,.12); font-size:13px; line-height:1.6; color:rgba(255,255,255,.6); }
.how-note a { color:rgba(255,255,255,.85); text-decoration:underline; text-underline-offset:3px; white-space:nowrap; }
.how-note a:hover { color:#fff; }
.how-step .num { font-family:monospace; font-weight:700; font-size:13px; color:var(--pink); }
.how-step h3 { font-family:var(--body); font-size:18px; font-weight:700; color:#fff; margin:0 0 6px; text-transform:none; }
.how-step p { font-size:14px; color:rgba(255,255,255,.65); margin:0; }

/* ---------- ticket / boarding-pass camp cards ---------- */
.ticket { position:relative; background:var(--white); border-radius:18px; text-decoration:none; color:var(--ink); display:block; box-shadow:0 8px 20px rgba(0,0,0,.07); transition:transform .2s ease, box-shadow .2s ease; }
.ticket:hover { transform:translateY(-4px); box-shadow:0 16px 32px rgba(0,0,0,.12); }
.ticket-photo { height:150px; border-radius:18px 18px 0 0; padding:14px 16px; display:flex; justify-content:space-between; align-items:flex-start; overflow:hidden; }
.t-code { font-family:monospace; font-weight:700; color:#fff; font-size:15px; letter-spacing:.04em; }
.t-age { font-size:11px; font-weight:700; background:rgba(255,255,255,.94); color:var(--ink); padding:4px 10px; border-radius:999px; }
.ticket-notch { position:absolute; width:22px; height:22px; background:var(--cream); border-radius:50%; top:139px; z-index:3; }
.ticket-notch.left { left:-11px; }
.ticket-notch.right { right:-11px; }
.ticket-tear { position:absolute; left:16px; right:16px; top:149px; border-top:2px dashed var(--line); z-index:2; }
.ticket-stub { padding:22px 18px 20px; }
.t-type { font-size:11px; color:var(--pink-deep); text-transform:uppercase; letter-spacing:.06em; margin:0 0 8px; font-weight:700; }
.t-title { font-family:var(--display); font-weight:600; font-size:19px; line-height:1.22; margin:0 0 10px; }
.t-hook { font-size:13.8px; color:var(--ink-soft); margin:0 0 18px; }
.t-facts { display:flex; justify-content:space-between; align-items:center; border-top:1px solid var(--line); padding-top:14px; }
.t-facts .len { font-size:12px; color:var(--ink-soft); font-weight:600; text-transform:uppercase; letter-spacing:.03em; }
.t-facts .price { font-family:var(--display); font-size:16px; font-weight:600; color:var(--ink); }

/* Scroll-reveal. Only when JavaScript runs (otherwise content would stay
   hidden) and only for visitors who haven't asked their device for less motion. */
@media (prefers-reduced-motion: no-preference) {
  .js .reveal { opacity:0; transform:translateY(24px); transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1); }
  .js .reveal.is-visible { opacity:1; transform:translateY(0); }
  .js .ticket.reveal { transform:translateY(14px); transition-duration:.45s; }
  .js .ticket.reveal.is-visible { transform:translateY(0); }
}
.dev-note { background:#111; color:var(--pink); font-family:monospace; font-size:12px; padding:9px 16px; text-align:center; }

/* ---------- trust facts strip (pre-footer) ---------- */
.hero-trust-row { display:grid; grid-template-columns:repeat(4,1fr); gap:24px; margin-top:0; padding:30px 0 44px; border-top:1px solid rgba(255,255,255,.18); }
.hero-trust-row h4 { font-family:var(--display); font-weight:600; font-size:17px; color:#fff; margin:0 0 6px; }
.hero-trust-row p { font-size:13px; color:rgba(255,255,255,.6); margin:0; line-height:1.4; }
@media (max-width:760px){ .hero-trust-row{ grid-template-columns:1fr 1fr; } }
.trust-facts-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
@media (max-width:760px){ .trust-facts-grid{ grid-template-columns:repeat(2,1fr); } }
.trust-fact h3 { font-family:var(--display); font-size:16px; font-weight:600; margin:0 0 6px; color:var(--pink-deep); }
.trust-fact p { font-size:13.5px; color:var(--ink-soft); margin:0; }

/* ---------- footer partner links ---------- */
.footer-partners { display:flex; gap:22px; flex-wrap:wrap; margin-top:14px; }
.footer-partners a { font-size:13px; color:rgba(255,255,255,.6); border-bottom:1px solid rgba(255,255,255,.25); padding-bottom:1px; }
.footer-partners a:hover { color:#fff; border-color:#fff; }
.footer-group-label { font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:rgba(255,255,255,.5); font-weight:700; margin:0 0 12px; }
.footer-group a { display:block; width:fit-content; font-size:13.5px; color:#fff; border-bottom:1px solid rgba(255,255,255,.25); padding-bottom:1px; margin-bottom:11px; }
.footer-group a:last-child { margin-bottom:0; }
.footer-group a:hover { border-color:#fff; }

/* ---------- inquiry form: notices, honeypot, consent ---------- */
.form-notice { font-size:13.5px; border-radius:10px; padding:12px 14px; margin:0 0 14px; }
.form-notice--ok { background:#E8F6EE; color:#1E6B3F; }
.form-notice--err { background:#FBEAEA; color:#8A2C2C; }
.hp-field { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.consent-note { font-size:11.5px; color:var(--ink-soft); margin:12px 0 0; }

.footer-legal a { color:rgba(255,255,255,.55); border-bottom:1px solid rgba(255,255,255,.25); }
.footer-legal a:hover { color:#fff; }
.consent-note a { color:var(--pink-deep); border-bottom:1px solid currentColor; }

/* ---------- cookie banner ---------- */
.cookie-banner { position:fixed; left:20px; right:20px; bottom:20px; z-index:1000; max-width:560px; margin-left:auto;
  background:var(--white); color:var(--ink); border-radius:18px; padding:22px 24px; box-shadow:0 18px 40px rgba(0,0,0,.22); }
.cookie-text { font-size:14px; margin:0 0 16px; color:var(--ink-softer); }
.cookie-text a { color:var(--pink-deep); border-bottom:1px solid currentColor; }
.cookie-actions { display:flex; gap:10px; justify-content:flex-end; flex-wrap:wrap; }
.cookie-btn { font-family:var(--body); font-size:12.5px; font-weight:700; text-transform:uppercase; letter-spacing:.06em;
  border-radius:999px; padding:11px 20px; cursor:pointer; border:1.5px solid transparent; }
.cookie-btn--pink { background:var(--pink); color:#2B2624; }
.cookie-btn--ghost { background:transparent; color:var(--ink); border-color:var(--line); }
.cookie-btn--dark { background:var(--dark); color:#fff; margin-top:12px; }
.cookie-btn--link { background:none; color:var(--ink-soft); padding-left:0; padding-right:auto; margin-right:auto; text-decoration:underline; }
.cookie-prefs { border-top:1px solid var(--line); padding-top:14px; margin-bottom:16px; }
.cookie-toggle { display:flex; gap:10px; align-items:flex-start; font-size:13.5px; color:var(--ink-softer); }
.cookie-toggle input { margin-top:3px; width:18px; height:18px; accent-color:var(--pink-deep); }

/* ---------- privacy policy page ---------- */
.legal-page { max-width:760px; padding:50px 0 80px; }
.legal-page h1 { font-family:var(--display); font-size:clamp(30px,4.5vw,42px); text-transform:uppercase; margin:0 0 10px; }
.legal-page .updated { color:var(--ink-soft); font-size:14px; margin:0 0 30px; }
.legal-page h2 { font-family:var(--display); font-size:21px; text-transform:uppercase; margin:36px 0 12px; }
.legal-page p, .legal-page li { font-size:15.5px; color:var(--ink-softer); }
.legal-page ul { padding-left:20px; margin:0 0 14px; }
.legal-page li { margin-bottom:8px; }
.legal-page a { color:var(--pink-deep); border-bottom:1px solid currentColor; }

/* ---------- footer contact block (matches kiday.eu) ---------- */
.footer-contact { display:flex; flex-direction:column; align-items:flex-start; gap:14px; }
.footer-contact .footer-group-label { margin-bottom:0; }
.footer-group a.contact-email { margin-bottom:0; font-size:15.5px; }
.contact-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.footer-group .contact-row a { display:inline; margin-bottom:0; border-bottom:none; padding-bottom:0; }
.contact-row a span { font-size:15.5px; border-bottom:1px solid rgba(255,255,255,.4); padding-bottom:1px; }
.contact-row a:hover span { border-color:#fff; }
.flag-icon { border-radius:2px; flex:none; box-shadow:0 0 0 1px rgba(255,255,255,.15); }
.footer-group .contact-row a.contact-chip { font-size:12px; font-weight:600; letter-spacing:.03em; color:#fff;
  border:1px solid rgba(255,255,255,.4); border-radius:999px; padding:5px 13px;
  transition:background .2s ease, border-color .2s ease; }
.footer-group .contact-row a.contact-chip:hover { background:rgba(255,255,255,.12); border-color:#fff; }

/* ---------- program page photos ---------- */
.gallery { display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:210px 210px; gap:10px; margin:0 0 44px; }
.gallery-item { display:block; overflow:hidden; border-radius:14px; background:var(--line); }
.gallery-item img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.gallery-item:hover img { transform:scale(1.03); }
.gallery-item--main { grid-row:1 / span 2; }
@media (max-width:760px){
  .gallery { grid-template-columns:1fr 1fr; grid-template-rows:230px 120px 120px; gap:8px; }
  .gallery-item--main { grid-column:1 / -1; grid-row:auto; }
}
.photo-strip { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; margin:16px 0 8px; }
.photo-strip--top { margin:0 0 44px; }
.photo-strip a { display:block; aspect-ratio:4/3; overflow:hidden; border-radius:12px; background:var(--line); }
.photo-strip img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .5s ease; }
.photo-strip a:hover img { transform:scale(1.04); }
.route-map { margin:20px 0 8px; max-width:440px; }
.route-map a { display:block; border-radius:12px; overflow:hidden; border:1px solid var(--line); background:#fff; }
.route-map img { width:100%; height:auto; display:block; }
.route-map figcaption { font-size:.85rem; opacity:.7; margin-top:8px; line-height:1.4; }

.lightbox { position:fixed; inset:0; z-index:2000; background:rgba(14,15,18,.94); display:flex; align-items:center; justify-content:center; padding:24px 64px; }
.lightbox[hidden] { display:none; }
.lightbox figure { margin:0; max-width:100%; max-height:100%; display:flex; flex-direction:column; align-items:center; }
.lightbox img { max-width:100%; max-height:calc(100vh - 110px); border-radius:10px; display:block; }
.lightbox figcaption { color:rgba(255,255,255,.75); font-size:14px; margin-top:12px; text-align:center; max-width:60ch; }
.lightbox button { position:absolute; background:rgba(255,255,255,.12); color:#fff; border:0; border-radius:999px; width:46px; height:46px; font-size:28px; line-height:1; cursor:pointer; }
.lightbox button:hover, .lightbox button:focus-visible { background:rgba(255,255,255,.25); outline:none; }
.lb-close { top:18px; right:18px; }
.lb-prev { left:12px; top:50%; transform:translateY(-50%); }
.lb-next { right:12px; top:50%; transform:translateY(-50%); }
.lightbox.lb-single .lb-prev, .lightbox.lb-single .lb-next { display:none; }
@media (max-width:760px){ .lightbox { padding:60px 8px; } .lb-prev, .lb-next { top:auto; bottom:14px; transform:none; } }

/* ---------- prices shown as a euro estimate (CHF programs) ---------- */
.price-from { font-size:.5em; font-weight:500; color:var(--ink-soft); }
.price-official { font-size:13px; color:var(--ink-soft); margin:4px 0 8px; line-height:1.45; }
.price-official strong { color:var(--ink); }

.nowrap { white-space:nowrap; }

/* Programs that run at more than one school: one sub-heading per site */
.venue-block-h { font-size:17px; margin:18px 0 6px; }
.venue-weeks { font-weight:400; color:var(--ink-soft); font-size:.9em; }

/* The enquiry card follows the reader down the page only when the whole card
   fits on screen below the menu — on shorter laptop screens it stays in place,
   so the Send button can always be reached. */
@media (max-height:860px){ .inquiry-card { position:static; } }

/* ---------- photo loading placeholders ----------
   .ph = a box whose photo may still be loading. It shows a soft shimmer until
   placeholders.js marks it done; the photo then fades in. */
.ph { position:relative; overflow:hidden; background-color:#E4DBCD; }
.ph::before { content:''; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:linear-gradient(100deg, rgba(255,255,255,0) 20%, rgba(255,255,255,.5) 50%, rgba(255,255,255,0) 80%);
  transform:translateX(-100%); animation:ph-shimmer 1.5s ease-in-out infinite; }
.ph.ph-done::before, .ph.ph-error::before { animation:none; opacity:0; }
.ph > img { position:relative; z-index:0; }
.js .ph > img { opacity:0; transition:opacity .4s ease; }
.js .ph.ph-done > img { opacity:1; }
@keyframes ph-shimmer { to { transform:translateX(100%); } }
@media (prefers-reduced-motion: reduce){ .ph::before { animation:none; opacity:.6; transform:none; background:rgba(255,255,255,.25); } }
.section--dark .ph { background-color:#4A4643; }
.section--dark .ph::before { background:linear-gradient(100deg, rgba(255,255,255,0) 20%, rgba(255,255,255,.12) 50%, rgba(255,255,255,0) 80%); }

/* Card photos are real <img> elements now (so they can load lazily) */
.ticket-photo { position:relative; }
.ticket-photo.ph { background-color:#D8CEBF; }
.ticket-photo .t-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.ticket-photo.ph::after { content:''; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(0,0,0,.38), rgba(0,0,0,0) 55%); }
.ticket-photo .t-code, .ticket-photo .t-age { position:relative; z-index:2; }

/* Large photo viewer: spinner while the next photo loads */
.lb-spinner { position:absolute; top:50%; left:50%; width:38px; height:38px; margin:-19px 0 0 -19px;
  border:3px solid rgba(255,255,255,.2); border-top-color:var(--pink); border-radius:50%;
  animation:lb-spin .8s linear infinite; opacity:0; transition:opacity .2s ease; pointer-events:none; }
.lightbox.lb-loading .lb-spinner { opacity:1; }
.lightbox.lb-loading figure { opacity:0; }
.lightbox figure { transition:opacity .2s ease; }
@keyframes lb-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .lb-spinner { animation-duration:2s; } }

/* ---------- terms page: points still waiting for confirmation ---------- */
.legal-page .tbc { background:#FFF1B8; color:var(--ink); border-radius:4px; padding:1px 5px; font-size:.92em; }
.legal-page .draft-box { background:#FFF1B8; border-radius:12px; padding:14px 18px; font-size:14px; margin:0 0 28px; }

/* ---------- page not found ---------- */
.notfound-actions { display:flex; gap:18px; align-items:center; flex-wrap:wrap; margin-top:26px; }
