/*
Theme Name: Pressed Flowers by Nell
Theme URI: https://pressedbynell.ie
Description: Child theme of Spectra One for Pressed Flowers by Nell. Brand palette, locally hosted Playfair Display and Libre Baskerville, landing page template and the Pressed Flowers block patterns.
Author: Design My Website
Author URI: https://designmywebsite.ie
Template: spectra-one
Version: 1.0.0
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.1
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: spectra-one-child
*/

/* ---------------------------------------------------------------
   Utility classes used by the Pressed Flowers patterns.
   Everything colour-related references the theme.json palette
   variables so the client can retune colours in Styles.
   --------------------------------------------------------------- */

/* Small caps kicker above section headings */
.pfn-kicker {
	font-family: var(--wp--preset--font-family--libre-baskerville);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 400;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--green);
}

/* Legibility overlay for text on a photo (hero, tiles, banners), sitewide.
   24 Sep 2026: the white fade is gone; every overlay is the soft dark fade with white words. */
.pfn-hero-overlay { background: linear-gradient(180deg, rgba(42,36,38,.04) 0%, rgba(42,36,38,.22) 45%, rgba(42,36,38,.64) 100%); }
.pfn-hero-overlay .wp-block-spectra-content { color: var(--wp--preset--color--white); text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.pfn-hero-overlay .pfn-kicker { color: var(--wp--preset--color--white); }

/* Secondary (outline) button */
.pfn-button-secondary .wp-block-button__link,
.pfn-button-secondary.wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--green);
	border: 1.5px solid var(--wp--preset--color--green);
}
.pfn-button-secondary .wp-block-button__link:hover,
.pfn-button-secondary.wp-block-button__link:hover {
	background: var(--wp--preset--color--whim);
	color: var(--wp--preset--color--green);
	border-color: var(--wp--preset--color--green);
}

/* Secondary button on a dark background */
.pfn-button-secondary-light .wp-block-button__link,
.pfn-button-secondary-light.wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--white);
	border: 1.5px solid var(--wp--preset--color--white);
}
.pfn-button-secondary-light .wp-block-button__link:hover,
.pfn-button-secondary-light.wp-block-button__link:hover {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
}

/* Muted greyscale logo strip (stockists and awards) */
.pfn-logo-strip img {
	filter: grayscale(1);
	opacity: 0.65;
	transition: opacity 0.3s ease, filter 0.3s ease;
}
.pfn-logo-strip img:hover {
	filter: grayscale(0);
	opacity: 1;
}

/* Portrait journey images keep a consistent frame */
.pfn-journey-image img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: var(--wp--custom--border-radius--small);
}

/* Gallery images get a soft radius and a gentle lift on hover */
.pfn-gallery .wp-block-image img {
	border-radius: var(--wp--custom--border-radius--x-small);
	transition: transform 0.4s ease;
}
.pfn-gallery .wp-block-image:hover img {
	transform: translateY(-3px);
}

/* Testimonial quote mark */
.pfn-quote::before {
	content: "\201C";
	display: block;
	font-family: var(--wp--preset--font-family--playfair-display);
	font-size: 4rem;
	line-height: 0.6;
	color: var(--wp--preset--color--baby-pink);
	margin-bottom: 0.5rem;
}

/* No sideways scroll (client 12 Oct 2026, cart page: "I am able to scroll across slightly"). Full-width bands are sized 100vw, which
   counts the vertical scrollbar, so wherever scrollbars are always visible they stick out ~15px. clip (not hidden) keeps position: sticky working. */
html, body { overflow-x: clip; }

/* Full-bleed helper for Spectra containers placed inside the constrained post content */
.pfn-full-bleed {
	width: 100vw;
	max-width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: calc(50% - 50vw);
}

/* Masonry gallery: overrides the core gallery flex layout with CSS columns.
   Lightbox and per-image editing still work as normal. */
.wp-block-gallery.pfn-masonry {
	display: block;
	column-count: 4;
	column-gap: var(--wp--preset--spacing--x-small);
}
.wp-block-gallery.pfn-masonry .wp-block-image {
	width: 100% !important;
	break-inside: avoid;
	margin: 0 0 var(--wp--preset--spacing--x-small) 0 !important;
}
@media (max-width: 1023.98px) {
	.wp-block-gallery.pfn-masonry { column-count: 3; }
}
@media (max-width: 767.98px) {
	.wp-block-gallery.pfn-masonry { column-count: 2; }
}

/* ---------------------------------------------------------------
   Header and footer
   --------------------------------------------------------------- */
.pfn-header .wp-block-site-title a { text-decoration: none; }
.pfn-utility-nav a { letter-spacing: 0.06em; text-transform: uppercase; }
.pfn-header-cta .wp-block-button__link { padding: 0.85em 1.4em; white-space: nowrap; }
/* Collapse the primary menu into the hamburger up to tablet width (core only
   does this below 600px) and hide the utility links / CTA on small screens.
   !important is needed because core's layout classes set display:flex with
   higher specificity. */
@media (max-width: 1023.98px) {
	.pfn-utility-nav { display: none !important; }
	.pfn-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
	.pfn-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
}
@media (max-width: 1023.98px) {
	/* The wedding-date CTA also lives in the mobile menu under Bridal. */
	.pfn-header-cta { display: none !important; }
}
@media (max-width: 767.98px) {
	.pfn-header { padding-left: var(--wp--preset--spacing--x-small) !important; padding-right: var(--wp--preset--spacing--x-small) !important; }
	.pfn-header > .wp-block-group { gap: var(--wp--preset--spacing--x-small); }
	.pfn-header .wp-block-site-title { font-size: 1.05rem !important; }
}
/* WooCommerce hooks its account and mini-cart icons into the header; keep them small and on brand. */
.pfn-header .wp-block-woocommerce-customer-account a,
.pfn-header .wc-block-mini-cart__button { color: var(--wp--preset--color--ink); }
.pfn-header .wc-block-customer-account__account-label { display: none; }
.pfn-header .wp-block-site-title { white-space: nowrap; }

.pfn-kicker-light { color: var(--wp--preset--color--baby-pink); }
.pfn-footer .wp-block-navigation a { text-decoration: none; }
.pfn-footer .wp-block-navigation a:hover { text-decoration: underline; }
.pfn-footer .wp-block-site-title a { color: var(--wp--preset--color--white); text-decoration: none; }

/* Fluent Forms newsletter inside the dark footer */
.pfn-footer .fluentform .ff-el-form-control {
	background: rgba(255, 255, 255, 0.08);
	border: 1px solid rgba(255, 255, 255, 0.35);
	color: var(--wp--preset--color--white);
	border-radius: 4px;
	font-family: inherit;
}
.pfn-footer .fluentform .ff-el-form-control::placeholder { color: rgba(255, 255, 255, 0.6); }
.pfn-footer .fluentform .ff-el-input--label label { color: var(--wp--preset--color--white); font-size: 0.85rem; }
.pfn-footer .fluentform .ff-btn-submit {
	background-color: var(--wp--preset--color--white) !important;
	color: var(--wp--preset--color--ink) !important;
	border: 0;
	border-radius: 4px;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-family: inherit;
	font-size: 0.85rem;
	padding: 0.9em 1.6em;
}
.pfn-footer .fluentform .ff-btn-submit:hover { background-color: var(--wp--preset--color--blush) !important; }
.pfn-footer .fluentform .ff-btn-submit:focus-visible {
	outline: 2px solid var(--wp--preset--color--white);
	outline-offset: 3px;
}

/* Header sizing */
.pfn-header-cta .wp-block-button__link { font-size: 0.72rem; letter-spacing: 0.06em; padding: 0.8em 1.1em; white-space: nowrap; }
.pfn-header .wp-block-navigation { font-size: 0.9rem; }
.pfn-utility-bar .wp-block-navigation a { letter-spacing: 0.06em; text-transform: uppercase; text-decoration: none; }
.pfn-utility-bar .wc-block-customer-account__account-icon { width: 18px; height: 18px; }
.pfn-header .wc-block-mini-cart__button { padding: 0; }
@media (max-width: 1023.98px) {
	.wp-block-buttons.pfn-header-cta { display: none !important; }
}
@media (max-width: 767.98px) {
	/* Client 5 Oct 2026: the tagline shows on phones too (the Contact / Reviews links stay desktop only). */
	.pfn-utility-bar > .wp-block-group > .wp-block-group:last-child { display: none !important; }
	.pfn-utility-bar > .wp-block-group { justify-content: center !important; }
	.pfn-utility-bar .pfn-utility-tagline { text-align: center; font-size: .62rem !important; letter-spacing: .06em; line-height: 1.35; margin: 0; }
	.pfn-header { padding-left: var(--wp--preset--spacing--x-small) !important; padding-right: var(--wp--preset--spacing--x-small) !important; }
	.pfn-header > .wp-block-group { gap: var(--wp--preset--spacing--x-small) !important; }
	.pfn-header .wp-block-site-title { font-size: 1rem !important; }
}
/* Between 600px and 1023px core shows the full menu; keep the hamburger instead */
@media (min-width: 600px) and (max-width: 1023.98px) {
	.pfn-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
	.pfn-header .wp-block-navigation__responsive-container-open { display: flex; }
}

/* Fluent Forms: brand the fields and buttons everywhere (the plugin inlines its own colours) */
.fluentform .ff-el-form-control { font-family: inherit; border-radius: 4px; border-color: var(--wp--preset--color--outline); }
.fluentform .ff-el-input--label label { font-family: inherit; font-weight: 400; }
.fluentform .ff-btn-submit {
	background-color: var(--wp--preset--color--green) !important;
	color: var(--wp--preset--color--white) !important;
	border: 0 !important;
	border-radius: 4px !important;
	font-family: inherit !important;
	font-size: 0.85rem !important;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 0.9em 1.6em !important;
}
.fluentform .ff-btn-submit:hover { background-color: var(--wp--preset--color--green-dark) !important; }

/* ---------------------------------------------------------------
   WooCommerce polish (shop, category, product, cart, checkout)
   --------------------------------------------------------------- */
.wc-block-breadcrumbs, .woocommerce-breadcrumb { font-size: var(--wp--preset--font-size--x-small); letter-spacing: 0.04em; text-transform: uppercase; }
.wc-block-breadcrumbs a, .woocommerce-breadcrumb a { text-decoration: none; color: var(--wp--preset--color--ink-soft); }
.wp-block-post-title.wc-block-components-product-title,
.wc-block-grid__product-title, .woocommerce-loop-product__title {
	font-family: var(--wp--preset--font-family--playfair-display) !important;
	font-size: 1.05rem !important;
	font-weight: 500;
}
.wc-block-components-product-price, .price { color: var(--wp--preset--color--ink-soft); font-size: 0.95rem; }
.wc-block-components-product-price ins, .price ins { text-decoration: none; color: var(--wp--preset--color--green); }
.wc-block-components-product-sale-badge, .onsale {
	background: var(--wp--preset--color--baby-pink) !important;
	color: var(--wp--preset--color--ink) !important;
	border: 0 !important;
	border-radius: 999px !important;
	font-family: var(--wp--preset--font-family--libre-baskerville) !important;
	letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.7rem !important;
}
.wc-block-grid__product-image img, .wc-block-components-product-image img, .woocommerce-loop-product__link img { border-radius: 6px; }
.wc-block-product-template .wc-block-components-product-button .wp-block-button__link,
.wp-block-button.wc-block-components-product-button .wp-block-button__link { font-size: 0.75rem; padding: 0.85em 1.3em; }
.wc-block-components-notice-banner { border-radius: 6px; }
select.orderby, .wc-block-components-select, .woocommerce-ordering select { font-family: inherit; border-radius: 4px; border: 1px solid var(--wp--preset--color--outline); padding: 0.4em 0.6em; }
.wc-block-components-product-details, .wc-block-components-product-metadata { font-size: 0.85rem; }
.wc-block-components-checkout-step__title, .wc-block-components-title, .wc-block-cart__totals-title { font-family: var(--wp--preset--font-family--playfair-display); font-weight: 500; }
.wc-block-components-button, .wc-block-cart__submit-button, .wc-block-components-checkout-place-order-button {
	background-color: var(--wp--preset--color--green) !important; color: #fff !important; border-radius: 4px !important;
	font-family: var(--wp--preset--font-family--libre-baskerville) !important; text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.85rem !important;
}
.wc-block-components-button:hover, .wc-block-cart__submit-button:hover { background-color: var(--wp--preset--color--green-dark) !important; }
.wc-block-components-text-input input, .wc-block-components-select select, .wc-block-components-textarea { border-radius: 4px; font-family: inherit; }
.single-product .wp-block-post-title { font-size: var(--wp--preset--font-size--xxx-large); }
.wc-tab, .wc-tabs li a { font-family: var(--wp--preset--font-family--libre-baskerville) !important; }

/* Brand logo */
.pfn-logo img { height: auto; }
@media (max-width: 767.98px) {
	.pfn-header .pfn-logo img { width: 130px !important; }
}
.pfn-footer-logo { display: inline-block; }
.pfn-footer-logo img { display: block; width: 260px; max-width: 100%; height: auto; background: none; padding: 0; box-shadow: none; }

/* Header search (icon that expands) */
.pfn-search .wp-block-search__button { background: transparent; border: 0; color: var(--wp--preset--color--ink); padding: 6px; }
.pfn-search .wp-block-search__button:hover { color: var(--wp--preset--color--green); }
.pfn-search .wp-block-search__input { font-family: inherit; font-size: 0.85rem; border: 1px solid var(--wp--preset--color--outline); border-radius: 4px; }
.pfn-search.wp-block-search__button-only .wp-block-search__inside-wrapper { border: 0; }

/* Pagination (shop archives, journal) */
.wp-block-query-pagination {
	margin-top: var(--wp--preset--spacing--large);
	gap: var(--wp--preset--spacing--x-small);
	align-items: center;
	font-family: var(--wp--preset--font-family--libre-baskerville);
	font-size: 0.9rem;
}
.wp-block-query-pagination-numbers { display: inline-flex; gap: 6px; align-items: center; }
.wp-block-query-pagination-numbers .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 42px; height: 42px; padding: 0 8px;
	border: 1px solid var(--wp--preset--color--outline); border-radius: 999px;
	color: var(--wp--preset--color--ink); text-decoration: none;
	transition: background 0.2s ease, border-color 0.2s ease;
}
.wp-block-query-pagination-numbers a.page-numbers:hover { border-color: var(--wp--preset--color--green); color: var(--wp--preset--color--green); }
.wp-block-query-pagination-numbers .page-numbers.current { background: var(--wp--preset--color--green); border-color: var(--wp--preset--color--green); color: var(--wp--preset--color--white); }
.wp-block-query-pagination-numbers .page-numbers.dots { border: 0; min-width: 24px; color: var(--wp--preset--color--ink-soft); }
.wp-block-query-pagination-previous, .wp-block-query-pagination-next {
	font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; text-decoration: none;
	color: var(--wp--preset--color--ink); padding: 0 6px;
}
.wp-block-query-pagination-previous:hover, .wp-block-query-pagination-next:hover { color: var(--wp--preset--color--green); }
.wp-block-query-pagination-previous-arrow { margin-right: 6px; }
.wp-block-query-pagination-next-arrow { margin-left: 6px; }

/* Shop and category archives */
.pfn-archive-hero .pfn-breadcrumbs { text-align: center; margin-bottom: var(--wp--preset--spacing--x-small); }
.pfn-archive-hero .wp-block-query-title { font-size: var(--wp--preset--font-size--xxx-large); margin: 0; }
.pfn-archive-hero .wp-block-term-description { max-width: 640px; margin-left: auto; margin-right: auto; }
.pfn-shop-toolbar .wc-block-product-results-count, .pfn-shop-toolbar .woocommerce-result-count { margin: 0; color: var(--wp--preset--color--ink-soft); letter-spacing: 0.04em; text-transform: uppercase; }
.pfn-shop-toolbar .wc-block-catalog-sorting select { font-family: inherit; font-size: 0.8rem; border: 0; background: transparent; padding-right: 1.5em; cursor: pointer; }
.pfn-shop-filters .pfn-filter-title { font-family: var(--wp--preset--font-family--libre-baskerville); font-weight: 400; letter-spacing: 0.14em; text-transform: uppercase; font-size: 0.75rem !important; color: var(--wp--preset--color--green); margin: 0 0 var(--wp--preset--spacing--xx-small); }
.pfn-shop-filters .wp-block-woocommerce-product-filter-price,
.pfn-shop-filters .wp-block-woocommerce-product-filter-taxonomy,
.pfn-shop-filters .wp-block-woocommerce-product-filter-attribute,
.pfn-shop-filters .wp-block-woocommerce-product-filter-status { padding: var(--wp--preset--spacing--small) 0; border-top: 1px solid var(--wp--preset--color--outline); }
.pfn-shop-filters .wc-block-product-filter-checkbox-list__label { font-size: 0.9rem; }
.pfn-shop-filters .wc-block-product-filter-checkbox-list__input:checked { accent-color: var(--wp--preset--color--green); }
.pfn-shop-filters .wc-block-product-filter-price-slider__range { --wc-product-filter-price-slider-range-color: var(--wp--preset--color--green); }
.pfn-shop-filters .wc-block-product-filter-price-slider input[type="range"] { accent-color: var(--wp--preset--color--green); }
.pfn-shop-filters .wc-block-product-filter-removable-chips__item { border-radius: 999px; background: var(--wp--preset--color--blush); border: 0; font-size: 0.8rem; }
.pfn-shop-filters .wc-block-product-filter-clear-button, .pfn-shop-filters .wc-block-product-filters__clear-button { font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--green); }
.pfn-shop-filters .wc-block-product-filters__open-overlay { border: 1px solid var(--wp--preset--color--outline); border-radius: 4px; font-family: inherit; font-size: 0.8rem; letter-spacing: 0.06em; text-transform: uppercase; padding: 0.7em 1.2em; background: var(--wp--preset--color--white); }
.pfn-product-grid .wc-block-components-product-image img { border-radius: 6px; transition: transform 0.4s ease; }
.pfn-product-grid .wc-block-components-product-image:hover img { transform: scale(1.02); }
.pfn-product-grid .wp-block-post-title a { text-decoration: none; }
.pfn-product-grid .wp-block-post-title a:hover { color: var(--wp--preset--color--green); }
.pfn-product-grid .wc-block-components-product-button .wp-block-button__link { font-size: 0.7rem; padding: 0.8em 1.2em; }
@media (max-width: 781px) {
	.pfn-shop-columns { flex-wrap: wrap; }
	.pfn-shop-filters { flex-basis: 100% !important; }
}

/* ---------------------------------------------------------------
   Header, sharper: small caps nav, pill CTA, aligned icons
   --------------------------------------------------------------- */
.pfn-header { position: relative; z-index: 20; }
.pfn-header .wp-block-navigation { font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase; }
.pfn-header .wp-block-navigation .wp-block-navigation-item__label { font-weight: 400; }
.pfn-header .wp-block-navigation-item__content { padding: 6px 0; border-bottom: 1px solid transparent; transition: border-color 0.2s ease, color 0.2s ease; }
.pfn-header .wp-block-navigation-item__content:hover, .pfn-header .current-menu-item > .wp-block-navigation-item__content { border-bottom-color: var(--wp--preset--color--green); }
.pfn-header .wp-block-navigation__submenu-icon { width: 10px; opacity: 0.6; }
.pfn-header .wp-block-navigation__submenu-container { border: 1px solid var(--wp--preset--color--outline) !important; border-radius: 6px; box-shadow: 0 12px 30px rgba(42, 36, 38, 0.08); padding: 10px 0 !important; text-transform: none; letter-spacing: 0.02em; font-size: 0.9rem; }
.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: 8px 18px !important; border: 0; }
.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: var(--wp--preset--color--blush); }
.pfn-header .pfn-search, .pfn-header .wc-block-mini-cart { display: flex; align-items: center; }
.pfn-header .wc-block-mini-cart__button { padding: 6px; }
.pfn-header .wc-block-mini-cart__icon, .pfn-header .pfn-search .wp-block-search__button svg { width: 20px; height: 20px; }
.pfn-header .wc-block-mini-cart__badge { background: var(--wp--preset--color--cerise); color: #fff; border: 0; }
.pfn-header-cta .wp-block-button__link { border-radius: 999px; font-size: 0.7rem; letter-spacing: 0.1em; padding: 0.85em 1.5em; box-shadow: 0 6px 16px rgba(241, 96, 175, 0.25); }
.pfn-header-cta .wp-block-button__link:hover { transform: translateY(-1px); }
.pfn-utility-bar { font-size: 0.7rem; }
.pfn-utility-bar .pfn-utility-tagline { letter-spacing: 0.08em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft); }
.pfn-utility-bar .wp-block-navigation a { font-size: 0.7rem; letter-spacing: 0.1em; }
.pfn-utility-bar .wc-block-customer-account__account-icon { width: 16px; height: 16px; }

/* ---------------------------------------------------------------
   Accordion (FAQ): card items, Playfair questions, cerise +/-
   --------------------------------------------------------------- */
.wp-block-spectra-accordion { gap: 10px; }
.wp-block-spectra-accordion-child-item {
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--outline);
	border-radius: 8px;
	overflow: hidden;
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.wp-block-spectra-accordion-child-item:hover { border-color: var(--wp--preset--color--baby-pink); }
.wp-block-spectra-accordion-child-item.is-active { border-color: var(--wp--preset--color--baby-pink); box-shadow: 0 10px 30px rgba(42, 36, 38, 0.06); }
.wp-block-spectra-accordion-child-header {
	width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 18px 22px; background: transparent; border: 0; cursor: pointer; text-align: left;
	font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.15rem; font-weight: 500; color: var(--wp--preset--color--ink);
}
.wp-block-spectra-accordion-child-header:hover { color: var(--wp--preset--color--green); }
.wp-block-spectra-accordion-child-header .wp-block-spectra-accordion-child-header-icon,
.wp-block-spectra-accordion-child-header svg {
	flex: 0 0 auto; width: 28px; height: 28px; padding: 6px; border-radius: 999px;
	color: var(--wp--preset--color--green); background: var(--wp--preset--color--blush);
	transition: background 0.2s ease, color 0.2s ease;
}
.wp-block-spectra-accordion-child-item.is-active .wp-block-spectra-accordion-child-header svg { background: var(--wp--preset--color--green); color: #fff; }
.wp-block-spectra-accordion-child-details { padding: 0 22px 20px; color: var(--wp--preset--color--ink-soft); }
.wp-block-spectra-accordion-child-details .wp-block-spectra-content { margin: 0; }

/* Collapsed header search must not reserve its expanded width */
.pfn-header .pfn-search.wp-block-search__searchfield-hidden { width: auto !important; }
.pfn-header .pfn-search.wp-block-search__searchfield-hidden .wp-block-search__input { width: 0; padding: 0; border: 0; }
.pfn-header .pfn-search:not(.wp-block-search__searchfield-hidden) { width: 220px; }
/* Filter lists without the boxed border */
.pfn-shop-filters .wc-block-product-filter-checkbox-list, .pfn-shop-filters .wc-block-product-filter-checkbox-list__list { border: 0; padding: 0; }
.pfn-shop-filters .wc-block-product-filter-checkbox-list__item { padding: 4px 0; }
.pfn-shop-filters .wc-block-product-filter-price-slider__content { gap: 8px; }
.pfn-shop-filters .wc-block-product-filter-price-slider input[type="text"], .pfn-shop-filters .wc-block-product-filter-price-slider__text { font-size: 0.8rem; border: 1px solid var(--wp--preset--color--outline); border-radius: 4px; padding: 4px 6px; }

/* Logo must never be squeezed by the nav row */
.pfn-header .pfn-logo { flex: 0 0 auto; }
.pfn-header .pfn-logo img { width: 150px; max-width: none; height: auto; }
@media (max-width: 767.98px) {
	.pfn-header .pfn-logo img { width: 120px !important; }
}
.pfn-header .pfn-search { width: auto !important; }
.pfn-header .pfn-search .wp-block-search__inside-wrapper { width: auto; }
.pfn-header .pfn-search:not(.wp-block-search__searchfield-hidden) .wp-block-search__input { width: 200px; padding: 6px 10px; border: 1px solid var(--wp--preset--color--outline); }
@media (max-width: 767.98px) {
	.pfn-product-grid .wc-block-components-product-button .wp-block-button__link { font-size: 0.62rem; padding: 0.75em 0.9em; white-space: nowrap; letter-spacing: 0.06em; }
}

/* ---------------------------------------------------------------
   Focus states and form messages, brand pink instead of browser blue
   --------------------------------------------------------------- */
.pfn-header .pfn-search .wp-block-search__input,
.fluentform .ff-el-form-control,
.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-block-components-select select,
.woocommerce input.input-text,
.woocommerce textarea,
.pfn-shop-filters input[type="text"] {
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.pfn-header .pfn-search .wp-block-search__input:focus,
.fluentform .ff-el-form-control:focus,
.wc-block-components-text-input input:focus,
.wc-block-components-textarea:focus,
.wc-block-components-select select:focus,
.woocommerce input.input-text:focus,
.woocommerce textarea:focus,
.pfn-shop-filters input[type="text"]:focus {
	outline: none !important;
	border-color: var(--wp--preset--color--green) !important;
	box-shadow: 0 0 0 3px rgba(241, 96, 175, 0.18) !important;
}
.pfn-header .pfn-search .wp-block-search__button:focus-visible,
.wp-element-button:focus-visible, .wp-block-button__link:focus-visible, a:focus-visible {
	outline: 2px solid var(--wp--preset--color--green); outline-offset: 3px;
}
.wc-block-components-text-input.is-active input, .wc-block-components-text-input input:focus-visible { border-color: var(--wp--preset--color--green); }

/* Search hint (replaces the browser's validation bubble) */
.pfn-header .pfn-search { position: relative; }
.pfn-search-hint {
	position: absolute; top: calc(100% + 10px); right: 0; z-index: 30;
	background: var(--wp--preset--color--white); color: var(--wp--preset--color--green);
	border: 1px solid var(--wp--preset--color--baby-pink); border-radius: 6px;
	box-shadow: 0 10px 30px rgba(42, 36, 38, 0.10);
	font-family: var(--wp--preset--font-family--libre-baskerville); font-size: 0.78rem; line-height: 1.4;
	padding: 8px 12px; white-space: nowrap;
	opacity: 0; transform: translateY(-4px); pointer-events: none;
	transition: opacity 0.2s ease, transform 0.2s ease;
}
.pfn-search-hint::before {
	content: ""; position: absolute; top: -6px; right: 14px; width: 10px; height: 10px;
	background: var(--wp--preset--color--white); border-left: 1px solid var(--wp--preset--color--baby-pink); border-top: 1px solid var(--wp--preset--color--baby-pink); transform: rotate(45deg);
}
.pfn-search.is-empty .pfn-search-hint { opacity: 1; transform: translateY(0); }
.pfn-search.is-empty .wp-block-search__input { border-color: var(--wp--preset--color--green) !important; animation: pfn-nudge 0.35s ease; }
@keyframes pfn-nudge { 0%, 100% { transform: translateX(0); } 30% { transform: translateX(-3px); } 60% { transform: translateX(3px); } }

/* Fluent Forms and WooCommerce validation messages in the same voice */
.fluentform .ff-el-is-error .ff-el-form-control { border-color: var(--wp--preset--color--green) !important; }
.fluentform .ff-el-is-error .text-danger, .fluentform .error, .wc-block-components-validation-error p {
	color: var(--wp--preset--color--green) !important; font-size: 0.8rem; font-style: italic;
}
.wc-block-components-validation-error svg { fill: var(--wp--preset--color--green); }

/* Price slider: track on top, amounts as pills underneath */
.pfn-shop-filters .wc-block-product-filter-price-slider__content { display: flex; flex-wrap: wrap; gap: 10px 8px; align-items: center; }
.pfn-shop-filters .wc-block-product-filter-price-slider__range { order: -1; flex: 0 0 100%; position: relative; height: 28px; margin: 6px 0 2px; }
.pfn-shop-filters .wc-block-product-filter-price-slider__range .range-bar {
	position: absolute; left: 0; right: 0; top: 50%; height: 3px; transform: translateY(-50%); border-radius: 999px;
	background: linear-gradient(to right, var(--wp--preset--color--outline) var(--low), var(--wp--preset--color--green) var(--low), var(--wp--preset--color--green) var(--high), var(--wp--preset--color--outline) var(--high));
}
.pfn-shop-filters .wc-block-product-filter-price-slider__range input[type="range"] {
	position: absolute; left: 0; top: 0; width: 100%; height: 28px; margin: 0; background: transparent; -webkit-appearance: none; appearance: none; pointer-events: none;
}
.pfn-shop-filters .wc-block-product-filter-price-slider__range input[type="range"]::-webkit-slider-runnable-track { background: transparent; height: 28px; }
.pfn-shop-filters .wc-block-product-filter-price-slider__range input[type="range"]::-moz-range-track { background: transparent; height: 28px; }
.pfn-shop-filters .wc-block-product-filter-price-slider__range input[type="range"]::-webkit-slider-thumb {
	-webkit-appearance: none; pointer-events: auto; width: 18px; height: 18px; margin-top: 5px; border-radius: 999px;
	background: #fff; border: 2px solid var(--wp--preset--color--green); box-shadow: 0 2px 6px rgba(42, 36, 38, 0.18); cursor: pointer;
}
.pfn-shop-filters .wc-block-product-filter-price-slider__range input[type="range"]::-moz-range-thumb {
	pointer-events: auto; width: 18px; height: 18px; border-radius: 999px; background: #fff; border: 2px solid var(--wp--preset--color--green); box-shadow: 0 2px 6px rgba(42, 36, 38, 0.18); cursor: pointer;
}
.pfn-shop-filters .wc-block-product-filter-price-slider__left, .pfn-shop-filters .wc-block-product-filter-price-slider__right { flex: 1 1 0; min-width: 0; }
.pfn-shop-filters .wc-block-product-filter-price-slider .text input {
	width: 100%; box-sizing: border-box; font-family: inherit; font-size: 0.8rem; color: var(--wp--preset--color--ink);
	border: 1px solid var(--wp--preset--color--outline); border-radius: 999px; padding: 6px 12px; text-align: center; background: #fff;
}
.pfn-shop-filters .wc-block-product-filter-price-slider .text input:focus { border-color: var(--wp--preset--color--green); box-shadow: 0 0 0 3px rgba(75,81,71,0.18); outline: none; }
.pfn-shop-filters .wp-block-woocommerce-product-filter-price-slider .wc-block-product-filter-price-slider__range { background: transparent !important; padding: 0 !important; }
.pfn-shop-filters .wp-block-woocommerce-product-filter-price-slider .wc-block-product-filter-price-slider__content--inline { gap: 10px 10px !important; }
.pfn-shop-filters .wp-block-woocommerce-product-filter-price-slider .wc-block-product-filter-price-slider__content--inline .text { flex: 1 1 0 !important; width: auto !important; }
.pfn-shop-filters .wp-block-woocommerce-product-filter-price-slider .wc-block-product-filter-price-slider__content--inline .text input {
	border: 1px solid var(--wp--preset--color--outline) !important; border-radius: 999px !important; padding: 6px 12px !important;
	text-align: center !important; font-size: 0.8rem !important; background: #fff !important; width: 100% !important; box-sizing: border-box;
}
.pfn-shop-filters input[type="range"], .pfn-shop-filters input[type="range"]::-webkit-slider-runnable-track { background: transparent !important; border: 0 !important; box-shadow: none !important; }
.pfn-shop-filters input[type="range"]::-moz-range-track { background: transparent !important; border: 0 !important; }

/* Full-width sections sit flush against each other (no theme block-gap strips between them) */
.wp-block-post-content > .wp-block-spectra-container.alignfull,
.wp-block-post-content > .wp-block-spectra-container.alignfull + *,
.wp-block-post-content > .wp-block-block > .wp-block-spectra-container.alignfull { margin-top: 0 !important; margin-bottom: 0 !important; }
.wp-block-post-content { --wp--style--block-gap: 0; }
.pfn-shop-filters .wc-block-product-filter-price-slider__range::before, .pfn-shop-filters .wc-block-product-filter-price-slider__range::after { display: none !important; }

/* Spectra adds its own gradient layer (and a blue hover gradient) on these containers; use ours only */
.pfn-hero-overlay::before, .pfn-hero-overlay::after { display: none !important; }

/* No block-gap strip between the header, main and footer template blocks */
.wp-site-blocks > * + * { margin-block-start: 0 !important; }
.wp-site-blocks > main, .wp-site-blocks > header, .wp-site-blocks > footer { margin: 0; }
.pfn-footer .pfn-credit { margin: 0; }
.pfn-footer .pfn-credit img { opacity: 0.85; transition: opacity 0.2s ease; }
.pfn-footer .pfn-credit img:hover { opacity: 1; }

/* ---------------------------------------------------------------
   Mobile header and menu overlay; desktop dropdowns
   --------------------------------------------------------------- */
@media (max-width: 1023.98px) {
	.pfn-header > .wp-block-group { justify-content: space-between !important; }
	.pfn-header .wp-block-navigation.is-responsive { order: 3; flex: 0 0 auto; }
	.pfn-header .wp-block-group.is-content-justification-right { order: 2; margin-left: auto; gap: 4px !important; }
	.pfn-header .wp-block-navigation__responsive-container-open { padding: 6px; }
	.pfn-header .wp-block-navigation__responsive-container-open svg { width: 26px; height: 26px; }
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open { padding: 22px 26px 32px; background: var(--wp--preset--color--white); }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { padding-top: 40px; gap: 0; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { gap: 0; width: 100%; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item { width: 100%; border-bottom: 1px solid var(--wp--preset--color--outline); padding: 12px 0; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content,
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container > .wp-block-navigation-submenu > .wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.45rem; text-transform: none; letter-spacing: 0; padding: 0; border: 0; color: var(--wp--preset--color--ink);
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-icon { display: none; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	border: 0 !important; box-shadow: none !important; background: transparent !important; padding: 8px 0 0 !important; gap: 2px; font-size: 0.95rem;
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 5px 0 !important; color: var(--wp--preset--color--ink-soft); font-family: var(--wp--preset--font-family--libre-baskerville); font-size: 0.95rem; text-transform: none; letter-spacing: 0.01em;
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover { background: transparent; color: var(--wp--preset--color--green); }
.pfn-header .wp-block-navigation__responsive-container-close { top: 18px; right: 22px; padding: 8px; }
.pfn-header .wp-block-navigation__responsive-container-close svg { width: 26px; height: 26px; }
/* Desktop dropdowns */
@media (min-width: 1024px) {
	.pfn-header .wp-block-navigation__submenu-container { min-width: 250px; margin-top: 10px; }
	.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item { border-bottom: 1px solid var(--wp--preset--color--whim); }
	.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item:last-child { border-bottom: 0; }
	.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content { padding: 10px 18px !important; }
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { align-items: flex-start !important; text-align: left; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { justify-content: flex-start; }
@media (min-width: 1024px) {
	.pfn-header .wp-block-navigation__submenu-container { min-width: 290px; }
	.pfn-header .wp-block-navigation__submenu-container .wp-block-navigation-item__content { white-space: nowrap; }
}
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container.items-justified-center { justify-content: flex-start !important; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item,
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu { justify-content: flex-start !important; align-items: flex-start !important; text-align: left !important; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { text-align: left !important; }
.pfn-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container { padding-left: 14px !important; border-left: 2px solid var(--wp--preset--color--blush) !important; margin-top: 8px; }
/* Single product: calmer section headings */
.single-product .wp-block-woocommerce-product-details h2, .single-product .wc-block-product-details h2,
.single-product .woocommerce-Tabs-panel h2, .single-product .related h2, .single-product .wp-block-woocommerce-related-products h2, .single-product .up-sells h2 {
	font-size: var(--wp--preset--font-size--x-large); margin-bottom: var(--wp--preset--spacing--small);
}

/* Cart and checkout pages: title band, padding, brand touches */
.woocommerce-cart .wp-block-post-title, .woocommerce-checkout .wp-block-post-title, .woocommerce-account .wp-block-post-title {
	text-align: center; font-size: var(--wp--preset--font-size--xxx-large); padding: var(--wp--preset--spacing--x-large) var(--wp--preset--spacing--small) var(--wp--preset--spacing--large); margin: 0; background: var(--wp--preset--color--whim);
}
.woocommerce-cart .wp-block-post-content, .woocommerce-checkout .wp-block-post-content, .woocommerce-account .wp-block-post-content {
	padding: var(--wp--preset--spacing--large) var(--wp--preset--spacing--small) var(--wp--preset--spacing--xx-large); max-width: 1240px; margin: 0 auto;
}
.wc-block-cart__empty-cart__title, .wp-block-woocommerce-empty-cart-block h2 { font-family: var(--wp--preset--font-family--playfair-display); font-weight: 500; }
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__image, .wc-block-cart__empty-cart__icon { color: var(--wp--preset--color--baby-pink); }
.wp-block-woocommerce-empty-cart-block .wc-block-grid__product-title, .wp-block-woocommerce-empty-cart-block .wp-block-post-title a { text-decoration: none; }
.wc-block-components-product-name, .wc-block-grid__product-link { text-decoration: none; }
.wp-block-woocommerce-empty-cart-block .wp-block-separator { display: none; }
.wc-block-components-sidebar-layout .wc-block-components-panel__button, .wc-block-components-totals-footer-item { font-family: var(--wp--preset--font-family--playfair-display); }
.wc-block-cart, .wc-block-checkout { font-family: var(--wp--preset--font-family--libre-baskerville); }
.wc-block-components-order-summary-item__description .wc-block-components-product-name { font-family: var(--wp--preset--font-family--playfair-display); }
.wc-block-cart-items__row .wc-block-components-product-name { font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.05rem; }
.wc-block-cart-item__image img, .wc-block-components-order-summary-item__image img { border-radius: 6px; }

/* Logo strip tiles: keep them compact */
.pfn-logo-strip .swiper-slide img { max-height: 84px; width: auto; margin: 0 auto; }
/* Real stockist and award logos (client request 9 Sep 2026): full colour, with a caption under each */
.pfn-stockists-compact .pfn-logo-strip img { opacity: 1; filter: none; }
.pfn-stockists-compact .swiper-slide { display: flex; align-items: center; justify-content: center; }
.pfn-stockists-compact .swiper-slide figure { width: 100%; margin: 0; }
.pfn-stockists-compact .swiper-slide img { width: auto; max-width: 100%; height: 84px; max-height: 84px; object-fit: contain; margin: 0 auto; }
.pfn-stockists-compact .pfn-logo-slide { width: 100%; }
/* Continuous, even-paced marquee (client 22 Sep 2026: the strip moved at uneven speeds). pfn.js sets the
   swiper to a 0ms delay and a long slide speed; linear timing makes the motion constant. */
.pfn-stockists-compact .swiper-wrapper { transition-timing-function: linear !important; }
.pfn-stockists-compact .swiper-pagination { display: none; }
.pfn-stockists-compact .pfn-logo-caption { font-size: 0.72rem; letter-spacing: 0.04em; line-height: 1.35; margin: 0; }
@media (max-width: 767.98px) { .pfn-stockists-compact .swiper-slide img { height: 64px; max-height: 64px; } .pfn-stockists-compact .pfn-logo-caption { font-size: 0.66rem; } }

/* Homepage: artwork first, compact reading lengths and clear controls. */
/* Client direction 22 Sep 2026: header and the two boxes go back to white words on the photo with a dark
   fade, but lighter than the first version (peak .55 rather than .78). Elsewhere the white fade stays. */
.home #home-hero .pfn-hero-overlay { background: linear-gradient(90deg, rgba(42,36,38,.58) 0%, rgba(42,36,38,.46) 40%, rgba(42,36,38,.16) 66%, rgba(42,36,38,0) 100%); }
.home #choose .pfn-hero-overlay { background: linear-gradient(180deg, rgba(42,36,38,.02) 0%, rgba(42,36,38,.16) 40%, rgba(42,36,38,.6) 100%); }
.home #home-hero .pfn-hero-overlay .wp-block-spectra-content,
.home #choose .pfn-hero-overlay .wp-block-spectra-content { text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.home #choose .pfn-hero-overlay .pfn-kicker { color: var(--wp--preset--color--white); }
.home #choose .pfn-hero-overlay { transition: background .3s ease; }
.home #choose .wp-block-spectra-container:hover > .pfn-hero-overlay { background: linear-gradient(180deg, rgba(42,36,38,.06) 0%, rgba(42,36,38,.22) 40%, rgba(42,36,38,.66) 100%); }
/* Tall enough on wide screens that the whole row of frames, shelf included, stays in the crop */
@media (min-width: 1024px) { .home #home-hero .pfn-hero-overlay { min-height: max(620px, 47vw) !important; } }
.home .pfn-home-section .pfn-kicker { color: var(--wp--preset--color--plum-deep); }
.home .pfn-home-gallery { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.home .pfn-home-gallery .wp-block-image { width: 100% !important; margin: 0 !important; }
.home .pfn-home-gallery .wp-block-image img { width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.home #testimonials .spectra-slider-navigation { position: static; display: flex; justify-content: center; gap: 16px; margin-top: 20px; }
.home #testimonials .wp-block-spectra-slider { padding: 0; }
.home #testimonials .swiper-button-prev,
.home #testimonials .swiper-button-next { position: static; transform: none; margin: 0; width: 44px; height: 44px; background-color: var(--wp--preset--color--green); }
.home #testimonials .swiper-slide { display: flex; align-items: center; justify-content: center; }
.home #featured-products ul.products { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 32px 24px; margin: 0; }
.home #featured-products ul.products::before,
.home #featured-products ul.products::after { display: none; }
.home #featured-products ul.products li.product { display: flex; flex-direction: column; width: 100%; margin: 0; float: none; }
.home #featured-products .woocommerce-loop-product__link { display: flex; flex-direction: column; flex: 1; }
.home #featured-products .woocommerce-loop-product__title { flex: 1; }
.home #featured-products ul.products li.product .button { align-self: flex-start; margin-top: 16px; font-size: .72rem; line-height: 1.4; letter-spacing: .04em; padding: 12px 14px; }
.home .pfn-home-journal .wp-block-post-template { display: block; }
.home .pfn-home-journal .wp-block-post > .wp-block-group { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr auto auto 1fr; gap: 16px 36px; }
.home .pfn-home-journal .wp-block-post-featured-image { grid-row: 1 / 5; margin: 0 !important; }
.home .pfn-home-journal .wp-block-post-date { grid-row: 2; margin: 0; }
.home .pfn-home-journal .wp-block-post-title { grid-row: 3; margin: 0; font-size: clamp(24px, 2.5vw, 34px) !important; }
@media (max-width: 1023.98px) {
	.home .pfn-home-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.home #featured-products ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
	.home #home-hero .pfn-hero-overlay { background: linear-gradient(180deg, rgba(42,36,38,.5) 0%, rgba(42,36,38,.46) 62%, rgba(42,36,38,.34) 100%); }
	.home #home-hero .wp-block-spectra-buttons { width: 100%; }
	.home #home-hero .wp-block-spectra-button { width: 100%; }
	.home #home-hero .wp-block-button__link { width: 100%; box-sizing: border-box; font-size: .78rem; line-height: 1.4; padding: 13px 12px; }
	.home .pfn-home-gallery { gap: 12px; }
	.home #featured-products ul.products { gap: 28px 16px; }
	.home #featured-products ul.products li.product .button { width: 100%; min-height: 44px; box-sizing: border-box; font-size: .7rem; padding: 12px 6px; white-space: nowrap; text-align: center; }
	.home #featured-products .woocommerce-loop-product__title { font-size: 1rem; }
	.home #featured-products .price { font-size: .85rem; }
	.home .pfn-home-journal .wp-block-post > .wp-block-group { display: flex; flex-direction: column; gap: 16px; }
	.home .pfn-home-journal .wp-block-post-date { align-self: flex-start; }
}
.woocommerce-cart .wp-block-post-title, .woocommerce-checkout .wp-block-post-title, .woocommerce-account .wp-block-post-title {
	margin-top: 0 !important; box-shadow: 0 0 0 100vmax var(--wp--preset--color--whim); clip-path: inset(0 -100vmax);
}
.woocommerce-cart main, .woocommerce-checkout main, .woocommerce-account main { padding-top: 0 !important; margin-top: 0 !important; }
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__image, .wc-block-cart__empty-cart__icon, .wp-block-woocommerce-empty-cart-block > .wp-block-image { display: none !important; }
.wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title { margin-top: var(--wp--preset--spacing--medium); }
.wp-block-woocommerce-empty-cart-block .wp-block-image, .wp-block-woocommerce-empty-cart-block figure, .wc-block-cart__empty-cart__image img, .wp-block-woocommerce-empty-cart-block svg { display: none !important; }
.wc-block-cart__empty-cart__title.with-empty-cart-icon::before { display: none !important; content: none !important; }
.wc-block-cart__empty-cart__title { padding-top: var(--wp--preset--spacing--small); font-size: var(--wp--preset--font-size--x-large) !important; color: var(--wp--preset--color--ink-soft); }

/* Dropdown stays open while the cursor travels to it: no margin gap, invisible hover bridge */
@media (min-width: 1024px) {
	.pfn-header .wp-block-navigation__submenu-container { margin-top: 0 !important; top: calc(100% + 12px) !important; }
	.pfn-header .wp-block-navigation-submenu > .wp-block-navigation__submenu-container::before {
		content: ""; position: absolute; left: 0; right: 0; top: -14px; height: 14px; background: transparent;
	}
	.pfn-header .wp-block-navigation-submenu > .wp-block-navigation__submenu-container { transition: opacity 0.15s ease 0.05s, visibility 0s linear 0.2s; }
	.pfn-header .wp-block-navigation-submenu:hover > .wp-block-navigation__submenu-container,
	.pfn-header .wp-block-navigation-submenu:focus-within > .wp-block-navigation__submenu-container { transition-delay: 0s; }
}

/* "Menu" label beside the hamburger */
.pfn-header .wp-block-navigation__responsive-container-open { display: flex !important; align-items: center; gap: 6px; font-family: var(--wp--preset--font-family--libre-baskerville); font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--ink); }
.pfn-header .wp-block-navigation__responsive-container-open::after { content: "Menu"; }
@media (min-width: 1280px) { .pfn-header .wp-block-navigation__responsive-container-open { display: none !important; } }
@media (max-width: 767.98px) {
	.pfn-header .pfn-logo img { width: 108px !important; }
	.pfn-header .pfn-search .wp-block-search__button, .pfn-header .wc-block-mini-cart__button { padding: 4px; }
	.pfn-header .wp-block-navigation__responsive-container-open { padding: 4px 0 4px 4px; gap: 4px; font-size: 0.62rem; }
	.pfn-header .wp-block-group.is-content-justification-right { gap: 2px !important; }
}

/* Space between grouped buttons */
.wp-block-spectra-buttons { gap: 14px !important; row-gap: 12px !important; }

/* Footer newsletter: stacked field and button so everything fits */
.pfn-footer .fluentform .ff-t-container, .pfn-footer .fluentform .ff-column-container { display: flex; flex-direction: column; gap: 10px; }
.pfn-footer .fluentform .ff-t-cell, .pfn-footer .fluentform .ff-t-container .ff-t-cell { width: 100% !important; flex: 1 1 100% !important; padding: 0 !important; }
.pfn-footer .fluentform .ff-el-group { margin-bottom: 0; }
.pfn-footer .fluentform .ff-el-form-control { width: 100%; padding: 10px 14px; font-size: 0.9rem; }
.pfn-footer .fluentform .ff-btn-submit { width: 100%; }
/* Slightly larger logo */
.pfn-header .pfn-logo img { width: 172px; }
@media (max-width: 1023.98px) { .pfn-header .pfn-logo img { width: 150px; } }
@media (max-width: 767.98px) { .pfn-header .pfn-logo img { width: 116px !important; } }
/* Image cards (home "choose" boxes): picture on top, no fade, text beneath */
.pfn-image-card .pfn-tile-image { margin: 0 !important; width: 100%; }
.pfn-image-card .pfn-tile-image img { display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; object-position: 50% 40%; border-radius: 0; }
/* "What we promise you" cards: illustrated icon badge left, text right */
.pfn-promise-card > .pfn-promise-icon { flex: 0 0 76px; width: 76px; height: 76px; box-shadow: 0 6px 18px rgba(42, 36, 38, 0.06); }
.pfn-promise-card > .pfn-promise-body { flex: 1 1 0; min-width: 0; }
.pfn-promise-svg { margin: 0 !important; }
.pfn-promise-svg img { display: block; width: 46px; height: 46px; }
@media (max-width: 767.98px) { .pfn-promise-card > .pfn-promise-icon { flex-basis: auto; } }
/* Gallery page: pill tabs, masonry with design-name captions */
.pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-wrapper { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 0 0 32px; }
.pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-button { background: transparent !important; color: var(--wp--preset--color--green) !important; border: 1.5px solid var(--wp--preset--color--green) !important; border-radius: 999px !important; padding: 10px 22px !important; box-shadow: none !important; font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-button:hover { background: var(--wp--preset--color--whim) !important; }
.pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-button.spectra-block-is-active { background: var(--wp--preset--color--green) !important; color: #fff !important; }
.pfn-gallery-tabs .wp-block-spectra-tabs-child-tabpanel { border: 0 !important; padding: 0 !important; background: transparent !important; box-shadow: none !important; }
.pfn-gallery.pfn-masonry .wp-block-image { break-inside: avoid; margin: 0 0 20px; }
@media (max-width: 767.98px) { .pfn-gallery .wp-block-image figcaption { font-size: .7rem !important; line-height: 1.3; } .pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-button { padding: 9px 14px !important; font-size: .7rem; } .pfn-gallery-tabs .wp-block-spectra-tabs-child-tab-wrapper { gap: 8px; margin-bottom: 20px; } }
/* About page (client brief 9 Sep 2026): full-bleed photo, then four portrait tiles with a hover overlay */
.pfn-photo-banner .wp-block-image { margin: 0 !important; width: 100%; }
.pfn-photo-banner img { display: block; width: 100%; height: clamp(360px, 68vh, 820px); object-fit: cover; object-position: 50% 65%; }
.pfn-hover-tile { position: relative !important; }
.pfn-hover-tile .pfn-hover-tile__img { margin: 0 !important; width: 100%; }
.pfn-hover-tile .pfn-hover-tile__img a { display: block; }
.pfn-hover-tile .pfn-hover-tile__img img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; transition: transform .7s ease; }
.pfn-hover-tile:hover .pfn-hover-tile__img img { transform: scale(1.04); }
.pfn-hover-tile > .pfn-hover-tile__overlay { position: absolute !important; inset: 0; z-index: 2; pointer-events: none; background: rgba(255, 255, 255, 0.9); opacity: 0; transition: opacity .35s ease; }
.pfn-hover-tile:hover > .pfn-hover-tile__overlay, .pfn-hover-tile:focus-within > .pfn-hover-tile__overlay { opacity: 1; }
.pfn-hover-tile__cta { font-family: var(--wp--preset--font-family--libre-baskerville); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; color: var(--wp--preset--color--green); margin-top: 6px !important; }
.pfn-hover-tile__cta { white-space: nowrap; }
@media (hover: none) {
	.pfn-hover-tile > .pfn-hover-tile__overlay .wp-block-spectra-content { font-size: .9rem; }
	.pfn-hover-tile > .pfn-hover-tile__overlay h3 { font-size: 1.25rem; }
}
@media (max-width: 767.98px) {
	.pfn-hover-tile .pfn-hover-tile__img img { aspect-ratio: 4 / 5; }
	.pfn-hover-tile > .pfn-hover-tile__overlay { padding: 40px 20px 20px !important; }
}
/* Stockists page cards */
.pfn-stockist-logo { margin: 0 auto 8px !important; }
.pfn-stockist-logo img { display: block; width: auto; max-width: 180px; height: 64px; object-fit: contain; margin: 0 auto; }
/* Before/after pairs share one crop */
.pfn-pair .wp-block-image img { aspect-ratio: 4 / 5; object-fit: cover; width: 100%; border-radius: 6px; }
/* Spectra ignores a padding of "0", so image containers that hold an overlay must not keep the plugin's 10px default */
.wp-block-spectra-container.has-image-background:has(> .pfn-hero-overlay),
.wp-block-post-content > section.wp-block-spectra-container.has-image-background { padding: 0 !important; }


/* ---------------------------------------------------------------
   Green-led palette (client direction, Sep 2026): cerise is the accent
   --------------------------------------------------------------- */
.pfn-header .wp-block-navigation-item__content:hover, .pfn-header .current-menu-item > .wp-block-navigation-item__content { border-bottom-color: var(--wp--preset--color--cerise); }
.pfn-header-cta .wp-block-button__link { background: var(--wp--preset--color--green) !important; box-shadow: 0 6px 16px rgba(75, 81, 71, 0.22); }
.pfn-header-cta .wp-block-button__link:hover { background: var(--wp--preset--color--cerise) !important; }
.pfn-kicker-light { color: var(--wp--preset--color--baby-pink); }
.has-blush-background-color, .wp-block-spectra-container[style*="--wp--preset--color--blush"] { }
.pfn-quote::before { color: var(--wp--preset--color--cerise); }
.wc-block-components-product-sale-badge, .onsale { background: var(--wp--preset--color--cerise) !important; color: #fff !important; }
.pfn-header .wc-block-mini-cart__badge { background: var(--wp--preset--color--cerise); }

/* ---------------------------------------------------------------
   Bridal journey (page 2): progress bar, option cards
   --------------------------------------------------------------- */
/* Step cards (also used by journey_steps() on the Bridal page) */
.pfn-step { position: relative; flex: 1 1 0; align-items: center !important; gap: 8px !important; padding: 0 4px !important; text-align: center; }
@media (max-width: 767.98px) { .pfn-step { flex: 1 1 24%; padding: 0 2px !important; margin-bottom: 8px; } }
.wp-block-spectra-container.pfn-card-hover:hover { border-color: var(--wp--preset--color--green); }
/* Embedded product form on the journey page */
.pfn-shop-archive .woocommerce, .single-product-summary { font-family: inherit; }
.woocommerce div.product form.cart .variations select { font-family: inherit; border: 1px solid var(--wp--preset--color--outline); border-radius: 4px; padding: 8px 12px; }
.woocommerce div.product form.cart .variations th { font-family: var(--wp--preset--font-family--libre-baskerville); font-weight: 400; letter-spacing: 0.08em; text-transform: uppercase; font-size: 0.75rem; color: var(--wp--preset--color--green); }
.woocommerce div.product .price { font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.4rem; color: var(--wp--preset--color--ink); }
.woocommerce div.product form.cart .single_add_to_cart_button { font-size: 0.85rem; }
/* Journey page: embedded product form only (no tabs, related products or meta) */
.page-id-857 .woocommerce-tabs, .page-id-857 .related, .page-id-857 .product_meta, .page-id-857 .woocommerce-product-details__short-description { display: none !important; }
.page-id-857 .woocommerce div.product { margin-bottom: 0; }
.page-id-857 .woocommerce div.product .product_title { font-size: var(--wp--preset--font-size--xx-large); }
.woocommerce div.product form.cart table.variations { width: 100%; table-layout: fixed; }
.woocommerce div.product form.cart table.variations td.value select { max-width: 100%; width: 100%; }
.woocommerce div.product form.cart table.variations th.label { width: 34%; }
/* ---------------------------------------------------------------
   Advanced Product Fields: brand styling for the bridal journey form
   --------------------------------------------------------------- */
.wapf-field-container { margin: 0 0 var(--wp--preset--spacing--medium); }
.wapf-field-label { font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.25rem; font-weight: 500; color: var(--wp--preset--color--ink); margin-bottom: 4px; }
.wapf-field-label .wapf-required { color: var(--wp--preset--color--cerise); }
.wapf-field-description { font-size: 0.85rem; color: var(--wp--preset--color--ink-soft); margin: 0 0 10px; }
.wapf-radios { display: flex; flex-wrap: wrap; gap: 8px; }
.wapf-checkable { margin: 0; }
.wapf-checkable .wapf-input-label, .wapf-checkable .wapf-checkbox-label {
	display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px; border: 1px solid var(--wp--preset--color--outline); border-radius: 999px;
	background: #fff; cursor: pointer; font-size: 0.9rem; transition: border-color 0.2s ease, background 0.2s ease;
}
.wapf-checkable .wapf-input-label:hover, .wapf-checkable .wapf-checkbox-label:hover { border-color: var(--wp--preset--color--green); }
.wapf-checkable.wapf-checked .wapf-input-label, .wapf-checkable .wapf-input-label:has(input:checked), .wapf-checkable .wapf-checkbox-label:has(input:checked) { border-color: var(--wp--preset--color--green); background: var(--wp--preset--color--sage); }
.wapf-checkable input[type="radio"], .wapf-checkable input[type="checkbox"] { accent-color: var(--wp--preset--color--green); margin: 0; }
.wapf-pricing-hint { color: var(--wp--preset--color--green); font-size: 0.85em; }
.wapf-field-container input[type="text"], .wapf-field-container input[type="date"], .wapf-field-container input[type="email"], .wapf-field-container textarea, .wapf-field-container select {
	width: 100%; max-width: 480px; font-family: inherit; font-size: 0.95rem; padding: 10px 14px; border: 1px solid var(--wp--preset--color--outline); border-radius: 6px; background: #fff;
}
.wapf-field-container textarea { min-height: 120px; max-width: 100%; }
.pfn-design-hint { font-size: 0.85rem; color: var(--wp--preset--color--green); font-style: italic; margin: 0 0 8px; }
.wapf-product-totals, .wapf-product-totals span { font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.1rem; }
.woocommerce div.product form.cart .variations { margin-bottom: var(--wp--preset--spacing--medium); }
.woocommerce div.product form.cart .variations td, .woocommerce div.product form.cart .variations th { padding: 8px 0; }
.woocommerce div.product form.cart .reset_variations { font-size: 0.75rem; color: var(--wp--preset--color--ink-soft); }
/* ---------------------------------------------------------------
   22 Sep 2026: photo headers with white words, labelled hover tiles,
   journey steps in a row, three-photo strip, shop cover
   --------------------------------------------------------------- */
/* Dark fade for photo headers (Bridal, About): bottom-weighted and lighter than the original .78 */
.pfn-hero-overlay.pfn-hero-dark { background: linear-gradient(180deg, rgba(42,36,38,.04) 0%, rgba(42,36,38,.22) 45%, rgba(42,36,38,.64) 100%) !important; }
.pfn-hero-overlay.pfn-hero-dark .wp-block-spectra-content { text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.pfn-hero-overlay.pfn-hero-dark .pfn-kicker { color: var(--wp--preset--color--white); }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark { background: linear-gradient(180deg, rgba(42,36,38,.18) 0%, rgba(42,36,38,.4) 50%, rgba(42,36,38,.66) 100%) !important; } }

/* Hover tiles, superseding the 9 Sep rules above: the title always sits on the photo over a soft dark
   fade; the text and "Read more" slide up on hover; nothing zooms or fades in (client: "static"). */
.pfn-hover-tile .pfn-hover-tile__img img, .pfn-hover-tile:hover .pfn-hover-tile__img img { transform: none; transition: none; }
.pfn-hover-tile > .pfn-hover-tile__overlay {
	opacity: 1; inset: auto 0 0 0 !important; top: auto !important; height: auto !important; min-height: 0 !important;
	padding: 72px 22px 22px !important; pointer-events: none;
	background: linear-gradient(180deg, rgba(42,36,38,0) 0%, rgba(42,36,38,.5) 45%, rgba(42,36,38,.8) 100%);
}
.pfn-hover-tile > .pfn-hover-tile__overlay h3,
.pfn-hover-tile > .pfn-hover-tile__overlay .wp-block-spectra-content { color: var(--wp--preset--color--white) !important; text-shadow: 0 1px 2px rgba(42,36,38,.4); }
.pfn-hover-tile > .pfn-hover-tile__overlay h3 { font-size: 1.35rem; margin: 0; }
.pfn-hover-tile__more { max-height: 0; overflow: hidden; opacity: 0; transition: max-height .5s ease, opacity .35s ease; }
.pfn-hover-tile:hover .pfn-hover-tile__more, .pfn-hover-tile:focus-within .pfn-hover-tile__more { max-height: 360px; opacity: 1; }
.pfn-hover-tile__cta { color: var(--wp--preset--color--white) !important; }
.pfn-hover-tile--nolink { cursor: default; }
@media (hover: none) { .pfn-hover-tile__more { max-height: none; opacity: 1; } }
@media (max-width: 767.98px) { .pfn-hover-tile > .pfn-hover-tile__overlay { padding: 56px 18px 18px !important; } .pfn-hover-tile > .pfn-hover-tile__overlay h3 { font-size: 1.25rem; } }
/* 24 Sep 2026: the Bridal promise texts (60-70 words) ran off the top of the tile on hover. Unlinked tiles only
   (Bridal promise, team); linked tiles with short lines are unchanged. On hover the
   panel now covers the whole photo, the text is a size smaller, and anything still too tall stays inside
   the tile ("safe" keeps the top of the text in view instead of pushing it out above the photo). */
@media (hover: hover) {
	.pfn-hover-tile--nolink:hover > .pfn-hover-tile__overlay, .pfn-hover-tile--nolink:focus-within > .pfn-hover-tile__overlay {
		top: 0 !important; padding-top: 22px !important; justify-content: safe flex-end !important; overflow: hidden;
		background: linear-gradient(180deg, rgba(42,36,38,.45) 0%, rgba(42,36,38,.72) 35%, rgba(42,36,38,.85) 100%);
	}
	.pfn-hover-tile--nolink:hover .pfn-hover-tile__more, .pfn-hover-tile--nolink:focus-within .pfn-hover-tile__more { max-height: 640px; }
	.pfn-hover-tile--nolink:hover > .pfn-hover-tile__overlay h3, .pfn-hover-tile--nolink:focus-within > .pfn-hover-tile__overlay h3 { font-size: 1.15rem; }
	.pfn-hover-tile--nolink .pfn-hover-tile__more .wp-block-spectra-content { font-size: .8rem !important; line-height: 1.48 !important; }
}
/* Small laptops (1024-1279px): four portrait tiles are too short for these texts, so two per row. */
@media (min-width: 1024px) and (max-width: 1279.98px) {
	.wp-block-spectra-container.is-layout-grid:has(> .pfn-hover-tile--nolink) { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* Journey of your flowers: five steps in a row (three per row on tablet); on phones a picture-beside-words card */
.pfn-steps .pfn-step-image { margin: 0 !important; width: 100%; }
.pfn-steps .pfn-step-image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 8px; }
.pfn-steps .pfn-step .pfn-kicker { margin-top: 8px; }
.pfn-steps .pfn-step h3 { font-size: 1.2rem; }
@media (max-width: 767.98px) {
	.pfn-steps .pfn-step { display: grid !important; grid-template-columns: 108px minmax(0, 1fr); column-gap: 16px; row-gap: 4px; align-items: start; padding-bottom: 20px; border-bottom: 1px solid var(--wp--preset--color--outline); text-align: left; }
	.pfn-steps .pfn-step > * { text-align: left !important; justify-self: start; }
	.pfn-steps .pfn-step .pfn-step-image { align-self: start; }
	.pfn-steps .pfn-step:last-child { border-bottom: 0; padding-bottom: 0; }
	.pfn-steps .pfn-step .pfn-step-image { grid-row: 1 / span 3; }
	.pfn-steps .pfn-step-image img { aspect-ratio: 1 / 1; }
	.pfn-steps .pfn-step .pfn-kicker { margin-top: 0; }
	.pfn-steps .pfn-step h3 { font-size: 1.1rem; }
}

/* Three photographs in a row, each a link, with a gentle lift on hover */
.pfn-trio .wp-block-image { margin: 0 !important; width: 100%; overflow: hidden; border-radius: 8px; }
.pfn-trio .wp-block-image a { display: block; }
.pfn-trio .wp-block-image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; transition: transform .8s ease, filter .4s ease; }
.pfn-trio .wp-block-image:hover img { transform: scale(1.04); filter: brightness(1.06); }
@media (max-width: 767.98px) { .pfn-trio .wp-block-image img { aspect-ratio: 4 / 3; } }

/* Stockist cards with a photo; tabbed in-store galleries share the gallery page styles */
.pfn-stockist-photo { margin: 0 0 12px !important; width: 100%; }
.pfn-stockist-photo img { display: block; width: 100%; height: auto; border-radius: 6px; }

/* Shop: photo cover behind the title (client photo, 22 Sep 2026) */
.pfn-shop-cover .wp-block-query-title, .pfn-shop-cover .wp-block-term-description, .pfn-shop-cover .pfn-breadcrumbs, .pfn-shop-cover .pfn-breadcrumbs a { color: var(--wp--preset--color--white) !important; }
.pfn-shop-cover .wp-block-query-title { text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }

/* Pill tabs wrap on small screens (six gallery tabs on Bridal overflowed a phone) */
.pfn-tabs .wp-block-spectra-tabs-child-tab-wrapper { flex-wrap: wrap !important; justify-content: center; row-gap: 8px; max-width: 100%; }
@media (max-width: 767.98px) { .pfn-tabs .wp-block-spectra-tabs-child-tab-wrapper .wp-block-button__link { font-size: .7rem; padding: 10px 12px; } }

/* Touch screens: linked tiles show everything; unlinked promise tiles open on tap (pfn.js toggles .is-open) */
@media (hover: none) {
	.pfn-hover-tile--nolink .pfn-hover-tile__more { max-height: 0; opacity: 0; }
	.pfn-hover-tile--nolink.is-open .pfn-hover-tile__more { max-height: 460px; opacity: 1; }
	.pfn-hover-tile--nolink { cursor: pointer; }
	.pfn-hover-tile--nolink .pfn-hover-tile__overlay h3::after { content: "  +"; font-weight: 400; opacity: .8; }
	.pfn-hover-tile--nolink.is-open .pfn-hover-tile__overlay h3::after { content: "  \2212"; }
	.pfn-hover-tile--nolink.is-open .pfn-hover-tile__more p { font-size: .9rem; line-height: 1.5; }
	.pfn-hover-tile--nolink.is-open .pfn-hover-tile__overlay { background: linear-gradient(180deg, rgba(42,36,38,.15) 0%, rgba(42,36,38,.7) 30%, rgba(42,36,38,.88) 100%); max-height: 100%; overflow: auto; }
}
/* Centre the step row and the three-photo strip on screens wider than the 1240px content width */
.pfn-steps > .wp-block-spectra-container, .pfn-trio > .wp-block-spectra-container { margin-left: auto !important; margin-right: auto !important; }

/* Even photo grid (studio page): same crop on every photo instead of a ragged masonry */
.wp-block-gallery.pfn-even-gallery { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 28px; column-count: auto; }
.wp-block-gallery.pfn-even-gallery figcaption { font-size: .8rem; padding: 40px 12px 12px; }
@media (max-width: 1023.98px) { .wp-block-gallery.pfn-even-gallery { gap: 20px; } }
.wp-block-gallery.pfn-even-gallery .wp-block-image { width: 100% !important; margin: 0 !important; break-inside: auto; }
.wp-block-gallery.pfn-even-gallery .wp-block-image img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 6px; }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-even-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } }

/* Logo grid with captions (Awards & Press), centred, full colour */
.pfn-logo-grid > .wp-block-spectra-container { margin-left: auto !important; margin-right: auto !important; }
.pfn-logo-grid .pfn-logo-cell { text-align: center; }
.pfn-logo-grid .pfn-logo-cell__img { margin: 0 auto !important; width: 100%; }
.pfn-logo-grid .pfn-logo-cell__img img { display: block; width: auto; max-width: 100%; height: 72px; object-fit: contain; margin: 0 auto; }
.pfn-logo-grid .pfn-logo-caption { font-size: .72rem; letter-spacing: .04em; line-height: 1.35; margin: 0; }
@media (max-width: 767.98px) { .pfn-logo-grid .pfn-logo-cell__img img { height: 56px; } }



/* Studio & Team page: portrait cards */
.pfn-team-photo { margin: 0 0 12px !important; width: 100%; }
.pfn-team-photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; object-position: 50% 20%; border-radius: 8px; }
/* ---------------------------------------------------------------
   23 Sep 2026: Bridal page 2 builder (inc/bridal-builder.php).
   Inspiration: pressedfloral.com product page. Live preview on the
   left, compact option rows on the right, sticky progress + price.
   --------------------------------------------------------------- */
.pfn-builder {
	--g: var(--wp--preset--color--green); --g-soft: var(--wp--preset--color--green-soft); --line: var(--wp--preset--color--outline);
	--ink: var(--wp--preset--color--ink); --soft: var(--wp--preset--color--ink-soft); --sage: var(--wp--preset--color--sage); --sage-l: var(--wp--preset--color--sage-light);
	--serif: var(--wp--preset--font-family--playfair-display); --body: var(--wp--preset--font-family--libre-baskerville);
	display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); align-items: start;
	width: 100%; max-width: none; margin: 0 !important; border-top: 1px solid var(--line); background: #fff;
}
.pfn-builder button { font: inherit; color: inherit; cursor: pointer; }
.pfn-builder__media { position: sticky; top: 0; height: 100vh; min-height: 560px; display: flex; flex-direction: column; background: #EFE9E3; border-right: 1px solid var(--line); }
.admin-bar .pfn-builder__media { top: 32px; height: calc(100vh - 32px); }

/* Stage: a wall with the framed piece on it */
.pfn-stage { position: relative; flex: 1 1 auto; min-height: 0; display: flex; align-items: center; justify-content: center; padding: 48px 56px 76px;
	background: radial-gradient(120% 90% at 50% 35%, #F7F2EE 0%, #EFE9E3 55%, #E6DED6 100%); overflow: hidden; }
.pfn-stage__preview { --ratio: 1 / 1; width: min(100%, calc((100vh - 260px) * var(--r, 1))); max-width: 560px; display: flex; justify-content: center; }
.pfn-stage__preview[data-shape="square"] { --r: 1; max-width: 520px; }
.pfn-stage__preview[data-shape="rectangle"] { --r: 1.45; max-width: 640px; }
.pfn-stage__preview[data-shape="oval"] { --r: 1.2; max-width: 580px; }
.pfn-stage.is-photo .pfn-stage__preview { visibility: hidden; }
.pfn-stage__photo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pfn-frame { width: 100%; aspect-ratio: var(--ratio); padding: 3.4%; box-sizing: border-box; background: #F4F2EE;
	box-shadow: 0 1px 0 rgba(255,255,255,.7) inset, 0 -1px 0 rgba(0,0,0,.06) inset, 0 22px 40px -18px rgba(42,36,38,.45), 0 6px 14px rgba(42,36,38,.12);
	transition: background .35s ease, border-radius .35s ease; }
.pfn-mount { position: relative; width: 100%; height: 100%; box-sizing: border-box; padding: 9%; display: flex; align-items: center; justify-content: center; gap: 6%;
	background: #fff; transition: background .35s ease; }
.pfn-art { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; transition: opacity .25s ease; filter: drop-shadow(0 1px 1px rgba(42,36,38,.12)); }
.pfn-art.is-swapping { opacity: .2; }
.pfn-keepsake-photo { display: none; }
.is-keepsake .pfn-mount { padding: 8% 6%; }
.is-keepsake .pfn-keepsake-photo { display: flex; align-items: center; justify-content: center; flex: 0 0 38%; aspect-ratio: 4 / 5; background: linear-gradient(160deg, #DCD6D0, #C9C2BB); color: #fff;
	font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; text-align: center; box-shadow: 0 1px 3px rgba(42,36,38,.2); }
.is-keepsake .pfn-art { max-width: 52%; }
.pfn-stage__preview[data-shape="oval"] .pfn-frame, .pfn-stage__preview[data-shape="oval"] .pfn-mount { border-radius: 50%; }
.pfn-stage__preview[data-shape="oval"] .pfn-mount { padding: 11% 13%; }

/* Frame finishes (also used by the colour swatches) */
.pfn-frame--white, [data-colour="white"] .pfn-frame { background: linear-gradient(135deg, #FFFFFF, #ECE9E3); }
.pfn-frame--black, [data-colour="black"] .pfn-frame { background: linear-gradient(135deg, #3A3637, #161314 60%, #2A2627); }
.pfn-frame--gold, [data-colour="gold"] .pfn-frame { background: linear-gradient(135deg, #9C7020 0%, #E9C870 22%, #B88A2E 45%, #F1D488 65%, #A67A22 85%, #D8B25A 100%); }
.pfn-frame--oak, [data-colour="oak"] .pfn-frame { background: repeating-linear-gradient(100deg, #B98B5A 0 6px, #A87A4B 6px 9px, #C29566 9px 16px, #AD7F4F 16px 19px); }

/* Mountboard colours (also used by the mountboard swatches) */
.pfn-mount--alpine-white, [data-mount="alpine-white"] .pfn-mount, [data-mount="alpine-white"] .pfn-design__art { background-color: #FFFFFF; }
.pfn-mount--snow-white, [data-mount="snow-white"] .pfn-mount, [data-mount="snow-white"] .pfn-design__art { background-color: #FAF8F2; }
.pfn-mount--textured-white, [data-mount="textured-white"] .pfn-mount, [data-mount="textured-white"] .pfn-design__art { background-color: #F6F3EC;
	background-image: radial-gradient(rgba(120,105,90,.10) 1px, transparent 1.2px), radial-gradient(rgba(255,255,255,.9) 1px, transparent 1.2px); background-size: 5px 5px, 7px 7px; background-position: 0 0, 2px 3px; }
.pfn-mount--pink, [data-mount="pink"] .pfn-mount, [data-mount="pink"] .pfn-design__art { background-color: #F3CBD6; }
.pfn-mount--green, [data-mount="green"] .pfn-mount, [data-mount="green"] .pfn-design__art { background-color: #8FA08A; }
.pfn-mount--black, [data-mount="black"] .pfn-mount, [data-mount="black"] .pfn-design__art { background-color: #1E1B1C; }
.pfn-mount--navy, [data-mount="navy"] .pfn-mount, [data-mount="navy"] .pfn-design__art { background-color: #1F2B4A; }
.pfn-mount--clear-glass, [data-mount="clear-glass"] .pfn-mount, [data-mount="clear-glass"] .pfn-design__art { background-color: rgba(235,229,223,.55); background-image: linear-gradient(125deg, rgba(255,255,255,.75) 0%, rgba(255,255,255,0) 32%, rgba(255,255,255,0) 60%, rgba(255,255,255,.45) 72%, rgba(255,255,255,0) 86%); }

.pfn-stage__caption { position: absolute; left: 24px; right: 24px; bottom: 16px; margin: 0; text-align: center; display: flex; flex-direction: column; gap: 2px; }
.pfn-stage__caption-text { font-family: var(--serif); font-style: italic; font-size: 1.05rem; color: var(--ink); }
.pfn-stage__note { font-size: .7rem; letter-spacing: .04em; color: var(--soft); }
.pfn-stage.is-photo .pfn-stage__caption { display: none; }
.pfn-thumbs { flex: 0 0 auto; display: flex; gap: 10px; padding: 12px 20px; background: #fff; border-top: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; }
.pfn-thumbs::-webkit-scrollbar { display: none; }
.pfn-thumb { flex: 0 0 64px; width: 64px; height: 64px; padding: 0; border: 1px solid var(--line); border-radius: 4px; background: #fff; overflow: hidden; opacity: .75; transition: opacity .2s, border-color .2s; }
.pfn-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pfn-thumb.is-active, .pfn-thumb:hover { opacity: 1; border-color: var(--g); box-shadow: 0 0 0 1px var(--g); }
.pfn-thumb__preview { display: block; width: 100%; height: 100%; background: #EFE9E3 radial-gradient(circle at 50% 50%, #fff 0 34%, #D8B25A 35% 42%, transparent 43%); }

/* Panel */
.pfn-builder__panel { position: relative; padding: 36px clamp(20px, 3.4vw, 48px) 0; min-width: 0; }
.pfn-panel-head { padding-bottom: 20px; border-bottom: 1px solid var(--line); }
.pfn-panel-head__kicker { margin: 0 0 6px; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--g); }
.pfn-panel-head__title { margin: 0; font-family: var(--serif); font-size: clamp(1.7rem, 2.4vw, 2.2rem); font-weight: 400; line-height: 1.15; color: var(--ink); }
.pfn-panel-head__price { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
.pfn-live-price { font-family: var(--serif); font-size: 1.6rem; color: var(--ink); }
.pfn-reset { background: none; border: 1px solid var(--line); border-radius: 3px; padding: 4px 10px; font-size: .68rem !important; letter-spacing: .12em; text-transform: uppercase; color: var(--soft) !important; }
.pfn-reset:hover { border-color: var(--g); color: var(--g) !important; }
.pfn-panel-head__sub { margin: 10px 0 0; font-size: .88rem; line-height: 1.6; color: var(--soft); }

.pfn-row { padding: 22px 0 24px; border-bottom: 1px solid var(--line); scroll-margin-top: 110px; }
.pfn-row.is-flash { animation: pfn-flash 1.3s ease; }
@keyframes pfn-flash { 0%, 100% { background: transparent; } 25% { background: var(--sage); } }
.pfn-row__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.pfn-row__label { margin: 0; font-family: var(--serif); font-size: 1.12rem; font-weight: 600; line-height: 1.3; color: var(--ink); }
.pfn-row__value { font-weight: 400; color: var(--soft); }
.pfn-row__hint { margin: -4px 0 12px; font-size: .84rem; font-style: italic; color: var(--soft); }
.pfn-info { flex: 0 0 26px; width: 26px; height: 26px; padding: 0; border-radius: 50%; border: 1px solid var(--soft); background: #fff; font-family: var(--serif) !important; font-style: italic; font-size: .85rem !important; line-height: 1; color: var(--soft) !important; }
.pfn-info[aria-expanded="true"], .pfn-info:hover { background: var(--g); border-color: var(--g); color: #fff !important; }
.pfn-info-text { margin: -4px 0 14px; padding: 12px 14px; background: var(--sage-l); border-left: 2px solid var(--g); font-size: .84rem; line-height: 1.6; color: var(--ink); }
.pfn-row__controls { display: flex; flex-wrap: wrap; gap: 10px; }
.pfn-row__controls:empty { display: none; }

/* Badges ("Nell's favourite", "Bridal favourite", "Reduced reflection") */
.pfn-badge { position: absolute; top: -9px; left: 50%; transform: translateX(-50%); white-space: nowrap; padding: 2px 7px; background: var(--g); color: #fff; font-size: .58rem; letter-spacing: .1em; text-transform: uppercase; font-style: normal; line-height: 1.5; border-radius: 2px; z-index: 1; }

/* Swatches (mountboard, frame colour) */
.pfn-row__controls:has(.pfn-swatch-btn) { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px 10px; padding-top: 6px; }
.pfn-swatch-btn { position: relative; display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 12px 4px 10px; background: #fff; border: 1px solid transparent; border-radius: 6px; text-align: center; transition: border-color .2s, background .2s; }
.pfn-swatch-btn:hover { border-color: var(--line); }
.pfn-swatch-btn.is-selected { border-color: var(--g); background: var(--sage-l); }
.pfn-chip { display: block; width: 40px; height: 40px; border-radius: 50%; box-shadow: 0 0 0 1px rgba(42,36,38,.14), inset 0 1px 3px rgba(42,36,38,.12); }
.pfn-swatch-btn.is-selected .pfn-chip { box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--g); }
.pfn-swatch-btn__name { font-size: .8rem; line-height: 1.25; color: var(--ink); }
.pfn-swatch-btn__price { font-size: .72rem; color: var(--g); }

/* Pills (shape, size, glass) */
.pfn-pill { position: relative; flex: 1 1 0; min-width: 120px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; padding: 14px 10px 12px; background: #fff; border: 1px solid var(--line); border-radius: 4px; text-align: center; transition: border-color .2s, background .2s; }
.pfn-pill:hover { border-color: var(--g-soft); }
.pfn-pill.is-selected { border-color: var(--g); background: var(--sage); box-shadow: inset 0 0 0 1px var(--g); }
.pfn-pill__name { font-size: .92rem; color: var(--ink); line-height: 1.25; }
.pfn-pill__note { font-size: .7rem; font-style: italic; color: var(--soft); }
.pfn-pill__price { font-family: var(--serif); font-size: 1.02rem; color: var(--g); }
.pfn-pill--shape { flex-direction: column; gap: 6px; }
.pfn-shape-icon { display: block; border: 1.5px solid var(--ink); }
.pfn-shape-icon--rectangle { width: 30px; height: 21px; }
.pfn-shape-icon--square { width: 24px; height: 24px; }
.pfn-shape-icon--oval { width: 30px; height: 24px; border-radius: 50%; }

/* Bloom Protection toggle */
.pfn-toggle { display: flex; align-items: center; gap: 14px; width: 100%; padding: 14px 16px; background: #fff; border: 1px solid var(--line); border-radius: 4px; text-align: left; }
.pfn-toggle.is-selected { border-color: var(--g); background: var(--sage); box-shadow: inset 0 0 0 1px var(--g); }
.pfn-toggle__box { flex: 0 0 22px; height: 22px; border: 1.5px solid var(--soft); border-radius: 3px; background: #fff; position: relative; }
.pfn-toggle.is-selected .pfn-toggle__box { background: var(--g); border-color: var(--g); }
.pfn-toggle.is-selected .pfn-toggle__box::after { content: ""; position: absolute; left: 6px; top: 2px; width: 6px; height: 11px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.pfn-toggle__text { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; }
.pfn-toggle__sub { font-size: .76rem; color: var(--soft); }

/* Designs */
.pfn-row__controls:has(.pfn-design) { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px 12px; padding-top: 6px; }
.pfn-design { position: relative; display: flex; flex-direction: column; align-items: stretch; gap: 8px; padding: 0; background: none; border: 0; text-align: center; }
.pfn-design__art { display: flex; align-items: center; justify-content: center; aspect-ratio: 1 / 1; padding: 12%; box-sizing: border-box; background-color: #FAF8F2; border: 1px solid var(--line); transition: background-color .3s, border-color .2s, box-shadow .2s; border-radius: 3px; transition: border-color .2s, box-shadow .2s; }
.pfn-design__art.pfn-shape--rectangle { aspect-ratio: 7 / 5; padding: 9% 10%; }
.pfn-design__art.pfn-shape--oval { aspect-ratio: 6 / 5; border-radius: 50%; padding: 12% 14%; }
.pfn-design__art img { max-width: 100%; max-height: 100%; object-fit: contain; }
.pfn-design:hover .pfn-design__art { border-color: var(--g-soft); }
.pfn-design.is-selected .pfn-design__art { border-color: var(--g); box-shadow: inset 0 0 0 1px var(--g), 0 8px 20px -10px rgba(42,36,38,.35); }
.pfn-design__name { font-family: var(--serif); font-style: italic; font-size: .9rem; line-height: 1.3; color: var(--ink); }
.pfn-design .pfn-badge { top: -8px; }

/* The real product form, restyled as the "Your wedding" row */
.pfn-builder .woocommerce div.product { margin: 0; }
.pfn-builder .woocommerce div.product div.images, .pfn-builder .woocommerce div.product .product_title, .pfn-builder .woocommerce div.product p.price,
.pfn-builder .woocommerce div.product .woocommerce-product-rating, .pfn-builder .woocommerce-tabs, .pfn-builder .related, .pfn-builder .up-sells, .pfn-builder .product_meta,
.pfn-builder .woocommerce-product-details__short-description, .pfn-builder .woocommerce-variation-description, .pfn-builder .woocommerce-variation-price,
.pfn-builder .woocommerce-variation-availability, .pfn-builder form.cart table.variations, .pfn-builder .reset_variations_alert, .pfn-builder form.cart .quantity,
.pfn-builder .wc-deposits-wrapper, .pfn-builder .wapf-product-totals, .pfn-builder .pfn-field-mount, .pfn-builder .pfn-field-design, .pfn-builder .pfn-field-bloom,
.pfn-builder form.cart .single_add_to_cart_button, .pfn-builder .onsale { display: none !important; }
.pfn-builder .woocommerce div.product div.summary { width: 100% !important; float: none !important; margin: 0 !important; padding: 0 !important; }
.pfn-builder form.cart { margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; }
.pfn-builder .single_variation_wrap, .pfn-builder .woocommerce-variation-add-to-cart { margin: 0 !important; display: block !important; }
.pfn-builder .wapf-wrapper { margin: 0; }
.pfn-builder .wapf-field-group { display: grid; grid-template-columns: 1fr 1fr; gap: 18px 16px; }
.pfn-builder .wapf-field-row { display: contents; }
.pfn-builder .wapf-field-container { margin: 0 !important; min-width: 0; width: auto !important; }
.pfn-builder .pfn-field-gift, .pfn-builder .pfn-field-delivery, .pfn-builder .pfn-field-notes, .pfn-builder .pfn-field-pay, .pfn-builder .pfn-row--addons { grid-column: 1 / -1; }
.pfn-builder .wapf-field-label { margin-bottom: 7px; font-family: var(--body); font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--g); }
.pfn-builder .wapf-field-label abbr.required { text-decoration: none; border: 0; color: var(--g); margin-left: 2px; }
.pfn-builder .wapf-field-description { margin: 6px 0 0; font-size: .78rem; line-height: 1.55; color: var(--soft); }
.pfn-builder .wapf-field-container input[type="text"], .pfn-builder .wapf-field-container input[type="date"], .pfn-builder .wapf-field-container textarea {
	width: 100%; max-width: none; box-sizing: border-box; padding: 11px 12px; border: 1px solid var(--line); border-radius: 3px; background: #fff; font: inherit; font-size: .92rem; color: var(--ink); }
.pfn-builder .wapf-field-container input:focus, .pfn-builder .wapf-field-container textarea:focus { outline: none; border-color: var(--g); box-shadow: 0 0 0 1px var(--g); }
.pfn-builder .wapf-field-container textarea { min-height: 120px; resize: vertical; }
.pfn-builder .wapf-radios { display: flex; flex-wrap: wrap; gap: 8px; }
.pfn-builder .wapf-checkable { flex: 1 1 0; min-width: 0; margin: 0; }
.pfn-builder .wapf-checkable .wapf-input-label { display: flex; align-items: center; gap: 10px; height: 100%; box-sizing: border-box; padding: 12px 14px; border: 1px solid var(--line); border-radius: 4px; background: #fff; font-size: .88rem; line-height: 1.4; cursor: pointer; }
.pfn-builder .wapf-checkable .wapf-input-label:has(input:checked) { border-color: var(--g); background: var(--sage); box-shadow: inset 0 0 0 1px var(--g); }
.pfn-builder .wapf-checkable input[type="radio"] { accent-color: var(--g); margin: 0; flex: 0 0 auto; }
.pfn-builder .pfn-field-delivery .wapf-radios, .pfn-builder .pfn-field-pay .wapf-radios { flex-direction: column; }
.pfn-next-note { margin: 10px 0 0; padding: 10px 12px; background: var(--sage-l); border-left: 2px solid var(--g); font-size: .82rem; line-height: 1.55; }
.pfn-row--wedding { border-bottom: 0; }
.pfn-builder .pfn-row--addons { padding: 18px 0 4px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin: 6px 0; }
.pfn-builder .pfn-field-pay { padding-top: 6px; }

/* Add-on keepsakes */
.pfn-addons { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; padding-bottom: 14px; }
.pfn-addon { position: relative; display: flex; flex-direction: column; gap: 6px; cursor: pointer; text-align: center; }
.pfn-addon__check { position: absolute; opacity: 0; pointer-events: none; }
.pfn-addon__img { display: block; aspect-ratio: 2 / 3; overflow: hidden; background: #FAF8F2; border: 1px solid var(--line); border-radius: 3px; transition: border-color .2s, box-shadow .2s; }
.pfn-addon__img img { width: 100%; height: 100%; object-fit: contain; display: block; }
.pfn-addon__text { display: flex; flex-direction: column; gap: 1px; }
.pfn-addon__name { font-family: var(--serif); font-style: italic; font-size: .82rem; line-height: 1.25; color: var(--ink); }
.pfn-addon__size { font-size: .68rem; color: var(--soft); }
.pfn-addon__price { font-family: var(--serif); font-size: .92rem; color: var(--g); }
.pfn-addon__tick { position: absolute; top: 6px; right: 6px; width: 22px; height: 22px; border-radius: 50%; background: rgba(255,255,255,.92); border: 1px solid var(--line); }
.pfn-addon:has(input:checked) .pfn-addon__img { border-color: var(--g); box-shadow: 0 0 0 1px var(--g); }
.pfn-addon:has(input:checked) .pfn-addon__tick { background: var(--g); border-color: var(--g); }
.pfn-addon:has(input:checked) .pfn-addon__tick::after { content: ""; position: absolute; left: 7px; top: 3px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.pfn-addon:has(input:focus-visible) .pfn-addon__img { outline: 2px solid var(--g); outline-offset: 2px; }

/* Summary */
.pfn-summary { margin: 20px 0 0; padding: 20px 22px; background: var(--sage-l); border-radius: 6px; }
.pfn-summary__title { margin: 0 0 10px; font-family: var(--serif); font-size: 1.12rem; font-weight: 600; }
.pfn-summary__lines { margin: 0; }
.pfn-summary__lines > div { display: grid; grid-template-columns: 34% 1fr; gap: 10px; padding: 6px 0; border-bottom: 1px dashed rgba(75,81,71,.2); font-size: .86rem; }
.pfn-summary__lines dt { color: var(--soft); }
.pfn-summary__lines dd { margin: 0; display: flex; justify-content: space-between; gap: 10px; color: var(--ink); }
.pfn-summary__lines dd span:last-child { white-space: nowrap; font-family: var(--serif); }
.pfn-summary__total { border-bottom: 0 !important; padding-top: 10px !important; font-size: 1.05rem !important; }
.pfn-summary__total dt, .pfn-summary__total dd { font-family: var(--serif); color: var(--ink) !important; }
.pfn-summary__small { margin: 12px 0 0; font-size: .76rem; line-height: 1.55; color: var(--soft); }

/* Sticky progress + button */
.pfn-bar { position: sticky; bottom: 0; z-index: 20; margin: 22px calc(-1 * clamp(20px, 3.4vw, 48px)) 0; padding: 12px clamp(20px, 3.4vw, 48px) 14px; background: rgba(255,255,255,.97); backdrop-filter: blur(6px); border-top: 1px solid var(--line); box-shadow: 0 -10px 24px -14px rgba(42,36,38,.25); }
.pfn-bar__progress { display: flex; justify-content: space-between; font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: var(--soft); }
.pfn-bar__track { height: 2px; margin: 6px 0 10px; background: var(--line); }
.pfn-bar__fill { display: block; height: 100%; width: 0; background: var(--g); transition: width .4s ease; }
.pfn-bar__button { display: block; width: 100%; padding: 15px 18px; border: 0; border-radius: 3px; background: var(--g-soft); color: #fff !important; font-size: .82rem !important; letter-spacing: .14em; text-transform: uppercase; transition: background .2s; }
.pfn-bar__button:hover { background: var(--g); }
.pfn-bar__button.is-ready { background: var(--g); }
.pfn-bar__button.is-ready:hover { background: var(--wp--preset--color--green-dark); }
.pfn-bar__today { margin: 7px 0 0; min-height: 1em; text-align: center; font-size: .74rem; color: var(--soft); }
.pfn-bar__today:empty { display: none; }

/* Tablet and phone: preview on top (shorter), panel below, bar fixed to the screen */
@media (max-width: 1023.98px) {
	.pfn-builder { grid-template-columns: 1fr; border-top: 0; }
	.pfn-builder__media, .admin-bar .pfn-builder__media { position: relative; top: 0; height: auto; min-height: 0; border-right: 0; }
	.pfn-stage { flex-direction: column; gap: 14px; padding: 28px 24px 16px; min-height: 340px; }
	.pfn-stage__caption { position: static; }
	.pfn-stage__preview { width: 100%; }
	.pfn-stage__preview[data-shape="square"] { max-width: min(400px, 80vw); }
	.pfn-stage__preview[data-shape="rectangle"] { max-width: min(540px, 92vw); }
	.pfn-stage__preview[data-shape="oval"] { max-width: min(480px, 88vw); }
	.pfn-builder__panel { padding: 26px 20px 0; }
	.pfn-bar { position: fixed; left: 0; right: 0; margin: 0; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); }
	.pfn-summary { margin-bottom: 150px; }
}
@media (max-width: 767.98px) {
	.pfn-stage { padding: 20px 16px 12px; min-height: 0; }
	.pfn-stage__preview[data-shape="oval"] { max-width: 82vw; }
	.pfn-stage__caption-text { font-size: .95rem; }
	.pfn-stage__photo { position: absolute; }
	.pfn-row__controls:has(.pfn-swatch-btn) { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px 4px; }
	.pfn-swatch-btn { padding: 12px 2px 8px; }
	.pfn-swatch-btn__name { font-size: .72rem; }
	.pfn-swatch-btn__price { font-size: .66rem; }
	.pfn-chip { width: 36px; height: 36px; }
	.pfn-badge { font-size: .5rem; padding: 1px 5px; letter-spacing: .06em; }
	.pfn-pill { min-width: 0; padding: 12px 6px 10px; }
	.pfn-pill__name { font-size: .84rem; }
	.pfn-row__controls:has(.pfn-pill--size) { display: grid; grid-template-columns: 1fr; }
	.pfn-pill--size { flex-direction: row; justify-content: space-between; padding: 14px 14px; text-align: left; gap: 10px; flex-wrap: wrap; }
	.pfn-pill--size .pfn-pill__note { order: 3; flex-basis: 100%; }
	.pfn-row__controls:has(.pfn-design) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.pfn-builder .wapf-field-group { grid-template-columns: 1fr; }
	.pfn-addons { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 10px; }
	.pfn-summary__lines > div { grid-template-columns: 38% 1fr; }
	.pfn-thumbs { padding: 10px 16px; }
	.pfn-thumb { flex-basis: 56px; width: 56px; height: 56px; }
}
body:has(.pfn-builder) { scroll-padding-bottom: 150px; }

/* Booking page header */
.pfn-book-head .pfn-reassure { gap: 6px 28px !important; }
.pfn-book-head .pfn-reassure-item { display: flex; align-items: center; gap: 8px; margin: 0 !important; font-size: .84rem; color: var(--wp--preset--color--ink-soft); }
.pfn-book-head .pfn-reassure-item::before { content: ""; flex: 0 0 6px; width: 6px; height: 6px; border-radius: 50%; background: var(--wp--preset--color--green); }

/* ---------------------------------------------------------------
   24 Sep 2026: Stockists page. Pinterest-style photo walls (own shapes,
   tight columns, no words on the photos) and taller stockist cards
   so the shop names stay in the picture.
   --------------------------------------------------------------- */
.wp-block-gallery.pfn-pin-gallery { display: block !important; column-count: 3; column-gap: 14px; }
.wp-block-gallery.pfn-pin-gallery .wp-block-image { display: block; width: 100% !important; margin: 0 0 14px; break-inside: avoid; overflow: hidden; border-radius: 4px; }
.wp-block-gallery.pfn-pin-gallery .wp-block-image img { display: block; width: 100%; height: auto; transition: transform .6s ease; }
.wp-block-gallery.pfn-pin-gallery .wp-block-image:hover img { transform: scale(1.03); }
.wp-block-gallery.pfn-pin-gallery.columns-4 { column-count: 4; }
.wp-block-gallery.pfn-pin-gallery figcaption { display: none !important; }
@media (max-width: 1023.98px) { .wp-block-gallery.pfn-pin-gallery, .wp-block-gallery.pfn-pin-gallery.columns-4 { column-count: 3; } }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-pin-gallery, .wp-block-gallery.pfn-pin-gallery.columns-4 { column-count: 2; column-gap: 8px; } .wp-block-gallery.pfn-pin-gallery .wp-block-image { margin-bottom: 8px; } }
.pfn-pin-section > .wp-block-spectra-container { margin-left: auto !important; margin-right: auto !important; }
.pfn-stockist-photo img { aspect-ratio: auto; height: auto; }

/* Photo mosaic without cropping: pfn.js packs whole photos into columns with no gaps (absolute positions) */
.wp-block-gallery.pfn-mosaic { --gap: 10px; display: block !important; position: relative; }
.wp-block-gallery.pfn-mosaic.has-nested-images figure.wp-block-image { position: absolute !important; top: 0; left: 0; width: calc(25% - var(--gap)); margin: 0 !important; display: block !important; overflow: hidden; border-radius: 4px; background: var(--wp--preset--color--sage);
	opacity: 0; transform: translateY(28px); transition: opacity .7s ease, transform .8s cubic-bezier(.2,.7,.2,1), top .35s ease, left .35s ease, width .35s ease; }
.wp-block-gallery.pfn-mosaic.has-nested-images:not(.is-packed) figure.wp-block-image { position: relative !important; display: inline-block; vertical-align: top; margin: 0 var(--gap) var(--gap) 0; }
.wp-block-gallery.pfn-mosaic.has-nested-images figure.wp-block-image.is-in { opacity: 1; transform: none; }
.wp-block-gallery.pfn-mosaic .wp-block-image img { display: block; width: 100% !important; height: auto !important; transition: transform 1.1s cubic-bezier(.2,.7,.2,1); }
.wp-block-gallery.pfn-mosaic.is-packed .wp-block-image img { height: 100% !important; object-fit: cover; }
.wp-block-gallery.pfn-mosaic .wp-block-image:hover img { transform: scale(1.04); }
/* 25 Sep 2026 (client): no white hover frame on gallery photos. */
.wp-block-gallery.pfn-mosaic figcaption { display: none !important; }
@media (max-width: 1023.98px) { .wp-block-gallery.pfn-mosaic { --gap: 8px; } }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-mosaic { --gap: 6px; } }
@media (prefers-reduced-motion: reduce) { .wp-block-gallery.pfn-mosaic.has-nested-images figure.wp-block-image { opacity: 1; transform: none; transition: none; } }

/* Film strip: an edge-to-edge row of photos that drifts sideways */
.pfn-film { overflow: hidden; padding: 0 !important; background: var(--wp--preset--color--whim); }
.pfn-film .pfn-film__track { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: center; gap: 10px !important; width: max-content !important; max-width: none !important; padding: 10px 0 !important; animation: pfn-film 70s linear infinite; }
.pfn-film:hover .pfn-film__track { animation-play-state: paused; }
.pfn-film .wp-block-image { flex: 0 0 auto; margin: 0; height: clamp(220px, 34vw, 420px); overflow: hidden; border-radius: 4px; }
.pfn-film .wp-block-image img { display: block; height: 100%; width: auto; max-width: none; }
@keyframes pfn-film { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .pfn-film .pfn-film__track { animation: none; } }

/* Blended three-photo banner (Our Team & Studio, 24 Sep 2026): panels overlap and dissolve into each other */
.pfn-blend { position: relative; overflow: hidden; padding: 0 !important; background: var(--wp--preset--color--ink); }
.pfn-blend .pfn-blend__panels { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 0 !important; position: absolute; inset: 0; width: 100% !important; max-width: none !important; }
.pfn-blend .pfn-blend__panels .wp-block-image { flex: 1 1 0; min-width: 0; margin: 0; height: 100%; position: relative; }
.pfn-blend .pfn-blend__panels .wp-block-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pfn-blend .pfn-blend__panels .wp-block-image:nth-child(2) { flex-basis: 40%; margin: 0 -7%; z-index: 1;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 22%, #000 78%, transparent); mask-image: linear-gradient(to right, transparent, #000 22%, #000 78%, transparent); }
.pfn-blend::before { content: ""; position: absolute; inset: 0; z-index: 2; background: linear-gradient(180deg, rgba(42,36,38,.12) 0%, rgba(42,36,38,.28) 55%, rgba(42,36,38,.5) 100%); }
.pfn-blend .pfn-blend__words { position: relative; z-index: 3; margin: auto !important; padding: 15vh 24px; text-align: center; }
.pfn-blend .pfn-blend__words .wp-block-spectra-content { text-align: center; text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.pfn-blend .pfn-blend__words h1, .pfn-blend .pfn-blend__words h2 { font-style: italic; font-weight: 400; line-height: 1.15; }
@media (max-width: 767.98px) {
	.pfn-blend { min-height: 0 !important; }
	.pfn-blend .pfn-blend__panels { position: relative; flex-direction: column !important; height: auto; }
	.pfn-blend .pfn-blend__panels .wp-block-image { height: 30vh; }
	.pfn-blend .pfn-blend__panels .wp-block-image:nth-child(2) { flex-basis: auto; margin: -8vh 0; -webkit-mask-image: linear-gradient(to bottom, transparent, #000 25%, #000 75%, transparent); mask-image: linear-gradient(to bottom, transparent, #000 25%, #000 75%, transparent); }
	.pfn-blend .pfn-blend__words { position: absolute; inset: 0; padding: 24px; display: flex; align-items: center; justify-content: center; }
	.pfn-blend .pfn-blend__words h1 { font-size: 1.9rem; }
}
/* Blend banner used as every page header (24 Sep 2026): words, text and buttons */
.pfn-blend .pfn-blend__words p:not(.pfn-kicker) { color: #fff; max-width: 760px; margin-left: auto !important; margin-right: auto !important; }
.pfn-blend .pfn-blend__words .wp-block-spectra-buttons { justify-content: center; }
.pfn-blend .pfn-blend__words h1:not(:only-child), .pfn-blend .pfn-blend__words h2 { font-style: normal; }
.pfn-blend .pfn-blend__words h1 { font-style: italic; }
@media (max-width: 767.98px) { .pfn-blend .pfn-blend__words p:not(.pfn-kicker) { font-size: .95rem; } }

/* ---------------------------------------------------------------
   24 Sep 2026: The Journey of Your Flowers (Bridal) as a timeline.
   Five white cards on the sage band, joined by a line through numbered badges. On scroll the line draws
   across and the badges light in turn; hovering a step lights the journey up to that step (pfn.js sets
   .is-lit and --pfn-gap). Nell's photos and words unchanged; without JS everything shows fully lit.
   --------------------------------------------------------------- */
.pfn-steps .pfn-step {
	background: var(--wp--preset--color--white); border-radius: 12px; padding: 0 0 26px !important; gap: 10px !important;
	box-shadow: 0 1px 2px rgba(42,36,38,.05), 0 10px 28px -14px rgba(42,36,38,.22);
	text-align: left; align-items: stretch !important; transition: transform .35s ease, box-shadow .35s ease;
}
.pfn-steps .pfn-step > *:not(.pfn-step-image) { padding-left: 22px !important; padding-right: 22px !important; text-align: left !important; }
.pfn-steps .pfn-step-image { position: relative; margin: 0 0 18px !important; }
.pfn-steps .pfn-step-image img { border-radius: 12px 12px 0 0; aspect-ratio: 4 / 5; }
.pfn-steps .pfn-step .pfn-kicker { margin-top: 0; font-size: .7rem; color: var(--wp--preset--color--green); }
.pfn-steps .pfn-step h3 { font-size: 1.2rem; line-height: 1.25; }
.pfn-steps .pfn-step p:not(.pfn-kicker) { font-size: .9rem; line-height: 1.6; }
/* Numbered badge on the lower edge of each photo */
.pfn-steps > .wp-block-spectra-container { counter-reset: pfn-step; }
.pfn-steps .pfn-step { counter-increment: pfn-step; }
.pfn-steps .pfn-step-image::before {
	content: counter(pfn-step); position: absolute; z-index: 3; left: 22px; bottom: -21px; width: 42px; height: 42px;
	display: grid; place-items: center; border-radius: 50%;
	font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.15rem; line-height: 1;
	background: var(--wp--preset--color--white); color: var(--wp--preset--color--green);
	box-shadow: 0 0 0 2px var(--wp--preset--color--green), 0 4px 12px rgba(42,36,38,.18);
	transition: background .4s ease, color .4s ease, box-shadow .4s ease, transform .4s ease;
}
.pfn-steps .pfn-step.is-lit .pfn-step-image::before { background: var(--wp--preset--color--green); color: var(--wp--preset--color--white); }
/* Line from this badge to the next: dashed track, green fill drawn over it */
@media (min-width: 1024px) {
	.pfn-steps .pfn-step:not(:last-child) .pfn-step-image::after {
		content: ""; position: absolute; z-index: 2; left: 43px; bottom: -1px; height: 2px; width: calc(100% + var(--pfn-gap, 24px));
		background:
			linear-gradient(var(--wp--preset--color--green), var(--wp--preset--color--green)) no-repeat 0 0 / 0% 100%,
			repeating-linear-gradient(90deg, rgba(74,90,70,.35) 0 6px, transparent 6px 11px);
		transition: background-size .6s ease;
	}
	.pfn-steps .pfn-step.is-lit:has(+ .pfn-step.is-lit) .pfn-step-image::after { background-size: 100% 100%, auto; }
	.pfn-steps .pfn-step:hover { box-shadow: 0 2px 4px rgba(42,36,38,.06), 0 22px 40px -18px rgba(42,36,38,.32); }
	.pfn-steps .pfn-step:hover .pfn-step-image::before { background: var(--wp--preset--color--cerise); color: var(--wp--preset--color--white);
		box-shadow: 0 0 0 2px var(--wp--preset--color--cerise), 0 6px 16px rgba(42,36,38,.22); transform: scale(1.08); }
}
/* Entrance: cards rise in turn (only once pfn.js has armed the row) */
.pfn-steps.is-armed .pfn-step { opacity: 0; transform: translateY(24px); }
.pfn-steps.is-armed.is-in .pfn-step { opacity: 1; transform: none; transition: opacity .7s ease, transform .7s ease, box-shadow .35s ease; }
.pfn-steps.is-armed.is-in .pfn-step:nth-child(2) { transition-delay: .12s; }
.pfn-steps.is-armed.is-in .pfn-step:nth-child(3) { transition-delay: .24s; }
.pfn-steps.is-armed.is-in .pfn-step:nth-child(4) { transition-delay: .36s; }
.pfn-steps.is-armed.is-in .pfn-step:nth-child(5) { transition-delay: .48s; }
.pfn-steps.is-armed.is-in.is-settled .pfn-step { transition-delay: 0s; transition: transform .35s ease, box-shadow .35s ease; }
/* Wider cards (Tommy, 24 Sep): the row may run to 1500px with tighter gaps, so the words have room; the
   "Step 1" label is hidden because the badge carries the number. */
.pfn-steps, .pfn-steps > .wp-block-spectra-container { max-width: 1500px !important; }
.pfn-steps > .wp-block-spectra-container { column-gap: 20px !important; }
.pfn-steps .pfn-step .pfn-kicker { display: none; }
.pfn-steps .pfn-step h3 { margin-top: 4px !important; }
@media (min-width: 1024px) and (max-width: 1399.98px) { .pfn-steps .pfn-step > *:not(.pfn-step-image) { padding-left: 18px !important; padding-right: 18px !important; } }
/* Tablet: three per row, badges only */
@media (min-width: 768px) and (max-width: 1023.98px) { .pfn-steps > .wp-block-spectra-container { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; row-gap: 40px !important; } }
/* Phones: one card per step, photo across the top, words full width beneath */
@media (max-width: 767.98px) {
	.pfn-steps .pfn-step { display: flex !important; padding: 0 0 22px !important; border-bottom: 0; margin-bottom: 4px; }
	.pfn-steps .pfn-step:last-child { padding-bottom: 22px !important; }
	.pfn-steps .pfn-step > *:not(.pfn-step-image) { padding-left: 20px !important; padding-right: 20px !important; }
	.pfn-steps .pfn-step-image { margin: 0 0 16px !important; grid-row: auto; }
	.pfn-steps .pfn-step-image img { border-radius: 12px 12px 0 0; aspect-ratio: 4 / 3; }
	.pfn-steps .pfn-step-image::before { left: 20px; top: auto; bottom: -19px; width: 38px; height: 38px; font-size: 1rem; }
	.pfn-steps .pfn-step h3 { font-size: 1.2rem; }
	.pfn-steps .pfn-step p:not(.pfn-kicker) { font-size: .95rem; }
}
@media (prefers-reduced-motion: reduce) {
	.pfn-steps.is-armed .pfn-step, .pfn-steps.is-armed.is-in .pfn-step { opacity: 1; transform: none; transition: none; }
	.pfn-steps .pfn-step-image::before, .pfn-steps .pfn-step-image::after { transition: none !important; }
}

/* Home "What We Promise You" on a photo (25 Sep 2026, like the Stockists bands): the dark fade is deeper
   because the four promises carry more text than a banner; cards are frosted panels with white words. */
.pfn-hero-overlay.pfn-hero-dark.pfn-promise-overlay { background: linear-gradient(180deg, rgba(42,36,38,.28) 0%, rgba(42,36,38,.5) 40%, rgba(42,36,38,.72) 100%) !important; }
.pfn-promise-card--light { background: rgba(42,36,38,.28); border: 1px solid rgba(255,255,255,.22); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.pfn-promise-card--light .wp-block-spectra-content { color: var(--wp--preset--color--white) !important; }
.pfn-promise-card--light > .pfn-promise-icon { box-shadow: 0 6px 18px rgba(42, 36, 38, 0.25); }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark.pfn-promise-overlay { background: rgba(42,36,38,.6) !important; } }
@media (min-width: 768px) and (max-width: 1023.98px) { .pfn-promise-card.pfn-promise-card--light { flex-direction: column !important; gap: 18px !important; } .pfn-promise-card--light > .pfn-promise-icon { flex-basis: auto; } }


/* Home "Secure your wedding date" on a floral photo (25 Sep 2026): left-to-right fade like the home header,
   words vertically centred. */
.pfn-hero-overlay.pfn-hero-dark.pfn-booking-overlay { justify-content: center !important; background: linear-gradient(90deg, rgba(42,36,38,.72) 0%, rgba(42,36,38,.58) 38%, rgba(42,36,38,.22) 68%, rgba(42,36,38,.06) 100%) !important; }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark.pfn-booking-overlay { background: rgba(42,36,38,.58) !important; } }

/* Booking page header on a floral photo (25 Sep 2026): even dark fade, white words, like the home header. */
.pfn-book-head .pfn-book-head__overlay { background: linear-gradient(180deg, rgba(42,36,38,.58) 0%, rgba(42,36,38,.64) 100%); }
.pfn-book-head .pfn-book-head__overlay .wp-block-spectra-content { text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.pfn-book-head .pfn-book-head__overlay .pfn-kicker,
.pfn-book-head .pfn-book-head__overlay .pfn-reassure-item { color: var(--wp--preset--color--white) !important; }
.pfn-book-head .pfn-book-head__overlay .pfn-reassure-item::before { background: var(--wp--preset--color--white); }

/* Stockists, clients and awards strip (25 Sep 2026, client: logos uniform). pfn.js turns the slider into a CSS
   marquee (.pfn-marquee) and sizes each logo optically (same area; the heights below are the fallback). All logos
   share one baseline box so captions line up; even gaps, captions on one line. */
.pfn-logo-strip .wp-block-spectra-slider.is-marquee { height: auto !important; overflow: hidden; }
.pfn-marquee { overflow: hidden; width: 100%; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 6%, #000 94%, transparent 100%); }
.pfn-marquee__track { display: flex; width: max-content; animation: pfn-marquee 60s linear infinite; }
.pfn-marquee:hover .pfn-marquee__track { animation-play-state: paused; }
.pfn-marquee__set { display: flex; flex: 0 0 auto; align-items: flex-start; }
.pfn-marquee__item { flex: 0 0 auto; padding: 0 28px; }
.pfn-marquee__item .pfn-logo-slide { width: auto !important; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.pfn-marquee__item figure { margin: 0 !important; width: auto !important; height: 52px; display: flex; align-items: center; justify-content: center; }
.pfn-marquee__item img { display: block; height: 40px !important; max-height: none !important; width: auto !important; max-width: none !important; object-fit: contain; }
.pfn-marquee__item .pfn-logo-caption { white-space: nowrap; }
@keyframes pfn-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (max-width: 767.98px) { .pfn-marquee__item { padding: 0 18px; } .pfn-marquee__item figure { height: 40px; } .pfn-marquee__item img { height: 32px !important; } }
@media (prefers-reduced-motion: reduce) { .pfn-marquee__track { animation: none; } .pfn-marquee { overflow-x: auto; } }

/* Our Team & Studio "Come visit our studio" on the studio photo (25 Sep 2026): same fade as the booking bands. */
.pfn-visit-overlay .pfn-journey-image img { box-shadow: 0 18px 40px -12px rgba(42,36,38,.55); }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark.pfn-booking-overlay.pfn-visit-overlay { background: rgba(42,36,38,.66) !important; } }

/* Stockists top banner on the light frames photo (DSC07506, 25 Sep 2026): a deeper fade so the white words read. */
.pfn-hero-overlay.pfn-hero-dark.pfn-stk-top { background: linear-gradient(90deg, rgba(42,36,38,.6) 0%, rgba(42,36,38,.46) 45%, rgba(42,36,38,.2) 75%, rgba(42,36,38,.12) 100%) !important; }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark.pfn-stk-top { background: rgba(42,36,38,.55) !important; } }

/* Contact header (25 Sep 2026): words on the left over the tree, Nell and the Limerick signpost left clear. */
.pfn-hero-overlay.pfn-hero-dark.pfn-contact-hero { background: linear-gradient(90deg, rgba(42,36,38,.7) 0%, rgba(42,36,38,.6) 18%, rgba(42,36,38,.42) 28%, rgba(42,36,38,.22) 38%, rgba(42,36,38,.08) 50%, rgba(42,36,38,0) 64%) !important; }
@media (max-width: 767.98px) { .pfn-hero-overlay.pfn-hero-dark.pfn-contact-hero { background: linear-gradient(180deg, rgba(42,36,38,.42) 0%, rgba(42,36,38,.55) 45%, rgba(42,36,38,.7) 100%) !important; } }

/* Journey of Your Flowers photos (client 25 Sep 2026: "cropped incorrectly"). The five photos are 2:3 portraits, so
   desktop and tablet show them whole at 2:3; phones use a 4:5 card with a focus point per photo. */
.pfn-steps .pfn-step-image img { aspect-ratio: 2 / 3 !important; object-position: 50% 50%; }
@media (max-width: 767.98px) {
	.pfn-steps .pfn-step-image img { aspect-ratio: 4 / 5 !important; }
	.pfn-steps .pfn-step:nth-child(1) .pfn-step-image img { object-position: 50% 45%; }
	.pfn-steps .pfn-step:nth-child(2) .pfn-step-image img { object-position: 50% 55%; }
	.pfn-steps .pfn-step:nth-child(3) .pfn-step-image img { object-position: 50% 55%; }
	.pfn-steps .pfn-step:nth-child(4) .pfn-step-image img { object-position: 50% 70%; }
	.pfn-steps .pfn-step:nth-child(5) .pfn-step-image img { object-position: 50% 75%; }
}

/* Workshops page (client brief 28 Sep 2026: fun, creative, engaging; relaxing and mindful). */
.pfn-workshop-card { height: 100%; box-shadow: 0 18px 40px -24px rgba(42,36,38,.35); transition: transform .35s ease, box-shadow .35s ease; }
.pfn-workshop-card:hover { transform: translateY(-4px); box-shadow: 0 26px 50px -24px rgba(42,36,38,.42); }
.pfn-workshop-card .pfn-workshop-image { margin: 0 !important; }
.pfn-workshop-card .pfn-workshop-image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.pfn-workshop-card .pfn-workshop-image.wp-image-flower-crown img, .pfn-workshop-card:nth-child(2) .pfn-workshop-image img { object-position: 50% 22%; }
.pfn-workshop-body { flex: 1 1 auto; }
.pfn-workshop-body > .wp-block-spectra-buttons { margin-top: auto !important; padding-top: var(--wp--preset--spacing--x-small); }
.pfn-price-list { border-top: 1px solid rgba(42,36,38,.12); border-bottom: 1px solid rgba(42,36,38,.12); padding: var(--wp--preset--spacing--x-small) 0; }
.pfn-price-item + .pfn-price-item { border-top: 1px dashed rgba(42,36,38,.12); padding-top: var(--wp--preset--spacing--x-small); }
.pfn-price { font-family: var(--wp--preset--font-family--heading, inherit); font-size: var(--wp--preset--font-size--x-large) !important; color: var(--wp--preset--color--cerise-dark, #c2407f); line-height: 1.1; margin: 0; }

/* "Create, connect" photos as tilted snapshots that straighten on hover. */
.pfn-snap .pfn-snap-image { margin: 0 0 var(--wp--preset--spacing--x-small) !important; }
.pfn-snap .pfn-snap-image img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: #fff; padding: 10px 10px 34px; box-shadow: 0 16px 30px -18px rgba(42,36,38,.45); transform: rotate(-2.2deg); transition: transform .4s ease; }
.pfn-snap-section .wp-block-spectra-container > .pfn-snap:nth-child(even) .pfn-snap-image img { transform: rotate(2deg); }
.pfn-snap-section .wp-block-spectra-container > .pfn-snap:hover .pfn-snap-image img { transform: rotate(0) scale(1.03); }
.pfn-group-photo { margin: 0 !important; border-radius: 12px; overflow: hidden; }
.pfn-group-photo img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.pfn-group-photo figcaption { position: absolute; left: 16px; bottom: 16px; margin: 0; padding: 8px 16px; border-radius: 999px; background: rgba(255,255,255,.92); color: var(--wp--preset--color--ink); font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; }
.pfn-group-photo { position: relative; }
@media (max-width: 767.98px) { .pfn-snap .pfn-snap-image img, .pfn-snap-section .wp-block-spectra-container > .pfn-snap:nth-child(even) .pfn-snap-image img { transform: rotate(-1deg); } }

/* CTA band (synced block 1183): client 28 Sep 2026 asked for a softly transparent photo behind it. Three pressed
   flower close-ups side by side on wide screens, one on smaller screens, under a whim wash. */
.pfn-cta-flowers { position: relative; isolation: isolate; overflow: hidden;
	background-color: var(--wp--preset--color--whim) !important;
	background-image: url(/wp-content/uploads/2026/09/ws-closeup-1.webp), url(/wp-content/uploads/2026/09/ws-closeup-2.webp), url(/wp-content/uploads/2026/09/ws-closeup-3.webp) !important;
	background-size: 33.34% auto !important; background-position: 0% 50%, 50% 50%, 100% 50% !important; background-repeat: no-repeat !important; }
.pfn-cta-flowers::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at center, rgba(247,239,234,.5) 0%, rgba(247,239,234,.3) 45%, rgba(247,239,234,.14) 100%); }
.pfn-cta-flowers .pfn-cta-panel { background: rgba(255,255,255,.78); backdrop-filter: blur(2px); border-radius: 16px; padding: var(--wp--preset--spacing--medium) var(--wp--preset--spacing--medium); box-shadow: 0 20px 50px -30px rgba(42,36,38,.4); }
@media (max-width: 1023.98px) { .pfn-cta-flowers { background-image: url(/wp-content/uploads/2026/09/ws-closeup-2.webp) !important; background-size: cover !important; background-position: 50% 50% !important; } }
.pfn-price-list > .pfn-price-item { padding-left: 0 !important; padding-right: 0 !important; }
.pfn-workshop-body .wp-block-spectra-button { line-height: 1.35; }

/* Home section 2 tiles (client 28 Sep 2026): taller, same height, whole frame in the shop photo visible. Both photos
   are 2:3, so a 4:5 tile shows the middle 83% of each at every width (the frame sits at 17% to 88%). */
.home #choose .pfn-hero-overlay { min-height: auto !important; aspect-ratio: 4 / 5; }

/* Home "What we promise you" (client 28 Sep 2026): the Journey of Your Flowers cards without numbers, four
   larger cards. Phones show each photo full width above its words instead of the small thumbnail. */
.pfn-steps--plain .pfn-step-image::after { content: none !important; display: none !important; }
.pfn-steps--plain .pfn-step-image { margin-bottom: 8px !important; }
.pfn-steps.pfn-steps--plain, .pfn-steps.pfn-steps--plain > .wp-block-spectra-container { max-width: 1640px !important; }
.pfn-steps.pfn-steps--plain > .wp-block-spectra-container { column-gap: 24px !important; row-gap: 28px !important; }
.pfn-steps--plain .pfn-step h3 { font-size: 1.35rem; }
.pfn-steps--plain .pfn-step p:not(.pfn-kicker) { font-size: .95rem; }
@media (max-width: 767.98px) {
	.pfn-steps--plain .pfn-step { display: flex !important; flex-direction: column; padding: 0 0 22px !important; border-bottom: 0; margin-bottom: 18px; }
	.pfn-steps--plain .pfn-step:last-child { padding-bottom: 22px !important; }
	.pfn-steps--plain .pfn-step-image img { aspect-ratio: 4 / 5 !important; }
}
@media (min-width: 768px) and (max-width: 1023.98px) { .pfn-steps.pfn-steps--plain > .wp-block-spectra-container { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
/* Client 28 Sep 2026: "slightly wider so the words fit better": up to 1640px, less side padding on desktop. */
@media (min-width: 1024px) { #promise:has(.pfn-steps--plain) { padding-left: 24px !important; padding-right: 24px !important; } }
.pfn-steps--plain .pfn-step > *:not(.pfn-step-image) { padding-left: 18px !important; padding-right: 18px !important; }
@media (min-width: 1024px) { .pfn-steps.pfn-steps--plain > .wp-block-spectra-container { column-gap: 18px !important; } }

/* Promise cards (Tommy, 1 Oct 2026, client: the icons felt generic, wanted luxurious and elegant): each photo carries a
   fine botanical line drawing in a white badge with a gold hairline ring, where the Journey cards carry their number.
   A short gold rule sits under the title, a soft blush wash at the foot of the card, a slow photo zoom on hover. */
.pfn-steps--plain .pfn-step { overflow: hidden; background: linear-gradient(180deg, #fff 0%, #fff 62%, var(--wp--preset--color--blush) 100%) !important; }
.pfn-steps--plain .pfn-step-image { margin-bottom: 30px !important; overflow: visible; }
.pfn-steps--plain .pfn-step-image img { transition: transform .8s ease; }
.pfn-steps--plain .pfn-step-image a, .pfn-steps--plain .pfn-step-image { border-radius: 12px 12px 0 0; }
.pfn-steps--plain .pfn-step-image::before {
	content: "" !important; display: block !important; position: absolute; z-index: 3; left: 18px; bottom: -32px; width: 62px; height: 62px; border-radius: 50%;
	background: #fff var(--pfn-icon) no-repeat center / 42px 42px !important;
	box-shadow: inset 0 0 0 1px #C4A56B, 0 0 0 4px #fff, 0 10px 22px -8px rgba(42,36,38,.28) !important;
	transition: transform .4s ease, box-shadow .4s ease;
}
.pfn-steps--plain .pfn-step:nth-child(1) { --pfn-icon: url(assets/icons/sprig.svg); }
.pfn-steps--plain .pfn-step:nth-child(2) { --pfn-icon: url(assets/icons/leaf-heart.svg); }
.pfn-steps--plain .pfn-step:nth-child(3) { --pfn-icon: url(assets/icons/laurel.svg); }
.pfn-steps--plain .pfn-step:nth-child(4) { --pfn-icon: url(assets/icons/frame-bloom.svg); }
/* Bridal "Why Brides Choose Nell": personal, pressed by hand, handmade with love, award-winning */
#what-we-promise .pfn-steps--plain .pfn-step:nth-child(2) { --pfn-icon: url(assets/icons/frame-bloom.svg); }
#what-we-promise .pfn-steps--plain .pfn-step:nth-child(3) { --pfn-icon: url(assets/icons/leaf-heart.svg); }
#what-we-promise .pfn-steps--plain .pfn-step:nth-child(4) { --pfn-icon: url(assets/icons/laurel.svg); }
.pfn-steps--plain .pfn-step::after { content: none !important; }
.pfn-steps--plain .pfn-step > * { position: relative; z-index: 1; }
.pfn-steps--plain .pfn-step h3 { padding-bottom: 12px !important; margin-bottom: 4px !important; background: linear-gradient(#C4A56B, #C4A56B) no-repeat 18px 100% / 36px 1px; transition: background-size .4s ease; }
.pfn-steps--plain .pfn-step:hover h3 { background-size: 64px 1px; }
.pfn-steps--plain .pfn-step:hover .pfn-step-image img { transform: scale(1.05); }
.pfn-steps--plain .pfn-step:hover .pfn-step-image::before { transform: translateY(-3px); box-shadow: inset 0 0 0 1px #C4A56B, 0 0 0 4px #fff, 0 14px 26px -8px rgba(42,36,38,.34) !important; }
.pfn-steps--plain .pfn-step:hover { transform: translateY(-4px); }

/* Workshops "Create, connect" (Tommy, 28 Sep 2026: keep the snapshots, jazz up the words): a strip of washi tape
   holding each photo, a hand-drawn squiggle under each title in the same colour, and body text a touch larger. */
.pfn-snap-section .pfn-snap:nth-child(1) { --snap: var(--wp--preset--color--cerise); }
.pfn-snap-section .pfn-snap:nth-child(2) { --snap: var(--wp--preset--color--khaki-green); }
.pfn-snap-section .pfn-snap:nth-child(3) { --snap: var(--wp--preset--color--plum-deep); }
.pfn-snap-section .pfn-snap:nth-child(4) { --snap: var(--wp--preset--color--baby-pink); }
.pfn-snap .pfn-snap-image { position: relative; }
.pfn-snap .pfn-snap-image::before {
	content: ""; position: absolute; z-index: 2; top: -12px; left: 50%; width: 92px; height: 26px;
	transform: translateX(-50%) rotate(-4deg); transition: transform .4s ease;
	background: color-mix(in srgb, var(--snap) 55%, transparent);
	background-image: repeating-linear-gradient(90deg, rgba(255,255,255,.18) 0 4px, transparent 4px 9px);
	-webkit-mask: linear-gradient(90deg, transparent 0 2px, #000 2px calc(100% - 2px), transparent 0) , repeating-linear-gradient(0deg, #000 0 3px, transparent 3px 4px);
	-webkit-mask-composite: source-over; box-shadow: 0 1px 2px rgba(42,36,38,.08);
}
.pfn-snap-section .wp-block-spectra-container > .pfn-snap:nth-child(even) .pfn-snap-image::before { transform: translateX(-50%) rotate(5deg); }
.pfn-snap-section .wp-block-spectra-container > .pfn-snap:hover .pfn-snap-image::before { transform: translateX(-50%) rotate(0deg) scale(1.04); }
.pfn-snap h3 { position: relative; font-size: 1.7rem !important; line-height: 1.2; padding-bottom: 18px; margin-top: 6px !important; }
.pfn-snap h3::after {
	content: ""; position: absolute; left: 50%; bottom: 0; width: 88px; height: 12px; transform: translateX(-50%);
	background: var(--snap);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 12'%3E%3Cpath d='M2 7c7-6 12 4 19 0s12-6 19 0 12 4 19 0 12-6 19 0 7 2 8 1' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
	        mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 88 12'%3E%3Cpath d='M2 7c7-6 12 4 19 0s12-6 19 0 12 4 19 0 12-6 19 0 7 2 8 1' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
	clip-path: inset(0 0 0 0); transition: clip-path .6s ease;
}
.pfn-snap-section .wp-block-spectra-container > .pfn-snap:hover h3::after { animation: pfn-squiggle .7s ease; }
@keyframes pfn-squiggle { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
.pfn-snap p { font-size: 1rem !important; line-height: 1.65; color: var(--wp--preset--color--ink-soft); max-width: 26ch; margin-left: auto !important; margin-right: auto !important; }

/* Links inside words on a dark photo fade (bridal closing band, 28 Sep 2026) read white, underlined. */
.pfn-hero-overlay.pfn-hero-dark .wp-block-spectra-content a { color: var(--wp--preset--color--white) !important; text-decoration: underline; text-underline-offset: 3px; }
.pfn-hero-overlay.pfn-hero-dark .wp-block-spectra-content a:hover { color: var(--wp--preset--color--blush) !important; }

/* FAQ closing photos (28 Sep 2026): keep the portrait shape on phones so the framed pieces stay whole. */
@media (max-width: 767.98px) { #ask .pfn-trio .wp-block-image img { aspect-ratio: 4 / 5; } }

/* FAQ bridal intro (28 Sep 2026): the intro paragraphs in a blush card with a heart badge. */
.pfn-faq-card { position: relative; background: var(--wp--preset--color--blush); border-radius: 16px; padding: 56px clamp(22px, 5vw, 56px) 36px !important; margin-top: 30px !important; box-shadow: 0 18px 40px -30px rgba(42,36,38,.35); }
.pfn-faq-card::before {
	content: ""; position: absolute; top: -30px; left: 50%; width: 60px; height: 60px; transform: translateX(-50%); border-radius: 50%;
	background: #fff url(assets/icons/petal-heart.svg) no-repeat center / 34px 34px; box-shadow: 0 0 0 4px var(--wp--preset--color--blush), 0 6px 16px rgba(42,36,38,.15);
}
.pfn-faq-card p { text-align: center; text-wrap: pretty; }
.pfn-faq-card .pfn-faq-lede { font-family: var(--wp--preset--font-family--playfair-display), Georgia, serif !important; font-size: 1.3rem !important; line-height: 1.55; color: var(--wp--preset--color--ink) !important; margin-bottom: 8px !important; }
.pfn-faq-card p:not(.pfn-faq-lede) { font-size: 1rem; color: var(--wp--preset--color--ink-soft); }

/* Justified gallery (Stockists "Our Work, Out in the World", 28 Sep 2026): rows of equal height, each photo at its
   own shape (--ar from pfn.js), a thin gap, gentle zoom on hover. The last row keeps its natural width. */
.wp-block-gallery.pfn-justified.has-nested-images { display: flex !important; flex-wrap: wrap !important; gap: 12px !important; --pfn-row: 260px; }
.wp-block-gallery.pfn-justified.has-nested-images::after { content: ""; flex-grow: 999; }
.wp-block-gallery.pfn-justified.has-nested-images figure.wp-block-image:not(#individual-image) {
	flex: var(--ar, 1) 1 calc(var(--ar, 1) * var(--pfn-row)) !important; width: auto !important; max-width: none !important; margin: 0 !important;
	border-radius: 6px; overflow: hidden; }
.wp-block-gallery.pfn-justified.has-nested-images figure.wp-block-image img { width: 100% !important; height: auto !important; aspect-ratio: var(--ar, 1); object-fit: cover; display: block; transition: transform .7s ease; }
.wp-block-gallery.pfn-justified.has-nested-images figure.wp-block-image:hover img { transform: scale(1.03); }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-justified.has-nested-images { gap: 6px !important; --pfn-row: 130px; } }

/* Stockist cards (28 Sep 2026): every photo the same size, cards the same height. */
.pfn-stockist-card { height: 100%; }
.pfn-stockist-card .pfn-stockist-photo { margin: 0 !important; width: 100%; }
.pfn-stockist-card .pfn-stockist-photo img { width: 100% !important; height: auto !important; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 6px; display: block; }

/* ---------------------------------------------------------------------------------------------------------------
   Bridal builder, Nell's feedback 28 Sep 2026.
   Frames are Nell's photos of the real mouldings (border-image; --slice/--bw/--short set by bridal-builder.js), the
   gold oval is her photo of the oval frame as a ring over the mount. Each design is shown at the scale of her
   renders: the art image is the whole mount crop, so it fills the mount with no padding. Alpine White is the cream
   of her photographs, Snow White the pure white, Green the Larson-Juhl deep green 004, Textured White the Arches
   natural white paper grain at frame scale.
   --------------------------------------------------------------------------------------------------------------- */
.pfn-stage__preview { container-type: inline-size; }
.pfn-stage__preview[data-shape="rectangle"][data-orient="portrait"] { --r: .72; max-width: 420px; }
.pfn-stage__preview[data-shape="oval"] { --r: .845; max-width: 440px; }
.pfn-stage__preview.has-frame-photo:not([data-shape="oval"]) .pfn-frame {
	padding: 0; background: none !important; border-style: solid; border-color: transparent;
	border-width: calc(var(--bw, 8.6) * var(--short, 1) * 1cqw);
	border-image-source: var(--frame-img); border-image-slice: var(--slice, 103); border-image-repeat: stretch;
	box-shadow: 0 24px 40px -20px rgba(42,36,38,.45), 0 6px 14px rgba(42,36,38,.12); }
.pfn-stage__preview.has-frame-photo .pfn-mount { padding: 0; }
.pfn-stage__preview.has-frame-photo .pfn-art { width: 100%; height: 100%; max-width: none; max-height: none; object-fit: contain; filter: none; }
/* Oval: the ring photo sits over the mount */
.pfn-stage__preview[data-shape="oval"].has-frame-photo .pfn-frame { position: relative; padding: 0; background: none !important; border-radius: 0; box-shadow: none;
	display: flex; align-items: center; justify-content: center; filter: drop-shadow(0 18px 24px rgba(42,36,38,.28)); }
.pfn-stage__preview[data-shape="oval"].has-frame-photo .pfn-frame::after { content: ""; position: absolute; inset: 0; background: var(--frame-img) center / 100% 100% no-repeat; pointer-events: none; }
.pfn-stage__preview[data-shape="oval"].has-frame-photo .pfn-mount { width: calc(var(--ix, 78%) + 2%); height: calc(var(--iy, 81%) + 2%); border-radius: 50%; overflow: hidden; }
/* Eternal Keepsake (portrait): photograph space above the flowers */
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-mount { padding: 8% 7%; gap: 5%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-mount { flex-direction: column; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo { flex: 0 0 34%; aspect-ratio: auto; width: 62%; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-art { width: auto; height: auto; max-width: 100%; max-height: 58%; flex: 1 1 auto; min-height: 0; }
/* Mountboards */
.pfn-mount--alpine-white, [data-mount="alpine-white"] .pfn-mount, [data-mount="alpine-white"] .pfn-design__art { background-color: #F8F9F2; }
.pfn-mount--snow-white, [data-mount="snow-white"] .pfn-mount, [data-mount="snow-white"] .pfn-design__art { background-color: #FFFFFF; }
.pfn-mount--green, [data-mount="green"] .pfn-mount, [data-mount="green"] .pfn-design__art { background-color: #213114; }
.pfn-builder { --pfn-paper: none; }
.pfn-mount--textured-white, [data-mount="textured-white"] .pfn-mount, [data-mount="textured-white"] .pfn-design__art { background-color: #F6F3EC; background-image: var(--texture, none); background-size: 90px 90px; background-repeat: repeat; }
.pfn-chip.pfn-mount--textured-white { background-size: 60px 60px; }
/* Frame colour chips show the moulding photo */
.pfn-chip[class*="pfn-frame--"][style*="background-image"] { width: 48px; height: 48px; background-size: 760%; background-position: 0 0; background-repeat: no-repeat; }
.pfn-swatch-btn .pfn-chip[class*="pfn-frame--"][style*="background-image"] { box-shadow: 0 0 0 1px rgba(42,36,38,.2); }
/* Design thumbnails: the whole mount, as Nell photographed it */
.pfn-design__art { padding: 0 !important; overflow: hidden; }
.pfn-design__art img { width: 100%; height: 100%; max-width: none; max-height: none; object-fit: contain; }
.pfn-design__art.pfn-shape--rectangle { aspect-ratio: 5 / 7; }
.pfn-design__art.pfn-shape--rectangle.is-landscape { aspect-ratio: 7 / 5; }
.pfn-design__art.pfn-shape--oval { aspect-ratio: 19 / 23; }
.pfn-shape-icon--portrait { width: 16px; height: 22px; }
/* Panel head: the page now opens here */
.pfn-panel-head__title { font-size: clamp(1.9rem, 3vw, 2.4rem); margin: 0 0 6px; }
.pfn-panel-head__intro { margin: 10px 0 0; font-size: .95rem; line-height: 1.65; color: var(--ink); }
.pfn-panel-head__intro + .pfn-panel-head__sub { margin-top: 12px; }
/* Little keepsakes: tap the picture to enlarge */
.pfn-addon__img { position: relative; }
.pfn-addon__zoom { position: absolute; left: 6px; bottom: 6px; z-index: 2; width: 28px; height: 28px; border-radius: 50%; border: 0; padding: 0; cursor: zoom-in;
	display: grid; place-items: center; background: rgba(255,255,255,.92); color: var(--ink); font-size: 18px; line-height: 1; box-shadow: 0 2px 8px rgba(42,36,38,.25); }
.pfn-addon__zoom:hover { background: #fff; }
.pfn-zoom { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 24px; background: rgba(28,24,26,.82); cursor: zoom-out; }
.pfn-zoom[hidden] { display: none; }
.pfn-zoom__fig { margin: 0; max-width: min(92vw, 900px); text-align: center; }
.pfn-zoom__fig img { max-width: 100%; max-height: 80vh; width: auto; height: auto; border-radius: 6px; box-shadow: 0 20px 60px rgba(0,0,0,.4); cursor: default; }
.pfn-zoom__fig figcaption { margin-top: 12px; color: #fff; font-family: var(--serif); font-style: italic; }
.pfn-zoom__close { position: absolute; top: 14px; right: 16px; width: 44px; height: 44px; border: 0; border-radius: 50%; background: rgba(255,255,255,.95); font-size: 26px; line-height: 1; cursor: pointer; }
html.pfn-zoom-open { overflow: hidden; }
/* Phones and tablets: the preview freezes at the top while the options scroll underneath, like the pressedfloral.com
   product page (client 28 Sep 2026: "most brides will be looking and booking on phones"). */
@media (max-width: 1023.98px) {
	.pfn-builder__media, .admin-bar .pfn-builder__media { position: sticky; top: 0; z-index: 30; box-shadow: 0 10px 20px -16px rgba(42,36,38,.4); }
	.admin-bar .pfn-builder__media { top: 46px; }
	.pfn-stage { min-height: 0; padding: 14px 16px 8px; gap: 6px; }
	.pfn-stage__preview { width: auto; }
	.pfn-stage__preview[data-shape] { height: min(34vh, 300px); max-width: none; width: calc(min(34vh, 300px) * var(--r, 1)); }
	.pfn-stage__preview .pfn-frame { height: 100%; width: auto; }
	.pfn-stage__note { display: none; }
	.pfn-stage__caption-text { font-size: .85rem; }
	.pfn-thumbs { padding: 6px 12px; gap: 8px; }
	.pfn-thumb { flex-basis: 40px; width: 40px; height: 40px; }
}
/* Booking page Bridal FAQ (28 Sep 2026): one photo beside the questions, staying in view on desktop. */
.pfn-faq-row { align-items: flex-start !important; }
@media (min-width: 768px) { .pfn-faq-side { position: sticky; top: 24px; align-self: flex-start; } }
.pfn-faq-side-photo { margin: 0 !important; }
.pfn-faq-side-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 12px; display: block; }
@media (max-width: 767.98px) { .pfn-faq-side-photo img { aspect-ratio: 4 / 3; object-position: 50% 30%; } }

/* ---------------------------------------------------------------------------------------------------------------
   Nell's Story timeline (redone 1 Oct 2026, luxury and artistic): six chapters as tall, mounted photographs along a
   fine gold line. Swipe, scroll or use the arrows; the hairline under the strip shows how far along you are.
   --------------------------------------------------------------------------------------------------------------- */
.pfn-tl2 { --gold: #C4A56B; position: relative; width: 100%; max-width: 1280px; margin: 0 auto; }
.pfn-tl2__rail { list-style: none; margin: 0; padding: 12px max(24px, calc((100% - 1180px) / 2)) 28px; display: flex; gap: 36px; overflow-x: auto; scroll-snap-type: x proximity;
	scroll-padding-inline: max(24px, calc((100% - 1180px) / 2)); scrollbar-width: none; -webkit-overflow-scrolling: touch; outline-offset: -4px; }
.pfn-tl2__rail::-webkit-scrollbar { display: none; }
.pfn-tl2__card { position: relative; flex: 0 0 clamp(250px, 26vw, 330px); scroll-snap-align: start; padding-top: 44px; }
.pfn-tl2__card::before { content: ""; position: absolute; top: 12px; left: 0; right: -36px; height: 1px; background: var(--gold); opacity: .7; }
.pfn-tl2__card:last-child::before { right: 0; opacity: .35; }
.pfn-tl2__node { position: absolute; top: 7px; left: 0; width: 11px; height: 11px; background: #fff; border: 1px solid var(--gold); transform: rotate(45deg); }
.pfn-tl2__photo { margin: 0; background: #fff; padding: 10px; border: 1px solid rgba(196,165,107,.45); box-shadow: 0 26px 40px -28px rgba(42,36,38,.5); overflow: hidden; }
.pfn-tl2__img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; transition: transform .9s ease; }
.pfn-tl2__card:hover .pfn-tl2__img { transform: scale(1.04); }
.pfn-tl2__photo figcaption { font-size: .68rem; letter-spacing: .18em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft); text-align: center; padding: 12px 4px 4px; }
.pfn-tl2__year { margin: 22px 0 6px; font-family: var(--wp--preset--font-family--playfair-display), serif; font-size: clamp(2.2rem, 3.4vw, 3rem); line-height: 1; font-weight: 500; color: var(--wp--preset--color--ink); letter-spacing: -.01em; }
.pfn-tl2__year::after { content: ""; display: block; width: 36px; height: 1px; margin-top: 14px; background: var(--gold); }
.pfn-tl2__text { margin: 0; font-size: .98rem; line-height: 1.65; color: var(--wp--preset--color--ink-soft); max-width: 30ch; }
.pfn-tl2__card--end { flex-basis: clamp(240px, 24vw, 300px); display: flex; align-items: center; }
.pfn-tl2__finale { margin: 0; font-family: var(--wp--preset--font-family--playfair-display), serif; font-style: italic; font-size: clamp(1.6rem, 2.6vw, 2.3rem); line-height: 1.25; color: var(--wp--preset--color--plum-deep); }
.pfn-tl2__bar { display: flex; align-items: center; gap: 18px; max-width: 1180px; margin: 6px auto 0; padding: 0 24px; }
.pfn-tl2__progress { flex: 1; height: 1px; background: rgba(75,81,71,.2); position: relative; }
.pfn-tl2__progress span { position: absolute; left: 0; top: -1px; height: 3px; width: 0; background: var(--gold); transition: width .25s ease; }
.pfn-tl2__btn { width: 42px; height: 42px; border-radius: 50%; border: 1px solid var(--gold); background: #fff; color: var(--wp--preset--color--ink); font-size: 1.4rem; line-height: 1; cursor: pointer; transition: background .25s ease, color .25s ease; padding: 0 0 3px; }
.pfn-tl2__btn:hover:not(:disabled) { background: var(--wp--preset--color--ink); color: #fff; }
.pfn-tl2__btn:disabled { opacity: .3; cursor: default; }
@media (max-width: 767.98px) { .pfn-tl2__card { flex-basis: 74vw; } .pfn-tl2__rail { gap: 22px; } .pfn-tl2__card::before { right: -22px; } .pfn-tl2__btn { display: none; } }
@media (prefers-reduced-motion: reduce) { .pfn-tl2__img, .pfn-tl2__progress span { transition: none !important; } .pfn-tl2__rail { scroll-behavior: auto; } }

/* Studio birthdays strip: balloons every October, fanned like photos on a table */
.pfn-bdays { list-style: none; margin: 0 auto; padding: 10px 0; display: flex; justify-content: center; flex-wrap: wrap; gap: 0; max-width: 1320px; }
.pfn-bdays__item { width: clamp(110px, 11.2vw, 160px); margin: 0 -9px; background: #fff; padding: 8px 8px 26px; box-shadow: 0 14px 28px -18px rgba(42,36,38,.55);
	transform: rotate(calc((var(--i) - 3.5) * 2.4deg)) translateY(calc(var(--i) * 3px - 10px)); transition: transform .4s ease; position: relative; }
.pfn-bdays__item:nth-child(even) { transform: rotate(calc((3.5 - var(--i)) * 1.8deg)) translateY(8px); }
.pfn-bdays__item:hover { transform: rotate(0) translateY(-10px) scale(1.06); z-index: 5; }
.pfn-bdays__item img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; }
@media (max-width: 767.98px) { .pfn-bdays { gap: 14px 0; } .pfn-bdays__item { width: 42%; margin: 0 -2px; } }

/* Nell's Story, section 2: a scrapbook of photos beside her words */
.pfn-scrap { position: relative; min-height: 520px; }
.pfn-scrap .wp-block-image { margin: 0 !important; position: absolute; background: #fff; padding: 10px 10px 30px; box-shadow: 0 18px 36px -20px rgba(42,36,38,.5); }
.pfn-scrap .wp-block-image img { display: block; width: 100%; height: auto; object-fit: cover; }
.pfn-scrap .pfn-scrap__main { left: 0; top: 0; width: 76%; transform: rotate(-2deg); z-index: 1; }
.pfn-scrap .pfn-scrap__main img { aspect-ratio: 4 / 3; }
.pfn-scrap .pfn-scrap__a { right: 0; top: 40%; width: 44%; transform: rotate(4deg); z-index: 2; }
.pfn-scrap .pfn-scrap__a img { aspect-ratio: 4 / 5; }
.pfn-scrap .pfn-scrap__b { left: 8%; bottom: 0; width: 34%; transform: rotate(-5deg); z-index: 3; }
.pfn-scrap .pfn-scrap__b img { aspect-ratio: 2 / 3; }
.pfn-scrap .wp-block-image:hover { z-index: 5; transform: rotate(0) scale(1.03); transition: transform .4s ease; }
@media (max-width: 767.98px) { .pfn-scrap { min-height: 118vw; } }
.pfn-story-lede { font-family: var(--wp--preset--font-family--playfair-display), serif !important; font-size: clamp(1.3rem, 2.2vw, 1.6rem) !important; line-height: 1.45; color: var(--wp--preset--color--ink) !important; }

/* A Letter From Nell: a sheet of paper with a handwritten sign-off beside her photo */
.pfn-letter-paper { background: #FFFDF8; background-image: repeating-linear-gradient(0deg, transparent 0 35px, rgba(215,114,176,.09) 35px 36px);
	padding: clamp(28px, 5vw, 64px) clamp(24px, 5vw, 60px) !important; border-radius: 4px; box-shadow: 0 30px 60px -36px rgba(42,36,38,.45), 0 2px 8px rgba(42,36,38,.06); transform: rotate(-.6deg); }
.pfn-letter-paper p { font-size: 1.08rem; line-height: 1.85; color: var(--wp--preset--color--ink); }
.pfn-letter-sign { font-family: "Mrs Saint Delafield", "Brush Script MT", cursive !important; font-size: clamp(3rem, 6vw, 4.4rem) !important; line-height: 1; color: var(--wp--preset--color--plum-deep) !important; margin-top: 18px !important; }
/* Client 5 Oct 2026: the letter takes the full desktop width, her photograph pinned top right as if lying on the paper. */
.pfn-letter-paper { display: block !important; position: relative; transform: none; padding-top: clamp(40px, 5vw, 72px) !important; }
.pfn-letter-paper > * { margin: 0 0 1.15em !important; max-width: none; }
.pfn-letter-paper::after { content: ""; display: table; clear: both; }
.pfn-letter-photo { float: right; width: min(36%, 380px) !important; margin: -64px -18px 22px 44px !important; position: relative; z-index: 2; shape-outside: margin-box; }
.pfn-letter-photo .wp-block-image { margin: 0 !important; background: #fff; padding: 12px 12px 40px; box-shadow: 0 24px 44px -22px rgba(42,36,38,.55); transform: rotate(3deg); }
.pfn-letter-photo .wp-block-image::before { content: ""; position: absolute; left: 50%; top: -14px; width: 96px; height: 28px; margin-left: -48px; background: rgba(240,224,205,.75); transform: rotate(-3deg); }
.pfn-letter-photo img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
@media (max-width: 767.98px) { .pfn-letter-photo { float: none; width: 78% !important; margin: -48px auto 24px !important; } }

/* A Few Big Moments Along the Way (client 5 Oct 2026) */
.pfn-moment { border-top: 1px solid var(--wp--preset--color--gold, #c9a96a); padding-top: var(--wp--preset--spacing--small, 18px) !important; }
.pfn-moment__num { font-family: var(--wp--preset--font-family--playfair-display); font-size: 2.2rem; line-height: 1; color: var(--wp--preset--color--gold, #b8955a); margin: 0; }
.pfn-moment h3 { line-height: 1.3; }

/* Snapshot gallery (Bridal "Ireland's Leading Pressed Flower Artist", 28 Sep 2026; to offer sitewide): justified rows
   of whole photos, each a white-bordered snapshot with a strip of tape, a slight tilt and a handwritten-style caption. */
.wp-block-gallery.pfn-justified.pfn-snaps.has-nested-images { gap: 34px 26px !important; padding: 18px 6px 6px; --pfn-row: 250px; }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:not(#individual-image) {
	position: relative; overflow: visible; border-radius: 2px; background: #fff; padding: 10px 10px 0; flex-direction: column !important;
	box-shadow: 0 16px 30px -18px rgba(42,36,38,.45), 0 1px 4px rgba(42,36,38,.08); transform: rotate(-1.4deg); transition: transform .45s ease, box-shadow .45s ease; }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:nth-child(3n+2) { transform: rotate(1.2deg); }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:nth-child(3n+3) { transform: rotate(-.5deg); }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:hover { transform: rotate(0) translateY(-6px) scale(1.02); z-index: 3; box-shadow: 0 24px 40px -20px rgba(42,36,38,.5); }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image::before { content: ""; position: absolute; top: -10px; left: 50%; width: 70px; height: 20px; z-index: 2;
	transform: translateX(-50%) rotate(-3deg); background: color-mix(in srgb, var(--wp--preset--color--baby-pink) 60%, transparent); }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:nth-child(even)::before { transform: translateX(-50%) rotate(4deg); background: color-mix(in srgb, var(--wp--preset--color--khaki-green) 38%, transparent); }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image img { border-radius: 0; }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:hover img { transform: none; }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image figcaption {
	position: static !important; background: none !important; padding: 9px 4px 12px !important; margin: 0 !important; max-height: none !important; overflow: visible !important;
	font-family: var(--wp--preset--font-family--playfair-display), serif; font-style: italic; font-size: .88rem !important; line-height: 1.3; color: var(--wp--preset--color--ink-soft) !important; text-align: center; text-shadow: none !important; }
.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image figcaption::before { display: none !important; }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-justified.pfn-snaps.has-nested-images { gap: 20px 12px !important; --pfn-row: 118px; }
	.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image:not(#individual-image) { padding: 6px 6px 0; }
	.wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image figcaption { font-size: .72rem !important; padding: 6px 2px 8px !important; } }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-snaps.has-nested-images figure.wp-block-image figcaption { white-space: nowrap; text-overflow: ellipsis; overflow: hidden !important; font-size: .62rem !important; letter-spacing: -.01em; } }

/* ---------------------------------------------------------------
   "View more" on long walls + Before & After wall (client 2 Oct 2026)
   --------------------------------------------------------------- */
.pfn-more-wrap { display: none; justify-content: center; margin-top: 32px; }
.pfn-js .pfn-more-wrap { display: flex; }
.pfn-more-wrap.is-done { display: none !important; }
.pfn-more-btn { background: var(--wp--preset--color--green); color: #fff; border: 0; border-radius: 999px; padding: 15px 38px; font: inherit; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; cursor: pointer; transition: background .2s; }
.pfn-more-btn:hover, .pfn-more-btn:focus-visible { background: var(--wp--preset--color--cerise); }
.pfn-js .wp-block-gallery.pfn-mosaic.has-nested-images figure.wp-block-image.pfn-more:not(.is-shown) { display: none !important; }
.pfn-js .pfn-ba__card.pfn-more-item:not(.is-shown) { display: none; }

.pfn-ba__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 36px 28px; align-items: start; }
.pfn-ba__card--side { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pfn-ba__card--reveal { grid-column: 1 / -1; }
.pfn-ba__photo { position: relative; aspect-ratio: 4 / 5; overflow: hidden; border-radius: 6px; background: var(--wp--preset--color--sage); }
.pfn-ba__photo img { position: relative; display: block; width: 100%; height: 100%; object-fit: cover; margin: 0; }
.pfn-ba__photo.is-fit { background: var(--bg) center / cover; }
.pfn-ba__photo.is-fit::before { content: ""; position: absolute; inset: -30px; background: var(--bg) center / cover; filter: blur(22px); opacity: .65; }
.pfn-ba__photo.is-fit img { object-fit: contain; }
.pfn-ba__tag { position: absolute; left: 10px; bottom: 10px; z-index: 3; background: rgba(255, 255, 255, .88); color: var(--wp--preset--color--ink, #2b2b2b); font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; padding: 5px 10px; border-radius: 999px; pointer-events: none; }
.pfn-ba__hint { text-align: center; margin: 12px 0 0; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #6b6b6b); }

.pfn-reveal { position: relative; width: 100%; max-width: 560px; aspect-ratio: 4 / 5; margin: 0 auto; overflow: hidden; border-radius: 8px; user-select: none; -webkit-user-select: none; background: var(--wp--preset--color--sage); --pos: 50%; }
.pfn-reveal > img, .pfn-reveal__before img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; margin: 0; pointer-events: none; }
.pfn-reveal__before { position: absolute; inset: 0; clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.pfn-reveal__line { position: absolute; top: 0; bottom: 0; left: var(--pos); width: 2px; margin-left: -1px; background: #fff; box-shadow: 0 0 10px rgba(0, 0, 0, .3); z-index: 2; pointer-events: none; }
.pfn-reveal__knob { position: absolute; top: 50%; left: var(--pos); width: 46px; height: 46px; margin: -23px 0 0 -23px; border-radius: 50%; background: #fff; box-shadow: 0 4px 14px rgba(0, 0, 0, .28); z-index: 2; pointer-events: none; }
.pfn-reveal__knob::before, .pfn-reveal__knob::after { content: ""; position: absolute; top: 50%; width: 8px; height: 8px; margin-top: -4px; border: solid var(--wp--preset--color--green); border-width: 0 0 2px 2px; }
.pfn-reveal__knob::before { left: 13px; transform: rotate(45deg); }
.pfn-reveal__knob::after { right: 13px; transform: rotate(-135deg); }
.pfn-reveal input[type=range] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; z-index: 4; -webkit-appearance: none; appearance: none; background: transparent; }
.pfn-reveal:focus-within { outline: 2px solid var(--wp--preset--color--cerise); outline-offset: 3px; }
.pfn-ba__tag--l { left: 10px; right: auto; top: 10px; bottom: auto; }
.pfn-ba__tag--r { right: 10px; left: auto; top: 10px; bottom: auto; }
@media (max-width: 767.98px) {
	.pfn-ba__grid { grid-template-columns: 1fr; gap: 26px; }
	.pfn-ba__card--side { gap: 6px; }
	.pfn-ba__tag { font-size: .55rem; padding: 4px 8px; }
	.pfn-ba__card--side .pfn-ba__tag { left: 6px; bottom: 6px; }
	.pfn-more-wrap { margin-top: 24px; }
}

/* The bouquet fills the opening (client 12 Oct 2026): bridal-builder.js measures where the flowers are and sets the picture's size and
   position in pixels, so the flowers sit right up to the mountboard's edge with only a hairline of space. */
.pfn-stage__preview.has-frame-photo .pfn-mount { overflow: hidden; }
.pfn-stage__preview .pfn-art.is-fitted { position: absolute !important; max-width: none !important; max-height: none !important; object-fit: fill !important; }

/* The frame is a fixed-size box (client 12 Oct 2026: "the frames are not square" on a laptop and an iMac). bridal-builder.js sets its
   height in pixels from its width; this stops a flex row from stretching it taller than that, whatever the browser. */
@media (min-width: 1024px) {
	.pfn-stage__preview .pfn-frame { flex: 0 0 auto; align-self: flex-start; }
}

/* Safari/WebKit (client's Macs, 2 Oct 2026): a frame with an aspect-ratio let the artwork picture inside it stretch the frame
   (landscape 30 x 20 came out nearly square, portrait too tall). Clipping stops the picture from setting the frame's minimum size. */
.pfn-frame { overflow: hidden; min-height: 0; }
/* The mount's inner shadow used to sit under the artwork picture, so wherever the picture was letterboxed the shadow showed
   and everywhere else it didn't: a faint lighter rectangle (and notches) inside the mount, clearest on Safari. The picture now
   fills the mount (its background is the mountboard colour) and the shadow is drawn on top of both. */
.pfn-stage__preview.has-frame-photo:not(.is-keepsake) .pfn-art { object-fit: cover; }
.pfn-stage__preview.has-frame-photo .pfn-mount { box-shadow: none; }
.pfn-stage__preview.has-frame-photo .pfn-mount::after { content: none; }

/* Gift voucher amount box (client 5 Oct 2026: customers type the value they want to spend). */
.pfn-amount { margin: 0 0 var(--wp--preset--spacing--small, 20px); max-width: 320px; }
.pfn-amount label { display: block; font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 8px; }
.pfn-amount__field { display: flex; align-items: center; gap: 10px; border: 1px solid var(--wp--preset--color--outline, #d9d3cf); border-radius: 6px; background: #fff; padding: 0 16px; }
.pfn-amount__field span { font-size: 1.4rem; }
.pfn-amount__field input { border: 0; outline: 0; background: transparent; font: inherit; font-size: 1.5rem; width: 100%; padding: 12px 0; -moz-appearance: textfield; }
.pfn-amount__field input::-webkit-outer-spin-button, .pfn-amount__field input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pfn-amount__field:focus-within { border-color: var(--wp--preset--color--green, #4b5048); box-shadow: 0 0 0 2px rgba(75,80,72,.18); }
.pfn-amount__note { font-size: .85rem; color: var(--wp--preset--color--ink-soft, #6b6366); margin: 8px 0 0; }
.pfn-amount-price { font-style: italic; }
.single-product form.cart:has(.pfn-amount) .quantity { display: none; }

/* Seasonal tile on the Shop page (client 5 Oct 2026): matches the two photo tiles beside it; the words come from WooCommerce > Seasonal shop. */
.pfn-season-tile { display: block; position: relative; min-height: 560px; border-radius: 8px; overflow: hidden; background: var(--wp--preset--color--whim) center / cover no-repeat; text-decoration: none; color: var(--wp--preset--color--white); }
.pfn-season-tile__overlay { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start; gap: var(--wp--preset--spacing--x-small); padding: var(--wp--preset--spacing--large) var(--wp--preset--spacing--medium) var(--wp--preset--spacing--medium); background: linear-gradient(180deg, rgba(42,36,38,.04) 0%, rgba(42,36,38,.22) 45%, rgba(42,36,38,.64) 100%); text-shadow: 0 1px 2px rgba(42,36,38,.35), 0 8px 24px rgba(42,36,38,.25); }
.pfn-season-tile .pfn-kicker { color: var(--wp--preset--color--white); }
.pfn-season-tile__title { font-family: var(--wp--preset--font-family--playfair-display); font-size: var(--wp--preset--font-size--xx-large); line-height: 1.15; }
.pfn-season-tile__text { font-size: var(--wp--preset--font-size--small); }
.pfn-season-tile__btn { display: inline-block; margin-top: 6px; border: 1.5px solid #fff; border-radius: 999px; padding: 12px 28px; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; transition: background .2s, color .2s; text-shadow: none; }
.pfn-season-tile:hover .pfn-season-tile__btn { background: #fff; color: var(--wp--preset--color--ink); }
@media (max-width: 781px) { .pfn-season-tile { min-height: 320px; } }
.pfn-product-grid .wc-block-components-notice-banner:not(.is-error):not(.is-success):not(.is-info) { display: none; } /* the empty notice template drew a bordered box above the grid */

/* Single product page spacing (client 5 Oct 2026): room under the header, between the sections, and above the stockists strip. */
.single-product .wc-block-breadcrumbs { padding-top: var(--wp--preset--spacing--medium, 24px); padding-bottom: var(--wp--preset--spacing--small, 16px); }
.single-product .wp-block-columns.alignwide { margin-top: var(--wp--preset--spacing--small, 16px); gap: var(--wp--preset--spacing--x-large, 48px); }
.single-product .wp-block-woocommerce-product-details { margin-top: var(--wp--preset--spacing--xx-large, 72px); }
.single-product .wp-block-woocommerce-product-collection.alignwide { margin-top: var(--wp--preset--spacing--xx-large, 80px); padding-bottom: var(--wp--preset--spacing--xx-large, 80px); }
.single-product .wp-block-woocommerce-product-collection .wp-block-heading { margin-bottom: var(--wp--preset--spacing--medium, 28px); }
.single-product .wp-block-woocommerce-product-meta { margin-top: var(--wp--preset--spacing--medium, 24px); }
.single-product .wp-block-woocommerce-product-meta .wp-block-group { padding-left: 0; margin-left: 0; }
.single-product .pfn-amount { margin-bottom: var(--wp--preset--spacing--medium, 24px); }
@media (max-width: 781px) {
	.single-product .wc-block-breadcrumbs, .single-product .wp-block-columns.alignwide, .single-product .wp-block-woocommerce-product-details, .single-product .wp-block-woocommerce-product-collection.alignwide { padding-left: var(--wp--preset--spacing--small, 16px); padding-right: var(--wp--preset--spacing--small, 16px); }
}

/* Bespoke enquiry form (client 5 Oct 2026). */
.pfn-enq { display: grid; gap: 4px; }
.pfn-enq p { margin: 0 0 16px; }
.pfn-enq label { display: block; font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 6px; }
.pfn-enq label span { text-transform: none; letter-spacing: 0; color: var(--wp--preset--color--ink-soft, #6b6366); }
.pfn-enq input[type=text], .pfn-enq input[type=email], .pfn-enq input[type=tel], .pfn-enq select, .pfn-enq textarea { width: 100%; font: inherit; padding: 12px 14px; border: 1px solid var(--wp--preset--color--outline, #d9d3cf); border-radius: 6px; background: #fff; }
.pfn-enq input:focus, .pfn-enq select:focus, .pfn-enq textarea:focus { outline: 2px solid rgba(75,80,72,.35); border-color: var(--wp--preset--color--green, #4b5048); }
.pfn-enq input[type=file] { width: 100%; font: inherit; padding: 14px; border: 1px dashed var(--wp--preset--color--outline, #cfc7c2); border-radius: 6px; background: var(--wp--preset--color--whim, #f7efeb); }
.pfn-enq small { display: block; margin-top: 6px; color: var(--wp--preset--color--ink-soft, #6b6366); }
.pfn-enq__row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
.pfn-enq__hp { position: absolute; left: -9999px; }
.pfn-enq__error { background: #fbeaea; border: 1px solid #e3b4b4; padding: 12px 14px; border-radius: 6px; }
.pfn-enq--thanks { text-align: center; padding: 24px 8px; }
@media (max-width: 640px) { .pfn-enq__row { grid-template-columns: 1fr; } }
.pfn-enq__from { font-size: 1.05rem; }
.pfn-enq__choice { border: 0; padding: 0; margin: 0 0 16px; }
.pfn-enq__choice legend { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 8px; padding: 0; }
.pfn-enq__choice label { display: inline-flex; align-items: center; gap: 8px; margin: 0 18px 0 0; text-transform: none; letter-spacing: 0; font-size: 1rem; }
.pfn-enq__note { color: var(--wp--preset--color--ink-soft, #6b6366); font-size: .9rem; }

/* Press My Flowers landing (client 5 Oct 2026): four large pictures, each with its heading beneath. */
.pfn-pmf__img { margin: 0 !important; }
.pfn-pmf__img img { display: block; width: 100%; aspect-ratio: 2 / 3; object-fit: cover; border-radius: 8px; transition: transform .5s ease; }
.pfn-pmf__img { overflow: hidden; border-radius: 8px; }
.pfn-pmf:hover .pfn-pmf__img img { transform: scale(1.03); }
.pfn-pmf__title { margin: 0 !important; font-size: var(--wp--preset--font-size--x-large); }
.pfn-pmf__title a { color: inherit; text-decoration: none; }
.pfn-pmf__title a:hover { text-decoration: underline; text-underline-offset: 6px; }
.pfn-header .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content { white-space: nowrap; }

/* Bridal journey on phones (client 5 Oct 2026, pressedfloral.com "how it works"): the steps slide across and keep looping
   instead of stopping at the last step. pfn.js clones the cards for the loop. Desktop and tablet keep the row of steps. */
@media (max-width: 767.98px) {
	.pfn-steps--slide > .wp-block-spectra-container { display: flex !important; flex-wrap: nowrap !important; gap: 14px !important; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; margin-left: 0 !important; margin-right: 0 !important; align-self: center !important; width: 100vw !important; max-width: 100vw !important; box-sizing: border-box; padding: 4px var(--wp--preset--spacing--small, 16px) 10px !important; }
	.pfn-steps--slide > .wp-block-spectra-container::-webkit-scrollbar { display: none; }
	.pfn-steps--slide .pfn-step { display: flex !important; flex-direction: column; flex: 0 0 84% !important; scroll-snap-align: start; scroll-snap-stop: always; grid-template-columns: none; border-bottom: 0 !important; padding-bottom: 0 !important; margin: 0 !important; text-align: left; }
	.pfn-steps--slide .pfn-step .pfn-step-image { grid-row: auto; }
	.pfn-steps--slide .pfn-step .pfn-step-image img { aspect-ratio: 4 / 3; }
	.pfn-steps--slide .pfn-step-image::after { display: none !important; }
	.pfn-steps--slide .pfn-step-image[data-n]::before { content: attr(data-n) !important; }
	.pfn-steps--slide .pfn-step > *:not(.pfn-step-image) { padding-left: 18px !important; padding-right: 18px !important; }
	.pfn-steps--slide .pfn-step h3 { font-size: 1.15rem; }
	.pfn-steps--slide .pfn-step p:not(.pfn-kicker) { font-size: .92rem; }
	.pfn-steps--slide .pfn-step:last-of-type { padding-bottom: 16px !important; }
}

/* Bridal gallery "Designs" tab (client 5 Oct 2026, sketch option 1): three across, edges lined up all the way down, names on hover. */
.pfn-dw { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; align-items: start; }
.pfn-dw__item { position: relative; margin: 0 !important; overflow: hidden; border-radius: 4px; background: var(--wp--preset--color--sage); }
.pfn-dw__item img { display: block; width: 100%; height: auto; transition: transform .8s cubic-bezier(.2,.7,.2,1); }
.pfn-dw__item:hover img { transform: scale(1.04); }
.pfn-dw__item figcaption { position: absolute; inset: auto 0 0 0; display: flex; flex-direction: column; gap: 2px; padding: 34px 14px 12px; color: #fff; background: linear-gradient(180deg, rgba(42,36,38,0), rgba(42,36,38,.72)); opacity: 0; transform: translateY(8px); transition: opacity .3s ease, transform .3s ease; pointer-events: none; text-shadow: 0 1px 2px rgba(42,36,38,.4); }
.pfn-dw__item:hover figcaption, .pfn-dw__item:focus-within figcaption { opacity: 1; transform: none; }
.pfn-dw__name { font-family: var(--wp--preset--font-family--playfair-display); font-size: 1.1rem; line-height: 1.2; }
.pfn-dw__badge { font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; opacity: .9; }
@media (hover: none), (max-width: 767.98px) {
	.pfn-dw__item { overflow: visible; background: none; }
	.pfn-dw__item img { border-radius: 4px; }
	.pfn-dw__item:hover img { transform: none; }
	.pfn-dw__item figcaption { position: static; opacity: 1; transform: none; padding: 5px 0 0; color: var(--wp--preset--color--ink); background: none; text-shadow: none; }
	.pfn-dw__name { font-size: .7rem; line-height: 1.25; }
	.pfn-dw__badge { display: none; }
}
@media (max-width: 767.98px) { .pfn-dw { gap: 8px; } }

/* The required "little something extra" question (client 5 Oct 2026). */
.pfn-extras { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pfn-pill--wide { width: 100%; text-align: left; justify-content: flex-start; min-height: 64px; }
@media (max-width: 640px) { .pfn-extras { grid-template-columns: 1fr; } }

/* Cart and checkout: every choice on its own line (client 5 Oct 2026). The bridal line lists everything once, so the
   separate variation list that follows it is hidden for that line only. */
.wc-block-components-product-details { display: block !important; margin: 6px 0 0 !important; padding: 0; list-style: none; }
.wc-block-components-product-details > span { display: block !important; margin: 0 0 2px; line-height: 1.5; }
.wc-block-components-product-details > span > span[aria-hidden="true"] { display: none; }
.wc-block-components-product-details__name { font-weight: 600; }
.wc-block-components-product-metadata:has(.wc-block-components-product-details__shape) .wc-block-components-product-details:not(:has(.wc-block-components-product-details__shape)) { display: none !important; }

/* Checkout: guest or account (client 5 Oct 2026) */
.pfn-account-choice { border: 0; padding: 0; margin: 14px 0 6px; display: grid; gap: 10px; }
.pfn-account-choice legend { font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; margin-bottom: 8px; padding: 0; }
.pfn-account-choice__opt { display: flex; gap: 12px; align-items: flex-start; padding: 14px 16px; border: 1px solid var(--wp--preset--color--outline, #d9d3cf); border-radius: 6px; cursor: pointer; background: #fff; }
.pfn-account-choice__opt.is-on { border-color: var(--wp--preset--color--green, #4b5048); background: var(--wp--preset--color--sage, #eef0ea); box-shadow: inset 0 0 0 1px var(--wp--preset--color--green, #4b5048); }
.pfn-account-choice__opt input { margin-top: 4px; }
.pfn-account-choice__opt span { display: grid; gap: 2px; }
.pfn-account-choice__opt small { color: var(--wp--preset--color--ink-soft, #6b6366); font-size: .85rem; }

/* Cart banner (client 5 Oct 2026): her three photographs side by side, edge to edge, on desktop and phone. */
.woocommerce-cart .entry-content, .woocommerce-checkout .entry-content { padding-left: 0 !important; padding-right: 0 !important; }
.woocommerce-cart .entry-content > .wp-block-woocommerce-cart { padding: var(--wp--preset--spacing--large, 32px) var(--wp--preset--spacing--small, 16px) var(--wp--preset--spacing--xx-large, 64px); }
.pfn-blend--cols { min-height: 40vh; }
.pfn-blend--cols .pfn-blend__panels .wp-block-image:nth-child(2) { flex-basis: auto; margin: 0; -webkit-mask-image: none; mask-image: none; }
.pfn-blend--cols .pfn-blend__panels .wp-block-image:first-child::after, .pfn-blend--cols .pfn-blend__panels .wp-block-image:last-child::before { content: none; }
@media (max-width: 767.98px) {
	.pfn-blend--cols { min-height: 240px !important; height: 240px; }
	.pfn-blend--cols .pfn-blend__panels { position: absolute !important; inset: 0; flex-direction: row !important; height: 100% !important; }
	.pfn-blend--cols .pfn-blend__panels .wp-block-image { height: 100% !important; margin: 0 !important; -webkit-mask-image: none !important; mask-image: none !important; }
	.pfn-blend--cols .pfn-blend__words { position: absolute; inset: 0; }
	.pfn-blend--cols .pfn-blend__words h1 { font-size: 2.2rem; }
}
.pfn-blend--cols { width: 100vw !important; max-width: 100vw !important; margin-left: calc(50% - 50vw) !important; margin-right: 0 !important; }
.pfn-blend--cols .pfn-blend__panels { padding: 0 !important; }

.pfn-frame--antique-gold, [data-colour="antique-gold"] .pfn-frame { background: linear-gradient(135deg, #C79A52, #E2BE78 40%, #B98B44 70%, #D6AE69); }
.pfn-extras + .pfn-addons { margin-top: 14px; }

/* Calendly (client 5 Oct 2026) */
.pfn-calendly { border-radius: 6px; overflow: hidden; min-width: 0 !important; max-width: 100%; width: 100%; align-self: stretch; }
.pfn-calendly iframe { min-width: 0 !important; width: 100% !important; }
@media (max-width: 640px) {
	/* Book a visit: the calendar sits in three padded boxes; trim them so it gets the full phone width */
	.entry-content :is(section, div):has(> .pfn-calendly),
	.entry-content :is(section, div):has(> * > .pfn-calendly) { padding-left: 4px !important; padding-right: 4px !important; }
	.entry-content section:has(.pfn-calendly) { padding-left: 12px !important; padding-right: 12px !important; }
}
.pfn-calendly-btn { margin-top: 14px; }

/* Press My Flowers design pages (client 5 Oct 2026): the bridal builder with their own questions. A softer tone for these pages. */
.pfn-badge--soft { background: var(--ink-soft, #6b6366); }
.pfn-design__sub { display: block; font-size: .72rem; line-height: 1.3; color: var(--ink-soft, #6b6366); margin-top: 2px; }
.pfn-design__fee { display: block; font-size: .78rem; margin-top: 2px; color: var(--ink, #2a2426); }
.pfn-upload { margin: 0 0 18px; }
.pfn-upload input[type="file"] { display: block; width: 100%; padding: 16px; border: 1px dashed var(--g, #687968); border-radius: 6px; background: #fff; font-size: .95rem; box-sizing: border-box; }
.pfn-upload__count { margin: 6px 0 0; font-size: .85rem; color: var(--g, #687968); }
.pfn-builder--bereavement .pfn-panel-head__title, .pfn-builder--meaning .pfn-panel-head__title, .pfn-builder--recreate .pfn-panel-head__title { font-size: clamp(1.5rem, 2.4vw, 2rem); }
.pfn-builder--bereavement .pfn-panel-head__intro { font-style: italic; }
@media (max-width: 600px) {
	.pfn-upload input[type="file"] { padding: 12px; font-size: .9rem; }
}

/* Press My Flowers "how it works": a storybook timeline (client 6 Oct 2026). Arch photographs alternate left and right
   along a dotted vine, each beside a big numeral. Stacks on phones. */
.pfn-story { position: relative; counter-reset: pfn-story; padding: 8px 0 0; }
.pfn-story::before { content: ""; position: absolute; left: 50%; top: 60px; bottom: 90px; border-left: 2px dotted var(--wp--preset--color--green, #687968); opacity: .55; transform: translateX(-1px); }
.pfn-story-step { position: relative; counter-increment: pfn-story; padding: 14px 0; }
.pfn-story-step:nth-child(even) { flex-direction: row-reverse !important; }
.pfn-story-step::after { content: ""; position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -9px; border-radius: 50%; background: var(--wp--preset--color--white, #fff); border: 2px solid var(--wp--preset--color--green, #687968); box-shadow: 0 0 0 6px var(--wp--preset--color--whim, #f6efec); z-index: 1; }
.pfn-story-photo { margin: 0 !important; position: relative; }
.pfn-story-photo img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 999px 999px 14px 14px; box-shadow: 0 24px 44px -24px rgba(42, 36, 38, .45); }
.pfn-story-photo::after { content: ""; position: absolute; inset: 14px -14px -14px 14px; border: 1px solid var(--wp--preset--color--green, #687968); border-radius: 999px 999px 14px 14px; opacity: .45; z-index: -1; pointer-events: none; }
.pfn-story-step:nth-child(even) .pfn-story-photo::after { inset: 14px 14px -14px -14px; }
.pfn-story-words::before { content: "0" counter(pfn-story); display: block; font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); font-style: italic; font-size: clamp(3.5rem, 6vw, 5.5rem); line-height: .9; color: var(--wp--preset--color--cerise, #b0426a); opacity: .85; margin-bottom: 4px; }
.pfn-story-words h3 { margin: 0; }
.pfn-story-words p { max-width: 46ch; }
.pfn-story > .wp-block-spectra-container:last-child { margin: 18px auto 0 !important; align-self: center; justify-content: center; text-align: center; }
.pfn-story > .wp-block-spectra-container:last-child .wp-block-buttons { justify-content: center; }
@media (max-width: 767.98px) {
	.pfn-story::before, .pfn-story-step::after { display: none; }
	.pfn-story-step { padding: 18px 0 30px; gap: 22px !important; }
	.pfn-story-step:nth-child(even) { flex-direction: column !important; }
	.pfn-story-photo img { aspect-ratio: 5 / 4; border-radius: 200px 200px 14px 14px; }
	.pfn-story-photo::after { inset: 10px -8px -10px 8px; }
	.pfn-story-step:nth-child(even) .pfn-story-photo::after { inset: 10px 8px -10px -8px; }
	.pfn-story-pic, .pfn-story-words { width: 100% !important; }
	.pfn-story-words::before { font-size: 3.4rem; }
}

/* Header fit at every width (client 6 Oct 2026: responsive on all screen sizes). The longer menu (Press My Flowers dropdown) no
   longer fits beside the logo, icons and button between 1024px and 1279px, so the hamburger now runs to 1279px; and the header
   is allowed to shrink on the smallest phones so the page never scrolls sideways. */
@media (min-width: 1024px) and (max-width: 1279.98px) {
	.pfn-header .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
	.pfn-header .wp-block-navigation__responsive-container-open:not(.always-shown) { display: flex; }
	.wp-block-buttons.pfn-header-cta, .pfn-header-cta { display: none !important; }
}
@media (max-width: 420px) {
	.pfn-header .pfn-logo img { width: 104px !important; }
	.pfn-header > .wp-block-group { gap: 8px !important; flex-wrap: nowrap; min-width: 0; }
	.pfn-header .wp-block-site-title { font-size: .95rem !important; }
	.pfn-header .wp-block-navigation, .pfn-header .wp-block-group { min-width: 0; }
}

@media (max-width: 1023.98px) {
	.pfn-builder.is-offscreen .pfn-bar { transform: translateY(110%); visibility: hidden; pointer-events: none; }
	.pfn-bar { transition: transform .25s ease, visibility .25s; }
}

/* Smallest phones: the builder's preview column never wider than the screen */
.pfn-builder, .pfn-builder__media, .pfn-stage, .pfn-thumbs { min-width: 0; max-width: 100%; box-sizing: border-box; }
@media (max-width: 360px) {
	.pfn-stage { padding: 20px 14px 12px; }
	.pfn-builder__panel { padding-left: 14px; padding-right: 14px; }
	.pfn-thumbs { padding: 10px 14px; }
}

/* TEST 6 Oct 2026: scroll fade-ins switched off to rule them out as the cause of a blank white stretch on the dev bridal page.
   Delete this block to bring the fade-ins back. Covers the Spectra scroll animations (data-aos), the journey cards and the photo mosaic tiles. */
[data-aos], [data-aos].aos-init, [data-aos].aos-animate { opacity: 1 !important; transform: none !important; transition: none !important; }
.pfn-steps.is-armed .pfn-step, .pfn-steps.is-armed.is-in .pfn-step { opacity: 1 !important; transform: none !important; transition: box-shadow .35s ease; }
.wp-block-gallery.pfn-mosaic.has-nested-images figure.wp-block-image { opacity: 1 !important; transform: none !important; }

/* ------------------------------------------------------------------------------------------------------------
   Press & Media (client brief 6 Oct 2026): an editorial press archive. Pinned cuttings, a headline strip,
   magazine-style article cards and a scrapbook of the physical clippings.
   ------------------------------------------------------------------------------------------------------------ */
.pfn-press-collage { position: relative; min-height: 520px; width: 100%; }
.pfn-press-collage .pfn-pin { position: absolute !important; margin: 0 !important; background: #fff; padding: 8px; box-shadow: 0 2px 4px rgba(42,36,38,.12), 0 22px 40px -18px rgba(42,36,38,.4); }
.pfn-press-collage .pfn-pin img { display: block; width: 100%; height: auto; }
.pfn-press-collage .pfn-pin::before { content: ""; position: absolute; top: -12px; left: 50%; width: 84px; height: 24px; margin-left: -42px; background: rgba(226, 190, 120, .55); transform: rotate(-3deg); box-shadow: 0 1px 2px rgba(42,36,38,.12); }
.pfn-pin--1 { width: 46%; left: 2%; top: 6%; transform: rotate(-4deg); z-index: 2; }
.pfn-pin--2 { width: 56%; right: 0; top: 0; transform: rotate(3deg); z-index: 1; }
.pfn-pin--3 { width: 40%; right: 10%; bottom: 0; transform: rotate(-2deg); z-index: 3; }
@media (max-width: 767.98px) { .pfn-press-collage { min-height: 380px; } .pfn-pin--1 { width: 48%; } .pfn-pin--2 { width: 54%; } .pfn-pin--3 { width: 42%; right: 6%; } }

/* The headline strip */
.pfn-ticker { overflow: hidden; background: var(--wp--preset--color--green, #4b5148); color: #fff; padding: 18px 0; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%); }
.pfn-ticker__track { display: flex; width: max-content; animation: pfn-ticker 80s linear infinite; }
.pfn-ticker:hover .pfn-ticker__track { animation-play-state: paused; }
.pfn-ticker__set { display: flex; flex: 0 0 auto; list-style: none; margin: 0; padding: 0; }
.pfn-ticker__set li { flex: 0 0 auto; margin: 0; padding: 0 28px 0 0; white-space: nowrap; font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); font-style: italic; font-size: clamp(1.1rem, 1.9vw, 1.55rem); display: flex; align-items: center; }
.pfn-ticker__set li::after { content: ""; display: inline-block; width: 1px; height: 1.1em; margin-left: 28px; vertical-align: -.2em; background: rgba(255,255,255,.45); }
@keyframes pfn-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .pfn-ticker__track { animation: none; flex-wrap: wrap; width: auto; } .pfn-ticker__set[aria-hidden] { display: none; } .pfn-ticker__set { flex-wrap: wrap; justify-content: center; padding: 0 16px; } }

/* As featured in */
.pfn-press-mastheads { font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); font-style: italic; font-size: clamp(1rem, 1.6vw, 1.3rem); line-height: 2; margin: 0; max-width: 1000px; }
.pfn-press-mastheads i { font-style: normal; color: var(--wp--preset--color--cerise, #f160af); padding: 0 .65em; }

/* Article cards: outlet masthead, headline, date, link. The whole card is the link. */
.pfn-press-grid { align-items: stretch; }
.pfn-press-card { position: relative; background: #fff; border: 1px solid var(--wp--preset--color--outline, #e3dcd8); border-top: 3px solid var(--wp--preset--color--green, #4b5148); padding: 26px 26px 22px !important; border-radius: 2px; height: 100%; box-sizing: border-box; transition: transform .25s ease, box-shadow .25s ease; }
.pfn-press-card:hover, .pfn-press-card:focus-within { transform: translateY(-4px); box-shadow: 0 2px 4px rgba(42,36,38,.06), 0 24px 40px -22px rgba(42,36,38,.35); }
.pfn-press-outlet { font-size: .72rem !important; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--cerise, #d6489a); margin: 0; font-weight: 600; }
.pfn-press-card h3 { font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); line-height: 1.22; margin: 4px 0 6px; }
.pfn-press-date { font-style: italic; font-size: .9rem !important; margin: 0 0 6px; }
.pfn-press-link { margin: auto 0 0 !important; padding-top: 8px; font-size: .78rem !important; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; }
.pfn-press-link a { text-decoration: none; color: var(--wp--preset--color--green, #4b5148); border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.pfn-press-link a::after { content: ""; position: absolute; inset: 0; }
.pfn-press-card--lead { grid-column: span 2; background: var(--wp--preset--color--whim, #f6efec); border-top-color: var(--wp--preset--color--cerise, #f160af); padding: 34px 34px 28px !important; justify-content: center; }
.pfn-press-card--lead h3 { font-size: clamp(1.5rem, 2.6vw, 2.2rem) !important; }
.pfn-press-card--row { padding: 18px 20px 16px !important; border-top-width: 1px; }
.pfn-press-card--row h3 { font-size: 1.05rem !important; }
.pfn-press-grid--more .pfn-press-card { height: auto; }
@media (max-width: 1023.98px) { .pfn-press-card--lead { grid-column: span 2; } }
@media (max-width: 767.98px) { .pfn-press-card--lead { grid-column: auto; padding: 24px 22px 20px !important; } .pfn-press-card { padding: 22px 20px 18px !important; } }

/* TV and podcast cards */
.pfn-press-media--pic { padding: 0 0 22px !important; overflow: hidden; }
.pfn-press-media--pic > :not(.pfn-press-media__img) { padding-left: 24px; padding-right: 24px; }
.pfn-press-media__img { margin: 0 0 12px !important; width: 100%; position: relative; }
.pfn-press-media__img img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.pfn-press-media__img::after { content: ""; position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: rgba(255,255,255,.94) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6.5v11l9-5.5z' fill='%234b5148'/%3E%3C/svg%3E") center / 30px 30px no-repeat; box-sizing: border-box; box-shadow: 0 8px 24px rgba(42,36,38,.3); transition: transform .25s ease; }
.pfn-press-media__img:hover::after { transform: scale(1.06); }
.pfn-press-link .pfn-ico { vertical-align: -2px; margin-left: 4px; }
.pfn-press-grid--screen { margin-bottom: 8px; }

/* The scrapbook: cuttings pinned up like the real thing, each a little crooked, each opening full size */
.pfn-scrap { display: block !important; column-count: 3; column-gap: 34px; padding: 18px 8px 0; }
.pfn-scrap > figure.wp-block-image { break-inside: avoid; display: inline-block; width: 100%; margin: 0 0 40px !important; position: relative; background: #fff; padding: 10px 10px 0; box-shadow: 0 1px 3px rgba(42,36,38,.14), 0 20px 34px -20px rgba(42,36,38,.45); transition: transform .3s ease; }
.pfn-scrap > figure.wp-block-image img { display: block; width: 100%; height: auto; cursor: zoom-in; }
.pfn-scrap > figure.wp-block-image figcaption { font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); font-style: italic; font-size: .92rem; line-height: 1.35; color: var(--wp--preset--color--ink-soft, #5f585b); padding: 10px 4px 12px; margin: 0; text-align: left; }
.pfn-scrap > figure.wp-block-image::before { content: ""; position: absolute; top: -11px; left: 50%; width: 76px; height: 22px; margin-left: -38px; background: rgba(226,190,120,.55); transform: rotate(-2deg); box-shadow: 0 1px 2px rgba(42,36,38,.12); z-index: 2; pointer-events: none; }
.pfn-scrap > figure.wp-block-image:nth-child(4n+1) { transform: rotate(-1.6deg); }
.pfn-scrap > figure.wp-block-image:nth-child(4n+2) { transform: rotate(1.2deg); }
.pfn-scrap > figure.wp-block-image:nth-child(4n+3) { transform: rotate(-.8deg); }
.pfn-scrap > figure.wp-block-image:nth-child(4n) { transform: rotate(1.8deg); }
.pfn-scrap > figure.wp-block-image:nth-child(3n)::before { transform: rotate(3deg); background: rgba(241,160,200,.5); }
.pfn-scrap > figure.wp-block-image:hover { transform: rotate(0) translateY(-4px) scale(1.02); z-index: 3; }
.pfn-scrap .wp-lightbox-container { position: relative; }
.pfn-scrap .lightbox-trigger { display: none; }
@media (max-width: 1023.98px) { .pfn-scrap { column-count: 2; column-gap: 24px; } }
@media (max-width: 599.98px) { .pfn-scrap { column-count: 1; padding: 14px 6px 0; } .pfn-scrap > figure.wp-block-image { margin-bottom: 34px !important; max-width: 420px; margin-left: auto !important; margin-right: auto !important; } }

/* Awards page (client brief 6 Oct 2026): eight awards, each with her photographs, alternating sides */
.pfn-awards { counter-reset: pfn-award; }
.pfn-award { padding: 34px 0; position: relative; }
.pfn-award:not(:last-child)::after { content: ""; position: absolute; left: 10%; right: 10%; bottom: 0; border-bottom: 1px dotted var(--wp--preset--color--outline, #d9d3cf); }
.pfn-award:nth-child(even) { flex-direction: row-reverse !important; }
.pfn-award__pics { position: relative; }
.pfn-award__pic { margin: 0 !important; }
.pfn-award__pic img { display: block; width: 100%; height: auto; border-radius: 10px; box-shadow: 0 24px 44px -26px rgba(42,36,38,.5); }
.pfn-award__pics--two { padding-bottom: 22%; }
.pfn-award__pics--two .pfn-award__pic--2 { position: absolute !important; width: 46%; right: -4%; bottom: 0; border: 6px solid #fff; border-radius: 12px; box-shadow: 0 22px 40px -20px rgba(42,36,38,.55); }
.pfn-award__pics--two .pfn-award__pic--2 img { border-radius: 6px; box-shadow: none; }
.pfn-award:nth-child(even) .pfn-award__pics--two .pfn-award__pic--2 { right: auto; left: -4%; }
.pfn-award__year { font-family: var(--wp--preset--font-family--heading, "Playfair Display", serif); font-style: italic; font-size: clamp(3.2rem, 6vw, 5rem); line-height: .9; color: var(--wp--preset--color--cerise, #f160af); opacity: .9; margin: 0 0 4px !important; }
.pfn-award__words h2 { font-size: clamp(1.5rem, 2.6vw, 2.1rem); margin: 0 0 6px; }
.pfn-award__words p:not(.pfn-kicker):not(.pfn-award__year) { max-width: 52ch; }
@media (max-width: 767.98px) { .pfn-award { padding: 26px 0 34px; gap: 22px !important; } .pfn-award:nth-child(even) { flex-direction: column !important; } .pfn-award__pics--two { padding-bottom: 18%; } .pfn-award__pics--two .pfn-award__pic--2 { right: 0; } .pfn-award:nth-child(even) .pfn-award__pics--two .pfn-award__pic--2 { left: auto; right: 0; } .pfn-award__pics, .pfn-award__words { width: 100% !important; } }

/* Press & Media: the article grids and the cuttings wall use the full width of the page (client 6 Oct 2026), centred, with a generous cap on very wide screens */
.pfn-press-grid, .pfn-press-grid > .wp-block-spectra-container, .pfn-scrap { width: 100% !important; max-width: min(1760px, 100%) !important; margin-left: auto !important; margin-right: auto !important; box-sizing: border-box; }
.pfn-press-grid { align-self: stretch; }
@media (min-width: 1600px) { .pfn-scrap { column-count: 4; } }

/* ===== Builder fixes, 7 Oct 2026 (client): the Eternal Keepsake fills its frame (photograph space and artwork share the mount, edge to edge) ===== */
.pfn-stage__preview.has-frame-photo.is-keepsake:not([data-orient="portrait"]) .pfn-mount { padding: 6% 5%; gap: 4%; align-items: center; }
.pfn-stage__preview.has-frame-photo.is-keepsake:not([data-orient="portrait"]) .pfn-keepsake-photo { flex: 0 0 auto; height: 100%; width: auto; aspect-ratio: 4 / 5; max-width: 46%; }
.pfn-stage__preview.has-frame-photo.is-keepsake:not([data-orient="portrait"]) .pfn-art { flex: 1 1 0; min-width: 0; width: auto; height: 100%; max-width: none; max-height: 100%; object-fit: contain; }

/* Batch A 7 Oct 2026: optional note box under the custom amount */
.pfn-amount__notelabel { display: block; font-size: .85rem; letter-spacing: .08em; text-transform: uppercase; margin: 16px 0 8px; }
.pfn-amount__notelabel span { text-transform: none; letter-spacing: 0; color: var(--wp--preset--color--ink-soft, #6b6366); }
.pfn-amount__notefield { width: 100%; border: 1px solid var(--wp--preset--color--outline, #d9d3cf); border-radius: 6px; background: #fff; padding: 12px 14px; font: inherit; }

/* Batch B 7 Oct 2026: the extras (little keepsake pieces) now sit above the details, pictures first and the question under them */
.pfn-extras-question { margin: 22px 0 10px; font-size: 1.02rem; font-weight: 600; font-family: var(--serif, inherit); }
.pfn-row--addons .pfn-addons { margin-top: 10px; }

/* Batch C 7 Oct 2026: the bridal journey slider on phones. The track no longer lets a sideways swipe at the edge trigger the browser's
   back gesture, and dots sit under it. */
@media (max-width: 767.98px) {
	.pfn-steps--slide > .wp-block-spectra-container { overscroll-behavior-x: contain; touch-action: pan-x pan-y; }
	.pfn-steps__dots { display: flex; justify-content: center; gap: 10px; margin: 6px 0 0; }
	.pfn-steps__dots button { width: 10px; height: 10px; padding: 0; border: 0; border-radius: 50%; background: rgba(75, 81, 72, .3); cursor: pointer; }
	.pfn-steps__dots button[aria-current="true"] { background: #4B5148; transform: scale(1.25); }
}
@media (min-width: 768px) { .pfn-steps__dots { display: none; } }
/* Batch C 7 Oct 2026 */
@media (max-width: 767.98px) { .pfn-steps__dots { align-self: center; width: 100%; } }
/* Batch C 7 Oct 2026: Contact and Book a studio visit: the words beside the form / calendar get room to breathe on desktop. */
.pfn-split-text { padding-block: 8px; }
.pfn-split-text > * { margin-block: 0 !important; }
.pfn-split-text h3 { font-size: clamp(1.5rem, 1.9vw, 1.9rem); line-height: 1.2; margin-top: 26px !important; padding-bottom: 10px; border-bottom: 1px solid rgba(75, 81, 72, .18); }
.pfn-split-text h3 + p { margin-top: 4px !important; }
.pfn-split-text > :first-child { margin-top: 0 !important; }
.pfn-split-text p { font-size: 1.12rem; line-height: 1.9; }
.pfn-split-text > p:first-child { font-size: 1.3rem; line-height: 1.7; color: var(--wp--preset--color--ink, #2b2b2b); }
.pfn-split-text .pfn-calendly-btn, .pfn-split-text .wp-block-button { margin-top: 6px; }
@media (min-width: 900px) { #contact .pfn-split-text, #book .pfn-split-text { padding-inline: clamp(0px, 2vw, 32px); max-width: none; } }
@media (max-width: 899.98px) { .pfn-split-text h3 { font-size: 1.45rem; } .pfn-split-text p { font-size: 1.05rem; } .pfn-split-text > p:first-child { font-size: 1.15rem; } }
/* Batch C 7 Oct 2026: FAQ bottom banner: the three photographs are portrait, so the banner is as tall as they are and nothing is cropped
   (Nell's face and the framed pieces stay whole); on phones the three sit side by side with the words underneath. */
.pfn-blend--fit { min-height: min(50vw, 920px) !important; }
.pfn-blend--fit .pfn-blend__panels .wp-block-image img { object-position: 50% 12%; }
@media (min-width: 768px) { .pfn-blend--fit .pfn-blend__words { margin: auto auto 0 !important; padding: 15vh 24px 6vh; } }
@media (max-width: 767.98px) {
	.pfn-blend--fit { min-height: 0 !important; }
	.pfn-blend--fit .pfn-blend__panels { position: relative !important; flex-direction: row !important; height: auto !important; }
	.pfn-blend--fit .pfn-blend__panels .wp-block-image, .pfn-blend--fit .pfn-blend__panels .wp-block-image:nth-child(2) { height: auto !important; margin: 0 !important; flex: 1 1 0 !important; min-width: 0 !important; -webkit-mask-image: none !important; mask-image: none !important; }
	.pfn-blend--fit .pfn-blend__panels .wp-block-image img { height: auto; aspect-ratio: 2 / 3; object-fit: cover; object-position: 50% 15%; }
	.pfn-blend--fit .pfn-blend__words { position: static !important; padding: 28px 22px 36px; display: flex !important; flex-direction: column; align-items: center; gap: 16px; }
}

/* Batch B 7 Oct 2026: a button whose words wrap onto two lines on a phone keeps a comfortable line height (the lines were touching) */
@media (max-width: 480px) { .wp-block-spectra-button .spectra-button__link, .wp-block-spectra-button.wp-block-button__link { line-height: 1.35; } }
.pfn-no-results { text-align: center; padding: 28px 0; }
.pfn-no-results__links { display: flex; flex-wrap: wrap; gap: 8px 22px; justify-content: center; }
.pfn-no-results__links a { text-decoration: underline; text-underline-offset: 3px; }
.pfn-delivery-times { list-style: none; margin: 18px 0 0; padding: 14px 0 0; border-top: 1px solid var(--wp--preset--color--outline, #e4dedb); font-size: .85rem; color: var(--wp--preset--color--ink-soft, #6b6366); display: grid; gap: 4px; }
.pfn-delivery-times strong { font-weight: 600; color: var(--wp--preset--color--ink, #2b2b2b); }
/* Batch C 7 Oct 2026: Our Story photo scrapbook. It used the same class as the Press page scrapbook, whose later styles shrank it to three tiny
   thumbnails on desktop; it now has its own class. Nell and her mum (with the Lawless Flowers bike) are cropped in closer. */
.pfn-story-scrap { position: relative; min-height: 700px; width: 100%; }
.pfn-story-scrap .wp-block-image { margin: 0 !important; position: absolute; background: #fff; padding: 10px 10px 30px; box-shadow: 0 18px 36px -20px rgba(42,36,38,.5); transition: transform .4s ease; }
.pfn-story-scrap .wp-block-image img { display: block; width: 100%; height: auto; object-fit: cover; }
.pfn-story-scrap .pfn-scrap__main { left: 0; top: 0; width: 72%; transform: rotate(-2deg); z-index: 1; }
.pfn-story-scrap .pfn-scrap__main img { aspect-ratio: 4 / 3; }
.pfn-story-scrap .pfn-scrap__a { right: 0; top: 24%; width: 46%; transform: rotate(3deg); z-index: 2; }
.pfn-story-scrap .pfn-scrap__a img { aspect-ratio: 4 / 5; }
.pfn-story-scrap .pfn-scrap__b { left: 2%; bottom: 0; width: 52%; transform: rotate(-3deg); z-index: 3; }
.pfn-story-scrap .pfn-scrap__b img { aspect-ratio: 5 / 6; object-position: 50% 40%; }
.pfn-story-scrap .wp-block-image:hover { z-index: 5; transform: rotate(0) scale(1.03); }
.pfn-linkedin a { text-decoration: underline; text-underline-offset: 4px; }
@media (max-width: 767.98px) { .pfn-story-scrap { min-height: 150vw; } }
@media (max-width: 767.98px) {
	.pfn-story-scrap { min-height: 178vw; }
	.pfn-story-scrap .pfn-scrap__main { width: 84%; }
	.pfn-story-scrap .pfn-scrap__a { width: 58%; top: 33%; }
	.pfn-story-scrap .pfn-scrap__b { width: 66%; left: 0; }
}
/* ===== Search results (8 Oct 2026): a calm header with the search box, then a four-column product grid ===== */
.pfn-search__head { text-align: center; }
.pfn-search__kicker { margin: 0; font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #6b6b6b); }
.pfn-search__title { margin: 0; font-size: clamp(1.7rem, 3.4vw, 2.5rem); line-height: 1.2; overflow-wrap: anywhere; }
.pfn-search__form { max-width: 560px; margin: 8px auto 0; }
.pfn-search__form .wp-block-search__inside-wrapper { background: #fff; border: 1px solid var(--wp--preset--color--outline, #d9d4cf); border-radius: 999px; padding: 4px; }
.pfn-search__form .wp-block-search__input { border: 0; background: transparent; padding: 10px 18px; font-size: 1rem; min-width: 0; }
.pfn-search__form .wp-block-search__input:focus { outline: none; }
.pfn-search__form .wp-block-search__inside-wrapper:focus-within { border-color: var(--wp--preset--color--green, #4b5148); box-shadow: 0 0 0 3px rgba(75, 81, 72, .15); }
.pfn-search__form .wp-block-search__button { margin: 0; border-radius: 999px; padding: 10px 22px; font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; }
.pfn-search .pfn-shop-toolbar { border-bottom: 1px solid var(--wp--preset--color--outline, #e6e1dc); padding-bottom: 12px; margin-bottom: 8px; }
@media (min-width: 1101px) { .pfn-search-grid .wc-block-product-template { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pfn-search-grid .wp-block-post-title { margin-top: 10px; line-height: 1.3; }
.pfn-search-grid .wc-block-components-product-image { margin-bottom: 0; }
@media (max-width: 700px) {
	.pfn-search-grid .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 22px 14px; }
	.pfn-search-grid .wp-block-post-title { font-size: .95rem; }
	.pfn-search__form .wp-block-search__button { padding: 10px 16px; }
}
.pfn-search-results .wp-block-post-template { gap: 34px 26px; }
.pfn-search-card .wp-block-post-title { margin: 8px 0 0; line-height: 1.3; }
.pfn-search-card .wp-block-post-title a { text-decoration: none; }
.pfn-search-card .wp-block-post-excerpt { margin: 0; color: var(--wp--preset--color--ink-soft, #6b6b6b); }
@media (max-width: 782px) { .pfn-search-results .wp-block-post-template.is-layout-grid { grid-template-columns: minmax(0, 1fr); } }
.pfn-search > .alignfull:not(.pfn-search__head) { padding-top: 14px !important; }
.pfn-search .pfn-shop-toolbar { margin-top: 0 !important; }
.pfn-search-card .wp-block-post-featured-image:not(:has(img)) { display: none; }
.pfn-search-card .wp-block-post-featured-image img { width: 100%; height: auto; display: block; }
.pfn-search-grid .wc-block-components-product-button .wp-block-button__link { white-space: normal; max-width: 100%; box-sizing: border-box; }
@media (max-width: 700px) {
	.pfn-search-grid .wc-block-components-product-button { width: 100%; }
	.pfn-search-grid .wc-block-components-product-button .wp-block-button__link { width: 100%; font-size: .6rem; padding: .7em .5em; letter-spacing: .05em; line-height: 1.3; text-align: center; }
}
.pfn-search .pfn-no-results { padding: 40px 0 60px; }
.pfn-search-grid .wc-block-components-product-button .wp-block-button__link,
.pfn-search-grid .wc-block-components-product-button .wp-block-button__link span { white-space: normal !important; overflow-wrap: anywhere; }
.pfn-search-card a:has(> figure.is-placeholder), .pfn-search-card figure.is-placeholder { display: none; } /* a page with no picture: the card is just its title and words */

/* Product description under the price (8 Oct 2026) */
.single-product .pfn-product-desc { margin: 14px 0 22px; max-width: 62ch; }
.single-product .pfn-product-desc p { margin: 0 0 .85em; font-size: 1rem; line-height: 1.7; color: var(--wp--preset--color--ink-soft, #5b5b5b); }
.single-product .pfn-product-desc p:last-child { margin-bottom: 0; }

/* Home: the bridal tile's words sit lower so they do not cover Nell's face (client 8 Oct 2026). Taller tile on tablet and phone, photo placed higher. */
.home #choose .pfn-hero-overlay { padding-bottom: 28px !important; }
@media (max-width: 1100px) { .home #choose .pfn-hero-overlay { min-height: 560px !important; } }
@media (max-width: 599.98px) { .home #choose .pfn-hero-overlay { min-height: 500px !important; } }

/* The first thumbnail under the preview shows the chosen frame shape (client 8 Oct 2026: a gold circle showed even for Square). */
.pfn-thumb__preview { position: relative; background: #EFE9E3; }
.pfn-thumb__preview::after { content: ""; position: absolute; left: 50%; top: 50%; width: 52%; aspect-ratio: 1; transform: translate(-50%, -50%); background: #fff; border: 4px solid #D8B25A; border-radius: 3px; box-sizing: border-box; }
.pfn-thumb__preview[data-shape="oval"]::after { width: 42%; aspect-ratio: .845; border-radius: 50%; }
.pfn-thumb__preview[data-shape="rectangle"]::after { width: 56%; aspect-ratio: 1.45; }
.pfn-thumb__preview[data-shape="rectangle"][data-orient="portrait"]::after { width: 42%; aspect-ratio: .72; }

/* ===== Eternal Keepsake, 9 Oct 2026 (client: "the designs need to fill the frame properly"): like Nell's finished pieces, two photographs stacked
   on the left and the flowers filling the rest of the mount, with a slim mount edge. Her sketch (Kaitlyn) may refine this. ===== */
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-mount { padding: 4.5% 4%; gap: 3.5%; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo { display: flex; flex-direction: column; gap: 5%; background: none; box-shadow: none; aspect-ratio: auto; padding: 0; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo > span { flex: 1 1 0; min-height: 0; display: flex; align-items: center; justify-content: center; background: linear-gradient(160deg, #DCD6D0, #C9C2BB); box-shadow: 0 1px 3px rgba(42,36,38,.2); }
.pfn-stage__preview.has-frame-photo.is-keepsake:not([data-orient="portrait"]) .pfn-keepsake-photo { flex: 0 0 31%; width: 31%; max-width: none; height: 100%; }
.pfn-stage__preview.has-frame-photo.is-keepsake:not([data-orient="portrait"]) .pfn-art { flex: 1 1 0; width: 100%; height: 100%; max-height: 100%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo { flex: 0 0 34%; width: 100%; height: auto; flex-direction: row; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-art { max-height: 62%; width: 100%; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo > span { overflow: hidden; text-align: center; padding: 0 4px; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo > span { font-size: clamp(.42rem, 2.5cqi, .72rem); letter-spacing: .05em; line-height: 1.25; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo { flex-basis: 24%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-art { max-height: 72%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo > span { font-size: clamp(.4rem, 1.9cqi, .6rem); letter-spacing: 0; padding: 0 2px; }
@media (max-width: 480px) { .pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo > span { font-size: .52rem; letter-spacing: .02em; } .pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo > span { font-size: .44rem; letter-spacing: 0; } }

.pfn-social-label { margin-bottom: .4rem !important; letter-spacing: .12em; text-transform: uppercase; font-size: .75rem !important; }
.pfn-socials { display: flex; flex-wrap: wrap; gap: .6rem; }
.pfn-socials a { display: inline-block; padding: .5rem 1.1rem; border: 1px solid currentColor; border-radius: 999px; text-decoration: none; transition: background .2s, color .2s; }
.pfn-socials a:hover, .pfn-socials a:focus-visible { background: #1f1f1f; color: #fff; }

/* 9 Oct 2026: Workshops became a top-level tab, so tighten the header between 1024px and 1480px to keep it on one line */
@media (min-width: 1024px) and (max-width: 1480px) {
	.pfn-header .wp-block-navigation { font-size: 0.72rem; letter-spacing: 0.06em; }
	.pfn-header .wp-block-navigation__container { gap: 0.9rem !important; }
	.pfn-header-cta .wp-block-button__link { font-size: 0.66rem; letter-spacing: 0.04em; padding: 0.75em 0.9em; }
}

/* ===== Journal posts, 9 Oct 2026 ===== */
.single-post .pfn-post-by { font-style: italic; color: var(--wp--preset--color--ink-soft); margin-top: .4rem; }
.single-post .wp-block-post-title { line-height: 1.12; text-wrap: balance; }
.single-post .wp-block-post-featured-image img { width: 100%; box-shadow: 0 18px 40px rgba(42,36,38,.12); }
.single-post .wp-block-post-content { font-size: 1.12rem; line-height: 1.85; }
.single-post .wp-block-post-content p { margin-block: 0 1.25em; }
.single-post .wp-block-post-content p.pfn-post-lead { font-size: 1.45rem; line-height: 1.6; color: var(--wp--preset--color--ink); font-family: var(--wp--preset--font-family--playfair-display, Georgia, serif); }
.single-post .wp-block-post-content p.pfn-post-lead::first-letter { font-size: 3.6em; float: left; line-height: .85; padding: .08em .12em 0 0; color: var(--wp--preset--color--green); }
.single-post .wp-block-post-content h2 { margin: 2.2em 0 .6em; text-align: center; }
.single-post .wp-block-post-content h3.wp-block-heading { margin: 1.8em 0 .5em; }
.pfn-post-quote { border: 0 !important; padding: 1.6rem 1rem !important; margin: 2.2rem 0 !important; text-align: center; position: relative; }
.pfn-post-quote::before { content: ""; display: block; width: 56px; height: 2px; background: var(--wp--preset--color--baby-pink); margin: 0 auto 1.2rem; }
.pfn-post-quote blockquote { margin: 0; }
.pfn-post-quote p { font-family: var(--wp--preset--font-family--playfair-display, Georgia, serif); font-size: clamp(1.4rem, 3vw, 1.9rem) !important; line-height: 1.4 !important; font-style: italic; margin: 0 !important; text-wrap: balance; }
.wp-block-columns.pfn-post-pair { gap: 14px; margin: 1.8rem 0 2.4rem; flex-wrap: nowrap !important; }
.pfn-post-pair .wp-block-column { min-width: 0; }
.pfn-post-pair figure { margin: 0; position: relative; }
.pfn-post-pair img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 8px; display: block; }
.pfn-post-pair figcaption { position: absolute; left: 12px; bottom: 12px; margin: 0 !important; padding: .35rem .9rem; background: rgba(255,255,255,.94); border-radius: 999px; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink); }
.single-post .wp-block-post-content figure.wp-block-image:not(.wp-block-column figure) { margin: 2rem 0; }
.single-post .wp-block-post-content figure.wp-block-image figcaption { text-align: center; font-style: italic; margin-top: .6rem; color: var(--wp--preset--color--ink-soft); }
.single-post .wp-block-post-content figure.wp-block-image:not(.wp-block-column figure) img { border-radius: 8px; }
.wp-block-heading.pfn-post-tips-title { padding-top: 1.4rem; border-top: 1px solid var(--wp--preset--color--outline); }
.wp-block-heading.pfn-post-tip { font-size: 1.25rem; margin: 1.4em 0 .3em !important; padding-left: 1rem; border-left: 3px solid var(--wp--preset--color--baby-pink); }
.pfn-post-cta { background: var(--wp--preset--color--whim, #F7F0EC); border-radius: 12px; padding: 2.6rem 1.5rem; margin-top: 3rem; }
.pfn-post-cta h2 { margin-top: .2rem; }
@media (max-width: 600px) { .single-post .wp-block-post-content p.pfn-post-lead { font-size: 1.25rem; } .wp-block-columns.pfn-post-pair { gap: 8px; } .pfn-post-pair figcaption { left: 8px; bottom: 8px; font-size: .62rem; padding: .25rem .65rem; } }
/* Journal list: cards stay a good size and centre when there are only a few posts */
.blog .wp-block-post-template.is-layout-grid { grid-template-columns: repeat(auto-fit, minmax(18rem, 26rem)) !important; justify-content: center; }
.blog .wp-block-post-featured-image img { transition: transform .4s ease; }
.blog .wp-block-post-featured-image { overflow: hidden; border-radius: 6px; }
.blog .wp-block-post:hover .wp-block-post-featured-image img { transform: scale(1.03); }
.wp-block-heading.pfn-post-tip { margin-bottom: .7em !important; }
.single-post .wp-block-post-content > figure.wp-block-image { max-width: 460px; margin-inline: auto; }
.single-post .wp-block-post-content > figure.wp-block-image img { width: 100%; height: auto; }
/* Pull quotes sit centred in the text column (core pullquote was pushed to the left edge) */
.single-post .wp-block-post-content > figure.wp-block-pullquote.pfn-post-quote { float: none; width: 100%; max-width: 100%; margin-inline: auto !important; box-sizing: border-box; }
.single-post .pfn-post-quote blockquote { max-width: none; margin-inline: auto; text-align: center; }
/* Tip headings stay inside the text column (the earlier margin shorthand had removed the auto side margins) */
.single-post .wp-block-post-content > .wp-block-heading.pfn-post-tip, .single-post .wp-block-post-content > .wp-block-heading.pfn-post-tips-title { margin-inline: auto !important; max-width: var(--wp--style--global--content-size, 760px); width: 100%; box-sizing: border-box; }
.single-post .wp-block-post-content > .wp-block-heading.pfn-post-tip { margin-top: 1.4em !important; margin-bottom: .6em !important; }
/* Pull quotes: same width as the text column */
.single-post .wp-block-post-content > figure.wp-block-pullquote.pfn-post-quote { max-width: var(--wp--style--global--content-size, 760px); width: 100%; }
.single-post .pfn-post-quote p { font-size: clamp(1.3rem, 2.6vw, 1.7rem) !important; }
/* Journal end-of-post buttons: comfortable on phones */
.pfn-post-cta .wp-block-buttons { gap: .7rem; }
.pfn-post-cta .wp-block-button__link { line-height: 1.35 !important; padding: .9em 1.4em !important; }
@media (max-width: 600px) { .pfn-post-cta .wp-block-button, .pfn-post-cta .wp-block-button__link { width: 100%; text-align: center; box-sizing: border-box; } }

/* Press My Flowers (client 11 Oct 2026): four pictures close together with a light line of words under each; the commission
   photo shows the whole frame (no crop). */
.pfn-pmf-grid { gap: 14px !important; }
.pfn-pmf__img, .pfn-pmf__img img { border-radius: 0; }
.pfn-pmf__title { font-size: var(--wp--preset--font-size--large); font-weight: 400; line-height: 1.25; margin-top: .55rem !important; }
.pfn-pmf__text { margin: 0 !important; font-size: .9rem; line-height: 1.65; font-weight: 400; color: var(--wp--preset--color--ink-soft); }
.pfn-pmf-commission img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: contain; border-radius: var(--wp--custom--border-radius--small); }

/* Banner photo shown whole beside the words (client 12 Oct 2026: no cropping of frames, on any device). */
.pfn-hero-photo { margin: 0 !important; }
.pfn-hero-photo img { display: block; width: 100%; height: auto; border-radius: var(--wp--custom--border-radius--small); box-shadow: 0 18px 40px -14px rgba(42,36,38,.35); }

/* Cart (client 12 Oct 2026: "the frames are not square" / "when I pick a square frame, it displays in the cart as a square"):
   the design picture is drawn as the frame the bride chose: the border is the frame, the padding is the mount, the picture sits
   inside. Square is 1:1, rectangle portrait 15:21, oval 19:23. Two routes feed it: the alt text set in cart-checkout.php (cart page)
   and data-pfn-shape / -frame / -mount on the row set by pfn.js from the item's details (slide-out cart and checkout summary, which
   reset the alt to the product name). ", gold frame," never matches antique gold because of the comma and space. */
img[alt*="chosen"],
[data-pfn-shape] .wc-block-cart-item__image img,
[data-pfn-shape] .wc-block-components-order-summary-item__image img {box-sizing: border-box; display: block; width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: contain; padding: 9%; background: #FBFAF7; border: 6px solid #E9E6E0; border-radius: 2px; box-shadow: 0 8px 16px -8px rgba(42,36,38,.45), inset 0 0 0 1px rgba(42,36,38,.08);}
img[alt*="chosen"][alt*="square frame shape"],
[data-pfn-shape="square"] .wc-block-cart-item__image img,
[data-pfn-shape="square"] .wc-block-components-order-summary-item__image img {aspect-ratio: 1 / 1;}
img[alt*="chosen"][alt*="rectangle frame shape"],
[data-pfn-shape="rectangle"] .wc-block-cart-item__image img,
[data-pfn-shape="rectangle"] .wc-block-components-order-summary-item__image img {aspect-ratio: 15 / 21;}
img[alt*="chosen"][alt*="oval frame shape"],
[data-pfn-shape="oval"] .wc-block-cart-item__image img,
[data-pfn-shape="oval"] .wc-block-components-order-summary-item__image img {aspect-ratio: 19 / 23; border-radius: 50%; padding: 15%;}
img[alt*="chosen"][alt*=", white frame,"],
[data-pfn-frame="white"] .wc-block-cart-item__image img,
[data-pfn-frame="white"] .wc-block-components-order-summary-item__image img {border-color: #FFFFFF; box-shadow: 0 8px 16px -8px rgba(42,36,38,.45), 0 0 0 1px rgba(42,36,38,.14);}
img[alt*="chosen"][alt*=", black frame,"],
[data-pfn-frame="black"] .wc-block-cart-item__image img,
[data-pfn-frame="black"] .wc-block-components-order-summary-item__image img {border-color: #1D191A;}
img[alt*="chosen"][alt*=", gold frame,"],
[data-pfn-frame="gold"] .wc-block-cart-item__image img,
[data-pfn-frame="gold"] .wc-block-components-order-summary-item__image img {border-color: #C9A24A;}
img[alt*="chosen"][alt*=", antique-gold frame,"],
[data-pfn-frame="antique-gold"] .wc-block-cart-item__image img,
[data-pfn-frame="antique-gold"] .wc-block-components-order-summary-item__image img {border-color: #B98B44;}
img[alt*="chosen"][alt*=", oak frame,"],
[data-pfn-frame="oak"] .wc-block-cart-item__image img,
[data-pfn-frame="oak"] .wc-block-components-order-summary-item__image img {border-color: #B58A57;}
img[alt*="chosen"][alt*=", ivory-gold frame,"],
[data-pfn-frame="ivory-gold"] .wc-block-cart-item__image img,
[data-pfn-frame="ivory-gold"] .wc-block-components-order-summary-item__image img {border-color: #D9BE7C;}
img[alt*="chosen"][alt*="snow-white mount"],
[data-pfn-mount="snow-white"] .wc-block-cart-item__image img,
[data-pfn-mount="snow-white"] .wc-block-components-order-summary-item__image img {background: #FFFFFF;}
img[alt*="chosen"][alt*="textured-white mount"],
[data-pfn-mount="textured-white"] .wc-block-cart-item__image img,
[data-pfn-mount="textured-white"] .wc-block-components-order-summary-item__image img {background: #FFFFFF;}
img[alt*="chosen"][alt*="clear-glass mount"],
[data-pfn-mount="clear-glass"] .wc-block-cart-item__image img,
[data-pfn-mount="clear-glass"] .wc-block-components-order-summary-item__image img {background: #FFFFFF;}
img[alt*="chosen"][alt*="perspex-clear mount"],
[data-pfn-mount="perspex-clear"] .wc-block-cart-item__image img,
[data-pfn-mount="perspex-clear"] .wc-block-components-order-summary-item__image img {background: #FFFFFF;}
img[alt*="chosen"][alt*="alpine-white mount"],
[data-pfn-mount="alpine-white"] .wc-block-cart-item__image img,
[data-pfn-mount="alpine-white"] .wc-block-components-order-summary-item__image img {background: #F7F3EA;}
img[alt*="chosen"][alt*="black mount"],
[data-pfn-mount="black"] .wc-block-cart-item__image img,
[data-pfn-mount="black"] .wc-block-components-order-summary-item__image img {background: #1D191A;}
img[alt*="chosen"][alt*="navy mount"],
[data-pfn-mount="navy"] .wc-block-cart-item__image img,
[data-pfn-mount="navy"] .wc-block-components-order-summary-item__image img {background: #1D2A44;}
img[alt*="chosen"][alt*="green mount"],
[data-pfn-mount="green"] .wc-block-cart-item__image img,
[data-pfn-mount="green"] .wc-block-components-order-summary-item__image img {background: #3F5A45;}
img[alt*="chosen"][alt*="pink mount"],
[data-pfn-mount="pink"] .wc-block-cart-item__image img,
[data-pfn-mount="pink"] .wc-block-components-order-summary-item__image img {background: #F2D6DB;}

/* Flowers with Meaning banner (client 12 Oct 2026: "the photo needs to be flipped for the phone but not laptop / desktops"): the whole
   banner is mirrored on phones and every child is mirrored back, so the photo is flipped and the words still read the right way. */
@media (max-width: 767.98px) {
	/* 13 Oct 2026: on phones the banner photo is turned a quarter turn (assets/img/meaning-banner-phone.webp) so the rose sits low in the
	   picture with the peony beneath it; no mirroring, so the words need nothing turned back. */
	#meaning-hero { background-image: url("assets/img/meaning-banner-phone.webp") !important; background-size: cover !important; background-position: 50% 50% !important; }
}

/* Before & After banner (client 12 Oct 2026): the words sit on the right so the couple's faces and her bouquet stay clear. */
.pfn-hero-right.pfn-hero-overlay > .wp-block-spectra-container { align-items: flex-end !important; }
.pfn-hero-right.pfn-hero-overlay { background: linear-gradient(90deg, rgba(42,36,38,0) 0%, rgba(42,36,38,.1) 45%, rgba(42,36,38,.55) 100%); }
/* Happy Brides banner: her three photos side by side, same height, the whole of each frame in shot. */
.pfn-hb-banner { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; gap: 0 !important; }
.pfn-hb-banner .wp-block-image { flex: 1 1 0; min-width: 0; margin: 0 !important; }
.pfn-hb-banner .wp-block-image img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 3; object-fit: cover; }

/* FAQ (client 12 Oct 2026): a bride photo links the general page to the Bridal FAQ. */
.pfn-faq-bride { margin: 0 !important; }
.pfn-faq-bride img { display: block; width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; object-position: 50% 30%; border-radius: var(--wp--custom--border-radius--small); }
.pfn-faq-bride-link { text-align: center; margin: 0 !important; }

/* Email chooser on phones and tablets (client 12 Oct 2026): a bottom sheet with the mail app, Gmail, Outlook and copy. */
.pfn-mailpick { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: flex-end; justify-content: center; }
.pfn-mailpick__back { position: absolute; inset: 0; background: rgba(42,36,38,.5); }
.pfn-mailpick__box { position: relative; width: min(100%, 520px); background: #fff; border-radius: 16px 16px 0 0; padding: 20px 18px calc(18px + env(safe-area-inset-bottom)); display: grid; gap: 10px; box-shadow: 0 -12px 40px rgba(0,0,0,.25); }
.pfn-mailpick__title { margin: 0; font-family: var(--wp--preset--font-family--heading, serif); font-size: 1.15rem; text-align: center; }
.pfn-mailpick__to { margin: 0 0 4px; text-align: center; font-size: .9rem; color: #6b6264; overflow-wrap: anywhere; }
.pfn-mailpick__opt { display: block; width: 100%; box-sizing: border-box; padding: 14px 16px; border: 1px solid #d9d3cf; border-radius: 10px; background: #fff; color: #2A2426; font: inherit; text-align: center; text-decoration: none; cursor: pointer; }
.pfn-mailpick__opt:active { background: #f5f2ee; }
.pfn-mailpick__cancel { padding: 12px; border: 0; background: none; color: #6b6264; font: inherit; cursor: pointer; }
html.pfn-mailpick-open { overflow: hidden; }

/* Awards on phones (client 12 Oct 2026: "on the phone [the two photos] are strangely overlapped"): side by side, no overlap. */
@media (max-width: 767.98px) {
	.pfn-award__pics--two { padding-bottom: 0 !important; display: grid !important; grid-template-columns: 1.3fr 1fr; gap: 10px !important; align-items: end; flex-direction: row !important; }
	.pfn-award__pics--two .pfn-award__pic--2,
	.pfn-award:nth-child(even) .pfn-award__pics--two .pfn-award__pic--2 { position: static !important; width: auto !important; right: auto !important; left: auto !important; bottom: auto !important; border: 0 !important; box-shadow: none !important; }
	.pfn-award__pics--two .pfn-award__pic--2 img { border-radius: 10px; box-shadow: 0 24px 44px -26px rgba(42,36,38,.5); }
}

/* Nell's Favourites shop category banner (client 12 Oct 2026: her pressed flower layout photo behind the words). */
.term-nells-favourites .pfn-archive-hero {
	background-image: linear-gradient(90deg, rgba(42,36,38,.62) 0%, rgba(42,36,38,.38) 55%, rgba(42,36,38,.12) 100%), url("assets/img/nells-favourites-banner.webp");
	background-size: cover; background-position: center; color: #fff;
}
.term-nells-favourites .pfn-archive-hero :is(h1, h2, p, .pfn-kicker, .woocommerce-breadcrumb, .woocommerce-breadcrumb a, a) { color: #fff !important; text-shadow: 0 1px 12px rgba(0,0,0,.35); }

/* Reviews page (client 12 Oct 2026, redone 13 Oct): a split opening with overlapping photographs, the Google reviews in a card, a 2 x 2
   photo block for Happy Brides. */
.pfn-rv-rating { display: flex; align-items: center; gap: 12px; margin: 4px 0 6px; flex-wrap: wrap; }
.pfn-rv-stars { display: inline-flex; gap: 2px; color: #C9A24A; }
.pfn-rv-rating__text { font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #5d5558); }
.pfn-rv-collage { position: relative; min-height: 560px; }
.pfn-rv-collage .pfn-rv-c { position: absolute !important; margin: 0 !important; border: 6px solid #fff; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 30px 50px -30px rgba(42,36,38,.55), 0 6px 16px rgba(42,36,38,.12); }
.pfn-rv-collage .pfn-rv-c img { display: block; width: 100%; height: auto; }
.pfn-rv-collage .pfn-rv-c1 { left: 0; top: 36px; width: 50%; z-index: 2; transform: rotate(-2deg); }
.pfn-rv-collage .pfn-rv-c2 { right: 0; top: 0; width: 46%; z-index: 1; transform: rotate(2deg); }
.pfn-rv-collage .pfn-rv-c3 { right: 6%; bottom: -10px; width: 42%; z-index: 3; transform: rotate(-1deg); }
.pfn-rv-google { background: #fff; border: 1px solid var(--wp--preset--color--outline, #e4ddd7); border-radius: 16px; padding: clamp(18px, 3vw, 40px); box-shadow: 0 30px 60px -44px rgba(42,36,38,.45); }
.pfn-rv-quad { display: grid !important; grid-template-columns: 1fr 1fr; gap: 14px; }
.pfn-rv-quad .pfn-rv-q { margin: 0 !important; }
.pfn-rv-quad .pfn-rv-q img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 12px; box-shadow: 0 22px 40px -28px rgba(42,36,38,.5); }
.pfn-rv-quad .pfn-rv-q:nth-child(even) { transform: translateY(26px); }
@media (max-width: 767.98px) {
	.pfn-rv-collage { min-height: 400px; margin-top: 8px; }
	.pfn-rv-collage .pfn-rv-c { border-width: 4px; }
	.pfn-rv-quad { gap: 10px; }
	.pfn-rv-quad .pfn-rv-q:nth-child(even) { transform: none; }
}
#reviews-intro h1 { font-size: clamp(1.9rem, 6.4vw, 3.1rem) !important; line-height: 1.12; }

/* Bridal gallery, Square tab (13 Oct 2026): equal square tiles so a square frame always looks square. */
.wp-block-gallery.pfn-sqgrid.has-nested-images { display: grid !important; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.wp-block-gallery.pfn-sqgrid.has-nested-images figure.wp-block-image { position: relative !important; width: auto !important; margin: 0 !important; aspect-ratio: var(--ar, 1 / 1); overflow: hidden; border-radius: 4px; background: var(--wp--preset--color--sage); }
.wp-block-gallery.pfn-sqgrid.pfn-ar-45 { --ar: 4 / 5; }
.wp-block-gallery.pfn-sqgrid.pfn-ar-75 { --ar: 7 / 5; grid-template-columns: repeat(3, 1fr); }
.pfn-js .wp-block-gallery.pfn-sqgrid.has-nested-images figure.wp-block-image.pfn-more:not(.is-shown) { display: none !important; }
.wp-block-gallery.pfn-sqgrid .wp-block-image img { display: block; width: 100% !important; height: 100% !important; object-fit: cover; transition: transform 1.1s cubic-bezier(.2,.7,.2,1); }
.wp-block-gallery.pfn-sqgrid .wp-block-image:hover img { transform: scale(1.04); }
.wp-block-gallery.pfn-sqgrid figcaption { display: none !important; }
@media (max-width: 1023.98px) { .wp-block-gallery.pfn-sqgrid.has-nested-images, .wp-block-gallery.pfn-sqgrid.pfn-ar-75.has-nested-images { grid-template-columns: repeat(3, 1fr); gap: 8px; } }
@media (max-width: 767.98px) { .wp-block-gallery.pfn-sqgrid.has-nested-images, .wp-block-gallery.pfn-sqgrid.pfn-ar-75.has-nested-images { grid-template-columns: repeat(2, 1fr); gap: 6px; } }

/* Everlasting Keepsake preview (13 Oct 2026): Kaitlyn's sample wedding photographs sit in the two photo spaces. */
.pfn-keepsake-photo > span:nth-child(1) { background: url("assets/img/keepsake-sample-landscape-1.webp") center / cover no-repeat !important; }
.pfn-keepsake-photo > span:nth-child(2) { background: url("assets/img/keepsake-sample-landscape-2.webp") center / cover no-repeat !important; }
.pfn-stage__preview.has-frame-photo.is-keepsake .pfn-keepsake-photo { align-items: stretch; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo > span { flex: 1 1 0; }

/* Mountboard swatches follow the chosen frame shape (13 Oct 2026). */
.pfn-builder[data-pick-shape] .pfn-chip { border-radius: 4px; }
.pfn-builder[data-pick-shape="rectangle"] .pfn-chip { width: 34px; height: 48px; }
.pfn-builder[data-pick-shape="square"] .pfn-chip { width: 40px; height: 40px; }
.pfn-builder[data-pick-shape="oval"] .pfn-chip { width: 36px; height: 44px; border-radius: 50%; }
.pfn-builder[data-pick-shape] .pfn-swatch-btn .pfn-chip { margin-block: 2px; }
.pfn-builder[data-pick-shape="rectangle"] .pfn-swatch-btn .pfn-chip, .pfn-builder[data-pick-shape="oval"] .pfn-swatch-btn .pfn-chip { margin-block: 0; }

/* Before & After bottom banner (client 13 Oct 2026): the photo is the same quarter-turned version as Flowers with Meaning on every screen
   size, so the rose sits low in the picture. */
#before-after-cta { background-image: url("assets/img/meaning-banner-phone.webp") !important; background-size: cover !important; background-position: 50% 50% !important; }

/* Bereavement banner (13 Oct 2026): the whole photograph at its own shape, under her words, never taller than the screen. */
.pfn-hero-whole-wrap { background: var(--wp--preset--color--whim, #F8F0EC); padding-bottom: clamp(1.5rem, 4vw, 3rem) !important; }
.pfn-hero-whole-wrap .pfn-hero-whole { margin: 0 !important; }
.pfn-hero-whole-wrap .pfn-hero-whole img { display: block; width: auto; max-width: min(100%, 1240px); height: auto; max-height: 76vh; margin: 0 auto; border-radius: 4px; }

/* Press & Media opening banner, "The Press Room" (client 13 Oct 2026, concept 3). */
.pfn-room { max-width: 1240px; margin: 0 auto; padding: clamp(.5rem, 1.5vw, 1.25rem) var(--wp--preset--spacing--small, 20px) clamp(1.5rem, 3vw, 2.5rem); }
.pfn-room__bar { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .4rem 1.5rem; border-top: 4px solid var(--wp--preset--color--ink, #2a2426); border-bottom: 1px solid var(--wp--preset--color--ink, #2a2426); padding: .9rem 0 .8rem; position: relative; }
.pfn-room__bar::after { content: ""; position: absolute; left: 0; right: 0; bottom: -5px; border-bottom: 1px solid var(--wp--preset--color--ink, #2a2426); }
.pfn-room__title { margin: 0 !important; font-family: var(--wp--preset--font-family--playfair-display, serif); font-weight: 400; font-size: clamp(2rem, 4.6vw, 3.4rem); line-height: 1.05; }
.pfn-room__tag, .pfn-room__kicker { margin: 0; font-size: .74rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #5a5154); }
.pfn-room__grid { display: grid; grid-template-columns: 1.15fr 1fr .72fr; gap: clamp(1.25rem, 3vw, 2.5rem); padding-top: clamp(1.5rem, 3vw, 2.25rem); align-items: start; }
.pfn-room__headline { margin: .6rem 0 1rem !important; font-family: var(--wp--preset--font-family--playfair-display, serif); font-weight: 400; font-size: clamp(1.5rem, 2.9vw, 2.3rem); line-height: 1.2; }
.pfn-room__scan { display: block; width: 100%; height: auto; margin: 0 0 1rem; }
.pfn-room__read { margin: 1rem 0 0; }
.pfn-room__read a { font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; color: inherit; border-bottom: 1px solid currentColor; padding-bottom: 3px; }
.pfn-room__screen { display: grid; gap: 1.25rem; }
.pfn-room__shot { margin: 0; }
.pfn-room__shot img { display: block; width: 100%; height: auto; aspect-ratio: 5 / 3; object-fit: cover; }
.pfn-room__shot figcaption { margin-top: .5rem; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #5a5154); }
.pfn-room__more { border-left: 1px solid rgba(42,36,38,.18); padding-left: clamp(1rem, 2vw, 1.75rem); }
.pfn-room__more ul { list-style: none; margin: 1rem 0 0; padding: 0; }
.pfn-room__more li { border-bottom: 1px solid rgba(42,36,38,.14); padding: .9rem 0; }
.pfn-room__more li:first-child { padding-top: 0; }
.pfn-room__more a { display: block; text-decoration: none; color: inherit; }
.pfn-room__src { display: block; font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft, #5a5154); margin-bottom: .3rem; }
.pfn-room__hl { display: block; font-family: var(--wp--preset--font-family--playfair-display, serif); font-size: 1.08rem; line-height: 1.3; }
.pfn-room__more a:hover .pfn-room__hl, .pfn-room__lead a:hover, .pfn-room__shot a:hover img { opacity: .8; }
@media (max-width: 1023.98px) { .pfn-room__grid { grid-template-columns: 1fr 1fr; } .pfn-room__more { grid-column: 1 / -1; border-left: 0; padding-left: 0; border-top: 1px solid rgba(42,36,38,.18); padding-top: 1.25rem; } .pfn-room__more ul { display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; } }
@media (max-width: 767.98px) { .pfn-room__grid { grid-template-columns: 1fr; } .pfn-room__more ul { grid-template-columns: 1fr; } .pfn-room__bar { flex-direction: column; } }

/* Banner text alignment (13 Oct 2026): the small line above the title sat to the right of the title on the Before & After banner (each line was pushed
   to the right edge on its own). The whole text block now sits at the right as one left-aligned column, and the small line lines up with the title
   (the title block has 10px of inner padding the small line did not). */
.pfn-hero-right.pfn-hero-overlay > .wp-block-spectra-container { align-items: flex-start !important; width: min(100%, 580px) !important; max-width: 580px !important; margin-left: auto; margin-right: max(0px, calc((100% - 1240px) / 2)); }
.pfn-hero-overlay > .wp-block-spectra-container > .pfn-kicker { padding-left: 10px !important; }

/* About page closing band (client 13 Oct 2026): the flower layout as a narrower photograph beside her words, so the Nell's Favourites banner can
   keep the cottage picture. A 4:5 window on the layout, never taller than the words beside it; phones stack and show it as a wide strip. */
.pfn-band-photo { margin: 0; }
.pfn-band-photo img { display: block; width: 100%; aspect-ratio: 4 / 5; max-height: 520px; object-fit: cover; object-position: 58% 50%; border-radius: 4px; }
@media (max-width: 767.98px) {
	.pfn-band-photo img { aspect-ratio: 4 / 3; max-height: 300px; }
}

/* Sustainability page (client brief 14 Oct 2026): numbered sections, layered photo pairs, pull quotes, materials strip */
.pfn-sust-quote { font-family: var(--wp--preset--font-family--playfair-display), serif !important; font-style: italic; font-size: clamp(1.4rem, 2.5vw, 2rem) !important; line-height: 1.5; color: var(--wp--preset--color--ink) !important; }
.pfn-sust-quote.pfn-quote::before { margin: 0 auto 12px; font-style: normal; }
.pfn-sust-quote[style*="text-align:left"].pfn-quote::before, .has-text-align-left.pfn-sust-quote.pfn-quote::before { margin-left: 0; }
.pfn-sust-num { font-size: 1.6rem !important; margin-bottom: 2px !important; }
.pfn-sust-pledge h3 a { color: inherit; text-decoration: none; background-image: linear-gradient(currentColor, currentColor); background-size: 0 1px; background-repeat: no-repeat; background-position: 0 100%; transition: background-size .3s ease; }
.pfn-sust-pledge h3 a:hover { background-size: 100% 1px; color: var(--wp--preset--color--cerise); }
.pfn-sust-pair { position: relative; display: block !important; padding-bottom: 16%; padding-right: 10%; }
.pfn-sust-pair.pfn-sust-pair--left { padding-right: 0; padding-left: 10%; }
.pfn-sust-pair .wp-block-image { margin: 0 !important; }
.pfn-sust-pair .pfn-sust-pair__main img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--wp--custom--border-radius--small); }
.pfn-sust-pair .pfn-sust-pair__small { position: absolute; right: 0; bottom: 0; width: 46%; background: #fff; padding: 8px; box-shadow: 0 24px 44px -20px rgba(42,36,38,.5), 0 2px 6px rgba(42,36,38,.08); border-radius: 4px; }
.pfn-sust-pair--left .pfn-sust-pair__small { right: auto; left: 0; }
.pfn-sust-pair .pfn-sust-pair__small img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.pfn-sust-caption { font-family: var(--wp--preset--font-family--playfair-display), serif !important; font-style: italic; color: var(--wp--preset--color--ink-soft) !important; }
.pfn-sust-fact { border-top: 2px solid var(--wp--preset--color--gold, #c9a96a); border-radius: 0 0 10px 10px !important; box-shadow: 0 10px 30px -18px rgba(42,36,38,.25); }
.pfn-sust-fact .pfn-sust-fact__icon { margin: 0 0 14px !important; width: 60px; height: 60px; border-radius: 999px; background: var(--wp--preset--color--whim); display: flex; align-items: center; justify-content: center; }
.pfn-sust-fact .pfn-sust-fact__icon img { width: 34px; height: 34px; display: block; }
.pfn-sust-fact h3 { font-size: 1.3rem !important; line-height: 1.25; margin: 0 0 4px !important; }
.pfn-sust-fact p { line-height: 1.6; }
.pfn-sust-polaroid { display: block !important; background: #fff; padding: 12px 12px 36px; box-shadow: 0 30px 50px -28px rgba(42,36,38,.5), 0 2px 8px rgba(42,36,38,.08); transform: rotate(-1.5deg); border-radius: 3px; }
.pfn-sust-polaroid .wp-block-image { margin: 0 !important; }
.pfn-sust-polaroid img { display: block; width: 100%; height: auto; }
.pfn-sust-note .pfn-letter-paper > .pfn-letter-sign { margin-bottom: 0 !important; }
.pfn-sust-note .pfn-letter-paper { padding-bottom: clamp(24px, 3vw, 40px) !important; }
@media (max-width: 767.98px) {
	.pfn-sust-pair { padding-bottom: 22%; }
}

/* Shop section banners (client 14 Oct 2026, "banner photos"): her photographs behind the category names, the same build as the Nell's
   Favourites banner above (theme assets in assets/img/cat-banners/, body.term-<slug>). Every shop banner, the All Products cover and the
   Stockists banner share one height so they line up (client: the Stockists banner was two or three times taller than the shop ones). */
.pfn-shop-cover, .pfn-archive-hero.pfn-cat-banner, body[class*="term-"] .pfn-archive-hero.has-banner { min-height: clamp(360px, 36vw, 560px) !important; }
.pfn-stk-top { min-height: clamp(360px, 36vw, 560px) !important; }
.term-wedding-gifts .pfn-archive-hero, .term-personalised-gifts .pfn-archive-hero, .term-christmas-shop .pfn-archive-hero, .term-the-gift-shop .pfn-archive-hero, .term-fine-art-prints .pfn-archive-hero {
	min-height: clamp(360px, 36vw, 560px); display: flex; flex-direction: column; justify-content: center;
	background-size: cover; background-position: center; color: #fff;
}
.term-wedding-gifts .pfn-archive-hero { background-image: linear-gradient(90deg, rgba(42,36,38,.6) 0%, rgba(42,36,38,.36) 55%, rgba(42,36,38,.14) 100%), url("assets/img/cat-banners/wedding-gifts.webp"); background-position: 50% 35%; }
.term-personalised-gifts .pfn-archive-hero { background-image: linear-gradient(90deg, rgba(42,36,38,.6) 0%, rgba(42,36,38,.36) 55%, rgba(42,36,38,.14) 100%), url("assets/img/cat-banners/personalised-gifts.webp"); background-position: 50% 55%; }
.term-christmas-shop .pfn-archive-hero, .term-the-gift-shop .pfn-archive-hero { background-image: linear-gradient(90deg, rgba(42,36,38,.6) 0%, rgba(42,36,38,.36) 55%, rgba(42,36,38,.14) 100%), url("assets/img/cat-banners/christmas-shop.webp"); background-position: 50% 45%; }
.term-fine-art-prints .pfn-archive-hero { background-image: linear-gradient(90deg, rgba(42,36,38,.6) 0%, rgba(42,36,38,.36) 55%, rgba(42,36,38,.14) 100%), url("assets/img/cat-banners/fine-art-prints.webp"); background-position: 50% 45%; }
:is(.term-wedding-gifts, .term-personalised-gifts, .term-christmas-shop, .term-the-gift-shop, .term-fine-art-prints) .pfn-archive-hero :is(h1, h2, p, .pfn-kicker, .woocommerce-breadcrumb, .woocommerce-breadcrumb a, a) { color: #fff !important; text-shadow: 0 1px 12px rgba(0,0,0,.35); }
.term-nells-favourites .pfn-archive-hero { min-height: clamp(360px, 36vw, 560px); display: flex; flex-direction: column; justify-content: center; }
/* Sustainability, Handmade in Ireland: her framing-centre photo is landscape, so the tall slot keeps its left side where Nell stands. */
#ireland .pfn-sust-pair__main img { object-position: 12% 50%; }
/* Sustainability, Mindful of Waste: her pressing-table photo keeps its left edge so the hands stay in the picture. */
#waste .pfn-sust-pair__main img { object-position: 0% 50%; }

/* ===== 16 Oct 2026, Nell's design-tool feedback =====================================================================================
   Oval icon stands portrait like the frame; the frame slice stops short of the paper in her moulding photos (inc/bridal-builder.php) and the
   mount reaches a touch under the moulding, so no pale line shows between a dark board and a dark frame. */
.pfn-shape-icon--oval { width: 24px; height: 30px; }
/* The Eternal Keepsake, Kaitlyn's sketch (13 Oct) and Nell (16 Oct): a portrait frame with the photographs ABOVE the flowers. Two landscape
   photographs side by side, or one portrait photograph (.is-one-photo). The template photographs are Nell's samples (assets/img/keepsake-sample-*). */
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-mount { padding: 5% 6%; gap: 4%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo { flex: 0 0 auto; height: auto; width: 100%; flex-direction: row; justify-content: center; gap: 4%; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-keepsake-photo > span { flex: 1 1 0; aspect-ratio: 7 / 6; height: auto; min-height: 0; }
.pfn-stage__preview.has-frame-photo.is-keepsake[data-orient="portrait"] .pfn-art { flex: 1 1 auto; min-height: 0; width: 100%; max-height: none; height: auto; object-fit: contain; }
.pfn-stage__preview.has-frame-photo.is-keepsake.is-one-photo .pfn-keepsake-photo > span:nth-child(2) { display: none; }
.pfn-stage__preview.has-frame-photo.is-keepsake.is-one-photo .pfn-keepsake-photo > span:nth-child(1) { background: url("assets/img/keepsake-sample-portrait.webp") center / cover no-repeat !important; }
.pfn-stage__preview.has-frame-photo.is-keepsake.is-one-photo[data-orient="portrait"] .pfn-keepsake-photo > span:nth-child(1) { flex: 0 0 auto; width: 44%; aspect-ratio: 4 / 5; }
.pfn-stage__preview.has-frame-photo.is-keepsake.is-one-photo:not([data-orient="portrait"]) .pfn-keepsake-photo { justify-content: center; }
.pfn-stage__preview.has-frame-photo.is-keepsake.is-one-photo:not([data-orient="portrait"]) .pfn-keepsake-photo > span:nth-child(1) { flex: 0 0 auto; width: 100%; aspect-ratio: 4 / 5; }
.pfn-kp-icon { display: flex; gap: 3px; align-items: center; justify-content: center; height: 22px; }
.pfn-kp-icon i { display: block; border: 1.5px solid var(--ink); border-radius: 1px; }
.pfn-kp-icon--two i { width: 17px; height: 13px; }
.pfn-kp-icon--one i { width: 16px; height: 22px; }
/* "A Personal Touch" (Bereavement and Flowers with Meaning): her words and sample picture under the designs. */
.pfn-personal { display: flex; gap: 18px; align-items: center; margin: 0 0 4px; padding: 16px 18px; background: var(--sage-l); border-left: 2px solid var(--g); border-radius: 0 6px 6px 0; }
.pfn-personal__img { flex: 0 0 38%; width: 38%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; box-shadow: 0 8px 20px -12px rgba(42,36,38,.45); }
.pfn-personal__title { margin: 0 0 6px; font-family: var(--serif); font-size: 1.12rem; font-weight: 600; color: var(--ink); }
.pfn-personal__text p { margin: 0; font-size: .86rem; line-height: 1.6; color: var(--ink); }
@media (max-width: 599.98px) { .pfn-personal { flex-direction: column; align-items: stretch; } .pfn-personal__img { width: 100%; flex-basis: auto; } }

/* Sustainability, "Five Things That Guide Everything We Make" (client 16 Oct 2026: "a bit prettier and more luxurious"): five arched photographs
   with a gold numeral, the title and a line beneath; each is a link to its section further down. */
.pfn-sust-pledge { border-top: 0 !important; padding-top: 0 !important; position: relative; }
.pfn-sust-pledge .pfn-sust-pledge__img { margin: 0 0 18px !important; position: relative; }
.pfn-sust-pledge .pfn-sust-pledge__img img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 999px 999px 10px 10px; box-shadow: 0 26px 40px -28px rgba(42,36,38,.5); transition: transform .5s ease, box-shadow .5s ease; }
.pfn-sust-pledge .pfn-sust-pledge__img::after { content: ""; position: absolute; inset: 7px; border: 1px solid rgba(255,255,255,.55); border-radius: 999px 999px 7px 7px; pointer-events: none; }
.pfn-sust-pledge:hover .pfn-sust-pledge__img img { transform: translateY(-4px); box-shadow: 0 34px 46px -28px rgba(42,36,38,.55); }
.pfn-sust-pledge .pfn-moment__num { position: absolute; left: 50%; top: 0; transform: translate(-50%, -50%); width: 46px; height: 46px; display: grid; place-items: center; background: #fff; color: var(--wp--preset--color--gold, #b8955a); font-size: 1.05rem !important; border-radius: 50%; box-shadow: 0 6px 16px -8px rgba(42,36,38,.4); z-index: 1; }
.pfn-sust-pledge h3 { text-align: center !important; font-size: 1.22rem !important; line-height: 1.3; margin: 0 !important; }
.pfn-sust-pledge h3 a { background-image: linear-gradient(var(--wp--preset--color--gold, #b8955a), var(--wp--preset--color--gold, #b8955a)); }
.pfn-sust-pledge h3 a::after { content: ""; position: absolute; inset: 0; }
.pfn-sust-pledge p:not(.pfn-moment__num) { text-align: center !important; margin: 6px 0 0 !important; }
.pfn-sust-pledge .pfn-sust-pledge__rule { width: 28px; height: 1px; background: var(--wp--preset--color--gold, #b8955a); margin: 12px auto 0 !important; }
#pledges .wp-block-columns { padding-top: 22px; }
@media (max-width: 767.98px) {
	.pfn-sust-pledge .pfn-sust-pledge__img img { aspect-ratio: 4 / 5; }
	.pfn-sust-pledge h3 { font-size: 1rem !important; }
	.pfn-sust-pledge p:not(.pfn-moment__num) { font-size: .82rem !important; line-height: 1.5; }
	.pfn-sust-pledge .pfn-moment__num { width: 38px; height: 38px; font-size: .9rem !important; }
}

/* Book a visit, appointment types (client 16 Oct 2026, "images for the calendar sections"): her four photographs, one per Calendly event. */
.pfn-appt { border-radius: 12px; overflow: hidden; background: #fff; box-shadow: 0 24px 44px -30px rgba(42,36,38,.4); transition: transform .4s ease, box-shadow .4s ease; }
.pfn-appt:hover { transform: translateY(-4px); box-shadow: 0 30px 50px -30px rgba(42,36,38,.5); }
.pfn-appt .pfn-appt__img { margin: 0 !important; }
.pfn-appt .pfn-appt__img img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.pfn-appt .pfn-appt__body { padding: 20px 22px 24px; }
.pfn-appt h3 { font-size: 1.25rem !important; line-height: 1.25; margin: 0 0 6px !important; }
.pfn-appt .pfn-appt__time { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--gold, #b8955a); margin: 0 0 8px !important; }
.pfn-appt p { line-height: 1.6; }
.pfn-appt .pfn-calendly-btn { margin-top: 14px; }
.pfn-appt .pfn-calendly-btn .wp-block-button__link { font-size: .78rem; padding: 10px 18px; }

/* ===== Nell's Story, 16 Oct 2026 (her five notes on the page) ======================================================================== */
/* Scrapbook: five photographs, bigger (was three). */
.pfn-scrap5 { min-height: 760px; }
.pfn-scrap5 .wp-block-image { padding: 9px 9px 26px; }
.pfn-scrap5 .pfn-scrap5__1 { left: 0; top: 0; width: 66%; transform: rotate(-2deg); z-index: 1; }
.pfn-scrap5 .pfn-scrap5__1 img { aspect-ratio: 4 / 3; }
.pfn-scrap5 .pfn-scrap5__2 { right: 0; top: 6%; width: 38%; transform: rotate(3.5deg); z-index: 2; }
.pfn-scrap5 .pfn-scrap5__2 img { aspect-ratio: 4 / 5; }
.pfn-scrap5 .pfn-scrap5__3 { left: 4%; top: 52%; width: 32%; transform: rotate(-4.5deg); z-index: 3; }
.pfn-scrap5 .pfn-scrap5__3 img { aspect-ratio: 3 / 4; }
.pfn-scrap5 .pfn-scrap5__4 { left: 38%; top: 58%; width: 34%; transform: rotate(2.5deg); z-index: 2; }
.pfn-scrap5 .pfn-scrap5__4 img { aspect-ratio: 4 / 3; }
.pfn-scrap5 .pfn-scrap5__5 { right: 2%; top: 48%; width: 28%; transform: rotate(-3deg); z-index: 4; }
.pfn-scrap5 .pfn-scrap5__5 img { aspect-ratio: 3 / 4; }
.pfn-scrap5 .wp-block-image:hover { z-index: 6; transform: rotate(0) scale(1.04); }
@media (max-width: 1023.98px) { .pfn-scrap5 { min-height: 92vw; } }
@media (max-width: 767.98px) { .pfn-scrap5 { min-height: 128vw; } }

/* The journey: a hand-drawn line across the page, chapters above and below it with little photo clusters and handwritten years.
   Client 20 Oct 2026: it scrolls sideways on every screen ("a swipe action, as I want to add more to the timeline"); the arrows and the
   hairline come from pfn.js (.pfn-swipe). Add a chapter in story_journey_chapters() and the line simply grows. */
.pfn-jr { --hand: "Caveat", "Comic Sans MS", cursive; --ink: var(--wp--preset--color--ink, #2a2426); --col: clamp(236px, 21vw, 290px); position: relative; width: 100%; max-width: 1240px; margin: 0 auto; padding: 0; }
.pfn-jr__list { list-style: none; margin: 0; padding: 12px 6px 8px; display: grid; grid-template-columns: repeat(var(--n, 8), var(--col)); grid-template-rows: auto 56px auto; column-gap: 14px; }
.pfn-jr__lineitem { grid-column: 1 / -1; grid-row: 2; display: block; }
.pfn-jr__line { display: block; width: 100%; height: 56px; color: var(--ink); opacity: .75; pointer-events: none; }
.pfn-jr__chapter { position: relative; grid-column: calc(var(--i) + 1); display: flex; flex-direction: column; gap: 10px; scroll-snap-align: start; scroll-margin-left: 6px; }
.pfn-jr__chapter--above { grid-row: 1; justify-content: flex-end; padding-bottom: 28px; }
.pfn-jr__chapter--below { grid-row: 3; justify-content: flex-start; padding-top: 28px; }
.pfn-jr__chapter--end { grid-row: 3; padding-top: 34px; }
.pfn-jr__tick { position: absolute; left: 50%; width: 2px; height: 34px; background: var(--ink); opacity: .7; border-radius: 2px; transform: rotate(var(--tilt, 0deg)); }
.pfn-jr__chapter--above .pfn-jr__tick { bottom: -14px; --tilt: -3deg; }
.pfn-jr__chapter--below .pfn-jr__tick, .pfn-jr__chapter--end .pfn-jr__tick { top: -14px; --tilt: 4deg; }
.pfn-jr__pics { position: relative; width: 100%; aspect-ratio: 1; }
.pfn-jr__pic { margin: 0; position: absolute; background: #fff; padding: 5px; box-shadow: 0 14px 26px -16px rgba(42,36,38,.55); }
.pfn-jr__pic img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pfn-jr__pic--main { left: 0; top: 0; width: 72%; height: 86%; transform: rotate(-2deg); }
.pfn-jr__pics:not(.has-two) .pfn-jr__pic--main { left: 8%; width: 84%; height: 100%; transform: rotate(-1.5deg); }
.pfn-jr__pic--small { right: 0; bottom: 0; width: 52%; height: 58%; transform: rotate(3deg); z-index: 1; }
.pfn-jr__chapter:nth-child(even) .pfn-jr__pic--main { transform: rotate(2deg); }
.pfn-jr__chapter:nth-child(even) .pfn-jr__pic--small { transform: rotate(-3.5deg); }
.pfn-jr__year { margin: 0; font-family: var(--hand); font-weight: 600; font-size: clamp(1.5rem, 2.2vw, 2.1rem); line-height: 1; color: var(--ink); text-align: center; }
.pfn-jr__text { margin: 0; font-size: .82rem; line-height: 1.5; color: var(--wp--preset--color--ink-soft); text-align: center; }
.pfn-jr__chapter--above .pfn-jr__text { order: -1; }
.pfn-jr__chapter--above .pfn-jr__year { order: -2; margin-top: 6px; }
.pfn-jr__chapter--above .pfn-jr__pics { order: -3; }
.pfn-jr__finale { margin: 0; font-family: var(--hand); font-weight: 600; font-size: clamp(1.4rem, 2vw, 1.9rem); line-height: 1.2; color: var(--wp--preset--color--plum-deep); text-align: center; }
@media (max-width: 599.98px) {
	.pfn-jr { --col: 64vw; }
	.pfn-jr__list { grid-template-rows: auto 44px auto; }
	.pfn-jr__line { height: 44px; }
	.pfn-jr__text { font-size: .8rem; }
	.pfn-jr__chapter--above { padding-bottom: 22px; }
	.pfn-jr__chapter--below, .pfn-jr__chapter--end { padding-top: 22px; }
}

/* The big moments: one long strip of film with handwritten notes. Client 20 Oct 2026: one reel that slides left to right on every screen
   (was two reels on desktop and a vertical reel on phones); arrows and hairline from pfn.js (.pfn-swipe). */
.pfn-film { --hand: "Caveat", "Comic Sans MS", cursive; --film: #4a3426; --frame: clamp(220px, 21vw, 290px); width: 100%; max-width: 1400px; margin: 0 auto; }
.pfn-film__strip { padding: 0 8px; }
.pfn-film__frames { list-style: none; margin: 64px 0 70px; padding: 26px 40px; display: flex; gap: 22px; width: max-content; box-sizing: border-box; background: var(--film);
	background-image: radial-gradient(circle at 50% 50%, #fff 0 4px, transparent 4.5px), radial-gradient(circle at 50% 50%, #fff 0 4px, transparent 4.5px);
	background-size: 26px 16px, 26px 16px; background-position: 0 4px, 0 calc(100% - 4px); background-repeat: repeat-x, repeat-x;
	border-radius: 3px; box-shadow: 0 26px 40px -24px rgba(42,36,38,.6); transform: rotate(-.4deg); }
.pfn-film__frame { position: relative; flex: 0 0 var(--frame); width: var(--frame); min-width: 0; scroll-snap-align: start; scroll-margin-left: 48px; }
.pfn-film__photo { margin: 0; aspect-ratio: 1 / 1; background: #1d1412; overflow: hidden; border-radius: 2px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
.pfn-film__photo img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 15%; filter: saturate(.95) contrast(1.02); transition: transform .8s ease; }
/* Portrait photos in the square frames keep their top (Nell's head), 16 Oct 2026. */
.pfn-film__frame:nth-child(1) .pfn-film__photo img, .pfn-film__frame:nth-child(5) .pfn-film__photo img, .pfn-film__frame:nth-child(6) .pfn-film__photo img { object-position: 50% 0%; }
.pfn-film__frame:nth-child(2) .pfn-film__photo img { object-position: 50% 70%; }
.pfn-film__frame:hover .pfn-film__photo img { transform: scale(1.05); }
.pfn-film__num { position: absolute; top: -22px; left: 2px; font-family: var(--hand); font-weight: 600; font-size: 1rem; color: rgba(255,255,255,.8); }
.pfn-film__note { position: absolute; left: 0; right: 0; margin: 0; font-family: var(--hand); font-weight: 600; font-size: clamp(1.05rem, 1.4vw, 1.3rem); line-height: 1.15; color: var(--wp--preset--color--ink); text-align: center; padding: 0 4px; }
.pfn-film__frame:nth-child(odd) .pfn-film__note { top: calc(100% + 40px); transform: rotate(-2deg); }
.pfn-film__frame:nth-child(even) .pfn-film__note { bottom: calc(100% + 42px); transform: rotate(1.5deg); }
@media (max-width: 599.98px) {
	.pfn-film { --frame: 62vw; }
	.pfn-film__frames { margin: 58px 0 62px; padding: 20px 22px; gap: 16px; }
	.pfn-film__frame { scroll-margin-left: 26px; }
	.pfn-film__note { font-size: 1.02rem; }
	.pfn-film__frame:nth-child(odd) .pfn-film__note { top: calc(100% + 34px); }
	.pfn-film__frame:nth-child(even) .pfn-film__note { bottom: calc(100% + 36px); }
}

/* Two ways to work with Nell: two photographs side by side with words and a button beneath each. */
.pfn-two .pfn-two__img { margin: 0 0 6px !important; }
.pfn-two .pfn-two__img img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--wp--custom--border-radius--small, 6px); box-shadow: 0 24px 44px -28px rgba(42,36,38,.5); }
.pfn-two h3 { margin-top: 10px !important; }
/* ===== Press & Media as a picture wall (client 16 Oct 2026) ============================================================================ */
.pfn-pwall { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 56px 40px; width: 100%; max-width: 1180px; margin: 0 auto; }
.pfn-pw { display: flex; flex-direction: column; align-items: center; text-align: center; text-decoration: none !important; color: var(--wp--preset--color--ink) !important; }
.pfn-pw__pic { margin: 0 0 22px !important; width: 100%; aspect-ratio: 1 / 1; overflow: hidden; background: var(--wp--preset--color--whim); position: relative; }
.pfn-pw__pic img, .pfn-pw__nopic { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.pfn-pw:hover .pfn-pw__pic img { transform: scale(1.04); }
.pfn-pw--tv .pfn-pw__pic::after { content: ""; position: absolute; left: 50%; top: 50%; width: 58px; height: 58px; margin: -29px 0 0 -29px; border-radius: 50%; background: rgba(255,255,255,.92) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M9 6.5v11l9-5.5z' fill='%232a2426'/></svg>") center / 26px no-repeat; box-shadow: 0 6px 18px rgba(0,0,0,.2); }
.pfn-pw--radio .pfn-pw__pic::after { content: ""; position: absolute; left: 50%; top: 50%; width: 58px; height: 58px; margin: -29px 0 0 -29px; border-radius: 50%; background: rgba(255,255,255,.92) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232a2426' stroke-width='1.8' stroke-linecap='round'><path d='M4 14v-2a8 8 0 0 1 16 0v2'/><path d='M4 14h3v5H4zM17 14h3v5h-3z'/></svg>") center / 24px no-repeat; box-shadow: 0 6px 18px rgba(0,0,0,.2); }
.pfn-pw__outlet { display: block; font-family: var(--wp--preset--font-family--playfair-display), serif; font-size: clamp(1.5rem, 2.3vw, 2.1rem); line-height: 1.05; letter-spacing: .02em; text-transform: uppercase; color: var(--wp--preset--color--ink); margin: 0 0 10px; }
.pfn-pw__title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-family: var(--wp--preset--font-family--playfair-display), serif; font-style: italic; font-size: .98rem; line-height: 1.4; color: var(--wp--preset--color--ink-soft); max-width: 34ch; margin: 0 0 10px; }
.pfn-pw__date { display: block; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft); margin: 0 0 8px; min-height: 1em; }
.pfn-pw__view { display: inline-block; font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--wp--preset--color--green, #4b5148); border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.pfn-pw:hover .pfn-pw__view { color: var(--wp--preset--color--cerise); }
/* Also seen in: smaller tiles, the outlet on a pale band across the foot of the picture */
.pfn-pwall--small { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.pfn-pwall--small .pfn-pw { position: relative; }
.pfn-pwall--small .pfn-pw__pic { aspect-ratio: 4 / 5; margin: 0 !important; }
.pfn-pw__band { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 10px; background: rgba(248,244,240,.92); backdrop-filter: blur(4px); font-family: var(--wp--preset--font-family--playfair-display), serif; font-size: .92rem; letter-spacing: .08em; text-transform: uppercase; color: var(--wp--preset--color--ink); line-height: 1.2; }
.pfn-press-wall-head p { max-width: 720px; margin-left: auto; margin-right: auto; }
@media (max-width: 1023.98px) { .pfn-pwall { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 44px 28px; } .pfn-pwall--small { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; } }
@media (max-width: 599.98px) { .pfn-pwall { grid-template-columns: 1fr; gap: 40px; max-width: 420px; } .pfn-pwall--small { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .pfn-pw__band { font-size: .78rem; padding: 10px 8px; } }

/* ===== Swipe rails (client 20 Oct 2026) ================================================================================================
   .pfn-swipe wraps a .pfn-swipe__rail that scrolls sideways; pfn.js adds the hairline and the two round arrows under it. */
.pfn-swipe { position: relative; width: 100%; }
.pfn-swipe__rail { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; -ms-overflow-style: none; scroll-snap-type: x proximity; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; cursor: grab; }
.pfn-swipe__rail::-webkit-scrollbar { display: none; }
.pfn-swipe__rail:focus-visible { outline: 2px solid var(--wp--preset--color--cerise); outline-offset: 4px; }
.pfn-swipe__rail.is-dragging { cursor: grabbing; scroll-snap-type: none; user-select: none; scroll-behavior: auto; }
.pfn-swipe__rail.is-dragging * { pointer-events: none; }
.pfn-swipe__bar { display: flex; align-items: center; gap: 14px; width: 100%; max-width: 1240px; margin: 10px auto 0; padding: 0 8px; box-sizing: border-box; }
.pfn-swipe__progress { flex: 1 1 auto; height: 1px; background: rgba(42,36,38,.18); position: relative; }
.pfn-swipe__progress span { position: absolute; left: 0; top: -1px; height: 3px; width: 8%; background: var(--wp--preset--color--gold, #b8955a); transition: width .25s ease; }
.pfn-swipe__btn { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 50%; border: 1px solid rgba(42,36,38,.28); background: #fff; color: var(--wp--preset--color--ink); font-family: Georgia, serif; font-size: 1.5rem; line-height: 1; padding: 0 0 3px; display: grid; place-items: center; cursor: pointer; transition: border-color .25s ease, color .25s ease, transform .25s ease; }
.pfn-swipe__btn:hover { border-color: var(--wp--preset--color--cerise); color: var(--wp--preset--color--cerise); transform: translateY(-1px); }
.pfn-swipe__btn:disabled { opacity: .3; cursor: default; transform: none; }
.pfn-swipe.is-static .pfn-swipe__bar { display: none; }
.pfn-film .pfn-swipe__bar { max-width: 1400px; }

/* Sustainability, the five pledges on a swipe rail (client 20 Oct 2026: "like the journey section, on a carousel"). The tiles are a
   little bigger than the old five-across grid, so there is something to swipe to on a laptop and two and a bit show on a phone. */
.pfn-swipe--pledges .pfn-swipe__rail { padding: 30px 8px 42px; gap: 30px !important; flex-wrap: nowrap !important; justify-content: flex-start !important; align-items: flex-start !important; }
.pfn-swipe--pledges .pfn-sust-pledge { flex: 0 0 clamp(236px, 23vw, 300px) !important; width: clamp(236px, 23vw, 300px) !important; max-width: none !important; scroll-snap-align: start; scroll-margin-left: 8px; }
.pfn-swipe--pledges .pfn-sust-pledge .pfn-sust-pledge__img img { aspect-ratio: 3 / 4; }
@media (max-width: 599.98px) { .pfn-swipe--pledges .pfn-sust-pledge { flex-basis: 58vw !important; width: 58vw !important; } .pfn-swipe--pledges .pfn-swipe__rail { gap: 18px !important; } }

/* Press wall tiles as clippings (client 20 Oct 2026: "a pic of the headline and image for the image"): each feature is a paper clipping with
   the outlet's masthead, the headline set in the serif and the photograph, laid slightly askew; the outlet name and the link sit beneath. */
.pfn-pw__clip { width: 100%; box-sizing: border-box; background: #fdfbf8; padding: 16px 16px 18px; display: flex; flex-direction: column; gap: 12px; text-align: left; margin: 0 0 26px;
	box-shadow: 0 22px 40px -26px rgba(42,36,38,.55), 0 0 0 1px rgba(42,36,38,.07); transform: rotate(-.7deg); transition: transform .5s ease, box-shadow .5s ease; }
.pfn-pw:nth-child(3n+2) .pfn-pw__clip { transform: rotate(.6deg); }
.pfn-pw:nth-child(3n) .pfn-pw__clip { transform: rotate(-.3deg); }
.pfn-pw:hover .pfn-pw__clip { transform: rotate(0) translateY(-4px); box-shadow: 0 30px 46px -26px rgba(42,36,38,.6), 0 0 0 1px rgba(42,36,38,.08); }
.pfn-pw__masthead { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; font-family: var(--wp--preset--font-family--playfair-display), serif; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--wp--preset--color--ink-soft); padding-bottom: 9px; border-bottom: 1px solid rgba(42,36,38,.16); }
.pfn-pw__masthead b { font-weight: 500; color: var(--wp--preset--color--ink); }
.pfn-pw__masthead span { white-space: nowrap; }
.pfn-pw__headline { font-family: var(--wp--preset--font-family--playfair-display), serif; font-weight: 500; font-size: clamp(1.02rem, 1.3vw, 1.26rem); line-height: 1.24; color: var(--wp--preset--color--ink); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; min-height: 3.72em; }
.pfn-pwall:not(.pfn-pwall--small) .pfn-pw .pfn-pw__pic { margin: 0 !important; aspect-ratio: 4 / 3; }
.pfn-pwall:not(.pfn-pwall--small) .pfn-pw__outlet { font-size: clamp(1.3rem, 1.9vw, 1.7rem); margin-bottom: 8px; }
@media (max-width: 599.98px) { .pfn-pw__clip { padding: 14px 14px 16px; } .pfn-pw__headline { min-height: 0; } }
