@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800&family=Roboto+Slab:wght@500;600;700&display=swap');
:root{--brown:#532c1b;--teal:#47b8b4;--sand:#fff8f0;--gold:#fea408;--ink:#29251f;--line:#e8ded3;--muted:#71695f}
*{box-sizing:border-box}body{margin:0;background:var(--sand);color:var(--ink);font:16px/1.6 'Montserrat',system-ui,sans-serif}a{color:var(--brown)}button,input,select,textarea{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:9px;padding:12px 18px;min-height:48px;color:var(--brown);font-weight:600}button:disabled{cursor:wait;opacity:.5}.primary{background:var(--brown);color:#fff;border-color:var(--brown)}.secondary{background:#e1f1ee;border-color:#e1f1ee}.brand{max-width:1280px;margin:auto;padding:26px 5%;display:flex;justify-content:space-between;align-items:center;gap:20px}.brand>a:first-child{font-size:25px;font-weight:700;letter-spacing:-1px;text-decoration:none}.brand span{display:block;letter-spacing:2px;font-size:9px;margin-top:-4px}.quiet{font-size:13px}.booking-shell{max-width:1200px;margin:35px auto 75px;display:grid;grid-template-columns:.85fr 1.15fr;gap:70px;padding:0 5%}.intro{padding-top:38px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2.2px;color:var(--brown)}h1{font:500 clamp(38px,4.8vw,68px)/1.1 'Roboto Slab',Georgia,serif;color:var(--brown);margin:20px 0 24px;letter-spacing:-1.5px}h1 em{font-weight:500;color:#54958b}h2{font:500 30px/1.25 'Roboto Slab',Georgia,serif;color:var(--brown);margin:14px 0}h3{font-size:17px;margin:12px 0}.intro>p:not(.eyebrow){color:var(--muted);max-width:345px}#campSummary{margin-top:35px;border-top:1px solid var(--line);padding-top:24px}.form-card{background:white;border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:0 15px 60px #532c1b08;min-height:420px}.muted{font-size:14px;color:var(--muted)}.progress{display:flex;gap:8px;margin-bottom:25px}.progress span{height:4px;background:#eee6dc;border-radius:4px;flex:1}.progress span.done{background:var(--teal)}.step-caption{font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}.fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.fields .wide{grid-column:1/-1}label{font-size:13px;font-weight:600;display:block}label input,label select,label textarea{display:block;margin-top:6px;width:100%;border:1px solid #d6cdc2;background:#fff;border-radius:8px;padding:11px 12px;min-height:48px;color:var(--ink)}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid #47b8b466;outline-offset:2px}.check{display:flex;align-items:flex-start;gap:10px;margin:15px 0;font-weight:400}.check input{width:20px;height:20px;min-height:20px;margin:3px 0 0;flex-shrink:0}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:25px;justify-content:space-between}.participant{border-bottom:1px solid var(--line);padding:0 0 22px;margin-bottom:24px}.participant-head{display:flex;align-items:center;justify-content:space-between}.participant-head button{font-size:12px;min-height:36px;padding:5px 10px}.notice{background:#e9f6f3;border-radius:9px;padding:12px 15px;font-size:14px;margin:15px 0}.error{background:#fff0ed;color:#972d21;border-radius:8px;padding:12px;margin:14px 0;overflow-wrap:anywhere}.package-hint{color:var(--muted);font-size:13px}.choice{padding:18px;border:1px solid var(--line);border-radius:10px;display:flex;gap:12px;margin:12px 0;cursor:pointer}.choice input{margin-top:5px;width:20px;height:20px;flex-shrink:0}.choice strong{display:block}.price{font:500 32px/1.2 'Roboto Slab',Georgia,serif;color:var(--brown)}.review-row{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid var(--line)}.review-row span:last-child{text-align:right}.receipt{overflow-wrap:anywhere}.receipt-mark{width:60px;height:60px;background:#e1f1ee;color:#337e74;border-radius:50%;display:grid;place-items:center;font-size:27px;margin:18px 0}dialog{border:1px solid var(--line);border-radius:18px;padding:0;max-width:490px;width:calc(100% - 32px);color:var(--ink)}dialog::backdrop{background:#24140cd0}.dialog-content{padding:30px}.dialog-content h2{font-size:30px}.dialog-content .actions{display:grid;grid-template-columns:1fr}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:13px 10px;border-bottom:1px solid var(--line);text-align:left}th{color:var(--muted);font-size:12px}.admin-shell{max-width:1280px;margin:25px auto;padding:0 4%}.admin-layout{display:grid;grid-template-columns:320px 1fr;gap:24px}.admin-panel{background:white;border:1px solid var(--line);padding:25px;border-radius:14px}.admin-panel .fields{margin:18px 0}.admin-panel textarea{min-height:100px}details{margin:20px 0}summary{cursor:pointer;font-weight:600}.badge{display:inline-block;padding:3px 9px;border-radius:15px;background:#eee6dc;font-size:12px}.badge.accepted{background:#e1f1ee;color:#337e74}.badge.pending,.badge.cancellation_requested{background:#fff0ce;color:#865400}.booking-item{display:block;width:100%;text-align:left;margin:10px 0;font-weight:400}.booking-item strong{display:block}.admin-title{display:flex;justify-content:space-between;gap:12px;align-items:center}footer{border-top:1px solid var(--line);max-width:1280px;padding:25px 5%;margin:auto;font-size:12px;color:var(--muted)}
@media(max-width:800px){.booking-shell{grid-template-columns:1fr;gap:24px;margin-top:8px}.intro{padding-top:5px}.intro h1{font-size:44px}.intro>p:not(.eyebrow){max-width:100%}#campSummary{margin-top:15px;padding-top:15px}.form-card{padding:24px}.admin-layout{grid-template-columns:1fr}.admin-shell{padding:0 4%}.brand{padding:20px 5%}.brand>a:first-child{font-size:22px}}@media(max-width:420px){.fields{grid-template-columns:1fr}.fields .wide{grid-column:auto}.form-card{padding:20px}.actions>button{flex:1}h1{letter-spacing:-1px}.review-row{gap:10px;font-size:14px}}

/* BeachTravels website: Montserrat, Roboto Slab, brown / teal / gold. */
.booking-page{background:linear-gradient(135deg,#fff8f0 0%,#f8f1e7 70%,#e9f3ef 100%);min-height:100vh}
.booking-page .brand{padding-top:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.booking-page .brand-lockup{display:flex;align-items:center;gap:12px;font-size:23px;letter-spacing:-.8px}
.brand-lockup img{object-fit:contain;flex-shrink:0}.booking-page .brand-lockup span{font-size:8px;letter-spacing:2px;margin-top:0}
.booking-page .quiet{font-size:12px;font-weight:600;text-decoration:none;padding:10px 16px;border:1px solid #d7c8ba;border-radius:100px}
.booking-page .quiet span{display:inline;font-size:18px;margin-left:8px;letter-spacing:0}
.booking-page .booking-shell{max-width:1240px;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:64px;margin-top:36px}
.booking-page .intro{padding-top:10px}.booking-page .eyebrow{letter-spacing:1.6px;font-size:10px;display:flex;align-items:center;gap:8px}
.sun-dot{height:9px;width:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px #fea40820;display:inline-block}
.booking-page h1{font-size:clamp(38px,4.5vw,58px);font-weight:700;line-height:1.15;letter-spacing:-2px;margin-top:18px;margin-bottom:18px}
.booking-page h1 em{font-style:normal;color:#287c79;font-weight:700}
.booking-page h2{font-size:28px;font-weight:600;letter-spacing:-.7px}.booking-page h3{font-size:14px}
.booking-page .intro>p:not(.eyebrow){font-size:15px;line-height:1.8;color:#685448}
.camp-photo{margin:26px 0 0;border-radius:18px;overflow:hidden;position:relative;background:var(--brown);aspect-ratio:1.7}
.camp-photo img{display:block;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}


.booking-page #campSummary{margin-top:24px;padding-top:20px}.booking-page #campSummary h2{font-size:23px;line-height:1.35;margin:8px 0}
.camp-date{font-size:13px;font-weight:600;color:#287c79}.camp-prices{margin:20px 0 12px}
.camp-prices>div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
.camp-prices strong{white-space:nowrap;color:var(--brown)}
.help-card{border-left:3px solid var(--gold);padding:2px 0 2px 17px;margin-top:24px;font-size:13px;color:var(--brown)}
.help-card p{color:var(--muted);font-size:12px;line-height:1.7;margin-bottom:0}
.booking-page .form-card{border-radius:20px;padding:34px 36px;box-shadow:0 16px 50px #532c1b0d;align-self:start}
.progress-steps{list-style:none;display:flex;padding:0;margin:0 0 20px;justify-content:space-between;gap:8px}
.progress-steps li{display:flex;gap:7px;align-items:center;font-size:10px;font-weight:600;color:#94887b}
.progress-steps .step-number{width:25px;height:25px;display:grid;place-items:center;border:1px solid #e4dcd3;border-radius:50%;font-size:10px;color:#8c7b6a}
.progress-steps li.current{color:var(--brown)}.progress-steps li.current .step-number{background:var(--brown);border-color:var(--brown);color:white}
.progress-steps li.complete .step-number{background:#e0f2ee;color:#287c79;border-color:#e0f2ee}
.booking-page .step-caption{font-size:9px;letter-spacing:1.2px;border-top:1px solid #eee6dc;padding-top:18px;margin-bottom:22px}
.booking-page .participant{border-bottom:0;padding-bottom:12px;margin-bottom:8px}.booking-page .participant-head{margin:18px 0 10px}
.booking-page .fields{gap:18px 14px}.booking-page label{font-size:11px;color:#594737;font-weight:600}
.booking-page label input,.booking-page label select{border-color:#e0d5c8;background:#fffdf9;border-radius:8px;font-size:13px;min-height:48px}
.booking-page .muted{font-size:12px;line-height:1.8}.booking-page .package-hint{font-size:11px;line-height:1.7;padding:0 2px}
.booking-page button{font-size:12px;padding:13px 18px;border-radius:9px;transition:background .15s,box-shadow .15s}
.booking-page button:hover:not(:disabled){box-shadow:0 3px 12px #532c1b18;background:#f8f1e9}
.booking-page button.primary:hover:not(:disabled){background:#6c3d25}.booking-page .primary{box-shadow:0 4px 12px #532c1b18}
.booking-page .actions{padding-top:18px;border-top:1px solid #eee6dc;gap:12px;margin-top:24px}
.booking-page .choice{font-weight:400;font-size:12px;line-height:1.75;background:#fffdf9}.booking-page .choice:has(input:checked){border-color:#47b8b4;background:#f0f9f6;box-shadow:0 0 0 1px #47b8b4}
.booking-page .choice input{padding:0;min-height:20px;margin-top:5px;accent-color:var(--brown)}
.booking-page .choice strong{font-size:13px;margin-bottom:4px}.booking-page .check{font-size:12px;line-height:1.8}
.booking-page .check input{padding:0;min-height:20px;accent-color:var(--brown)}
.booking-page .notice{font-size:12px;border:1px solid #d8ede5;line-height:1.8}.booking-page .review-row{font-size:12px;line-height:1.8}
.booking-page .review-row .price{font-size:28px}.booking-page .receipt strong{font-size:12px}
.booking-page footer{display:flex;justify-content:space-between;gap:16px;font-size:10px;padding-top:25px;padding-bottom:25px}
.skip-link{position:absolute;left:16px;top:-100px;background:white;padding:12px;z-index:10}.skip-link:focus{top:10px}
@media(max-width:950px){.booking-page .booking-shell{gap:30px}.booking-page .form-card{padding:26px}.progress-steps li{gap:4px;font-size:9px}.booking-page h1{font-size:42px}}
@media(max-width:800px){.booking-page .booking-shell{grid-template-columns:1fr;margin-top:20px;gap:24px}.booking-page .intro{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}.booking-page .intro>.eyebrow,.booking-page .intro>h1,.booking-page .intro>p{grid-column:1/-1}.booking-page .intro>h1{font-size:40px;line-height:1.15}.booking-page .intro>h1 br{display:none}.booking-page .intro>h1 em{margin-left:7px}.camp-photo{grid-column:1;grid-row:4;aspect-ratio:1.2;margin-top:18px;align-self:start}.booking-page #campSummary{grid-column:2;grid-row:4;margin-top:18px;border:0;padding:0}.booking-page #campSummary h2{font-size:18px}.booking-page #campSummary>.muted,.booking-page .help-card{display:none}.camp-prices{margin-top:12px}.camp-prices>div{font-size:10px;padding:6px 0}.camp-date{font-size:10px}.booking-page .form-card{padding:24px}.booking-page .brand-lockup{font-size:20px}.brand-lockup img{width:48px;height:40px}.booking-page .brand-lockup span{font-size:6px;letter-spacing:1.3px}}
@media(max-width:440px){.booking-page .brand{padding:14px 5%;gap:10px}.booking-page .quiet{font-size:10px;padding:8px 11px}.booking-page .quiet span{display:none}.booking-page .intro>h1{font-size:34px;letter-spacing:-1.5px}.booking-page .intro>p:not(.eyebrow){font-size:12px;margin-bottom:0}.booking-page .fields{grid-template-columns:1fr}.booking-page .form-card{padding:22px 20px}.booking-page h2{font-size:25px}.progress-steps li{font-size:9px;gap:5px}.progress-steps .step-number{width:21px;height:21px}.booking-page footer{flex-direction:column}.camp-photo{aspect-ratio:1}}
@media(prefers-reduced-motion:reduce){.booking-page button{transition:none}}
.booking-page [data-field]:disabled{color:#532c1b;background:#faf7f2;opacity:1;-webkit-text-fill-color:#532c1b}
.booking-page button.choice.wide{width:100%;text-align:left;margin:10px 0;display:block}
.booking-page button.choice.wide:disabled{opacity:1;background:#e7f3ee;color:#532c1b}
.booking-page a.primary{display:inline-block;border-radius:8px;padding:13px 20px;color:#fff;background:#532c1b;text-decoration:none}

/* Visible validation survives the temporary notification. */
.booking-page .field-invalid input,.booking-page .field-invalid select{border:2px solid #ad3025;background:#fff8f6;box-shadow:0 0 0 2px #ad30251a}
.booking-page .choice.field-invalid,.booking-page .check.field-invalid,.booking-page button.field-invalid{border:2px solid #ad3025;border-radius:9px;padding:14px;background:#fff8f6}
.booking-page .field-error{display:block;color:#962819;font-size:12px;line-height:1.6;font-weight:600;margin-top:7px;grid-column:1/-1}
.booking-page .check.field-invalid,.booking-page .choice.field-invalid{flex-wrap:wrap}
.booking-page .booking-notice{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);z-index:30;width:min(580px,calc(100% - 32px));background:#532c1b;color:white;padding:16px 18px;border-radius:12px;box-shadow:0 8px 32px #532c1b40;display:flex;gap:15px;align-items:center;font-size:14px;line-height:1.6}
.booking-page .booking-notice[hidden]{display:none}
.booking-page .booking-notice button{flex-shrink:0;color:white;background:transparent;border:1px solid #ffffff70;padding:4px 12px;font-size:22px;margin-left:auto}

.booking-page .choice .field-error,.booking-page .check .field-error{flex-basis:100%}
.admin-panel{min-width:0;overflow-wrap:anywhere}
.admin-panel .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:420px){.admin-panel .fields{grid-template-columns:1fr}}

/* Keep the active price level next to the price, including on narrow screens. */
.booking-page .offer-summary{background:#edf6f2;border:1px solid #cce4dc;border-radius:10px;padding:15px;margin:18px 0 24px;display:grid;gap:8px;color:#532c1b;font-size:12px;line-height:1.7}
.booking-page .offer-tag{display:inline-block;align-self:start;width:fit-content;background:#ddefe7;color:#315d51;border-radius:6px;padding:4px 9px;font-size:12px;font-weight:700;line-height:1.6}
.booking-page .package-price-detail{display:grid;gap:8px;margin:0 0 14px;color:#532c1b}
.booking-page .package-price-values{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:baseline}
.booking-page .package-price-values strong{font-size:21px}
.booking-page .package-price-values del,.booking-page .summary-price del{color:#71695f}
.booking-page .offer-saving{font-weight:600;color:#315d51}
.booking-page .camp-prices small{display:block;font-size:10px;font-weight:600;color:#315d51;margin-top:3px}
.booking-page .summary-price{display:grid;gap:2px;text-align:right}
.booking-page .summary-price del{font-size:10px;font-weight:400}
.booking-page .review-row .offer-tag{margin-top:7px}

/* Returning travellers can recover their existing profile during onboarding. */
.booking-page .returning-traveller{background:#fff8ec;border:1px solid #e8d8b8;border-radius:12px;padding:18px;margin:22px 0}
.booking-page .returning-traveller strong{color:var(--brown);font-size:14px}
.booking-page .returning-traveller p,.booking-page .verified-email{font-size:12px;color:var(--muted);overflow-wrap:anywhere}
.booking-page .returning-traveller button{font-size:12px}
.booking-page #accountTitle:focus{outline:none}
.booking-page #progress{scroll-margin-top:24px}

/* Account controls remain outside the booking steps and receipt. */
.booking-page .account-actions{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 0 18px;margin-bottom:22px;border-bottom:1px solid var(--line)}
.booking-page .account-actions[hidden]{display:none}
.booking-page .account-actions p{margin:0;font-size:12px;color:var(--muted);overflow-wrap:anywhere;min-width:0}
.booking-page .account-actions button{flex-shrink:0;font-size:12px;padding:9px 14px}

/* One participant selection and one server quote feed both price panels. */
.booking-page .booking-summary{background:#fffdf8;border:1px solid var(--line);border-radius:14px;padding:18px;margin:24px 0}
.booking-page .summary-participant{padding:14px 0;border-bottom:1px solid var(--line);font-size:13px;overflow-wrap:anywhere}
.booking-page .summary-package{font-size:12px;color:var(--muted);margin:6px 0 12px}
.booking-page .cost-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:7px 0;font-size:13px}
.booking-page .cost-row>span{min-width:0}
.booking-page .cost-row>strong{flex-shrink:0;white-space:nowrap;text-align:right}
.booking-page .cost-total{border-top:1px solid var(--line);margin-top:6px;padding-top:12px;font-weight:700;color:var(--brown)}
.booking-page .cost-totals{margin:18px 0}
.booking-page .review-participant{border:1px solid var(--line);border-radius:12px;padding:18px;margin:18px 0}
.booking-page .review-participant>p{font-size:13px;margin:8px 0 14px}
.booking-page .package-guide-price{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.booking-page .camp-prices>section{padding:16px 0;border-top:1px solid var(--line)}
.booking-page .camp-prices>section p{margin:8px 0}
.booking-page .camp-prices .package-guide-price{border:0;padding:0}
.booking-page .camp-prices .package-guide-price strong{min-width:0;white-space:normal}
.booking-page .package-guide-price>span{flex-shrink:0;white-space:nowrap}
@media(max-width:800px){.booking-page .camp-photo{grid-column:1/-1;aspect-ratio:2.3}.booking-page #campSummary{grid-column:1/-1;grid-row:5}.booking-page #campSummary>.muted{display:block}}

/* Supporting information follows the form on small screens. */
.booking-page .form-card{scroll-margin-top:18px}
.booking-page #content h2:focus{outline:none}
.booking-flow .intro .camp-date{max-width:none}
.booking-flow .camp-side{min-width:0}
.booking-flow .mobile-camp-context{display:none}
.booking-flow #campSummary[hidden]{display:none}
.booking-flow .help-card[hidden]{display:none}
.booking-page .camp-about{margin:10px 0 20px;font-size:12px}
.booking-page .camp-about p{margin-bottom:0}
.booking-flow .discount-entry{font-size:12px;margin:14px 0 22px}
.booking-flow .discount-entry label{margin-top:14px}
.booking-flow .participant-head{gap:12px;align-items:flex-start}
.booking-flow .participant-head h3{min-width:0;overflow-wrap:anywhere}
.booking-flow .participant-head button{flex-shrink:0}
@media(min-width:801px){.account-flow .camp-about{display:none}}
@media(max-width:800px){
  .booking-flow .camp-side{display:contents}
  .booking-flow .intro{display:none}
  .booking-flow .mobile-camp-context{display:block}
  .booking-flow .form-card{grid-column:1/-1;grid-row:1}
  .booking-flow #campSummary{grid-column:1/-1;grid-row:2;margin-top:0;padding-top:0}
  .booking-flow .help-card{display:none}
  .account-flow .intro{display:none}
}
@media(max-width:440px){.booking-flow .participant-head{flex-wrap:wrap}.booking-flow .participant-head button{margin-left:auto}.account-flow .family-actions{display:grid;grid-template-columns:1fr}}
.booking-page a.primary{font-size:12px;text-align:center;min-height:48px}

.booking-page dialog{max-height:calc(100dvh - 32px);overflow:auto}

.camp-inclusions{margin:18px 0;padding:16px;border:1px solid #d9e6df;border-radius:12px;background:#f2f8f5}.camp-inclusions summary{font-weight:700;cursor:pointer}.camp-inclusions li{margin:8px 0}.text-button{padding:8px 0;border:0;background:transparent;color:#532c1b;text-decoration:underline}.cost-row>strong{max-width:58%;text-align:right;overflow-wrap:anywhere}.package-price-values{flex-wrap:wrap}.actions{flex-wrap:wrap}

.booking-page .cost-row>strong{flex-shrink:1;white-space:normal;max-width:58%}.booking-page .package-guide-price>span{flex-shrink:1;white-space:normal;text-align:right;max-width:60%}.booking-page .package-price-values{flex-wrap:wrap}

/* Participants owns package prices; supporting camp details follow its form. */
.booking-flow .package-hint{margin:16px 0 0;padding:14px 0 0;border-top:1px solid var(--line)}
.booking-flow .package-price-detail{gap:4px;margin-bottom:8px}
.booking-flow .package-price-label{font-size:12px;font-weight:600;color:var(--muted)}
.booking-flow .package-age{display:block;font-size:12px;line-height:1.7}
.booking-flow .camp-inclusions{margin:26px 0 0;background:#faf9f5;border-color:var(--line);font-size:13px}
.booking-flow .camp-inclusions summary>span{display:block}
.booking-flow .camp-inclusions summary>.muted{font-size:12px;font-weight:400;margin-top:5px}
.booking-flow .camp-inclusions ul{padding-left:20px}
@media(max-width:440px){.booking-flow .progress-steps{gap:4px}.booking-flow .progress-steps li{flex:1;flex-direction:column;text-align:center;gap:5px}}

/* Each person remains a distinct card throughout registration and review. */
.booking-page .participant,.booking-page .review-participant{background:#fffaf4;border:1px solid #d4bdab;border-radius:14px;padding:22px;margin:22px 0;box-shadow:0 3px 12px #532c1b06}
.booking-page .participant-head{gap:12px;flex-wrap:wrap;align-items:flex-start;margin-bottom:16px}
.booking-page .participant-head h3{margin:0;min-width:0;overflow-wrap:anywhere}
.booking-page .participant-kind{font-size:11px;color:var(--muted)}
.booking-page .required-mark{color:#8c3c22;font-weight:700}
.booking-page .review-package{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.booking-page .booking-total-card{border:1px solid #d4bdab;border-radius:12px;padding:16px 20px;margin:24px 0;background:#fffaf4}
.booking-page .booking-total-card .cost-total{border:0;margin:0;padding:0}
.booking-page .review-participant .offer-saving{font-size:12px;margin:2px 0 12px}
@media(max-width:440px){.booking-page .participant,.booking-page .review-participant{padding:18px 14px}.booking-page .cost-row>strong{white-space:normal;flex-shrink:1;max-width:62%}.booking-page .cost-row{gap:10px}}

.booking-page .currency-amount{white-space:nowrap;display:inline-block}

/* Optional booking extras use the same cards and responsive form controls. */
.addon-card h3{margin-bottom:8px}.addon-unit{font-weight:600}.addon-quantities{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:16px}.addon-quantities input{min-width:0;width:100%}
@media(max-width:440px){.booking-flow .progress-steps li{font-size:10px}.addon-quantities{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Plain disclosure headings: distinct from booking action buttons. */
.booking-flow .camp-inclusions{padding:0;background:transparent;border:0;border-top:1px solid var(--line);border-radius:0}
.booking-flow .camp-inclusions summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;min-height:44px;font-size:14px;color:var(--ink)}
.booking-flow .camp-inclusions summary::-webkit-details-marker{display:none}
.booking-flow .camp-inclusions summary::after{content:'⌄';font-size:22px;color:#287c79}
.booking-flow .camp-inclusions[open] summary::after{content:'⌃'}
.booking-flow .camp-inclusions summary:focus-visible{outline:3px solid #47b8b466;outline-offset:2px}
.booking-flow .check input{accent-color:#287c79;width:24px;height:24px;min-height:24px}

/* Visible progress and compact right-aligned forward actions. */
.booking-flow .step-caption{font-size:17px;line-height:1.5;color:#1f5673;text-transform:none;letter-spacing:0;padding:12px 14px;background:#e8f4f1;border-radius:9px;margin:12px 0 20px}
.booking-flow .progress-steps .step-number{width:30px;height:30px;font-size:13px}
.booking-flow .progress-steps li.current{font-weight:700;color:#1f8079}
.booking-flow .progress-steps li.current .step-number{background:#1f8079;border-color:#1f8079}
.booking-flow .actions>button.primary{margin-left:auto;flex:0 0 auto}
@media(max-width:440px){.booking-flow .progress-steps .step-number{width:28px;height:28px}.booking-flow .step-caption{font-size:16px}}

/* Camp package prices and participant actions share the app's hierarchy. */
.booking-page .price-pair{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-end;gap:8px;max-width:100%;min-width:0}
.booking-page .price-pair del{font-weight:400;color:var(--muted);font-size:13px;text-decoration:line-through}
.booking-page .price-pair strong{font-weight:700;color:#1f5673;white-space:nowrap}
.booking-page .package-options{border:0;padding:0;margin:20px 0 0;min-width:0}
.booking-page .package-options.field-invalid{outline:2px solid #ad3025;outline-offset:8px;border-radius:9px;background:#fff8f6}
.booking-page .package-options legend{font-weight:600;font-size:13px;margin-bottom:10px}
.booking-page .package-choice{display:flex;align-items:flex-start;gap:12px;border:1px solid #d4bdab;border-radius:10px;padding:14px;margin:10px 0;background:#fffaf4;cursor:pointer}
.booking-page .package-choice:has(:checked){background:#dff0ee;border:2px solid #1f8079;padding:13px}
.booking-page .package-choice:has(:disabled){opacity:.55;cursor:default}
.booking-page .package-choice input{width:20px;height:20px;min-height:20px;flex-shrink:0;accent-color:#1f8079;margin:3px 0}
.booking-page .package-choice-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.booking-page .package-choice .price-pair{justify-content:flex-start}
.booking-page .add-people-section{margin:24px 0 0;background:#e6eef3;border:1px solid #cbdde6;border-radius:14px;padding:18px}
.booking-page .add-people-section h3{margin:0 0 6px}
.booking-page .add-people-section>p{margin:0 0 14px;font-size:13px}
.booking-page .people-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.booking-page .people-action{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #d6e3eb;border-radius:10px;padding:12px;text-align:left;min-height:72px;color:#1f5673}
.booking-page .people-action>span:nth-child(2){flex:1;min-width:0}
.booking-page .people-action strong{display:block;font-size:13px}
.booking-page .people-action small{display:block;font-size:11px;font-weight:400;color:var(--muted);line-height:1.5;margin-top:3px}
.booking-page .people-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex-shrink:0;border-radius:50%;background:#e6eef3}
.booking-page .people-icon svg{width:22px;height:22px}
.booking-page .people-chevron{font-size:24px}
.booking-page .remove-person{color:#a82f27;border-color:#ebbbb5;background:#fff1ee;min-height:44px;padding:8px 12px;font-size:12px}
.booking-page .remove-person span{font-size:20px;line-height:1;margin-right:4px}
.booking-flow .camp-inclusions{background:#fffaf4;border:1px solid #d4bdab;border-radius:12px;padding:0 16px}
.booking-flow .camp-inclusions ul{padding-bottom:8px}
@media(max-width:600px){.booking-page .people-actions{grid-template-columns:1fr}.booking-page .add-people-section{padding:14px}.booking-page .cost-row>.price-pair{max-width:65%}}

/* One compact offer line, and existing people expand beside the add action. */
.booking-page .offer-summary{display:block;background:#fea408;border:0;padding:10px 14px;margin:12px 0 18px;color:#532c1b;font-size:14px;line-height:20px;white-space:nowrap}
.booking-page .person-chooser{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:22px}
.booking-page .person-chooser h2{font-size:23px;margin-top:0}
.booking-page .person-choice{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:48px;padding:12px 14px;margin:8px 0;text-align:left;background:#fff;border:1px solid #d6e3eb;color:#1f5673}
.booking-page .person-choice>span:last-child{font-size:20px}
.booking-page .existing-people{grid-column:1/-1;border-left:3px solid #1f8079;padding:2px 10px;margin:0 0 6px}
.booking-page .existing-people[hidden]{display:none}
.booking-page .people-action[aria-expanded=true]{border-color:#1f8079;background:#f4faf9}
@media(max-width:380px){.booking-page .offer-summary{font-size:12px;padding:9px 10px}}

/* Web counterparts of the app's compact actions and touch-friendly extras. */
.booking-flow .actions>button.primary{background:#1f8079;border-color:#1f8079;box-shadow:none;min-height:44px;padding:10px 16px;font-size:14px}
.booking-flow .actions>button.primary:hover:not(:disabled){background:#196b65}
.booking-flow button:focus-visible{outline:3px solid #47b8b480;outline-offset:3px}
.booking-flow .addon-quantities{display:block}
.booking-flow .quantity-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;margin:12px 0}
.booking-flow .quantity-row>label{font-size:14px}
.booking-flow .quantity-row>label .muted{font-size:11px;font-weight:400}
.booking-flow .quantity-stepper{display:flex;align-items:center;gap:6px;flex-shrink:0}
.booking-flow .quantity-stepper button{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:1px solid #b4c9c5;border-radius:9px;color:#225b55;background:#edf6f2;font-size:22px}
.booking-flow .quantity-stepper button:disabled{cursor:default;opacity:.4}
.booking-flow .quantity-stepper input{width:44px;min-width:0;min-height:44px;padding:8px 2px;text-align:center;font-size:16px;border-radius:8px;appearance:textfield;-moz-appearance:textfield}
.booking-flow .quantity-stepper input::-webkit-inner-spin-button,.booking-flow .quantity-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.booking-flow .quantity-row .field-error{flex-basis:100%}
.booking-flow .field-invalid textarea{border:2px solid #ad3025;background:#fff8f6;box-shadow:0 0 0 2px #ad30251a}
@media(max-width:600px){.booking-flow .fields input,.booking-flow .fields select,.booking-flow .fields textarea{font-size:16px}}

.booking-page #campIntro,.booking-page #registrationIntro,.booking-page .camp-about p{white-space:pre-line}

/* Price rows share one wrapping layout; descendants must not inherit column widths. */
.booking-page .cost-row{flex-wrap:wrap;column-gap:12px;row-gap:4px}
.booking-page .cost-row>span:first-child:not(.price-pair){flex:1 1 100px;min-width:0;overflow-wrap:anywhere}
.booking-page .cost-row>.price-pair,.booking-page .cost-row>strong{flex:0 1 auto;min-width:0;max-width:100%;margin-left:auto;text-align:right}
.booking-page .cost-row>.price-pair{flex-direction:column;align-items:flex-end;gap:2px}
.booking-page .cost-row>.price-pair strong,.booking-page .cost-row>.price-pair del{max-width:100%;margin:0}
.booking-page .review-package{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.booking-page .review-package .offer-tag{margin:0}
.booking-page #content a[href^="mailto:"]{overflow-wrap:anywhere}
.booking-page .brand{flex-wrap:wrap}
.booking-page .brand .quiet{min-width:0;max-width:100%;overflow-wrap:anywhere}
