/*
Theme Name: Kádár karácsonyi webshop
Description: A Kádár Étkezde karácsonyi webshopja (KE-5): krémszínű papír, Kádár-piros, Libre Caslon. A shop logikája a costes-xmas-shop pluginban van.
Version: 1.3.0
Requires at least: 6.5
Requires PHP: 8.1
Text Domain: kadar-karacsony
*/

/* ---------------------------------------------------------------- fonts */

/* Libre Caslon Text (SIL OFL), subset to Latin + Latin Extended. The brand's caps
   face, Columbia Titling, has a desktop-only licence and no ő/ű, so the caps
   labels fall back to letterspaced Caslon (see --ke-caps). */
@font-face { font-family: "Libre Caslon Text"; font-style: normal; font-weight: 400; font-display: swap; src: url(assets/fonts/libre-caslon-text-400.woff2) format("woff2"); }
@font-face { font-family: "Libre Caslon Text"; font-style: italic; font-weight: 400; font-display: swap; src: url(assets/fonts/libre-caslon-text-400i.woff2) format("woff2"); }
@font-face { font-family: "Libre Caslon Text"; font-style: normal; font-weight: 700; font-display: swap; src: url(assets/fonts/libre-caslon-text-700.woff2) format("woff2"); }

/* ---------------------------------------------------------------- tokens */

:root {
	/* Brand book: cream EFE3DC, red C33C42. Wine and paper are the landing pages' (KE-1, KE-2). */
	--ke-red: #c33c42;
	--ke-wine: #860c0d;
	--ke-cream: #efe3dc;
	--ke-paper: #e9dbcf;
	--ke-taupe: #c6bcb7;
	--ke-ink: #221a18;
	--ke-ink-soft: #4a3e3a;
	--ke-white: #fbf7f2;
	--ke-line: rgba(34, 26, 24, .16);

	--ke-serif: "Libre Caslon Text", Georgia, "Times New Roman", serif;
	--ke-caps: "columbia-titling", "Libre Caslon Text", Georgia, serif;

	--ke-shell: 1200px;
	--ke-gutter: clamp(16px, 4.5vw, 56px);
	--ke-radius: 4px;

	/* The étkezde's checked tablecloth, as a pattern. */
	--ke-gingham:
		repeating-linear-gradient(90deg, rgba(195, 60, 66, .5) 0 10px, transparent 10px 20px),
		repeating-linear-gradient(0deg, rgba(195, 60, 66, .5) 0 10px, transparent 10px 20px);
}

/* ---------------------------------------------------------------- base */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	min-height: 100dvh;
	margin: 0;
	color: var(--ke-ink);
	font: 400 17px/1.65 var(--ke-serif);
	background-color: var(--ke-cream);
	-webkit-font-smoothing: antialiased;
}
/* The brand's paper texture, veiled so it reads as grain on cream rather than as a
   colour. One fixed layer: the scan is not seamless, so it must never tile. */
body::before {
	content: ""; position: fixed; top: 0; left: 0; right: 0; height: 100lvh; z-index: -1; pointer-events: none;
	background: url(assets/img/paper.webp) center / cover; /* the 62% cream veil is baked into the image */
}

body.admin-bar { min-height: calc(100dvh - 32px); }
@media (max-width: 782px) { body.admin-bar { min-height: calc(100dvh - 46px); } }
.ke-main { flex: 1 0 auto; }
.ke-footer { flex-shrink: 0; }

img { max-width: 100%; height: auto; display: block; }
[id] { scroll-margin-top: 104px; }
a { color: var(--ke-red); text-decoration-thickness: 1px; text-underline-offset: .18em; }
a:hover { color: var(--ke-wine); }
:focus-visible { outline: 2px solid var(--ke-red); outline-offset: 3px; }

h1, h2, h3 { font-family: var(--ke-serif); font-weight: 400; line-height: 1.12; letter-spacing: -.01em; margin: 0 0 .5em; }
h1 em, h2 em { font-style: italic; color: var(--ke-red); }

.screen-reader-text { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); border: 0; white-space: nowrap; }
.ke-skip:focus { position: fixed !important; top: 8px; left: 8px; z-index: 1000; width: auto; height: auto; clip: auto; padding: 10px 16px; background: var(--ke-ink); color: var(--ke-cream); }

.ke-shell { width: 100%; max-width: calc(var(--ke-shell) + 2 * var(--ke-gutter)); margin: 0 auto; padding: 0 var(--ke-gutter); }


.ke-check { height: 20px; background: var(--ke-cream); background-image: var(--ke-gingham); background-size: 20px 20px; }

/* ---------------------------------------------------------------- buttons */

.ke-btn,
.woocommerce .button,
.woocommerce button.button,
.woocommerce a.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	min-height: 52px;
	padding: 14px 28px 13px;
	border: 1px solid var(--ke-red);
	border-radius: 999px;
	background: var(--ke-red);
	color: var(--ke-cream);
	font: 400 13px/1.2 var(--ke-caps);
	letter-spacing: .2em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background .2s, border-color .2s, transform .2s;
}
.ke-btn:hover, .ke-btn:focus-visible,
.woocommerce .button:hover,
.woocommerce button.button:hover,
.woocommerce a.button:hover {
	background: var(--ke-wine);
	border-color: var(--ke-wine);
	color: var(--ke-cream);
}
.woocommerce .button.alt,
.woocommerce button.button.alt,
.woocommerce #place_order { background: var(--ke-red); border-color: var(--ke-red); color: var(--ke-cream); }
.woocommerce .button.alt:hover,
.woocommerce #place_order:hover { background: var(--ke-wine); border-color: var(--ke-wine); }
.woocommerce .button:disabled, .woocommerce .button.disabled { opacity: .5; cursor: not-allowed; }
.ke-btn.loading { opacity: .7; }
.ke-btn.added::after { content: "✓"; font-family: var(--ke-serif); letter-spacing: 0; }

.ke-link { font-family: var(--ke-caps); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--ke-ink); }

/* ---------------------------------------------------------------- store notice */

.woocommerce-store-notice, p.demo_store {
	position: fixed; inset: auto 0 0 0; z-index: 60; margin: 0; padding: 10px var(--ke-gutter);
	background: var(--ke-ink); color: var(--ke-cream);
	font-size: 14px; text-align: center; box-shadow: none;
}
.woocommerce-store-notice a { color: var(--ke-cream); }

/* ---------------------------------------------------------------- header */

.ke-header { position: sticky; top: 0; z-index: 50; background: var(--ke-red); color: var(--ke-cream); }
.ke-header :focus-visible { outline-color: var(--ke-cream); }
.admin-bar .ke-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .ke-header { top: 0; } }
.ke-header__inner { display: flex; align-items: center; gap: 24px; min-height: 104px; padding-top: 8px; padding-bottom: 8px; }
.ke-logo { display: block; }
.ke-logo img { width: 140px; height: auto; }
.ke-nav { display: flex; gap: 32px; margin-left: auto; }
.ke-nav a { color: var(--ke-cream); text-decoration: none; font-family: var(--ke-caps); font-size: 12px; letter-spacing: .24em; text-transform: uppercase; }
.ke-nav a:hover { color: var(--ke-white); text-decoration: underline; text-underline-offset: .5em; }
.ke-cart {
	display: inline-flex; align-items: center; gap: 10px;
	padding: 10px 12px 10px 20px; border: 1px solid rgba(239, 227, 220, .75); border-radius: 999px;
	color: var(--ke-cream); text-decoration: none;
	font-family: var(--ke-caps); font-size: 12px; letter-spacing: .2em; text-transform: uppercase;
}
.ke-cart:hover { background: var(--ke-cream); border-color: var(--ke-cream); color: var(--ke-red); }
.ke-cart-count { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 6px; border-radius: 999px; background: var(--ke-cream); color: var(--ke-red); font-family: var(--ke-serif); font-size: 13px; letter-spacing: 0; }
.ke-cart:hover .ke-cart-count { background: var(--ke-red); color: var(--ke-cream); }

@media (max-width: 720px) {
	.ke-header__inner { min-height: 72px; }
	.ke-logo img { width: 104px; }
	.ke-nav { display: none; }
	.ke-cart { margin-left: auto; }
}

/* ---------------------------------------------------------------- hero */

.ke-hero { padding: clamp(40px, 7vw, 96px) 0 clamp(56px, 8vw, 112px); overflow: hidden; }
.ke-hero__inner { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 6vw, 88px); align-items: center; }
.ke-hero h1 { font-size: clamp(44px, 6.4vw, 88px); line-height: 1.02; margin-bottom: 28px; }
.ke-hero h1 em { display: block; }
.ke-lead { font-size: clamp(18px, 1.6vw, 21px); color: var(--ke-ink-soft); max-width: 34em; margin: 0 0 34px; }
.ke-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 28px; }
.ke-hero__deadline { margin: 22px 0 0; font-style: italic; color: var(--ke-ink-soft); }

.ke-hero__photo { position: relative; margin: 0; justify-self: center; width: min(100%, 520px); }
/* The photo in the logo's oval, with the logo's hairline ellipse offset around it. */
.ke-oval { position: relative; display: block; aspect-ratio: 171 / 220; }
.ke-oval img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.ke-oval::after { content: ""; position: absolute; inset: -14px; border: 1px solid var(--ke-red); border-radius: 50%; pointer-events: none; }
.ke-stamp {
	position: absolute; left: -6%; bottom: 8%;
	display: grid; place-content: center; gap: 4px;
	width: 148px; aspect-ratio: 1; border-radius: 50%;
	background: var(--ke-red); color: var(--ke-cream); text-align: center; text-decoration: none;
	box-shadow: 0 0 0 6px var(--ke-cream), 0 0 0 7px var(--ke-red);
	transform: rotate(-8deg); transition: transform .25s;
}
.ke-stamp:hover { color: var(--ke-cream); transform: rotate(-3deg) scale(1.04); }
.ke-stamp__small { font-family: var(--ke-caps); font-size: 10px; letter-spacing: .22em; text-transform: uppercase; }
.ke-stamp__price { font-size: 24px; line-height: 1.1; }

@media (max-width: 880px) {
	.ke-hero__inner { grid-template-columns: 1fr; }
	.ke-hero__photo { order: -1; width: min(78%, 360px); }
	.ke-stamp { width: 112px; left: -12%; }
	.ke-stamp__price { font-size: 19px; }
}

/* ---------------------------------------------------------------- full package */

.ke-full { position: relative; background: var(--ke-red); color: var(--ke-cream); padding: clamp(56px, 8vw, 104px) 0; }
.ke-full::before, .ke-full::after { content: ""; position: absolute; left: 0; right: 0; height: 20px; background-color: var(--ke-cream); background-image: var(--ke-gingham); background-size: 20px 20px; }
.ke-full::before { top: 0; }
.ke-full::after { bottom: 0; }
.ke-full__inner { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 6vw, 80px); align-items: center; }
.ke-full__photo { margin: 0; }
/* A photo print: cream border, slightly turned. */
.ke-full__photo img { width: 100%; border: 10px solid var(--ke-cream); border-radius: 2px; box-shadow: 0 30px 60px -30px rgba(40, 6, 6, .8); transform: rotate(-1.5deg); }
.ke-full h2 { font-size: clamp(36px, 4.6vw, 60px); color: var(--ke-cream); }
.ke-full__short { font-size: 20px; font-style: italic; }
.ke-full__short p { margin: 0 0 16px; }
.ke-full__contents { margin: 0 0 30px; padding: 18px 0; border-top: 1px solid rgba(239, 227, 220, .35); border-bottom: 1px solid rgba(239, 227, 220, .35); color: rgba(251, 247, 242, .9); }
.ke-full__buy { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 28px; margin-bottom: 22px; }
.ke-full .ke-price { margin: 0; font-size: 40px; line-height: 1; }
.ke-full .ke-btn { background: var(--ke-cream); color: var(--ke-red); border-color: var(--ke-cream); }
.ke-full .ke-btn:hover { background: var(--ke-wine); color: var(--ke-cream); border-color: var(--ke-wine); }
.ke-full .ke-qty { border-color: rgba(239, 227, 220, .6); }
.ke-full .ke-qty__step, .ke-full .ke-qty__input { color: var(--ke-cream); }
.ke-full .ke-allergens__label { color: rgba(239, 227, 220, .8); }
.ke-full .ke-allergen { border-color: var(--ke-cream); color: var(--ke-cream); }
.ke-full .added_to_cart { color: var(--ke-cream); }

@media (max-width: 880px) {
	.ke-full__inner { grid-template-columns: 1fr; }
	.ke-full__photo { width: min(100%, 560px); justify-self: center; }
}

/* ---------------------------------------------------------------- menu card */

.ke-menu { padding: clamp(64px, 9vw, 120px) 0; }
.ke-card {
	position: relative;
	max-width: 980px; margin: 0 auto;
	padding: clamp(32px, 6vw, 72px) clamp(20px, 6vw, 72px);
	background: var(--ke-white);
	/* A printed menu: double rule just inside the edge. */
	box-shadow: inset 0 0 0 10px var(--ke-white), inset 0 0 0 11px var(--ke-red), inset 0 0 0 14px var(--ke-white), inset 0 0 0 15px var(--ke-red), 0 24px 60px -36px rgba(34, 26, 24, .45);
}
.ke-card__head { text-align: center; margin-bottom: clamp(32px, 5vw, 56px); }
.ke-card__head h2 { font-size: clamp(36px, 5vw, 62px); }
.ke-card__head p:last-child { margin: 0; font-style: italic; color: var(--ke-ink-soft); }

.ke-dishes { list-style: none; margin: 0; padding: 0; }
.ke-dish { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: clamp(18px, 3.5vw, 40px); align-items: center; padding: 28px 0; border-top: 1px dashed var(--ke-line); }
.ke-dish:first-child { border-top: 0; }
.ke-dish__photo { display: block; width: 150px; aspect-ratio: 171 / 220; border-radius: 50%; overflow: hidden; box-shadow: 0 0 0 1px var(--ke-red), 0 0 0 6px var(--ke-white), 0 0 0 7px rgba(195, 60, 66, .35); }
.ke-dish__photo img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.5); transition: transform .4s; }
.ke-dish:hover .ke-dish__photo img { transform: scale(1.6); }
.ke-dish__name { display: flex; align-items: baseline; gap: 12px; margin: 0 0 8px; font-size: clamp(22px, 2.6vw, 30px); }
.ke-dish__name a { color: var(--ke-ink); text-decoration: none; }
.ke-dish__name a:hover { color: var(--ke-red); }
.ke-dish__leader { flex: 1; min-width: 24px; border-bottom: 2px dotted rgba(34, 26, 24, .35); transform: translateY(-6px); }
.ke-dish__price { white-space: nowrap; color: var(--ke-red); font-size: .85em; }
.ke-dish__desc { margin: 0 0 16px; color: var(--ke-ink-soft); max-width: 40em; }
.ke-dish__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; }
.ke-dish__foot .ke-buy { margin-left: auto; }

.ke-legend { margin: clamp(28px, 4vw, 44px) 0 0; padding-top: 22px; border-top: 1px solid var(--ke-line); font-size: 14px; color: var(--ke-ink-soft); text-align: center; }

@media (max-width: 640px) {
	.ke-card { box-shadow: inset 0 0 0 6px var(--ke-white), inset 0 0 0 7px var(--ke-red), 0 24px 60px -36px rgba(34, 26, 24, .45); }
	/* Photo beside the name and contents; allergens and the buy form under both, full width. */
	.ke-dish { grid-template-columns: 84px minmax(0, 1fr); grid-template-areas: "photo name" "photo desc" "foot foot"; gap: 6px 16px; align-items: start; }
	.ke-dish__body { display: contents; }
	.ke-dish__photo { grid-area: photo; width: 84px; }
	.ke-dish__name { grid-area: name; flex-wrap: wrap; gap: 2px 10px; }
	.ke-dish__desc { grid-area: desc; margin: 0; font-size: 15px; }
	.ke-dish__leader { display: none; }
	.ke-dish__price { flex-basis: 100%; }
	.ke-dish__foot { grid-area: foot; margin-top: 12px; }
}

/* ---------------------------------------------------------------- buy form, allergens */

.ke-buy { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0; }
.ke-buy .added_to_cart { flex-basis: 100%; }
.ke-buy--off { font-style: italic; color: var(--ke-ink-soft); }
.ke-qty { display: inline-flex; align-items: center; height: 52px; border: 1px solid var(--ke-line); border-radius: 999px; }
.ke-qty__step { width: 40px; height: 100%; border: 0; background: none; color: var(--ke-ink); font: 400 20px/1 var(--ke-serif); cursor: pointer; }
.ke-qty__step:hover { color: var(--ke-red); }
.ke-qty__input { width: 42px; border: 0; background: none; color: var(--ke-ink); font: 400 17px/1 var(--ke-serif); text-align: center; -moz-appearance: textfield; }
.ke-qty__input::-webkit-outer-spin-button, .ke-qty__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.added_to_cart { font-family: var(--ke-caps); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; }

.ke-allergens { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ke-allergens__label { margin-right: 4px; font-size: 14px; font-style: italic; color: var(--ke-ink-soft); }
.ke-allergen { display: inline-grid; place-items: center; width: 26px; height: 26px; border: 1px solid var(--ke-red); border-radius: 50%; color: var(--ke-red); font-size: 13px; line-height: 1; cursor: help; }

/* ---------------------------------------------------------------- pickup */

.ke-pickup { padding: clamp(64px, 9vw, 120px) 0; background: var(--ke-paper); border-top: 1px solid var(--ke-line); border-bottom: 1px solid var(--ke-line); }
.ke-pickup__inner { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 88px); align-items: center; }
.ke-pickup__photo { margin: 0; }
.ke-pickup__photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; filter: sepia(.12); border-radius: var(--ke-radius); }
.ke-pickup h2 { font-size: clamp(34px, 4.4vw, 56px); }
.ke-pickup__where { font-size: 22px; margin: 0 0 12px; }
.ke-days { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 30px 0 0; padding: 0; }
.ke-day { display: grid; gap: 6px; padding: 18px 16px; background: var(--ke-white); border: 1px solid var(--ke-line); border-top: 3px solid var(--ke-red); text-align: center; }
.ke-day__date { font-family: var(--ke-caps); font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--ke-ink-soft); }
.ke-day__times { font-size: 22px; color: var(--ke-red); }

@media (max-width: 880px) {
	.ke-pickup__inner { grid-template-columns: 1fr; }
	.ke-pickup__photo img { aspect-ratio: 16 / 10; }
}
@media (max-width: 520px) { .ke-days { grid-template-columns: 1fr; } .ke-day { grid-template-columns: 1fr auto; text-align: left; align-items: center; } }

/* ---------------------------------------------------------------- steps */

.ke-steps { padding: clamp(48px, 7vw, 88px) 0; }
.ke-steps__list { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 4vw, 48px); margin: 0; padding: 0; }
.ke-steps__list li { position: relative; padding-top: 18px; border-top: 1px solid var(--ke-red); color: var(--ke-ink-soft); }
.ke-steps__list strong { display: block; color: var(--ke-ink); font-weight: 400; font-size: 22px; }
.ke-steps__n { display: block; margin-bottom: 6px; color: var(--ke-red); font-style: italic; font-size: 26px; }
@media (max-width: 720px) { .ke-steps__list { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- footer */

/* As on kadaretkezde.hu: cream, the framed oval cutting a red hairline, a red strip at the very bottom. */
.ke-footer { background: var(--ke-cream); color: var(--ke-ink); text-align: center; }
.ke-footer__main { padding-top: 44px; padding-bottom: 36px; }
.ke-footer__logo { display: flex; align-items: center; margin-bottom: 28px; } /* the hairline meets the oval's sides */
.ke-footer__logo::before, .ke-footer__logo::after { content: ""; flex: 1; height: 1px; background: var(--ke-red); }
.ke-footer__logo img { width: 140px; }
.ke-footer__contact, .ke-footer__links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 28px; font-style: normal; }
.ke-footer__contact { margin-bottom: 10px; font-size: 17px; }
.ke-footer__links { font-size: 15px; }
.ke-footer a { color: var(--ke-red); text-decoration-color: rgba(195, 60, 66, .4); }
.ke-footer a:hover { color: var(--ke-wine); }
.ke-footer__vat { margin: 18px 0 0; font-size: 13px; color: var(--ke-ink-soft); }
.ke-footer__info { background: var(--ke-red); color: var(--ke-cream); }
.ke-footer__info-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; padding-top: 14px; padding-bottom: 14px; }
.ke-footer__info img { width: 100px; height: auto; }
.ke-footer__info p { margin: 0; font-size: 13px; }
@media (max-width: 720px) {
	.ke-footer__logo img { width: 112px; }
	.ke-footer__contact { flex-direction: column; }
}

/* ---------------------------------------------------------------- inner pages */

.ke-page { padding-top: clamp(32px, 5vw, 64px); padding-bottom: clamp(56px, 8vw, 104px); }
.ke-page__title { font-size: clamp(36px, 4.6vw, 56px); margin-bottom: clamp(24px, 3vw, 40px); }
.ke-page__content { max-width: 46em; }
.woocommerce-cart .ke-page__content,
.woocommerce-checkout .ke-page__content,
.woocommerce-account .ke-page__content { max-width: none; }
.ke-back { margin: 0 0 28px; }
.ke-back a { color: var(--ke-ink-soft); }
.ke-back a::before { content: "‹ "; }

/* ---------------------------------------------------------------- notices */

.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	list-style: none; margin: 0 0 28px; padding: 14px 20px 14px 50px; position: relative;
	display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px;
	background: var(--ke-white); border: 1px solid var(--ke-line); border-left: 3px solid var(--ke-red); color: var(--ke-ink);
}
.woocommerce-message::before, .woocommerce-info::before, .woocommerce-error::before {
	position: absolute; left: 16px; top: 13px; display: grid; place-items: center; width: 22px; height: 22px;
	border: 1px solid var(--ke-red); border-radius: 50%; color: var(--ke-red); font-size: 13px; line-height: 1;
}
.woocommerce-message::before { content: "✓"; }
.woocommerce-info::before { content: "i"; font-style: italic; }
.woocommerce-error::before { content: "!"; }
.woocommerce-error li { margin: 0; flex-basis: 100%; }
.woocommerce-error li a { color: inherit; text-decoration-color: rgba(195, 60, 66, .5); }
.woocommerce-error li a:hover { color: var(--ke-red); }
.woocommerce-message .button, .woocommerce-info .button { order: 2; min-height: 40px; padding: 9px 18px 8px; }
.woocommerce-form-coupon-toggle .woocommerce-info { display: block; border-left-color: var(--ke-taupe); }

/* ---------------------------------------------------------------- forms */

.woocommerce form .form-row { margin: 0 0 18px; padding: 0; }
.woocommerce form .form-row label { display: block; margin-bottom: 6px; font-size: 15px; color: var(--ke-ink-soft); }
.woocommerce form .form-row .required { color: var(--ke-red); text-decoration: none; border: 0; }
.woocommerce form .form-row .optional { font-size: 13px; font-style: italic; }
.woocommerce form .input-text, .woocommerce form select, .woocommerce form textarea, .ke-coupon-input {
	width: 100%; min-height: 50px; padding: 12px 16px;
	border: 1px solid var(--ke-taupe); border-radius: var(--ke-radius);
	background: var(--ke-white); color: var(--ke-ink); font: 400 17px/1.4 var(--ke-serif);
	transition: border-color .15s;
}
.woocommerce form textarea { min-height: 110px; resize: vertical; }
.woocommerce form .input-text::placeholder, .woocommerce form textarea::placeholder { color: rgba(74, 62, 58, .55); font-style: italic; }
.woocommerce form .input-text:hover, .woocommerce form textarea:hover { border-color: var(--ke-ink-soft); }
.woocommerce form .input-text:focus, .woocommerce form select:focus, .woocommerce form textarea:focus { outline: 2px solid var(--ke-red); outline-offset: -1px; border-color: var(--ke-red); }
.woocommerce form .form-row.woocommerce-invalid .input-text { border-color: var(--ke-red); background: #fdf1ef; }
.woocommerce form .form-row.woocommerce-validated .input-text { border-color: var(--ke-taupe); }
.checkout-inline-error-message { margin: 6px 0 0; color: var(--ke-red); font-size: 14px; line-height: 1.4; }
.checkout-inline-error-message::before { content: "! "; font-weight: 700; }
.woocommerce form .form-row.woocommerce-invalid > label { color: var(--ke-red); }
.cxs-slot-picker .checkout-inline-error-message { margin-top: 10px; }
#cxs_slot[aria-invalid="true"] label { border-color: var(--ke-red); }

/* ---------------------------------------------------------------- quantity */

.quantity:has(.ke-qty__step) { display: inline-flex; align-items: center; height: 52px; border: 1px solid var(--ke-taupe); border-radius: 999px; background: var(--ke-white); }
.quantity:has(.ke-qty__step) .qty { width: 44px; height: 100%; padding: 0; border: 0; background: none; color: var(--ke-ink); font: 400 17px/1 var(--ke-serif); text-align: center; -moz-appearance: textfield; }
.quantity:has(.ke-qty__step) .qty::-webkit-outer-spin-button, .quantity:has(.ke-qty__step) .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.quantity .qty:focus-visible { outline: none; }
.ke-qty:focus-within, .quantity:focus-within { border-color: var(--ke-red); }
.quantity:has(input[type=hidden], input[readonly]) .ke-qty__step { display: none; }

/* ---------------------------------------------------------------- the blokk: cart totals, checkout summary, order details */

/* A canteen receipt: paper slip with torn (zigzag) top and bottom edges, dotted rules. */
.cart_totals, #order_review, .woocommerce-order-details {
	position: relative;
	margin: 10px 0 38px;
	padding: clamp(22px, 3vw, 32px);
	background: var(--ke-white);
	filter: drop-shadow(0 14px 22px rgba(34, 26, 24, .10));
}
.cart_totals::before, #order_review::before, .woocommerce-order-details::before,
.cart_totals::after, #order_review::after, .woocommerce-order-details::after {
	content: ""; position: absolute; left: 0; right: 0; height: 10px;
	background-size: 12px 10px; background-repeat: repeat-x;
}
.cart_totals::before, #order_review::before, .woocommerce-order-details::before {
	top: -10px;
	background-image: linear-gradient(-45deg, var(--ke-white) 6px, transparent 0), linear-gradient(45deg, var(--ke-white) 6px, transparent 0);
	background-position: left bottom;
}
.cart_totals::after, #order_review::after, .woocommerce-order-details::after {
	bottom: -10px;
	background-image: linear-gradient(-135deg, var(--ke-white) 6px, transparent 0), linear-gradient(135deg, var(--ke-white) 6px, transparent 0);
	background-position: left top;
}
.cart_totals h2, .woocommerce-order-details__title { margin: 0 0 14px; font-size: 24px; }

.shop_table { width: 100%; border-collapse: collapse; }
.cart_totals .shop_table th, .cart_totals .shop_table td,
#order_review .shop_table th, #order_review .shop_table td,
.woocommerce-order-details .shop_table th, .woocommerce-order-details .shop_table td {
	padding: 12px 0; border-bottom: 1px dotted rgba(34, 26, 24, .3); text-align: left; vertical-align: top; font-weight: 400;
}
.cart_totals .shop_table td, #order_review .shop_table td:last-child, .woocommerce-order-details .shop_table td:last-child { text-align: right; padding-left: 16px; }
.woocommerce-order-details tfoot th { width: 40%; }
#order_review .shop_table thead th, .woocommerce-order-details .shop_table thead th { padding-top: 0; font-size: 13px; font-style: italic; color: var(--ke-ink-soft); }
#order_review .shop_table thead th:last-child, .woocommerce-order-details .shop_table thead th:last-child { text-align: right; }
.product-quantity { font-weight: 400; color: var(--ke-ink-soft); white-space: nowrap; }
.shop_table .order-total th, .shop_table .order-total td { padding-top: 16px; font-size: 22px; color: var(--ke-red); border-top: 2px solid var(--ke-ink); }
.shop_table .order-total td strong { font-weight: 400; }
.shop_table .includes_tax, .shop_table small.includes_tax { display: block; font-size: 13px; color: var(--ke-ink-soft); }
.shop_table .woocommerce-Price-amount { white-space: nowrap; }
/* The pickup row's long label gets the receipt's full width instead of a squeezed column. */
.shop_table tr.woocommerce-shipping-totals { display: block; padding: 12px 0; border-bottom: 1px dotted rgba(34, 26, 24, .3); }
.shop_table tr.woocommerce-shipping-totals th, .shop_table tr.woocommerce-shipping-totals td,
#order_review .shop_table tr.woocommerce-shipping-totals th, #order_review .shop_table tr.woocommerce-shipping-totals td { display: block; padding: 0; border: 0; text-align: left; font-size: 15px; }
.shop_table tr.woocommerce-shipping-totals th { margin-bottom: 2px; font-style: italic; color: var(--ke-ink-soft); }
#shipping_method { list-style: none; margin: 0; padding: 0; }
#shipping_method li { margin: 0; }
#shipping_method input[type=hidden] + label, #shipping_method label { display: inline; }
.woocommerce-shipping-destination, .woocommerce-shipping-calculator { display: none; }
.cart-discount td, .cart-discount th { color: var(--ke-red); }
.woocommerce-remove-coupon { font-size: 13px; }

/* ---------------------------------------------------------------- cart */

.woocommerce-cart .ke-page__content > .woocommerce { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(300px, .9fr); gap: 0 clamp(28px, 5vw, 64px); align-items: start; }
.woocommerce-cart .ke-page__content > .woocommerce > .woocommerce-notices-wrapper { grid-column: 1 / -1; }
.woocommerce-cart .ke-page__content > .woocommerce:has(.wc-empty-cart-message) { display: block; }
.cart-collaterals { position: sticky; top: 124px; }
@media (max-width: 900px) {
	.woocommerce-cart .ke-page__content > .woocommerce { grid-template-columns: 1fr; }
	.cart-collaterals { position: static; }
}

/* The cart table as a list of menu lines. */
table.cart, table.cart tbody { display: block; }
table.cart thead { display: none; }
table.cart tr.cart_item {
	display: grid;
	grid-template-columns: 84px minmax(0, 1fr) auto 110px 36px;
	grid-template-areas: "thumb name qty sub remove" "thumb price qty sub remove";
	align-items: center; gap: 2px 20px;
	padding: 20px 0; border-bottom: 1px dashed var(--ke-line);
}
table.cart tr.cart_item:first-child { padding-top: 0; }
table.cart td { display: block; padding: 0; }
table.cart td::before { display: none; }
table.cart .product-thumbnail { grid-area: thumb; }
table.cart .product-thumbnail img { width: 84px; aspect-ratio: 171 / 220; object-fit: cover; border-radius: 50%; box-shadow: 0 0 0 1px var(--ke-red), 0 0 0 4px var(--ke-cream), 0 0 0 5px rgba(195, 60, 66, .35); }
table.cart .product-name { grid-area: name; align-self: end; font-size: 22px; line-height: 1.2; }
table.cart .product-name a { color: var(--ke-ink); text-decoration: none; }
table.cart .product-name a:hover { color: var(--ke-red); }
table.cart .product-price { grid-area: price; align-self: start; font-size: 15px; font-style: italic; color: var(--ke-ink-soft); }
table.cart .product-price::after { content: " / db"; }
table.cart .product-quantity { grid-area: qty; }
table.cart .product-subtotal { grid-area: sub; text-align: right; font-size: 19px; }
table.cart .product-remove { grid-area: remove; justify-self: end; }
table.cart a.remove { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; color: var(--ke-ink-soft); font-size: 22px; line-height: 1; text-decoration: none; }
table.cart a.remove:hover { background: var(--ke-red); color: var(--ke-cream); }
table.cart tr:not(.cart_item) { display: block; padding: 24px 0 0; }
table.cart td.actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; }
.coupon { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.coupon label { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.woocommerce .coupon .input-text { width: 220px; border-radius: 999px; padding-left: 20px; }
.ke-js table.cart [name="update_cart"] { display: none; }
.wc-proceed-to-checkout { margin-top: 22px; }
.wc-proceed-to-checkout .button { width: 100%; }
@media (max-width: 640px) {
	table.cart tr.cart_item {
		grid-template-columns: 72px minmax(0, 1fr) auto;
		grid-template-areas: "thumb name remove" "thumb price remove" "thumb qty sub";
		gap: 4px 14px;
	}
	table.cart .product-thumbnail img { width: 72px; }
	table.cart .product-name { font-size: 19px; }
	table.cart .product-quantity { margin-top: 8px; }
	table.cart .product-subtotal { align-self: center; margin-top: 8px; }
	.coupon, .woocommerce .coupon .input-text { width: 100%; }
	.coupon .button { flex: 1; }
}

/* empty cart */
.wc-empty-cart-message .cart-empty { font-size: 20px; }
.return-to-shop { margin: 0; }

/* ---------------------------------------------------------------- checkout */

form.checkout { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, .9fr); gap: 0 clamp(28px, 5vw, 72px); align-items: start; }
form.checkout > .woocommerce-NoticeGroup { grid-column: 1 / -1; grid-row: 1; }
form.checkout > .col2-set { grid-column: 1; grid-row: 2 / span 2; }
form.checkout > #order_review_heading { grid-column: 2; grid-row: 2; margin: 0 0 6px; }
form.checkout > #order_review { grid-column: 2; grid-row: 3; }
form.checkout h3 { font-size: 26px; margin: 0 0 18px; }
.woocommerce-additional-fields h3 { margin-top: 18px; }
@media (max-width: 960px) {
	form.checkout { grid-template-columns: 1fr; }
	form.checkout > .woocommerce-NoticeGroup, form.checkout > .col2-set, form.checkout > #order_review_heading, form.checkout > #order_review { grid-column: 1; grid-row: auto; }
	form.checkout > #order_review_heading { margin-top: 24px; }
}
.woocommerce-billing-fields__field-wrapper { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.woocommerce-billing-fields__field-wrapper > .form-row { grid-column: 1 / -1; }
.woocommerce-billing-fields__field-wrapper > .form-row-first { grid-column: 1; }
.woocommerce-billing-fields__field-wrapper > .form-row-last { grid-column: 2; }
@media (max-width: 520px) {
	.woocommerce-billing-fields__field-wrapper { grid-template-columns: 1fr; }
	.woocommerce-billing-fields__field-wrapper > .form-row-first, .woocommerce-billing-fields__field-wrapper > .form-row-last { grid-column: 1; }
}
#billing_country_field { display: none !important; } /* one country, nothing to choose; WooCommerce's address script sets display inline */
form.checkout_coupon { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-start; margin: -12px 0 28px; padding: 18px; background: var(--ke-white); border: 1px solid var(--ke-line); }
form.checkout_coupon p:first-child { flex-basis: 100%; margin: 0; font-size: 15px; color: var(--ke-ink-soft); }
form.checkout_coupon .form-row { margin: 0; }
form.checkout_coupon .form-row-first { flex: 1 1 200px; }
form.checkout_coupon .input-text { border-radius: 999px; padding-left: 20px; }

/* private / company: a two-way switch */
.cxs-customer-type .woocommerce-input-wrapper { display: inline-flex; padding: 4px; border: 1px solid var(--ke-taupe); border-radius: 999px; background: var(--ke-white); }
.cxs-customer-type input[type=radio] { position: absolute; opacity: 0; pointer-events: none; }
form.checkout:has(.cxs-customer-type input[value="private"]:checked) .cxs-company-only { display: none; }
.cxs-customer-type label.radio .required { display: none; }
.woocommerce form .cxs-customer-type label.radio { margin: 0; padding: 9px 22px 8px; border-radius: 999px; color: var(--ke-ink); font-size: 16px; cursor: pointer; transition: background .15s, color .15s; }
.woocommerce form .cxs-customer-type input:checked + label.radio { background: var(--ke-red); color: var(--ke-cream); }
.cxs-customer-type input:focus-visible + label.radio { outline: 2px solid var(--ke-red); outline-offset: 2px; }

/* slot picker: one row per day, the time is what to read */
/* Also a .form-row (for WooCommerce's inline error), so it needs the form-row selector's weight. */
.woocommerce form .cxs-slot-picker { margin: 26px 0 0; padding: 22px 0 0; border-top: 2px solid var(--ke-ink); }
.cxs-slot-picker h3 { margin: 0 0 4px; font-size: 21px; }
.cxs-slot-picker h3 abbr { color: var(--ke-red); text-decoration: none; border: 0; }
.cxs-slot-where { margin: 0 0 14px; font-size: 15px; font-style: italic; color: var(--ke-ink-soft); }
.woocommerce form .cxs-slots { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0; padding: 0; }
.woocommerce form .cxs-slots li { position: relative; }
.woocommerce form .cxs-slots input { position: absolute; opacity: 0; pointer-events: none; }
.woocommerce form .cxs-slots label { display: grid; gap: 2px; height: 100%; padding: 10px 14px; border: 1px solid var(--ke-taupe); border-radius: var(--ke-radius); background: var(--ke-cream); color: transparent; font-size: 0; cursor: pointer; transition: border-color .15s, background .15s; }
.cxs-slot-date { font-size: 13px; color: var(--ke-ink-soft); }
.cxs-slot-time { font-size: 24px; line-height: 1.15; color: var(--ke-ink); }
.cxs-slot-full { font-size: 13px; font-style: italic; color: var(--ke-ink-soft); }
.woocommerce form .cxs-slots label:hover { border-color: var(--ke-red); }
.woocommerce form .cxs-slots input:checked + label { border-color: var(--ke-red); background: var(--ke-red); }
.woocommerce form .cxs-slots input:checked + label .cxs-slot-date, .woocommerce form .cxs-slots input:checked + label .cxs-slot-time { color: var(--ke-cream); }
.woocommerce form .cxs-slots input:focus-visible + label { outline: 2px solid var(--ke-red); outline-offset: 2px; }
.woocommerce form .cxs-slots .is-full label { cursor: not-allowed; background: none; border-style: dashed; }
.woocommerce form .cxs-slots .is-full .cxs-slot-time { color: var(--ke-taupe); text-decoration: line-through; }

/* payment */
#payment { margin-top: 26px; padding-top: 22px; border-top: 2px solid var(--ke-ink); }
#payment ul.payment_methods { list-style: none; margin: 0 0 18px; padding: 0; }
#payment li.wc_payment_method { margin: 0 0 8px; }
#payment li.wc_payment_method > input { accent-color: var(--ke-red); margin-right: 8px; }
#payment li.wc_payment_method > label { font-size: 18px; cursor: pointer; }
#payment li.wc_payment_method > label img { display: inline-block; max-height: 26px; margin-left: 8px; vertical-align: middle; }
#payment .payment_box { margin: 8px 0 0; padding: 12px 14px; background: var(--ke-cream); font-size: 15px; color: var(--ke-ink-soft); }
#payment .payment_box p { margin: 0; }
#payment .place-order { margin: 0; padding: 0; }
.woocommerce-privacy-policy-text p { margin: 0 0 16px; font-size: 14px; color: var(--ke-ink-soft); }
.woocommerce-terms-and-conditions-wrapper .form-row { margin: 0 0 16px; }
#place_order { width: 100%; min-height: 58px; font-size: 14px; }
.blockUI.blockOverlay { background: rgba(251, 247, 242, .7) !important; }

/* ---------------------------------------------------------------- product page */

.single-product .ke-woo .product { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 0 clamp(32px, 6vw, 88px); align-items: start; }
.single-product .ke-woo .product > .woocommerce-tabs { grid-column: 1 / -1; }
.woocommerce-product-gallery { position: relative; margin: 0; opacity: 1 !important; }
.woocommerce-product-gallery__wrapper { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0; }
.woocommerce-product-gallery__image { margin: 0; }
.woocommerce-product-gallery__image:first-child { grid-column: 1 / -1; }
.woocommerce-product-gallery__image img { width: 100%; aspect-ratio: 1; object-fit: cover; }
.woocommerce-product-gallery__image:first-child img { aspect-ratio: 4 / 5; border: 10px solid var(--ke-white); box-shadow: 0 24px 50px -30px rgba(34, 26, 24, .55); }
.woocommerce-product-gallery__image:not(:first-child) img { opacity: .85; transition: opacity .2s; }
.woocommerce-product-gallery__image:not(:first-child) a:hover img { opacity: 1; }
.woocommerce-product-gallery__trigger { position: absolute; top: 22px; right: 22px; z-index: 3; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--ke-white); color: var(--ke-ink); text-decoration: none; font-size: 0; }
.woocommerce-product-gallery__trigger::before { content: "⤢"; font-size: 18px; }
.single-product .summary { position: sticky; top: 124px; }
.single-product .product_title { font-size: clamp(38px, 4.6vw, 60px); margin-bottom: 14px; }
.single-product .summary .price { margin: 0 0 22px; font-size: 30px; color: var(--ke-red); }
.woocommerce-product-details__short-description { font-size: 20px; font-style: italic; color: var(--ke-ink-soft); }
.woocommerce-product-details__short-description p { margin: 0 0 22px; }
.ke-contents { margin: 0 0 26px; padding: 18px 0; border-top: 1px dotted rgba(34, 26, 24, .35); border-bottom: 1px dotted rgba(34, 26, 24, .35); }
.ke-contents h2, .cxs-allergens h3 { margin: 0 0 6px; font-size: 15px; font-style: italic; color: var(--ke-ink-soft); }
.ke-contents p { margin: 0; }
.single-product form.cart { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 0 0 28px; }
.single-product .stock { margin: 0 0 12px; font-style: italic; color: var(--ke-red); }
.cxs-allergens { margin: 0 0 22px; }
.cxs-allergens ul { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0; padding: 0; }
.cxs-allergens li { display: flex; align-items: center; gap: 8px; }
.cxs-allergen-num { display: inline-grid; place-items: center; width: 26px; height: 26px; border: 1px solid var(--ke-red); border-radius: 50%; color: var(--ke-red); font-size: 13px; }
.ke-pickup-note { margin: 0; padding: 16px 18px; background: var(--ke-paper); font-size: 15px; color: var(--ke-ink-soft); }
.woocommerce-tabs { margin-top: 48px; }
.woocommerce-tabs .tabs { display: none; }
.woocommerce-tabs .panel { max-width: 46em; }
@media (max-width: 880px) {
	.single-product .ke-woo .product { grid-template-columns: 1fr; }
	.single-product .summary { position: static; margin-top: 32px; }
}

/* shop archive: the front page is the shop; this is only the fallback listing */
ul.products { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; margin: 0; padding: 0; }
ul.products li.product { text-align: center; }
ul.products li.product img { aspect-ratio: 171 / 220; object-fit: cover; margin: 0 auto 14px; border-radius: 50%; }
ul.products li.product a { text-decoration: none; color: var(--ke-ink); }
ul.products .woocommerce-loop-product__title { font-size: 22px; margin: 0 0 6px; }
ul.products .price { display: block; color: var(--ke-red); margin-bottom: 14px; }
.woocommerce-result-count, .woocommerce-ordering { display: none; }
@media (max-width: 880px) { ul.products { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { ul.products { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- order received: the pickup ticket */

.woocommerce-order-received .ke-page__title { text-align: center; }
.woocommerce-order { max-width: 900px; margin: 0 auto; }

/* A cloakroom-style ticket: red stub with the order number, perforation with
   punched notches, and the pickup time as the largest thing on the page. */
.ke-ticket {
	--stub: 150px;
	display: grid; grid-template-columns: var(--stub) minmax(0, 1fr);
	max-width: 720px; margin: 0 auto 28px;
	background: var(--ke-white);
	-webkit-mask: radial-gradient(circle at var(--stub) 0, transparent 13px, #000 13.5px) top / 100% 51% no-repeat, radial-gradient(circle at var(--stub) 100%, transparent 13px, #000 13.5px) bottom / 100% 51% no-repeat;
	mask: radial-gradient(circle at var(--stub) 0, transparent 13px, #000 13.5px) top / 100% 51% no-repeat, radial-gradient(circle at var(--stub) 100%, transparent 13px, #000 13.5px) bottom / 100% 51% no-repeat;
}
.ke-ticket__stub {
	display: grid; place-content: center; gap: 6px; padding: 24px 12px; text-align: center;
	background: var(--ke-red); color: var(--ke-cream);
	border-right: 2px dashed rgba(239, 227, 220, .9);
}
.ke-ticket__stub span { font-size: 14px; font-style: italic; }
.ke-ticket__stub strong { font-weight: 400; font-size: 34px; line-height: 1; }
.ke-ticket__main { padding: clamp(24px, 4vw, 40px) clamp(24px, 5vw, 52px); }
.ke-ticket__label { margin: 0; font-size: 15px; font-style: italic; color: var(--ke-ink-soft); }
.ke-ticket__day { margin: 2px 0 0; font-size: clamp(24px, 3vw, 32px); line-height: 1.2; }
.ke-ticket__time { margin: 0 0 14px; font-size: clamp(64px, 10vw, 104px); line-height: 1; letter-spacing: -.02em; color: var(--ke-red); }
.ke-ticket__where { margin: 0; padding-top: 14px; border-top: 1px dotted rgba(34, 26, 24, .35); font-size: 16px; }
.ke-ticket__where a { margin-left: 6px; }
@media (max-width: 560px) {
	.ke-ticket {
		--stub: 72px;
		grid-template-columns: 1fr;
		-webkit-mask: radial-gradient(circle at 0 var(--stub), transparent 13px, #000 13.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% var(--stub), transparent 13px, #000 13.5px) right / 51% 100% no-repeat;
		mask: radial-gradient(circle at 0 var(--stub), transparent 13px, #000 13.5px) left / 51% 100% no-repeat, radial-gradient(circle at 100% var(--stub), transparent 13px, #000 13.5px) right / 51% 100% no-repeat;
	}
	.ke-ticket__stub { height: var(--stub); grid-auto-flow: column; align-items: baseline; gap: 10px; padding: 0 20px; border-right: 0; border-bottom: 2px dashed rgba(239, 227, 220, .9); }
	.ke-ticket__stub strong { font-size: 28px; }
}

.woocommerce-thankyou-order-received { margin: 0 0 18px; text-align: center; font-size: 19px; font-style: italic; }
.woocommerce-order-overview { list-style: none; display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 28px; margin: 0 0 48px; padding: 0; font-size: 14px; color: var(--ke-ink-soft); }
.woocommerce-order-overview li { display: flex; gap: 6px; align-items: baseline; }
.woocommerce-order-overview strong { font-weight: 400; color: var(--ke-ink); }
.woocommerce-order-overview__order { display: none !important; } /* on the ticket stub */
.woocommerce-order > .woocommerce-order-details { max-width: 620px; margin-left: auto; margin-right: auto; }
.woocommerce-order-details .product-name a { color: var(--ke-ink); text-decoration: none; }
.woocommerce-order-details .wc-item-meta { list-style: none; margin: 4px 0 0; padding: 0; font-size: 14px; color: var(--ke-ink-soft); }
.woocommerce-order-details tfoot td { font-weight: 400; }
.woocommerce-customer-details { max-width: 620px; margin: 0 auto; }
.woocommerce-customer-details h2 { font-size: 24px; }
.woocommerce-customer-details address { font-style: normal; line-height: 1.6; padding: 0; border: 0; }
.woocommerce-customer-details--phone, .woocommerce-customer-details--email { margin: 4px 0 0; }
