/* Mobile pass: shorter pages, swipeable project rows, compact calendar. */
@media (max-width: 640px) {
	:root { --section: 48px; }
	.section-head { margin-bottom: 20px; }
	.section-head--row { gap: 12px; }
	.section-title { font-size: 26px; }

	/* Hero: smaller illustration, tighter spacing. */
	.hero { padding-top: 20px; padding-bottom: 8px; }
	.hero__grid { gap: 20px; }
	.hero__art { max-width: 230px; margin-inline: auto; }
	.hero__lead { font-size: 16px; line-height: 1.8; }
	.tracks { gap: 10px; }
	.facts { margin-top: 20px; }
	.facts li { padding: 11px 14px; }

	/* Service cards. */
	.duo { gap: 14px; }
	.duo__card { padding: 22px 18px; gap: 10px; }
	.duo__card h3 { font-size: 22px; }
	.duo__card p { font-size: 15px; }
	.ticks { gap: 6px; }
	.ticks li { font-size: 14.5px; }
	.combo { padding: 20px 16px; }

	/* Project rows on home and "related projects": swipe sideways instead of a long stack. */
	.work .bento, .related .grid-projects {
		display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
		margin-inline: calc(var(--gutter) * -1); padding: 4px var(--gutter) 14px;
		scrollbar-width: none; -webkit-overflow-scrolling: touch;
	}
	.work .bento::-webkit-scrollbar, .related .grid-projects::-webkit-scrollbar { display: none; }
	.work .bento > .pcard, .related .grid-projects > .pcard { flex: 0 0 82%; scroll-snap-align: center; min-width: 0; }
	.work .bento .pcard__media, .related .grid-projects .pcard__media { aspect-ratio: 4 / 3; }
	.related { margin-bottom: 24px; }

	/* Process: 2 × 2 compact tiles. */
	.steps { grid-template-columns: 1fr 1fr; gap: 10px; }
	.step { padding: 16px 14px; gap: 6px; }
	.step h3 { font-size: 17px; }
	.step p { font-size: 13.5px; line-height: 1.65; }

	/* Upcoming fairs on home: swipe row. */
	.upcoming__grid {
		display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory;
		margin-inline: calc(var(--gutter) * -1); padding: 4px var(--gutter) 14px; scrollbar-width: none;
	}
	.upcoming__grid::-webkit-scrollbar { display: none; }
	.upcoming__grid > * { flex: 0 0 78%; scroll-snap-align: center; }
	.ev-card { padding: 18px; }
	.ev-card__date strong { font-size: 21px; }

	/* Calendar list: one compact card per fair; the title already opens the fair page with its own CTA. */
	.ev-list { gap: 8px; }
	.ev { padding: 13px 14px; gap: 4px; border-radius: 14px; }
	.ev__date strong, .ev--multi .ev__date strong { font-size: 15px; }
	.ev__date span { font-size: 12.5px; }
	.ev__tags { margin-bottom: 0; }
	.ev__title { font-size: 15.5px; line-height: 1.5; }
	.ev__place { display: block; font-size: 13px; margin-top: 2px; }
	.ev__place .icon { display: inline-block; vertical-align: -2px; margin: 0; margin-inline-end: 4px; }
	.ev__actions { justify-content: flex-start; gap: 10px; }
	.ev__actions .btn { display: none; }
	.ev__link { font-size: 12.5px; }
	.calendar__month-title { font-size: 20px; margin: 20px 0 10px; }

	/* Page heads and single project. */
	.page-hero { padding-block: 28px 24px; }
	.page-hero h1, .single-project h1 { font-size: 30px; line-height: 1.2; }
	.specs > div { padding: 12px 14px; }
	.gallery { gap: 8px; }

	/* CTA band. */
	.cta-band { padding-bottom: 36px; }
	.cta-band__box { padding: 26px 18px; }
	.cta-band h2 { font-size: 24px; }
	.cta-band__actions { gap: 10px; }
}
