/*
Theme Name: Cakora
Theme URI: https://example.com/cakora
Author: Built for Cakora – Premium Cakes
Author URI: https://example.com/
Description: A premium, mobile-first block theme for Cakora – Premium Cakes, Kasaragod. WhatsApp-first cake catalogue with no cart or checkout. Every section is editable from the WordPress Site Editor. Designed to be used together with the "Cakora Core" plugin.
Requires at least: 6.2
Tested up to: 6.7
Requires PHP: 7.4
Version: 1.0.3
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: cakora
Tags: blog, one-column, custom-colors, custom-menu, block-patterns, full-site-editing, accessibility-ready
*/

/* -------------------------------------------------------------------------
   1. Base
   ---------------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }
*, *::before, *::after { box-sizing: border-box; }
body { overflow-x: hidden; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, video, svg { max-width: 100%; height: auto; }
:where(.wp-site-blocks) > * { min-width: 0; }

/* Wrapping policy.
   The previous release applied `overflow-wrap: anywhere` to every top-level
   block, which is inherited, so ordinary words and button labels were broken
   mid-word ("Enqui / re on / What / sApp"). Normal prose must break only at
   word boundaries. `break-word` is applied narrowly, and only to the kinds of
   strings that genuinely cannot fit: URLs, e-mail addresses and code. */
body { overflow-wrap: break-word; word-break: normal; hyphens: manual; }
h1, h2, h3, h4, h5, h6,
.wp-block-button__link, .cakora-wa, .cakora-filter, .cakora-category__more,
.cakora-cake__title, .cakora-testimonial__name, .wp-block-navigation a {
	overflow-wrap: normal;
	word-break: keep-all;
}
a[href^="http"], a[href^="mailto:"], a[href^="tel:"], code, kbd, pre, samp,
.cakora-contact-list a, .cakora-footer a[href^="mailto:"] {
	overflow-wrap: break-word;
}

/* Visible, consistent focus for keyboard users everywhere */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--berry-deep);
	outline-offset: 2px;
	border-radius: 4px;
}

.screen-reader-text {
	border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
	height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; word-wrap: normal !important;
}
.skip-link:focus {
	position: fixed; top: 10px; left: 10px; z-index: 9999;
	background: var(--wp--preset--color--cocoa); color: #fff;
	padding: 12px 20px; border-radius: 999px; text-decoration: none; font-weight: 700;
}

/* -------------------------------------------------------------------------
   2. Shared primitives
   ---------------------------------------------------------------------- */
.cakora-eyebrow {
	display: inline-block;
	font-size: 0.75rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase;
	color: var(--wp--preset--color--berry-deep); margin-bottom: 0.75rem;
}
.cakora-eyebrow--on-dark { color: var(--wp--preset--color--gold); }

.cakora-card {
	position: relative;
	background: var(--wp--preset--color--surface);
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg, 22px);
	box-shadow: var(--wp--preset--shadow--soft);
	overflow: hidden;
	transition: transform var(--wp--custom--transition, 220ms), box-shadow var(--wp--custom--transition, 220ms);
	height: 100%; display: flex; flex-direction: column;
}
.cakora-card:hover, .cakora-card:focus-within {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--lift);
}

.cakora-media { position: relative; display: block; aspect-ratio: 4 / 3; background: var(--wp--preset--color--blush); overflow: hidden; }
.cakora-media img, .cakora-media svg { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 400ms cubic-bezier(0.4,0,0.2,1); }
.cakora-card:hover .cakora-media img { transform: scale(1.04); }

.cakora-badge {
	position: absolute; top: 12px; left: 12px; z-index: 2;
	background: var(--wp--preset--color--berry-deep); color: #fff;
	font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
	padding: 6px 12px; border-radius: 999px;
}
.cakora-badge--gold { background: var(--wp--preset--color--cocoa); color: var(--wp--preset--color--gold); }
.cakora-badge--muted { background: var(--wp--preset--color--muted); }
.cakora-badge--static { position: static; display: inline-block; }

/* Components that must fill their wide container.
   WordPress caps every non-aligned child of a constrained container at
   `contentSize`, which is right for a column of prose but wrong for a card
   grid: it is what the wide container is there to hold. Opting these out is
   why Best Sellers can show four cards on a large desktop instead of being
   squeezed into the reading column. The `.is-layout-constrained >` prefix is
   needed to outrank core's own `:where()` rule. */
.is-layout-constrained > .cakora-grid,
.is-layout-constrained > .cakora-gallery,
.is-layout-constrained > .wp-block-gallery.cakora-gallery,
.is-layout-constrained > .cakora-filters,
.is-layout-constrained > .cakora-single,
.is-layout-constrained > .cakora-empty,
.is-layout-constrained > .cakora-testimonials--slider {
	max-width: none;
}

/* Card grid.
   Column count follows the width of the CONTAINER, not the viewport, because
   these grids are also used inside narrow columns, the footer and the single
   cake page. `--cakora-cols` is the maximum number of columns; the track
   formula never goes below `--cakora-min`, so columns drop away one at a time
   and cards never get squeezed into unusable slivers. */
.cakora-grid {
	--cakora-cols: 2;
	--cakora-min: 230px;
	--cakora-gap: 1.25rem;
	display: grid;
	gap: var(--cakora-gap);
	grid-template-columns: repeat(
		auto-fit,
		minmax(
			max(
				var(--cakora-min),
				calc((100% - (var(--cakora-cols) - 1) * var(--cakora-gap)) / var(--cakora-cols))
			),
			1fr
		)
	);
}
/* Flow-layout margins must not fight the grid gap. */
.cakora-grid > * { margin-block: 0; }
.cakora-grid--1 { --cakora-cols: 1; }
.cakora-grid--2 { --cakora-cols: 2; }
.cakora-grid--3 { --cakora-cols: 3; --cakora-min: 260px; }
.cakora-grid--4 { --cakora-cols: 4; --cakora-min: 230px; }
@media (min-width: 600px) { .cakora-grid { --cakora-gap: 1.5rem; } }
/* On the narrowest phones one column is always right. */
@media (max-width: 400px) { .cakora-grid { --cakora-min: 0px; --cakora-cols: 1; } }

/* Benefit / trust card grid (Why Cakora): slightly wider minimum so the
   four headings stay on one or two lines instead of breaking up. */
.cakora-grid--trust { --cakora-cols: 4; --cakora-min: 240px; }

/* WhatsApp buttons (shared) */
.cakora-wa {
	display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem;
	background: var(--wp--preset--color--berry-deep); color: #fff !important;
	font-size: 0.9375rem; font-weight: 700; letter-spacing: 0.01em; text-decoration: none !important;
	padding: 0.85rem 1.6rem; border-radius: 999px; border: 2px solid transparent;
	min-height: 48px; cursor: pointer; line-height: 1.2;
	transition: background var(--wp--custom--transition, 220ms), transform var(--wp--custom--transition, 220ms);
}
.cakora-wa:hover, .cakora-wa:focus { background: var(--wp--preset--color--cocoa); color: #fff !important; transform: translateY(-2px); }
.cakora-wa svg { width: 20px; height: 20px; flex: 0 0 auto; fill: currentColor; }
.cakora-wa--outline { background: transparent; color: var(--wp--preset--color--cocoa) !important; border-color: var(--wp--preset--color--cocoa); }
.cakora-wa--outline:hover, .cakora-wa--outline:focus { background: var(--wp--preset--color--cocoa); color: #fff !important; }
.cakora-wa--on-dark { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--cocoa-deep) !important; }
.cakora-wa--on-dark:hover, .cakora-wa--on-dark:focus { background: #fff; color: var(--wp--preset--color--cocoa-deep) !important; }
/* The in-card button must keep its label on one line at the narrowest
   card width, so its padding is tighter and wrapping is switched off. */
.cakora-wa--small { font-size: 0.875rem; padding: 0.7rem 0.9rem; min-height: 44px; width: 100%; }
.cakora-wa { white-space: nowrap; }
.cakora-wa span { white-space: nowrap; }
/* Allow a graceful two-line wrap only if a translation really is too long. */
.cakora-wa--block { white-space: normal; }
.cakora-wa--block span { white-space: normal; }
.cakora-wa--block { width: 100%; }

/* -------------------------------------------------------------------------
   3. Announcement bar + header
   ---------------------------------------------------------------------- */
.cakora-announcement {
	background: var(--wp--preset--color--cocoa); color: #fff;
	font-size: 0.8125rem; letter-spacing: 0.03em; text-align: center;
	padding: 0.6rem clamp(1rem, 4vw, 2.5rem);
}
.cakora-announcement a { color: var(--wp--preset--color--gold); }

.cakora-header {
	position: sticky; top: 0; z-index: 90;
	background: rgba(255, 248, 240, 0.94);
	backdrop-filter: saturate(180%) blur(12px);
	border-bottom: 1px solid var(--wp--preset--color--line);
}
@supports not (backdrop-filter: blur(12px)) { .cakora-header { background: var(--wp--preset--color--cream); } }
.cakora-header .wp-block-navigation__responsive-container-open,
.cakora-header .wp-block-navigation__responsive-container-close { color: var(--wp--preset--color--cocoa); }
.cakora-header .wp-block-navigation__responsive-container.is-menu-open { background: var(--wp--preset--color--cream); padding-top: 4rem; }
.cakora-header .wp-block-navigation__responsive-container.is-menu-open a { font-size: 1.25rem; }
.cakora-header .wp-block-navigation a:hover { color: var(--wp--preset--color--berry-deep); }
.cakora-header .wp-block-navigation .current-menu-item > a { color: var(--wp--preset--color--berry-deep); text-decoration: underline; text-underline-offset: 6px; }

.cakora-logo img { max-height: 54px; width: auto; }

/* WordPress switches its own navigation overlay on at 600px, which left the
   full menu plus the header button cramming together between 600px and
   ~900px. Keep the hamburger overlay until there is genuinely room. */
@media (max-width: 899px) {
	.cakora-header .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) { display: none; }
	.cakora-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.cakora-header .wp-block-navigation__responsive-container.is-menu-open { display: flex; }
}
/* Tighten the desktop menu before it can ever wrap. */
@media (min-width: 900px) and (max-width: 1199px) {
	.cakora-header .cakora-nav-primary { gap: 1.05rem; }
}
.cakora-header .wp-block-navigation__responsive-container-open { min-width: 44px; min-height: 44px; }
.cakora-header .wp-block-navigation__responsive-container-close { min-width: 44px; min-height: 44px; }

/* -------------------------------------------------------------------------
   4. Hero
   ---------------------------------------------------------------------- */
.cakora-hero { position: relative; overflow: hidden; }
.cakora-hero__trust {
	display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem;
	font-size: 0.875rem; color: var(--wp--preset--color--muted);
}
.cakora-hero__frame {
	border-radius: var(--wp--custom--radius--lg, 22px);
	overflow: hidden; box-shadow: var(--wp--preset--shadow--lift);
	aspect-ratio: 4 / 5;
}
.cakora-hero__frame img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cakora-hero__frame { margin: 0; }
/* "Our story" photograph, rendered from the Media Library by the plugin. */
.cakora-about__frame { margin: 0; border-radius: var(--wp--custom--radius--lg, 22px); overflow: hidden; box-shadow: var(--wp--preset--shadow--card); }
.cakora-about__frame img { width: 100%; height: auto; display: block; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 781px) { .cakora-hero__frame { aspect-ratio: 4 / 3; } }

/* -------------------------------------------------------------------------
   5. Category cards
   ---------------------------------------------------------------------- */
.cakora-category { position: relative; text-decoration: none !important; display: flex; flex-direction: column; height: 100%; }
.cakora-category .cakora-media { aspect-ratio: 1 / 1; }
.cakora-category__body { display: block; padding: 1rem 1.1rem 1.25rem; flex: 1 1 auto; }
.cakora-category__title { display: block; font-family: var(--wp--preset--font-family--display); font-size: 1.125rem; font-weight: 600; color: var(--wp--preset--color--cocoa); margin: 0 0 0.35rem; line-height: 1.3; }
.cakora-category__desc { display: block; font-size: 0.875rem; line-height: 1.5; color: var(--wp--preset--color--muted); margin: 0; }
.cakora-category__more { display: inline-flex; align-items: center; white-space: nowrap; gap: 0.3rem; margin-top: 0.9rem; font-size: 0.8125rem; font-weight: 700; color: var(--wp--preset--color--berry-deep); }
.cakora-category__more svg { width: 15px; height: 15px; flex: 0 0 auto; }
.cakora-category:hover .cakora-category__more { gap: 0.6rem; }

/* -------------------------------------------------------------------------
   6. Cake cards
   ---------------------------------------------------------------------- */
.cakora-cake__body { padding: 1.1rem 1.15rem 1.25rem; display: flex; flex-direction: column; gap: 0.6rem; flex: 1 1 auto; }
.cakora-cake__title { font-family: var(--wp--preset--font-family--display); font-size: 1.1875rem; font-weight: 600; line-height: 1.25; margin: 0; }
.cakora-cake__title a { color: var(--wp--preset--color--cocoa); text-decoration: none; }
.cakora-cake__title a:hover { color: var(--wp--preset--color--berry-deep); }
.cakora-cake__excerpt { font-size: 0.9rem; color: var(--wp--preset--color--muted); margin: 0; }
.cakora-cake__meta { display: flex; flex-wrap: wrap; gap: 0.35rem 0.75rem; font-size: 0.8125rem; color: var(--wp--preset--color--muted); margin: 0; padding: 0; list-style: none; }
.cakora-cake__meta li { display: block; }
.cakora-cake__meta strong { color: var(--wp--preset--color--ink); font-weight: 600; }
.cakora-cake__price { font-family: var(--wp--preset--font-family--display); font-size: 1.0625rem; font-weight: 700; color: var(--wp--preset--color--cocoa); margin: 0; }
.cakora-cake__price span { font-size: 0.75rem; font-weight: 600; color: var(--wp--preset--color--muted); display: block; text-transform: uppercase; letter-spacing: 0.08em; }
.cakora-cake__actions { margin-top: auto; padding-top: 0.35rem; }
.cakora-cake--unavailable .cakora-media { filter: grayscale(0.55); opacity: 0.8; }

/* Filters */
.cakora-filters { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.75rem; padding: 0; list-style: none; }
.cakora-filter {
	appearance: none; cursor: pointer;
	background: var(--wp--preset--color--surface); color: var(--wp--preset--color--ink);
	border: 1px solid var(--wp--preset--color--line); border-radius: 999px;
	font-size: 0.875rem; font-weight: 600; font-family: inherit;
	padding: 0.6rem 1.1rem; min-height: 44px;
	transition: all var(--wp--custom--transition, 220ms);
}
.cakora-filter:hover { border-color: var(--wp--preset--color--berry-deep); color: var(--wp--preset--color--berry-deep); }
.cakora-filter[aria-pressed="true"] { background: var(--wp--preset--color--cocoa); border-color: var(--wp--preset--color--cocoa); color: #fff; }
/* The cake filters hide this with the `hidden` attribute; make sure no
   later rule can resurrect it. */
.cakora-empty[hidden] { display: none !important; }
.cakora-empty { text-align: center; padding: 3rem 1rem; color: var(--wp--preset--color--muted); border: 1px dashed var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--lg, 22px); }

/* Single cake */
.cakora-single { display: grid; gap: 2rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 900px) { .cakora-single { grid-template-columns: 1.05fr 1fr; gap: 3rem; align-items: start; } }
.cakora-single__gallery { display: grid; gap: 0.75rem; }
.cakora-single__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.6rem; }
.cakora-single__thumbs button { padding: 0; border: 2px solid transparent; border-radius: 10px; overflow: hidden; background: none; cursor: pointer; aspect-ratio: 1/1; }
.cakora-single__thumbs button[aria-current="true"] { border-color: var(--wp--preset--color--berry-deep); }
.cakora-single__thumbs img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cakora-specs { list-style: none; margin: 1.5rem 0; padding: 0; border-top: 1px solid var(--wp--preset--color--line); }
.cakora-specs li { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; justify-content: space-between; padding: 0.8rem 0; border-bottom: 1px solid var(--wp--preset--color--line); font-size: 0.9375rem; }
.cakora-specs dt, .cakora-specs .label { color: var(--wp--preset--color--muted); }
.cakora-specs .value { font-weight: 600; text-align: right; }

/* -------------------------------------------------------------------------
   7. Trust points / values
   ---------------------------------------------------------------------- */
.cakora-trust { text-align: center; padding: 1.75rem 1.25rem; background: var(--wp--preset--color--surface); border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--lg, 22px); height: 100%; }
.cakora-trust__icon { width: 56px; height: 56px; margin: 0 auto 1rem; border-radius: 50%; background: var(--wp--preset--color--blush); display: grid; place-items: center; color: var(--wp--preset--color--berry-deep); }
.cakora-trust__icon svg { width: 28px; height: 28px; }
.cakora-trust h3 { font-size: 1.0625rem; margin: 0 0 0.4rem; }
.cakora-trust p { font-size: 0.9rem; color: var(--wp--preset--color--muted); margin: 0; }

/* -------------------------------------------------------------------------
   8. Gallery + lightbox
   ---------------------------------------------------------------------- */
/* Four tiles where there is room, two on a phone, following the container
   rather than the viewport. The minimum matches the gap actually in use so
   the sums work out at 360px as well as at 1240px. */
.cakora-gallery {
	--cakora-gallery-gap: 0.75rem;
	display: grid;
	gap: var(--cakora-gallery-gap);
	grid-template-columns: repeat(auto-fit, minmax(max(140px, calc((100% - 3 * var(--cakora-gallery-gap)) / 4)), 1fr));
}
@media (min-width: 782px) { .cakora-gallery { --cakora-gallery-gap: 1rem; } }
/* The core gallery block is a flex container by default. */
.wp-block-gallery.cakora-gallery.has-nested-images { display: grid; }
.wp-block-gallery.cakora-gallery.has-nested-images figure.wp-block-image { width: auto; margin: 0; }
.wp-block-gallery.cakora-gallery.has-nested-images figure.wp-block-image img { width: 100%; height: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
/* Tiles are real links (they open the full photograph without JavaScript);
   the lightbox takes over when the script is running. */
.cakora-gallery button,
.cakora-gallery .cakora-gallery__item {
	padding: 0; border: 0; background: none; cursor: zoom-in;
	border-radius: var(--wp--custom--radius--md, 14px); overflow: hidden;
	aspect-ratio: 1/1; display: block; text-decoration: none !important;
}
.cakora-gallery .cakora-gallery__item:focus-visible { outline: 3px solid var(--wp--preset--color--berry-deep); outline-offset: 3px; }
.cakora-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform 400ms; display: block; }
.cakora-gallery button:hover img,
.cakora-gallery .cakora-gallery__item:hover img { transform: scale(1.05); }
.cakora-gallery figcaption { font-size: 0.8125rem; color: var(--wp--preset--color--muted); }

.cakora-lightbox { position: fixed; inset: 0; z-index: 1000; background: rgba(39,35,33,0.92); display: none; align-items: center; justify-content: center; padding: 1.5rem; }
.cakora-lightbox[open], .cakora-lightbox.is-open { display: flex; }
.cakora-lightbox img { max-width: min(96vw, 1000px); max-height: 82vh; border-radius: var(--wp--custom--radius--md, 14px); object-fit: contain; }
.cakora-lightbox__caption { color: #fff; text-align: center; margin-top: 1rem; font-size: 0.9rem; }
.cakora-lightbox__close, .cakora-lightbox__nav {
	position: absolute; background: rgba(255,255,255,0.14); color: #fff; border: 0; border-radius: 50%;
	width: 48px; height: 48px; font-size: 1.4rem; cursor: pointer; display: grid; place-items: center;
}
.cakora-lightbox__close { top: 1rem; right: 1rem; }
.cakora-lightbox__nav--prev { left: 0.75rem; top: 50%; transform: translateY(-50%); }
.cakora-lightbox__nav--next { right: 0.75rem; top: 50%; transform: translateY(-50%); }
.cakora-lightbox__close:hover, .cakora-lightbox__nav:hover { background: rgba(255,255,255,0.28); }

/* -------------------------------------------------------------------------
   9. Testimonials
   ---------------------------------------------------------------------- */
.cakora-testimonial { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.85rem; }
.cakora-testimonial__stars { color: var(--wp--preset--color--gold); letter-spacing: 0.12em; font-size: 1rem; }
/* A review headline, shown when the post title is used as one rather than
   as the customer's name (see cakora_testimonial_parts() in the plugin). */
.cakora-testimonial__headline {
	font-weight: 700; font-size: 0.9375rem; color: var(--wp--preset--color--cocoa);
	margin: 0; line-height: 1.35;
}
.cakora-testimonial__quote { font-family: var(--wp--preset--font-family--display); font-size: 1.0625rem; line-height: 1.6; color: var(--wp--preset--color--ink); margin: 0; }
.cakora-testimonial__person { display: flex; align-items: center; gap: 0.75rem; margin-top: auto; }
.cakora-testimonial__avatar { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; background: var(--wp--preset--color--blush); flex: 0 0 auto; }
.cakora-testimonial__initial { display: grid; place-items: center; font-weight: 700; color: var(--wp--preset--color--berry-deep); font-family: var(--wp--preset--font-family--display); }
.cakora-testimonial__name { font-weight: 700; font-size: 0.9375rem; margin: 0; color: var(--wp--preset--color--cocoa); }
.cakora-testimonial__occasion { font-size: 0.8125rem; color: var(--wp--preset--color--muted); margin: 0; }
.cakora-placeholder-note {
	font-size: 0.8125rem; color: var(--wp--preset--color--muted); text-align: center;
	background: var(--wp--preset--color--blush); border-radius: 999px; padding: 0.55rem 1.1rem; display: inline-block;
}

/* Scroll slider on mobile, grid on desktop */
@media (max-width: 781px) {
	.cakora-testimonials--slider { display: flex; gap: 1rem; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 0.75rem; margin-inline: calc(var(--wp--style--root--padding-right, 1rem) * -1); padding-inline: var(--wp--style--root--padding-right, 1rem); -webkit-overflow-scrolling: touch; }
	.cakora-testimonials--slider > * { flex: 0 0 82%; scroll-snap-align: center; }
}

/* -------------------------------------------------------------------------
   10. FAQ
   ---------------------------------------------------------------------- */
.cakora-faq { border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--lg, 22px); background: var(--wp--preset--color--surface); overflow: hidden; }
.cakora-faq__item + .cakora-faq__item { border-top: 1px solid var(--wp--preset--color--line); }
.cakora-faq__q {
	display: flex; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer;
	padding: 1.1rem 1.25rem; font-weight: 600; font-size: 1rem; color: var(--wp--preset--color--cocoa);
	list-style: none; min-height: 48px;
}
.cakora-faq__q::-webkit-details-marker { display: none; }
.cakora-faq__q:hover { background: var(--wp--preset--color--blush); }
.cakora-faq__icon { flex: 0 0 auto; width: 22px; height: 22px; position: relative; transition: transform var(--wp--custom--transition, 220ms); }
.cakora-faq__icon::before, .cakora-faq__icon::after { content: ""; position: absolute; background: var(--wp--preset--color--berry-deep); border-radius: 2px; }
.cakora-faq__icon::before { inset: 10px 3px auto 3px; height: 2px; }
.cakora-faq__icon::after { inset: 3px 10px 3px auto; width: 2px; transition: opacity var(--wp--custom--transition, 220ms); }
.cakora-faq__item[open] .cakora-faq__icon::after { opacity: 0; }
.cakora-faq__a { padding: 0 1.25rem 1.25rem; color: var(--wp--preset--color--muted); font-size: 0.95rem; }
.cakora-faq__a > :first-child { margin-top: 0; }
.cakora-faq__a > :last-child { margin-bottom: 0; }

/* -------------------------------------------------------------------------
   11. Bands, CTA, delivery
   ---------------------------------------------------------------------- */
.cakora-band { border-radius: var(--wp--custom--radius--lg, 22px); overflow: hidden; }
.cakora-cta-dark { background: var(--wp--preset--gradient--cocoa-fade); color: #fff; }
.cakora-cta-dark h2, .cakora-cta-dark h3 { color: #fff; }
.cakora-cta-dark p { color: rgba(255,255,255,0.86); }
.cakora-cta-dark a:not(.cakora-wa) { color: var(--wp--preset--color--gold); }
.cakora-delivery {
	display: flex; gap: 1rem; align-items: flex-start;
	background: var(--wp--preset--color--blush); border-radius: var(--wp--custom--radius--lg, 22px);
	padding: 1.5rem; border: 1px solid var(--wp--preset--color--line);
}
.cakora-delivery svg { width: 32px; height: 32px; flex: 0 0 auto; color: var(--wp--preset--color--berry-deep); }
.cakora-delivery p { margin: 0; }

/* -------------------------------------------------------------------------
   12. Forms
   ---------------------------------------------------------------------- */
.cakora-form { background: var(--wp--preset--color--surface); border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--lg, 22px); padding: clamp(1.25rem, 4vw, 2.25rem); box-shadow: var(--wp--preset--shadow--card); }
.cakora-form__grid { display: grid; gap: 1.1rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 700px) { .cakora-form__grid--2 { grid-template-columns: repeat(2, minmax(0,1fr)); } .cakora-field--full { grid-column: 1 / -1; } }
.cakora-field { display: flex; flex-direction: column; gap: 0.4rem; }
.cakora-field label { font-size: 0.875rem; font-weight: 600; color: var(--wp--preset--color--cocoa); }
.cakora-field .req { color: var(--wp--preset--color--berry-deep); }
.cakora-field .hint { font-size: 0.8125rem; color: var(--wp--preset--color--muted); }
.cakora-field input, .cakora-field select, .cakora-field textarea {
	font: inherit; font-size: 1rem; color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--cream);
	border: 1px solid var(--wp--preset--color--line); border-radius: var(--wp--custom--radius--sm, 8px);
	padding: 0.75rem 0.85rem; width: 100%; min-height: 48px;
	transition: border-color var(--wp--custom--transition, 220ms), box-shadow var(--wp--custom--transition, 220ms);
}
.cakora-field textarea { min-height: 120px; resize: vertical; }
.cakora-field input:focus, .cakora-field select:focus, .cakora-field textarea:focus {
	border-color: var(--wp--preset--color--berry-deep); box-shadow: 0 0 0 3px rgba(142,63,77,0.14); outline: none;
}
.cakora-field input[aria-invalid="true"], .cakora-field select[aria-invalid="true"], .cakora-field textarea[aria-invalid="true"] { border-color: #B3261E; box-shadow: 0 0 0 3px rgba(179,38,30,0.12); }
.cakora-error { color: #8C1D18; font-size: 0.8125rem; min-height: 0; }
.cakora-error:empty { display: none; }
.cakora-consent { display: flex; align-items: flex-start; gap: 0.65rem; font-size: 0.875rem; color: var(--wp--preset--color--muted); }
.cakora-consent input { width: 20px; height: 20px; min-height: 20px; flex: 0 0 auto; margin-top: 2px; accent-color: var(--wp--preset--color--berry-deep); }
.cakora-form__notice { background: var(--wp--preset--color--blush); border-left: 3px solid var(--wp--preset--color--gold); padding: 0.85rem 1rem; border-radius: 0 8px 8px 0; font-size: 0.875rem; color: var(--wp--preset--color--ink); }
.cakora-form__status { font-size: 0.9375rem; font-weight: 600; }
.cakora-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* -------------------------------------------------------------------------
   13. Floating WhatsApp button
   ---------------------------------------------------------------------- */
.cakora-float {
	position: fixed; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom));
	z-index: 95; width: 56px; height: 56px; border-radius: 50%;
	/* Darker WhatsApp green: the brand #25D366 fails contrast against white. */
	background: #075E54; color: #fff !important; display: grid; place-items: center;
	box-shadow: 0 8px 24px rgba(0,0,0,0.22); text-decoration: none !important;
	transition: transform var(--wp--custom--transition, 220ms), box-shadow var(--wp--custom--transition, 220ms);
}
.cakora-float:hover, .cakora-float:focus { background: #0A7A6C; transform: scale(1.07); box-shadow: 0 12px 32px rgba(0,0,0,0.28); color: #fff !important; }
.cakora-float svg { width: 30px; height: 30px; fill: currentColor; }
.cakora-float__label { display: none; }
@media (min-width: 782px) {
	.cakora-float { width: auto; height: auto; border-radius: 999px; padding: 0.85rem 1.35rem; gap: 0.55rem; grid-auto-flow: column; align-items: center; font-weight: 700; font-size: 0.9375rem; }
	.cakora-float__label { display: inline; }
	.cakora-float svg { width: 22px; height: 22px; }
}
/* Keep clear of content and of the footer's bottom row at every width. */
body.cakora-has-float .cakora-footer__bottom { padding-bottom: 4.5rem; }
@media (min-width: 782px) {
	body.cakora-has-float .cakora-footer__bottom { padding-bottom: 3rem; }
}
@media (max-width: 781px) {
	body.cakora-has-float .wp-site-blocks { padding-bottom: 88px; }
	/* A full-width CTA button and the floating bubble must not collide. */
	body.cakora-has-float .cakora-cta-dark .cakora-wa--block { margin-bottom: 0; }
}

/* -------------------------------------------------------------------------
   14. Footer
   ---------------------------------------------------------------------- */
.cakora-footer { background: var(--wp--preset--color--cocoa-deep); color: rgba(255,255,255,0.82); }
.cakora-footer h2, .cakora-footer h3, .cakora-footer h4 { color: #fff; }
.cakora-footer a { color: rgba(255,255,255,0.82); text-decoration: none; }
.cakora-footer a:hover, .cakora-footer a:focus { color: var(--wp--preset--color--gold); text-decoration: underline; }
.cakora-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.55rem; font-size: 0.9375rem; }
.cakora-footer .wp-block-navigation { gap: 0.55rem; }
.cakora-footer__bottom { border-top: 1px solid rgba(255,255,255,0.14); font-size: 0.8125rem; color: rgba(255,255,255,0.62); }
.cakora-social { display: flex; gap: 0.6rem; }
.cakora-social a { width: 42px; height: 42px; border-radius: 50%; background: rgba(255,255,255,0.1); display: grid; place-items: center; }
.cakora-social a:hover { background: var(--wp--preset--color--gold); color: var(--wp--preset--color--cocoa-deep) !important; }
.cakora-social svg { width: 20px; height: 20px; fill: currentColor; }

/* -------------------------------------------------------------------------
   15. 404 & misc
   ---------------------------------------------------------------------- */
.cakora-404 { text-align: center; padding: clamp(3rem, 8vw, 6rem) 0; }
.cakora-404__code { font-family: var(--wp--preset--font-family--display); font-size: clamp(4rem, 14vw, 8rem); line-height: 1; color: var(--wp--preset--color--berry); margin: 0; }
.cakora-map { border-radius: var(--wp--custom--radius--lg, 22px); overflow: hidden; border: 1px solid var(--wp--preset--color--line); line-height: 0; }
.cakora-map iframe { width: 100%; height: 340px; border: 0; display: block; }
.cakora-contact-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 1rem; }
.cakora-contact-list li { display: flex; gap: 0.85rem; align-items: flex-start; }
.cakora-contact-list svg { width: 22px; height: 22px; flex: 0 0 auto; color: var(--wp--preset--color--berry-deep); margin-top: 3px; }
.cakora-contact-list a { color: var(--wp--preset--color--ink); text-decoration: none; }
.cakora-contact-list a:hover { color: var(--wp--preset--color--berry-deep); text-decoration: underline; }
.cakora-contact-list .label { display: block; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.1em; color: var(--wp--preset--color--muted); font-weight: 700; }

.cakora-placeholder-img { background: linear-gradient(135deg, #FBEDE7 0%, #F3E2D4 100%); display: grid; place-items: center; color: var(--wp--preset--color--berry); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
	.cakora-card:hover { transform: none; }
	.cakora-card:hover .cakora-media img { transform: none; }
	.cakora-wa:hover { transform: none; }
}

/* Print */
@media print {
	.cakora-float, .cakora-header, .cakora-announcement, .cakora-footer, .cakora-filters { display: none !important; }
}

/* -------------------------------------------------------------------------
   16. Utilities added by the Cakora Core blocks
   ---------------------------------------------------------------------- */
/* "Hide on small phones" really means "only show where there is room":
   below 1024px the header would otherwise overflow, and the floating
   WhatsApp button already covers those widths. */
.cakora-hide-mobile { display: none; }
@media (min-width: 1024px) { .cakora-hide-mobile { display: inline-flex; } }
.cakora-wa-wrap.cakora-hide-mobile { display: none; }
@media (min-width: 1024px) { .cakora-wa-wrap.cakora-hide-mobile { display: flex; } }

.cakora-wa-wrap { display: flex; }
.cakora-wa-wrap.has-text-align-center { justify-content: center; }
.cakora-wa-wrap.has-text-align-right { justify-content: flex-end; }

.cakora-category-links { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.55rem; font-size: 0.9375rem; }

.cakora-single__content { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--wp--preset--color--line); }
.cakora-single__details > h1 { margin-top: 0.25rem; }
.cakora-single__main { box-shadow: var(--wp--preset--shadow--card); }

.cakora-trust__icon-img { margin-bottom: 1rem !important; }
.cakora-trust__icon-img img { width: 56px; height: 56px; border-radius: 50%; background: var(--wp--preset--color--blush); padding: 12px; }

.cakora-delivery-short { font-size: 0.9375rem; }
.cakora-delivery-short svg { width: 20px; height: 20px; flex: 0 0 auto; }

.cakora-contact-list--footer .label { color: rgba(255,255,255,0.55); }
.cakora-contact-list--footer a { color: rgba(255,255,255,0.86); }
.cakora-contact-list--footer svg { color: var(--wp--preset--color--gold); }

/* Core gallery used as the celebration gallery */
.cakora-lightbox-gallery figure img { cursor: zoom-in; border-radius: var(--wp--custom--radius--md, 14px); }

/* Outline buttons and the site title sitting on the dark bands */
.cakora-cta-dark .wp-block-button.is-style-outline .wp-block-button__link,
.cakora-band.cakora-cta-dark .wp-block-button.is-style-outline .wp-block-button__link {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.7);
}
.cakora-cta-dark .wp-block-button.is-style-outline .wp-block-button__link:hover,
.cakora-cta-dark .wp-block-button.is-style-outline .wp-block-button__link:focus {
	background: #fff;
	color: var(--wp--preset--color--cocoa-deep);
	border-color: #fff;
}
.cakora-footer .wp-block-site-title a { color: #fff; }
.cakora-footer .wp-block-site-title a:hover { color: var(--wp--preset--color--gold); }
