/* Supplied island illustrations, with space for the camp's real photographs. */
:root {
  --ink: #2b203e;
  --ink-dark: #1d172d;
  --cream: #fff0e3;
  --paper: #fff8ef;
  --pink: #ff9eae;
  --teal: #d6b5ee;
  --muted: #d5c7df;
  --line: rgba(244,219,239,.22);
}
body { background: var(--ink-dark); }
main { overflow: clip; }
.section { position: relative; isolation: isolate; padding-top: 110px; padding-bottom: 110px; }
.section-inner { position: relative; z-index: 1; min-width: 0; }
.section-heading { margin-bottom: 50px; }
.kicker { letter-spacing: .13em; }
.cream h2 em { color: #914b74; }
.cream .split-heading > p, .intro-grid > div, .level-block > div > p:last-child,
.levels p, .fact-row span, .schedule-row p, .schedule-tag, .price-card > p,
.extra-costs > p, .payment-note p { color: #68566f; }
.cream .placeholder-copy { color: #68566f; }
.cream .placeholder-cross { color: #914b74; }
.decor { position: absolute; height: auto; max-width: none; pointer-events: none; user-select: none; z-index: 2; }
.site-header { position: relative; z-index: 5; max-width: none; padding-inline: max(5%, calc((100vw - 1250px) / 2)); background: #1d172d; }
.header-cta { border-color: var(--teal); }
.brand small { color: var(--muted); }
.primary { box-shadow: none; }
.primary:hover { background: #ffc0cc; }
.hero {
  max-width: none;
  min-height: 850px;
  padding: 65px max(6%, calc((100vw - 1160px) / 2)) 135px;
  gap: 8%;
  isolation: isolate;
  background: #433052 url('assets/island/gym-sunset.webp') center 65% / cover no-repeat;
}
.hero::before {
  inset: 0; width: auto; height: auto; border-radius: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(29,23,45,.96), rgba(29,23,45,.84) 38%, rgba(29,23,45,.18) 83%), linear-gradient(0deg, #1d172d, transparent 33%);
}
.hero-copy { align-self: center; min-width: 0; }
.script-title { display: block; width: min(4em, calc(100% - 12px)); margin: 4px 0 4px 12px; transform: none; font: inherit; line-height: 0; letter-spacing: normal; }
.script-title img { display: block; width: 100%; height: auto; max-width: 100%; }
.hero h1 { text-shadow: none; font-size: clamp(66px,7.5vw,102px); }
.hero-offer { font-size: 20px; }
.hero-detail { font-size: 16px; color: #eddfec; }
.hero-price span { font-size: 14px; color: #eddfec; }
.hero-art { width: 100%; max-width: 395px; margin: 5px 0 0; z-index: 1; }
.poster-frame { border: 0; box-shadow: 0 28px 60px rgba(0,0,0,.26); transform: rotate(3deg); }
.poster-frame img { border-radius: 8px; }
.art-caption { color: #f5e7f1; }
.ticker { position: relative; z-index: 3; margin-top: -31px; padding: 12px 0; transform: rotate(-1.4deg); background: var(--teal); }
.intro { padding-top: 95px; padding-bottom: 80px; background: var(--cream); }
.intro-grid { grid-template-columns: minmax(0,760px); gap: 0; }
.intro-grid .lead { font-size: 27px; }
.island-break { position: relative; height: 310px; margin: 48px -9vw 0; }
.island-break-scene { width: 100%; height: 100%; object-fit: cover; object-position: 50% 59%; mask-image: linear-gradient(0deg, transparent, #000 18%, #000 82%, transparent); }
.fact-row { position: relative; margin: 36px 0 68px; border-top: 0; border-color: #d8bdcb; padding: 28px 0 35px; }
.fact-row > div + div { border-color: #d8bdcb; }
.level-block { gap: 80px; }
.level-block > div:first-child { position: relative; }
.levels { padding-top: 12px; }
.levels article { padding: 32px 0; border-color: #d8bdcb; }
.level-number { color: #914b74; }
.coaches { background: #eee2f4; color: var(--ink); padding-top: 95px; padding-bottom: 110px; }
.coaches::before { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, #eee2f4 0%, rgba(238,226,244,.94) 35%, rgba(234,220,241,.94) 70%, #eee2f4 100%), url('assets/island/outdoor-sunset.webp') center 35% / cover no-repeat; }
.coaches .split-heading > p { color: #68566f; }
.coaches h2 em, .coaches .kicker.pink-text { color: #914b74; }
.sasha-layout { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 85px; }
.sasha-portrait { transform: none; margin-left: 0; max-width: 465px; }
.sasha-portrait::before { content: ''; position: absolute; inset: 20px -20px -20px 20px; border: 1px solid #b28db8; border-radius: 220px 220px 18px 18px; z-index: -1; }
.sasha-portrait img { width: 100%; height: auto; max-height: none; aspect-ratio: 2 / 3; object-fit: cover; border: 0; border-radius: 220px 220px 18px 18px; box-shadow: none; }
.portrait-tag { bottom: 34px; left: -17px; transform: rotate(-4deg); background: var(--ink); color: var(--cream); }
.coach-bio h3 { font-size: clamp(46px,5vw,68px); }
.coach-badges span { background: transparent; color: #7c4169; border-color: #bfa3c8; font-size: 14px; }
.credential-list li { border-color: #d0b8d7; }
.credential-list small, .coach-bio > p:last-child { color: #68566f; }
.denis-layout { grid-template-columns: minmax(0,.76fr) minmax(0,1fr); gap: 85px; margin: 100px 0 0 13%; padding: 0; border: 0; background: none; align-items: center; }
.denis-photo { min-height: 430px; border-radius: 12px 160px 12px 12px; background: rgba(67,42,80,.06); border-color: #b29bbb; color: #68566f; }
.denis-photo .placeholder-cross { color: #914b74; }
.denis-bio h3 { font-size: 46px; }
.denis-credential { font-size: 18px; padding-bottom: 20px; margin: 0 0 20px; border-bottom: 1px solid #d0b8d7; }
.denis-credential strong { font-weight: 500; color: #7c4169; }
.placeholder-list, .placeholder-list b { color: #68566f; }
.coaches .text-link { border-color: #914b74; }
.coaches .text-link:hover { color: #914b74; }
.program { background: #f5dfe8; padding-top: 95px; padding-bottom: 100px; }
.program-layout { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(0,1fr); gap: 70px; align-items: center; }
.program-timetable { position: relative; z-index: 3; min-width: 0; }
.program-switch button { border-color: #b394b0; }
.schedule-row { grid-template-columns: 105px minmax(0,1fr); gap: 7px 20px; border-color: #d2b1c5; }
.schedule-time { grid-row: 1/3; align-self: center; }
.schedule-tag { grid-column: 2; }
.schedule-row h3 { font-size: 20px; }
.schedule-row p { font-size: 16px; }
.free-time .schedule-time { color: #914b74; line-height: 1.2; }
.free-time > div { grid-row: 1 / 3; }
.equipment-art { position: relative; margin: 0 -100px 55px -5px; height: 440px; pointer-events: none; }
.training-scene { height: 100%; width: 100%; object-fit: cover; object-position: 68% center; border-radius: 48% 48% 15px 15px; }
.training-athlete { width: auto; height: 460px; left: 35px; bottom: -50px; }
.program-note { margin-top: 65px; padding-top: 25px; border-top: 1px solid #d2b1c5; }
.program-note { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 28px; }
.program-note p { font-size: 16px; max-width: 620px; }
.dark-button:hover { background: #7c4169; }
.venue { padding-bottom: 150px; background: #30223f; }
.venue::before { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(0deg,#30223f 0%,rgba(48,34,63,.84) 35%,rgba(48,34,63,.78) 72%,#30223f), url('assets/island/equipment-sunset.webp') 50% 65% / cover no-repeat; }
.venue-main { background-color: rgba(38,27,52,.58); border-radius: 8px; }
.venue-side .photo-placeholder { background-color: rgba(38,27,52,.58); border-radius: 8px; }
.venue-photos { gap: 25px; }
.stay { padding-top: 85px; padding-bottom: 80px; }
.stay-stamp { border-color: #914b74; color: #914b74; }
.stay-landscape { position: relative; height: 290px; margin: 10px -9vw 42px 21%; }
.stay-landscape > img:first-child { width: 100%; height: 100%; object-fit: cover; object-position: center 57%; border-radius: 180px 0 0 16px; }
.stay .hotel-banner { margin-right: 21%; height: 300px; border-radius: 8px; }
.cream .photo-placeholder { background-color: #ecdce5; border-color: #baa0b2; color: #68566f; }
.room-grid { margin-top: 38px; gap: 40px; }
.room-grid article:nth-child(2) { margin-top: 75px; }
.room-photo { border-radius: 8px; }
.room-heading span { color: #914b74; font-size: 14px; letter-spacing: .04em; }
.hotel-details { border-color: #d8bdcb; }
.history { background: #ede2f5; color: var(--ink); padding-top: 90px; padding-bottom: 100px; }
.history h2 em { color: #914b74; }
.history-intro { color: #68566f; }
.map-shell { border: 0; background: var(--ink); color: var(--cream); border-radius: 16px; }
.map-caption { background: #3b2b4e; }
.map-canvas { background: none; }
.destination-list button { border-color: #bca4c9; color: var(--ink); border-radius: 25px; padding-inline: 18px; }
.destination-list .selected { background: var(--ink); border-color: var(--ink); color: var(--cream); }
.reviews-heading { margin-top: 65px; }
.reviews-heading p { color: #68566f; }
.review-placeholder { border-width: 1px 0 0; border-color: #d0badb; padding: 24px 0; }
.review-photo { background: #ecdce5; color: #68566f; border-color: #baa0b2; border-radius: 6px; }
.review-photo > span { color: #914b74; }
.review-meta { color: #914b74; }
.review-placeholder .placeholder-copy { color: #68566f; }
.prices { background: #f8e3dc; padding-top: 95px; }
.prices .section-heading { padding-right: 0; }
.prices .split-heading > p { max-width: 350px; }
.price-grid { gap: 0; align-items: stretch; }
.price-card { border: 0; border-left: 1px solid #d3b4c5; padding: 35px 27px 27px; }
.price-card.featured { border: 0; border-radius: 0 0 12px 12px; }
.price-card:nth-child(2) { border-left: 0; }
.price-ribbon { border-radius: 10px 10px 0 0; top: -30px; min-height: 30px; }
.price-card h3 { font-size: 30px; }
.price-card > p { font-size: 16px; }
.included-list li::before { color: #914b74; }
.payment-note, .registration-deadline { border-color: #d3b4c5; }
.registration-deadline > span:last-child { color: var(--ink); font-size: 12px; }
.faq { background: #e8def0; color: var(--ink); padding-top: 90px; padding-bottom: 110px; }
.faq h2 em { color: #914b74; }
.faq-layout h2 em { display: block; }
.faq .text-link { border-color: #914b74; }
.faq .text-link:hover { color: #914b74; }
.faq-list details { border-color: #d3b4c5; }
.faq-list summary > span { color: #914b74; }
.faq-list details > p { color: #68566f; font-size: 16px; }
.final-cta { position: relative; isolation: isolate; background: #694266 url('assets/island/beach-sunset.webp') 50% 58% / cover no-repeat; color: var(--cream); min-height: 570px; padding: 100px 6%; display: grid; align-items: center; }
.final-cta::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg,rgba(43,27,59,.6),rgba(43,27,59,.68) 50%,rgba(43,27,59,.42)); }
.final-cta h2 { text-shadow: none; }
.final-cta h2 em { color: #ff9eae; }
.final-cta .section-inner { z-index: 3; }
.final-cta .button { box-shadow: none; background: var(--cream); color: var(--ink); }
.final-cta .button:hover { background: var(--pink); }
.final-note { font-size: 14px; }
.final-layout { width: 100%; max-width: 760px; text-align: center; }
.final-copy { min-width: 0; }
.final-layout h2 { font-size: clamp(48px,6.3vw,82px); }
.footer { max-width: none; padding-inline: max(6%, calc((100vw - 1160px) / 2)); background: var(--ink-dark); position: relative; z-index: 4; }
.section.cream :focus-visible, .coaches :focus-visible, .history :focus-visible, .faq :focus-visible { outline-color: #914b74; }
@media (min-width: 1600px) {
  .hero { grid-template-columns: 625px 405px; justify-content: center; gap: 100px; }
  .hero-art { max-width: 405px; }
}
@media (max-width: 1100px) {
  .section { padding: 85px 5%; }
  .hero { min-height: 760px; padding: 50px 5% 110px; gap: 7%; }
  .hero-art { max-width: 345px; }
  .hero-offer { font-size: 18px; }
  .hero h1 { font-size: clamp(65px,8vw,92px); }
  .intro-grid, .level-block { gap: 45px; }
  .island-break { height: 280px; }
  .sasha-layout { gap: 55px; }
  .denis-layout { gap: 45px; margin-left: 7%; }
  .coaches { padding-top: 85px; }
  .program { padding-top: 64px; }
  .program-layout { gap: 35px; }
  .equipment-art { height: 400px; margin-right: -65px; }
  .training-athlete { height: 415px; left: 15px; }
  .schedule-row { grid-template-columns: 90px minmax(0,1fr); gap: 6px 15px; }
  .schedule-time { font-size: 32px; }
  .free-time .schedule-time { font-size: 21px; }

  .prices .split-heading { gap: 25px; }
  .prices .split-heading > p { max-width: 260px; font-size: 16px; }
  .price-card { padding-inline: 22px; }
  .price-card h3 { font-size: 27px; }
  .faq { padding-top: 85px; }
}
@media (max-width: 900px) {
  .hero { gap: 5%; }
  .hero h1 { font-size: 66px; }
  .hero-price { gap: 12px; }
  .hero-price span { font-size: 12px; }
  .hero .button { padding-inline: 13px; font-size: 13px; gap: 12px; }
  .sasha-layout { gap: 42px; }
  .coach-bio h3 { font-size: 46px; }
  .coach-badges span { font-size: 13px; }
  .credential-list li { font-size: 17px; }
  .denis-layout { margin-left: 0; }
  .denis-photo { min-height: 390px; }
  .program-layout { gap: 25px; }
  .equipment-art { height: 350px; margin-right: -60px; }
  .training-athlete { height: 380px; left: 5px; }

  .final-layout h2 { font-size: 60px; }
  .program-note { grid-template-columns: minmax(0,1fr); }
  .program-note .button { margin-left: 0; justify-self: start; }
  .price-grid { gap: 20px; }
  .price-card { border: 1px solid #d3b4c5; border-radius: 10px; padding: 28px; }
  .price-card:nth-child(2) { border-left: 1px solid #d3b4c5; }
  .price-card h3 { font-size: 29px; }

  .prices .split-heading { display: block; }
  .prices .split-heading > p { margin-top: 24px; max-width: none; font-size: 16px; }
}
@media (max-width: 760px) {
  .section { padding: 64px 6%; }
  .section-heading { margin-bottom: 32px; }
  .hero { padding: 34px 6% 82px; min-height: 0; gap: 45px; background-position: 62% center; }
  .hero::before { background: linear-gradient(180deg,rgba(29,23,45,.94) 0%,rgba(29,23,45,.85) 46%,rgba(29,23,45,.25) 72%,#1d172d 100%); }
  .hero h1 { font-size: clamp(68px,17vw,105px); }
  .hero .button { font-size: 14px; padding: 17px 10px; }
  .hero-price { gap: 20px; }
  .hero-price span { font-size: 14px; }
  .hero-art { width: 77%; max-width: 325px; margin-top: 0; }
  .ticker { margin-top: -21px; font-size: 20px; padding: 10px 0; }
  .intro { padding-top: 60px; padding-bottom: 35px; }
  .intro-grid { gap: 18px; }
  .intro-grid .lead { font-size: 23px; }
  .island-break { height: 220px; margin: 25px -10vw 0; }
  .island-break-scene { object-position: 52% center; }
  .fact-row { margin-top: 18px; margin-bottom: 36px; padding: 0; }
  .fact-row > div + div { border-color: #d8bdcb; }
  .level-block { gap: 22px; }
  .level-block > div:first-child { padding-bottom: 0; }
  .levels { padding-top: 0; }
  .levels article { position: relative; padding: 25px 0; }
  .coaches { padding-top: 64px; padding-bottom: 65px; }
  .coaches::before { background-size: auto, auto 950px; background-position: center, 60% 230px; }
  .sasha-layout { grid-template-columns: minmax(0,1fr); gap: 48px; }
  .sasha-portrait { width: 88%; max-width: 360px; margin: 0 auto; }
  .sasha-portrait::before { inset: 12px -12px -12px 12px; }
  .portrait-tag { left: -12px; padding: 9px 12px; font-size: 12px; }
  .coach-bio h3 { font-size: 48px; }
  .coach-badges span { font-size: 14px; }
  .credential-list li { font-size: 19px; }
  .denis-layout { grid-template-columns: 1fr; gap: 30px; margin: 50px 0 0; padding: 0; }
  .denis-photo { min-height: 280px; margin-right: 12%; border-radius: 12px 130px 12px 12px; }
  .denis-bio h3 { font-size: 40px; }
  .denis-credential { font-size: 17px; }
  .program { padding-top: 64px; }
  .program-layout { grid-template-columns: minmax(0,1fr); gap: 35px; }
  .schedule-row { grid-template-columns: 95px minmax(0,1fr); gap: 6px 18px; }
  .schedule-time { font-size: 30px; align-self: start; }
  .schedule-row h3 { font-size: 18px; }
  .schedule-row p { font-size: 15px; }
  .free-time .schedule-time { font-size: 19px; }
  .beer-mile .schedule-time { font-size: 23px; }
  .equipment-art { width: 90%; height: 235px; margin: 0 0 42px auto; }
  .training-scene { border-radius: 100px 100px 10px 10px; }
  .training-athlete { height: 270px; left: 15px; bottom: -30px; }
  .program-note { margin-top: 12px; padding-top: 22px; }
  .program-note .button { margin-left: 0; }
  .program-note p { font-size: 15px; }
  .venue { padding-bottom: 85px; }
  .venue-photos { gap: 16px; }
  .venue-main { min-height: 270px; }
  .stay { padding-top: 60px; padding-bottom: 45px; }
  .stay .stay-heading { padding-bottom: 0; gap: 16px; }
  .stay-stamp { align-self: flex-start; margin: 0 0 0 3px; transform: rotate(-3deg); }
  .stay-landscape { height: 210px; margin: 22px -11vw 38px 8%; }
  .stay-landscape > img:first-child { border-radius: 90px 0 0 12px; }
  .stay .hotel-banner { margin-right: 0; height: 235px; }
  .room-grid { margin-top: 25px; gap: 32px; }
  .room-grid article:nth-child(2) { margin-top: 0; }
  .room-heading { margin-top: 20px; }
  .room-heading span { font-size: 13px; }
  .history { padding-top: 64px; padding-bottom: 50px; }
  .map-shell { border-radius: 10px; }
  .map-caption { background: #3b2b4e; }
  .review-placeholder { padding: 20px 0; }
  .prices { padding-top: 60px; }
  .prices .section-heading { padding-right: 0; }
  .prices .section-heading h2 { max-width: 100%; }
  .prices .split-heading > p { margin-top: 22px; }
  .price-card { padding: 28px 25px; }
  .price-card h3 { font-size: 32px; }
  .included-grid { gap: 30px; }
  .faq { padding-top: 64px; padding-bottom: 64px; }
  .final-cta { min-height: 480px; padding: 75px 6%; background-position: 58% center; }
  .final-cta::before { background: rgba(43,27,59,.67); }
  .final-note { font-size: 13px; }

  .final-layout h2 { font-size: clamp(42px,11.6vw,70px); }
  .final-cta { padding-bottom: 65px; }
}
@media (max-width: 370px) {
  .hero h1 { font-size: 65px; }
  .hero-price span { font-size: 12px; }
  .hero-price { gap: 14px; }
  .program-switch button { font-size: 13px; padding-inline: 7px; }
  .schedule-row { grid-template-columns: 80px minmax(0,1fr); gap: 6px 12px; }
  .schedule-time { font-size: 27px; }
  .free-time .schedule-time { font-size: 18px; }
}

/* Interface arrows are vectors so iOS cannot render them as emoji. */
.icon-arrow { width: 20px; height: 20px; display: inline-block; flex: 0 0 20px; vertical-align: -.2em; }
.button .icon-arrow { width: 23px; height: 23px; flex-basis: 23px; }
.schedule-break { grid-template-columns: minmax(0,1fr); }
.schedule-break > div { grid-column: 1 / -1; grid-row: auto; }
.schedule-break h3 { margin: 0; }
.fact-row strong { white-space: nowrap; line-height: 1.2; }
.price-card.featured > p { color: var(--muted); }

/* LUDUS: real venue photographs, preserving the pink and purple palette. */
.hero-price { flex-wrap: wrap; }
.hero-price > strong { white-space: nowrap; }
.hero-price > span { min-width: 0; max-width: 260px; }
.venue-area { flex: 0 0 auto; padding-bottom: 7px; }
.venue-area strong { display: block; font-family: 'Oswald', sans-serif; font-size: clamp(52px, 6vw, 82px); line-height: 1.1; font-weight: 600; color: var(--pink); white-space: nowrap; }
.venue-area strong span { font-size: .53em; }
.venue-area p { margin: 12px 0 0; color: var(--muted); font-size: 15px; }
.venue-intro { max-width: 680px; margin: -16px 0 36px; color: var(--cream); font-size: 20px; }
.ludus-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 24px; }
.ludus-gallery figure { min-width: 0; margin: 0; }
.ludus-gallery img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; border-radius: 8px; }
.ludus-gallery figcaption { padding-top: 12px; color: var(--muted); font-size: 15px; }
.stay-intro { max-width: 740px; margin: 0; font-size: 21px; color: #68566f; }
.ludus-rooms { margin-top: 36px; }
.ludus-rooms article { border-top: 1px solid #d8bdcb; padding-top: 25px; }
.ludus-rooms article:nth-child(2) { margin-top: 0; }
.ludus-rooms .room-heading { margin-top: 0; gap: 12px; }
.ludus-rooms p { color: #68566f; }
.stay .hotel-details { align-items: flex-start; }
@media (max-width: 760px) {
  .venue-area { padding: 8px 0 0; }
  .venue-area strong { font-size: 58px; }
  .venue-intro { margin: 0 0 26px; font-size: 18px; }
  .ludus-gallery { grid-template-columns: minmax(0, 1fr); gap: 26px; }
  .ludus-gallery figcaption { font-size: 14px; padding-top: 9px; }
  .stay-intro { font-size: 18px; }
  .ludus-rooms { gap: 28px; }
}
@media (max-width: 760px) {
  .fact-row > div { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); align-items: center; gap: 20px; padding: 22px 0; }
  .fact-row strong { font-size: clamp(27px,7.5vw,36px); }
  .fact-row span { max-width: none; text-align: left; font-size: 14px; line-height: 1.45; }
  .fact-row i { font-size: .58em; }
  .schedule-row { align-items: center; }
  .schedule-time { align-self: center; }
  .schedule-break { grid-template-columns: minmax(0,1fr); }
  .program-note p { max-width: none; }
  .registration-deadline > span:last-child { padding-left: 0; }
}

/* One place to live and train, with accommodation before the gym. */
.campus { scroll-margin-top: 25px; }
.campus-living { background: var(--cream); padding-bottom: 65px; }
.campus-living .section-heading { align-items: center; margin-bottom: 32px; }
.campus-living .venue-area strong { color: #914b74; }
.campus-living .venue-area p { color: #68566f; }
.campus-lead { font-size: clamp(28px, 3.4vw, 44px); line-height: 1.24; letter-spacing: -.035em; font-weight: 600; max-width: 840px; margin: 0 0 60px; }
.campus-room-heading { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; margin-bottom: 24px; scroll-margin-top: 25px; }
.campus-room-heading h3, .campus-gym-heading h3 { font-size: clamp(30px, 4vw, 46px); line-height: 1.15; margin: 0; }
.campus-room-heading p { color: #68566f; font-size: 16px; margin: 0; }
.room-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.room-gallery figure { min-width: 0; margin: 0; }
.room-frame { position: relative; width: 100%; aspect-ratio: 902 / 573; overflow: hidden; border-radius: 8px; background: #c2ae98; }
/* Exact windows into the supplied two-view sheet. The original pixels stay intact. */
.room-frame img { position: absolute; display: block; width: 100.886918%; max-width: none; height: auto; left: -.443459%; }
.room-view-front img { top: -121.465969%; }
.room-view-entry img { top: -1.745201%; }
.room-visual-note { color: #68566f; font-size: 13px; margin: 14px 0 0; }
.campus-training { padding-top: 0; padding-bottom: 80px; background: var(--cream); color: var(--ink); }
.campus-training::before { display: none; }
.campus-training .section-inner { padding-top: 55px; border-top: 1px solid #d8bdcb; }
.campus-training .ludus-gallery figcaption { color: #68566f; }
.campus-training .text-link { color: var(--ink); border-color: #914b74; }
.campus-gym-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 40px; margin-bottom: 32px; }
.campus-gym-heading p { max-width: 550px; margin: 0; color: #68566f; font-size: 17px; }
.denis-photo { min-height: 0; overflow: hidden; }
.denis-photo img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; object-position: center 20%; }
.faq-illustration { display: block; width: 100%; max-width: 355px; height: auto; margin: 32px 0 0; }
@media (max-width: 900px) {
  .campus-room-heading, .campus-gym-heading { flex-direction: column; align-items: flex-start; gap: 14px; }
  .campus-living .split-heading { flex-wrap: wrap; }
}
@media (max-width: 760px) {
  .campus-living { padding-bottom: 40px; }
  .campus-living .section-heading { align-items: flex-start; gap: 26px; margin-bottom: 28px; }
  .campus-living h2 { font-size: clamp(40px, 10.5vw, 58px); }
  .campus-living .venue-area strong { font-size: 46px; }
  .campus-lead { margin-bottom: 34px; font-size: clamp(26px, 7vw, 34px); }
  .campus-room-heading { margin-bottom: 20px; }
  .campus-room-heading p { max-width: 280px; font-size: 15px; }
  .room-gallery { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .campus-training { padding-top: 0; padding-bottom: 60px; }
  .campus-training .section-inner { padding-top: 36px; }
  .campus-gym-heading p { font-size: 16px; }
  .denis-photo { min-height: 0; width: 88%; max-width: 360px; margin: 0 auto; }
  .faq-illustration { width: 72%; max-width: 260px; margin: 24px auto 0; }
}

/* Payment terms remain together in a distinct, readable panel. */
.payment-panel { display: grid; grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); grid-template-areas: "lead terms" "action terms"; gap: 20px 36px; align-items: center; margin-top: 48px; padding: 36px 40px; border: 2px solid #a45b88; border-radius: 12px; background: #efd5e8; color: var(--ink); }
.payment-lead { grid-area: lead; }
.payment-lead h3 { margin: 0 0 12px; font-family: 'Golos Text', sans-serif; font-size: 14px; line-height: 1.4; font-weight: 700; letter-spacing: .12em; }
.payment-lead > strong { display: block; font-family: Oswald, sans-serif; font-size: clamp(40px, 4.6vw, 58px); line-height: 1.15; white-space: nowrap; }
.payment-terms { grid-area: terms; list-style: none; padding: 0 0 0 32px; margin: 0; border-left: 1px solid #bd86aa; font-size: 17px; line-height: 1.6; }
.payment-terms li + li { margin-top: 14px; }
.payment-cta { grid-area: action; justify-self: start; max-width: 100%; gap: 12px; padding: 16px 20px; border-radius: 10px; background: var(--ink); color: var(--cream); }
@media (max-width: 760px) {
  .hero { min-height: 0; grid-template-columns: minmax(0, 1fr); gap: 0; padding-bottom: 75px; }
  .hero-art { display: none; }
  .payment-panel { grid-template-columns: minmax(0, 1fr); grid-template-areas: "lead" "terms" "action"; gap: 24px; margin-top: 32px; padding: 26px 22px; }
  .payment-terms { padding: 22px 0 0; border-left: 0; border-top: 1px solid #bd86aa; font-size: 16px; }
  .payment-cta { justify-self: stretch; }
}

@media (max-width: 370px) {
  .hero h1 { font-size: clamp(52px, 18vw, 65px); }
}

/* Keep the opening message focused on coaching and an adapted workload. */
.hero .hero-detail { font-weight: 700; color: var(--cream); }
.hero .button.primary { border-radius: 12px; }

/* Coaches, venue, programme and past camps now follow the trip's reading order. */
.levels article { display: block; }
.denis-facts { margin: 28px 0 8px; border-top: 1px solid #d0b8d7; }
.denis-facts p { margin: 0; padding: 22px 0; color: #68566f; font-size: 17px; }
.denis-facts p + p { border-top: 1px solid #d0b8d7; }
.denis-facts strong { color: var(--ink); font-weight: 600; }
.program { background: #392947; color: var(--cream); }
.program h2 em { color: var(--pink); }
.program .program-switch button { color: var(--cream); border-color: #9e829f; border-radius: 6px; }
.program .program-switch button.active { background: var(--teal); border-color: var(--teal); color: var(--ink); }
.program .schedule-row, .program .program-note { border-color: #735a7c; }
.program .schedule-tag, .program .schedule-row p { color: #dfcfe3; }
.program .free-time .schedule-time { color: var(--pink); }
.program .dark-button { background: var(--pink); color: var(--ink); border-radius: 12px; }
.program .dark-button:hover { background: #ffc0cc; }
.program :focus-visible { outline-color: var(--pink); }

/* A quiet photo strip keeps every supplied frame intact. */
.history { background: #2b203e; color: var(--cream); }
.history h2 em { color: var(--teal); }
.history .section-heading { margin-bottom: 30px; }
.camp-destinations { display: flex; flex-wrap: wrap; gap: 10px 24px; list-style: none; margin: 0 0 18px; padding: 0; font-size: 17px; color: var(--cream); }
.camp-destinations li { display: flex; align-items: center; gap: 24px; }
.camp-destinations li:not(:last-child)::after { content: ''; width: 4px; height: 4px; border-radius: 50%; background: var(--pink); }
.history .history-intro { margin: 0 0 38px; color: var(--pink); font-size: 18px; }
.camp-gallery { min-width: 0; }
.camp-gallery-track { display: flex; gap: 20px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: #9674a9 #392947; padding-bottom: 16px; }
.camp-photo { flex: 0 0 calc((100% - 40px) / 3); min-width: 0; margin: 0; aspect-ratio: 4 / 5; scroll-snap-align: start; overflow: hidden; border-radius: 10px; background: #241b33; }
.camp-photo img { width: 100%; height: 100%; object-fit: contain; }
.gallery-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-top: 22px; }
.gallery-status { font-size: 14px; letter-spacing: .07em; color: #dfcfe3; font-variant-numeric: tabular-nums; }
.gallery-controls { display: flex; gap: 12px; }
.gallery-button { display: inline-flex; align-items: center; justify-content: center; width: 50px; height: 50px; border: 1px solid #a987ba; border-radius: 50%; background: transparent; color: var(--cream); cursor: pointer; }
.gallery-button svg { width: 24px; height: 24px; }
.gallery-button:hover:not(:disabled) { background: var(--teal); color: var(--ink); border-color: var(--teal); }
.gallery-button:disabled { opacity: .35; cursor: default; }
.history :focus-visible { outline: 3px solid var(--pink); outline-offset: 5px; }
@media (max-width: 900px) {
  .camp-photo { flex-basis: calc((100% - 20px) / 2); }
}
@media (max-width: 760px) {
  .camp-destinations { font-size: 15px; gap: 8px 16px; }
  .camp-destinations li { gap: 16px; }
  .history .history-intro { font-size: 16px; margin-bottom: 28px; }
  .camp-gallery-track { gap: 16px; }
  .camp-photo { flex-basis: 88%; }
  .gallery-toolbar { margin-top: 16px; }
  .gallery-button { width: 46px; height: 46px; }
}
