/**
 * Popcorn Camps — structural, token-only styles for the camp blocks.
 * Loaded only on pages that render a camp block (block.json "style").
 * Colours, radii, spacing and type come from themes/popcorn/assets/css/tokens.css.
 * Shared components (pc-btn, pc-card, pc-tag, pc-field…) are styled by the theme.
 * Logical properties only (RTL).
 */

/* ---------- Shared ---------- */
.pc-camp-list,
.pc-camp-hero,
.pc-camp-details,
.pc-camp-reserve,
.pc-camp-received,
.pc-notify {
	color: var(--color-ink);
}

.pc-camp-list [hidden],
.pc-camp-hero [hidden],
.pc-camp-reserve [hidden],
.pc-camp-received [hidden],
.pc-notify [hidden] {
	display: none !important;
}

.pc-camp-list .pc-btn,
.pc-camp-hero .pc-btn,
.pc-camp-reserve .pc-btn,
.pc-camp-received .pc-btn,
.pc-notify .pc-btn {
	box-sizing: border-box;
	max-inline-size: 100%;
}

.pc-camp-hero .pc-btn--block,
.pc-camp-reserve .pc-btn--block {
	display: flex;
	justify-content: center;
	inline-size: 100%;
	text-align: center;
}

.pc-camp-low-seats {
	color: var(--color-cta-strong);
	font-weight: 700;
	font-size: var(--font-size-small);
	line-height: var(--line-height-small);
	margin: 0;
}

.pc-hp {
	position: absolute;
	inset-inline-start: -9999px;
	inline-size: 1px;
	block-size: 1px;
	overflow: hidden;
}

/* ---------- Camp list ---------- */
.pc-camp-list__intro {
	color: var(--color-ink-muted);
	margin-block: var(--space-2) 0;
}

.pc-camp-filters {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-3) var(--space-6);
	margin-block: var(--space-5);
}

.pc-camp-filters__group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-2) var(--space-3);
}

.pc-camp-filters__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
}

.pc-pill {
	display: inline-flex;
	align-items: center;
	min-block-size: 44px;
	padding-inline: var(--space-4);
	border: 1.5px solid var(--color-ink-muted);
	border-radius: var(--radius-pill);
	background: var(--color-card);
	color: var(--color-ink);
	font-size: var(--font-size-small);
	font-weight: 600;
	text-decoration: none;
	transition: background-color var(--motion-fast), color var(--motion-fast);
}

.pc-pill:hover {
	border-color: var(--color-ink);
}

.pc-pill.is-active {
	background: var(--color-trust);
	border-color: var(--color-trust);
	color: var(--color-on-dark);
}

.pc-pill:focus-visible {
	outline: none;
	box-shadow: var(--focus-ring);
}

.pc-camp-list__grid {
	display: grid;
	gap: var(--space-5);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
}

.pc-camp-list__nomatch,
.pc-camp-list__empty {
	margin-block-start: var(--space-5);
	padding: var(--space-5);
}

.pc-camp-list__past {
	margin-block-start: var(--space-7);
	padding-block-start: var(--space-4);
	border-block-start: 1px solid var(--color-line);
	color: var(--color-ink-muted);
	font-size: var(--font-size-small);
}

.pc-camp-list__past summary {
	cursor: pointer;
	font-weight: 600;
	color: var(--color-ink);
}

.pc-camp-list__past-list {
	margin: var(--space-3) 0 0;
	padding-inline-start: var(--space-5);
}

.pc-camp-list__past-list li + li {
	margin-block-start: var(--space-1);
}

.pc-camp-list__past-list a {
	color: var(--color-ink);
}

.pc-camp-list__notify {
	margin-block-start: var(--space-5);
}

/* ---------- Camp card ---------- */
.pc-camp-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: 0;
}

.pc-camp-card__media {
	display: block;
	aspect-ratio: 4 / 3;
	background: var(--color-accent-tint);
	overflow: hidden;
}

.pc-camp-card__img,
.pc-camp-card__placeholder {
	display: block;
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
}

.pc-camp-card__body {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	padding: var(--space-4) var(--space-5) var(--space-5);
	flex: 1;
}

.pc-camp-card__tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	margin: 0;
}

.pc-camp-card__title {
	font-family: var(--font-heading);
	font-size: var(--font-size-h3);
	line-height: var(--line-height-h3);
	margin: 0;
}

.pc-camp-card__title a {
	color: inherit;
	text-decoration: none;
}

.pc-camp-card__title a:hover {
	text-decoration: underline;
}

.pc-camp-card__meta,
.pc-camp-card__closed {
	color: var(--color-ink-muted);
	font-size: var(--font-size-small);
	line-height: var(--line-height-small);
	margin: 0;
}

.pc-camp-card__closed {
	font-weight: 700;
	color: var(--color-ink);
}

.pc-camp-card__action {
	margin: auto 0 0;
	padding-block-start: var(--space-3);
}

/* ---------- Camp hero ---------- */
.pc-camp-hero {
	display: grid;
	gap: var(--space-6);
	align-items: start;
	margin-block: var(--space-5) var(--space-8);
}

@media (min-width: 900px) {
	.pc-camp-hero {
		grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
		gap: var(--space-8);
	}
}

.pc-camp-hero__main {
	border-radius: var(--radius-panel);
	overflow: hidden;
	background: var(--color-accent-tint);
	aspect-ratio: 4 / 3;
}

.pc-camp-hero__slide {
	margin: 0;
	block-size: 100%;
}

.pc-camp-hero__img {
	display: block;
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
}

.pc-camp-hero__thumbs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	margin-block-start: var(--space-3);
}

.pc-camp-hero__thumb {
	inline-size: 64px;
	block-size: 64px;
	padding: 0;
	border: 2px solid transparent;
	border-radius: var(--radius-input);
	overflow: hidden;
	background: var(--color-surface);
	cursor: pointer;
}

.pc-camp-hero__thumb img {
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
	display: block;
}

.pc-camp-hero__thumb[aria-pressed="true"] {
	border-color: var(--color-trust);
}

.pc-camp-hero__thumb:focus-visible {
	outline: none;
	box-shadow: var(--focus-ring);
}

.pc-camp-hero__info {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}

.pc-camp-hero__tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-2);
	margin: 0;
}

.pc-camp-hero__title {
	font-family: var(--font-heading);
	font-size: var(--font-size-hero);
	line-height: var(--line-height-hero);
	letter-spacing: var(--letter-spacing-hero);
	margin: 0;
}

.pc-camp-hero__lead {
	color: var(--color-ink-muted);
	margin: 0;
}

.pc-camp-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
	gap: var(--space-4);
	margin: 0;
	padding: var(--space-4) var(--space-5);
	background: var(--color-card);
	border: 1px solid var(--color-line);
	border-radius: var(--radius-card);
}

.pc-camp-facts dt {
	color: var(--color-ink-muted);
	margin: 0 0 var(--space-1);
}

.pc-camp-facts dd {
	margin: 0;
	font-weight: 600;
}

.pc-camp-facts__sub {
	font-weight: 400;
	font-size: var(--font-size-small);
	color: var(--color-ink-muted);
}

.pc-camp-hero__action {
	display: flex;
	flex-direction: column;
	gap: var(--space-3);
}

.pc-camp-hero__action p {
	margin: 0;
}

.pc-camp-hero__note,
.pc-camp-reserve__note {
	color: var(--color-ink-muted);
	font-size: var(--font-size-small);
	line-height: var(--line-height-small);
	margin: 0;
}

.pc-camp-hero__status {
	font-family: var(--font-heading);
	font-size: var(--font-size-h3);
	font-weight: 700;
}

/* ---------- Camp details ---------- */
.pc-camp-details {
	display: flex;
	flex-direction: column;
	gap: var(--space-8);
	margin-block: var(--space-8);
}

.pc-camp-build__content > * + * {
	margin-block-start: var(--space-3);
}

.pc-camp-build__list,
.pc-camp-checks {
	margin: var(--space-3) 0 0;
	padding-inline-start: var(--space-5);
}

.pc-camp-build__list li + li,
.pc-camp-checks li + li {
	margin-block-start: var(--space-1);
}

.pc-camp-values__heading {
	margin-block: var(--space-6) var(--space-3);
}

.pc-camp-values {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
}

.pc-camp-value {
	padding: var(--space-5);
}

.pc-camp-value__name {
	margin: var(--space-3) 0 var(--space-1);
	font-size: var(--font-size-h3);
	line-height: var(--line-height-h3);
}

.pc-camp-value__text {
	margin: 0;
	color: var(--color-ink-muted);
	font-size: var(--font-size-small);
}

/* Pink icon circle with a Prussian glyph (mask shapes carry no colour). */
.pc-camp-icon {
	display: inline-block;
	inline-size: 48px;
	block-size: 48px;
	border-radius: var(--radius-round);
	background: var(--color-nurture);
	position: relative;
}

.pc-camp-icon::after {
	content: "";
	position: absolute;
	inset: 12px;
	background: var(--color-ink);
	-webkit-mask: var(--pc-icon) center / contain no-repeat;
	mask: var(--pc-icon) center / contain no-repeat;
}

.pc-camp-icon--search { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E"); }
.pc-camp-icon--heart { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M12 20s-7-4.5-7-10a4 4 0 0 1 7-2.6A4 4 0 0 1 19 10c0 5.5-7 10-7 10Z'/%3E%3C/svg%3E"); }
.pc-camp-icon--sprout { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21v-9'/%3E%3Cpath d='M12 12C12 8 9 5 4 5c0 5 3 7 8 7Z'/%3E%3Cpath d='M12 14c0-4 3-7 8-7 0 5-3 7-8 7Z'/%3E%3C/svg%3E"); }
.pc-camp-icon--star { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='m12 3 2.8 5.7 6.2.9-4.5 4.4 1 6.2L12 17.3 6.5 20.2l1-6.2L3 9.6l6.2-.9Z'/%3E%3C/svg%3E"); }
.pc-camp-icon--users { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20c.8-3.6 3.4-5.5 6.5-5.5s5.7 1.9 6.5 5.5'/%3E%3Cpath d='M16 4.8a3.5 3.5 0 0 1 0 6.4M18 14.8c1.8.7 3 2.4 3.5 5.2'/%3E%3C/svg%3E"); }
.pc-camp-icon--shield { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M12 3 5 6v5c0 4.5 3 8 7 10 4-2 7-5.5 7-10V6Z'/%3E%3C/svg%3E"); }
.pc-camp-icon--calendar { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linecap='round'%3E%3Crect x='4' y='5' width='16' height='15' rx='2'/%3E%3Cpath d='M8 3v4M16 3v4M4 10h16'/%3E%3C/svg%3E"); }
.pc-camp-icon--phone { --pc-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.2' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2Z'/%3E%3C/svg%3E"); }

.pc-camp-info__grid {
	display: grid;
	gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
	margin-block-start: var(--space-4);
}

.pc-camp-info__item,
.pc-camp-rhythm {
	padding: var(--space-5);
}

.pc-camp-info__item h3,
.pc-camp-rhythm h3 {
	margin: 0 0 var(--space-2);
	font-size: var(--font-size-h3);
	line-height: var(--line-height-h3);
}

.pc-camp-info__item p {
	margin: 0;
}

.pc-camp-info__item p + p,
.pc-camp-info__item h4 {
	margin-block-start: var(--space-2);
}

.pc-camp-rhythm {
	margin-block-start: var(--space-4);
}

/* Timeline (camp page daily rhythm and the landing page "A day at camp"). */
.pc-timeline {
	list-style: none;
	margin: 0;
	padding: 0;
	position: relative;
}

.pc-timeline__item,
.pc-timeline > li {
	position: relative;
	display: grid;
	grid-template-columns: minmax(5.5rem, auto) 1fr;
	gap: var(--space-4);
	padding-block: var(--space-2);
	padding-inline-start: var(--space-5);
	border-inline-start: 2px solid var(--color-accent);
}

.pc-timeline__item::before,
.pc-timeline > li::before {
	content: "";
	position: absolute;
	inset-inline-start: -7px;
	inset-block-start: calc(var(--space-2) + 6px);
	inline-size: 12px;
	block-size: 12px;
	border-radius: var(--radius-round);
	background: var(--color-accent);
}

.pc-timeline__time {
	font-weight: 700;
}

/* ---------- Reservation form ---------- */
.pc-camp-reserve {
	scroll-margin-block-start: var(--space-9);
	margin-block: var(--space-8);
}

.pc-camp-reserve__panel {
	max-inline-size: 720px;
	margin-inline: auto;
	padding: var(--space-6) var(--space-5);
}

@media (min-width: 640px) {
	.pc-camp-reserve__panel {
		padding: var(--space-7) var(--space-8);
	}
}

.pc-camp-reserve__heading {
	margin: 0;
}

.pc-camp-reserve__intro {
	color: var(--color-ink-muted);
	margin-block: var(--space-2) var(--space-5);
}

.pc-reserve-form,
.pc-notify-form {
	display: flex;
	flex-direction: column;
	gap: var(--space-5);
}

.pc-reserve-form__group {
	border: 0;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	min-inline-size: 0;
}

.pc-reserve-form__legend {
	font-family: var(--font-heading);
	font-size: var(--font-size-h3);
	line-height: var(--line-height-h3);
	font-weight: 700;
	padding: 0;
	margin-block-end: var(--space-2);
}

.pc-child {
	padding-block-start: var(--space-5);
	border-block-start: 1px solid var(--color-line);
}

.pc-child__optional {
	font-family: var(--font-body);
	font-size: var(--font-size-small);
	font-weight: 400;
	color: var(--color-ink-muted);
}

.pc-js .pc-child__optional {
	display: none;
}

.pc-js .pc-child[data-optional]:not(.is-open) {
	display: none;
}

.pc-reserve-form__children {
	display: flex;
	flex-direction: column;
	gap: var(--space-5);
}

.pc-reserve-form input[type="text"],
.pc-reserve-form input[type="tel"],
.pc-reserve-form input[type="email"],
.pc-reserve-form input[type="date"],
.pc-reserve-form textarea,
.pc-notify-form input[type="text"],
.pc-notify-form input[type="tel"],
.pc-notify-form select {
	inline-size: 100%;
	max-inline-size: 100%;
	box-sizing: border-box;
}

.pc-reserve-form [dir="ltr"],
.pc-notify-form [dir="ltr"] {
	text-align: start;
}

[dir="rtl"] .pc-reserve-form input[dir="ltr"],
[dir="rtl"] .pc-notify-form input[dir="ltr"] {
	text-align: end;
}

.pc-field--check {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--space-1) var(--space-3);
	align-items: start;
}

.pc-field--check input {
	inline-size: 22px;
	block-size: 22px;
	margin-block-start: 2px;
}

.pc-field--check .pc-field__error {
	grid-column: 2;
}

.pc-reserve-form [aria-invalid="true"],
.pc-notify-form [aria-invalid="true"] {
	border-color: var(--color-error);
}

.pc-reserve-short {
	padding: var(--space-5);
	border: 2px solid var(--color-trust);
}

.pc-reserve-short p {
	margin: 0;
}

.pc-reserve-form__submit .pc-btn,
.pc-notify-form .pc-btn {
	min-block-size: 52px;
}

.pc-reserve-form button[disabled] {
	opacity: .7;
	cursor: progress;
}

/* ---------- Received page ---------- */
.pc-camp-received {
	margin-block: var(--space-7) var(--space-9);
}

.pc-camp-received__panel {
	max-inline-size: 680px;
	margin-inline: auto;
	padding: var(--space-7) var(--space-5);
	text-align: center;
}

.pc-camp-received__panel > * {
	margin-block: 0;
}

.pc-camp-received__panel > * + * {
	margin-block-start: var(--space-4);
}

.pc-camp-received__character {
	display: flex;
	justify-content: center;
}

.pc-camp-received__heading {
	font-family: var(--font-heading);
	font-size: var(--font-size-h1);
	line-height: var(--line-height-h1);
}

.pc-camp-received__ref {
	display: inline-block;
	padding: var(--space-4) var(--space-6);
	background: var(--color-accent-tint);
	border-radius: var(--radius-card);
}

.pc-camp-received__ref p {
	margin: 0;
}

.pc-camp-received__code {
	font-family: var(--font-heading);
	font-size: var(--font-size-display);
	line-height: var(--line-height-display);
	font-weight: 700;
	letter-spacing: .08em;
}

.pc-steps {
	text-align: start;
	margin-inline: auto;
	max-inline-size: 520px;
	padding-inline-start: var(--space-5);
}

.pc-steps li + li {
	margin-block-start: var(--space-2);
}

.pc-camp-received .pc-cluster {
	justify-content: center;
}

/* ---------- Notify me ---------- */
.pc-notify {
	scroll-margin-block-start: var(--space-9);
}

.pc-notify__panel {
	display: grid;
	gap: var(--space-5);
	padding: var(--space-6) var(--space-5);
	align-items: start;
}

.pc-notify--section .pc-notify__panel {
	background: var(--color-accent-tint);
	border-radius: var(--radius-panel);
}

@media (min-width: 800px) {
	.pc-notify--section .pc-notify__panel {
		grid-template-columns: auto 1fr;
		padding: var(--space-8);
		gap: var(--space-7);
	}
}

.pc-notify__character:empty {
	display: none;
}

.pc-notify__heading {
	margin: 0;
}

.pc-notify__text {
	margin: 0;
	color: var(--color-ink-muted);
}

.pc-notify-form__fields {
	display: grid;
	gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
}

.pc-notify--card .pc-notify-form__fields {
	grid-template-columns: 1fr;
}

/* ---------- Landing page (themes/popcorn/patterns/camps-landing.php) ---------- */
.pc-camps-hero {
	display: grid;
	gap: var(--space-6);
	align-items: center;
}

@media (min-width: 900px) {
	.pc-camps-hero {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
		gap: var(--space-8);
	}
}

.pc-camps-hero .pc-tag--tilt {
	display: inline-block;
}

.pc-camps-hero__media img {
	border-radius: var(--radius-panel);
	background: var(--color-accent-tint);
	inline-size: 100%;
	block-size: auto;
}

.pc-camps-hero__actions {
	gap: var(--space-4);
}

.pc-camps-card {
	padding: var(--space-5);
}

.pc-camps-card h3 {
	margin-block: var(--space-3) var(--space-1);
}

.pc-camps-card p {
	margin: 0;
	color: var(--color-ink-muted);
}

.pc-camps-landing .pc-camp-icon {
	margin-block-end: var(--space-1);
}

.pc-camps-timeline {
	list-style: none;
	padding: var(--space-5) var(--space-6);
	margin: 0;
}

.pc-camps-timeline > li {
	grid-template-columns: 1fr;
}

.pc-camps-quotes {
	margin-block-start: var(--space-5);
}

.pc-camps-quote {
	margin: 0;
	padding: var(--space-5);
	border-inline-start: 4px solid var(--color-accent);
}

.pc-camps-quote cite {
	display: block;
	margin-block-start: var(--space-2);
	color: var(--color-ink-muted);
	font-style: normal;
	font-size: var(--font-size-small);
}

.pc-camps-faq .pc-faq {
	background: var(--color-card);
	border: 1px solid var(--color-line);
	border-radius: var(--radius-card);
	padding: var(--space-4) var(--space-5);
	margin-block-start: var(--space-3);
}

.pc-camps-faq .pc-faq summary {
	font-weight: 700;
	cursor: pointer;
}

.pc-camps-faq .pc-faq p {
	margin-block: var(--space-3) 0;
	color: var(--color-ink-muted);
}

.pc-camps-steps {
	counter-reset: pc-step;
}

.pc-camps-card .pc-camps-step__num {
	/* 20px bold counts as large text: Prussian on Pink (4.0:1) passes AA. */
	font-size: var(--font-size-h3);
	line-height: 1;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 40px;
	block-size: 40px;
	border-radius: var(--radius-round);
	background: var(--color-nurture);
	color: var(--color-ink);
	font-family: var(--font-heading);
	font-weight: 700;
}
