/* Team: portraits attached to small offset paper sheets. */
.team-section { background: var(--paper); border-top: 1px solid var(--line); }
.team-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(36px,6vw,90px); max-width: 890px; margin: 0 auto; padding: 0 20px 18px 0; align-items: start; }
.team-card { position: relative; isolation: isolate; min-width: 0; }
.team-card::before { content: ""; position: absolute; z-index: -1; inset: 16px -16px -12px 12px; background: #e9dfc9; border: 1px solid var(--line); transform: rotate(1.3deg); }
.team-card:nth-child(2)::before { transform: rotate(-1deg); }
.team-photo { position: relative; padding: 9px; background: var(--paper-card); }
.team-photo::after { content: ""; position: absolute; top: -12px; left: 38%; width: 26%; height: 29px; background: rgba(192,182,150,.65); transform: rotate(-5deg); }
.team-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }
.team-card:nth-child(2) .team-photo img { object-position: center 48%; }
.team-caption { padding: 20px 22px 12px; background: var(--paper-card); min-height: 135px; }
.team-caption h3 { color: var(--orange); font-size: 38px; }
.team-caption p { margin: 9px 0 0; font-size: 15px; }
.team-details { padding: 0 22px; }
.team-details summary { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 20px; list-style: none; font-family: "Caveat", cursive; font-size: 30px; color: var(--ink); }
.team-details summary::-webkit-details-marker { display: none; }
.team-details summary:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; }
.team-details summary:hover { color: var(--orange); }
.team-toggle { font: 26px var(--body); }
.team-details[open] .team-toggle { transform: rotate(45deg); }
.team-story { padding: 0 0 18px; font-size: 15px; }
.team-story p { margin: 0 0 14px; }
@media(max-width:620px) {
  .team-grid { grid-template-columns: minmax(0,1fr); max-width: 390px; gap: 52px; padding-right: 16px; }
  .team-caption { min-height: 0; }
  .team-section .closing-heading { margin-bottom: 44px; }
}
/* Full-screen paper; only transform/opacity animate, never layout dimensions. */
.team-card-away { opacity: 0; }
dialog.team-modal { position: fixed; inset: 0; width: 100%; max-width: none; height: 100%; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: var(--ink); overflow: hidden; }
.team-modal::backdrop { background: rgba(32,34,25,.28); }
.team-modal-paper { position: absolute; inset: 0; background: #e9dfc9; transform-origin: top left; box-shadow: 0 18px 65px #24201838; }
.team-modal-scroll { position: absolute; inset: 0; overflow: auto; overscroll-behavior: contain; padding: clamp(70px,10vh,110px) clamp(24px,7vw,110px) 60px; }
.team-modal-photo { position: absolute; top: 85px; left: clamp(24px,6vw,90px); width: clamp(140px,23vw,290px); transform-origin: top left; box-shadow: 3px 6px 12px #45351c24; }
.team-modal-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3/4; object-fit: cover; }
.team-modal-copy { max-width: 740px; margin-left: clamp(215px,30vw,410px); }
.team-modal-label { color: var(--olive); text-transform: uppercase; font: 13px var(--body); letter-spacing: .1em; }
.team-modal-copy h2 { font: 600 clamp(55px,7vw,100px)/1.05 var(--display); text-transform: uppercase; color: var(--orange); margin: 20px 0; }
.team-modal-role { font: 28px/1.2 "Caveat",cursive; padding-bottom: 24px; border-bottom: 1px solid var(--line); }
.team-modal-story { font: 18px/1.8 var(--body); }
.team-modal-story p { margin: 0 0 22px; }
.team-modal-close { position: absolute; z-index: 2; right: max(20px,env(safe-area-inset-right)); top: max(16px,env(safe-area-inset-top)); width: 48px; height: 48px; display: grid; place-items: center; background: var(--paper-card); border: 1px solid var(--line); border-radius: 50%; color: var(--ink); font: 36px/1 Arial,sans-serif; cursor: pointer; }
.team-modal-close:focus-visible { outline: 3px solid var(--orange); outline-offset: 4px; }
@media(max-width:620px) {
  .team-modal-scroll { padding: 245px 26px max(40px,env(safe-area-inset-bottom)); }
  .team-modal-photo { top: 52px; left: 30px; width: 124px; }
  .team-modal-copy { margin: 0; }
  .team-modal-copy h2 { font-size: 54px; margin: 12px 0; }
  .team-modal-role { font-size: 26px; }
  .team-modal-story { font-size: 16px; line-height: 1.7; }
}
:root {
  --paper: #f5f0e6;
  --paper-card: #f8f3e9;
  --ink: #292a22;
  --orange: #c83f15;
  --orange-dark: #ae3513;
  --olive: #74793e;
  --gold: #bd8d28;
  --line: rgba(77, 70, 50, .22);
  --shadow: 0 13px 24px rgba(62, 47, 27, .12), 0 2px 5px rgba(62, 47, 27, .08);
  --display: "Oswald", Impact, sans-serif;
  --body: "Manrope", Arial, sans-serif;
}

/* Final chapters: the same paper, ink, typography and travel-album details. */
.closing-section { position: relative; padding: 108px 0; scroll-margin-top: 24px; }
.closing-container { width: min(1200px, calc(100% - 96px)); margin-inline: auto; }
.closing-section h2, .closing-section h3 { font-family: var(--display); text-transform: uppercase; font-weight: 600; }
.closing-section h2 { margin: 20px 0 22px; color: var(--orange); font-size: clamp(42px, 4.7vw, 68px); line-height: 1.05; letter-spacing: -.02em; text-wrap: balance; }
.closing-section h3 { margin: 0; font-size: 29px; line-height: 1.15; }
.closing-section p { line-height: 1.65; }
.closing-section button, .closing-section input { font: inherit; }
.closing-section button, .closing-section summary { cursor: pointer; }
.chapter-label { display: inline-block; margin: 0; padding: 7px 14px; background: #8d905a; color: #fffdf5; font: 15px/1.4 Georgia, serif; text-transform: uppercase; letter-spacing: .1em; transform: rotate(-1.5deg); box-shadow: 0 2px 4px #3f3b2322; }
.closing-heading { text-align: center; margin-bottom: 56px; }
.closing-heading > p:last-child { margin: 0; font-size: 18px; }
.pricing-section { z-index: 4; background: var(--paper); border-radius: 28px 28px 0 0; margin-top: -24px; }
.price-layout { display: grid; grid-template-columns: minmax(0, 1fr) 394px; gap: 16px; align-items: stretch; }
.packing-list { border: 1px solid var(--line); padding: 32px; background: var(--paper-card); box-shadow: var(--shadow); border-radius: 14px; }
.packing-title { display: flex; align-items: center; justify-content: space-between; gap: 16px; color: var(--orange); }
.packing-title img { width: 38px; height: 38px; transform: rotate(12deg); }
.included-list { list-style: none; margin: 24px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 28px; }
.included-list li { padding: 20px 0 19px 25px; position: relative; border-top: 1px solid var(--line); }
.included-list li::before { content: '✓'; position: absolute; left: 0; top: 19px; color: var(--olive); font-size: 19px; }
.included-list li > span { font-size: 16px; font-weight: 700; }
.included-list p { margin: 8px 0 0; font-size: 14px; }
.separate-costs { margin-top: 24px; padding: 27px 30px 29px; border: 1px solid var(--line); border-radius: 14px; background: rgba(248,243,233,.72); box-shadow: 0 8px 18px rgba(62,47,27,.07), 0 1px 3px rgba(62,47,27,.05); }
.separate-costs h3 { font-size: 27px; color: #5d6040; }
.separate-costs ul { display: flex; flex-wrap: wrap; gap: 12px 24px; list-style: none; margin: 18px 0 0; padding: 0; color: #57574b; font-size: 14px; line-height: 1.5; }
.separate-costs li::before { content: '+'; color: var(--olive); padding-right: 7px; }
.booking-ticket { scroll-margin-top: 32px; filter: drop-shadow(0 12px 15px #3e2f1b22); }
.booking-ticket-body { position: relative; padding: 26px 30px 23px; border: 1px solid var(--line); border-bottom: 0; background: var(--paper-card); border-radius: 18px 18px 0 0; }
.ticket-caption { display: flex; justify-content: space-between; align-items: center; gap: 15px; color: #666a38; }
.ticket-caption span { font-size: 11px; text-transform: uppercase; letter-spacing: .13em; font-weight: 700; }
.ticket-caption img { height: 40px; width: 28px; }
.booking-ticket h3 { font-size: 38px; color: var(--orange); margin: 5px 0 25px; }
.trip-picker { border: 0; margin: 0; padding: 0; display: grid; gap: 10px; }
.trip-picker legend { font-size: 13px; margin-bottom: 12px; color: #666457; }
.trip-picker label { display: flex; cursor: pointer; gap: 12px; padding: 13px 15px; border: 1px solid var(--line); border-radius: 8px; transition: background .2s, border-color .2s; }
.trip-picker label:has(:checked) { background: #e9eadb; border-color: var(--olive); }
.trip-picker label:hover { border-color: var(--olive); }
.trip-picker input, .friend-option input { accent-color: #676d37; width: 19px; height: 19px; flex-shrink: 0; margin: 4px 0 0; }
.trip-picker b { font-size: 15px; }
.trip-picker small { display: block; font-size: 11px; margin-top: 4px; color: #686856; }
.friend-option { display: flex; align-items: start; gap: 12px; cursor: pointer; padding: 20px 0; font-size: 14px; }
.friend-option small { display: block; color: #6b6d43; margin-top: 3px; font-size: 12px; }
.friend-name { display: grid; gap: 8px; padding: 0 0 20px; color: #646252; font-size: 12px; }
.friend-name[hidden] { display: none; }
.friend-name input { width: 100%; min-height: 46px; padding: 0 13px; color: var(--ink); background: #fffdf7; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; }
.friend-name input:focus { border-color: var(--olive); outline: 3px solid rgba(116,121,62,.18); }
.booking-total { padding: 20px 0 17px; border-top: 1px solid var(--line); }
.booking-total > span { font-size: 12px; color: #646252; }
.booking-total > div { display: flex; align-items: baseline; gap: 16px; }
.booking-total strong { font: 600 61px/1.2 var(--display); color: var(--orange); }
.booking-total del { color: #777562; font-size: 18px; }
.booking-total p { font-size: 12px; color: #5c6234; margin: 7px 0 0; }
.payment-split { margin: 0; display: grid; gap: 9px; font-size: 13px; }
.payment-split > div { display: flex; justify-content: space-between; gap: 15px; }
.payment-split dt { color: #646252; }
.payment-split dd { margin: 0; font-weight: 700; white-space: nowrap; }
.booking-ticket-stub { position: relative; padding: 24px 30px 18px; background: var(--paper-card); border-radius: 0 0 18px 18px; border: 1px solid var(--line); border-top: 3px dotted #aaa087; transform-origin: 8% 0; transition: transform .35s ease, filter .35s ease; }
.booking-ticket-stub::before, .booking-ticket-stub::after { content: ''; position: absolute; top: -9px; width: 16px; height: 16px; background: var(--paper); border-radius: 50%; }
.booking-ticket-stub::before { left: -9px; }.booking-ticket-stub::after { right: -9px; }
.booking-ticket-stub .button { width: 100%; min-width: 0; padding-inline: 18px; gap: 20px; }
.booking-ticket-stub p { font-size: 11px; text-align: center; color: #676354; margin: 13px 0 0; }
.booking-ticket-stub:focus-within { transform: rotate(1deg) translateY(3px); }
@media (hover: hover) { .booking-ticket-stub:hover { transform: rotate(1.5deg) translateY(4px); filter: drop-shadow(0 -2px 3px #3e2f1b22); } }
.payment-terms { margin-top: 42px; padding-top: 30px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 30px; }
.payment-terms article { display: flex; gap: 16px; }
.term-number { font: 600 31px/1 var(--display); color: var(--olive); }
.payment-terms h3 { font-size: 22px; }
.payment-terms p { font-size: 13px; margin: 10px 0 0; }
.refund-terms summary { display: grid; grid-template-columns: 46px minmax(0,1fr) 28px; align-items: start; gap: 16px; min-height: 52px; padding: 0; }
.refund-terms .term-number { width: 46px; color: var(--olive); font-size: 31px; line-height: 1; }
.refund-title { font: 600 22px/1.1 var(--display); text-transform: uppercase; }
.refund-toggle { color: var(--orange); font-size: 24px; line-height: 1; text-align: right; transition: transform .3s cubic-bezier(.2,.75,.25,1); }
.refund-answer { margin-left: 62px; padding-right: 8px; }
.refund-answer p { margin: 7px 0 0; }
.refund-terms a { display: inline-block; font-size: 13px; color: var(--orange); margin-top: 14px; text-underline-offset: 4px; }
.refund-terms[open] .refund-toggle { transform: rotate(45deg); }
.departure-section { isolation: isolate; overflow: hidden; background: #303222; color: var(--paper); }
.departure-section::before { content: ''; position: absolute; inset: 0; z-index: 0; background: var(--cms-bg-1) center top / max(1300px, 100%) auto repeat-y; opacity: .16; pointer-events: none; }
.departure-layout { position: relative; z-index: 1; display: grid; grid-template-columns: .88fr 1.12fr; gap: 90px; align-items: start; }
.departure-intro { position: sticky; top: 0; }
.departure-intro h2 { color: var(--paper); margin-top: 26px; }
.departure-intro > p:not(.chapter-label) { font-size: 18px; color: #dbd6c6; }
.departure-photo { position: relative; margin: 50px 20px 0 0; background: var(--paper-card); padding: 12px 12px 7px; transform: rotate(-5deg); box-shadow: 0 16px 30px #0c100844; color: var(--ink); }
.departure-photo > img { width: 100%; height: auto; display: block; aspect-ratio: 1.5; object-fit: cover; }
.departure-photo .tape { background: #c6b794bb; left: 35%; width: 110px; height: 31px; top: -16px; }
.departure-photo figcaption { font: 500 29px/1.4 Caveat, cursive; text-align: center; padding-top: 8px; }
.departure-steps { list-style: none; margin: 0; padding: 0; }
.departure-steps li { position: relative; display: grid; grid-template-columns: 46px 1fr; gap: 25px; padding-bottom: 34px; }
.departure-steps li:not(:last-child)::before { content: ''; position: absolute; left: 22px; top: 46px; bottom: 0; border-left: 1px dashed #9fa477; }
.step-number { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%; background: #74793e; color: var(--paper); font: 600 23px var(--display); transition: background .4s; }
.departure-steps li > div { padding: 22px 26px; background: var(--paper-card); border-radius: 10px; color: var(--ink); border: 1px solid #ffffff22; transition: transform .4s, box-shadow .4s; }
.departure-steps small { display: block; color: #77764f; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; margin-bottom: 8px; }
.departure-steps h3 { color: var(--orange); font-size: 27px; }
.departure-steps p { font-size: 14px; margin: 11px 0 0; }
.departure-steps a { display: inline-flex; gap: 18px; align-items: center; min-height: 44px; color: #626a36; font-size: 13px; font-weight: 700; text-underline-offset: 4px; padding-top: 10px; }
.departure-steps li.is-current .step-number { background: var(--orange); }
.departure-steps li.is-current > div { transform: translateX(5px) rotate(.5deg); box-shadow: 0 12px 22px #0c100833; }
.faq-layout { display: grid; grid-template-columns: .8fr 1.2fr; gap: 80px; }
.faq-heading h2 { font-size: clamp(40px, 4vw, 56px); margin-top: 27px; }
.faq-heading p:not(.chapter-label) { font-size: 16px; }
.faq-contact { display: inline-flex; gap: 30px; align-items: center; color: var(--orange); padding: 10px 0; min-height: 44px; text-underline-offset: 6px; font-size: 14px; font-weight: 700; }
.faq-heading > img { display: block; width: 80px; height: 54px; margin-top: 32px; opacity: .7; transform: rotate(-9deg); }
.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 25px 0; font-size: 16px; font-weight: 700; list-style: none; }
.closing-section summary::-webkit-details-marker { display: none; }
.faq-list summary span { flex-shrink: 0; height: 32px; width: 32px; border: 1px solid var(--line); border-radius: 50%; display: grid; place-items: center; color: var(--olive); font-size: 23px; font-weight: 400; transition: transform .25s, background .25s; }
.faq-list summary:hover { color: var(--orange); }
.faq-list details[open] summary span { transform: rotate(45deg); color: var(--paper); background: var(--olive); border-color: var(--olive); }
.faq-list details[open] summary { color: var(--orange); }
.faq-answer { padding: 0 44px 26px 0; font-size: 14px; }
.faq-answer p { margin: 0 0 12px; }
.faq-answer p:last-child { margin-bottom: 0; }
.faq-answer a { display: inline-block; color: #626a36; text-underline-offset: 4px; line-height: 1.6; padding: 4px 0; }
.contact-section { padding: 88px 0 96px; background: #ebe5d7; border-top: 1px solid var(--line); overflow: visible; }
.contact-layout { display: grid; grid-template-columns: 1fr 1.05fr; gap: 64px; align-items: center; }
.contact-copy h2 { font-size: clamp(48px, 5vw, 70px); }
.contact-copy > p:not(.chapter-label) { font-size: 16px; margin-bottom: 24px; }
.contact-email { font-size: clamp(15px, 1.6vw, 22px); font-weight: 600; display: inline-block; text-underline-offset: 8px; line-height: 1.7; overflow-wrap: anywhere; }
.contact-email span { display: inline-block; margin-left: 6px; color: var(--orange); }
.copy-email { display: block; border: 0; border-bottom: 1px dashed var(--olive); background: transparent; color: #5c6337; padding: 10px 0 6px; margin: 4px 0 0; min-height: 44px; font-size: 12px !important; }
.copy-email:hover { color: var(--orange); }
.copy-status { display: block; min-height: 25px; font-size: 12px; color: #5c6337; padding-top: 6px; }
.contact-copy > .button { display: flex; width: fit-content; max-width: 100%; margin-top: 24px; gap: 24px; }
.contact-photo { margin: 0; position: relative; padding: 13px 13px 5px; background: var(--paper-card); transform: rotate(4deg); box-shadow: var(--shadow); }
.contact-photo > img:first-of-type { display: block; width: 100%; height: auto; aspect-ratio: 1.25; object-fit: cover; object-position: 43% center; }
.contact-photo .tape { background: #bfb494aa; left: 35%; }
.contact-photo figcaption { font: 500 29px/1.5 Caveat, cursive; padding: 10px 0; text-align: center; }
.contact-photo .contact-stamp { position: absolute; width: 125px; height: 125px; bottom: -28px; right: -35px; transform: rotate(-18deg); opacity: .75; }
.site-footer { display: flex; justify-content: space-between; align-items: center; gap: 28px; padding: 29px max(48px, calc((100vw - 1200px) / 2)); background: var(--paper); border-top: 1px solid var(--line); font-size: 12px; }
.footer-brand { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; text-transform: uppercase; font-weight: 700; letter-spacing: .08em; color: var(--orange); }
.footer-brand img { width: 27px; height: 27px; }
.footer-credit { color: var(--orange); font-family: var(--hand); font-size: 17px; text-decoration-thickness: 1px; text-underline-offset: 5px; white-space: nowrap; }
.back-to-top { padding: 12px 0; white-space: nowrap; text-underline-offset: 5px; }
@media (max-width: 1050px) {
  .closing-container { width: calc(100% - 56px); }
  .price-layout { grid-template-columns: minmax(0, 1fr) 350px; gap: 24px; }
  .packing-list { padding: 24px; }.included-list { grid-template-columns: 1fr; }.included-list li { padding-block: 13px; }.included-list li::before { top: 13px; }.included-list p { margin-top: 4px; }
  .booking-ticket-body, .booking-ticket-stub { padding-inline: 24px; }
  .departure-layout, .faq-layout, .contact-layout { gap: 40px; }
  .departure-steps li { gap: 16px; }.departure-steps li > div { padding: 20px; }
  .payment-terms { grid-template-columns: 1fr 1fr; }.refund-terms { grid-column: 1 / -1; max-width: 680px; }
  .contact-email { font-size: 16px; }
  .contact-photo .contact-stamp { right: 0; bottom: -20px; width: 100px; height: 100px; }
}
@media (max-width: 760px) {
  .closing-section { padding: 72px 0; }.closing-container { width: calc(100% - 40px); }
  .closing-heading { text-align: left; margin-bottom: 32px; }.closing-heading > p:last-child { font-size: 16px; }.closing-heading br { display: none; }
  .closing-section h2 { font-size: clamp(39px, 8vw, 54px); }.chapter-label { font-size: 12px; }
  .price-layout { grid-template-columns: 1fr; gap: 32px; }.included-list { grid-template-columns: 1fr 1fr; gap: 0 20px; }
  .booking-ticket { width: min(100%, 480px); margin-inline: auto; }.booking-ticket-body { padding: 24px; }.booking-ticket-stub { padding: 24px; }
  .separate-costs { padding: 24px 20px 25px; }
  .separate-costs h3 { font-size: 25px; }
  .payment-terms { gap: 26px; }.payment-terms article { gap: 12px; }
  .refund-terms summary { grid-template-columns: 40px minmax(0,1fr) 24px; gap: 12px; }
  .refund-terms .term-number { width: 40px; font-size: 28px; }
  .refund-title { font-size: 20px; }
  .refund-answer { margin-left: 52px; }
  .departure-layout, .faq-layout, .contact-layout { grid-template-columns: 1fr; gap: 38px; }.departure-intro { position: relative; top: auto; }
  .departure-intro > p:not(.chapter-label) br { display: none; }.departure-photo { max-width: 380px; margin: 35px auto 16px; transform: rotate(-3deg); }
  .departure-steps li { grid-template-columns: 40px 1fr; gap: 15px; padding-bottom: 22px; }.step-number { width: 40px; height: 40px; }.departure-steps li:not(:last-child)::before { left: 19px; top: 40px; }
  .departure-steps h3 { font-size: 25px; }.departure-steps li.is-current > div { transform: translateX(2px); }
  .faq-heading > img { display: none; }.faq-heading h2 { margin-bottom: 14px; }.faq-list summary { font-size: 15px; padding: 22px 0; gap: 16px; }.faq-answer { padding-right: 15px; }
  .contact-copy h2 { font-size: 52px; }.contact-email { font-size: clamp(15px, 4.3vw, 22px); }.contact-photo { width: calc(100% - 18px); max-width: 540px; margin: 16px auto 0; transform: rotate(3deg); }.contact-photo .contact-stamp { right: -15px; width: 100px; height: 100px; }
  .contact-photo > img:first-of-type { aspect-ratio: 1.55; }
  .site-footer { padding: 26px 20px; flex-wrap: wrap; gap: 16px; }.site-footer > span { order: 4; width: 100%; }.footer-brand { font-size: 11px; }.footer-credit { order: 3; width: 100%; }
}
@media (max-width: 430px) {
  .included-list { grid-template-columns: 1fr; }.packing-list { padding: 24px 20px; }.packing-title h3 { font-size: 28px; }.payment-terms { grid-template-columns: 1fr; }
  .contact-photo figcaption, .departure-photo figcaption { font-size: 25px; }.departure-steps li > div { padding: 20px 17px; }.departure-steps small { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .closing-section *, .closing-section *::before, .closing-section *::after { transition: none !important; }
  .booking-ticket-stub:hover, .booking-ticket-stub:focus-within, .departure-steps li.is-current > div { transform: none; }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html.has-locomotive-scroll { scroll-behavior: auto; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--body);
  overflow-x: hidden;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 999;
  pointer-events: none;
  opacity: .18;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}
a { color: inherit; }
.skip-link { position: fixed; top: 10px; left: -999px; z-index: 1200; padding: 12px 16px; background: #fff; }
.skip-link:focus { left: 10px; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 4px; }

.site-header {
  position: absolute;
  z-index: 100;
  top: 0;
  left: 0;
  width: 100%;
  height: 104px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  padding: 0 54px;
  transition: background .2s ease, box-shadow .2s ease;
}
.brand { display: flex; align-items: center; gap: 14px; justify-self: start; color: var(--orange); text-decoration: none; text-transform: uppercase; font-size: 31px; line-height: 1; font-weight: 700; letter-spacing: .05em; white-space: nowrap; }
.brand img { width: 34px; height: 34px; }
.nav-links { display: flex; align-items: center; gap: 42px; font-size: 16px; font-weight: 600; }
.nav-links a { text-decoration: none; position: relative; white-space: nowrap; }
.nav-links a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: -7px; height: 1px; background: var(--orange); transition: right .2s ease; }
.nav-links a:hover::after { right: 0; }
.header-cta { justify-self: end; min-height: 52px; display: inline-flex; align-items: center; padding: 0 24px; border: 1.5px solid var(--orange); border-radius: 99px; color: var(--orange); font-weight: 600; text-decoration: none; transition: color .2s ease, background .2s ease; }
.header-cta:hover { background: var(--orange); color: #fff; }

.hero {
  position: relative;
  min-height: 900px;
  padding: 165px max(7.5vw, 68px) 100px;
  background:
    radial-gradient(circle at 60% 44%, rgba(255,255,255,.8), transparent 33%),
    linear-gradient(90deg, rgba(255,255,255,.28), transparent 55%);
  border-bottom: 1px solid var(--line);
}
.hero-copy { position: relative; z-index: 20; width: 800px; }
.eyebrow { display: flex; align-items: center; gap: 12px; height: 45px; margin-bottom: 18px; }
.eyebrow span { display: inline-block; color: #fffdf5; background: #8d905a; padding: 8px 17px 9px; font-family: Georgia, serif; font-size: 20px; text-transform: uppercase; letter-spacing: .12em; transform: rotate(-1.5deg); box-shadow: 0 2px 4px rgba(63,59,35,.16); }
.eyebrow img { width: 34px; height: 49px; color: var(--olive); transform: rotate(5deg); }
.hero h1, .manifesto h2, .reason h3 { font-family: var(--display); text-transform: uppercase; color: var(--orange); }
.hero h1 { position: relative; z-index: 3; margin: 0; font-size: clamp(66px, 5.6vw, 90px); line-height: .98; letter-spacing: -.02em; text-wrap: balance; }
.hero h1 span { position: relative; white-space: nowrap; }
.hero h1 span::after { content: ""; position: absolute; z-index: -1; left: -12px; right: -18px; top: -5px; bottom: -8px; border-radius: 0 18px 18px 0; background: var(--paper); }
.hero-waves { position: absolute; width: 100px; left: -88px; top: 66px; transform: rotate(-8deg); }
.hero-star { position: absolute; width: 66px; height: 66px; left: 515px; top: 190px; transform: rotate(14deg); }
.hero-lead { margin: 16px 0 30px; font-size: 21px; line-height: 1.3; font-weight: 500; }
.hero-lead strong { color: var(--orange); }
.hero-actions, .manifesto-actions { display: flex; gap: 18px; }
.button { min-height: 54px; padding: 0 31px; display: inline-flex; align-items: center; justify-content: center; border-radius: 99px; font-size: 16px; font-weight: 600; text-decoration: none; transition: transform .18s ease, box-shadow .18s ease, background .18s ease; }
.button:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(66,45,25,.15); }
.button:active { transform: translateY(0); }
.button-primary { min-width: 262px; color: #fff; border: 1.5px solid var(--orange); background: linear-gradient(100deg, var(--orange-dark), #d54a18); }
.button-secondary { min-width: 252px; border: 1.5px solid #54563a; color: #393b2e; }

.hero-collage { position: absolute; z-index: 3; inset: 105px 0 70px 44%; pointer-events: none; }
.polaroid, .side-photo { margin: 0; position: absolute; background: #fffdfa; padding: 10px; box-shadow: var(--shadow); }
.polaroid img, .side-photo img { display: block; width: 100%; height: 100%; object-fit: cover; filter: sepia(.08) saturate(.9); }
.photo-window { display: block; width: 100%; height: 100%; overflow: hidden; position: relative; border-radius: 0; }
.photo-window img { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Crop baked-in scraps of neighbouring frames out of the source photographs. */
.photo-window img[src$="camp-games.jpg"] { transform: scale(1.26); transform-origin: center top; object-position: center top; }
.photo-window img[src$="bali-landscape.jpg"] { transform: scale(1.13); transform-origin: left center; object-position: left center; }
.photo-landscape { z-index: 1; width: 435px; height: 430px; left: 90px; top: 40px; transform: rotate(-6deg); }
.photo-games { z-index: 4; width: 476px; height: 395px; left: 470px; top: 140px; transform: rotate(4deg); }
.photo-notes { z-index: 5; width: 430px; height: 333px; left: 220px; top: 475px; transform: rotate(3.5deg); }
.tape { position: absolute; z-index: 3; width: 145px; height: 42px; top: -22px; left: 39%; background: rgba(207, 111, 73, .62); transform: rotate(-3deg); box-shadow: inset 0 0 20px rgba(255,255,255,.18); }
.tape-bottom { width: 140px; height: 17px; top: auto; bottom: -8px; left: 44%; background: rgba(255,252,244,.85); }
.stamp { position: absolute; z-index: 3; width: 150px; height: 150px; left: 480px; top: -8px; transform: rotate(12deg); opacity: .78; }
.leaf-shape { position: absolute; z-index: 0; width: 330px; height: 300px; right: -65px; top: 0; transform: rotate(-14deg); opacity: .92; }
.leaf-shape::before { content: ""; position: absolute; left: 18px; bottom: 18px; width: 360px; height: 4px; border-radius: 50%; background: #486024; transform: rotate(28deg); transform-origin: left center; }
.leaf-shape i { position: absolute; left: 115px; bottom: 90px; width: 180px; height: 34px; border-radius: 100% 0 100% 0; background: #4b6728; transform-origin: left center; }
.leaf-shape i:nth-child(1) { transform: rotate(-55deg) scale(.95); }
.leaf-shape i:nth-child(2) { transform: rotate(-31deg) scale(1.06); }
.leaf-shape i:nth-child(3) { transform: rotate(-9deg) scale(.98); }
.leaf-shape i:nth-child(4) { transform: rotate(17deg) scale(.88); }
.leaf-shape i:nth-child(5) { transform: rotate(41deg) scale(.78); }
.leaf-shape i:nth-child(6) { transform: rotate(64deg) scale(.62); }
.sticky-note { position: absolute; z-index: 6; right: 55px; top: 605px; margin: 0; padding: 35px 27px; width: 190px; height: 210px; color: #3f3827; background: #ead49f; box-shadow: 0 11px 13px rgba(50,39,24,.2); font-family: "Caveat", cursive; font-size: 29px; line-height: 1.12; transform: rotate(-5deg); }
.pressed-flower { position: absolute; z-index: 6; left: 120px; top: 680px; color: #b78355; font-size: 76px; transform: rotate(12deg); opacity: .75; }

.hero-features { position: absolute; z-index: 25; left: 0; bottom: 0; width: 58%; min-width: 870px; height: 98px; display: flex; align-items: center; padding-left: max(7.5vw, 68px); border-top: 1px solid var(--line); }
.mini-feature { height: 48px; min-width: 245px; display: flex; align-items: center; gap: 14px; padding: 0 25px; border-right: 1px solid var(--line); }
.mini-feature:first-child { padding-left: 0; }
.mini-feature:last-child { border-right: 0; }
.mini-feature svg { flex: 0 0 auto; width: 40px; height: 38px; fill: none; stroke: var(--olive); stroke-width: 1.3; }
.mini-feature p { margin: 0; font-size: 12px; line-height: 1.25; }
.mini-feature strong, .mini-feature span { display: block; }
.mini-feature span { margin-top: 4px; color: #6f6c62; }

.manifesto { position: relative; min-height: 1920px; padding-top: 82px; background: radial-gradient(circle at 50% 16%, rgba(255,255,255,.6), transparent 32%); }
.manifesto-intro { position: relative; z-index: 10; width: 660px; margin: 0 auto; text-align: center; will-change: transform, opacity; }
.manifesto-intro > img:first-child { width: 37px; height: 55px; color: var(--olive); margin-bottom: 18px; }
.manifesto h2 { margin: 0; font-size: 66px; line-height: 1.12; letter-spacing: -.015em; }
.manifesto-intro p { margin: 22px 0 0; font-size: 20px; line-height: 1.4; }
.intro-star { position: absolute; right: -8px; top: 142px; width: 60px; transform: rotate(13deg); }
.side-photo { z-index: 30; padding: 10px; pointer-events: none; will-change: left, top, width, height, transform, opacity; }
.static-copy { display: none; }
.side-photo-top { width: 300px; height: 395px; left: -95px; top: 85px; transform: rotate(-8deg); }
.side-photo-top img { object-position: 30% 50%; }
.side-photo-right { width: 332px; height: 340px; right: -63px; top: 315px; transform: rotate(8deg); }
.side-photo-bottom { width: 290px; height: 360px; left: -74px; top: 920px; transform: rotate(-7deg); }
.side-photo-bottom img { object-position: 46% 50%; }
.side-photo .tape { width: 125px; height: 38px; left: 23%; }

.journey { --journey-progress: 0; position: relative; z-index: 5; width: 940px; height: 1230px; margin: 62px auto 0; }
.journey-line { position: absolute; inset: 0; width: 940px; height: 1230px; fill: none; stroke-linecap: round; pointer-events: none; }
.journey-path-base, .journey-path-progress { vector-effect: non-scaling-stroke; stroke-width: 2.2; stroke-dasharray: 8 10; }
.journey-path-base { stroke: rgba(149, 145, 95, .18); }
.journey-path-progress { stroke: #85894f; }
.journey-mask-path { fill: none; stroke: #fff; stroke-width: 10; stroke-linecap: round; stroke-dasharray: var(--journey-progress) 1; }
.reason { position: absolute; width: 405px; min-height: 205px; display: flex; align-items: center; justify-content: center; padding: 42px 48px 30px; border: 1px solid rgba(106,91,61,.18); border-radius: 14px; background: rgba(249,245,236,.96); box-shadow: 0 8px 15px rgba(78,58,29,.12); text-align: center; opacity: 0; transform: translateY(58px) rotate(var(--card-tilt, 0deg)); transition: opacity .55s ease, transform .7s cubic-bezier(.2,.75,.25,1); }
.reason.is-visible { opacity: 1; transform: translateY(0) rotate(0); }
.reason b { position: absolute; z-index: 3; left: 50%; top: -26px; width: 52px; height: 52px; display: grid; place-items: center; padding: 0 0 3px; border-radius: 50%; color: white; background: var(--olive); font-family: var(--display); font-size: 23px; line-height: 1; font-weight: 600; font-variant-numeric: tabular-nums; box-shadow: 0 2px 5px rgba(30,30,20,.12); transform: translateX(-50%); }
.reason::after { content: ""; position: absolute; z-index: 3; left: 50%; bottom: -6px; width: 12px; height: 12px; border: 3px solid var(--paper-card); border-radius: 50%; background: var(--orange); transform: translateX(-50%); box-shadow: 0 1px 3px rgba(91,49,20,.2); }
.reason h3 { margin: 0 0 13px; font-size: 29px; line-height: 1.07; }
.reason p { margin: 0; font-size: 15px; line-height: 1.48; }
.reason > div { width: 100%; }
.reason img { position: absolute; width: 29px; height: 44px; right: 19px; top: 50%; color: var(--olive); transform: translateY(-50%); }
.reason-1 { --card-tilt: -1.3deg; left: 105px; top: 0; }
.reason-2 { --card-tilt: 1.2deg; right: 7px; top: 245px; width: 420px; }
.reason-3 { --card-tilt: -.8deg; left: 48px; top: 490px; }
.reason-4 { --card-tilt: 1deg; right: -4px; top: 735px; width: 430px; }
.reason-5 { --card-tilt: -1deg; left: 68px; top: 980px; width: 425px; }
.reason-5 img { width: 43px; height: 43px; right: 12px; }
.line-icon { position: absolute; right: 18px; bottom: 12px; color: var(--olive); font-size: 40px; font-family: serif; }
.wave-doodle { position: absolute; right: 17px; bottom: 5px; color: var(--olive); font-size: 52px; font-family: serif; transform: rotate(-10deg); }
.people-doodle { position: absolute; right: 20px; bottom: 19px; width: 40px; height: 28px; border-bottom: 1px solid var(--olive); border-radius: 50%; opacity: .8; }

.manifesto-actions { position: absolute; z-index: 10; bottom: 72px; left: 50%; transform: translateX(-50%); }
.manifesto-waves { position: absolute; bottom: 52px; left: 55px; width: 84px; }
.round-sign { position: absolute; right: 73px; bottom: 48px; width: 125px; height: 90px; display: grid; place-items: center; color: var(--orange); transform: rotate(-4deg); }
.round-sign span { position: absolute; text-transform: uppercase; font-size: 11px; font-weight: 700; letter-spacing: .16em; transform: translateY(-38px); white-space: nowrap; }
.round-sign img { width: 33px; height: 33px; }
.anchor-point { position: absolute; bottom: 0; }

.programs-section {
  position: relative;
  z-index: 40;
  width: 100%;
  height: 220vh;
  min-height: 1700px;
  background: #362a1d;
}
.programs-stage {
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  min-height: 720px;
  display: grid;
  place-items: center;
  overflow: hidden;
  isolation: isolate;
  --program-progress: 0;
  --program-card-progress: 0;
  --program-ticket-progress: 0;
  --program-entry: 1;
  --program-mask-left: 100%;
  --program-bg-shift: 9vw;
  --program-bg-scale: 1.04;
  background: #23170f;
}
.programs-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(35, 21, 10, .08), rgba(35, 21, 10, .2) 48%, rgba(35, 21, 10, .1));
}
.program-backdrop { position: absolute; inset: -7%; z-index: 0; background-position: center; background-size: cover; will-change: transform, clip-path; }
.program-backdrop-first { background-image: var(--cms-bg-2); transform: translate3d(0, calc((1 - var(--program-entry)) * 8vh), 0) scale(var(--program-bg-scale)); }
.program-backdrop-second { z-index: 0; background-image: var(--cms-bg-3); clip-path: inset(0 0 0 var(--program-mask-left)); transform: translate3d(var(--program-bg-shift), calc((1 - var(--program-entry)) * 8vh), 0) scale(1.05); }
.program-stack {
  position: relative;
  z-index: 2;
  width: min(580px, calc(100vw - 48px));
  height: min(820px, calc(100vh - 44px));
  min-height: 680px;
  perspective: 1400px;
  transform: translate3d(0, calc((1 - var(--program-entry)) * 13vh), 0) scale(calc(.92 + var(--program-entry) * .08));
  opacity: calc(.2 + var(--program-entry) * .8);
  will-change: transform, opacity;
}
.program-card {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-rows: 38% 1fr 94px;
  overflow: hidden;
  border: 1px solid rgba(98, 84, 57, .18);
  border-radius: 34px;
  color: var(--ink);
  background: var(--paper-card);
  box-shadow: 0 28px 60px rgba(30, 18, 7, .42), 0 5px 12px rgba(30, 18, 7, .18);
  transform-origin: 50% 85%;
  will-change: transform;
}
.program-card-first { z-index: 2; transform: translate(-16px, -5px) rotate(-1.1deg); }
.program-card-second { z-index: 1; transform: translate(27px, 17px) rotate(2.1deg) scale(.975); }
.programs-section.is-second-active .program-card-first { z-index: 1; }
.programs-section.is-second-active .program-card-second { z-index: 3; }
.program-photo { margin: 22px 22px 0; overflow: hidden; border-radius: 18px; background: #563e25; }
.program-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.program-card-first .program-photo img { object-position: 32% center; }
.program-card-second .program-photo img { object-position: 67% center; }
.program-content { position: relative; min-height: 0; padding: 22px 58px 12px; display: flex; flex-direction: column; }
.program-content h2 { margin: 0 0 17px; color: var(--orange); font-family: var(--display); font-size: 43px; line-height: 1; text-transform: uppercase; }
.program-facts { margin: 0 0 17px; display: grid; gap: 8px; font-size: 15px; }
.program-facts div { display: flex; align-items: center; gap: 5px; }
.program-facts dt { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; }
.program-facts dd { margin: 0; }
.program-facts svg { width: 23px; height: 23px; flex: 0 0 auto; fill: none; stroke: var(--olive); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.program-description { margin: 0; font-size: 14px; line-height: 1.48; }
.program-price { margin-top: auto; min-height: 52px; display: flex; align-items: center; gap: 12px; border-top: 1px solid rgba(85, 73, 50, .16); }
.program-price span { color: var(--olive); font-size: 20px; font-weight: 700; }
.program-price strong { color: var(--orange); font-family: var(--display); font-size: 34px; line-height: 1; }
.program-price small { margin-left: auto; min-width: 54px; padding: 5px 10px; border: 1px solid rgba(85, 73, 50, .24); border-radius: 99px; text-align: center; font-size: 13px; }
.program-ticket {
  position: relative;
  padding: 15px 22px 22px;
  background: var(--paper-card);
  transform-origin: 50% 0;
  transition: transform .3s cubic-bezier(.2,.75,.25,1), filter .22s ease, opacity .28s ease;
  will-change: transform, opacity;
}
.program-ticket::before { content: ""; position: absolute; z-index: 4; left: 0; right: 0; top: -6px; height: 12px; background: radial-gradient(circle, rgba(124,106,76,.62) 0 2.3px, transparent 2.7px) 0 50% / 13px 12px repeat-x; pointer-events: none; }
.program-card-first .program-ticket { opacity: calc(1 - var(--program-ticket-progress)); }
.program-card-second .program-ticket { opacity: var(--program-ticket-progress); }
.program-book {
  position: relative;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  color: white;
  border: 0;
  outline-offset: 4px;
  background: linear-gradient(105deg, var(--orange-dark), #dc4d1b);
  font-size: 19px;
  font-weight: 600;
  text-decoration: none;
  box-shadow: none;
  transition: filter .2s ease;
}
.program-book::before, .program-book::after { content: ""; position: absolute; top: 50%; width: 23px; height: 23px; border-radius: 50%; background: var(--paper-card); transform: translateY(-50%); }
.program-book::before { left: -12px; }
.program-book::after { right: -12px; }
.program-ticket:has(.program-book:is(:hover, :focus-visible)) { transform: translateY(11px) rotate(.55deg); filter: drop-shadow(0 -5px 7px rgba(48,24,7,.16)); }
.program-book:hover { filter: brightness(1.08); }
.program-ticket:has(.program-book:active) { transform: translateY(7px) rotate(.25deg); }

/* Location: a finite, cursor-responsive photo wall around a stationary card. */
.location-section {
  position: relative;
  z-index: 3;
  isolation: isolate;
  width: 100%;
  height: 110vh;
  min-height: calc(760px + 10vh);
  margin-top: -10vh;
  padding-top: 10vh;
  display: grid;
  place-items: center;
  overflow: hidden;
  color: #f4eedf;
  background:
    radial-gradient(circle at 50% 42%, rgba(128, 126, 79, .16), transparent 31%),
    linear-gradient(125deg, #383722, #29291b 70%);
}
.location-section::before,
.schedule-stage::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: .12;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");
  mix-blend-mode: soft-light;
}
.location-gallery { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.location-gallery { perspective: 1200px; }
.location-tile {
  --tile-rotate: 0deg;
  position: absolute;
  margin: 0;
  padding: 10px 10px 25px;
  overflow: hidden;
  background: #f5f0e5;
  box-shadow: 0 20px 42px rgba(12, 12, 6, .36), 0 2px 5px rgba(12, 12, 6, .25);
  transform: translate3d(var(--parallax-x, 0), var(--parallax-y, 0), 0) rotate(var(--tile-rotate)) scale(var(--entry-scale, 1));
  will-change: transform;
}
.location-tile img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.86) contrast(.96); }
.location-layer-back { z-index: 0; opacity: .34; filter: blur(5px) saturate(.68); }
.location-layer-mid { z-index: 1; opacity: .82; filter: blur(.7px); }
.location-layer-front { z-index: 3; opacity: 1; box-shadow: 0 28px 56px rgba(8, 8, 4, .48), 0 4px 9px rgba(8, 8, 4, .3); }
.location-tile-1 { --tile-rotate: -4.5deg; left: -4.5vw; top: 8vh; width: min(31vw, 500px); height: min(34vh, 310px); }
.location-tile-2 { --tile-rotate: 4.4deg; right: -3.5vw; top: 4vh; width: min(32vw, 515px); height: min(34vh, 320px); }
.location-tile-3 { --tile-rotate: 2.5deg; left: 1.5vw; top: 50%; width: min(23vw, 365px); height: min(29vh, 265px); }
.location-tile-4 { --tile-rotate: -3.5deg; right: -1.5vw; top: 49%; width: min(25vw, 405px); height: min(30vh, 285px); }
.location-tile-5 { --tile-rotate: 6deg; left: 8vw; bottom: -8vh; width: min(20vw, 320px); height: min(27vh, 245px); }
.location-tile-6 { --tile-rotate: -3deg; right: 7vw; bottom: -9vh; width: min(27vw, 430px); height: min(27vh, 250px); }
.location-tile-7 { --tile-rotate: 7deg; left: 21vw; top: -4vh; width: min(19vw, 300px); height: min(23vh, 205px); }
.location-tile-8 { --tile-rotate: -7deg; right: 20vw; top: 12vh; width: min(18vw, 285px); height: min(21vh, 190px); }
.location-tile-9 { --tile-rotate: -2deg; left: 26vw; top: 39%; width: min(18vw, 280px); height: min(22vh, 200px); }
.location-tile-10 { --tile-rotate: -9deg; left: 21vw; bottom: 4vh; width: min(19vw, 300px); height: min(25vh, 225px); }
.location-tile-11 { --tile-rotate: 8deg; right: 22vw; bottom: 14vh; width: min(20vw, 320px); height: min(22vh, 205px); }
.location-tile-12 { --tile-rotate: 9deg; right: 19vw; bottom: -6vh; width: min(19vw, 300px); height: min(24vh, 220px); }
.location-tile-3 img { object-position: 45% center; }
.location-tile-4 img { object-position: center 36%; }
.location-stamp { position: absolute; left: 30%; top: 4%; width: 135px; opacity: .5; filter: grayscale(1) brightness(2.2); transform: rotate(-8deg); }
.location-waves { position: absolute; right: 15%; bottom: 4%; width: 95px; opacity: .72; filter: grayscale(1) brightness(2.2); transform: rotate(-8deg); }
.location-card {
  position: relative;
  z-index: 5;
  width: min(500px, calc(100vw - 80px));
  min-height: min(690px, calc(100vh - 72px));
  padding: 42px 46px 38px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #514a32;
  text-align: center;
  background:
    radial-gradient(circle at 48% 33%, rgba(255, 255, 255, .75), transparent 42%),
    #f0eadc;
  border: 1px solid rgba(255,255,255,.55);
  box-shadow: 0 30px 55px rgba(15, 14, 7, .42), 0 3px 8px rgba(15, 14, 7, .18);
  will-change: transform, opacity;
}
.location-card::after { content: ""; position: absolute; left: 31%; right: 31%; bottom: -8px; height: 30px; opacity: .7; background: #d8c8a7; clip-path: polygon(0 19%, 7% 5%, 15% 15%, 26% 3%, 39% 13%, 51% 1%, 64% 12%, 76% 4%, 88% 17%, 100% 5%, 98% 84%, 89% 94%, 73% 87%, 60% 98%, 43% 87%, 28% 96%, 13% 86%, 2% 96%); }
.location-label { margin: 0 0 25px; padding: 10px 23px 11px; color: #fffdf5; background: #8d905a; border: 0; box-shadow: 0 2px 4px rgba(63,59,35,.16); font-family: Georgia, serif; font-size: 18px; font-weight: 400; letter-spacing: .12em; text-transform: uppercase; transform: rotate(-1.5deg); }
.location-card h2 { margin: 0; color: var(--orange); font-family: var(--display); font-size: clamp(52px, 4vw, 64px); font-weight: 600; line-height: .94; letter-spacing: -.025em; text-transform: uppercase; white-space: nowrap; }
.location-lead { margin: 28px 0 29px; font-family: var(--body); font-size: 17px; font-weight: 500; line-height: 1.48; }
.location-features { width: 100%; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid rgba(81,74,50,.2); border-bottom: 1px solid rgba(81,74,50,.2); text-align: left; }
.location-features > div { min-height: 82px; display: flex; align-items: center; gap: 14px; padding: 13px 10px; font-family: var(--body); font-size: 14px; font-weight: 600; line-height: 1.25; }
.location-features > div:nth-child(odd) { border-right: 1px solid rgba(81,74,50,.2); }
.location-features > div:nth-child(-n+2) { border-bottom: 1px solid rgba(81,74,50,.2); }
.location-features img { width: 34px; height: 34px; object-fit: contain; filter: sepia(.7) saturate(.55) hue-rotate(8deg); }
.location-features div:nth-child(3) img { width: 38px; }
.location-route { min-width: 210px; min-height: 50px; margin-top: 27px; padding: 0 25px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: var(--orange); border-radius: 99px; font-size: 15px; font-weight: 700; text-decoration: none; transition: transform .2s ease, background .2s ease, box-shadow .2s ease; }
.location-route:hover { background: var(--orange-dark); box-shadow: 0 8px 18px rgba(66,45,25,.18); transform: translateY(-2px); }

/* Schedule: a pinned 3:4 card stack fed by photos from the location block. */
.schedule-section { position: relative; z-index: 2; height: 390vh; min-height: 3000px; background: #29291b; }
.schedule-stage {
  --schedule-entry: 0;
  position: sticky;
  top: 0;
  width: 100%;
  height: 100vh;
  min-height: 760px;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(circle at 50% 42%, rgba(128, 126, 79, .16), transparent 31%),
    linear-gradient(125deg, #383722, #29291b 70%);
}
.schedule-heading { position: absolute; z-index: 5; top: 24px; left: 50%; width: min(760px, calc(100vw - 60px)); text-align: center; transform: translateX(-50%); will-change: transform, opacity; }
.schedule-heading > img { display: block; width: 30px; height: 30px; margin: 0 auto 3px; }
.schedule-heading > span { display: block; color: #eee7d7; font-family: var(--body); font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.schedule-heading h2 { margin: 4px 0 2px; color: var(--orange); font-family: var(--display); font-size: clamp(45px, 3.8vw, 60px); font-weight: 600; line-height: .96; letter-spacing: -.02em; text-transform: uppercase; }
.schedule-heading p { margin: 7px 0 0; color: #eee7d7; font-family: var(--body); font-size: 17px; font-weight: 500; line-height: 1.3; }
.day-stack { position: absolute; z-index: 4; top: 220px; left: 50%; width: min(390px, calc(100vw - 48px)); aspect-ratio: 3 / 4; transform: translateX(-50%); perspective: 1300px; }
.day-card {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-rows: 82px 1fr;
  gap: 25px;
  padding: 40px 34px 36px;
  overflow: hidden;
  opacity: 0;
  color: #514a37;
  background:
    radial-gradient(circle at 75% 14%, rgba(255,255,255,.85), transparent 30%),
    #f4ede0;
  border: 1px solid rgba(99, 83, 58, .18);
  box-shadow: 0 24px 48px rgba(61, 43, 22, .25), 0 4px 8px rgba(61,43,22,.12);
  transform: translate3d(0, 58vh, 0);
  transform-origin: 50% 90%;
  will-change: transform, opacity;
}
.day-card::before { content: ""; position: absolute; inset: 0; opacity: .13; pointer-events: none; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 140 140' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)' opacity='.14'/%3E%3C/svg%3E"); }
.day-card-1 { z-index: 1; }
.day-card-2 { z-index: 2; }
.day-card-3 { z-index: 3; }
.day-card-4 { z-index: 4; }
.day-card-top { position: relative; z-index: 1; display: flex; align-items: baseline; gap: 12px; border-bottom: 1px solid rgba(81,74,55,.23); }
.day-card-top span,
.day-card-top strong { color: var(--orange); font-family: var(--display); font-weight: 600; line-height: .9; text-transform: uppercase; }
.day-card-top span { font-size: 53px; }
.day-card-top strong { font-size: 53px; }
.day-card-copy { position: relative; z-index: 1; }
.day-card-copy h3 { margin: 0 0 17px; color: var(--orange); font-family: var(--display); font-size: 27px; font-weight: 600; line-height: 1.08; text-transform: uppercase; }
.day-card-copy p { margin: 0; font-family: var(--body); font-size: 15px; font-weight: 500; line-height: 1.52; }
.schedule-cta { position: absolute; z-index: 6; left: 50%; bottom: 26px; min-width: 330px; min-height: 52px; display: inline-flex; align-items: center; justify-content: center; color: #f7f0df; background: #5c6140; border: 1px solid rgba(45,50,29,.55); box-shadow: 0 5px 10px rgba(46,39,25,.2); font-family: var(--body); font-size: 16px; font-weight: 700; text-decoration: none; transform: translateX(-50%); transition: background .2s ease, transform .2s ease; }
.schedule-cta:hover { background: #6e7449; transform: translate(-50%, -3px); }

/* Static design state used only by the Figma capture URL. */
.figma-static .reason { opacity: 1 !important; transform: none !important; }
.figma-static .journey { --journey-progress: 1 !important; }
.figma-static .programs-stage {
  --program-entry: 1 !important;
  --program-progress: 0 !important;
  --program-card-progress: 0 !important;
  --program-ticket-progress: 0 !important;
  --program-mask-left: 100% !important;
  --program-bg-shift: 9vw !important;
  --program-bg-scale: 1.04 !important;
}
.figma-static .location-tile { --entry-scale: 1 !important; }
.figma-static .location-layer-back { opacity: .34 !important; }
.figma-static .location-layer-mid { opacity: .82 !important; }
.figma-static .location-layer-front { opacity: 1 !important; }
.figma-static .location-card { opacity: 1 !important; transform: none !important; }
.figma-static .schedule-stage { --schedule-entry: 1 !important; }
.figma-static .schedule-heading { opacity: 1 !important; transform: translateX(-50%) !important; }
.figma-static .day-card { opacity: 1 !important; }
.figma-static .day-card-1 { transform: translate3d(-25px, -16px, 0) rotate(-4.3deg) scale(.955) !important; }
.figma-static .day-card-2 { transform: translate3d(19px, -10px, 0) rotate(3.1deg) scale(.97) !important; }
.figma-static .day-card-3 { transform: translate3d(-10px, -5px, 0) rotate(-1.8deg) scale(.985) !important; }
.figma-static .day-card-4 { transform: translate3d(0, 0, 0) rotate(.45deg) scale(1) !important; }
.figma-static .schedule-cta { opacity: 1 !important; }

@media (max-width: 1320px) {
  .site-header { padding: 0 32px; }
  .brand { font-size: 24px; }
  .nav-links { gap: 24px; font-size: 14px; }
  .header-cta { padding: 0 18px; font-size: 14px; }
  .hero { padding-left: 70px; }
  .hero-copy { width: 680px; }
  .hero h1 { font-size: 72px; }
  .hero-star { left: 435px; top: 172px; }
  .hero-collage { left: 43%; transform: scale(.9); transform-origin: top left; }
  .location-card { width: min(470px, calc(100vw - 70px)); }
  .day-stack { width: 370px; top: 218px; }
}

@media (max-width: 980px) {
  .site-header { position: relative; height: auto; min-height: 78px; grid-template-columns: 1fr auto; }
  .nav-links { display: none; }
  .brand { font-size: 20px; }
  .header-cta { min-height: 44px; }
  .hero { min-height: 1260px; padding: 70px 28px 110px; }
  .hero-copy { width: min(100%, 680px); }
  .hero-collage { inset: 650px auto auto 50%; width: 900px; height: 650px; transform: translateX(-50%) scale(.76); transform-origin: top center; }
  .hero-features { min-width: 0; width: 100%; padding-left: 24px; overflow-x: auto; }
  .manifesto { min-height: 1940px; }
  .static-copy { display: block; }
  .side-photo { opacity: .58; }
  .programs-section { height: 170vh; }
  .program-stack { width: min(560px, calc(100vw - 40px)); }
  .location-card { width: min(455px, calc(100vw - 46px)); min-height: min(650px, calc(100vh - 56px)); padding: 36px 38px 32px; }
  .location-layer-back { opacity: .23; }
  .location-layer-mid { opacity: .62; }
  .location-layer-front { opacity: .84; }
  .location-tile-1, .location-tile-2 { width: 42vw; }
  .location-tile-3, .location-tile-4 { width: 34vw; }
}

@media (max-width: 620px) {
  .site-header { padding: 0 18px; }
  .brand span { font-size: 16px; }
  .header-cta { display: none; }
  .hero { min-height: 1180px; padding: 42px 20px 100px; }
  .eyebrow span { font-size: 13px; }
  .hero h1 { font-size: clamp(48px, 15vw, 66px); }
  .hero h1 span { white-space: normal; }
  .hero-star { left: auto; right: 0; top: 152px; width: 48px; }
  .hero-waves { display: none; }
  .hero-lead { font-size: 17px; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .button { width: 100%; }
  .hero-collage { inset: 650px auto auto 50%; transform: translateX(-50%) scale(.48); }
  .hero-features { height: 84px; }
  .mini-feature { min-width: 220px; }
  .manifesto { min-height: 1550px; padding-top: 52px; }
  .manifesto-intro { width: calc(100% - 30px); }
  .manifesto h2 { font-size: 44px; }
  .manifesto-intro p { font-size: 16px; }
  .intro-star { display: none; }
  .side-photo { display: none; }
  .journey { width: 100%; height: 920px; margin-top: 45px; }
  .journey-line { display: none; }
  .reason { width: calc(100% - 68px); min-height: 145px; left: 45px; right: auto; padding: 25px 22px 22px 44px; }
  .reason h3 { font-size: 24px; }
  .reason-1 { top: 0; } .reason-2 { top: 170px; } .reason-3 { top: 340px; } .reason-4 { top: 510px; } .reason-5 { top: 680px; }
  .manifesto-actions { width: calc(100% - 40px); bottom: 50px; flex-direction: column; }
  .manifesto-waves, .round-sign { display: none; }
  .programs-stage { min-height: 640px; }
  .program-stack { width: calc(100vw - 28px); height: min(720px, calc(100vh - 28px)); min-height: 610px; }
  .program-card { grid-template-rows: 34% 1fr 76px; border-radius: 24px; }
  .program-photo { margin: 14px 14px 0; border-radius: 14px; }
  .program-content { padding: 17px 24px 8px; }
  .program-content h2 { margin-bottom: 12px; font-size: 34px; }
  .program-facts { gap: 5px; margin-bottom: 10px; font-size: 13px; }
  .program-facts svg { width: 20px; height: 20px; }
  .program-description { font-size: 12px; line-height: 1.4; }
  .program-price { min-height: 44px; }
  .program-price span { font-size: 16px; }
  .program-price strong { font-size: 28px; }
  .program-ticket { padding: 12px 14px 14px; }
  .program-book { font-size: 16px; }
  .location-section { min-height: 720px; }
  .location-card { width: calc(100vw - 38px); min-height: min(630px, calc(100vh - 38px)); padding: 32px 26px 27px; }
  .location-card h2 { font-size: 44px; white-space: normal; }
  .location-lead { margin: 22px 0 25px; font-size: 15px; }
  .location-label { margin: 13px 0 16px; }
  .location-features > div { min-height: 72px; padding: 9px 7px; gap: 9px; font-size: 15px; }
  .location-features img { width: 28px; height: 28px; }
  .location-tile { padding: 6px 6px 16px; }
  .location-layer-back { opacity: .14; }
  .location-layer-mid { opacity: .3; }
  .location-layer-front { opacity: .44; }
  .location-tile-1 { left: -25vw; top: 3vh; width: 70vw; height: 24vh; }
  .location-tile-2 { right: -27vw; top: 5vh; width: 72vw; height: 24vh; }
  .location-tile-3 { display: none; }
  .location-tile-4 { right: -29vw; top: 55%; width: 68vw; height: 26vh; }
  .location-tile-5 { left: -24vw; bottom: -2vh; width: 64vw; height: 25vh; }
  .location-tile-6 { display: none; }
  .location-tile-7, .location-tile-8, .location-tile-9, .location-tile-11 { display: none; }
  .location-tile-10 { left: -20vw; bottom: 27vh; width: 56vw; height: 22vh; }
  .location-tile-12 { right: -22vw; bottom: 1vh; width: 58vw; height: 23vh; }
  .location-stamp, .location-waves { display: none; }
  .schedule-section { height: 400vh; min-height: 2750px; }
  .schedule-stage { min-height: 700px; }
  .schedule-heading { top: 21px; width: calc(100vw - 30px); }
  .schedule-heading > img { width: 25px; height: 25px; }
  .schedule-heading h2 { font-size: 39px; }
  .schedule-heading p { font-size: 16px; }
  .day-stack { top: 190px; width: min(330px, calc(100vw - 36px)); }
  .day-card { grid-template-rows: 78px 1fr; gap: 19px; padding: 28px 25px 24px; }
  .day-card-top span { font-size: 46px; }
  .day-card-top strong { font-size: 46px; }
  .day-card-copy h3 { margin-bottom: 13px; font-size: 25px; }
  .day-card-copy p { font-size: 16px; }
  .schedule-cta { min-width: 260px; min-height: 46px; bottom: 18px; font-size: 17px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .reason { opacity: 1; transform: none; }
  .journey { --journey-progress: 1; }
  .program-card-first { transform: translate(-18px, -10px) rotate(-1.4deg) scale(.96); }
  .program-card-second { transform: translate(18px, 10px) rotate(1.4deg); }
  .program-backdrop-second { clip-path: inset(0 0 0 100%); }
  .location-tile { transform: rotate(var(--tile-rotate)); }
  .schedule-section { height: auto; min-height: 0; }
  .schedule-stage { position: relative; height: auto; min-height: 0; padding: 190px 20px 95px; overflow: hidden; }
  .day-stack { position: relative; top: auto; left: auto; width: min(420px, 100%); aspect-ratio: auto; margin: 0 auto; display: grid; gap: 24px; transform: none; }
  .day-card { position: relative; inset: auto; min-height: 540px; aspect-ratio: 3 / 4; opacity: 1; transform: none; }
}

/* Fluid layouts and shared scroll scenes. Only transforms/masks animate; paper stays opaque. */
html, body { overflow-x: clip; }
main { min-width: 0; }
img { max-width: 100%; }
button { touch-action: manipulation; }
.site-header { padding-inline: clamp(20px, 3vw, 64px); gap: 24px; }
.brand { font-size: clamp(18px, 1.8vw, 29px); gap: 10px; }
.nav-links { gap: clamp(16px, 1.7vw, 30px); font-size: 14px; }
.header-cta { padding-inline: 18px; font-size: 14px; }
.menu-toggle { display: none; }
.hero { min-height: max(820px, 100svh); padding: clamp(145px, 11vw, 190px) clamp(28px, 6vw, 120px) 140px; }
.hero-copy { width: min(62%, 940px); }
.hero h1 { font-size: clamp(58px, 5.3vw, 96px); line-height: 1.04; }
.hero h1 span { white-space: nowrap; }
.hero h1 span::after { right: -5px; }
.hero-star { left: min(37vw, 630px); top: 200px; width: 50px; }
.hero-lead { font-size: clamp(17px, 1.4vw, 22px); }
.hero-collage { inset: 135px 0 110px 52%; transform: none; width: auto; height: auto; }
.photo-landscape { width: clamp(280px, 29vw, 510px); height: clamp(290px, 29vw, 480px); left: 0; top: 0; }
.photo-games { width: clamp(290px, 31vw, 530px); height: clamp(270px, 27vw, 440px); left: 48%; top: 145px; }
.photo-notes { width: clamp(270px, 28vw, 480px); height: clamp(230px, 23vw, 390px); left: 17%; top: 440px; }
.stamp { left: 43%; top: -20px; }
.sticky-note { display: none; }
.pressed-flower { top: 650px; left: 0; }
.hero-features { z-index: 25; width: 100%; min-width: 0; padding: 20px clamp(28px, 6vw, 120px); height: auto; gap: 28px; background: transparent; border-top: 0; }
.hero-features .mini-feature { text-shadow: 0 0 5px var(--paper), 0 0 10px var(--paper); }
.mini-feature { flex: 1; min-width: 0; height: auto; padding: 0 24px 0 0; }
.mini-feature p { font-size: 14px; line-height: 1.45; }
.mini-feature span { font-size: 12px; }
.manifesto { min-height: 0; padding: 90px 0 180px; isolation: isolate; }
.manifesto::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--cms-bg-4) center top / max(100%, 1300px) auto repeat-y; opacity: .17; pointer-events: none; }
.manifesto-intro { width: min(760px, calc(100% - 48px)); opacity: 1; will-change: transform; }
.manifesto h2 { font-size: clamp(38px, 4.8vw, 74px); }
.manifesto-intro p { font-size: clamp(16px, 1.5vw, 21px); }
.journey { width: min(880px, calc(100% - 220px)); height: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 64px 70px; margin: 72px auto 0; }
.journey-line { display: block; width: 100%; height: 100%; }
.reason { position: relative; inset: auto; width: 100%; min-height: 215px; padding: 43px 30px 35px; opacity: 1; transform: none; transition: none; }
.reason:nth-of-type(odd) { grid-column: 1; }.reason:nth-of-type(even) { grid-column: 2; }
.reason-1 { grid-row: 1; }.reason-2 { grid-row: 2; }.reason-3 { grid-row: 3; }.reason-4 { grid-row: 4; }.reason-5 { grid-row: 5; }
.reason h3 { font-size: clamp(24px, 2vw, 30px); }
.reason p { font-size: 16px; }
.reason img { width: 24px; height: 28px; right: 12px; top: auto; bottom: 9px; transform: none; }
.reason-5 img { width: 28px; height: 28px; }
.line-icon, .wave-doodle { font-size: 30px; }
.manifesto-actions { position: relative; inset: auto; transform: none; justify-content: center; width: min(650px, calc(100% - 40px)); margin: 75px auto 0; }
.programs-section { height: 280svh; min-height: 0; margin-top: -65px; z-index: 40; background: transparent; border-radius: 0; }
.programs-stage { height: 100svh; min-height: 0; border-radius: 0; clip-path: inset(var(--trips-reveal-block, 0%) var(--trips-reveal-inline, 0%)); }
.program-backdrop { inset: -20%; }
.program-backdrop-first { transform: translate3d(0, var(--program-bg-y, 0px), 0) scale(var(--program-bg-scale)); }
.program-backdrop-second { transform: translate3d(var(--program-bg-shift), var(--program-bg-y, 0px), 0) scale(1.06); }
.program-stack { width: min(440px, calc(100% - 44px)); height: min(660px, calc(100svh - 52px)); min-height: 0; opacity: 1; transform: translate3d(0, calc(var(--program-entry-y, 0px) + var(--program-exit-y, 0px)), 0); will-change: transform; }
.program-card { --ticket-height: 84px; grid-template-rows: 25% minmax(0, 1fr) var(--ticket-height); border: 0; border-radius: 22px; background: transparent; box-shadow: none; overflow: visible; }
.program-card::before { content: ''; position: absolute; z-index: -1; inset: 0 0 var(--ticket-height); border-radius: 22px 22px 0 0; background: var(--paper-card); box-shadow: 0 12px 35px #1e120755; pointer-events: none; }
.program-photo { margin: 16px 16px 0; border-radius: 12px; }
.program-content { padding: 20px 26px 12px; }
.program-content h2 { font-size: clamp(28px, 2.6vw, 36px); margin-bottom: 14px; }
.program-facts { font-size: 14px; gap: 6px; margin-bottom: 14px; }
.program-facts svg { width: 20px; height: 20px; }
.program-description { font-size: 14px; line-height: 1.5; }
.program-price { min-height: 43px; padding-top: 10px; }
.program-price span { font-size: 16px; }.program-price strong { font-size: 30px; }
.program-ticket { padding: 17px 22px; border: 0; border-top: 3px dotted #aaa087; border-radius: 0 0 22px 22px; box-shadow: 0 12px 24px #1e120733; transform-origin: 8% 0; transition: transform .35s ease, filter .35s ease; will-change: auto; }
.program-card-first .program-ticket, .program-card-second .program-ticket { opacity: 1; }
.program-ticket::before, .program-ticket::after { display: none; }
.program-ticket::before { left: -8px; right: auto; }.program-ticket::after { right: -8px; }
.program-book { min-height: 46px; height: 100%; border-radius: 99px; font-size: 15px; background: linear-gradient(100deg, var(--orange-dark), #d54a18); }
.program-book::before, .program-book::after { display: none; }
.program-ticket:has(.program-book:is(:hover, :focus-visible)) { transform: none; filter: none; }
.program-ticket:focus-within { transform: translateY(10px) rotate(2.5deg); }
@media (hover: hover) {
  .program-ticket:has(.program-book:hover) { transform: translateY(12px) rotate(3deg); filter: drop-shadow(0 -3px 4px #3e2f1b22); }
}
.camp-world { position: relative; z-index: 50; isolation: isolate; background: #303222; margin-top: -30svh; border-radius: 0; }
.camp-world-visuals { position: sticky; top: 0; height: 100svh; margin-bottom: -100svh; overflow: hidden; pointer-events: none; z-index: 1; border-radius: inherit; }
.camp-world-visuals::before { content: ''; position: absolute; inset: -10%; background: var(--cms-bg-5) center / max(1300px, 100%) auto; opacity: .22; }
.location-gallery { position: absolute; inset: 0; perspective: none; }
.location-section { height: 180svh; min-height: 0; margin: 0; padding: 0; background: transparent; overflow: visible; isolation: auto; z-index: 2; display: block; }
.location-section::before, .schedule-stage::before { display: none; }
.location-stage { position: sticky; top: 0; height: 100svh; overflow: clip; display: grid; place-items: center; }
.location-card { width: min(430px, calc(100% - 48px)); min-height: 0; padding: 30px; opacity: 1; will-change: transform; }
.location-card h2 { font-size: clamp(35px, 3.8vw, 52px); white-space: normal; }
.location-label { font-size: 15px; margin: 0 0 24px; padding: 9px 20px; }
.location-lead { margin: 22px 0; font-size: 16px; }
.location-lead br { display: none; }
.location-features > div { font-size: 14px; min-height: 76px; padding: 12px 6px; gap: 10px; }
.location-features img, .location-features div:nth-child(3) img { width: 27px; height: 30px; }
.location-route { font-size: 15px; min-height: 48px; margin-top: 24px; }
.location-tile { display: block; transform: rotate(var(--tile-rotate)); will-change: transform, clip-path; }
.location-layer-back { opacity: .36; filter: none; }
.location-layer-back img { filter: blur(.6px) saturate(.85); }
.location-layer-mid { opacity: 1; filter: none; }
.location-layer-front { opacity: 1; }
.location-tile-1 { left: -3%; top: 2%; width: 29%; height: 29%; }
.location-tile-2 { right: -3%; top: 1%; width: 30%; height: 31%; }
.location-tile-3 { left: -8%; top: 44%; width: 28%; height: 33%; }
.location-tile-4 { right: -1%; top: 44%; width: 25%; height: 29%; }
.location-tile-5 { left: 9%; bottom: -5%; width: 22%; height: 27%; }
.location-tile-6 { right: 3%; bottom: -8%; width: 30%; height: 29%; }
.location-tile-7 { left: 22%; top: -6%; width: 17%; height: 16%; }
.location-tile-8 { right: 22%; top: 13%; width: 17%; height: 16%; }
.location-tile-9 { left: 22%; top: 34%; width: 17%; height: 16%; }
.location-tile-10 { left: 25%; bottom: -7%; width: 20%; height: 24%; }
.location-tile-11 { right: 22%; bottom: 15%; width: 17%; height: 16%; }
.location-tile-12 { right: 20%; bottom: -8%; width: 22%; height: 25%; }
.location-layer-ghost { z-index: 0; opacity: .22; }
.location-tile-13 { --tile-rotate: -3deg; left: 1%; top: 23%; width: 16%; height: 16%; }
.location-tile-14 { --tile-rotate: 3deg; right: 1%; top: 37%; width: 16%; height: 16%; }
.location-tile-15 { --tile-rotate: 3deg; left: -3%; bottom: 8%; width: 25%; height: 24%; opacity: 1; z-index: 1; }
.location-tile-16 { --tile-rotate: -3deg; right: 1%; bottom: 1%; width: 16%; height: 16%; }
.schedule-section { z-index: 3; height: 420svh; min-height: 0; margin-top: -30svh; background: transparent; }
.schedule-stage { height: 100svh; min-height: 0; background: transparent; }
.schedule-heading { top: 28px; width: min(700px, calc(100% - 36px)); opacity: 1; will-change: transform; }
.schedule-heading > span { font-size: 11px; }.schedule-heading > img { width: 26px; height: 26px; }
.schedule-heading h2 { color: #f4ede0; font-size: clamp(32px, 3.5vw, 50px); margin-top: 8px; line-height: 1.05; }
.schedule-heading p { font-size: 16px; line-height: 1.5; }
.day-stack { top: clamp(200px, 24svh, 250px); width: min(340px, calc(100% - 48px)); height: min(470px, calc(100svh - 280px)); min-height: 410px; aspect-ratio: auto; transform: translate3d(-50%, var(--days-exit, 0px), 0); }
.day-card { opacity: 1; grid-template-rows: 58px 1fr; gap: 20px; padding: 28px 26px; will-change: transform; transform: translateY(110svh); }
.day-card-top span, .day-card-top strong { font-size: 44px; }
.day-card-copy h3 { font-size: 25px; line-height: 1.14; margin-bottom: 15px; }
.day-card-copy p { font-size: 15px; line-height: 1.55; }
.schedule-cta { min-width: 0; width: min(330px, calc(100% - 48px)); min-height: 48px; bottom: 24px; font-size: 15px; opacity: 1; border-radius: 99px; border: 1px solid var(--orange); color: #fff; background: linear-gradient(100deg, var(--orange-dark), #d54a18); }
.schedule-cta:hover { background: var(--orange-dark); }
.program-dialog { width: min(920px, calc(100% - 40px)); max-height: min(820px, calc(100dvh - 40px)); padding: 0; border: 0; border-radius: 18px; color: var(--ink); background: var(--paper-card); box-shadow: 0 28px 70px rgba(20,16,8,.45); }
.program-dialog::backdrop { background: rgba(32,31,20,.76); backdrop-filter: blur(5px); }
.program-dialog-paper { position: relative; padding: clamp(28px, 4vw, 52px); background: radial-gradient(circle at 70% 20%, rgba(255,255,255,.7), transparent 35%), var(--paper-card); }
.program-dialog h2 { margin: 22px 0 32px; color: var(--orange); font: 600 clamp(38px, 5vw, 64px)/1 var(--display); text-transform: uppercase; }
.program-dialog-close { position: sticky; z-index: 2; float: right; top: 18px; width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: var(--paper-card); color: var(--olive); font-size: 30px; line-height: 1; cursor: pointer; }
.program-dialog-days { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.program-dialog-days article { padding: 24px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.program-dialog-days b { color: var(--olive); font: 600 16px var(--display); text-transform: uppercase; }
.program-dialog-days h3 { margin: 8px 0 12px; color: var(--orange); font: 600 25px/1.15 var(--display); text-transform: uppercase; }
.program-dialog-days p { margin: 0; font-size: 14px; line-height: 1.55; }
.program-dialog .button { margin: 28px auto 0; width: min(320px,100%); }
.pricing-section { z-index: 60; margin-top: -24svh; padding-top: 90px; }
.closing-container { max-width: 1400px; }
@media (min-width: 1800px) { .price-layout { grid-template-columns: 1fr 440px; }.included-list p, .payment-terms p { font-size: 16px; } }
@media (max-width: 1150px) {
  .site-header { position: relative; height: 80px; grid-template-columns: 1fr auto auto; padding-inline: 24px; }
  .menu-toggle { display: flex; align-items: center; gap: 12px; background: transparent; border: 1px solid var(--line); border-radius: 99px; padding: 10px 16px; min-height: 44px; font: 600 14px var(--body); color: var(--ink); }
  .nav-links { display: none; position: absolute; top: calc(100% - 1px); left: 16px; right: 16px; padding: 22px; background: var(--paper-card); border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--shadow); }
  .menu-open .nav-links { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 24px; }.nav-links a { padding: 12px 0; }
  .brand span { font-size: 18px; }
  .hero { padding-top: 60px; }
  .journey { width: min(820px, calc(100% - 90px)); }
}
@media (max-width: 1099px) {
  .hero { min-height: 0; padding: 50px 28px 0; }
  .hero-copy { width: min(100%, 720px); margin-inline: auto; }
  .hero h1 { font-size: clamp(52px, 7.4vw, 76px); }
  .hero-collage { position: relative; inset: auto; width: min(900px, 100%); height: clamp(360px, 57vw, 600px); margin: 55px auto 15px; transform: none; }
  .photo-landscape { width: 48%; height: 70%; left: -4%; top: 0; }
  .photo-games { width: 52%; height: 64%; left: 52%; top: 16%; }
  .photo-notes { width: 44%; height: 52%; left: 27%; top: 47%; }
  .hero-collage .stamp { width: 100px; height: 100px; left: 43%; top: -20px; }.leaf-shape, .pressed-flower { display: none; }
  .hero-features { position: relative; left: auto; bottom: auto; padding: 28px 0; flex-wrap: wrap; width: 100%; gap: 18px; overflow: visible; }
  .static-copy { display: none; }
}
@media (max-width: 760px) {
  .site-header { grid-template-columns: 1fr auto; padding-inline: 20px; height: 72px; }.header-cta { display: none; }.brand span { font-size: 15px; }.brand img { width: 27px; height: 27px; }
  .hero-copy { width: 100%; }.hero { padding: 36px 20px 0; }.hero h1 { font-size: clamp(42px, 10vw, 70px); }.hero h1 span { white-space: normal; overflow-wrap: normal; hyphens: manual; }
  .eyebrow { height: auto; }.eyebrow span { font-size: clamp(11px, 2.8vw, 16px); padding-inline: 12px; }.eyebrow img { width: 26px; height: 36px; }
  .hero-star { right: 0; left: auto; top: 150px; width: 37px; }.hero-lead { font-size: 17px; }.hero-lead br { display: none; }
  .hero-actions { flex-direction: column; gap: 12px; }.button { min-width: 0; min-height: 50px; font-size: 15px; padding-inline: 20px; }
  .hero-collage { margin-top: 42px; height: clamp(300px, 72vw, 480px); }
  .hero-features { display: grid; grid-template-columns: 1fr; gap: 20px; }.mini-feature { border: 0; padding: 0; min-width: 0; }.mini-feature p { font-size: 15px; }.mini-feature span { font-size: 13px; }
  .manifesto { padding: 64px 0 140px; }.manifesto h2 { font-size: clamp(35px, 7.8vw, 50px); }.manifesto-intro p { font-size: 17px; }.manifesto-intro p br { display: none; }
  .journey { width: min(450px, calc(100% - 48px)); grid-template-columns: 1fr; gap: 58px; margin-top: 65px; }.reason:nth-of-type(n) { grid-column: 1; }.reason { min-height: 210px; padding: 42px 26px 35px; }.reason h3 { font-size: 27px; }.reason p { font-size: 16px; }
  .manifesto-actions { margin-top: 55px; flex-direction: column; }.manifesto-waves, .round-sign, .intro-star { display: none; }
  .program-content { padding: 16px 20px 10px; }.program-content h2 { font-size: 32px; }.program-price { margin-top: auto; }
  .program-card { --ticket-height: 80px; grid-template-rows: 23% minmax(0,1fr) var(--ticket-height); }.program-ticket { padding: 15px 18px; }
  .location-card { padding: 28px 22px; }.location-card h2 { font-size: 41px; }.location-lead { font-size: 16px; }.location-features > div { font-size: 14px; }
  .location-tile { padding: 7px 7px 17px; }
  .location-tile:nth-child(odd) { width: 44%; left: -10%; }.location-tile:nth-child(even) { width: 44%; right: -10%; }
  .location-tile-7, .location-tile-9 { left: 15% !important; }.location-tile-8, .location-tile-11 { right: 15% !important; }
  .day-card { padding: 25px 22px; gap: 18px; }.day-card-copy h3 { font-size: 24px; }.day-card-copy p { font-size: 15px; }.schedule-heading p br { display: none; }
  .program-dialog { width: calc(100% - 24px); max-height: calc(100dvh - 24px); }.program-dialog-paper { padding: 24px 20px; }.program-dialog-days { grid-template-columns: 1fr; }.program-dialog-days article { padding: 20px; }.program-dialog h2 { padding-right: 45px; }
}
@media (max-width: 360px) {
  .brand span { font-size: 13px; }.menu-toggle { padding-inline: 12px; font-size: 13px; }
  .program-stack { width: calc(100% - 32px); }.program-content { padding-inline: 17px; }.program-facts { font-size: 13px; }.program-content h2 { font-size: 30px; }
  .location-card { width: calc(100% - 32px); padding-inline: 18px; }.location-card h2 { font-size: 37px; }
  .day-stack { width: calc(100% - 38px); }.day-card { padding-inline: 20px; }.day-card-copy h3 { font-size: 23px; }
}
/* Small-height/landscape and reduced-motion: readable normal-flow cards, never clipped screens. */
@media (min-width: 761px) and (max-height: 700px), (max-height: 480px), (prefers-reduced-motion: reduce) {
  .programs-section { height: auto; padding-bottom: 80px; }
  .programs-stage { position: relative; height: auto; padding: 60px 24px; }
  .program-stack { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: start; gap: 28px; width: min(960px,100%); height: auto; transform: none !important; }
  .program-card { position: relative; inset: auto; grid-template-rows: auto 1fr 84px; min-height: 600px; transform: none !important; }
  .program-photo { aspect-ratio: 16/9; }.program-content { padding-bottom: 16px; }.program-price { margin-top: 20px; }
  .program-backdrop-first { transform: none; }.program-backdrop-second { clip-path: inset(0 0 0 100%); }
  .camp-world { margin-top: -60px; }.camp-world-visuals { height: 100svh; margin-bottom: -100svh; }
  .location-section { height: auto; padding: 65px 0; }.location-stage { height: auto; position: relative; overflow: visible; }.location-card { transform: none !important; }
  .schedule-section { height: auto; min-height: 0; margin-top: 0; padding-bottom: 100px; }
  .schedule-stage { position: relative; height: auto; padding: 35px 24px 95px; }
  .schedule-heading { position: relative; top: auto; left: auto; margin: 0 auto 40px; transform: none !important; }
  .day-stack { position: relative; top: auto; left: auto; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 25px; width: min(780px,100%); height: auto; min-height: 0; margin: 0 auto; transform: none !important; }
  .day-card { position: relative; inset: auto; min-height: 420px; aspect-ratio: auto; transform: none !important; }
  .pricing-section { margin-top: -50px; }
}
@media (max-width: 620px) and (max-height: 480px), (max-width: 620px) and (prefers-reduced-motion: reduce) {
  .program-stack, .day-stack { grid-template-columns: 1fr; max-width: 420px; }
  .programs-stage { padding-inline: 20px; }.day-card { min-height: 410px; }.program-card { min-height: 620px; }
}
@media (prefers-reduced-motion: reduce) {
  .reason, .manifesto-intro { transform: none !important; }
  .program-ticket:has(.program-book:hover), .program-ticket:focus-within { transform: none; }
}

/* Five paper prints cycle automatically using the trip-card motion. */
.contact-album { min-width: 0; width: 100%; position: relative; padding: 25px 12px 0; overflow: visible; }
.contact-photo-stack { position: relative; width: 100%; aspect-ratio: 1.12; isolation: isolate; }
.contact-memory { position: absolute; inset: 0; margin: 0; padding: 12px 12px 82px; background: var(--paper-card); border: 1px solid rgba(77,70,50,.15); box-shadow: var(--shadow); transform-origin: center; backface-visibility: hidden; }
.contact-memory:nth-child(1) { z-index: 5; transform: rotate(-1.2deg); }
.contact-memory:nth-child(2) { z-index: 4; transform: translate(12px, 8px) rotate(2deg); }
.contact-memory:nth-child(3) { z-index: 3; transform: translate(-9px, -9px) rotate(-4deg); }
.contact-memory:nth-child(4) { z-index: 2; transform: translate(7px, -14px) rotate(3deg); }
.contact-memory:nth-child(5) { z-index: 1; transform: translate(-5px, -18px) rotate(-2deg); }
.contact-memory figcaption { position: absolute; z-index: 1; bottom: 14px; left: 16%; width: 72%; padding: 15px 12px 10px; color: #494b32; background: #e8ddc7; border: 1px solid #d1c4ab; box-shadow: 0 4px 8px #40341d20; font: 500 clamp(23px, 2vw, 29px)/1.12 Caveat, cursive; text-align: center; transform: rotate(-2deg); }
.contact-memory:nth-child(even) figcaption { transform: rotate(2deg); left: 12%; }
.contact-memory .tape { top: -10px; left: 33%; width: 33%; height: 22px; background: #bfb494aa; }
@media (max-width: 760px) {
  .contact-album { width: min(100%, 540px); margin: 12px auto 0; padding-inline: 12px; }
  .contact-photo-stack { aspect-ratio: 1.03; }
  .contact-memory { padding: 8px 8px 68px; }
  .contact-memory figcaption { font-size: 24px; padding: 12px 8px 8px; bottom: 10px; width: 80%; left: 10%; }
  .contact-memory:nth-child(even) figcaption { left: 8%; }
}
@media (max-width: 760px) and (min-height: 481px) and (prefers-reduced-motion: no-preference) {
  .schedule-heading { top: clamp(72px, 11svh, 94px); }
  .schedule-heading h2 { font-size: 30px; }
  .schedule-heading p { font-size: 14px; line-height: 1.4; }
  .day-stack { top: clamp(200px, 27svh, 240px); height: calc(100svh - clamp(200px, 27svh, 240px) - 76px); min-height: 0; }
}
@media (max-width: 760px) and (min-height: 481px) and (max-height: 740px) and (prefers-reduced-motion: no-preference) {
  .schedule-heading h2 { font-size: 30px; }
  .schedule-heading p { font-size: 14px; line-height: 1.4; }
  .day-card { padding: 20px; grid-template-rows: 43px 1fr; gap: 15px; }
  .day-card-top span, .day-card-top strong { font-size: 36px; }
  .day-card-copy h3 { font-size: 22px; margin-bottom: 12px; }
  .day-card-copy p { font-size: 14px; line-height: 1.45; }
  .schedule-cta { bottom: 16px; min-height: 44px; }
}
@media (max-width: 760px) and (min-height: 481px) and (max-height: 600px) and (prefers-reduced-motion: no-preference) {
  .schedule-heading { top: 68px; }
  .schedule-heading h2 { font-size: clamp(24px, 7.5vw, 30px); }
  .schedule-heading p { font-size: 13px; }
  .day-stack { top: 180px; height: calc(100svh - 244px); }
  .day-card { padding: 16px; grid-template-rows: 36px 1fr; gap: 12px; }
  .day-card-top span, .day-card-top strong { font-size: 31px; }
  .day-card-copy h3 { font-size: 20px; line-height: 1.1; margin-bottom: 10px; }
  .day-card-copy p { font-size: 14px; line-height: 1.4; }
}

/* Paper labels, payment steps and the friends offer. */
.location-card::after { top: 22px; bottom: auto; z-index: 0; transform: rotate(2deg); }
.location-label { position: relative; z-index: 1; transform: translateY(-16px) rotate(-1.5deg); margin-bottom: 12px; }
.payment-terms article { display: grid; grid-template-columns: 30px minmax(0,1fr); gap: 10px 16px; align-items: center; align-content: start; }
.payment-terms article > div { display: contents; }
.payment-terms .term-number { width: auto; grid-column: 1; grid-row: 1; align-self: center; }
.payment-terms h3 { grid-column: 2; grid-row: 1; margin: 0; }
.payment-terms p, .payment-terms a { grid-column: 2; margin: 0; }
.payment-terms a { justify-self: start; }
.friend-promo { display: flex; gap: 24px; align-items: center; margin-top: 24px; padding: 26px 30px; border: 1px solid var(--orange-dark); border-radius: 14px; background: linear-gradient(115deg, #aa3011, #d74817); color: #fff8e8; text-decoration: none; box-shadow: 0 10px 20px #7e2b1620; transition: transform .25s ease, box-shadow .25s ease; }
.friend-promo > img { flex: 0 0 64px; width: 64px; height: 64px; filter: brightness(0) invert(1); transform: rotate(-12deg); }
.friend-promo-copy { display: grid; gap: 10px; }
.friend-promo-copy > span:first-child { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
.friend-promo strong { font: 600 clamp(26px, 2.6vw, 38px)/1.12 var(--display); text-transform: uppercase; }
.friend-promo-action { font-size: 14px; text-decoration: underline; text-underline-offset: 4px; }
.friend-promo:hover { transform: translateY(-3px); box-shadow: 0 14px 24px #7e2b1630; }
.site-footer, .site-footer > * { font-size: 17px; }
.site-footer { flex-wrap: wrap; }
.footer-privacy { color: var(--orange); }
.site-footer > .footer-privacy { width: auto; order: 0; }
@media (max-width: 760px) {
  .payment-terms article { column-gap: 12px; }
  .friend-promo { padding: 24px 20px; gap: 16px; }
  .friend-promo > img { flex-basis: 38px; width: 38px; height: 38px; }
  .friend-promo strong { font-size: 28px; }
  .location-layer-back, .location-layer-ghost:not(.location-tile-15) { width: 25%; height: 14%; }
}
@media (prefers-reduced-motion: reduce) { .programs-stage { clip-path: none; }.friend-promo:hover { transform: none; } }

/* Consistent photo formats and aligned pricing columns. */
.camp-world .location-tile { height: auto; }
.location-tile .photo-window, .location-tile > img { height: auto; aspect-ratio: 4 / 3; }
.location-tile-3 .photo-window, .location-tile-4 .photo-window,
.location-tile-5 .photo-window, .location-tile-10 .photo-window { aspect-ratio: 1; }
.price-layout { gap: 16px; }
.price-information { display: flex; flex-direction: column; gap: 16px; }
.price-information > .separate-costs, .price-information > .friend-promo { margin-top: 0; }
.booking-ticket { display: flex; flex-direction: column; }
.booking-ticket-body { flex: 1; }
.booking-ticket-stub::before, .booking-ticket-stub::after { display: none; }
.booking-ticket-body {
  mask-image: radial-gradient(circle at 0 100%, transparent 8px, #000 8.5px), radial-gradient(circle at 100% 100%, transparent 8px, #000 8.5px);
  mask-composite: intersect;
}
.booking-ticket-stub {
  mask-image: radial-gradient(circle at 0 0, transparent 8px, #000 8.5px), radial-gradient(circle at 100% 0, transparent 8px, #000 8.5px);
  mask-composite: intersect;
}
.refund-terms .term-number { text-align: right; }

/* The pinned surface follows the visible viewport as mobile browser chrome retracts.
   Scroll-track lengths stay in svh so the timeline does not jump during that resize. */
:root { --scene-height: 100vh; }
@supports (height: 100dvh) { :root { --scene-height: 100dvh; } }
@media (max-width: 760px) and (min-height: 481px) and (prefers-reduced-motion: no-preference),
       (min-width: 761px) and (min-height: 701px) and (prefers-reduced-motion: no-preference) {
  .programs-stage, .location-stage, .schedule-stage, .camp-world-visuals { height: var(--scene-height); }
  .camp-world-visuals { margin-bottom: calc(-1 * var(--scene-height)); }
  .program-stack { height: min(660px, calc(var(--scene-height) - 52px)); }
  .day-stack { height: min(470px, calc(var(--scene-height) - 280px)); }
}
@media (max-width: 760px) and (min-height: 481px) and (prefers-reduced-motion: no-preference) {
  .day-stack { height: calc(var(--scene-height) - clamp(200px, 27svh, 240px) - 76px); }
}
@media (max-width: 760px) and (min-height: 481px) and (max-height: 600px) and (prefers-reduced-motion: no-preference) {
  .day-stack { height: calc(var(--scene-height) - 244px); }
  .program-card { grid-template-rows: 18% minmax(0, 1fr) var(--ticket-height); }
  .program-content { padding-top: 12px; }
  .program-content h2 { font-size: 27px; margin-bottom: 10px; }
  .program-facts { margin-bottom: 10px; }
  .program-description { font-size: 13px; line-height: 1.45; }
}
/* A4 sheet: fixed proportion, viewport gutters, independently scrollable text. */
dialog.team-modal { width: min(calc(100vw - 32px),calc((100vh - 40px) * .7070707)); height: auto; aspect-ratio: 210 / 297; margin: auto; overflow: visible; }
@supports(height:100dvh) { dialog.team-modal { width: min(calc(100vw - 32px),calc((100dvh - 40px) * .7070707)); } }
.team-modal-scroll { padding: 205px 36px 32px; }
.team-modal-photo { top: 38px; left: 36px; width: 112px; }
.team-modal-copy { margin: 0; }
.team-modal-copy h2 { font-size: 52px; margin: 12px 0; }
.team-modal-role { font-size: 25px; padding-bottom: 16px; }
.team-modal-story { font-size: 16px; line-height: 1.7; }
.team-modal-close { top: 14px; right: 14px; }
.day-card-copy .day-highlight { margin-top: 15px; padding: 12px 14px; border-left: 3px solid var(--orange); background: #c83f1510; }
.day-highlight span { display: block; font: 10px/1.4 var(--body); letter-spacing: .1em; text-transform: uppercase; color: var(--olive); margin-bottom: 5px; }
.day-highlight strong { display: block; font: 600 17px/1.25 var(--display); color: var(--orange); }
.program-dialog .program-dialog-days { grid-template-columns: 1fr; }
.day-timeline { list-style: none; padding: 0; margin: 22px 0 0; }
.day-timeline li { display: grid; grid-template-columns: 125px 1fr; gap: 18px; border-top: 1px solid var(--line); padding: 14px 0; }
.timeline-time { color: var(--olive); font: 600 15px/1.55 var(--body); }
.day-timeline .timeline-highlight { background: #c83f1510; border-left: 3px solid var(--orange); padding-inline: 12px; }
.contact-offer { display: grid; grid-template-columns: 1fr 1fr; gap: 16px 24px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 20px 0; margin: 26px 0; }
.contact-offer dt { font-size: 11px; letter-spacing: .07em; text-transform: uppercase; color: var(--olive); margin-bottom: 5px; }
.contact-offer dd { margin: 0; font-size: 15px; line-height: 1.6; font-weight: 600; }
.contact-offer small { display: block; font-size: 11px; font-weight: 400; }
@media(max-width:620px) {
 .team-modal-scroll { padding: 172px 22px 24px; }
 .team-modal-photo { width: 90px; top: 32px; left: 27px; }
 .team-modal-copy h2 { font-size: 42px; }
 .team-modal-story { font-size: 15px; }
 .day-timeline li { grid-template-columns: 1fr; gap: 5px; }
 .day-card-copy .day-highlight { margin-top: 10px; padding: 8px 10px; }
 .day-highlight strong { font-size: 15px; }
}
/* The print overhangs the A4 sheet, independent of the biography scroll. */
.team-modal-scroll { top: 190px; padding-top: 15px; }
.team-modal > .team-modal-photo { top: 30px; left: -8px; z-index: 1; box-sizing: border-box; }
.team-modal > .team-modal-photo img { width: 100%; height: 100%; aspect-ratio: auto; }
@media(max-width:620px) {
 .team-modal-scroll { top: 155px; padding-top: 17px; }
 .team-modal > .team-modal-photo { top: 26px; left: -5px; }
}
/* Native modal scrolling must bypass the landing's smooth-scroll controller. */
dialog.program-dialog { overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; touch-action: pan-y; -webkit-overflow-scrolling: touch; max-height: min(820px,calc(100vh - 24px)); scrollbar-gutter: stable; }
@supports(height:100dvh) { dialog.program-dialog { max-height: min(820px,calc(100dvh - 24px)); } }
/* Keep the hit area still: no hover translation and no gradient/solid swap. */
.schedule-cta, .schedule-cta:hover { transform: translateX(-50%); background: linear-gradient(100deg,var(--orange-dark),#d54a18); }
.schedule-cta { cursor: pointer; transition: filter .18s ease, box-shadow .18s ease; }
@media(hover:hover) and (pointer:fine) {
 .schedule-cta:hover { filter: brightness(1.08); box-shadow: 0 7px 16px #2e271940; }
}
.schedule-cta:active { filter: brightness(.94); }
.schedule-cta:focus-visible { outline: 3px solid var(--paper-card); outline-offset: 4px; }
@media(prefers-reduced-motion:reduce) { .schedule-cta { transition: none; } }
.trip-seats { margin: 8px 0; font: 12px/1.45 var(--body); color: var(--olive); }
.trip-seats strong { color: var(--orange); white-space: nowrap; }
.route-dialog h3 { margin: 24px 0 8px; font: 600 23px/1.2 var(--display); color: var(--orange); }
.route-dialog p { font-size: 15px; line-height: 1.65; }
.route-dialog .route-source { font-size: 11px; color: var(--olive); }
button.location-route { font-family: var(--body); cursor: pointer; }
.faq-list { overflow-anchor: none; }
.faq-answer { box-sizing: border-box; }
/* Ten explicit places; filled cells are booked, outlined cells are available. */
.seat-meter { display:block; min-width:0; margin:12px 0; color:var(--ink); }
.seat-caption { display:flex; align-items:baseline; justify-content:space-between; gap:8px; font:600 12px/1.4 var(--body); }
.seat-caption strong { color:var(--orange); font-size:18px; white-space:nowrap; }
.seat-cells { display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); gap:4px; margin:7px 0 5px; }
.seat-cell { display:block; height:20px; border:1px solid var(--olive); border-radius:3px; background:transparent; }
.seat-legend { display:block; font:10px/1.4 var(--body); color:var(--olive); }
.trip-picker label > span { min-width:0; flex:1; }
.trip-picker .seat-caption strong { font-size:16px; }
.trip-picker .seat-meter { margin-bottom:0; }
.offer-seats { grid-column:1/-1; }
.offer-seats dd { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.seat-meter[data-booked="1"] .seat-cell:nth-child(-n+1) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="2"] .seat-cell:nth-child(-n+2) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="3"] .seat-cell:nth-child(-n+3) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="4"] .seat-cell:nth-child(-n+4) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="5"] .seat-cell:nth-child(-n+5) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="6"] .seat-cell:nth-child(-n+6) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="7"] .seat-cell:nth-child(-n+7) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="8"] .seat-cell:nth-child(-n+8) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="9"] .seat-cell:nth-child(-n+9) { background:var(--orange); border-color:var(--orange); }
.seat-meter[data-booked="10"] .seat-cell:nth-child(-n+10) { background:var(--orange); border-color:var(--orange); }

/* All modal sheets share the A4 silhouette and an attached photograph. */
dialog.program-dialog { position:fixed; inset:0; margin:auto; width:min(calc(100vw - 40px),calc((100vh - 70px)*.7070707)); height:auto; aspect-ratio:210/297; max-height:none; max-width:none; padding:0; overflow:visible; border-radius:0; background:#e9dfc9; scrollbar-gutter:auto; }
dialog.team-modal { width:min(calc(100vw - 40px),calc((100vh - 70px)*.7070707)); }
@supports(height:100dvh) {
 dialog.program-dialog, dialog.team-modal { width:min(calc(100vw - 40px),calc((100dvh - 70px)*.7070707)); }
}
.program-dialog > .program-dialog-paper { position:absolute; inset:175px 0 0; overflow:auto; overscroll-behavior:contain; touch-action:pan-y; padding:16px 28px 30px; background:none; }
.program-dialog > .program-dialog-close { position:absolute; float:none; top:14px; right:14px; margin:0; }
.program-dialog h2 { font-size:clamp(28px,4vw,42px); margin:18px 0 25px; padding-right:0; }
.paper-modal-photo { position:absolute; top:-10px; left:-9px; width:150px; margin:0; z-index:1; transform:rotate(-3deg); box-shadow:3px 6px 12px #45351c24; }
.paper-modal-photo img { display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; }
.paper-modal-photo figcaption, .paper-photo-title { font:24px/1.15 "Caveat",cursive; color:var(--ink); text-align:center; padding:5px 0; }
.paper-photo-title { position:absolute; top:100%; left:0; width:100%; background:var(--paper-card); }
.team-modal > .team-modal-photo { top:-9px; left:-8px; }
@media(max-width:620px) {
 .program-dialog > .program-dialog-paper { inset:150px 0 0; padding:12px 18px 24px; }
 .paper-modal-photo { width:125px; top:-8px; left:-6px; }
 .paper-modal-photo figcaption { font-size:21px; }
 .team-modal > .team-modal-photo { top:-8px; left:-6px; }
 .program-dialog .program-dialog-days article { padding:14px; }
 .offer-seats dd { grid-template-columns:1fr; gap:0; }
 .program-content > .seat-meter { margin:6px 0; }
 .program-content .seat-cell { height:15px; }
 .program-content .seat-legend { font-size:9px; }
}
/* Ticket-shaped actions: the perforated stub moves, the click target stays still. */
.ticket-button.ticket-button { display:inline-grid; grid-template-columns:minmax(0,1fr) 56px; align-items:stretch; gap:0; position:relative; padding:0; min-height:56px; border:0; border-radius:0; background:none; box-shadow:none; color:#fff; overflow:visible; text-decoration:none; isolation:isolate; cursor:pointer; transform:none; filter:none; transition:none; font-family:"Caveat",var(--body); font-size:28px; font-weight:700; line-height:1.15; text-align:center; }
.ticket-button .ticket-label { display:flex; align-items:center; justify-content:center; min-width:0; min-height:56px; padding:10px 18px 10px 24px; background:var(--orange); color:#fff; -webkit-mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.7px) 0 0/100% 19px repeat-y; mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.7px) 0 0/100% 19px repeat-y; }
.ticket-button .ticket-stub { display:grid; place-items:center; position:relative; padding:9px 14px 9px 10px; color:#fff; background:var(--orange); border-left:1px dashed #ffffffa6; transform-origin:0 80%; transition:transform 220ms cubic-bezier(.2,.7,.25,1); -webkit-mask:radial-gradient(circle at 100% 50%,transparent 5px,#000 5.7px) 0 0/100% 19px repeat-y; mask:radial-gradient(circle at 100% 50%,transparent 5px,#000 5.7px) 0 0/100% 19px repeat-y; }
.ticket-stub svg { width:27px; height:38px; display:block; pointer-events:none; }
.ticket-button.ticket-secondary { grid-template-columns:minmax(0,1fr); color:var(--ink); }
.ticket-secondary .ticket-label { background:#e9dfc9; color:var(--ink); padding-inline:24px; -webkit-mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.7px) left/51% 19px repeat-y,radial-gradient(circle at 100% 50%,transparent 5px,#000 5.7px) right/51% 19px repeat-y; mask:radial-gradient(circle at 0 50%,transparent 5px,#000 5.7px) left/51% 19px repeat-y,radial-gradient(circle at 100% 50%,transparent 5px,#000 5.7px) right/51% 19px repeat-y; }
.ticket-button.ticket-button:hover, .ticket-button.ticket-button:active { background:none; color:inherit; box-shadow:none; filter:none; transform:none; }
.ticket-button.ticket-button::before, .ticket-button.ticket-button::after { display:none; }
.schedule-cta.ticket-button { position:absolute; transform:translateX(-50%); }
.schedule-cta.ticket-button:hover, .schedule-cta.ticket-button:active { transform:translateX(-50%); }
.program-ticket:has(.ticket-button:hover), .program-ticket:has(.ticket-button:active), .program-ticket:focus-within { transform:none; filter:none; }
.ticket-button:focus-visible { outline:3px solid var(--olive); outline-offset:6px; }
@media(hover:hover) and (pointer:fine) {
 .ticket-button:hover .ticket-stub { transform:translate(4px,-3px) rotate(5deg); }
 .ticket-secondary:hover .ticket-label { background:#dfd1b5; }
}
.ticket-button:active .ticket-stub { transform:translate(2px,-1px) rotate(2deg); }
@media(max-width:620px) {
 .ticket-button.ticket-button { font-size:24px; grid-template-columns:minmax(0,1fr) 48px; }
 .ticket-button.ticket-secondary { grid-template-columns:minmax(0,1fr); }
 .ticket-button .ticket-label { padding:9px 12px 9px 18px; }
 .ticket-secondary .ticket-label { padding-inline:18px; }
 .ticket-button .ticket-stub { padding-inline:8px 12px; }
 .ticket-stub svg { width:24px; }
}
@media(prefers-reduced-motion:reduce) {
 .ticket-button .ticket-stub { transition:none; }
 .ticket-button:hover .ticket-stub, .ticket-button:active .ticket-stub { transform:none; }
}

/* Modal and ticket polish: one heading, pinned label, full-width mobile sheet. */
.paper-modal-photo figcaption, .paper-photo-title { display:none; }
.modal-photo-label { position:absolute; top:-24px; left:8px; z-index:3; margin:0; padding:7px 12px; background:var(--olive); color:var(--paper-card); font:14px/1.3 Georgia,serif; letter-spacing:.04em; transform:rotate(-2deg); max-width:calc(100% - 90px); }
.program-dialog > .program-dialog-paper { top:130px; }
.team-modal-scroll { top:155px; }
.team-card-away { opacity:1; }
.team-card-away > .team-photo { visibility:hidden; }
.team-details summary { transition:none; }
.program-book.ticket-button { justify-items:stretch; align-items:stretch; height:100%; }
.program-book.ticket-button .ticket-stub { transform:none; }
.program-ticket { transform-origin:top left; transition:transform 220ms cubic-bezier(.2,.7,.25,1); }
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
 .ticket-button:not(.program-book):hover .ticket-stub { transform:translate(5px,-4px) rotate(6deg); }
 .program-ticket:has(.program-book:hover), .program-ticket:has(.program-book:focus-visible) { transform:translateY(9px) rotate(2deg); }
}
.contact-layout { align-items:start; }
.contact-album { align-self:start; padding-top:0; margin-top:70px; }
.contact-photo-stack { aspect-ratio:1 / 1.2; }
.contact-memory { display:grid; grid-template-rows:minmax(0,1fr) 84px; padding:14px; }
.contact-memory .photo-window { height:100%; min-height:0; }
.contact-memory .photo-window img { width:100%; height:100%; object-fit:cover; }
.contact-memory figcaption, .contact-memory:nth-child(even) figcaption { position:static; width:auto; padding:14px 4px 0; background:none; border:0; box-shadow:none; transform:none; align-self:center; }
.contact-memory figcaption .tape { display:none; }
.contact-trip-tabs { display:flex; gap:8px; margin-top:26px; }
.contact-trip-tabs button { flex:1; min-height:48px; padding:10px; border:1px solid var(--olive); background:transparent; color:var(--ink); font:600 14px/1.4 var(--body); cursor:pointer; }
.contact-trip-tabs button[aria-selected="true"] { background:var(--olive); color:white; }
.contact-trip-tabs button:focus-visible { outline:3px solid var(--orange); outline-offset:3px; }
.contact-offer { margin-top:14px; }
@media(max-width:620px) {
 dialog.program-dialog, dialog.team-modal { width:100%; max-width:100%; height:calc(100vh - 64px); height:calc(100dvh - 64px); aspect-ratio:auto; margin:40px 0 24px; }
 .paper-modal-photo, .team-modal > .team-modal-photo { left:4px; top:-8px; }
 .modal-photo-label { left:8px; top:-25px; font-size:12px; }
 .program-dialog > .program-dialog-paper { top:125px; }
 .team-modal-scroll { top:140px; }
 .contact-album { margin-top:28px; }
}
