/**
 * Hero (mockup port step 2, design/BRIEF.md §5): split layout, headline
 * left, dish stage right with a 5-plate slider. M1 entrance animation
 * (word stagger, image scale+fade, CTAs pop last) lives here too --
 * triggered by motion.js adding `.bcc-hero-in` to <html>.
 */
.bcc-hero {
	background: var(--bcc-purple-900);
	color: #fff;
	overflow: hidden;
}

.bcc-hero__wrap {
	display: grid;
	grid-template-columns: 1.05fr .95fr;
	gap: 30px;
	align-items: center;
	width: min(1280px, 100% - 40px);
	margin-inline: auto;
	min-height: min(78vh, 760px);
	padding-block: 64px 48px;
}

.bcc-hero__kicker {
	font-family: var(--bcc-font-mono);
	font-size: 14px;
	letter-spacing: .03em;
	color: var(--bcc-gold-400);
	margin: 0 0 20px;
}

.bcc-hero__headline {
	font-family: var(--bcc-font-display);
	font-weight: 900;
	font-size: clamp(4.125rem, 9.2vw, 9.375rem);
	line-height: .88;
	text-transform: uppercase;
	margin: 0;
	color: #fff;
}

.bcc-hero__line {
	display: block;
	overflow: hidden;
	padding-top: .12em;
	margin-top: -.12em;
}

/**
 * Explicit, not inherited from .bcc-hero__headline's color:#fff above:
 * a live-render check (2026-09-20, Playwright against staging) found
 * this line's text rendering purple-on-purple -- effectively invisible
 * -- while the accent line rendered correctly. Something in the page's
 * cascade overrides the *inherited* heading color on this specific
 * nested span without touching a directly-declared one, the same
 * pattern already fixed for headings elsewhere in this plugin.
 */
.bcc-hero__line span {
	color: #fff;
}

.bcc-hero__line--accent {
	color: var(--bcc-gold-400);
}

.bcc-hero__line--accent span {
	color: var(--bcc-gold-400);
}

.bcc-hero__lede {
	font-size: 22px;
	max-width: 540px;
	margin: 24px 0 30px;
	color: #E8E1F3;
}

.bcc-hero__ctas {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
}

.bcc-hero__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	padding: 0 26px;
	border: var(--bcc-border-width) solid transparent;
	font-family: var(--bcc-font-display);
	font-weight: 800;
	font-size: 22px;
	letter-spacing: .05em;
	text-transform: uppercase;
	text-decoration: none;
	transition: transform .2s cubic-bezier(.2,.8,.2,1);
}

.bcc-hero__cta:hover {
	transform: translateY(-2px);
}

.bcc-hero__cta--primary {
	background: var(--bcc-gold-400) !important;
	color: var(--bcc-purple-900) !important;
	box-shadow: 0 6px 0 -1px rgb(0 0 0 / .18);
}

.bcc-hero__cta--ghost {
	background: transparent !important;
	border-color: var(--bcc-cream);
	color: var(--bcc-cream) !important;
}

/**
 * Why order direct instead of a delivery app (AUDIT_DESIGN_FUNNEL_
 * Comptoir.md D5), sitting right under the CTAs per that same ask.
 */
.bcc-hero__reasons {
	margin: 14px 0 0;
	color: #E8E1F3;
	font-size: 14px;
}

.bcc-hero__facts {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 22px;
	margin-top: 14px;
	color: var(--bcc-gold-400);
	font-family: var(--bcc-font-mono);
	font-size: 14px;
}

.bcc-hero__facts span::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	background: var(--bcc-gold-400);
	margin-right: 8px;
	vertical-align: 1px;
}

/* ===== Dish stage / slider (design/BRIEF.md §5) ===== */

.bcc-hero__stage {
	position: relative;
	justify-self: center;
	width: min(560px, 100%);
	aspect-ratio: 1;
}

.bcc-hero__slides {
	position: absolute;
	inset: 0;
}

.bcc-hero__plate {
	position: absolute;
	inset: 6%;
	opacity: 0;
	transform: scale(.62) rotate(-90deg);
	transition: opacity .5s ease, transform .5s cubic-bezier(.5,0,.75,0);
	pointer-events: none;
}

.bcc-hero__plate.is-on {
	opacity: 1;
	transform: none;
	transition: opacity .6s ease .15s, transform 1.1s cubic-bezier(.2,.8,.2,1) .15s;
}

.bcc-hero__plate.is-out {
	opacity: 0;
	transform: scale(.7) rotate(70deg);
}

.bcc-hero__spin {
	width: 100%;
	height: 100%;
	animation: bcc-hero-plate-spin 90s linear infinite;
	border-radius: 50% !important;
	overflow: hidden;
	position: relative;
}

.bcc-hero__art {
	width: 100%;
	height: 100%;
	display: block;
}

.bcc-hero__art svg,
.bcc-hero__art img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

@keyframes bcc-hero-plate-spin {
	to { transform: rotate(360deg); }
}


.bcc-hero__tag {
	position: absolute;
	z-index: 3;
	left: -2%;
	bottom: 10%;
	background: var(--bcc-quinoa);
	color: var(--bcc-ink);
	padding: 14px 18px;
	border: var(--bcc-border-width) solid var(--bcc-ink);
	box-shadow: 6px 6px 0 var(--bcc-gold-400);
	animation: bcc-hero-tag-in .8s 1.1s ease both;
}

.bcc-hero__tag.is-swap {
	animation: bcc-hero-tag-swap .6s cubic-bezier(.2,.8,.2,1);
}

@keyframes bcc-hero-tag-in {
	from {
		opacity: 0;
		transform: translateY(16px);
	}
}

@keyframes bcc-hero-tag-swap {
	from {
		opacity: 0;
		transform: translateY(14px);
	}
}

.bcc-hero__tag b {
	display: block;
	font-family: var(--bcc-font-display);
	font-weight: 900;
	font-size: 30px;
	text-transform: uppercase;
	line-height: 1;
}

.bcc-hero__hctl {
	position: absolute;
	left: 50%;
	bottom: -6%;
	transform: translateX(-50%);
	display: flex;
	align-items: center;
	gap: 12px;
	z-index: 4;
}

.bcc-hero__arrow {
	width: 42px;
	height: 42px;
	border: var(--bcc-border-width) solid var(--bcc-cream);
	border-radius: 0 !important;
	background: transparent !important;
	color: var(--bcc-cream) !important;
	font-size: 18px;
	cursor: pointer;
	transition: background .2s, color .2s;
}

.bcc-hero__arrow:hover {
	background: var(--bcc-gold-400) !important;
	color: var(--bcc-purple-900) !important;
	border-color: var(--bcc-gold-400);
}

.bcc-hero__dots {
	display: flex;
	gap: 6px;
}

.bcc-hero__dots button {
	width: 34px;
	height: 6px;
	border: 0;
	border-radius: 0 !important;
	padding: 0;
	background: rgb(246 241 228 / .3) !important;
	cursor: pointer;
	position: relative;
	overflow: hidden;
}

.bcc-hero__dots button i {
	position: absolute;
	inset: 0;
	background: var(--bcc-gold-400) !important;
	transform: scaleX(0);
	transform-origin: left;
}

.bcc-hero__dots button.is-on i {
	animation: bcc-hero-progress var(--bcc-hero-dur, 6s) linear forwards;
}

.bcc-hero__dots.is-paused button.is-on i {
	animation-play-state: paused;
}

@keyframes bcc-hero-progress {
	to { transform: scaleX(1); }
}

/* Floating ingredient pieces (design/BRIEF.md §5) */
.bcc-hero__float {
	position: absolute;
	width: 64px;
	height: 64px;
	pointer-events: none;
	will-change: transform;
}

.bcc-hero__float svg {
	width: 100%;
	height: 100%;
	animation: bcc-hero-bob 6s ease-in-out infinite;
}

@keyframes bcc-hero-bob {
	50% { transform: translateY(-12px) rotate(12deg); }
}

/**
 * Marquee word styling only -- .bcc-marquee/.bcc-marquee__track
 * themselves (overflow, track layout, the M5 scroll animation) are
 * owned by motion.css so there's exactly one definition of that
 * animation, not two competing ones.
 */
.bcc-marquee__word {
	font-family: var(--bcc-font-display);
	font-weight: 900;
	font-size: 34px;
	text-transform: uppercase;
	color: var(--bcc-gold-400);
}

.bcc-marquee__word--outline {
	color: transparent;
	-webkit-text-stroke: 1.5px var(--bcc-gold-400);
}

/* ===== "Comment ça marche" strip (design/BRIEF.md §4.6) ===== */

.bcc-how {
	background: var(--bcc-cream);
	color: var(--bcc-ink);
	border-bottom: var(--bcc-border-width) solid var(--bcc-ink);
}

.bcc-how__wrap {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	width: min(1280px, 100% - 40px);
	margin-inline: auto;
}

.bcc-how__step {
	padding: 30px 24px;
	border-left: var(--bcc-border-width) solid var(--bcc-ink);
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.bcc-how__step:last-child {
	border-right: var(--bcc-border-width) solid var(--bcc-ink);
}

.bcc-how__step b {
	font-family: var(--bcc-font-display);
	font-weight: 900;
	font-size: 48px;
	line-height: 1;
	color: var(--bcc-purple-900);
}

.bcc-how__step h3 {
	margin: 0;
	font-family: var(--bcc-font-display) !important;
	font-weight: 800;
	font-size: 26px;
	text-transform: uppercase;
	color: var(--bcc-ink) !important;
}

.bcc-how__step p {
	margin: 0;
	color: var(--bcc-muted);
	font-size: 16px;
}

@media (width < 860px) {
	.bcc-how__wrap {
		grid-template-columns: 1fr 1fr;
	}

	.bcc-how__step {
		border-bottom: var(--bcc-border-width) solid var(--bcc-ink);
	}
}

/* No-JS fallback (critical): stays fully visible until motion.php's early
   inline script confirms JS is running by adding `.js` to <html>. */
html:not(.js) .bcc-hero__line span,
html:not(.js) .bcc-hero__plate,
html:not(.js) .bcc-hero__ctas {
	opacity: 1;
	transform: none;
}

html:not(.js) .bcc-hero__plate {
	position: static;
	display: none;
}

html:not(.js) .bcc-hero__plate:first-child {
	display: block;
}

@media (prefers-reduced-motion: no-preference) {
	.js .bcc-hero__line span {
		opacity: 0;
		transform: translateY(108%);
		transition: transform 1s cubic-bezier(.2,.7,.1,1);
	}

	.js .bcc-hero__line--accent span {
		transition-delay: .12s;
	}

	.js.bcc-hero-in .bcc-hero__line span {
		opacity: 1;
		transform: none;
	}

	.js .bcc-hero__lede,
	.js .bcc-hero__ctas,
	.js .bcc-hero__reasons,
	.js .bcc-hero__facts {
		opacity: 0;
		transform: translateY(16px);
		transition: opacity .8s cubic-bezier(.2,.8,.2,1), transform .8s cubic-bezier(.2,.8,.2,1);
	}

	.js .bcc-hero__ctas {
		transition-delay: .15s;
	}

	.js .bcc-hero__reasons {
		transition-delay: .22s;
	}

	.js .bcc-hero__facts {
		transition-delay: .3s;
	}

	.js.bcc-hero-in .bcc-hero__lede,
	.js.bcc-hero-in .bcc-hero__ctas,
	.js.bcc-hero-in .bcc-hero__reasons,
	.js.bcc-hero-in .bcc-hero__facts {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.bcc-hero__spin,
	.bcc-hero__float svg,
	.bcc-marquee__track {
		animation: none;
	}

	.bcc-hero__plate {
		position: static;
		opacity: 1;
		transform: none;
		display: none;
	}

	.bcc-hero__plate.is-on {
		display: block;
	}
}

@media (width < 900px) {
	.bcc-hero__wrap {
		grid-template-columns: 1fr;
		padding-block: 34px 30px;
		min-height: 0;
		text-align: center;
	}

	.bcc-hero__lede {
		font-size: 19px;
	}

	.bcc-hero__ctas,
	.bcc-hero__facts {
		justify-content: center;
	}

	.bcc-hero__stage {
		width: min(380px, 92%);
		order: -1;
		margin-inline: auto;
	}

	.bcc-hero__tag {
		bottom: 2%;
		padding: 10px 12px;
	}

	.bcc-hero__tag b {
		font-size: 22px;
	}
}
