/* ==========================================================================
   Virginia Outside — Basecamp · camp.css
   The single camp page (camps.php). Loaded site-wide after base.css, so every
   selector here is scoped to .vob-cp-* (or body.tpl-camps).
   ========================================================================== */

/* ---------- hero ---------- */
.vob-cp-hero .vob-hero__img { object-position: center 30%; }
.vob-cp-hero .vob-hero__title { max-width: 22ch; }
.vob-cp-hero .vob-hero__sub { font-weight: 700; letter-spacing: .2px; }
.vob-cp-hero__eyebrow a { color: inherit !important; text-decoration: none; }
.vob-cp-hero__eyebrow a:hover { color: #fff !important; text-decoration: underline; text-underline-offset: 4px; }
/* Split hero (portrait or small photos, desktop): pine under the title, the photo on the right
   at most 1.4x its own size (--vob-cp-img-max, set inline), fading into the pine. */
@media (min-width: 901px) {
	.vob-cp-hero--split { --vob-cp-img: min(58%, var(--vob-cp-img-max, 58%)); }
	.vob-cp-hero--split .vob-hero__img { left: auto; right: 0; width: var(--vob-cp-img); }
	.vob-cp-hero--split .vob-hero__scrim {
		background:
			linear-gradient(to right, var(--pine) calc(100% - var(--vob-cp-img)), rgba(22, 51, 42, .72) calc(100% - var(--vob-cp-img) + 9%), rgba(22, 51, 42, .18) calc(100% - var(--vob-cp-img) + 26%), rgba(22, 51, 42, 0) calc(100% - var(--vob-cp-img) + 40%)),
			linear-gradient(to top, rgba(10, 26, 19, .6) 0%, rgba(10, 26, 19, 0) 58%);
	}
}

/* ---------- orange facts bar ---------- */
.vob-cp-facts { background: var(--orange); color: var(--on-orange); }
.vob-cp-facts__inner { display: flex; align-items: center; gap: 32px; padding-block: 20px; }
.vob-cp-facts__list { display: flex; flex: 1; min-width: 0; margin: 0; }
.vob-cp-facts__cell { flex: 1 1 auto; min-width: 0; padding: 2px 24px; border-left: 1px solid rgba(36, 18, 3, .22); }
.vob-cp-facts__cell:first-child { padding-left: 0; border-left: 0; }
.vob-cp-facts dt {
	font: 700 11px/1.2 var(--font-body);
	letter-spacing: 2.5px;
	text-transform: uppercase;
	color: var(--on-orange);
	margin: 0 0 6px;
}
.vob-cp-facts dd { margin: 0; }
.vob-cp-facts__big {
	display: block;
	font: 700 24px/1.08 var(--font-display);
	letter-spacing: .4px;
	color: var(--on-orange);
	text-wrap: balance;
}
.vob-cp-facts__cell--price .vob-cp-facts__big { font-size: 34px; line-height: 1; letter-spacing: .5px; }
.vob-cp-facts__big small { font-size: .56em; font-weight: 700; opacity: .8; margin-left: 1px; vertical-align: .38em; }
.vob-cp-facts__sub { display: block; font: 600 13px/1.35 var(--font-body); margin-top: 4px; color: var(--on-orange); }
.vob-cp-facts__cta { flex: none; }
.vob-cp-facts__btn { min-height: 54px; padding: 15px 30px; font-size: 15px; letter-spacing: 1.5px; }
.vob-cp-facts__btn .vob-icon { opacity: .75; }
.vob-cp-facts__opens { margin: 0; display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.vob-cp-facts__opens span { font: 700 11px/1.2 var(--font-body); letter-spacing: 2.5px; text-transform: uppercase; color: var(--on-orange); margin-bottom: 6px; }
.vob-cp-facts__opens strong { font: 700 26px/1.05 var(--font-display); letter-spacing: .4px; }

/* ---------- two columns ---------- */
.vob-cp-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: 56px;
	align-items: start;
	padding-block: 52px 80px;
}
.vob-cp-main { min-width: 0; }
.vob-cp-side { min-width: 0; }
.vob-cp-side__inner { position: sticky; top: calc(var(--header-h) + 24px); }
body.admin-bar .vob-cp-side__inner { top: calc(var(--header-h) + 56px); }

/* ---------- write-up ---------- */
.vob-cp-tagline { font: 700 26px/1.25 var(--font-display); letter-spacing: .4px; color: var(--pine); margin: 0 0 18px; text-wrap: balance; }
.vob-cp-content { font-size: 16.5px; }
.vob-cp-content .vob-cp-lead { font: 700 23px/1.35 var(--font-display); letter-spacing: .3px; color: var(--pine); margin-bottom: 18px; text-wrap: balance; }
.vob .vob-cp-content h2, .vob .vob-cp-content h3 { font-size: 25px; margin: 1.7em 0 .55em; }
.vob .vob-cp-content h4 { font-size: 20px; }
.vob-cp-content .vob-cp-sublabel { font: 700 16px/1.4 var(--font-body); color: var(--pine); margin: 1.3em 0 .35em; }
.vob-cp-content .vob-cp-sublabel + ul { margin-top: 0; }
.vob-cp-content hr, .vob-cp-content .wp-block-separator { margin: 2.2em 0; }
.vob-cp-content img { margin-inline: 0; }
.vob-cp-content .n2-section-smartslider { margin: 2em 0; }

/* "Day 1 – …" lists as a day-by-day schedule */
.vob-cp-content .vob-cp-days { list-style: none; margin: 1em 0 1.2em; padding: 0; border: 1px solid var(--rule); }
.vob-cp-content .vob-cp-days__row {
	display: grid; grid-template-columns: 80px minmax(0, 1fr); gap: 16px;
	margin: 0; padding: 15px 20px;
	background: var(--paper);
	border-top: 1px solid var(--rule);
}
.vob-cp-content .vob-cp-days__row:first-child { border-top: 0; }
.vob-cp-content .vob-cp-days__row:nth-child(odd) { background: var(--page); }
.vob-cp-days__n { font: 700 19px/1.25 var(--font-display); letter-spacing: 1px; text-transform: uppercase; color: var(--rust); }
.vob-cp-days__t { display: block; font-size: 15.5px; line-height: 1.4; color: var(--pine); margin-bottom: 2px; }
.vob-cp-days__d { display: block; font-size: 14.5px; line-height: 1.55; }

/* partner logos */
.vob-cp-partners { margin-top: 40px; padding-top: 26px; border-top: 1px solid var(--rule); }
.vob-cp-partners__h { font: 700 12px/1.3 var(--font-body); letter-spacing: 3px; text-transform: uppercase; color: var(--rust); margin: 0 0 16px; }
.vob-cp-partners__logos { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; }
.vob-cp-partners__img { display: block; width: auto !important; max-width: min(100%, 300px); height: auto; max-height: 110px; object-fit: contain; background: var(--paper); border: 1px solid var(--rule); padding: 10px; }

/* ---------- sections (heading on desktop, accordion row on phones) ---------- */
.vob-cp-sec { margin-top: 56px; }
.vob .vob-cp-sec__h { font-size: 30px; margin: 0 0 18px; }
.vob-cp-sec__toggle {
	all: unset;
	box-sizing: border-box;
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	width: 100%;
	font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; line-height: inherit;
	cursor: default;
}
.vob-cp-sec__icon { display: none; }

/* ---------- session schedule ---------- */
.vob-cp-alert {
	display: flex; align-items: flex-start; gap: 16px;
	background: var(--cream);
	border: 1px solid var(--rule);
	padding: 18px 22px;
	margin: 0 0 26px;
}
.vob-cp-alert__icon { flex: none; color: var(--rust); margin-top: 1px; }
.vob-cp-alert__text { margin: 0; font: 700 22px/1.25 var(--font-display); letter-spacing: .4px; color: var(--pine); text-wrap: balance; }

.vob-cp-sched__label { font: 700 12px/1.3 var(--font-body); letter-spacing: 3px; text-transform: uppercase; color: var(--muted); margin: 0 0 12px; }
.vob-cp-sched__intro { font-size: 15.5px; margin: 0 0 14px; }
.vob-cp-sched.is-past .vob-cp-sched__intro { color: var(--muted); font-style: italic; }
.vob-cp-sched__raw { font-size: 16px; }
.vob-cp-sched.is-past .vob-cp-sched__raw { color: var(--muted); }

.vob-cp-group { background: var(--paper); border: 1px solid var(--rule); margin: 0 0 20px; }
.vob-cp-group__head { background: var(--pine); color: var(--cream); padding: 14px 20px 15px; }
.vob .vob-cp-group__name { color: var(--cream); font-size: 21px; letter-spacing: 1.5px; margin: 0; }
.vob-cp-group__reg { margin: 5px 0 0; font-size: 14px; line-height: 1.5; color: rgba(242, 234, 216, .88); }
.vob-cp-group__reg a { color: var(--orange-hi) !important; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.vob-cp-group__reg a:hover { color: #fff !important; }
.vob-cp-group__reg .vob-icon { margin-left: 4px; vertical-align: -1px; }
.vob-cp-nowrap { white-space: nowrap; }
.vob-cp-group__meet { display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 12px 20px; font-size: 14px; line-height: 1.55; background: var(--page); border-bottom: 1px solid var(--rule); }
.vob-cp-group__meet .vob-icon { flex: none; color: var(--rust); margin-top: 2px; }
.vob-cp-group__meet strong { color: var(--pine); }

.vob-cp-rows { list-style: none; margin: 0; padding: 0; }
.vob-cp-row {
	display: grid; grid-template-columns: minmax(150px, 190px) minmax(0, 1fr) auto; align-items: center; gap: 6px 16px;
	padding: 13px 20px;
	border-top: 1px solid #eee4cf;
	font-size: 15px;
}
.vob-cp-row:first-child { border-top: 0; }
.vob-cp-row__date { font-weight: 700; color: var(--pine); }
.vob-cp-row__note { font-size: 14px; line-height: 1.45; color: var(--muted); }
.vob-cp-row__note:empty { display: none; }
.vob-cp-row__note:empty + .vob-cp-pill { grid-column: 3; }
.vob-cp-sched:not(.is-past) .vob-cp-row--full .vob-cp-row__date,
.vob-cp-sched:not(.is-past) .vob-cp-row--closed .vob-cp-row__date,
.vob-cp-sched:not(.is-past) .vob-cp-row--past .vob-cp-row__date { color: #857f73; }

.vob-cp-pill {
	justify-self: end;
	display: inline-block;
	min-width: 64px;
	text-align: center;
	font: 700 11px/1 var(--font-body);
	letter-spacing: 1.6px;
	text-transform: uppercase;
	padding: 6px 10px;
	border: 1px solid transparent;
	white-space: nowrap;
}
.vob-cp-pill--open { color: #276140; background: #e5f0e8; border-color: #bcd6c3; }
.vob-cp-pill--full { color: #8a4a17; background: #f8e9da; border-color: #ecc9a6; }
.vob-cp-pill--closed, .vob-cp-pill--past { color: #5f5a50; background: #efebe2; border-color: #dcd4c3; }
/* Last season's list: a record, not a live status */
.vob-cp-sched.is-past .vob-cp-pill { color: var(--muted); background: transparent; border-color: var(--rule); }

.vob-cp-group__foot { padding: 14px 20px 16px; border-top: 1px solid var(--rule); background: var(--page); }
.vob-cp-group__note { margin: 0 0 8px; font-size: 13.5px; line-height: 1.55; color: var(--muted); }
.vob-cp-group__note:last-child { margin-bottom: 0; }
.vob-cp-group__btn { margin-top: 6px; }
.vob-cp-group__btn .vob-icon { opacity: .7; }
.vob-cp-group--plain .vob-cp-group__foot:first-child { border-top: 0; }

/* ---------- what to bring ---------- */
.vob-cp-bring { font-size: 16.5px; }
.vob-cp-bring > *:last-child { margin-bottom: 0; }
.vob-cp-docs { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 18px; }
.vob-cp-doc { justify-content: flex-start; text-align: left; line-height: 1.3; }
.vob-cp-doc__type { font-size: 11px; letter-spacing: 1.5px; padding: 3px 6px; border: 1px solid currentColor; opacity: .75; }

/* ---------- video ---------- */
.vob-cp-video { margin: 0; }

/* ---------- pick-up / drop-off ---------- */
.vob-cp-where { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); background: var(--paper); border: 1px solid var(--rule); }
.vob-cp-where__text { padding: 24px 24px 26px; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; }
.vob-cp-where__name { display: flex; align-items: center; gap: 8px; margin: 0 0 4px; font: 700 22px/1.15 var(--font-display); letter-spacing: .6px; text-transform: uppercase; color: var(--pine); }
.vob-cp-where__name .vob-icon { flex: none; color: var(--rust); }
.vob-cp-where__addr { margin: 0 0 12px; font-size: 15px; color: var(--muted); }
.vob-cp-where__detail, .vob-cp-where__time { margin: 0 0 12px; font-size: 14.5px; line-height: 1.55; }
.vob-cp-where__time strong { color: var(--pine); }
.vob-cp-where__time span { white-space: nowrap; }
.vob-cp-where__time--lines span { display: block; white-space: normal; }
.vob-cp-where__btn { margin-top: 6px; }
.vob-cp-where__btn .vob-icon { opacity: .75; }
.vob-cp-map { position: relative; min-height: 280px; background: var(--cream); border-left: 1px solid var(--rule); }
.vob-cp-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------- refund policy ---------- */
.vob-cp-refund { font-size: 15px; line-height: 1.7; max-width: 70ch; }
.vob-cp-refund p { margin: 0 0 .8em; }
.vob-cp-refund p:last-child { margin-bottom: 0; }

/* ---------- sidebar ---------- */
.vob-cp-card { padding: 26px; }
.vob-cp-card .vob-panel__h { margin-bottom: 8px !important; }
.vob-cp-card__price { margin: 0; font: 700 44px/1 var(--font-display); letter-spacing: .5px; color: var(--pine); }
.vob-cp-card__price small { font-size: 22px; opacity: .72; margin-left: 1px; }
.vob-cp-card__pnote { margin: 6px 0 0; font-size: 13px; line-height: 1.5; color: var(--muted); }
.vob-cp-card__dl { margin-top: 18px; }
.vob-cp-card__dl > div:last-child { border-bottom: 1px solid var(--rule); }
.vob-cp-card__dl dd { max-width: 64%; }
.vob-cp-card__dl > div.is-stack { flex-direction: column; gap: 3px; }
.vob-cp-card__dl > div.is-stack dd { max-width: none; text-align: left; line-height: 1.55; }
.vob-cp-card__dl a { font-weight: 700; }
.vob-cp-card__cta { margin-top: 20px; }
.vob-cp-card__cta .vob-btn .vob-icon { opacity: .75; }
.vob-cp-card__opens { margin: 0; padding: 14px 16px; text-align: center; background: var(--cream); border: 1px solid var(--rule); }
.vob-cp-card__opens span { display: block; font: 700 11px/1.3 var(--font-body); letter-spacing: 2.5px; text-transform: uppercase; color: var(--rust); margin-bottom: 4px; }
.vob-cp-card__opens strong { display: block; font: 700 24px/1.1 var(--font-display); letter-spacing: .4px; color: var(--pine); }
.vob-cp-card__call { margin: 13px 0 0; text-align: center; font-size: 13.5px; color: var(--muted); }
.vob-cp-card__call a { font-weight: 700; }
.vob-cp-note { padding: 18px 22px; }
.vob-cp-note p { margin: 0; font-size: 14px; line-height: 1.6; }
.vob-cp-note strong { color: var(--pine); }

/* ---------- mobile sticky register bar (site.js adds .is-visible) ---------- */
.vob-cp-sticky { display: none; }

@media (max-height: 760px) and (min-width: 901px) {
	.vob-cp-side__inner { position: static; }
}

@media (max-width: 1100px) {
	.vob-cp-facts__cell { padding-inline: 16px; }
	.vob-cp-facts__big { font-size: 21px; }
	.vob-cp-facts__cell--price .vob-cp-facts__big { font-size: 30px; }
	.vob-cp-layout { grid-template-columns: minmax(0, 1fr) 310px; gap: 40px; }
}

@media (max-width: 900px) {
	.vob-cp-hero .vob-hero__sub { font-size: 15px; }

	.vob-cp-facts__inner { flex-direction: column; align-items: stretch; gap: 16px; padding-block: 0 18px; }
	.vob-cp-facts__list { display: grid; grid-template-columns: 1fr 1fr; margin-inline: calc(var(--gutter) * -1); }
	.vob-cp-facts__cell, .vob-cp-facts__cell:first-child { padding: 15px var(--gutter) 14px; border-left: 0; border-bottom: 1px solid rgba(36, 18, 3, .18); }
	.vob-cp-facts__cell:nth-child(2n) { border-left: 1px solid rgba(36, 18, 3, .18); }
	.vob-cp-facts__cell:last-child:nth-child(odd) { grid-column: 1 / -1; }
	.vob-cp-facts dt { font-size: 10.5px; letter-spacing: 2px; margin-bottom: 4px; }
	.vob-cp-facts__big { font-size: 20px; }
	.vob-cp-facts__cell--price .vob-cp-facts__big { font-size: 28px; }
	.vob-cp-facts__sub { font-size: 12px; }
	.vob-cp-facts__btn { width: 100%; }
	.vob-cp-facts__opens { align-items: flex-start; text-align: left; }

	.vob-cp-layout { grid-template-columns: 1fr; gap: 40px; padding-block: 32px 56px; }
	.vob-cp-side__inner { position: static; }

	.vob-cp-tagline { font-size: 22px; }
	.vob-cp-content { font-size: 16px; }
	.vob-cp-content .vob-cp-lead { font-size: 20px; }
	.vob .vob-cp-content h2, .vob .vob-cp-content h3 { font-size: 22px; }
	.vob-cp-content .vob-cp-days__row { grid-template-columns: 1fr; gap: 2px; padding: 13px 16px; }

	/* accordion */
	.vob-cp-sec { margin-top: 0; border-top: 1px solid var(--rule); }
	.vob-cp-content + .vob-cp-sec, .vob-cp-partners + .vob-cp-sec { margin-top: 36px; }
	.vob-cp-sec:last-child { border-bottom: 1px solid var(--rule); }
	.vob .vob-cp-sec__h { font-size: 21px; margin: 0; letter-spacing: 1px; }
	.vob-cp-sec__toggle { cursor: pointer; padding: 17px 0; -webkit-tap-highlight-color: transparent; }
	.vob-cp-sec__icon { display: block; position: relative; flex: none; width: 16px; height: 16px; }
	.vob-cp-sec__icon::before, .vob-cp-sec__icon::after { content: ""; position: absolute; left: 0; top: 7px; width: 16px; height: 2px; background: var(--orange); transition: transform .2s; }
	.vob-cp-sec__icon::after { transform: rotate(90deg); }
	.vob-cp-sec__toggle[aria-expanded="true"] .vob-cp-sec__icon::after { transform: rotate(0deg); }
	.vob-cp-sec__body { padding-bottom: 26px; }
	.vob-cp-sec.is-collapsed .vob-cp-sec__body { display: none; }

	.vob-cp-alert { padding: 16px 18px; gap: 12px; }
	.vob-cp-alert__text { font-size: 19px; }
	.vob-cp-group__head { padding: 13px 16px; }
	.vob-cp-group__meet, .vob-cp-group__foot { padding-inline: 16px; }
	.vob-cp-row { grid-template-columns: minmax(0, 1fr) auto; padding: 12px 16px; }
	.vob-cp-row__date { grid-column: 1; grid-row: 1; }
	.vob-cp-pill, .vob-cp-row__note:empty + .vob-cp-pill { grid-column: 2; grid-row: 1; }
	.vob-cp-row__note { grid-column: 1 / -1; grid-row: 2; }

	.vob-cp-where { grid-template-columns: 1fr; }
	.vob-cp-map { min-height: 240px; border-left: 0; border-top: 1px solid var(--rule); order: -1; }
	.vob-cp-where__btn { margin-top: 4px; }

	.vob-cp-docs { flex-direction: column; align-items: stretch; }

	/* sticky bar */
	.vob-cp-sticky {
		display: flex; align-items: center; gap: 14px;
		position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
		padding: 10px var(--gutter) calc(10px + env(safe-area-inset-bottom, 0px));
		background: var(--page);
		border-top: 1px solid var(--rule);
		box-shadow: 0 -8px 24px rgba(0, 0, 0, .1);
		transform: translateY(110%);
		visibility: hidden;
		transition: transform .25s ease, visibility .25s;
	}
	.vob-cp-sticky.is-visible { transform: none; visibility: visible; }
	.vob-cp-sticky__info { flex: 1; min-width: 0; display: flex; flex-direction: column; }
	.vob-cp-sticky__price { font: 700 24px/1 var(--font-display); letter-spacing: .4px; color: var(--pine); }
	.vob-cp-sticky__name { font: 700 18px/1.1 var(--font-display); letter-spacing: .6px; text-transform: uppercase; color: var(--pine); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	.vob-cp-sticky__sub { font-size: 12px; color: var(--muted); margin-top: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	.vob-cp-sticky__btn { flex: none; min-width: 48%; min-height: 48px; }
	body.tpl-camps .vob-footer { padding-bottom: 72px; }
}

@media (max-width: 420px) {
	.vob-cp-facts__big { font-size: 19px; }
	.vob-cp-alert__icon { display: none; }
}

@media print {
	.vob-cp-sticky, .vob-cp-facts__cta, .vob-cp-card__cta, .vob-cp-map { display: none !important; }
	.vob-cp-layout { grid-template-columns: 1fr; }
	.vob-cp-sec.is-collapsed .vob-cp-sec__body { display: block !important; }
}
