/* ============================================================
   Bateau Lavoir — frontend
   ------------------------------------------------------------
   Picks up the brand design tokens (--sans, --serif, --jaune,
   --orange, --bleu-fonce, --rule) when the active theme defines
   them; otherwise falls back to system fonts and reasonable
   colours derived from the official charte.
   ============================================================ */

.blm-platdujour,
.blm-platdujour-table,
.blm-carte,
.blm-info {
	--blm-sans:        var(--sans, 'Barlow', 'Helvetica Neue', Helvetica, Arial, sans-serif);
	--blm-serif:       var(--serif, 'Cabin', 'Segoe UI', system-ui, -apple-system, sans-serif);
	--blm-orange:      var(--orange, #DC6A02);
	--blm-creme:       var(--creme, #EBEBD8);
	--blm-creme-deep:  var(--creme-deep, #E2E2C8);
	--blm-jaune:       var(--jaune, #FFCC78);
	--blm-bleu:        var(--bleu-fonce, #003B5E);
	--blm-bleu-soft:   var(--bleu-medium, #395682);
	--blm-ink-soft:    var(--ink-soft, #1a3f57);
	--blm-rule:        var(--rule, rgba(0, 59, 94, 0.16));
	--blm-rule-strong: var(--rule-strong, rgba(0, 59, 94, 0.35));
	/* Rules tinted for a dark surface (creme on bleu) */
	--blm-rule-on-dark: rgba(235, 235, 216, 0.20);

	color: var(--blm-bleu);
	font-family: var(--blm-serif);
}

/* ============================================================
   Plat du jour — dark surface card
   ============================================================ */
.blm-platdujour {
	background: var(--blm-bleu);
	color: var(--blm-creme);
	border-radius: 6px;
	padding: clamp(20px, 5vw, 56px);

	display: flex;
	flex-direction: column;
	gap: 28px;
}

/* Header: stacked on mobile, 2-column on desktop (lead | meta) */
.blm-platdujour__header {
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px;
}

.blm-platdujour__lead {
	display: flex;
	flex-direction: column;
	/* No gap — child margins (e.g. on .blm-platdujour__week) govern spacing
	   so the values copied from the reference inspector apply 1:1. */
}

.blm-platdujour__brand {
	margin: 0;
	font-family: var(--blm-sans);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.22em;
	font-size: 12px;
	color: var(--blm-jaune);
}

.blm-platdujour__week {
	margin: 10px 0 6px;
	font-family: var(--blm-sans);
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 0.92;
	text-transform: uppercase;
	font-size: clamp(36px, 4vw, 56px);
	color: var(--blm-creme);
}

.blm-platdujour__intro {
	margin: 0;
	max-width: 520px;
	opacity: 0.75;
	font-family: var(--blm-serif);
	font-size: clamp(16px, 1.2vw, 16px);
	line-height: 1.55;
	color: var(--blm-creme);
}
.blm-platdujour__intro > * + * { margin-top: 0.5em; }
.blm-platdujour__intro p:first-child { margin-top: 0; }

.blm-platdujour__meta {
	margin: 0;
	padding-top: 12px;
	border-top: 1px solid var(--blm-rule-on-dark);
	display: flex;
	flex-wrap: wrap;
	gap: 4px 16px;
	align-items: baseline;
}

.blm-platdujour__availability {
	font-family: var(--blm-sans);
	font-size: 13px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--blm-jaune);
	text-align: right;
}

/* Days grid */
.blm-platdujour__days {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: 28px;
}

.blm-platdujour__day {
	display: flex;
	flex-direction: column;
	padding-bottom: 24px;
	border-bottom: 1px dashed var(--blm-rule-on-dark);
}

.blm-platdujour__day-header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	margin-bottom: 16px;
}

.blm-platdujour__day-label {
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--blm-jaune);
}

.blm-platdujour__day-date {
	font-family: var(--blm-sans);
	font-size: 11px;
	opacity: 0.55;
	font-variant-numeric: tabular-nums;
}

.blm-platdujour__dish-name {
	margin: 0 0 10px;
	font-family: var(--blm-serif);
	font-weight: 500;
	font-size: 22px;
	line-height: 1.15;
	color: var(--blm-creme);
}

.blm-platdujour__dish-desc {
	margin: 0;
	font-size: 14px;
	line-height: 1.5;
	opacity: 0.7;
}

.blm-platdujour__day-price {
	display: inline-block;
	margin-top: 12px;
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	font-variant-numeric: tabular-nums;
	color: var(--blm-orange);
	white-space: nowrap;
}

/* Side-by-side header from tablet up (lead | meta) */
@media (min-width: 720px) {
	.blm-platdujour__header {
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: start;
		gap: 48px;
	}
	.blm-platdujour__meta {
		justify-self: end;
		text-align: right;
		border-top: 0;
		padding-top: 0;
	}	
}

/* Tablet only: 2-up day grid (720–1023) */
@media (min-width: 720px) and (max-width: 1023px) {
	.blm-platdujour__days {
		grid-template-columns: repeat(2, 1fr);
		column-gap: 48px;
		row-gap: 36px;
	}
	.blm-platdujour__day {
		padding: 0 24px 24px 0;
		border-right: 1px solid var(--blm-rule-on-dark);
	}
	.blm-platdujour__day:nth-child(2n) {
		padding-right: 0;
		padding-left: 24px;
		border-right: 0;
	}
	.blm-platdujour__day:last-child:nth-child(2n+1) {
		border-right: 0;
		padding-right: 0;
	}
}

/* Wide desktop: 5 days side by side, single row */
@media (min-width: 1024px) {
	.blm-platdujour__days {
		grid-template-columns: repeat(5, 1fr);
		gap: 0;
		border-top: 1px solid rgba(255, 204, 120, 0.35);
	}
	.blm-platdujour__day {
		padding: 28px 24px;
		border-right: 1px solid rgba(255, 204, 120, 0.35);
		border-bottom: 0;
	}
	/* Drop the right divider on the rightmost cell (every 5th, and on the
	   last child if it doesn't sit on column 5). Padding stays symmetric. */
	.blm-platdujour__day:nth-child(5n),
	.blm-platdujour__day:last-child {
		border-right: 0;
	}
}

/* ============================================================
   Plat du jour — table layout (alternative shortcode)
   ============================================================ */
.blm-platdujour-table {
	background: var(--blm-creme-deep);
	padding: clamp(20px, 5vw, 56px);
	border-radius: 6px;
	color: var(--blm-bleu);
	font-family: var(--blm-serif);
}

.blm-platdujour-table__header {
	align-items: baseline;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 16px;
	margin-bottom: 28px;
	padding-bottom: 20px;
	border-bottom: 2px solid var(--blm-bleu);
}

.blm-platdujour-table__lead {
	min-width: 0;
}

.blm-platdujour-table__eyebrow {
	display: inline-block;
	font-family: var(--blm-sans);
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 0.92;
	text-transform: uppercase;
	font-size: clamp(30px, 3.5vw, 44px);
	color: var(--blm-bleu);
}

.blm-platdujour-table__title {
	font-family: var(--blm-sans);
	font-weight: 800;
	letter-spacing: -0.015em;
	line-height: 0.92;
	text-transform: uppercase;
	font-size: clamp(30px, 3.5vw, 44px);
	margin: 10px 0 4px;
	color: var(--blm-bleu);
}

.blm-platdujour-table__section-title {
	font-family: var(--blm-sans);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.22em;
	font-size: 12px;
	margin: 0;
	color: var(--blm-orange);
}

td {
    background-color: transparent !important;
}

tr {
    border-bottom: 1px dashed var(--blm-rule-strong);
}

.blm-platdujour-table__section-title-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	flex-wrap: wrap;
	margin: 0 0 -18px;
}

.blm-platdujour-table__heading-row {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 12px;
}

.blm-platdujour-table .blm-platdujour-table__hours-info {
	margin: 8px 0 0;
	font-family: var(--blm-sans);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--blm-bleu);
	opacity: 1;
}

.blm-platdujour-table__cta {
	background: var(--blm-bleu);
	color: var(--blm-creme) !important;
	padding: 12px 22px;
	border-radius: 999px;
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	white-space: nowrap;
	flex-shrink: 0;
	border-bottom: 2px solid transparent;
	transition: background .2s cubic-bezier(.2,.7,.2,1), transform .2s cubic-bezier(.2,.7,.2,1);
	text-decoration: none;
}

.blm-platdujour-table__cta:hover {
	background: var(--blm-orange);
	color: var(--blm-creme);
	transform: translateY(-1px);
	border-bottom-color: transparent;
}

.blm-platdujour-table table {
	width: 100%;
	border-collapse: collapse;
	font-family: var(--blm-sans);
}

.blm-platdujour-table thead tr {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--blm-bleu-soft);
	font-weight: 700;
}
.blm-platdujour-table th {
	text-align: left;
	padding: 10px 14px;
	font-weight: 700;
	border: 0;
}
.blm-platdujour-table thead:first-child tr:first-child th,
.blm-platdujour-table thead:first-child tr:first-child td {
	border-block-start: 0;
	border-top: 0;
}
.blm-platdujour-table th:first-child {
	padding-left: 0;
	width: 90px;
}
.blm-platdujour-table th:nth-child(2) {
	width: 80px;
}
.blm-platdujour-table th:last-child {
	text-align: right;
	padding-right: 0;
	width: 80px;
}

.blm-platdujour-table tbody tr {
	border: 0;
}

.blm-platdujour-table td {
	padding: 18px 14px;
	vertical-align: middle;
	text-align: left;
	border: 0;
	border-bottom: 1px dashed var(--blm-rule-strong);
}
.blm-platdujour-table td:first-child {
	padding-left: 0;
	font-weight: 700;
	color: var(--blm-bleu);
	font-size: 14px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.blm-platdujour-table td:nth-child(2) {
	font-size: 13px;
	color: var(--blm-ink-soft);
	font-variant-numeric: tabular-nums;
}
.blm-platdujour-table td:nth-child(3) > div:first-child {
	font-family: var(--blm-serif);
	font-size: 19px;
	font-weight: 500;
	color: var(--blm-bleu);
}
.blm-platdujour-table td:nth-child(3) > div:last-child {
	font-size: 13px;
	color: var(--blm-ink-soft);
	margin-top: 2px;
}
.blm-platdujour-table td:last-child {
	padding-right: 0;
	text-align: right;
	font-weight: 700;
	color: var(--blm-orange);
	font-size: 18px;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

@media (max-width: 640px) {
	.blm-platdujour-table th:nth-child(2),
	.blm-platdujour-table td:nth-child(2) {
		display: none;
	}
	.blm-platdujour-table__section-title-row {
		gap: 12px;
		flex-wrap: nowrap;
		margin: 0 0 0;
	}
	.blm-platdujour-table__title {
		margin: 0 0 0;
	}
	.blm-platdujour-table__heading-row {
		gap: 6px;
	}


	.blm-platdujour {
		border-radius: 0;
	}
	
}

/* ============================================================
   La carte permanente
   ============================================================ */
.blm-carte {
	display: flex;
	flex-direction: column;
	gap: 36px;
}

.blm-carte__category {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.blm-carte__category-title {
	margin: 0 0 20px;
	font-size: 28px;
	color: var(--blm-bleu);
    font-weight: 800;
    letter-spacing: -0.015em;
    line-height: 0.92;
    text-transform: uppercase;
	font-family: 'Barlow';
}

.blm-carte__items {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.blm-carte__item {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding-bottom: 14px;
	border-bottom: 1px dashed var(--blm-rule);
}

.blm-carte__item-row {
	display: flex;
	align-items: baseline;
	gap: 8px;
}

.blm-carte__item-desc {
	margin: 0;
	font-family: var(--blm-serif);
	font-size: 14px;
	line-height: 1.45;
	color: var(--blm-ink-soft);
	opacity: 0.85;
	font-style: italic;
}

.blm-carte__item-name {
	font-family: var(--blm-serif);
	font-weight: 500;
	font-size: 18px;
	line-height: 1.2;
	color: var(--blm-bleu);
}

/* Leader dots between name and price (classic restaurant menu pattern). */
.blm-carte__item-leader {
	flex: 1 1 0;
	min-width: 24px;
	border-bottom: 1px dotted var(--blm-rule-strong);
	/* Empty inline span: its baseline = its bottom edge, so the dotted
	   line sits exactly on the text baseline shared with name + price. */
}

.blm-carte__item-price {
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--blm-orange);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/* ============================================================
   Variant: carte--afterwork
   Used by: [carte_menu category="..." class="carte--afterwork"]
   For the bar/terrace selection on a dark surface.
   ============================================================ */
.blm-carte.carte--afterwork .blm-carte__category-title {
	margin: 0;
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--blm-jaune);
}

.blm-carte.carte--afterwork .blm-carte__item {
	padding: 14px 0;
	border-bottom: 1px dashed rgba(235, 235, 216, 0.35);
	gap: 0;
}

.blm-carte.carte--afterwork .blm-carte__item-row {
	justify-content: space-between;
}

/* Hide the dotted leader in this variant — name & price are pushed apart by space-between. */
.blm-carte.carte--afterwork .blm-carte__item-leader {
	display: none;
}

.blm-carte.carte--afterwork .blm-carte__item-name {
	font-family: var(--blm-serif);
	font-weight: 500;
	font-size: 17px;
	color: #EBEBD8;
}

.blm-carte.carte--afterwork .blm-carte__item-price {
	font-family: var(--blm-sans);
	font-weight: 700;
	color: var(--blm-jaune);
	font-variant-numeric: tabular-nums;
	letter-spacing: 0;
	text-transform: none;
	font-size: 16px;
}

.blm-carte.carte--afterwork .blm-carte__item-desc {
	margin: 3px 0 0;
	font-size: 13px;
	opacity: 0.78;
	font-style: normal;
	color: #EBEBD8;
}


.blm-carte.carte--afterwork .blm-carte__items {
	gap: 0;
}

@media (min-width: 1024px) {
  li.blm-platdujour__day:first-child {
    padding-left: 0;
  }
}

/* ============================================================
   Widget « Info du jour » — eyebrow / valeur / sous-ligne
   (bandeau « À bord aujourd'hui » de l'Accueil). Thème sombre
   par défaut (bandeau bleu), variante --light pour surfaces claires.
   ============================================================ */
.blm-info {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.blm-info__eyebrow {
	margin: 0;
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--blm-jaune);
}

.blm-info__value {
	margin: 0;
	font-family: var(--blm-sans);
	font-weight: 800;
	font-size: clamp(24px, 2.2vw, 32px);
	letter-spacing: -0.01em;
	line-height: 1.05;
	color: var(--blm-creme);
}

.blm-info__sub {
	margin: 0;
	font-family: var(--blm-serif);
	font-size: 16px;
	line-height: 1.4;
	color: var(--blm-creme);
	opacity: 0.75;
}

.blm-info--light .blm-info__eyebrow {
	color: var(--blm-orange);
}

.blm-info--light .blm-info__value,
.blm-info--light .blm-info__sub {
	color: var(--blm-bleu);
}

.blm-info--light .blm-info__sub {
	opacity: 0.8;
}

.elementor-widget-blm-info-jour {
	width: auto;
	min-width: 0;
}

/* ============================================================
   Variant: carte--card + carte--bg-*
   Card surface for the Elementor widget « Fond de couleur ».
   carte--dark flips the text palette for dark surfaces
   (orange, bleu) — combined automatically by the widget.
   ============================================================ */
.blm-carte.carte--card {
	border-radius: 6px;
	padding: clamp(20px, 5vw, 56px);
}

.blm-carte.carte--bg-creme  { background: var(--blm-creme-deep); }
.blm-carte.carte--bg-jaune  { background: var(--blm-jaune); }
.blm-carte.carte--bg-orange { background: var(--blm-orange); }
.blm-carte.carte--bg-bleu   { background: var(--blm-bleu); }

.blm-carte.carte--dark .blm-carte__category-title,
.blm-carte.carte--dark .blm-carte__item-name {
	color: var(--blm-creme);
}

.blm-carte.carte--dark .blm-carte__item-desc {
	color: var(--blm-creme);
	opacity: 0.78;
}

.blm-carte.carte--dark .blm-carte__item-price {
	color: var(--blm-jaune);
}

.blm-carte.carte--dark .blm-carte__item {
	border-bottom-color: var(--blm-rule-on-dark);
}

.blm-carte.carte--dark .blm-carte__item-leader {
	border-bottom-color: rgba(235, 235, 216, 0.35);
}

/* The afterwork small-caps titles stay jaune on dark surfaces. */
.blm-carte.carte--dark.carte--afterwork .blm-carte__category-title {
	color: var(--blm-jaune);
}

/* ============================================================
   Fallback: Menu déjeuner formules inside the plat-du-jour
   layouts (blm-platdujour--fallback / blm-platdujour-table--fallback)
   Same card, header and cell chrome — only the grid adapts to
   the number of formules, and the table drops its day/date columns.
   ============================================================ */
@media (min-width: 1024px) {
	.blm-platdujour--fallback .blm-platdujour__days,
	.blm-platdujour--menu .blm-platdujour__days {
		grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	}
}

.blm-platdujour--fallback .blm-platdujour__dish-name {
	margin-top: 0;
}

/* Menu de la semaine dans le tableau de l'Accueil : la colonne date est vide. */
.blm-platdujour-table--menu th:nth-child(2),
.blm-platdujour-table--menu td:nth-child(2) {
	display: none;
}

/* Pied de carte : rappel des prix des formules du Menu déjeuner. */
.blm-platdujour__formules {
	list-style: none;
	margin: 4px 0 0;
	padding: 20px 0 0;
	border-top: 1px solid var(--blm-rule-on-dark);
	display: flex;
	flex-wrap: wrap;
	gap: 10px 40px;
}

.blm-platdujour__formule {
	display: flex;
	align-items: baseline;
	gap: 12px;
}

.blm-platdujour__formule-name {
	font-family: var(--blm-serif);
	font-size: 16px;
	color: var(--blm-creme);
	opacity: 0.9;
}

.blm-platdujour__formule-price {
	font-family: var(--blm-sans);
	font-weight: 700;
	font-size: 13px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--blm-jaune);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.blm-platdujour--light .blm-platdujour__formules,
.blm-platdujour-table .blm-platdujour__formules {
	border-top-color: var(--blm-rule);
}

.blm-platdujour--light .blm-platdujour__formule-name,
.blm-platdujour-table .blm-platdujour__formule-name {
	color: var(--blm-bleu);
}

.blm-platdujour--light .blm-platdujour__formule-price,
.blm-platdujour-table .blm-platdujour__formule-price {
	color: var(--blm-orange);
}

/* Light surface variant — homepage colours (creme card, bleu text,
   orange accents). Combined with --fallback on the Accueil. */
.blm-platdujour--light {
	background: var(--blm-creme-deep);
	color: var(--blm-bleu);
}

.blm-platdujour--light .blm-platdujour__brand {
	color: var(--blm-orange);
}

.blm-platdujour--light .blm-platdujour__week,
.blm-platdujour--light .blm-platdujour__intro,
.blm-platdujour--light .blm-platdujour__dish-name {
	color: var(--blm-bleu);
}

.blm-platdujour--light .blm-platdujour__availability {
	color: var(--blm-bleu);
}

.blm-platdujour--light .blm-platdujour__meta {
	border-top-color: var(--blm-rule);
}

.blm-platdujour--light .blm-platdujour__day {
	border-bottom-color: var(--blm-rule-strong);
}

@media (min-width: 720px) and (max-width: 1023px) {
	.blm-platdujour--light .blm-platdujour__day {
		border-right-color: var(--blm-rule-strong);
	}
}

@media (min-width: 1024px) {
	.blm-platdujour--light .blm-platdujour__days {
		border-top-color: var(--blm-rule-strong);
	}
	.blm-platdujour--light .blm-platdujour__day {
		border-right-color: var(--blm-rule-strong);
	}
}

.blm-platdujour-table--fallback thead {
	display: none;
}

.blm-platdujour-table--fallback th:first-child,
.blm-platdujour-table--fallback td:first-child,
.blm-platdujour-table--fallback th:nth-child(2),
.blm-platdujour-table--fallback td:nth-child(2) {
	display: none;
}

/* ============================================================
   Full-width in Elementor flex containers
   In a row-direction container the widget is sized by content,
   which caps the card at the grid's intrinsic width. Stretch any
   Elementor widget that wraps a carte to the container's width.
   ============================================================ */
.elementor-widget-blm-carte,
.elementor-widget-shortcode:has(.blm-carte),
.elementor-widget-shortcode:has(.blm-platdujour),
.elementor-widget-shortcode:has(.blm-platdujour-table) {
	width: 100%;
	min-width: 0;
}

/* ============================================================
   Variant: carte--boxes
   Items laid out as boxes across the full width (mirrors the
   plat-du-jour day cells). Used by the Menu déjeuner fallback
   and the widget « Disposition en boxes » switch.
   ============================================================ */
.blm-carte.carte--boxes .blm-carte__items {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 16px;
}

.blm-carte.carte--boxes .blm-carte__item {
	border: 1px dashed var(--blm-rule-strong);
	border-radius: 6px;
	padding: 28px 20px;
	justify-content: center;
	gap: 10px;
}

.blm-carte.carte--dark.carte--boxes .blm-carte__item {
	border-color: rgba(235, 235, 216, 0.35);
}

/* Centered stack inside each box: name above, price below (PDF layout). */
.blm-carte.carte--boxes .blm-carte__item-row {
	flex-direction: column;
	align-items: center;
	gap: 10px;
	text-align: center;
}

.blm-carte.carte--boxes .blm-carte__item-leader {
	display: none;
}

.blm-carte.carte--boxes .blm-carte__item-desc {
	text-align: center;
}


